@galaxy-stack/ai-coder-core 0.3.0-alpha.15 → 0.3.0-alpha.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/CHANGELOG.d/2026-09-26-binary-review-pipe-guidance-finalization-test.md +14 -0
  2. package/CHANGELOG.d/2026-09-26-cache-capability-and-mcp-reconnect.md +16 -0
  3. package/CHANGELOG.d/2026-09-26-cache-hit-harness.md +13 -0
  4. package/CHANGELOG.d/2026-09-26-cache-hit-rate-and-inhistory-option.md +12 -0
  5. package/CHANGELOG.d/2026-09-26-cumulative-cache-hit.md +13 -0
  6. package/CHANGELOG.d/2026-09-26-finalization-prefix-and-verified-inhistory.md +12 -0
  7. package/CHANGELOG.d/2026-09-26-generated-state-and-churn-guard.md +17 -0
  8. package/CHANGELOG.d/2026-09-26-mcp-reconnect-fixture.md +11 -0
  9. package/CHANGELOG.d/2026-09-26-memory-hybrid-semantic-consolidation.md +16 -0
  10. package/CHANGELOG.d/2026-09-26-memory-recall-benchmark.md +12 -0
  11. package/CHANGELOG.d/2026-09-26-ollama-cache-usage.md +14 -0
  12. package/CHANGELOG.d/2026-09-26-ollama-embeddings-provider.md +13 -0
  13. package/CHANGELOG.d/2026-09-26-skill-index-signing.md +11 -0
  14. package/CHANGELOG.d/2026-09-26-skill-version-and-marketplace.md +14 -0
  15. package/dist/adapters/node/config/manual-provider-config.d.ts +3 -0
  16. package/dist/adapters/node/config/manual-provider-config.d.ts.map +1 -1
  17. package/dist/adapters/node/config/manual-provider-config.js +4 -0
  18. package/dist/adapters/node/config/manual-provider-config.js.map +1 -1
  19. package/dist/adapters/node/host/node-workspace-evidence-verifier.d.ts.map +1 -1
  20. package/dist/adapters/node/host/node-workspace-evidence-verifier.js +10 -13
  21. package/dist/adapters/node/host/node-workspace-evidence-verifier.js.map +1 -1
  22. package/dist/adapters/node/host/node-workspace-port.d.ts.map +1 -1
  23. package/dist/adapters/node/host/node-workspace-port.js +6 -1
  24. package/dist/adapters/node/host/node-workspace-port.js.map +1 -1
  25. package/dist/adapters/node/host/node-workspace-snapshot.d.ts.map +1 -1
  26. package/dist/adapters/node/host/node-workspace-snapshot.js +5 -15
  27. package/dist/adapters/node/host/node-workspace-snapshot.js.map +1 -1
  28. package/dist/adapters/node/host/workspace-generated-state.d.ts +22 -0
  29. package/dist/adapters/node/host/workspace-generated-state.d.ts.map +1 -0
  30. package/dist/adapters/node/host/workspace-generated-state.js +56 -0
  31. package/dist/adapters/node/host/workspace-generated-state.js.map +1 -0
  32. package/dist/adapters/node/mcp/mcp-client.d.ts +7 -2
  33. package/dist/adapters/node/mcp/mcp-client.d.ts.map +1 -1
  34. package/dist/adapters/node/mcp/mcp-client.js +41 -6
  35. package/dist/adapters/node/mcp/mcp-client.js.map +1 -1
  36. package/dist/adapters/node/memory/ollama-embeddings.d.ts +26 -0
  37. package/dist/adapters/node/memory/ollama-embeddings.d.ts.map +1 -0
  38. package/dist/adapters/node/memory/ollama-embeddings.js +98 -0
  39. package/dist/adapters/node/memory/ollama-embeddings.js.map +1 -0
  40. package/dist/adapters/node/memory/sqlite-memory.d.ts +16 -3
  41. package/dist/adapters/node/memory/sqlite-memory.d.ts.map +1 -1
  42. package/dist/adapters/node/memory/sqlite-memory.js +138 -16
  43. package/dist/adapters/node/memory/sqlite-memory.js.map +1 -1
  44. package/dist/adapters/node/provider/ollama-chat-stream.d.ts.map +1 -1
  45. package/dist/adapters/node/provider/ollama-chat-stream.js +4 -0
  46. package/dist/adapters/node/provider/ollama-chat-stream.js.map +1 -1
  47. package/dist/adapters/node/provider/ollama-coding-model.d.ts +9 -0
  48. package/dist/adapters/node/provider/ollama-coding-model.d.ts.map +1 -1
  49. package/dist/adapters/node/provider/ollama-coding-model.js +18 -0
  50. package/dist/adapters/node/provider/ollama-coding-model.js.map +1 -1
  51. package/dist/adapters/node/skills/directory-skills.d.ts.map +1 -1
  52. package/dist/adapters/node/skills/directory-skills.js +16 -1
  53. package/dist/adapters/node/skills/directory-skills.js.map +1 -1
  54. package/dist/adapters/node/skills/skill-marketplace.d.ts +71 -0
  55. package/dist/adapters/node/skills/skill-marketplace.d.ts.map +1 -0
  56. package/dist/adapters/node/skills/skill-marketplace.js +259 -0
  57. package/dist/adapters/node/skills/skill-marketplace.js.map +1 -0
  58. package/dist/adapters/node/tools/workspace-review.d.ts.map +1 -1
  59. package/dist/adapters/node/tools/workspace-review.js +23 -9
  60. package/dist/adapters/node/tools/workspace-review.js.map +1 -1
  61. package/dist/agent/index.d.ts +17 -0
  62. package/dist/agent/index.d.ts.map +1 -1
  63. package/dist/agent/index.js.map +1 -1
  64. package/dist/context/context-manager.d.ts +4 -1
  65. package/dist/context/context-manager.d.ts.map +1 -1
  66. package/dist/context/context-manager.js +25 -5
  67. package/dist/context/context-manager.js.map +1 -1
  68. package/dist/context/token-ledger.d.ts +9 -0
  69. package/dist/context/token-ledger.d.ts.map +1 -1
  70. package/dist/context/token-ledger.js +8 -0
  71. package/dist/context/token-ledger.js.map +1 -1
  72. package/dist/ports/capability-port.d.ts +8 -0
  73. package/dist/ports/capability-port.d.ts.map +1 -1
  74. package/dist/prompt/prompt-assembler.d.ts +1 -1
  75. package/dist/prompt/prompt-assembler.d.ts.map +1 -1
  76. package/dist/prompt/prompt-assembler.js +6 -4
  77. package/dist/prompt/prompt-assembler.js.map +1 -1
  78. package/dist/runtime/run-controller.d.ts.map +1 -1
  79. package/dist/runtime/run-controller.js +57 -8
  80. package/dist/runtime/run-controller.js.map +1 -1
  81. package/dist/runtime/runtime-types.d.ts +10 -0
  82. package/dist/runtime/runtime-types.d.ts.map +1 -1
  83. package/docs/CACHE_HIT.md +109 -0
  84. package/docs/GALAXY_AGENT_PLATFORM_TODO.md +1 -0
  85. package/docs/SKILL_MARKETPLACE.md +59 -0
  86. package/package.json +2 -2
@@ -0,0 +1,98 @@
1
+ const MAX_RESPONSE_BYTES = 4 * 1024 * 1024;
2
+ const DEFAULT_MAX_BATCH = 16;
3
+ function isLocalhost(baseUrl) {
4
+ try {
5
+ const host = new URL(baseUrl).hostname;
6
+ return host === "localhost" || host === "127.0.0.1" || host === "::1" || host === "[::1]";
7
+ }
8
+ catch {
9
+ return false;
10
+ }
11
+ }
12
+ async function boundedText(response) {
13
+ const reader = response.body?.getReader();
14
+ if (!reader)
15
+ return "";
16
+ const decoder = new TextDecoder("utf-8", { fatal: true });
17
+ let text = "";
18
+ let bytes = 0;
19
+ while (true) {
20
+ const part = await reader.read();
21
+ if (part.done)
22
+ break;
23
+ bytes += part.value.byteLength;
24
+ if (bytes > MAX_RESPONSE_BYTES) {
25
+ await reader.cancel().catch(() => undefined);
26
+ throw new Error("Ollama embedding response exceeded 4 MiB.");
27
+ }
28
+ text += decoder.decode(part.value, { stream: true });
29
+ }
30
+ return text + decoder.decode();
31
+ }
32
+ /**
33
+ * Ollama /api/embed adapter. Capability-gated: the host only mounts it when an
34
+ * embedding model is configured. Credentials are sent to remote endpoints but
35
+ * never to a localhost endpoint.
36
+ */
37
+ export class OllamaEmbeddings {
38
+ options;
39
+ model;
40
+ fetchImpl;
41
+ maxBatch;
42
+ requestTimeoutMs;
43
+ constructor(options) {
44
+ this.options = options;
45
+ if (!options.model.trim())
46
+ throw new Error("An Ollama embedding model id is required.");
47
+ const url = new URL(options.baseUrl);
48
+ if (!["http:", "https:"].includes(url.protocol))
49
+ throw new Error("Ollama embedding base URL must use HTTP or HTTPS.");
50
+ if (url.username || url.password)
51
+ throw new Error("Ollama embedding base URL must not embed credentials.");
52
+ this.model = options.model.trim();
53
+ this.fetchImpl = options.fetch ?? globalThis.fetch;
54
+ this.maxBatch = Math.max(1, Math.min(64, options.maxBatch ?? DEFAULT_MAX_BATCH));
55
+ this.requestTimeoutMs = options.requestTimeoutMs ?? 60_000;
56
+ }
57
+ async embed(texts) {
58
+ const vectors = [];
59
+ for (let start = 0; start < texts.length; start += this.maxBatch) {
60
+ vectors.push(...await this.embedBatch(texts.slice(start, start + this.maxBatch)));
61
+ }
62
+ return vectors;
63
+ }
64
+ async embedBatch(texts) {
65
+ if (texts.length === 0)
66
+ return [];
67
+ const controller = new AbortController();
68
+ const timer = setTimeout(() => controller.abort(new Error("Ollama embedding request timed out.")), this.requestTimeoutMs);
69
+ try {
70
+ const endpoint = new URL("/api/embed", this.options.baseUrl).href;
71
+ const response = await this.fetchImpl(endpoint, {
72
+ method: "POST",
73
+ headers: {
74
+ "Content-Type": "application/json",
75
+ ...(this.options.apiKey && !isLocalhost(this.options.baseUrl) ? { Authorization: `Bearer ${this.options.apiKey}` } : {}),
76
+ },
77
+ body: JSON.stringify({ model: this.model, input: [...texts] }),
78
+ signal: controller.signal,
79
+ });
80
+ const raw = await boundedText(response);
81
+ if (!response.ok)
82
+ throw new Error(`Ollama embedding failed (${response.status}): ${raw.slice(0, 300) || "no body"}`);
83
+ const parsed = JSON.parse(raw);
84
+ if (!Array.isArray(parsed.embeddings) || parsed.embeddings.length !== texts.length)
85
+ throw new Error("Ollama embedding response did not match the input batch.");
86
+ return parsed.embeddings.map((vector) => {
87
+ if (!Array.isArray(vector) || vector.length === 0 || vector.some(value => typeof value !== "number" || !Number.isFinite(value))) {
88
+ throw new Error("Ollama embedding response contained an invalid vector.");
89
+ }
90
+ return vector;
91
+ });
92
+ }
93
+ finally {
94
+ clearTimeout(timer);
95
+ }
96
+ }
97
+ }
98
+ //# sourceMappingURL=ollama-embeddings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ollama-embeddings.js","sourceRoot":"","sources":["../../../../src/adapters/node/memory/ollama-embeddings.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,16 @@
1
- import type { AgentMemoryPort, MemoryRecord } from "../../../agent/index.js";
2
- /** Optional Node >=22.13 adapter. No database or native imports occur from the core root. */
1
+ import type { AgentEmbeddingPort, AgentMemoryConsolidation, AgentMemoryPort, MemoryRecord } from "../../../agent/index.js";
2
+ /**
3
+ * Optional Node >=22.13 adapter. No database or native imports occur from the
4
+ * core root. Ranking is hybrid: lexical (FTS5 bm25) + optional semantic cosine
5
+ * + recency + trust, capability-gated on a host-supplied embedding provider.
6
+ */
3
7
  export declare class SqliteAgentMemory implements AgentMemoryPort {
4
8
  private readonly scope;
5
9
  private readonly db;
6
- constructor(path: string, scope: string);
10
+ private readonly embeddings;
11
+ constructor(path: string, scope: string, options?: {
12
+ embeddings?: AgentEmbeddingPort;
13
+ });
7
14
  search(query: string, options?: {
8
15
  limit?: number;
9
16
  includeCandidates?: boolean;
@@ -17,6 +24,12 @@ export declare class SqliteAgentMemory implements AgentMemoryPort {
17
24
  }): Promise<MemoryRecord>;
18
25
  history(key: string): Promise<readonly MemoryRecord[]>;
19
26
  forget(key: string): Promise<number>;
27
+ consolidate(options?: {
28
+ keepSupersededRevisions?: number;
29
+ }): AgentMemoryConsolidation;
20
30
  close(): void;
31
+ private embedOne;
32
+ private storeEmbedding;
33
+ private loadVectors;
21
34
  }
22
35
  //# sourceMappingURL=sqlite-memory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite-memory.d.ts","sourceRoot":"","sources":["../../../../src/adapters/node/memory/sqlite-memory.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAK7E,6FAA6F;AAC7F,qBAAa,iBAAkB,YAAW,eAAe;IAE7B,OAAO,CAAC,QAAQ,CAAC,KAAK;IADhD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAe;gBACtB,IAAI,EAAE,MAAM,EAAmB,KAAK,EAAE,MAAM;IAgBlD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC;IAQtH,QAAQ,CAAC,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IAmBtJ,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC;IAGtD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAM1C,KAAK,IAAI,IAAI;CACd"}
1
+ {"version":3,"file":"sqlite-memory.d.ts","sourceRoot":"","sources":["../../../../src/adapters/node/memory/sqlite-memory.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAgC3H;;;;GAIG;AACH,qBAAa,iBAAkB,YAAW,eAAe;IAG7B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAFhD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAe;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiC;gBAChD,IAAI,EAAE,MAAM,EAAmB,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,kBAAkB,CAAA;KAAO;IAmBrG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC;IAyCtH,QAAQ,CAAC,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IA0BtJ,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC;IAGtD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAM1C,WAAW,CAAC,OAAO,GAAE;QAAE,uBAAuB,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,wBAAwB;IAazF,KAAK,IAAI,IAAI;YAEC,QAAQ;YAOR,cAAc;IAQ5B,OAAO,CAAC,WAAW;CASpB"}
@@ -5,16 +5,54 @@ import { dirname } from "node:path";
5
5
  function record(row) {
6
6
  return { id: String(row.id), key: String(row.memory_key), scope: String(row.scope), revision: Number(row.revision), content: String(row.content), source: String(row.source), contentHash: String(row.content_hash), status: row.status, trust: row.trust, updatedAt: String(row.updated_at) };
7
7
  }
8
- /** Optional Node >=22.13 adapter. No database or native imports occur from the core root. */
8
+ function encodeVector(vector) {
9
+ const floats = vector instanceof Float32Array ? vector : Float32Array.from(vector);
10
+ return Buffer.from(floats.buffer.slice(0, floats.byteLength));
11
+ }
12
+ function decodeVector(blob) {
13
+ const copy = Uint8Array.from(blob);
14
+ return new Float32Array(copy.buffer, copy.byteOffset, Math.floor(copy.byteLength / 4));
15
+ }
16
+ function cosine(left, right) {
17
+ const length = Math.min(left.length, right.length);
18
+ let dot = 0;
19
+ let normLeft = 0;
20
+ let normRight = 0;
21
+ for (let index = 0; index < length; index += 1) {
22
+ const a = left[index];
23
+ const b = right[index];
24
+ dot += a * b;
25
+ normLeft += a * a;
26
+ normRight += b * b;
27
+ }
28
+ if (normLeft === 0 || normRight === 0)
29
+ return 0;
30
+ return dot / Math.sqrt(normLeft * normRight);
31
+ }
32
+ /** Recency decays over a two-week half-life; listing (no query) leans on it most. */
33
+ function recencyScore(updatedAt, now) {
34
+ const parsed = Date.parse(updatedAt);
35
+ if (!Number.isFinite(parsed))
36
+ return 0;
37
+ const ageDays = Math.max(0, (now - parsed) / 86_400_000);
38
+ return 1 / (1 + ageDays / 14);
39
+ }
40
+ /**
41
+ * Optional Node >=22.13 adapter. No database or native imports occur from the
42
+ * core root. Ranking is hybrid: lexical (FTS5 bm25) + optional semantic cosine
43
+ * + recency + trust, capability-gated on a host-supplied embedding provider.
44
+ */
9
45
  export class SqliteAgentMemory {
10
46
  scope;
11
47
  db;
12
- constructor(path, scope) {
48
+ embeddings;
49
+ constructor(path, scope, options = {}) {
13
50
  this.scope = scope;
14
51
  if (!scope || scope.length > 1024)
15
52
  throw new Error("A bounded host-owned memory scope is required.");
16
53
  if (path !== ":memory:")
17
54
  mkdirSync(dirname(path), { recursive: true, mode: 0o700 });
55
+ this.embeddings = options.embeddings;
18
56
  this.db = new DatabaseSync(path);
19
57
  if (path !== ":memory:")
20
58
  chmodSync(path, 0o600);
@@ -25,18 +63,53 @@ export class SqliteAgentMemory {
25
63
  content TEXT NOT NULL, source TEXT NOT NULL, content_hash TEXT NOT NULL, status TEXT NOT NULL, trust TEXT NOT NULL, updated_at TEXT NOT NULL,
26
64
  UNIQUE(scope,memory_key,revision));
27
65
  CREATE VIRTUAL TABLE IF NOT EXISTS memory_search USING fts5(id UNINDEXED, content, tokenize='unicode61');
66
+ CREATE TABLE IF NOT EXISTS memory_embeddings(memory_id TEXT PRIMARY KEY, model TEXT NOT NULL, dims INTEGER NOT NULL, vector BLOB NOT NULL);
28
67
  CREATE TRIGGER IF NOT EXISTS memory_insert AFTER INSERT ON memories BEGIN INSERT INTO memory_search VALUES(new.id,new.content); END;
29
68
  CREATE TRIGGER IF NOT EXISTS memory_delete AFTER DELETE ON memories BEGIN DELETE FROM memory_search WHERE id=old.id; END;
69
+ CREATE TRIGGER IF NOT EXISTS memory_delete_embeddings AFTER DELETE ON memories BEGIN DELETE FROM memory_embeddings WHERE memory_id=old.id; END;
30
70
  CREATE INDEX IF NOT EXISTS memory_scope ON memories(scope,status,memory_key);`);
31
71
  }
32
72
  async search(query, options = {}) {
33
73
  const limit = Math.max(1, Math.min(50, Math.floor(options.limit ?? 8)));
34
74
  const tokens = query.match(/[\p{L}\p{N}_]+/gu)?.slice(0, 24) ?? [];
35
75
  const trust = options.includeCandidates ? "" : " AND m.trust='confirmed'";
36
- if (!tokens.length)
37
- return this.db.prepare(`SELECT m.* FROM memories m WHERE m.scope=? AND m.status='active'${trust} ORDER BY updated_at DESC LIMIT ?`).all(this.scope, limit).map(record);
38
- const match = tokens.map(t => `"${t}"`).join(" OR ");
39
- return this.db.prepare(`SELECT m.* FROM memory_search f JOIN memories m ON m.id=f.id WHERE memory_search MATCH ? AND m.scope=? AND m.status='active'${trust} ORDER BY bm25(memory_search),m.updated_at DESC LIMIT ?`).all(match, this.scope, limit).map(record);
76
+ const pool = Math.max(limit * 8, 64);
77
+ let rows = [];
78
+ if (tokens.length) {
79
+ const match = tokens.map(token => `"${token}"`).join(" OR ");
80
+ rows = this.db.prepare(`SELECT m.*, bm25(memory_search) AS rank FROM memory_search f JOIN memories m ON m.id=f.id WHERE memory_search MATCH ? AND m.scope=? AND m.status='active'${trust} ORDER BY bm25(memory_search),m.updated_at DESC LIMIT ?`)
81
+ .all(match, this.scope, pool);
82
+ }
83
+ // No lexical hits (or a bare listing): fall back to recent active notes so
84
+ // semantic ranking can still surface the right record.
85
+ if (rows.length === 0 && (tokens.length === 0 || this.embeddings !== undefined)) {
86
+ rows = this.db.prepare(`SELECT m.*, 0 AS rank FROM memories m WHERE m.scope=? AND m.status='active'${trust} ORDER BY m.updated_at DESC LIMIT ?`)
87
+ .all(this.scope, pool);
88
+ }
89
+ if (rows.length === 0)
90
+ return [];
91
+ const now = Date.now();
92
+ const queryVector = this.embeddings && tokens.length ? await this.embedOne(query) : undefined;
93
+ const vectors = this.loadVectors(rows.map(row => String(row.id)));
94
+ const strengths = rows.map(row => Math.max(0, -Number(row.rank ?? 0)));
95
+ const maxStrength = Math.max(0, ...strengths);
96
+ const scored = rows.map((row, index) => {
97
+ const lexical = maxStrength > 0 ? strengths[index] / maxStrength : 0;
98
+ const vector = vectors.get(String(row.id));
99
+ const semantic = queryVector && vector ? Math.max(0, cosine(queryVector, vector)) : 0;
100
+ const recency = recencyScore(String(row.updated_at), now);
101
+ const trustScore = row.trust === "confirmed" ? 1 : 0.5;
102
+ const score = queryVector
103
+ ? 0.35 * lexical + 0.4 * semantic + 0.15 * recency + 0.1 * trustScore
104
+ : tokens.length
105
+ ? 0.6 * lexical + 0.25 * recency + 0.15 * trustScore
106
+ : 0.7 * recency + 0.3 * trustScore;
107
+ return { row, score };
108
+ });
109
+ scored.sort((left, right) => right.score - left.score
110
+ || String(right.row.updated_at).localeCompare(String(left.row.updated_at))
111
+ || String(left.row.id).localeCompare(String(right.row.id)));
112
+ return scored.slice(0, limit).map(entry => record(entry.row));
40
113
  }
41
114
  async remember(input) {
42
115
  if (!input.key.trim() || input.key.length > 256 || !input.content.trim() || input.content.length > 16000 || !input.source.trim() || input.source.length > 2048)
@@ -46,28 +119,32 @@ export class SqliteAgentMemory {
46
119
  throw new Error("Invalid memory trust.");
47
120
  const hash = createHash("sha256").update(input.content).digest("hex");
48
121
  this.db.exec("BEGIN IMMEDIATE");
122
+ let stored;
49
123
  try {
50
124
  const previous = this.db.prepare("SELECT * FROM memories WHERE scope=? AND memory_key=? AND status='active'").get(this.scope, input.key);
51
125
  if (input.expectedRevision !== undefined && input.expectedRevision !== Number(previous?.revision ?? 0))
52
126
  throw new Error("Memory revision conflict.");
53
127
  if (previous?.content_hash === hash && previous.source === input.source && previous.trust === trust) {
54
128
  this.db.exec("COMMIT");
55
- return record(previous);
129
+ stored = record(previous);
130
+ }
131
+ else {
132
+ // A generated candidate cannot silently supersede an explicitly confirmed note.
133
+ if (previous?.trust === "confirmed" && trust === "candidate")
134
+ throw new Error("A candidate cannot replace a confirmed memory; choose a new key.");
135
+ this.db.prepare("UPDATE memories SET status='superseded' WHERE scope=? AND memory_key=?").run(this.scope, input.key);
136
+ const id = randomUUID();
137
+ this.db.prepare("INSERT INTO memories VALUES(?,?,?,?,?,?,?,?,?,?)").run(id, this.scope, input.key, Number(previous?.revision ?? 0) + 1, input.content, input.source, hash, "active", trust, new Date().toISOString());
138
+ stored = record(this.db.prepare("SELECT * FROM memories WHERE id=?").get(id));
139
+ this.db.exec("COMMIT");
56
140
  }
57
- // A generated candidate cannot silently supersede an explicitly confirmed note.
58
- if (previous?.trust === "confirmed" && trust === "candidate")
59
- throw new Error("A candidate cannot replace a confirmed memory; choose a new key.");
60
- this.db.prepare("UPDATE memories SET status='superseded' WHERE scope=? AND memory_key=?").run(this.scope, input.key);
61
- const id = randomUUID();
62
- this.db.prepare("INSERT INTO memories VALUES(?,?,?,?,?,?,?,?,?,?)").run(id, this.scope, input.key, Number(previous?.revision ?? 0) + 1, input.content, input.source, hash, "active", trust, new Date().toISOString());
63
- const next = record(this.db.prepare("SELECT * FROM memories WHERE id=?").get(id));
64
- this.db.exec("COMMIT");
65
- return next;
66
141
  }
67
142
  catch (error) {
68
143
  this.db.exec("ROLLBACK");
69
144
  throw error;
70
145
  }
146
+ await this.storeEmbedding(stored.id, stored.content);
147
+ return stored;
71
148
  }
72
149
  async history(key) {
73
150
  return this.db.prepare("SELECT * FROM memories WHERE scope=? AND memory_key=? ORDER BY revision").all(this.scope, key).map(record);
@@ -78,6 +155,51 @@ export class SqliteAgentMemory {
78
155
  this.db.exec("PRAGMA wal_checkpoint(TRUNCATE)");
79
156
  return Number(result.changes);
80
157
  }
158
+ consolidate(options = {}) {
159
+ const keep = Math.max(0, Math.min(100, Math.floor(options.keepSupersededRevisions ?? 5)));
160
+ const removedSuperseded = Number(this.db.prepare(`DELETE FROM memories WHERE status='superseded' AND id NOT IN (
161
+ SELECT id FROM (
162
+ SELECT id, ROW_NUMBER() OVER (PARTITION BY scope, memory_key ORDER BY revision DESC) AS position
163
+ FROM memories WHERE status='superseded'
164
+ ) WHERE position <= ?
165
+ )`).run(keep).changes);
166
+ const removedOrphanEmbeddings = Number(this.db.prepare("DELETE FROM memory_embeddings WHERE memory_id NOT IN (SELECT id FROM memories)").run().changes);
167
+ this.db.exec("PRAGMA wal_checkpoint(TRUNCATE)");
168
+ return { removedOrphanEmbeddings, removedSuperseded };
169
+ }
81
170
  close() { this.db.close(); }
171
+ async embedOne(text) {
172
+ if (!this.embeddings)
173
+ return undefined;
174
+ try {
175
+ const [vector] = await this.embeddings.embed([text]);
176
+ return vector && vector.length > 0 ? Float32Array.from(vector) : undefined;
177
+ }
178
+ catch {
179
+ return undefined;
180
+ }
181
+ }
182
+ async storeEmbedding(memoryId, content) {
183
+ if (!this.embeddings)
184
+ return;
185
+ const existing = this.db.prepare("SELECT dims FROM memory_embeddings WHERE memory_id=? AND model=?").get(memoryId, this.embeddings.model);
186
+ if (existing)
187
+ return;
188
+ const vector = await this.embedOne(content);
189
+ if (!vector)
190
+ return;
191
+ this.db.prepare("INSERT OR REPLACE INTO memory_embeddings(memory_id, model, dims, vector) VALUES(?,?,?,?)").run(memoryId, this.embeddings.model, vector.length, encodeVector(vector));
192
+ }
193
+ loadVectors(ids) {
194
+ const vectors = new Map();
195
+ if (!this.embeddings || ids.length === 0)
196
+ return vectors;
197
+ const placeholders = ids.map(() => "?").join(",");
198
+ const rows = this.db.prepare(`SELECT memory_id, vector FROM memory_embeddings WHERE model=? AND memory_id IN (${placeholders})`)
199
+ .all(this.embeddings.model, ...ids);
200
+ for (const row of rows)
201
+ vectors.set(String(row.memory_id), decodeVector(row.vector));
202
+ return vectors;
203
+ }
82
204
  }
83
205
  //# sourceMappingURL=sqlite-memory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite-memory.js","sourceRoot":"","sources":["../../../../src/adapters/node/memory/sqlite-memory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sqlite-memory.js","sourceRoot":"","sources":["../../../../src/adapters/node/memory/sqlite-memory.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ollama-chat-stream.d.ts","sourceRoot":"","sources":["../../../../src/adapters/node/provider/ollama-chat-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,aAAa,EACnB,MAAM,yBAAyB,CAAC;AAIjC,eAAO,MAAM,6BAA6B,EAAE,aAK1C,CAAC;AAEH,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAClC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AA4BD,0EAA0E;AAC1E,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,0BAA0B;;qBAWpD,OAAO,KAAG,SAAS,gBAAgB,EAAE;;cAqHjD,SAAS,gBAAgB,EAAE;EAMxC;AAED,wFAAwF;AACxF,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,EAAE,OAAO,EAAE,0BAA0B,GAAG,SAAS,gBAAgB,EAAE,CAStI"}
1
+ {"version":3,"file":"ollama-chat-stream.d.ts","sourceRoot":"","sources":["../../../../src/adapters/node/provider/ollama-chat-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,aAAa,EACnB,MAAM,yBAAyB,CAAC;AAIjC,eAAO,MAAM,6BAA6B,EAAE,aAK1C,CAAC;AAEH,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAClC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AA4BD,0EAA0E;AAC1E,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,0BAA0B;;qBAWpD,OAAO,KAAG,SAAS,gBAAgB,EAAE;;cAyHjD,SAAS,gBAAgB,EAAE;EAMxC;AAED,wFAAwF;AACxF,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,EAAE,OAAO,EAAE,0BAA0B,GAAG,SAAS,gBAAgB,EAAE,CAStI"}
@@ -108,9 +108,13 @@ export function createOllamaChatNormalizer(options) {
108
108
  terminalSeen = true;
109
109
  const inputTokens = nonNegativeInteger(rawChunk.prompt_eval_count);
110
110
  const outputTokens = nonNegativeInteger(rawChunk.eval_count);
111
+ // Ollama >= 0.34 reports prefix-cache reuse as prompt_eval_cached_count;
112
+ // the OpenAI-compatible /v1 path reports prompt_tokens_details.cached_tokens.
113
+ const cachedInputTokens = nonNegativeInteger(rawChunk.prompt_eval_cached_count);
111
114
  const usage = Object.freeze({
112
115
  ...(inputTokens === undefined ? {} : { inputTokens }),
113
116
  ...(outputTokens === undefined ? {} : { outputTokens }),
117
+ ...(cachedInputTokens === undefined ? {} : { cachedInputTokens }),
114
118
  ...(inputTokens === undefined || outputTokens === undefined ? {} : { totalTokens: inputTokens + outputTokens }),
115
119
  });
116
120
  if (Object.keys(usage).length > 0)
@@ -1 +1 @@
1
- {"version":3,"file":"ollama-chat-stream.js","sourceRoot":"","sources":["../../../../src/adapters/node/provider/ollama-chat-stream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ollama-chat-stream.js","sourceRoot":"","sources":["../../../../src/adapters/node/provider/ollama-chat-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,GAGpB,MAAM,yBAAyB,CAAC;AAIjC,MAAM,CAAC,MAAM,6BAA6B,GAAkB,MAAM,CAAC,MAAM,CAAC;IACxE,OAAO,EAAE,oBAAoB;IAC7B,KAAK,EAAE,qBAAqB;IAC5B,QAAQ,EAAE,QAAQ;IAClB,cAAc,EAAE,oBAAoB;CACrC,CAAC,CAAC;AAQH,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,OAAO,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACvF,CAAC;AAED,SAAS,SAAS,CAChB,OAAe,EACf,SAAS,GAAG,KAAK,EACjB,YAA8C,cAAc;IAE5D,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,IAAI,mBAAmB,CAAC,kBAAkB,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC;KAClF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,OAAmB,EAAE,IAA4B;IAClE,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACnC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,oBAAoB,CAAC,CAAC;IAC3F,OAAO,KAAK,CAAC;AACf,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,0BAA0B,CAAC,OAAmC;IAC5E,MAAM,OAAO,GAAuB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IACzE,IAAI,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;IACjD,IAAI,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,oDAAoD,CAAC,CAAC,CAAC;IAC1F,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,6BAA6B,CAAC;IACnE,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,IAAI,GAAG,CAAC,QAAiB,EAA+B,EAAE;QAC9D,IAAI,MAAM;YAAE,OAAO,EAAE,CAAC;QACtB,MAAM,MAAM,GAAuB,EAAE,CAAC;QACtC,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,IAAI,YAAY;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,UAAU,GAAG,CAAC,mBAAmB,CAAC,CAAC;YAC7F,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,UAAU,GAAG,CAAC,qBAAqB,CAAC,CAAC;YAC9F,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3E,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;oBACxB,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,IAAI,mBAAmB,CAAC,gBAAgB,EAAE,yBAAyB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC;iBAChH,CAAC,CAAC,CAAC;gBACJ,MAAM,GAAG,IAAI,CAAC;gBACd,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC/B,CAAC;YACD,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC;YACtC,IAAI,YAAY,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC1D,MAAM,IAAI,KAAK,CAAC,gBAAgB,UAAU,GAAG,CAAC,6BAA6B,CAAC,CAAC;YAC/E,CAAC;YACD,MAAM,OAAO,GAAe,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC9D,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC/D,MAAM,IAAI,KAAK,CAAC,gBAAgB,UAAU,GAAG,CAAC,oCAAoC,CAAC,CAAC;YACtF,CAAC;YAED,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YACrD,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YACnD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,QAAQ,IAAI,aAAa,CAAC;gBAC1B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;YACzE,CAAC;YACD,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,OAAO,IAAI,YAAY,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;YACvE,CAAC;YAED,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;YACxC,IAAI,YAAY,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC/D,MAAM,IAAI,KAAK,CAAC,gBAAgB,UAAU,GAAG,CAAC,uCAAuC,CAAC,CAAC;YACzF,CAAC;YACD,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;gBAClE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACtD,MAAM,IAAI,KAAK,CAAC,gBAAgB,UAAU,GAAG,CAAC,cAAc,SAAS,GAAG,CAAC,cAAc,CAAC,CAAC;gBAC3F,CAAC;gBACD,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACnC,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAClD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;oBACtF,MAAM,IAAI,KAAK,CAAC,gBAAgB,UAAU,GAAG,CAAC,cAAc,SAAS,GAAG,CAAC,wCAAwC,CAAC,CAAC;gBACrH,CAAC;gBACD,MAAM,UAAU,GAAG,OAAO,OAAO,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC3G,MAAM,UAAU,GAAG,UAAU,KAAK,SAAS;oBACzC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,SAAS,aAAa,GAAG,CAAC,EAAE;oBAChD,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,aAAa,UAAU,EAAE,CAAC;gBAChD,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,UAAU,IAAI,CAAC,CAAC;gBAC5F,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBACxB,aAAa,IAAI,CAAC,CAAC;gBACnB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;oBACxB,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,cAAc,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;iBAC3F,CAAC,CAAC,CAAC;YACN,CAAC;YAED,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACtE,MAAM,IAAI,KAAK,CAAC,gBAAgB,UAAU,GAAG,CAAC,0BAA0B,CAAC,CAAC;YAC5E,CAAC;YACD,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI;gBAAE,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACzD,YAAY,GAAG,IAAI,CAAC;YAEpB,MAAM,WAAW,GAAG,kBAAkB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;YACnE,MAAM,YAAY,GAAG,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC7D,yEAAyE;YACzE,8EAA8E;YAC9E,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC;YAChF,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;gBAC1B,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;gBACrD,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;gBACvD,GAAG,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC;gBACjE,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,GAAG,YAAY,EAAE,CAAC;aAChH,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YAExF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;gBACvD,MAAM,WAAW,GAAG;oBAClB,eAAe,IAAI,CAAC,SAAS,CAAC,OAAO,QAAQ,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE;oBACzH,cAAc,YAAY,IAAI,SAAS,EAAE;oBACzC,+BAA+B,OAAO,CAAC,wBAAwB,IAAI,SAAS,EAAE;oBAC9E,uBAAuB,QAAQ,CAAC,MAAM,EAAE;iBACzC,CAAC;gBACF,MAAM,qBAAqB,GAAG,YAAY,KAAK,SAAS;uBACnD,OAAO,CAAC,wBAAwB,KAAK,SAAS;uBAC9C,YAAY,IAAI,OAAO,CAAC,wBAAwB,CAAC;gBACtD,MAAM,CAAC,IAAI,CAAC,SAAS,CACnB;oBACE,qHAAqH;oBACrH,yBAAyB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;oBAClD,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,uGAAuG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC5I,CAAC,IAAI,CAAC,GAAG,CAAC,EACX,IAAI,EACJ,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc,CACjE,CAAC,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC;gBACd,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC/B,CAAC;YACD,MAAM,UAAU,GAAG,OAAO,QAAQ,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YACxF,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;gBACxB,IAAI,EAAE,MAAM;gBACZ,OAAO;gBACP,QAAQ;gBACR,QAAQ;gBACR,UAAU,EAAE,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;gBACnI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;aACtD,CAAC,CAAC,CAAC;QACN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,IAAI,CAAC;YACd,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC,CAAC;IACF,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;QAC/B,IAAI;QACJ,IAAI,MAAM,KAAK,OAAO,MAAM,CAAC,CAAC,CAAC;QAC/B,MAAM;YACJ,IAAI,MAAM,IAAI,YAAY;gBAAE,OAAO,EAAE,CAAC;YACtC,MAAM,GAAG,IAAI,CAAC;YACd,OAAO,CAAC,SAAS,CAAC,qDAAqD,EAAE,IAAI,CAAC,CAAC,CAAC;QAClF,CAAC;KACF,CAAC;AACJ,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,yBAAyB,CAAC,MAA0B,EAAE,OAAmC;IACvG,MAAM,UAAU,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACvC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACvC,IAAI,UAAU,CAAC,MAAM;YAAE,MAAM;IAC/B,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IACpC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC"}
@@ -8,7 +8,14 @@ export interface OllamaCodingModelOptions {
8
8
  readonly requestTimeoutMs?: number;
9
9
  /** Provider-owned control; named effort levels are only supported by some Ollama models. */
10
10
  readonly thinking?: boolean | "low" | "medium" | "high";
11
+ /**
12
+ * Set to "in-history" only when the model's chat template has been verified to
13
+ * read a later system message as the effective prompt (append instead of
14
+ * rewriting the leading system message keeps the prefix cache warm).
15
+ */
16
+ readonly systemPromptUpdate?: "in-place" | "in-history" | "unknown";
11
17
  }
18
+ export declare function verifiedSystemPromptUpdate(model: string): "in-history" | "unknown";
12
19
  export interface OllamaModelDiagnostics {
13
20
  readonly chatRequests: number;
14
21
  readonly normalizedEvents: number;
@@ -58,9 +65,11 @@ export declare class OllamaCodingModel implements CodingModelAdapter {
58
65
  }>;
59
66
  parallelToolCalling: import("../../../ports/capability-port.js").CapabilityState;
60
67
  preserveThinking: import("../../../ports/capability-port.js").CapabilityState;
68
+ promptCache?: import("../../../ports/capability-port.js").CapabilityState;
61
69
  streaming: import("../../../ports/capability-port.js").CapabilityState;
62
70
  structuredOutput: import("../../../ports/capability-port.js").CapabilityState;
63
71
  supportedImageMimeTypes?: readonly string[];
72
+ systemPromptUpdate?: "in-place" | "in-history" | "unknown";
64
73
  thinking: import("../../../ports/capability-port.js").ThinkingCapability;
65
74
  tokenCounting: import("../../../ports/capability-port.js").CapabilityState;
66
75
  toolCalling: import("../../../ports/capability-port.js").CapabilityState;
@@ -1 +1 @@
1
- {"version":3,"file":"ollama-coding-model.d.ts","sourceRoot":"","sources":["../../../../src/adapters/node/provider/ollama-coding-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EAGvB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACzB,MAAM,yBAAyB,CAAC;AAMjC,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAiBvF,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,4FAA4F;IAC5F,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CACzD;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AA+KD,qBAAa,iBAAkB,YAAW,kBAAkB;IAa9C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAZpC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,cAAc,CAAK;IAG3B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAgB;gBAEpB,OAAO,EAAE,wBAAwB;IAc9D,IAAI,WAAW,IAAI,sBAAsB,CAOxC;IAED,OAAO,CAAC,OAAO;YAOD,OAAO;IAiDf,YAAY,CAAC,OAAO,EAAE,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAyEzC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,mBAAmB;;;;;;;;;;;;;;;;;IAMhG,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,mBAAmB,GAAG,aAAa,CAAC,gBAAgB,CAAC;CAgG/G"}
1
+ {"version":3,"file":"ollama-coding-model.d.ts","sourceRoot":"","sources":["../../../../src/adapters/node/provider/ollama-coding-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EAGvB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACzB,MAAM,yBAAyB,CAAC;AAMjC,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAiBvF,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,4FAA4F;IAC5F,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACxD;;;;OAIG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,UAAU,GAAG,YAAY,GAAG,SAAS,CAAC;CACrE;AAYD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAElF;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AA+KD,qBAAa,iBAAkB,YAAW,kBAAkB;IAa9C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAZpC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,cAAc,CAAK;IAG3B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAgB;gBAEpB,OAAO,EAAE,wBAAwB;IAc9D,IAAI,WAAW,IAAI,sBAAsB,CAOxC;IAED,OAAO,CAAC,OAAO;YAOD,OAAO;IAiDf,YAAY,CAAC,OAAO,EAAE,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA8EzC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,mBAAmB;;;;;;;;;;;;;;;;;IAMhG,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,mBAAmB,GAAG,aAAa,CAAC,gBAAgB,CAAC;CAgG/G"}
@@ -10,6 +10,19 @@ const RETRYABLE_TRANSPORT_CAUSES = new Set([
10
10
  "ETIMEDOUT",
11
11
  "EAI_AGAIN",
12
12
  ]);
13
+ /**
14
+ * Ollama models whose chat template has been probed to read a later system
15
+ * message as the effective prompt (see docs/CACHE_HIT.md). Only add a model
16
+ * after running the code-word probe against it; anything unmatched stays
17
+ * in-place. An explicit systemPromptUpdate option always wins.
18
+ */
19
+ const VERIFIED_IN_HISTORY_MODELS = Object.freeze([
20
+ /(?:^|\/)gemma3(?=[:/]|$)/i,
21
+ /(?:^|\/)deepseek-v4\.1-flash(?=[:/]|$)/i,
22
+ ]);
23
+ export function verifiedSystemPromptUpdate(model) {
24
+ return VERIFIED_IN_HISTORY_MODELS.some((pattern) => pattern.test(model)) ? "in-history" : "unknown";
25
+ }
13
26
  function isObject(value) {
14
27
  return typeof value === "object" && value !== null && !Array.isArray(value);
15
28
  }
@@ -335,10 +348,15 @@ export class OllamaCodingModel {
335
348
  output: Object.freeze({ text: "supported", image: "unknown" }),
336
349
  parallelToolCalling: toolCalling === "supported" ? "supported" : "unknown",
337
350
  preserveThinking: thinking === "optional" || thinking === "required" ? "supported" : "unknown",
351
+ // Ollama >= 0.34 reports prefix reuse (prompt_eval_cached_count), so the
352
+ // runtime may keep a stable finalization prefix. In-history system-message
353
+ // semantics still depend on the model template and stay opt-in.
354
+ promptCache: "supported",
338
355
  streaming: "supported",
339
356
  // Ollama Cloud does not currently support structured outputs. A local
340
357
  // model advertising the standard API can still use the format field.
341
358
  structuredOutput: cloudModel ? "unknown" : "supported",
359
+ systemPromptUpdate: this.options.systemPromptUpdate ?? verifiedSystemPromptUpdate(this.options.model),
342
360
  thinking,
343
361
  tokenCounting: "unsupported",
344
362
  toolCalling,