@monoes/monomindcli 2.16.12 → 2.16.13
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.
- package/.claude/agents/core/coder.md +1 -1
- package/.claude/agents/engineering/engineering-devops-automator.md +1 -1
- package/.claude/agents/github/repo-architect.md +1 -1
- package/.claude/agents/testing/production-validator.md +1 -1
- package/.claude/agents/testing/testing-tool-evaluator.md +1 -1
- package/.claude/commands/github/pr-manager.md +1 -1
- package/.claude/helpers/pick-rank.cjs +34 -4
- package/.claude/skills/monolean-audit/SKILL.md +1 -1
- package/dist/src/commands/cleanup-data.d.ts +30 -0
- package/dist/src/commands/cleanup-data.d.ts.map +1 -0
- package/dist/src/commands/cleanup-data.js +138 -0
- package/dist/src/commands/cleanup-data.js.map +1 -0
- package/dist/src/commands/cleanup-scratch.d.ts +43 -0
- package/dist/src/commands/cleanup-scratch.d.ts.map +1 -0
- package/dist/src/commands/cleanup-scratch.js +125 -0
- package/dist/src/commands/cleanup-scratch.js.map +1 -0
- package/dist/src/commands/cleanup.d.ts +2 -39
- package/dist/src/commands/cleanup.d.ts.map +1 -1
- package/dist/src/commands/cleanup.js +5 -247
- package/dist/src/commands/cleanup.js.map +1 -1
- package/dist/src/commands/doctor-gitignore-checks.d.ts +10 -0
- package/dist/src/commands/doctor-gitignore-checks.d.ts.map +1 -0
- package/dist/src/commands/doctor-gitignore-checks.js +141 -0
- package/dist/src/commands/doctor-gitignore-checks.js.map +1 -0
- package/dist/src/commands/doctor-helpers-checks.d.ts +10 -0
- package/dist/src/commands/doctor-helpers-checks.d.ts.map +1 -0
- package/dist/src/commands/doctor-helpers-checks.js +292 -0
- package/dist/src/commands/doctor-helpers-checks.js.map +1 -0
- package/dist/src/commands/doctor-memory-checks.d.ts +47 -0
- package/dist/src/commands/doctor-memory-checks.d.ts.map +1 -0
- package/dist/src/commands/doctor-memory-checks.js +298 -0
- package/dist/src/commands/doctor-memory-checks.js.map +1 -0
- package/dist/src/commands/doctor-monograph-checks.d.ts +9 -0
- package/dist/src/commands/doctor-monograph-checks.d.ts.map +1 -0
- package/dist/src/commands/doctor-monograph-checks.js +331 -0
- package/dist/src/commands/doctor-monograph-checks.js.map +1 -0
- package/dist/src/commands/doctor-project-checks.d.ts +7 -66
- package/dist/src/commands/doctor-project-checks.d.ts.map +1 -1
- package/dist/src/commands/doctor-project-checks.js +10 -1331
- package/dist/src/commands/doctor-project-checks.js.map +1 -1
- package/dist/src/commands/doctor-routing-checks.d.ts +10 -0
- package/dist/src/commands/doctor-routing-checks.d.ts.map +1 -0
- package/dist/src/commands/doctor-routing-checks.js +194 -0
- package/dist/src/commands/doctor-routing-checks.js.map +1 -0
- package/dist/src/commands/doctor-worker-checks.d.ts +17 -0
- package/dist/src/commands/doctor-worker-checks.d.ts.map +1 -0
- package/dist/src/commands/doctor-worker-checks.js +122 -0
- package/dist/src/commands/doctor-worker-checks.js.map +1 -0
- package/dist/src/commands/hooks-routing-commands.js +1 -1
- package/dist/src/commands/hooks-routing-commands.js.map +1 -1
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +6 -15
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/index.js +2 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/init/never-commit.d.ts +3 -3
- package/dist/src/init/types.d.ts +1 -1
- package/dist/src/init/types.js +1 -1
- package/dist/src/knowledge/document-store.js +1 -1
- package/dist/src/knowledge/document-store.js.map +1 -1
- package/dist/src/mcp-tools/hooks-edit-command.d.ts +10 -0
- package/dist/src/mcp-tools/hooks-edit-command.d.ts.map +1 -0
- package/dist/src/mcp-tools/hooks-edit-command.js +247 -0
- package/dist/src/mcp-tools/hooks-edit-command.js.map +1 -0
- package/dist/src/mcp-tools/hooks-learning.d.ts +9 -0
- package/dist/src/mcp-tools/hooks-learning.d.ts.map +1 -0
- package/dist/src/mcp-tools/hooks-learning.js +408 -0
- package/dist/src/mcp-tools/hooks-learning.js.map +1 -0
- package/dist/src/mcp-tools/hooks-metrics-list.d.ts +8 -0
- package/dist/src/mcp-tools/hooks-metrics-list.d.ts.map +1 -0
- package/dist/src/mcp-tools/hooks-metrics-list.js +205 -0
- package/dist/src/mcp-tools/hooks-metrics-list.js.map +1 -0
- package/dist/src/mcp-tools/hooks-route.d.ts +12 -0
- package/dist/src/mcp-tools/hooks-route.d.ts.map +1 -0
- package/dist/src/mcp-tools/hooks-route.js +251 -0
- package/dist/src/mcp-tools/hooks-route.js.map +1 -0
- package/dist/src/mcp-tools/hooks-routing.d.ts +6 -27
- package/dist/src/mcp-tools/hooks-routing.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-routing.js +6 -1727
- package/dist/src/mcp-tools/hooks-routing.js.map +1 -1
- package/dist/src/mcp-tools/hooks-session.d.ts +9 -0
- package/dist/src/mcp-tools/hooks-session.d.ts.map +1 -0
- package/dist/src/mcp-tools/hooks-session.js +243 -0
- package/dist/src/mcp-tools/hooks-session.js.map +1 -0
- package/dist/src/mcp-tools/hooks-task.d.ts +17 -0
- package/dist/src/mcp-tools/hooks-task.d.ts.map +1 -0
- package/dist/src/mcp-tools/hooks-task.js +427 -0
- package/dist/src/mcp-tools/hooks-task.js.map +1 -0
- package/dist/src/mcp-tools/hooks-tools.d.ts +2 -1
- package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-tools.js +2 -1
- package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
- package/dist/src/mcp-tools/memory-tools.js +1 -1
- package/dist/src/mcp-tools/memory-tools.js.map +1 -1
- package/dist/src/memory/bm25-index.d.ts +2 -2
- package/dist/src/memory/bm25-index.js +2 -2
- package/dist/src/memory/embedding-operations.js +2 -2
- package/dist/src/memory/embedding-operations.js.map +1 -1
- package/dist/src/memory/entity-name-key.d.ts +1 -1
- package/dist/src/memory/entity-name-key.js +1 -1
- package/dist/src/memory/hnsw-operations.d.ts +1 -1
- package/dist/src/memory/hnsw-operations.js +1 -1
- package/dist/src/memory/memory-bridge-backend.d.ts +43 -0
- package/dist/src/memory/memory-bridge-backend.d.ts.map +1 -0
- package/dist/src/memory/memory-bridge-backend.js +363 -0
- package/dist/src/memory/memory-bridge-backend.js.map +1 -0
- package/dist/src/memory/memory-bridge-core.d.ts +42 -0
- package/dist/src/memory/memory-bridge-core.d.ts.map +1 -0
- package/dist/src/memory/memory-bridge-core.js +126 -0
- package/dist/src/memory/memory-bridge-core.js.map +1 -0
- package/dist/src/memory/memory-bridge-entries.d.ts +131 -0
- package/dist/src/memory/memory-bridge-entries.d.ts.map +1 -0
- package/dist/src/memory/memory-bridge-entries.js +227 -0
- package/dist/src/memory/memory-bridge-entries.js.map +1 -0
- package/dist/src/memory/memory-bridge-feedback.d.ts +60 -0
- package/dist/src/memory/memory-bridge-feedback.d.ts.map +1 -0
- package/dist/src/memory/memory-bridge-feedback.js +118 -0
- package/dist/src/memory/memory-bridge-feedback.js.map +1 -0
- package/dist/src/memory/memory-bridge-paths.d.ts +123 -0
- package/dist/src/memory/memory-bridge-paths.d.ts.map +1 -0
- package/dist/src/memory/memory-bridge-paths.js +335 -0
- package/dist/src/memory/memory-bridge-paths.js.map +1 -0
- package/dist/src/memory/memory-bridge-search.d.ts +48 -0
- package/dist/src/memory/memory-bridge-search.d.ts.map +1 -0
- package/dist/src/memory/memory-bridge-search.js +383 -0
- package/dist/src/memory/memory-bridge-search.js.map +1 -0
- package/dist/src/memory/memory-bridge-sessions.d.ts +38 -0
- package/dist/src/memory/memory-bridge-sessions.d.ts.map +1 -0
- package/dist/src/memory/memory-bridge-sessions.js +109 -0
- package/dist/src/memory/memory-bridge-sessions.js.map +1 -0
- package/dist/src/memory/memory-bridge-store.d.ts +58 -0
- package/dist/src/memory/memory-bridge-store.d.ts.map +1 -0
- package/dist/src/memory/memory-bridge-store.js +201 -0
- package/dist/src/memory/memory-bridge-store.js.map +1 -0
- package/dist/src/memory/memory-bridge.d.ts +10 -438
- package/dist/src/memory/memory-bridge.d.ts.map +1 -1
- package/dist/src/memory/memory-bridge.js +14 -1787
- package/dist/src/memory/memory-bridge.js.map +1 -1
- package/dist/src/memory/memory-kg-claims.d.ts +52 -0
- package/dist/src/memory/memory-kg-claims.d.ts.map +1 -0
- package/dist/src/memory/memory-kg-claims.js +99 -0
- package/dist/src/memory/memory-kg-claims.js.map +1 -0
- package/dist/src/memory/memory-kg-index.d.ts +86 -0
- package/dist/src/memory/memory-kg-index.d.ts.map +1 -0
- package/dist/src/memory/memory-kg-index.js +256 -0
- package/dist/src/memory/memory-kg-index.js.map +1 -0
- package/dist/src/memory/memory-kg-ingest.d.ts +44 -0
- package/dist/src/memory/memory-kg-ingest.d.ts.map +1 -0
- package/dist/src/memory/memory-kg-ingest.js +361 -0
- package/dist/src/memory/memory-kg-ingest.js.map +1 -0
- package/dist/src/memory/memory-kg-model.d.ts +168 -0
- package/dist/src/memory/memory-kg-model.d.ts.map +1 -0
- package/dist/src/memory/memory-kg-model.js +158 -0
- package/dist/src/memory/memory-kg-model.js.map +1 -0
- package/dist/src/memory/memory-kg-names.d.ts +64 -0
- package/dist/src/memory/memory-kg-names.d.ts.map +1 -0
- package/dist/src/memory/memory-kg-names.js +187 -0
- package/dist/src/memory/memory-kg-names.js.map +1 -0
- package/dist/src/memory/memory-kg-promote.d.ts +79 -0
- package/dist/src/memory/memory-kg-promote.d.ts.map +1 -0
- package/dist/src/memory/memory-kg-promote.js +248 -0
- package/dist/src/memory/memory-kg-promote.js.map +1 -0
- package/dist/src/memory/memory-kg-rebuild.d.ts +77 -0
- package/dist/src/memory/memory-kg-rebuild.d.ts.map +1 -0
- package/dist/src/memory/memory-kg-rebuild.js +299 -0
- package/dist/src/memory/memory-kg-rebuild.js.map +1 -0
- package/dist/src/memory/memory-kg-rollback.d.ts +47 -0
- package/dist/src/memory/memory-kg-rollback.d.ts.map +1 -0
- package/dist/src/memory/memory-kg-rollback.js +193 -0
- package/dist/src/memory/memory-kg-rollback.js.map +1 -0
- package/dist/src/memory/memory-kg-rules.d.ts +64 -0
- package/dist/src/memory/memory-kg-rules.d.ts.map +1 -0
- package/dist/src/memory/memory-kg-rules.js +251 -0
- package/dist/src/memory/memory-kg-rules.js.map +1 -0
- package/dist/src/memory/memory-kg-scan.d.ts +118 -0
- package/dist/src/memory/memory-kg-scan.d.ts.map +1 -0
- package/dist/src/memory/memory-kg-scan.js +209 -0
- package/dist/src/memory/memory-kg-scan.js.map +1 -0
- package/dist/src/memory/memory-kg-search.d.ts +80 -0
- package/dist/src/memory/memory-kg-search.d.ts.map +1 -0
- package/dist/src/memory/memory-kg-search.js +239 -0
- package/dist/src/memory/memory-kg-search.js.map +1 -0
- package/dist/src/memory/memory-kg.d.ts +19 -547
- package/dist/src/memory/memory-kg.d.ts.map +1 -1
- package/dist/src/memory/memory-kg.js +10 -2389
- package/dist/src/memory/memory-kg.js.map +1 -1
- package/dist/src/ui/org-hil.mjs +1 -1
- package/dist/src/ui/routes-org-agents.mjs +318 -0
- package/dist/src/ui/routes-org-approvals.mjs +133 -0
- package/dist/src/ui/routes-org-config.mjs +459 -0
- package/dist/src/ui/routes-org-control.mjs +300 -0
- package/dist/src/ui/routes-org-files.mjs +172 -0
- package/dist/src/ui/routes-org-helpers.mjs +84 -0
- package/dist/src/ui/routes-org-knowledge.mjs +262 -0
- package/dist/src/ui/routes-org-lifecycle.mjs +224 -0
- package/dist/src/ui/routes-org-live.mjs +278 -0
- package/dist/src/ui/routes-org-mastermind.mjs +346 -0
- package/dist/src/ui/routes-org-planning.mjs +398 -0
- package/dist/src/ui/routes-org-runs.mjs +430 -0
- package/dist/src/ui/routes-org-status.mjs +342 -0
- package/dist/src/ui/routes-org-workflows.mjs +212 -0
- package/dist/src/ui/routes-org.mjs +26 -3847
- package/dist/src/ui/server.mjs +1 -1
- package/dist/src/utils/native-error.d.ts +1 -1
- package/dist/src/utils/native-error.js +1 -1
- package/dist/src/utils/paths.d.ts +2 -1
- package/dist/src/utils/paths.d.ts.map +1 -1
- package/dist/src/utils/paths.js +2 -1
- package/dist/src/utils/paths.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/org-skills/adversarial-reviewer/SKILL.md +1 -1
- package/org-skills/board-deck-builder/SKILL.md +1 -1
- package/org-skills/code-reviewer/SKILL.md +1 -1
- package/org-skills/debugging-wizard/SKILL.md +1 -1
- package/org-skills/scientific-thinking-literature-review/SKILL.md +1 -1
- package/org-skills/scientific-thinking-scholar-evaluation/SKILL.md +1 -1
- package/package.json +8 -8
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Bridge — the write path: bridgeStoreEntry (upsert identity, dedup
|
|
3
|
+
* gate, compare-and-swap) and the usage-recording helper it shares with the
|
|
4
|
+
* feedback loop. Split out of memory-bridge.ts, which re-exports the public
|
|
5
|
+
* symbols.
|
|
6
|
+
*/
|
|
7
|
+
import { _embedder, flushBackend, getBackend } from './memory-bridge-backend.js';
|
|
8
|
+
import { BRIDGE_EMBEDDING_MODEL, BRIDGE_MAX_KEY_LEN, BRIDGE_MAX_VALUE_LEN, entryWeights, generateId, getAutomemConfig, logBridgeError, MAX_TAG_LEN, MAX_TAGS, } from './memory-bridge-core.js';
|
|
9
|
+
// ===== Core CRUD =====
|
|
10
|
+
export async function bridgeStoreEntry(options) {
|
|
11
|
+
const backend = await getBackend(options.dbPath);
|
|
12
|
+
if (!backend)
|
|
13
|
+
return null;
|
|
14
|
+
try {
|
|
15
|
+
const key = typeof options.key === 'string' && options.key.length > BRIDGE_MAX_KEY_LEN
|
|
16
|
+
? options.key.slice(0, BRIDGE_MAX_KEY_LEN)
|
|
17
|
+
: options.key;
|
|
18
|
+
if (typeof options.value === 'string' && options.value.length > BRIDGE_MAX_VALUE_LEN) {
|
|
19
|
+
return {
|
|
20
|
+
success: false,
|
|
21
|
+
id: '',
|
|
22
|
+
error: `Value exceeds the ${BRIDGE_MAX_VALUE_LEN}-character cap (BRIDGE_MAX_VALUE_LEN = 16 KB); got ${options.value.length}. Split the content into smaller entries.`,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
const value = options.value;
|
|
26
|
+
const namespace = options.namespace ?? 'default';
|
|
27
|
+
const tags = Array.isArray(options.tags)
|
|
28
|
+
? // src: tags carry the ingest source path for excerpt provenance — paths
|
|
29
|
+
// routinely exceed the general 64-char tag cap, so they get 512.
|
|
30
|
+
options.tags
|
|
31
|
+
.filter((t) => typeof t === 'string' &&
|
|
32
|
+
t.length > 0 &&
|
|
33
|
+
t.length <= (t.startsWith('src:') ? 512 : MAX_TAG_LEN))
|
|
34
|
+
.slice(0, MAX_TAGS)
|
|
35
|
+
: [];
|
|
36
|
+
const now = Date.now();
|
|
37
|
+
// Upsert resolves the EXISTING identity BEFORE minting anything: a
|
|
38
|
+
// re-ingest must update the row in place and keep the id the caller was
|
|
39
|
+
// already handed. The old store-new-then-delete-old order silently
|
|
40
|
+
// orphaned every outstanding reference — feedback against a
|
|
41
|
+
// previously-returned id then matched nothing and reported
|
|
42
|
+
// `success: true, applied: 0`, i.e. success while training nothing (K5).
|
|
43
|
+
let existing = null;
|
|
44
|
+
if (options.upsert) {
|
|
45
|
+
try {
|
|
46
|
+
existing = await backend.getByKey(namespace, key);
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
logBridgeError('bridgeStoreEntry.upsertLookup', e); /* treat as no existing entry */
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const id = existing?.id ?? generateId('entry');
|
|
53
|
+
// Generate embedding
|
|
54
|
+
let embedding;
|
|
55
|
+
let embeddingInfo;
|
|
56
|
+
if (options.generateEmbeddingFlag !== false && value.length > 0 && _embedder) {
|
|
57
|
+
try {
|
|
58
|
+
embedding = await _embedder(value);
|
|
59
|
+
embeddingInfo = { dimensions: embedding.length, model: BRIDGE_EMBEDDING_MODEL };
|
|
60
|
+
}
|
|
61
|
+
catch (e) {
|
|
62
|
+
if (process.env.DEBUG || process.env.MONOMIND_DEBUG)
|
|
63
|
+
console.error('[memory-bridge] embedding generation failed — storing entry without embedding:', e);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
const mod = await import('@monoes/memory');
|
|
67
|
+
const entry = mod.createDefaultEntry({
|
|
68
|
+
key,
|
|
69
|
+
content: value,
|
|
70
|
+
namespace,
|
|
71
|
+
tags,
|
|
72
|
+
// On a revision the stored metadata merges UNDER the caller's, so
|
|
73
|
+
// learned signal (feedback_weight, frequency_weight) survives while every
|
|
74
|
+
// field the caller states explicitly still wins. Same merge semantics the
|
|
75
|
+
// backend's own update() uses.
|
|
76
|
+
metadata: existing
|
|
77
|
+
? { ...(existing.metadata ?? {}), ...(options.metadata ?? {}) }
|
|
78
|
+
: options.metadata,
|
|
79
|
+
expiresAt: options.ttl ? now + options.ttl * 1000 : undefined,
|
|
80
|
+
});
|
|
81
|
+
// Override id and set embedding
|
|
82
|
+
entry.id = id;
|
|
83
|
+
if (embedding)
|
|
84
|
+
entry.embedding = embedding;
|
|
85
|
+
if (existing) {
|
|
86
|
+
// Carry the record's history forward. createdAt in particular anchors the
|
|
87
|
+
// entry in the backend's `created_at DESC` ordering: a revision keeps its
|
|
88
|
+
// position instead of jumping to the head of every scan.
|
|
89
|
+
entry.createdAt = existing.createdAt;
|
|
90
|
+
entry.updatedAt = now;
|
|
91
|
+
entry.version = (existing.version ?? 1) + 1;
|
|
92
|
+
entry.accessCount = existing.accessCount ?? 0;
|
|
93
|
+
entry.lastAccessedAt = existing.lastAccessedAt ?? now;
|
|
94
|
+
}
|
|
95
|
+
// Dedup gate: skip if a near-duplicate already exists IN THIS NAMESPACE —
|
|
96
|
+
// an unscoped search let a similar entry in some other namespace swallow
|
|
97
|
+
// the store entirely (returned duplicate:true, nothing written where asked).
|
|
98
|
+
const automemCfg = getAutomemConfig();
|
|
99
|
+
if (embedding && !options.upsert) {
|
|
100
|
+
try {
|
|
101
|
+
const similar = await backend.search(embedding, {
|
|
102
|
+
k: 1,
|
|
103
|
+
threshold: automemCfg.dedupThreshold,
|
|
104
|
+
filters: { type: 'exact', namespace },
|
|
105
|
+
});
|
|
106
|
+
if (similar.length > 0 && similar[0].score >= automemCfg.dedupThreshold) {
|
|
107
|
+
// Re-storing near-identical content is a usage signal: the fact keeps
|
|
108
|
+
// being worth remembering. Reinforce the surviving entry.
|
|
109
|
+
await recordUsageOnBackend(backend, [similar[0].entry.id]).catch(() => {
|
|
110
|
+
/* best effort */
|
|
111
|
+
});
|
|
112
|
+
return { success: true, id: similar[0].entry.id, duplicate: true };
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
catch (e) {
|
|
116
|
+
logBridgeError('bridgeStoreEntry.dedupSearch', e); /* non-fatal — store anyway */
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// Compare-and-swap path (K5): a caller merging onto a row it read earlier
|
|
120
|
+
// (or asserting the row is still absent) asks for that check to be part of
|
|
121
|
+
// the write, atomically, instead of trusting its own stale read.
|
|
122
|
+
if (options.ifVersion !== undefined) {
|
|
123
|
+
if (options.ifVersion === 'absent') {
|
|
124
|
+
if (existing)
|
|
125
|
+
return {
|
|
126
|
+
success: false,
|
|
127
|
+
id: existing.id,
|
|
128
|
+
conflict: true,
|
|
129
|
+
error: 'ifVersion=absent but entry already exists',
|
|
130
|
+
};
|
|
131
|
+
const created = typeof backend.storeIfAbsent === 'function' ? await backend.storeIfAbsent(entry) : null;
|
|
132
|
+
if (created === null) {
|
|
133
|
+
// Backend predates storeIfAbsent (or is a test double) — fall back to
|
|
134
|
+
// the plain unconditional write rather than fail every caller.
|
|
135
|
+
await backend.store(entry);
|
|
136
|
+
}
|
|
137
|
+
else if (!created) {
|
|
138
|
+
return { success: false, id: '', conflict: true, error: 'entry created concurrently' };
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
if (!existing)
|
|
143
|
+
return { success: false, id: '', conflict: true, error: 'entry no longer exists' };
|
|
144
|
+
const written = typeof backend.storeIfVersion === 'function'
|
|
145
|
+
? await backend.storeIfVersion(entry, options.ifVersion)
|
|
146
|
+
: null;
|
|
147
|
+
if (written === null) {
|
|
148
|
+
await backend.store(entry);
|
|
149
|
+
}
|
|
150
|
+
else if (!written) {
|
|
151
|
+
return {
|
|
152
|
+
success: false,
|
|
153
|
+
id,
|
|
154
|
+
conflict: true,
|
|
155
|
+
error: `version conflict: entry changed concurrently (expected version ${options.ifVersion})`,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
await flushBackend(backend);
|
|
160
|
+
return { success: true, id, embedding: embeddingInfo };
|
|
161
|
+
}
|
|
162
|
+
// store() is INSERT OR REPLACE keyed on id, so reusing the existing id
|
|
163
|
+
// rewrites that row in place — there is no old row left to delete, and no
|
|
164
|
+
// window in which a failed store leaves the previous data destroyed.
|
|
165
|
+
await backend.store(entry);
|
|
166
|
+
await flushBackend(backend);
|
|
167
|
+
return { success: true, id, embedding: embeddingInfo };
|
|
168
|
+
}
|
|
169
|
+
catch (err) {
|
|
170
|
+
logBridgeError('bridgeStoreEntry', err);
|
|
171
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
172
|
+
return { success: false, id: '', error: message };
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
export async function recordUsageOnBackend(backend, entryIds) {
|
|
176
|
+
let updated = 0;
|
|
177
|
+
const skipped = [];
|
|
178
|
+
for (const id of entryIds) {
|
|
179
|
+
if (typeof id !== 'string' || !id)
|
|
180
|
+
continue;
|
|
181
|
+
try {
|
|
182
|
+
const entry = await backend.get(id);
|
|
183
|
+
if (!entry) {
|
|
184
|
+
skipped.push({ id, reason: 'not_found' });
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
const { frequency } = entryWeights(entry.metadata);
|
|
188
|
+
await backend.update(id, {
|
|
189
|
+
metadata: { frequency_weight: frequency + 1 },
|
|
190
|
+
lastAccessedAt: Date.now(),
|
|
191
|
+
});
|
|
192
|
+
updated++;
|
|
193
|
+
}
|
|
194
|
+
catch (e) {
|
|
195
|
+
logBridgeError('recordUsageOnBackend.entryUpdate', e);
|
|
196
|
+
skipped.push({ id, reason: 'error' });
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
return { updated, skipped };
|
|
200
|
+
}
|
|
201
|
+
//# sourceMappingURL=memory-bridge-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-bridge-store.js","sourceRoot":"","sources":["../../../src/memory/memory-bridge-store.ts"],"names":[],"mappings":"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"}
|