Commit Graph

4934 Commits

Author SHA1 Message Date
diegosouzapw
3cb3b88c9d merge(F9): docs (AGENTBRIDGE/TRAFFIC_INSPECTOR) + openapi + E2E specs + CHANGELOG (Group A) 2026-05-28 10:26:02 -03:00
diegosouzapw
80910714a3 Merge branch 'feat/playground-ui-core-F6' into feat/playground-ui-advanced-F7 2026-05-28 10:07:46 -03:00
diegosouzapw
24e251fff2 Merge branch 'feat/playground-hooks-F5' into feat/playground-ui-advanced-F7 2026-05-28 10:07:36 -03:00
diegosouzapw
d2a0097f86 Merge branch 'feat/playground-search-foundation-F1' into feat/playground-ui-advanced-F7 2026-05-28 10:07:30 -03:00
diegosouzapw
6f7b051289 merge(F8): MCP strategy-from-settings + CLI canonical types 2026-05-28 10:07:04 -03:00
diegosouzapw
edaa05783d fix(memory): correct operator precedence in listEmbeddingProviders hasKey check (TS18047)
The previous expression was parsed as (A && B && C) || D, allowing D to evaluate
with creds possibly null. Wrap (apiKey || accessToken) in parens so creds-narrowing
covers the whole disjunction.
2026-05-28 10:06:47 -03:00
oyi77
997ece8ef0 feat(gitlawb): dynamic model fetch with gmi-cloud fallback
Hybrid approach:
- gitlawb (xiaomi-mimo): dynamic /models endpoint → 356 models
- gitlawb-gmi (gmi-cloud): 404 fallback → local catalog gracefully
Mimics Gitlawb/openclaude's model-routing pattern
2026-05-28 20:05:11 +07:00
diegosouzapw
4640f0a77b feat(dashboard): refactor search-tools into Studio UI with 3 tabs (F8)
- SearchToolsClient: Studio orchestrator with Search/Scrape/Compare tabs
  and shared SearchToolsConfigPane; latency+cost metrics wired to TopBar
- SearchToolsTopBar: 3-tab switcher with metrics display and Export Code
  button (MockExportCodeModal placeholder annotated TODO(F7-merge))
- SearchToolsConfigPane: provider catalog inline with per-tab options
  (search-type, fetch format/full-page, rerank model, history)
- SearchConceptCard: collapsible explanatory cards for all 5 modalities
- ProviderCatalog: fetches /api/search/providers, renders 12 search + 3
  fetch providers with status badges (configured/missing/rate_limited)
- ScrapeResult: markdown preview + raw toggle + D21 256KB cap with
  truncation warning and full-content raw modal
- tabs/SearchTab: SearchForm + ResultsPanel + RerankPanel with
  noProvidersConfigured CTA wired
- tabs/ScrapeTab: URL input + /v1/web/fetch call via useScrapeFetch hook
- tabs/CompareTab: up to 4 providers (D22) in parallel via Promise.allSettled,
  overlap calculation, best/worst coloring
- hooks/useScrapeFetch: fetch wrapper for /v1/web/fetch with latency
- SearchForm: extended with catalog provider metadata badges
- ResultsPanel: extended with noProvidersConfigured CTA empty state
- ProviderComparison: "Size" hardcoded text annotated with data-i18n attr
- 7 vitest UI test files: 75 tests covering all acceptance criteria
2026-05-28 09:44:09 -03:00
diegosouzapw
44cddf8c4a Merge FIX-1 (gap fixes G2-G7: validating spinner, ExpirationBadge in files, polling spinner, i18n confirm, error keys, retention bullet) 2026-05-28 09:40:04 -03:00
diegosouzapw
bc0301503c fix(batch): gap fixes G2-G7 — validating spinner, ExpirationBadge in files, polling spinner, i18n confirm, error keys, retention bullet 2026-05-28 09:39:01 -03:00
diegosouzapw
1974628190 fix(mcp,cli): read retrieval strategy from settings + update CLI memory types (plan 21 F8)
- memoryTools.ts: replace hardcoded retrievalStrategy:"exact" with getMemorySettings()+toMemoryRetrievalConfig(); fallback to "exact" on catch
- memory.mjs: VALID_TYPES updated to ["factual","episodic","procedural","semantic"]; default changed from "user" to "factual"; legacy types (user/feedback/project/reference) emit deprecation warning and map to "factual"
- tests: mcp-memory-tools-strategy.test.ts (7 cases) + cli-memory-types.test.mjs (12 cases)
2026-05-28 09:35:52 -03:00
diegosouzapw
5e8c17d0f5 test(playground): UI coverage for studio + tabs
5 vitest test files covering PlaygroundStudio (smoke, 4 tabs, deep-link),
StudioConfigPane (collapse/expand, sliders, endpoint select), ChatTab (SSE
send + markdown + system prompt propagation + regenerate + onMetricsUpdate),
ApiTab (smoke, 10 endpoints, SSE stream), and TokenCostCounter (all display
states). 42 tests, all passing.
2026-05-28 09:25:20 -03:00
diegosouzapw
bcfb8968bb refactor(playground): remove ChatPlayground/SearchPlayground (migrated)
ChatPlayground.tsx → ChatTab (markdown + system prompt + metrics).
SearchPlayground.tsx → superseded by /dashboard/search-tools Studio (F8).
grep confirmed zero external imports before deletion.
2026-05-28 09:25:09 -03:00
diegosouzapw
9a36d9ecf5 feat(playground): migrate Monaco editor to ApiTab (D14 zero regression)
Cuts the full content of page.tsx (889 LOC) to tabs/ApiTab.tsx with zero
logic changes: 10 endpoints, multimodal upload (vision images + audio),
SSE streaming, model/provider select, Monaco request/response editors,
image generation inline render, speech playback. page.tsx replaced with
Suspense-wrapped <PlaygroundStudio /> shell.
2026-05-28 09:24:55 -03:00
diegosouzapw
f24406dcf4 feat(playground): migrate ChatPlayground to ChatTab with markdown + metrics
Refactors ChatPlayground.tsx into ChatTab — multi-turn SSE chat with:
markdown rendering via MarkdownMessage (F1), system prompt from config pane,
token/cost per message via useStreamMetrics (F5), regenerate button, and
stop/cancel support. Hard Rule compliance: no useCallback to satisfy
react-hooks/preserve-manual-memoization rule.
2026-05-28 09:24:44 -03:00
diegosouzapw
e2a22c57b0 feat(playground): add ParamSliders + TokenCostCounter
ParamSliders: temperature/max_tokens/top_p/penalties/seed/stop/JSON-mode
sliders and inputs. TokenCostCounter: D13-compliant "(estimated)" cost label
with ↑/↓ arrow notation (e.g. 142↑ 38↓ · $0.002 estimated).
2026-05-28 09:24:34 -03:00
diegosouzapw
68ec69a9c5 feat(playground): scaffold PlaygroundStudio + StudioTopBar + StudioConfigPane
Adds the PlaygroundStudio orchestrator (tab routing via ?tab= deep-link,
shared configState), StudioTopBar (4 tabs + export placeholder modal), and
StudioConfigPane (collapsible, 10-endpoint select, model, system prompt,
ParamSliders). F7 slots (SLOT_PRESETS / SLOT_IMPROVE) left as JSX comments.
2026-05-28 09:24:21 -03:00
Nikolay Alafuzov
b209387d9f fix(reasoning): guard interleaved capability lookup 2026-05-28 15:23:58 +03:00
oyi77
471df45bcb refactor(gitlawb): extract shared opengateway validator factory, fix docs path in test
- Extract gitlawb/gitlawb-gmi validators into buildOpengatewayValidator factory
- Fix dockerignore-docs-coverage test: update stale docs/AUTO-COMBO.md -> docs/routing/AUTO-COMBO.md
2026-05-28 19:21:08 +07:00
diegosouzapw
8926c8bf98 chore(changelog): document Group A AgentBridge + Traffic Inspector (F9) 2026-05-28 09:14:40 -03:00
diegosouzapw
48c31c4ce5 test(e2e): smoke flows for agent-bridge + traffic-inspector + cross (F9) 2026-05-28 09:14:27 -03:00
diegosouzapw
5ff220b655 docs(api): add ~28 routes for agent-bridge + traffic-inspector to openapi.yaml (F9) 2026-05-28 09:14:18 -03:00
diegosouzapw
7a33af8ef7 docs(architecture): register agent-bridge + traffic-inspector in REPOSITORY_MAP (F9) 2026-05-28 09:14:12 -03:00
diegosouzapw
76fa6688ae docs(frameworks): add TRAFFIC_INSPECTOR.md (F9) 2026-05-28 09:14:04 -03:00
diegosouzapw
12cc1bb79c docs(frameworks): add AGENTBRIDGE.md (F9) 2026-05-28 09:13:51 -03:00
diegosouzapw
70c9bf279a fix(F3): pass sourceModel to agentBridgeHook.recordRequestStart
hookBufferStart was calling recordRequestStart without sourceModel,
causing the field to be null even when extractSourceModel returned
a value from the body. Now forwards the extracted model so the
Traffic Inspector buffer entry is populated correctly.
2026-05-28 09:06:16 -03:00
oyi77
bbf8d4ccb9 feat(gitlawb): serve models from static registry without API-unavailable warning
GitLawB's OpenGateway API does not expose a /models endpoint per
provider-path. Previously the models route fell through to the generic
fallback which returned static catalog models with the misleading
'API unavailable — using local catalog' warning.

Now gitlawb and gitlawb-gmi are handled as static model providers
(same pattern as reka and qwen OAuth) — models are served from the
provider registry without any warning, since all registered models
are functional via POST /chat/completions.
2026-05-28 18:48:05 +07:00
oyi77
ecb0d1dbac test(gitlawb): add 12 unit tests for gitlawb and gitlawb-gmi specialty validators
Covers success, auth failure (401/403), non-auth acceptance (400/422/429),
network errors, and custom baseUrl overrides for both providers.
2026-05-28 18:44:37 +07:00
diegosouzapw
b414df62d5 merge: F9 UI quota-share refactor (DB-backed + Plans page + sidebar + i18n) 2026-05-28 08:29:31 -03:00
diegosouzapw
f78ede0324 merge(F5): memory core rewire (retrieval+store+settings+summarization+reindex) 2026-05-28 08:29:10 -03:00
diegosouzapw
8f6651d053 feat(memory): rewire retrieval/store/settings/summarization + reindex (plan 21 F5)
- retrieval.ts — semantic/hybrid usa vectorStore quando disponível; degrada para FTS5 transparente
- retrieval.ts — adiciona retrievePreview() (dry-run para Playground) e engineStatus()
- retrieval.ts — rerank opcional via provider configurado (D13)
- store.ts — createMemory/updateMemory geram vetor best-effort; deleteMemory sincroniza vec + Qdrant (D15)
- settings.ts — 7 campos novos (embeddingSource, embeddingProviderModel, transformersEnabled, staticEnabled, rerankEnabled, rerankProviderModel, vectorStore) com defaults
- summarization.ts — summarizeMemoriesOlderThan exposta para uso manual (D19)
- reindex.ts (novo) — runReindexBatch processa fila lazy de backfill (D21)
- 9 testes unitários adicionados; testes F1-F4 sem regressão
2026-05-28 08:27:28 -03:00
diegosouzapw
a4ee78322f test(ui): cover quota-share page, components, hooks, plans config + sidebar (B/F9) 2026-05-28 08:25:05 -03:00
diegosouzapw
c21bfd5a36 chore(i18n): extend quotaShare + add quotaPlans namespace (pt-BR + en) (B/F9) 2026-05-28 08:25:00 -03:00
diegosouzapw
4cb50a733e feat(sidebar): add costs-quota-plans item to Costs section (B/F9) 2026-05-28 08:24:54 -03:00
diegosouzapw
bd2cf82e0a feat(quota-plans): add /dashboard/costs/quota-share/plans page (B/F9) 2026-05-28 08:24:49 -03:00
diegosouzapw
c7ee32186c refactor(quota-share): move pools from localStorage to /api/quota/pools (B/F9) 2026-05-28 08:24:44 -03:00
diegosouzapw
ec876883b2 feat(quota-share): add hooks (usePools + usePoolUsage + useLocalStoragePoolMigration) (B/F9) 2026-05-28 08:24:38 -03:00
diegosouzapw
160f0693f3 feat(quota-share): extract PoolCard + DimensionBar + AllocationTable + BurnRateChart + ConceptCard + Modals (B/F9) 2026-05-28 08:24:32 -03:00
diegosouzapw
6f62311778 Merge F10 into parent: audit report (GREEN) + docs + micro-fixes for stale cli-tools paths (plan 14) 2026-05-28 08:22:01 -03:00
diegosouzapw
bb90dda1ca chore(plan-14): audit report + docs + plan11 MITM backlog cross-ref (plan 14 F10)
- docs/reference/CLI-TOOLS.md: update to v3.8.6 (3 pages, unified catalog, MITM backlog, batch API)
- src/shared/components/cli/CliToolCard.tsx: fix stale import path cli-tools → cli-code (audit micro-fix)
- tests/unit/ui/CliToolCard.test.tsx: align mock path to match production import (audit micro-fix)
- src/app/(dashboard)/dashboard/providers/[id]/page.tsx: update stale link /dashboard/cli-tools → /cli-code
- .source/browser.ts + .source/server.ts: auto-regenerated fumadocs MDX index (CLI-TOOLS.md update)
- _tasks/features-v3.8.6/refactorpages/_orchestration/audit-report-14.md: comprehensive audit (gitignored)
- _tasks/features-v3.8.6/refactorpages/_orchestration/_plan11-mitm-backlog.md: updated date/format (gitignored)

Audit conclusion: GREEN — 0 Hard Rule violations, 217+98 tests passing, coverage 56.7/66.2/50.6/56.7 (gate 40/40/40/40).
2026-05-28 08:19:26 -03:00
diegosouzapw
039ff0abd9 merge(F8): Traffic Inspector UI into Group A parent 2026-05-28 08:05:58 -03:00
oyi77
017c16c80a fix(gitlawb): add specialty validators for connection test — bypass /models probe
GitLawB OpenGateway API (xiaomi-mimo compatible) does not expose a /models
endpoint, causing validateOpenAILikeProvider to 404 on the initial probe
and report 'Provider validation endpoint not supported'.

Add specialty validators for both gitlawb and gitlawb-gmi that follow the
same pattern as the existing xiaomi-mimo validator: skip GET /models,
validate directly via POST /chat/completions with a minimal test message.
Any 401/403 response means an invalid key; all other responses mean auth
is OK.

Fixes test-connection returning 404 for GitLawB providers.
2026-05-28 17:57:13 +07:00
diegosouzapw
07d40ef035 merge: F8 REST quota routes (/api/quota/** + /api/settings/quota-store) 2026-05-28 07:55:00 -03:00
diegosouzapw
37e6570bdb test(integration): cover quota REST routes + error sanitization (B/F8) 2026-05-28 07:50:03 -03:00
diegosouzapw
0107beb86b feat(api): add /api/settings/quota-store driver settings route (B/F8) 2026-05-28 07:49:55 -03:00
diegosouzapw
1e652869d7 feat(api): add /api/quota/preview dry-run route (B/F8) 2026-05-28 07:49:47 -03:00
diegosouzapw
043f3c412b feat(api): add /api/quota/plans CRUD routes (B/F8) 2026-05-28 07:49:38 -03:00
diegosouzapw
9dfea1e7ad feat(api): add /api/quota/pools CRUD + usage routes (B/F8) 2026-05-28 07:49:30 -03:00
diegosouzapw
0a398002bf Merge F10 (audit + E2E spec) into refactor/pages-v3-19 2026-05-28 07:47:30 -03:00
diegosouzapw
cd768b8902 chore(translator): F10 audit — add Playwright E2E spec for translator friendly redesign 2026-05-28 07:47:14 -03:00