diegosouzapw
649a2219f0
feat(dashboard,cli,i18n): add sidebar entries + 308 redirects + cliCommon/cliCode/cliAgents/acpAgents i18n namespaces (plan 14 F9)
...
- sidebarVisibility.ts: replace cli-tools with cli-code, add cli-agents, keep acp-agents order cli-code→cli-agents→acp-agents→cloud-agents in TOOLS_GROUP; update HIDEABLE_SIDEBAR_ITEM_IDS and DEVELOPER_SHOWN preset
- next.config.mjs: 4 permanent (308) redirects for /dashboard/cli-tools→/dashboard/cli-code and /dashboard/agents→/dashboard/acp-agents (with :path* wildcards)
- pt-BR.json + en.json: add cliCommon, cliCode, cliAgents, acpAgents namespaces (~140 keys each) + sidebar keys for the 3 new IDs
- request.ts: merge EN as namespace-level fallback so 39 non-EN/pt-BR locales display new namespaces in English until translations ship
- Header.tsx: update HEADER_DESCRIPTIONS map to use new HideableSidebarItemId values
- tests: 4 new unit test files (38 assertions), update sidebar-visibility.test.ts omni-proxy item order
2026-05-28 01:49:49 -03:00
diegosouzapw
caf68872ec
test(playground): fix react-hooks/immutability lint in hook test harnesses
...
Add eslint-disable-next-line comment to the outer hookRef assignment inside
mountHook<T> in all 5 vitest UI test files — the assignment is intentional
(test harness captures hook return via React ref) and safe.
2026-05-28 01:48:17 -03:00
diegosouzapw
f6f5d8da7d
test(ui): agent-bridge UI unit tests (F7)
...
18 vitest/jsdom tests across 4 files:
- agent-bridge-page.test.tsx: EmptyState, RiskNoticeBanner (render/dismiss),
BypassListEditor (defaults, initial patterns)
- agent-card.test.tsx: render, expand, DNS toggle, wizard open
- setup-wizard.test.tsx: step1 render, Next navigation, DNS enable, Cancel
- bypass-list-editor.test.tsx: defaults, patterns, save callback, button
All 18 tests pass. Timeout set to 30000ms (initial transform overhead).
2026-05-28 01:39:44 -03:00
diegosouzapw
5046bff067
feat(i18n): pt-BR + en strings for AgentBridge (F7)
...
Add ~90 i18n keys under agentBridge.* namespace (server card, agent list,
agent card, setup wizard, model mapping, bypass list, upstream CA, empty
state, risk banner, sidebar title/subtitle) in en.json and pt-BR.json.
Other 39 locales get EN fallback automatically (D17).
2026-05-28 01:39:36 -03:00
diegosouzapw
dcb9685aa8
feat(redirect): /system/mitm-proxy now points to /tools/agent-bridge (F7)
...
Update the old MITM proxy page redirect from /dashboard/system/proxy
to /dashboard/tools/agent-bridge per plan 11 acceptance criterion.
2026-05-28 01:39:30 -03:00
diegosouzapw
91e3d9c965
feat(sidebar): add agent-bridge entry to TOOLS_GROUP (F7)
...
Add "agent-bridge" to HIDEABLE_SIDEBAR_ITEM_IDS and to TOOLS_GROUP.items
after cloud-agents. Only adding lines, never reordering (D5 / Hard Rule).
2026-05-28 01:39:23 -03:00
diegosouzapw
192e6286da
feat(ui): agent-bridge page + server card + agent list (F7)
...
Add AgentBridge full UI at /dashboard/tools/agent-bridge:
- page.tsx (Server Component, fetches state + providers check)
- AgentBridgePageClient.tsx (orchestrator, all mutations)
- AgentBridgeServerCard: Start/Stop/Restart/TrustCert/Download/RegenCert
- AgentList: grid + All/Active/Setup/Investigating filter + search
- AgentCard: expandable with DNS toggle, model mappings, setup wizard
- SetupWizard: 3-step modal (Verify → DNS → Mappings)
- ModelMappingTable + ModelSelectorModal: source→target inline editing
- BypassListEditor: default + user bypass patterns textarea/chips
- UpstreamCaField: path + Test TLS + Save
- EmptyStateNoProviders: shown when zero providers configured (D15)
- RiskNoticeBanner: amber dismissible (localStorage persistence)
- shared/: DnsStatusBadge, CertStatusIcon, AgentIcon
- hooks/useAgentBridgeState: polling fetch (no SWR dependency)
- src/shared/components/RiskNoticeModal.tsx: generic risk modal (D16)
2026-05-28 01:39:17 -03:00
diegosouzapw
5c79c1a32d
merge(F10): final audit + docs + integration tests + openapi
2026-05-28 01:35:30 -03:00
diegosouzapw
bdaa045d5d
merge(F4): vector store (sqlite-vec + hybrid RRF)
2026-05-28 01:26:16 -03:00
diegosouzapw
5f07341998
merge(F3): embedding layer (remote+static+transformers+cache)
2026-05-28 01:26:14 -03:00
diegosouzapw
1d9cb7eb03
test(api): integration tests for traffic-inspector routes (F6)
2026-05-28 01:24:33 -03:00
diegosouzapw
668010bcf2
feat(api): traffic-inspector sessions + internal ingest routes (F6)
2026-05-28 01:24:26 -03:00
diegosouzapw
c16ce8a9e1
feat(api): traffic-inspector hosts + capture-modes + tls routes (F6)
2026-05-28 01:24:20 -03:00
diegosouzapw
ef79eab224
feat(api): traffic-inspector ws + requests + replay + annotation routes (F6)
2026-05-28 01:24:14 -03:00
diegosouzapw
1d6fcfd0c4
feat(authz): mark traffic-inspector LOCAL_ONLY + SPAWN_CAPABLE (F6)
2026-05-28 01:24:08 -03:00
diegosouzapw
5508dc4e3c
feat(memory): add sqlite-vec vector store with hybrid RRF search (plan 21 F4)
...
Implements VectorStore interface contract from master plan 21 §3.4:
- sqlite-vec v0.1.9 extension loaded via createRequire (ESM compat)
- vec0 virtual table with FLOAT[N] dimensions driven by EmbeddingResolution
- Upsert via DELETE+INSERT (vec0 does not support INSERT OR REPLACE)
- BigInt rowids required by vec0 v0.1.9 for primary key insertion
- Hybrid RRF (k=60) fusing FTS5 + vector KNN via UNION ALL + GROUP BY
- FTS join on m.memory_id = fts.rowid (migration 023 bridge column)
- VECTOR_STORE_DISABLE_VEC=true test seam for null-extension path
- sanitizeErrorMessage in 3 error paths (Hard Rule #12 )
- Raw SQL exception documented in header comment (Hard Rule #5 §D5)
- 27 unit tests across 5 files; all lint/typecheck/cycles checks pass
2026-05-28 01:22:38 -03:00
diegosouzapw
b54de3278a
docs(openapi): add /api/agent-skills/* paths and AgentSkill + SkillCoverage schemas
...
Add tag: Agent Skills (with description of the 42-entry catalog).
Add 5 paths:
- GET /api/agent-skills (list with category/area filters)
- GET /api/agent-skills/{id} (single skill metadata)
- GET /api/agent-skills/{id}/raw (SKILL.md as text/markdown)
- GET /api/agent-skills/coverage (coverage stats)
- POST /api/agent-skills/generate (requires management auth, dryRun/prune/onlyIds body)
Add 2 schemas:
- AgentSkill: id, name, description, category, area, endpoints, cliCommands,
icon, isEntry, isNew, rawUrl, githubUrl
- SkillCoverage: api{have,total:22}, cli{have,total:20}, totalSkills, generatedAt
Add ErrorResponse schema (reusable for agent-skills error responses).
2026-05-28 01:10:44 -03:00
diegosouzapw
a430039ef0
docs(architecture): add src/lib/agentSkills entry in CODEBASE_DOCUMENTATION
...
Add agentSkills/ row to the src/lib/ module table:
- catalog.ts: getCatalog/getSkillById/filterCatalog/computeCoverage
- generator.ts: generateAgentSkills (writes skills/{id}/SKILL.md)
- openapiParser.ts, cliRegistryParser.ts, schemas.ts, types.ts
- Consumed by REST routes, MCP tools, and A2A list-capabilities skill
Update a2a/ row: 5 → 6 skills (add list-capabilities).
2026-05-28 01:10:31 -03:00
diegosouzapw
914583d580
docs(a2a): add list-capabilities skill entry
...
Update Available Skills table from 5 to 6 skills.
Add list-capabilities skill with full columns: ID, description, tags, examples.
Add detail subsection explaining the markdown table artifact format,
rawUrl column, metadata.totalSkills, and link to AGENT-SKILLS.md.
2026-05-28 01:10:18 -03:00
diegosouzapw
2ee80c6702
docs(mcp): add omniroute_agent_skills_* tools + read:catalog scope
...
Add "Agent Skill Catalog Tools (3)" section after Skill Tools (4):
- omniroute_agent_skills_list (read:catalog)
- omniroute_agent_skills_get (read:catalog)
- omniroute_agent_skills_coverage (read:catalog)
Add read:catalog row to Authentication & Scopes table.
Update count in section intro (40 tools total, including 3 new catalog tools).
2026-05-28 01:10:03 -03:00
diegosouzapw
712b00346c
docs(agent-skills): add AGENT-SKILLS.md + cross-link in SKILLS.md
...
Add docs/frameworks/AGENT-SKILLS.md (~190 lines):
- Overview of the 42-entry dynamic catalog (22 API + 20 CLI)
- Architecture map: catalog.ts, generator.ts, openapiParser.ts,
cliRegistryParser.ts, schemas.ts, types.ts
- SKILL.md format with custom-block documentation
- REST API discovery reference table
- MCP tools table (omniroute_agent_skills_list/get/coverage)
- A2A list-capabilities invocation example
- Full 42-ID catalog tables (API + CLI)
- External agent consumption guide (REST/MCP/A2A/GitHub raw)
- Generator usage (dryRun/prune/onlyIds)
- Coverage API reference
Update docs/frameworks/SKILLS.md:
- Add "## Agent Skills vs Omni Skills" section at top with comparison table
- Link to AGENT-SKILLS.md
2026-05-28 01:09:47 -03:00
diegosouzapw
e7a1bf1c24
test(agent-skills): integration tests for discovery + content + MCP + A2A
...
Add tests/integration/agent-skills-discovery.test.ts (13 tests):
- Verifies every API_SKILL_IDS + CLI_SKILL_IDS has skills/<id>/SKILL.md on disk
- Validates frontmatter name + description present in each SKILL.md
- Validates body >= 100 chars per SKILL.md
- Verifies MCP omniroute_agent_skills_list handler returns 42 entries
- Verifies A2A list-capabilities returns 1 artifact containing all 42 IDs
Add tests/integration/agent-skills-content.test.ts (16 tests):
- Confirms all 42 catalog IDs have skills/{id}/ directory + SKILL.md
- Confirms 0 omniroute-* directories remain (post-prune)
- Confirms exactly 10 IDs have skill:custom-start/end blocks
(omni-mcp, omni-compression, cli-providers, cli-eval, omni-agents-a2a,
omni-combos-routing, omni-auth, omni-resilience, omni-inference, cli-serve)
- Confirms no unclosed custom blocks
2026-05-28 01:09:32 -03:00
diegosouzapw
02bc079ef9
feat(memory): add embedding layer — remote/static/transformers/cache (plan 21 F3)
...
Implements the multi-source embedding layer for the Memory Engine Redesign (plan 21).
Adds 5 production modules under src/lib/memory/embedding/:
- cache.ts: LRU+TTL in-memory cache (max=1000, TTL=5min, sha256 keyed)
- remote.ts: delegates to createEmbeddingResponse(), maps HTTP 401/403→no_key, 429→rate_limited, AbortError→timeout; all errors via sanitizeErrorMessage()
- staticPotion.ts: download-once potion-base-8M (JS-only WordPiece tokenizer + mean pooling, no WASM)
- transformersLocal.ts: lazy await import('@huggingface/transformers') singleton pipeline (Xenova/all-MiniLM-L6-v2, q8)
- index.ts: resolveEmbeddingSource (pure, sync), embed (cached dispatch), listEmbeddingProviders, invalidateEmbeddingCache
Also adds @huggingface/transformers and sqlite-vec to dependencies, and registers
@huggingface/transformers in next.config.mjs serverExternalPackages (D8/D25).
6 unit test files: cache (9), resolve (14), remote (10), static-potion (13), transformers (6), list-providers (8) — all 60 tests green.
2026-05-28 00:40:56 -03:00
diegosouzapw
4b0bda9b91
Merge F8 (MonitorTab) into refactor/pages-v3-19
2026-05-28 00:31:11 -03:00
diegosouzapw
cf88675917
Merge F7 (CompressionPreviewAccordion) into refactor/pages-v3-19
2026-05-28 00:31:10 -03:00
diegosouzapw
2e756b8789
Merge F6 (TestBenchAccordion) into refactor/pages-v3-19
2026-05-28 00:31:08 -03:00
diegosouzapw
c4853a4ce1
Merge F5 (StreamTransformerAccordion) into refactor/pages-v3-19
2026-05-28 00:30:51 -03:00
diegosouzapw
52b9192d83
Merge F4 (AdvancedSection/RawJsonPanel/PipelineView) into refactor/pages-v3-19
2026-05-28 00:30:50 -03:00
diegosouzapw
9a8554de9e
Merge F3 (SimpleControls/ResultNarrated/TranslateTab) into refactor/pages-v3-19
2026-05-28 00:30:48 -03:00
diegosouzapw
0820ec453b
feat(translator): add SimpleControls, ResultNarrated, TranslateTab (F3)
2026-05-28 00:29:35 -03:00
diegosouzapw
0c38ed57ec
test(api): integration tests for agent-bridge routes (F5)
...
4 integration test files covering: happy paths for all 8 major routes,
LOCAL_ONLY classification assertion, Zod 400 paths, cert flow (status/trust/
download/regenerate), bypass CRUD (POST/GET/DELETE), mappings PUT→GET
round-trip. Every error path asserts no stack trace leakage (Hard Rule #12 ).
Total: 41 tests, 41 pass.
2026-05-28 00:24:48 -03:00
diegosouzapw
19c4ff9bb0
feat(api): agent-bridge state + server + agents + cert + bypass + upstream-ca routes (F5)
...
12 REST routes under /api/tools/agent-bridge/ covering all AgentBridge
backend surfaces: server lifecycle, per-agent state/DNS/mappings/detect,
cert status/download/regenerate, bypass pattern CRUD, upstream CA config.
All routes use Zod validation and route errors through sanitizeErrorMessage.
feat(authz): mark agent-bridge LOCAL_ONLY + SPAWN_CAPABLE (F5)
Adds /api/tools/agent-bridge/ to both LOCAL_ONLY_API_PREFIXES and
SPAWN_CAPABLE_PREFIXES in routeGuard.ts — satisfying Hard Rules #15 + #17 .
2026-05-28 00:24:38 -03:00
diegosouzapw
3852656e8b
feat(translator): add AdvancedSection, RawJsonPanel, PipelineView (F4)
2026-05-28 00:19:43 -03:00
diegosouzapw
3a535625b5
Merge F8 into parent: detail pages + move cards to cli-code/components (plan 14)
2026-05-28 00:18:37 -03:00
diegosouzapw
029a1f8e5b
Merge F7 into parent: rename /agents → /acp-agents + concept/comparison cards (plan 14)
2026-05-28 00:18:37 -03:00
diegosouzapw
02d5dfb61f
Merge F6 into parent: /dashboard/cli-agents page (plan 14)
2026-05-28 00:18:36 -03:00
diegosouzapw
5778043444
Merge F5 into parent: /dashboard/cli-code page (plan 14)
2026-05-28 00:18:35 -03:00
diegosouzapw
2d58519ca9
refactor(dashboard,cli): move cards to cli-code/components + add detail pages /cli-code/[id] + /cli-agents/[id] + ToolDetailClient orchestrator (plan 14 F8)
...
- git mv cli-tools/components → cli-code/components (history preserved, 15 renames)
- Add isExpanded=false + onToggle=()=>{} defaults to all 12 specialized cards
- Create cli-code/[id]/page.tsx: server component, guards category=code
- Create cli-agents/[id]/page.tsx: server component, guards category=agent
- Create cli-code/components/ToolDetailClient.tsx: orchestrator with isExpanded:true always (D23), header with back-link + vendor/category/baseUrl badges
- Delete cli-tools/CLIToolsPageClient.tsx + cli-tools/page.tsx (accordion-based orchestrator replaced)
- Tests: ToolDetailClient smoke (5), cli-code detail page (3), cli-agents detail page (3) — 11/11 passing
2026-05-28 00:15:04 -03:00
diegosouzapw
2cc0f5bb5b
test(playground): cover hooks and streamMetrics
2026-05-27 23:59:47 -03:00
diegosouzapw
06210da48f
feat(playground): add useToolsBuilder/useStructuredOutput hooks
2026-05-27 23:59:41 -03:00
diegosouzapw
a180725f56
feat(playground): add usePresets/useImprovePrompt hooks
2026-05-27 23:59:35 -03:00
diegosouzapw
c708b1f40c
feat(playground): add useStreamMetrics hook
2026-05-27 23:59:30 -03:00
diegosouzapw
2f92399e23
feat(playground): add streamMetrics pure function
2026-05-27 23:59:23 -03:00
diegosouzapw
8b430bfcc9
merge(F9b): apply generator + prune (42 SKILL.md, 18 omniroute-* pruned)
2026-05-27 23:51:38 -03:00
diegosouzapw
f4571094c2
feat(skills): generate 42 SKILL.md (22 API + 20 CLI) + prune 18 omniroute-* orphans
2026-05-27 23:50:13 -03:00
diegosouzapw
591d99ca36
merge(F9a): preserve curated content from 18 old SKILL.md via markers + archive
2026-05-27 23:41:08 -03:00
diegosouzapw
2e1862192e
feat(skills): preserve curated content from 18 old SKILL.md via custom-start/end markers + archive
...
Migrates 1560 lines of curated content from 18 omniroute-* skill files
into 10 new destination SKILL.md placeholders using the generator-safe
<!-- skill:custom-start --> ... <!-- skill:custom-end --> markers so
F9b --apply preserves them instead of overwriting.
Mappings:
- omniroute → omni-auth (direct)
- omniroute-chat + image + tts + stt + embeddings + web-search + web-fetch → omni-inference (aggregated, 7 sections)
- omniroute-mcp → omni-mcp (direct)
- omniroute-a2a → omni-agents-a2a (direct)
- omniroute-routing → omni-combos-routing (direct)
- omniroute-compression → omni-compression (direct)
- omniroute-monitoring → omni-resilience (direct)
- omniroute-cli + omniroute-cli-admin → cli-serve (aggregated, 2 sections)
- omniroute-cli-providers → cli-providers (direct)
- omniroute-cli-eval → cli-eval (direct)
- omniroute-cli-cloud → archived only (no direct equivalent)
Archive: all 18 originals copied to
_tasks/features-v3.8.6/refactorpages/_orchestration/15-pruned-archive/
2026-05-27 23:39:44 -03:00
diegosouzapw
bb312062ea
merge(F2): db migrations + memoryVec + localDb re-export
2026-05-27 23:26:22 -03:00
diegosouzapw
d12ce14168
merge(F1): shared foundation (types + schemas)
2026-05-27 23:26:20 -03:00
diegosouzapw
6ba76aa500
test(memory): add edge-case test for getMemoryVecMeta when sentinel row is absent
2026-05-27 23:22:48 -03:00