diegosouzapw
d1d0ddda0f
test(agent-skills): unit tests for generator + scripts smoke
...
20 tests covering:
- dry-run produces report without writing (filesystem unchanged)
- apply writes SKILL.md for API and CLI skills with correct sections
- apply writes all 42 skills when no filter
- idempotency: second run reports 0 generated, all unchanged
- prune dry-run detects orphans without deleting
- prune apply deletes orphan dirs, preserves catalog dirs
- marker preservation: custom block survives regeneration
- buildSkillMarkdown: valid shape, no escape errors, correct sections per category
- onlyIds filter limits generation
- report shape validation
Also adds gray-matter as dependency (per plan prerequisite check).
2026-05-27 21:55:01 -03:00
diegosouzapw
ca41880bb3
feat(agent-skills): add CLI wrapper scripts/skills/generate-agent-skills.mjs
...
Implements the CLI wrapper for the generator:
- --apply flag: enables write mode (default: dry-run)
- --prune flag: enables orphan detection/deletion
- --only=<id1,id2>: filters to specific skill IDs
- --json flag: structured JSON output
- Exit codes: 0 success, 1 error, 2 dry-run detected pending changes (CI)
- Human-readable table output with Generated/Unchanged/Pruned/Orphans/Errors summary
- Dynamic import via tsx/esm runtime; falls back to module.register() if needed
2026-05-27 21:54:50 -03:00
diegosouzapw
f86e905efb
feat(agent-skills): add generator with idempotent skill md generation + prune
...
Implements src/lib/agentSkills/generator.ts (§3.4 contract):
- generateAgentSkills(opts): idempotent, dryRun:true default, prune:false default
- buildSkillMarkdown(skillId, sources): generates frontmatter + API/CLI body
- API body: Visão geral + Autenticação + Endpoints (with curl) + Payloads
- CLI body: Visão geral + Instalação rápida + Subcomandos (with flags + examples)
- Prune: detects orphans in skills/{id}/ not in catalog; deletes in apply mode
- Marker preservation: <!-- skill:custom-start --> ... <!-- skill:custom-end -->
- Generated comment: per D24 spec
2026-05-27 21:54:42 -03:00
diegosouzapw
44b248314b
merge(F8): move skills→omni-skills + split into 8 components + inspector
2026-05-27 21:26:38 -03:00
diegosouzapw
f730161c74
merge(F2): catalog source 42 entries + parsers OpenAPI/CLI
2026-05-27 21:26:37 -03:00
diegosouzapw
b1a127a732
test(omni-skills): unit tests for OmniSkillsPageClient and components
...
46 structural/source-pattern tests covering: file structure, page.tsx server
component contract, PageClient 4-tab wiring, OmniSkillCard accessibility,
SkillInspectorPane 4 sub-tabs + API fetches, OmniSkillsList split layout,
OmniExecutionsTab columns, OmniSandboxTab config values,
OmniMarketplaceTab dual-provider logic, and E2E path update.
2026-05-27 21:24:15 -03:00
diegosouzapw
33c9b2b96c
test(omni-skills): update e2e path /dashboard/skills → /dashboard/omni-skills
2026-05-27 21:24:10 -03:00
diegosouzapw
99ccc35b93
refactor(omni-skills): split monolithic page into PageClient + 6 components
...
Extract the 870-line page.tsx into OmniSkillsPageClient (state + orchestration)
and 6 focused components: OmniSkillCard, OmniSkillsList, SkillInspectorPane,
OmniExecutionsTab, OmniSandboxTab, OmniMarketplaceTab.
- SkillsConceptCard variant="omni" rendered at top of page
- 4 tabs (skills/executions/sandbox/marketplace) preserved
- Skills tab uses 12-col split grid with SkillInspectorPane (4 sub-tabs)
- SkillInspectorPane: schema/handler/executions/sandbox sub-tabs, mode buttons,
uninstall, per-skill execution fetch
2026-05-27 21:24:06 -03:00
diegosouzapw
dfd2182c41
refactor(omni-skills): move dashboard/skills → dashboard/omni-skills
...
Rename the page route from /dashboard/skills to /dashboard/omni-skills
to align with the task-15 F8 redesign plan. The server component wrapper
is reduced to a 5-line delegator, removing the prior 870-line monolith.
2026-05-27 21:23:55 -03:00
diegosouzapw
15838348c3
test(agent-skills): unit tests for catalog + openapi + cli parsers
...
agentSkills-catalog.test.ts (30 tests):
- getCatalog(): 42 total, 22 api, 20 cli
- API_SKILL_IDS/CLI_SKILL_IDS length assertions
- ID regex format, uniqueness, required fields
- getSkillById happy path + null for unknown/empty
- filterCatalog by category, area, combined, empty
- refreshCatalog() invalidates cache (new array reference)
- computeCoverage() shape validation
- rawUrl/githubUrl URL format assertions
agentSkills-openapiParser.test.ts (9 tests):
- Fixture YAML: paths Map, area groupings (providers, api-keys, inference)
- OpenapiPath field validation
- Missing file throws
- Empty paths YAML returns empty Maps
- Real openapi.yaml: providers area ≥5 endpoints (integration)
agentSkills-cliRegistryParser.test.ts (10 tests):
- Fixture .mjs: commands Map, families Map, ≥5 provider subcommands
- Description extraction, isSubcommand flag, flags extraction
- Skips unrecognised files, throws on missing dir
- Real providers.mjs: ≥5 commands (integration)
2026-05-27 20:32:08 -03:00
diegosouzapw
0a95372746
feat(agent-skills): add openapiParser and cliRegistryParser
...
openapiParser.ts:
- parseOpenapi(): reads docs/reference/openapi.yaml via js-yaml (already a dep)
and returns { paths: Map<METHOD+path, OpenapiPath>, areas: Map<SkillArea, ops[]> }
- PATH_AREA_MAP maps 30+ path prefixes to SkillArea values
- getEndpointsForArea(area): convenience helper returning 'METHOD /path' strings
cliRegistryParser.ts:
- parseCliRegistry(): reads all bin/cli/commands/*.mjs via fs.readdirSync
and regex-parses .command(), .description(), .option() calls
- FILE_FAMILY_MAP maps 40+ file basenames to CLI SkillArea families
- getCommandsForFamily(family): convenience helper for catalog consumers
- Does NOT import Commander.js modules to avoid side-effects (D15)
2026-05-27 20:31:55 -03:00
diegosouzapw
a0cc22be73
feat(agent-skills): add catalog.ts with getCatalog/filter/coverage/fetch helpers
...
Implements the catalog.ts public API defined in §3.3 of the master plan:
- getCatalog(): AgentSkill[] — returns 42 entries, lazy-cached in module scope
- getSkillById(id): AgentSkill | null — lookup by canonical ID
- filterCatalog(opts): AgentSkill[] — filter by category and/or area
- computeCoverage(): SkillCoverage — reads skills/ dir and counts SKILL.md present
- refreshCatalog(): void — invalidates cache (used by tests + generator)
- fetchSkillMarkdown(id): Promise<SkillMarkdown> — reads local fs first,
falls back to GitHub raw fetch with 1h Next.js cache (for F4 /raw route)
API_SKILL_IDS and CLI_SKILL_IDS exported as readonly string arrays (D28 order).
Single source of truth for all consumers (REST routes, MCP, A2A).
2026-05-27 20:31:44 -03:00
diegosouzapw
78de1d2455
feat(agent-skills): expand catalog source to 42 entries (22 API + 20 CLI)
...
Replace 18-entry hardcoded AGENT_SKILLS array with 42-entry CURATED_SKILLS
covering all areas listed in D28 of the master plan. Each curated entry
has id, name, description, category, area, icon, and optional flags.
Adds backward-compatible AGENT_SKILLS alias (deprecated) that maps curated
entries to the old AgentSkill shape with empty endpoints/cliCommands arrays
so the existing /dashboard/agent-skills page continues to work until F7
rewrites it.
Imports AgentSkill, SkillArea, SkillCategory types from src/lib/agentSkills/types.ts
(F1 single source of truth) instead of redeclaring locally.
2026-05-27 20:31:31 -03:00
diegosouzapw
bf764dc529
test(agent-skills): unit tests for schemas + SkillsConceptCard
2026-05-27 19:23:36 -03:00
diegosouzapw
612cf63de7
feat(agent-skills): redirect /dashboard/skills -> /dashboard/omni-skills + sidebar reorder
2026-05-27 19:23:32 -03:00
diegosouzapw
aed1bd02d2
feat(agent-skills): add SkillsConceptCard shared component + i18n
2026-05-27 19:23:27 -03:00
diegosouzapw
051ce5e786
feat(agent-skills): add foundation types + Zod schemas
2026-05-27 19:23:20 -03:00
diegosouzapw
722e9f41cd
chore: apply unit test fixes, polyfills, and environment precedence fixes
2026-05-27 18:02:17 -03:00
JeferssonLemes
52a43d65d3
feat(modelSpecs): align opencode-go family with upstream provider limits ( #2802 )
...
Integrated into release/v3.8.6
2026-05-27 17:06:32 -03:00
Hernan Javier Ardila Sanchez
0e9aed4d03
fix(gemini): emit signaturelessToolCallMode:text for GEMINI format models ( #2801 )
...
Integrated into release/v3.8.6
2026-05-27 17:05:36 -03:00
Apostol Apostolov
87fad5d171
[codex] home: restore settings-driven home layout and quota auto-refresh ( #2800 )
...
Integrated into release/v3.8.6
2026-05-27 17:05:18 -03:00
Apostol Apostolov
f1e4c001a9
feat(logs): add clean history button ( #2799 )
...
Integrated into release/v3.8.6
2026-05-27 17:04:49 -03:00
akarray
83445a96b8
fix(oauth): repair Google loopback callback flow ( #2796 )
...
Integrated into release/v3.8.6
2026-05-27 17:04:31 -03:00
Markus Hartung
0c6c5e212e
fix: Error: Unable to inspect existing database #2771 ( #2795 )
...
Integrated into release/v3.8.6
2026-05-27 17:04:13 -03:00
Paijo
aac17c01c3
fix: register missing web-cookie validators (claude-web, gemini-web, copilot-web, t3-web) ( #2793 )
...
Integrated into release/v3.8.6
2026-05-27 17:03:55 -03:00
Paijo
619463c573
fix: resolve npm install warnings — remove dead deps, relax engine constraint ( #2792 )
...
Integrated into release/v3.8.6
2026-05-27 17:03:38 -03:00
JeferssonLemes
72a46581b6
fix(opencode-go): route qwen3.x via claude messages + repair fixMissingToolResponses for Claude-shape upstreams ( #2791 )
...
Integrated into release/v3.8.6
2026-05-27 17:02:38 -03:00
diegosouzapw
722aa32939
chore: ignore .claude/settings.local.json (per-user Claude Code permissions)
2026-05-27 16:29:27 -03:00
diegosouzapw
80f8dd7863
chore: merge release/v3.8.5 into main (post-v3.8.5 hotfixes + community PRs)
2026-05-27 16:23:02 -03:00
Diego Rodrigues de Sa e Souza
3c016ce4dc
Merge pull request #2790 from jeferssonlemes/feat/opencode-go-missing-models
...
feat(opencode-go): register 4 missing models from upstream catalog
2026-05-27 10:42:14 -03:00
diegosouzapw
7042460292
chore: merge release/v3.8.5 to resolve conflicts
2026-05-27 10:41:52 -03:00
Diego Rodrigues de Sa e Souza
10ecf693a9
Merge pull request #2789 from InkshadeWoods/main
...
fix(i18n): translate 162 missing zh-CN UI strings
2026-05-27 10:41:29 -03:00
diegosouzapw
d718a6cbfb
chore: merge release/v3.8.5 to resolve conflicts
2026-05-27 10:41:07 -03:00
Diego Rodrigues de Sa e Souza
f32f6b841c
Merge pull request #2782 from kjhq/docs/fix-readme-broken-links
...
docs: fix broken documentation links in README after Fumadocs migration
2026-05-27 10:31:54 -03:00
diegosouzapw
7117cea835
chore: merge release/v3.8.5 to resolve conflicts
2026-05-27 10:31:40 -03:00
Diego Rodrigues de Sa e Souza
c765a987e6
Merge pull request #2783 from JxnLexn/fix-codex
...
fix(codex): apply global service tiers to combo request bodies
2026-05-27 10:31:22 -03:00
diegosouzapw
a00af74279
chore: merge release/v3.8.5 to resolve conflicts
2026-05-27 10:31:09 -03:00
Diego Rodrigues de Sa e Souza
1d28fbc6f2
Merge pull request #2784 from hartmark/feature/docker-speedup
...
fix: speedup docker creation by reducing steps and bunch up copy operations
2026-05-27 10:30:47 -03:00
diegosouzapw
a7e1124f64
chore: merge release/v3.8.5 to resolve conflicts
2026-05-27 10:29:53 -03:00
Diego Rodrigues de Sa e Souza
4cefed33f7
Merge pull request #2785 from JxnLexn/fix-logging
...
fix: keep database log settings in sync with the pipeline toggle
2026-05-27 10:29:30 -03:00
diegosouzapw
02494051af
chore: merge release/v3.8.5 to resolve conflicts
2026-05-27 10:29:15 -03:00
Diego Rodrigues de Sa e Souza
1f1336aa7a
Merge pull request #2786 from JxnLexn/fix-combo-provider-exhaustion
...
Allow rate-limited provider connections after transient 429s
2026-05-27 10:28:55 -03:00
diegosouzapw
f40a20e5f8
chore: merge release/v3.8.5 to resolve conflicts
2026-05-27 10:28:40 -03:00
Diego Rodrigues de Sa e Souza
13de1c4675
Merge pull request #2787 from akarray/fix/remote-google-oauth-public-callback
...
fix: use public callbacks for remote Google OAuth with custom creds
2026-05-27 10:27:59 -03:00
Jefersson Lemes
e9ead52a42
feat(opencode-go): register 4 missing models from upstream catalog
...
Add qwen3.7-max, mimo-v2-pro, mimo-v2-omni, hy3-preview to the
opencode-go provider. Extend executor tests and model specs.
- Registry now matches live https://opencode.ai/zen/go/v1/models response
(16 models). Previously, four models returned by the upstream API were
absent from the static registry, so requests to them failed model
resolution before reaching the executor.
- qwen3.7-max: inherits defaultContextLength 200000; model spec mirrors
qwen3.6-plus (Bailian multimodal, thinking + tools + vision).
- mimo-v2-pro: spec mirrors mimo-v2-omni (262144 ctx, 131072 maxOut,
tools + vision).
- mimo-v2-omni: registry entry only (spec already present upstream).
- hy3-preview: registry entry only; falls back to __default__ spec.
- All four route to /chat/completions (default openai format), matching
the existing opencode-go executor behavior.
2026-05-27 10:20:25 -03:00
diegosouzapw
ade053c78b
chore: update CHANGELOG.md for v3.8.5 with integrated PRs
2026-05-27 09:49:46 -03:00
akarray
0700705040
fix: use public callbacks for remote Google OAuth with custom creds
2026-05-27 09:49:28 -03:00
Jan Leon
3a5ad60eb2
fix: allow rate-limited provider connections after transient 429s (with unit & integration tests)
2026-05-27 09:49:24 -03:00
Jan Leon
e6ea8f13d9
fix: keep database log settings in sync with the pipeline toggle
2026-05-27 09:48:38 -03:00
Markus Hartung
279e9c47bc
fix: speedup docker creation by reducing steps and bunch up copy operations
2026-05-27 09:48:35 -03:00