agent-working-memory 0.11.0 → 0.12.0
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/README.md +29 -0
- package/dist/adapters/claude-code.d.ts.map +1 -1
- package/dist/adapters/claude-code.js +63 -3
- package/dist/adapters/claude-code.js.map +1 -1
- package/dist/adapters/common.d.ts.map +1 -1
- package/dist/adapters/common.js +329 -306
- package/dist/adapters/common.js.map +1 -1
- package/dist/api/routes.d.ts.map +1 -1
- package/dist/api/routes.js +29 -7
- package/dist/api/routes.js.map +1 -1
- package/dist/coordination/routes.d.ts.map +1 -1
- package/dist/coordination/routes.js +174 -170
- package/dist/coordination/routes.js.map +1 -1
- package/dist/core/embeddings.d.ts.map +1 -1
- package/dist/core/embeddings.js +3 -0
- package/dist/core/embeddings.js.map +1 -1
- package/dist/core/entity-extract.d.ts +3 -0
- package/dist/core/entity-extract.d.ts.map +1 -0
- package/dist/core/entity-extract.js +47 -0
- package/dist/core/entity-extract.js.map +1 -0
- package/dist/core/salience.d.ts.map +1 -1
- package/dist/core/salience.js +14 -2
- package/dist/core/salience.js.map +1 -1
- package/dist/core/whoami.d.ts +24 -0
- package/dist/core/whoami.d.ts.map +1 -0
- package/dist/core/whoami.js +66 -0
- package/dist/core/whoami.js.map +1 -0
- package/dist/core/write-pipeline.d.ts +9 -0
- package/dist/core/write-pipeline.d.ts.map +1 -1
- package/dist/core/write-pipeline.js +109 -68
- package/dist/core/write-pipeline.js.map +1 -1
- package/dist/core/write-telemetry.d.ts +33 -0
- package/dist/core/write-telemetry.d.ts.map +1 -0
- package/dist/core/write-telemetry.js +110 -0
- package/dist/core/write-telemetry.js.map +1 -0
- package/dist/engine/activation.d.ts +22 -12
- package/dist/engine/activation.d.ts.map +1 -1
- package/dist/engine/activation.js +133 -17
- package/dist/engine/activation.js.map +1 -1
- package/dist/engine/consolidation-scheduler.d.ts +1 -1
- package/dist/engine/consolidation-scheduler.js +1 -1
- package/dist/engine/consolidation.d.ts +1 -0
- package/dist/engine/consolidation.d.ts.map +1 -1
- package/dist/engine/consolidation.js +18 -0
- package/dist/engine/consolidation.js.map +1 -1
- package/dist/engine/eval.d.ts.map +1 -1
- package/dist/engine/eval.js +5 -1
- package/dist/engine/eval.js.map +1 -1
- package/dist/index.js +20 -2
- package/dist/index.js.map +1 -1
- package/dist/mcp.d.ts +2 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +168 -100
- package/dist/mcp.js.map +1 -1
- package/dist/recipes/index.d.ts +57 -0
- package/dist/recipes/index.d.ts.map +1 -0
- package/dist/recipes/index.js +81 -0
- package/dist/recipes/index.js.map +1 -0
- package/dist/storage/pglite-schema.d.ts.map +1 -1
- package/dist/storage/pglite-schema.js +27 -0
- package/dist/storage/pglite-schema.js.map +1 -1
- package/dist/storage/pglite.d.ts +5 -0
- package/dist/storage/pglite.d.ts.map +1 -1
- package/dist/storage/pglite.js +180 -138
- package/dist/storage/pglite.js.map +1 -1
- package/dist/storage/postgres.d.ts +5 -0
- package/dist/storage/postgres.d.ts.map +1 -1
- package/dist/storage/postgres.js +180 -138
- package/dist/storage/postgres.js.map +1 -1
- package/dist/storage/sqlite.d.ts +9 -0
- package/dist/storage/sqlite.d.ts.map +1 -1
- package/dist/storage/sqlite.js +394 -326
- package/dist/storage/sqlite.js.map +1 -1
- package/dist/types/engram.d.ts +14 -0
- package/dist/types/engram.d.ts.map +1 -1
- package/dist/types/engram.js.map +1 -1
- package/package.json +1 -1
- package/src/adapters/claude-code.ts +66 -3
- package/src/adapters/common.ts +538 -515
- package/src/api/routes.ts +999 -971
- package/src/coordination/routes.ts +2155 -2150
- package/src/core/embeddings.ts +3 -0
- package/src/core/entity-extract.ts +47 -0
- package/src/core/salience.ts +529 -514
- package/src/core/whoami.ts +92 -0
- package/src/core/write-pipeline.ts +60 -8
- package/src/core/write-telemetry.ts +131 -0
- package/src/engine/activation.ts +1468 -1369
- package/src/engine/consolidation-scheduler.ts +1 -1
- package/src/engine/consolidation.ts +887 -869
- package/src/engine/eval.ts +6 -1
- package/src/index.ts +248 -227
- package/src/mcp.ts +1341 -1270
- package/src/recipes/index.ts +125 -0
- package/src/storage/pglite-schema.ts +27 -0
- package/src/storage/pglite.ts +1420 -1372
- package/src/storage/postgres.ts +1523 -1475
- package/src/storage/sqlite.ts +1936 -1861
- package/src/types/engram.ts +22 -0
package/src/core/embeddings.ts
CHANGED
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
|
|
20
20
|
import { pipeline, type FeatureExtractionPipeline } from '@huggingface/transformers';
|
|
21
21
|
import { dispatchEmbed, registerInProcessHandlers } from './ml-worker.js';
|
|
22
|
+
import { noteModelLoad } from './write-telemetry.js';
|
|
22
23
|
|
|
23
24
|
const MODEL_ID = process.env.AWM_EMBED_MODEL ?? 'Xenova/bge-small-en-v1.5';
|
|
24
25
|
const DIMENSIONS = parseInt(process.env.AWM_EMBED_DIMS ?? '384', 10);
|
|
@@ -32,8 +33,10 @@ let inProcessInitPromise: Promise<FeatureExtractionPipeline> | null = null;
|
|
|
32
33
|
async function loadInProcess(): Promise<FeatureExtractionPipeline> {
|
|
33
34
|
if (inProcessInstance) return inProcessInstance;
|
|
34
35
|
if (inProcessInitPromise) return inProcessInitPromise;
|
|
36
|
+
const tLoadStart = performance.now();
|
|
35
37
|
inProcessInitPromise = pipeline('feature-extraction', MODEL_ID, { dtype: 'fp32' }).then(pipe => {
|
|
36
38
|
inProcessInstance = pipe;
|
|
39
|
+
noteModelLoad(performance.now() - tLoadStart);
|
|
37
40
|
console.log(`Embedding model loaded in-process: ${MODEL_ID} (${DIMENSIONS}d)`);
|
|
38
41
|
return pipe;
|
|
39
42
|
});
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// Copyright 2026 Robert Winter / Complete Ideas
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Entity extraction for the entity inverted index (D9, 2026-07-30).
|
|
6
|
+
*
|
|
7
|
+
* v1 is deliberately conservative for precision: entities come ONLY from
|
|
8
|
+
* structured sources — prefix tags (`person=Seetha`, `ticket=18999`) and
|
|
9
|
+
* auto-tagger `entity:` tags — never from free-text guessing. Each entity is
|
|
10
|
+
* normalized to `key:value` lowercase so lookups are exact.
|
|
11
|
+
*
|
|
12
|
+
* This is pure write-time bookkeeping. Retrieval behavior is unchanged until
|
|
13
|
+
* D11 re-tests the graph features against the index (per the 2026-06-16
|
|
14
|
+
* entity-centric retrieval roadmap).
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
/** Prefix-tag keys whose values denote entities worth indexing. */
|
|
18
|
+
const ENTITY_KEYS = new Set([
|
|
19
|
+
'person', 'ticket', 'member', 'horse', 'usef', 'event', 'proj', 'project',
|
|
20
|
+
'skill', 'about', 'file', 'sp', 'table', 'agent', 'version', 'org',
|
|
21
|
+
]);
|
|
22
|
+
|
|
23
|
+
/** Extract normalized `key:value` entities from a tag list. Deduped, order-stable. */
|
|
24
|
+
export function extractEntitiesFromTags(tags: string[]): string[] {
|
|
25
|
+
const out: string[] = [];
|
|
26
|
+
const seen = new Set<string>();
|
|
27
|
+
for (const raw of tags ?? []) {
|
|
28
|
+
const tag = String(raw).trim();
|
|
29
|
+
let entity: string | null = null;
|
|
30
|
+
const eq = tag.indexOf('=');
|
|
31
|
+
if (eq > 0) {
|
|
32
|
+
const key = tag.slice(0, eq).toLowerCase();
|
|
33
|
+
const value = tag.slice(eq + 1).trim().toLowerCase();
|
|
34
|
+
if (ENTITY_KEYS.has(key) && value.length > 0 && value.length <= 120) {
|
|
35
|
+
entity = `${key === 'project' ? 'proj' : key}:${value}`;
|
|
36
|
+
}
|
|
37
|
+
} else if (tag.toLowerCase().startsWith('entity:')) {
|
|
38
|
+
const value = tag.slice('entity:'.length).trim().toLowerCase();
|
|
39
|
+
if (value.length > 0 && value.length <= 120) entity = `entity:${value}`;
|
|
40
|
+
}
|
|
41
|
+
if (entity && !seen.has(entity)) {
|
|
42
|
+
seen.add(entity);
|
|
43
|
+
out.push(entity);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return out;
|
|
47
|
+
}
|