diegosouzapw
533db63a86
merge(F9): E2E + docs + i18n consolidation
2026-05-28 13:59:27 -03:00
diegosouzapw
eab8b12171
fix(memory): align legacy cli-memory-commands test with D17 type mapping + env doc tweaks
...
Plan 21 / D17 — CLI now remaps legacy types (user/feedback/project/reference) to
canonical (factual/episodic/procedural/semantic). The legacy assertion in
cli-memory-commands.test.ts still expected 'user'; update to expect 'factual'.
Also includes incidental .env.example + docs/ENVIRONMENT.md + qdrant
embedding-models route tweaks captured by F10 audit pass.
2026-05-28 13:59:19 -03:00
diegosouzapw
517385e789
docs(memory): F9 — E2E specs, MEMORY.md engine arch, openapi routes, i18n sort
...
- Add tests/e2e/memory-engine.spec.ts (7 scenarios: 3-tab render, memories table,
add/edit modal, playground simulate, engine status chips, reindex button)
- Add tests/e2e/memory-qdrant-routes.spec.ts (3 scenarios: Qdrant config card,
Test Connection → sanitized error without stack, Cleanup → sanitized error)
- Update docs/frameworks/MEMORY.md: add Engine architecture (3-tier ASCII diagram),
Embedding sources table, Hybrid RRF (k=60) section, Backfill lazy+reindex section,
Settings extension (7 new fields D9), updated REST API table (10 new routes),
updated Dashboard section (Studio 3 tabs), MCP D16 strategy from settings, See Also
- Update docs/reference/openapi.yaml: add Memory tag + 13 new paths
(/api/memory, /api/memory/{id} PUT, retrieve-preview, embedding-providers,
engine-status, summarize, reindex, /api/settings/memory GET+PUT,
/api/settings/qdrant GET+PUT+health+search+cleanup+embedding-models)
+ MemoryEntry, MemorySettingsExtended, QdrantSettings, QdrantHealthResult schemas
- Update docs/architecture/REPOSITORY_MAP.md: add embedding/, vectorStore.ts,
reindex.ts, memoryVec.ts, memory Studio UI entries
- Sort memory.* namespace keys alphabetically in pt-BR.json and en.json
(no duplicate found — pure reorder, no content change)
- .env.example already has all 7 vars from §3.9 (confirmed, no change needed)
2026-05-28 13:36:43 -03:00
diegosouzapw
f78713d733
merge(F7): UI Studio (3 tabs + components + hooks + i18n)
2026-05-28 12:17:31 -03:00
diegosouzapw
22d2633773
fix(memory): replace swr with native React hooks (swr not installed)
...
F7 originally implemented useEngineStatus/useMemorySettings via swr, but the
package is not in package.json — would crash at runtime. Replaced with native
useState + useEffect + setInterval polling. Same public API
(status/settings/isLoading/isError/mutate/save) so the existing components
and the 8 UI tests (which mock the hooks directly) keep working unchanged.
2026-05-28 12:17:31 -03:00
diegosouzapw
f8bf164180
feat(memory): implement F7 Studio UI layer for /dashboard/memory
...
Converts the monolithic memory page into a 3-tab Studio layout
(Memories | Playground | Engine) with URL-driven tab state, 8 new
React components, 2 SWR hooks, 50+ i18n keys, and 8 Vitest unit tests
covering all new components (45/45 passing).
2026-05-28 11:55:18 -03:00
diegosouzapw
cc243a9d47
fix(memory): defensive markNeedsReindex + drain setImmediate in legacy tests
...
- store.ts: wrap markMemoryNeedsReindex in safeMarkNeedsReindex helper that swallows
errors when the DB is no longer available (e.g. test teardown after the parent
promise resolved). Prevents fire-and-forget vector upserts from triggering
unhandledRejection in tests.
- memory-store.test.ts: drain setImmediate in afterEach/after hooks so pending
vector upsert tasks settle before DATA_DIR is removed.
- memory-settings.test.ts: extend deepEqual expected shape with the 7 new fields
introduced by plan 21 F5 (embeddingSource, embeddingProviderModel,
transformersEnabled, staticEnabled, rerankEnabled, rerankProviderModel,
vectorStore).
2026-05-28 11:02:25 -03:00
diegosouzapw
6435a3376d
merge(F6): backend REST routes (memory + settings/qdrant)
2026-05-28 11:02:16 -03:00
diegosouzapw
7e0c58b5cb
feat(memory): add F6 backend REST routes for memory engine redesign (plan 21)
...
New routes:
- POST /api/memory/retrieve-preview (dry-run playground)
- GET /api/memory/embedding-providers
- GET /api/memory/engine-status
- POST /api/memory/summarize
- POST /api/memory/reindex
- GET/PUT /api/settings/qdrant
- GET /api/settings/qdrant/health
- POST /api/settings/qdrant/search
- POST /api/settings/qdrant/cleanup
Modified:
- PUT /api/memory/[id] added (Hard Rule #12 sanitize)
- /api/memory/route.ts: Hard Rule #12 fix (sanitizeErrorMessage)
- /api/settings/memory/route.ts: MemorySettingsExtendedSchema (D9 7 new fields)
Tests: 7 integration test files (33 tests total) all passing.
Hard Rules #5 , #7 , #8 , #12 verified.
2026-05-28 10:53:55 -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
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
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
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
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
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
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
diegosouzapw
b9f93a5c07
feat(memory): add migration 073, memoryVec CRUD module, and localDb re-export (plan 21 F2)
...
- 073_memory_vec.sql: creates memory_vec_meta singleton table (active_dim,
embedding_signature, last_reset_at, vec_loaded) and adds needs_reindex column
to memories table with a partial index; idempotent via CREATE IF NOT EXISTS +
INSERT OR IGNORE + migration runner's duplicate-column-name guard
- src/lib/db/memoryVec.ts: implements 6 CRUD functions per §3.8 contract
(getMemoryVecMeta, setMemoryVecMeta, markMemoryNeedsReindex,
markAllMemoriesNeedReindex, getMemoryReindexQueue, countMemoryReindexPending)
- src/lib/localDb.ts: adds re-export block for the 6 functions (Hard Rule #2 )
- .env.example: documents 7 new MEMORY_* env vars per §3.9
- tests/unit/memory-vec-meta.test.ts: 7 tests (meta get/set, migration idempotency)
- tests/unit/memory-needs-reindex.test.ts: 12 tests (mark/unmark, markAll, queue)
2026-05-27 23:16:05 -03:00
diegosouzapw
6236b604ec
feat(memory): add shared foundation types, Zod schemas, and roundtrip tests (plan 21 F1)
...
- src/lib/memory/embedding/types.ts — EmbeddingSource, EmbeddingProviderListing, EmbeddingResolution, EmbeddingResult, EmbeddingError (verbatim §3.1)
- src/shared/schemas/memory.ts — 7 Zod schemas (MemorySettingsExtended, MemoryUpdatePut, RetrievePreview, MemoryReindex, MemorySummarize, EmbeddingProviderListing, MemoryEngineStatus, RetrievePreviewResult) + z.infer types (verbatim §3.2)
- src/shared/schemas/qdrant.ts — 4 Zod schemas (QdrantSettings, QdrantSettingsUpdate, QdrantSearch, QdrantHealthResult) + z.infer types (verbatim §3.3)
- tests/unit/memory-schemas-roundtrip.test.ts — 34 assertions (≥22 required); all pass
2026-05-27 22:54:18 -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