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