n8n-nodes-engram 0.7.0 → 0.7.2

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 (99) hide show
  1. package/README.md +52 -1
  2. package/dist/embeddings/EmbeddingService.js +6 -1
  3. package/dist/embeddings/EmbeddingService.js.map +1 -1
  4. package/dist/extraction/AutomaticClaims.d.ts +10 -0
  5. package/dist/extraction/AutomaticClaims.js +401 -0
  6. package/dist/extraction/AutomaticClaims.js.map +1 -0
  7. package/dist/extraction/AutomaticEvidence.d.ts +10 -0
  8. package/dist/extraction/AutomaticEvidence.js +514 -0
  9. package/dist/extraction/AutomaticEvidence.js.map +1 -0
  10. package/dist/extraction/BoundedExtraction.d.ts +1 -0
  11. package/dist/extraction/BoundedExtraction.js +22 -10
  12. package/dist/extraction/BoundedExtraction.js.map +1 -1
  13. package/dist/extraction/DurableExtraction.d.ts +2 -0
  14. package/dist/extraction/DurableExtraction.js +43 -5
  15. package/dist/extraction/DurableExtraction.js.map +1 -1
  16. package/dist/extraction/ExtractionDiagnostics.d.ts +9 -2
  17. package/dist/extraction/ExtractionDiagnostics.js +16 -2
  18. package/dist/extraction/ExtractionDiagnostics.js.map +1 -1
  19. package/dist/extraction/LlmClient.d.ts +1 -0
  20. package/dist/extraction/LlmClient.js +37 -7
  21. package/dist/extraction/LlmClient.js.map +1 -1
  22. package/dist/extraction/QueueState.d.ts +75 -15
  23. package/dist/extraction/QueueState.js +7 -0
  24. package/dist/extraction/QueueState.js.map +1 -1
  25. package/dist/extraction/RequestBudget.js +8 -6
  26. package/dist/extraction/RequestBudget.js.map +1 -1
  27. package/dist/extraction/StagedGraph.js +3 -1
  28. package/dist/extraction/StagedGraph.js.map +1 -1
  29. package/dist/memory/AutomaticCapture.d.ts +175 -0
  30. package/dist/memory/AutomaticCapture.js +39 -0
  31. package/dist/memory/AutomaticCapture.js.map +1 -0
  32. package/dist/memory/EngramChatMemory.d.ts +3 -0
  33. package/dist/memory/EngramChatMemory.js +205 -13
  34. package/dist/memory/EngramChatMemory.js.map +1 -1
  35. package/dist/memory/EngramChatMessageHistory.d.ts +2 -0
  36. package/dist/memory/EngramChatMessageHistory.js +12 -1
  37. package/dist/memory/EngramChatMessageHistory.js.map +1 -1
  38. package/dist/nodes/EngramAdmin/EngramAdmin.node.js +68 -26
  39. package/dist/nodes/EngramAdmin/EngramAdmin.node.js.map +1 -1
  40. package/dist/nodes/EngramMemory/EngramMemory.node.js +56 -43
  41. package/dist/nodes/EngramMemory/EngramMemory.node.js.map +1 -1
  42. package/dist/schemas/AutomaticClaim.schema.d.ts +517 -0
  43. package/dist/schemas/AutomaticClaim.schema.js +92 -0
  44. package/dist/schemas/AutomaticClaim.schema.js.map +1 -0
  45. package/dist/schemas/AutomaticMemory.schema.d.ts +803 -0
  46. package/dist/schemas/AutomaticMemory.schema.js +230 -0
  47. package/dist/schemas/AutomaticMemory.schema.js.map +1 -0
  48. package/dist/schemas/AutomaticOperations.schema.d.ts +221 -0
  49. package/dist/schemas/AutomaticOperations.schema.js +86 -0
  50. package/dist/schemas/AutomaticOperations.schema.js.map +1 -0
  51. package/dist/schemas/AutomaticRuntime.schema.d.ts +169 -0
  52. package/dist/schemas/AutomaticRuntime.schema.js +26 -0
  53. package/dist/schemas/AutomaticRuntime.schema.js.map +1 -0
  54. package/dist/schemas/ExtractionBudget.schema.d.ts +13 -0
  55. package/dist/schemas/ExtractionBudget.schema.js +24 -0
  56. package/dist/schemas/ExtractionBudget.schema.js.map +1 -0
  57. package/dist/schemas/ExtractionMetadata.schema.d.ts +10 -10
  58. package/dist/schemas/ExtractionMetadata.schema.js +1 -1
  59. package/dist/schemas/ExtractionMetadata.schema.js.map +1 -1
  60. package/dist/schemas/ExtractionOutcome.schema.d.ts +243 -10
  61. package/dist/schemas/ExtractionOutcome.schema.js +11 -1
  62. package/dist/schemas/ExtractionOutcome.schema.js.map +1 -1
  63. package/dist/schemas/ExtractionPolicy.schema.d.ts +22 -22
  64. package/dist/schemas/ExtractionQueue.schema.d.ts +3290 -272
  65. package/dist/schemas/GraphData.schema.d.ts +8 -8
  66. package/dist/schemas/MemoryPolicy.schema.d.ts +842 -56
  67. package/dist/schemas/index.d.ts +5 -0
  68. package/dist/schemas/index.js +5 -0
  69. package/dist/schemas/index.js.map +1 -1
  70. package/dist/search/AutomaticRetrieval.d.ts +5 -0
  71. package/dist/search/AutomaticRetrieval.js +79 -0
  72. package/dist/search/AutomaticRetrieval.js.map +1 -0
  73. package/dist/search/GovernedContext.js +16 -2
  74. package/dist/search/GovernedContext.js.map +1 -1
  75. package/dist/search/HybridSearchEngine.d.ts +3 -1
  76. package/dist/search/HybridSearchEngine.js +4 -4
  77. package/dist/search/HybridSearchEngine.js.map +1 -1
  78. package/dist/search/RetrievalGovernance.d.ts +3 -2
  79. package/dist/search/RetrievalGovernance.js +32 -8
  80. package/dist/search/RetrievalGovernance.js.map +1 -1
  81. package/dist/storage/AutomaticIdentity.d.ts +30 -0
  82. package/dist/storage/AutomaticIdentity.js +683 -0
  83. package/dist/storage/AutomaticIdentity.js.map +1 -0
  84. package/dist/storage/GraphologyStorage.d.ts +10 -1
  85. package/dist/storage/GraphologyStorage.js +98 -25
  86. package/dist/storage/GraphologyStorage.js.map +1 -1
  87. package/dist/storage/IGraphStorage.d.ts +9 -1
  88. package/dist/storage/Neo4jStorage.d.ts +10 -1
  89. package/dist/storage/Neo4jStorage.js +143 -61
  90. package/dist/storage/Neo4jStorage.js.map +1 -1
  91. package/dist/utils/advancedExtraction.js +7 -7
  92. package/dist/utils/advancedExtraction.js.map +1 -1
  93. package/dist/utils/automaticAdmin.d.ts +4 -0
  94. package/dist/utils/automaticAdmin.js +235 -0
  95. package/dist/utils/automaticAdmin.js.map +1 -0
  96. package/dist/utils/automaticMemory.d.ts +35 -0
  97. package/dist/utils/automaticMemory.js +160 -0
  98. package/dist/utils/automaticMemory.js.map +1 -0
  99. package/package.json +1 -1
package/README.md CHANGED
@@ -25,7 +25,7 @@
25
25
 
26
26
  <p align="center">
27
27
  <a href="#installation">Installation</a> &middot;
28
- <a href="#upgrading-to-v070">Upgrade</a> &middot;
28
+ <a href="#upgrading-to-v072">Upgrade</a> &middot;
29
29
  <a href="#node-reference">Nodes</a> &middot;
30
30
  <a href="#storage-backends">Storage</a> &middot;
31
31
  <a href="#knowledge-extraction">Extraction</a> &middot;
@@ -101,8 +101,59 @@ npm install n8n-nodes-engram
101
101
 
102
102
  ---
103
103
 
104
+ ## Upgrading to v0.7.2
105
+
106
+ Existing saved workflows retain their defaults and node versions. Installing this release does not enable automatic acceptance, change namespaces, rewrite historical memory or start a queue worker. New **Memory v3** and **Admin v3** nodes default to **Memory Behaviour > Existing / Custom**.
107
+
108
+ ### Back Up and Activate
109
+
110
+ 1. Take fresh, consistent workflow and backend backups before installing `n8n-nodes-engram@0.7.2`. Preserve exact namespaces, verified alias mappings, storage paths and producer workflow IDs. Restart n8n, refresh the editor and confirm the package version.
111
+ 2. Start with an inactive copy of one direct-conversation workflow and a separate restored store. Upgrade only the selected Memory/Admin nodes to **v3**. Preserve the current extraction route, model and provider-default temperature setting.
112
+ 3. In **Admin > Automatic Memory > Create Verified Actor Binding**, select the exact memory namespace and producer workflow ID. Bind a trusted application's stable issuer/actor reference to an **existing, explicitly accepted subject UUID**. Supply the operator and review reason. A name, phone number, session key or model confidence alone does not create this binding. Reassignment and revocation require the current binding revision.
113
+ 4. Select a profile deliberately. **Conservative Automatic** accepts supported source-grounded preferences; **Explicit Requests Only** additionally requires trusted save intent or an unquoted leading `Remember this:`; **Review First** proposes supported preferences. Use **Preview Memory Policy** to inspect the versioned effective policy, configured limits and identity readiness. Worker readiness is a separate check.
114
+ 5. On Memory v3, retain **Bounded** resolution, enable knowledge extraction and **Final Turns**, persist human episodes, and disable extraction from AI/system/tool content. Map the verified actor issuer/reference and a stable **Current Turn ID** from trusted application input. Keep tool audits separate. Extraction credentials/model remain required configuration, although this first profile implementation uses deterministic preference parsing rather than model requests.
115
+ 6. Supply the complete **Raw Current Human Content**. If agent input adds a display label, explicitly attest **Application-Owned Display Wrapper** and provide exact UTF-16 human-region offsets. This attestation is only for application display metadata; never use it to hide quotes, reports, conditions or other human context. No arbitrary label stripping occurs.
116
+
117
+ ### Supported Automatic Memory
118
+
119
+ Profile version 1 supports complete literal first-person preferences such as `I prefer concise explanations.`, `I like bullet points.`, `I do not like long explanations.` when the value belongs to the supported language, explanation, presentation or format vocabulary. Supported negative preferences retain their polarity. Ambiguous, quoted, hypothetical, sensitive and unsupported statements remain in the episode history without being promoted to accepted facts. Complex preferences, nickname identity merging and dated commitments are outside this profile version. No **Personal Assistant** profile is offered yet.
120
+
121
+ Exact repeated claims reuse the logical fact; a conflicting supported claim requires review. Rejected/manual decisions remain protected. Claim receipts distinguish accepted, proposed, rejected, deferred, unchanged and not-selected results, with persistence and mutation state. Source-episode acceptance is separate from fact acceptance. New budget diagnostics use a separate versioned `budget` field; the existing error categories remain unchanged.
122
+
123
+ Current personalization suppresses revoked bindings, unsupported evidence and unresolved opposite claims. Historical modes may return intact source-grounded preference records with an explicit historical qualification: their recorded review state does not establish current identity or validity. As-of retrieval excludes new claims recorded after the requested date. Literal value nodes are never presented independently as personal facts.
124
+
125
+ For an acknowledgement based on actual saving, put **Admin > Automatic Memory > Capture Human Memory** before the agent. Pass its **sourceId** into Memory v3's **Captured Human Source ID**, using the same backend, exact namespace, actor, turn ID, policy and formatted input. The current source is excluded from history, and the subsequent writer saves the final assistant/audits without saving or extracting the human turn again. Only `facts_accepted` confirms accepted graph knowledge; `review_required`, `not_saved`, `queued` and `unconfirmed` do not. A synchronous retry with a saved source but no recoverable receipt remains unconfirmed. An ordinary agent response generated before memory saving must not promise durable acceptance.
126
+
127
+ Budget/execution settings are separate from acceptance. The deadline is one extraction work budget, not memory expiry or the whole workflow timeout. Increasing it does not broaden accepted evidence. Durable mode still requires an explicitly deployed matching **Admin v3** worker, route and profile; queued work is not already indexed. Extraction retries never resend an external chat message.
128
+
129
+ ### Verify and Roll Back
130
+
131
+ Before expanding rollout, verify normal and tool-assisted writes, a supported preference without a save command, a negative/uncertain preference, duplicate turns, and a temporary question. Check accepted graph records and provenance, then verify graph-only recall on the separate restored store with recent conversation excluded. Test historical recall separately. Review active and passive group writers independently.
132
+
133
+ **Recovery boundary:** once new profiles write bindings, envelopes, claims or role ownership, use consistent backend-native snapshots for recovery: the complete embedded graph file, or a Neo4j database backup. Preserve the original logical store mapping. Generic graph import and queue-aware JSON import deliberately reject restoration of new privileged bindings/ownership into a fresh store; a JSON export alone is not a supported recovery backup for these profiles. Retain queue-aware exports as additional inspection evidence when jobs exist.
134
+
135
+ For rollback, keep this binary and restore **Existing / Custom** writer settings while its readers continue validating new claims. Old-package downgrade and mixed-version writers/workers are unsupported for new-profile stores. Keep newly appended conversations; never overwrite them with an older snapshot. No reset, purge, bulk re-extraction or automatic legacy repair is part of this upgrade.
136
+
137
+ ---
138
+
139
+ ## Upgrading to v0.7.1
140
+
141
+ This patch fixes JSON-mode requests in bounded identity matching. It explicitly requests a valid JSON object and checks the trusted instruction before sending bounded extraction requests. Existing legacy extraction behavior and saved workflow defaults remain unchanged. No model, temperature or governance change is needed.
142
+
143
+ 1. Take fresh, consistent backups of your workflows and Engram stores. **Embedded:** preserve the original producer graph file and storage directory. **Neo4j:** use your normal consistent database backup. Keep existing namespace keys and alias mappings.
144
+ 2. Install `n8n-nodes-engram@0.7.1`, restart n8n, refresh the editor and confirm the installed version. Keep the existing Memory v2 bounded/quality/temperature settings. Node.js 20 or newer remains required. No schema migration, memory reset, purge, bulk re-extraction or queue activation is needed.
145
+ 3. Start with one conversation workflow. Test normal and tool-assisted turns, a durable preference, a temporary question and historical recall. Confirm explicit extraction success or documented deferral and inspect actual graph facts; overall workflow success alone is insufficient. Expand other namespaces only after this canary passes.
146
+
147
+ Known JSON-instruction errors retain `kind=invalid_request` with fixed `reason=json_mode_instruction_missing` and `parameter=messages`. Deterministic HTTP 400 or authentication failures stop further equivalent comparisons in the extraction. Conversations remain saved while failed staged graph changes are discarded. No raw provider body is included in these diagnostics.
148
+
149
+ For rollback, preserve legitimate messages written after the backup and follow the queue-aware backup/downgrade restrictions below when jobs exist. Prefer restoring the previous workflow settings while retaining current memory. Never overwrite newer conversations with an old snapshot as routine rollback. This patch does not repair old extracted facts or reclassify historical episodes. The [v0.7.0 controls and worker setup](#upgrading-to-v070) remain opt-in.
150
+
151
+ ---
152
+
104
153
  ## Upgrading to v0.7.0
105
154
 
155
+ For bounded-mode installations, use v0.7.1 or newer for the JSON-mode comparison fix.
156
+
106
157
  These Memory v2 controls are optional. Existing workflows keep **Entity Resolution > Legacy**, **Knowledge Selection > Legacy**, **Extraction Execution > Synchronous** and **Graph Context Policy > Legacy**. Installing a newer package does not enable them or rewrite existing knowledge.
107
158
 
108
159
  ### Back Up and Install v0.7.0
@@ -39,7 +39,12 @@ class EmbeddingService {
39
39
  const controller = new AbortController();
40
40
  const abort = () => controller.abort();
41
41
  (_c = this.budget) === null || _c === void 0 ? void 0 : _c.controller.signal.addEventListener('abort', abort, { once: true });
42
- const timeout = setTimeout(abort, Math.min(remaining !== null && remaining !== void 0 ? remaining : this.timeoutMs, this.timeoutMs));
42
+ const timeout = setTimeout(() => {
43
+ var _a;
44
+ if (remaining !== undefined && remaining <= this.timeoutMs)
45
+ (_a = this.budget) === null || _a === void 0 ? void 0 : _a.controller.abort();
46
+ abort();
47
+ }, Math.min(remaining !== null && remaining !== void 0 ? remaining : this.timeoutMs, this.timeoutMs));
43
48
  const metric = (_d = this.diagnostics) === null || _d === void 0 ? void 0 : _d.beginRequest('embeddings');
44
49
  try {
45
50
  let response;
@@ -1 +1 @@
1
- {"version":3,"file":"EmbeddingService.js","sourceRoot":"","sources":["../../src/embeddings/EmbeddingService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EmbeddingService.js","sourceRoot":"","sources":["../../src/embeddings/EmbeddingService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { type GraphData, type StagedExtraction, type ExtractionOutcome, type EntityEdge } from '../schemas';
2
+ import { type AutomaticPolicy } from '../schemas/AutomaticMemory.schema';
3
+ export declare const AUTOMATIC_ENVELOPE = "engram_source_envelope_v1";
4
+ export declare const AUTOMATIC_CLAIM = "engram_claim_v1";
5
+ export declare const AUTOMATIC_OWNER = "engram_write_owner_v1";
6
+ export declare function validateStoredAutomaticClaim(graph: GraphData, edge: EntityEdge, check?: () => void, historicalEvidence?: boolean): boolean;
7
+ export declare function planAutomaticClaims(graph: GraphData, group: string, sourceIds: string[], policy: AutomaticPolicy, baseOutcome: ExtractionOutcome, timestamp?: string, workCheck?: () => void): StagedExtraction;
8
+ export declare function validateAutomaticPlan(graph: GraphData, plan: StagedExtraction): boolean;
9
+ export declare function committedAutomaticReceipt(outcome: ExtractionOutcome, timestamp: string): void;
10
+ export declare function failedAutomaticReceipt(outcome: ExtractionOutcome): void;
@@ -0,0 +1,401 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AUTOMATIC_OWNER = exports.AUTOMATIC_CLAIM = exports.AUTOMATIC_ENVELOPE = void 0;
4
+ exports.validateStoredAutomaticClaim = validateStoredAutomaticClaim;
5
+ exports.planAutomaticClaims = planAutomaticClaims;
6
+ exports.validateAutomaticPlan = validateAutomaticPlan;
7
+ exports.committedAutomaticReceipt = committedAutomaticReceipt;
8
+ exports.failedAutomaticReceipt = failedAutomaticReceipt;
9
+ const crypto_1 = require("crypto");
10
+ const perf_hooks_1 = require("perf_hooks");
11
+ const ExtractionDiagnostics_1 = require("./ExtractionDiagnostics");
12
+ const uuid_1 = require("uuid");
13
+ const schemas_1 = require("../schemas");
14
+ const AutomaticMemory_schema_1 = require("../schemas/AutomaticMemory.schema");
15
+ const AutomaticClaim_schema_1 = require("../schemas/AutomaticClaim.schema");
16
+ const AutomaticEvidence_1 = require("./AutomaticEvidence");
17
+ const AutomaticIdentity_1 = require("../storage/AutomaticIdentity");
18
+ const QueueState_1 = require("./QueueState");
19
+ exports.AUTOMATIC_ENVELOPE = 'engram_source_envelope_v1';
20
+ exports.AUTOMATIC_CLAIM = 'engram_claim_v1';
21
+ exports.AUTOMATIC_OWNER = 'engram_write_owner_v1';
22
+ const hashText = (text) => (0, crypto_1.createHash)('sha256').update(text, 'utf8').digest('hex');
23
+ const stableId = (key) => (0, uuid_1.v5)((0, QueueState_1.canonical)(key), uuid_1.v5.URL);
24
+ function validateStoredAutomaticClaim(graph, edge, check = () => { }, historicalEvidence = false) {
25
+ var _a;
26
+ try {
27
+ check();
28
+ const meta = AutomaticClaim_schema_1.AutomaticClaimMetadataSchema.parse(edge.attributes[exports.AUTOMATIC_CLAIM]);
29
+ const source = graph.episodes.find((ep) => ep.uuid === meta.sourceId && ep.group_id === edge.group_id);
30
+ if (!source ||
31
+ source.role !== 'human' ||
32
+ !['active_human', 'passive_human'].includes(source.episode_kind) ||
33
+ source.review_status !== 'accepted' ||
34
+ !['standard', 'trusted'].includes(source.trust_level) ||
35
+ source.quoted_message_id)
36
+ return false;
37
+ (0, AutomaticIdentity_1.prepareAutomaticEpisodeInput)(source);
38
+ const envelope = AutomaticMemory_schema_1.AutomaticSourceEnvelopeSchema.parse(source.attributes[exports.AUTOMATIC_ENVELOPE]);
39
+ if (envelope.namespace !== edge.group_id ||
40
+ hashText(source.content) !== envelope.rawContentHash ||
41
+ (0, QueueState_1.canonical)(meta.binding) !== (0, QueueState_1.canonical)(envelope.bindingRef) ||
42
+ meta.issuer !== envelope.issuer ||
43
+ meta.actorReference !== envelope.actorReference ||
44
+ (0, QueueState_1.canonical)(meta.policy) !== (0, QueueState_1.canonical)(envelope.policy))
45
+ return false;
46
+ if (!historicalEvidence)
47
+ (0, AutomaticIdentity_1.assertAutomaticBinding)(graph, envelope, check);
48
+ const parsed = (0, AutomaticEvidence_1.parseAutomaticPreferences)(envelope, source.content.slice(envelope.humanRegion.start, envelope.humanRegion.end));
49
+ if (!parsed.claims.some((claim) => (0, QueueState_1.canonical)(claim) === (0, QueueState_1.canonical)(meta.claim)))
50
+ return false;
51
+ const valueKey = [
52
+ 'literal-preference-v1',
53
+ edge.group_id,
54
+ 'preference_value',
55
+ meta.claim.languageTag,
56
+ meta.claim.literal,
57
+ ];
58
+ const key = (0, QueueState_1.fingerprint)([...valueKey, envelope.bindingRef.subjectId, meta.claim.polarity]);
59
+ const target = graph.entities.find((entity) => entity.uuid === edge.target_node_uuid && entity.group_id === edge.group_id);
60
+ return (meta.key === key &&
61
+ meta.subjectId === envelope.bindingRef.subjectId &&
62
+ edge.uuid === stableId(['attributed-preference-v1', key]) &&
63
+ edge.source_node_uuid === meta.subjectId &&
64
+ edge.target_node_uuid === stableId(valueKey) &&
65
+ (target === null || target === void 0 ? void 0 : target.name) === meta.claim.literal &&
66
+ target.entity_type === 'preference_value' &&
67
+ edge.name === 'PREFERS' &&
68
+ edge.fact === meta.claim.clause &&
69
+ edge.episodes.includes(source.uuid) &&
70
+ ((_a = (0, schemas_1.extractionMetadataFromAttributes)(edge.attributes)) === null || _a === void 0 ? void 0 : _a.episode_uuids.includes(source.uuid)) ===
71
+ true);
72
+ }
73
+ catch (error) {
74
+ if (error instanceof ExtractionDiagnostics_1.ExtractionBudgetError)
75
+ throw error;
76
+ return false;
77
+ }
78
+ }
79
+ function planAutomaticClaims(graph, group, sourceIds, policy, baseOutcome, timestamp = new Date().toISOString(), workCheck) {
80
+ var _a, _b;
81
+ const expires = perf_hooks_1.performance.now() + 30000;
82
+ const check = workCheck !== null && workCheck !== void 0 ? workCheck : (() => {
83
+ if (perf_hooks_1.performance.now() >= expires)
84
+ throw new ExtractionDiagnostics_1.ExtractionBudgetError('deadline');
85
+ });
86
+ check();
87
+ if (graph.entities.length + graph.edges.length + graph.episodes.length > 100000)
88
+ throw new ExtractionDiagnostics_1.ExtractionBudgetError('snapshot_limit');
89
+ let snapshotBytes = 0;
90
+ for (const item of [...graph.entities, ...graph.edges, ...graph.episodes]) {
91
+ check();
92
+ snapshotBytes += Buffer.byteLength(JSON.stringify(item));
93
+ if (snapshotBytes > 100 * 1024 * 1024)
94
+ throw new ExtractionDiagnostics_1.ExtractionBudgetError('snapshot_limit');
95
+ }
96
+ const compiled = (0, AutomaticEvidence_1.compileAutomaticPolicy)({ profileId: policy.profileId });
97
+ if (policy.profileId === 'existing' || (0, QueueState_1.canonical)(compiled) !== (0, QueueState_1.canonical)(policy))
98
+ throw new Error('Engram automatic: unsupported_policy');
99
+ if (!sourceIds.length || sourceIds.length > 32 || new Set(sourceIds).size !== sourceIds.length)
100
+ throw new Error('Engram automatic: source_limit');
101
+ const entities = [], edges = [];
102
+ const outcome = JSON.parse(JSON.stringify(baseOutcome));
103
+ const receipt = {
104
+ version: 1,
105
+ policy,
106
+ sourceIds,
107
+ persisted: false,
108
+ commitAt: null,
109
+ items: [],
110
+ coverageComplete: true,
111
+ };
112
+ let hydrated = 0;
113
+ let conflictScans = 0;
114
+ let sourceBytes = 0;
115
+ let extensionBytes = 0;
116
+ for (const sourceId of sourceIds) {
117
+ check();
118
+ const source = graph.episodes.find((ep) => ep.uuid === sourceId && ep.group_id === group);
119
+ if (!source ||
120
+ source.role !== 'human' ||
121
+ !['active_human', 'passive_human'].includes(source.episode_kind) ||
122
+ !['standard', 'trusted'].includes(source.trust_level) ||
123
+ source.review_status !== 'accepted' ||
124
+ source.quoted_message_id)
125
+ throw new Error('Engram automatic: invalid_source');
126
+ (0, AutomaticIdentity_1.prepareAutomaticEpisodeInput)(source);
127
+ sourceBytes += Buffer.byteLength(source.content);
128
+ if (sourceBytes > 65536)
129
+ throw new ExtractionDiagnostics_1.ExtractionBudgetError('source_bytes');
130
+ extensionBytes += Buffer.byteLength(JSON.stringify({
131
+ envelope: source.attributes[exports.AUTOMATIC_ENVELOPE],
132
+ owner: source.attributes[exports.AUTOMATIC_OWNER],
133
+ }));
134
+ const envelope = AutomaticMemory_schema_1.AutomaticSourceEnvelopeSchema.parse(source.attributes[exports.AUTOMATIC_ENVELOPE]);
135
+ if (envelope.namespace !== group ||
136
+ (0, QueueState_1.canonical)(envelope.policy) !== (0, QueueState_1.canonical)(policy) ||
137
+ hashText(source.content) !== envelope.rawContentHash ||
138
+ Buffer.byteLength(source.content) > 65536)
139
+ throw new Error('Engram automatic: source_changed');
140
+ (0, AutomaticIdentity_1.assertAutomaticBinding)(graph, envelope, check);
141
+ const content = source.content.slice(envelope.humanRegion.start, envelope.humanRegion.end);
142
+ const parsed = (0, AutomaticEvidence_1.parseAutomaticPreferences)(envelope, content);
143
+ if (!parsed.claims.length) {
144
+ receipt.items.push({
145
+ state: 'not_selected',
146
+ persisted: false,
147
+ mutation: 'none',
148
+ reasons: parsed.reasons.length ? parsed.reasons : ['not_selected'],
149
+ });
150
+ outcome.counts.filtered++;
151
+ continue;
152
+ }
153
+ for (const claim of parsed.claims) {
154
+ check();
155
+ if (receipt.items.length >= 32)
156
+ throw new Error('Engram automatic: claim_limit');
157
+ const valueKey = [
158
+ 'literal-preference-v1',
159
+ group,
160
+ 'preference_value',
161
+ claim.languageTag,
162
+ claim.literal,
163
+ ];
164
+ const targetId = stableId(valueKey);
165
+ const key = (0, QueueState_1.fingerprint)([...valueKey, envelope.bindingRef.subjectId, claim.polarity]);
166
+ const edgeId = stableId(['attributed-preference-v1', key]);
167
+ const prior = [...graph.edges, ...edges].find((edge) => edge.uuid === edgeId);
168
+ if (prior) {
169
+ const priorClaim = AutomaticClaim_schema_1.AutomaticClaimMetadataSchema.safeParse(prior.attributes[exports.AUTOMATIC_CLAIM]);
170
+ if (!priorClaim.success ||
171
+ priorClaim.data.key !== key ||
172
+ prior.group_id !== group ||
173
+ !validateStoredAutomaticClaim({
174
+ ...graph,
175
+ entities: [...graph.entities, ...entities],
176
+ edges: [...graph.edges, ...edges],
177
+ }, prior, check))
178
+ throw new Error('Engram automatic: identity_collision');
179
+ const review = (_a = (0, schemas_1.extractionMetadataFromAttributes)(prior.attributes)) === null || _a === void 0 ? void 0 : _a.review_status;
180
+ if (!review)
181
+ throw new Error('Engram automatic: missing_claim_review');
182
+ receipt.items.push({
183
+ claimId: prior.uuid,
184
+ state: review === 'rejected' ? 'rejected' : review === 'proposed' ? 'proposed' : 'unchanged',
185
+ persisted: true,
186
+ mutation: 'none',
187
+ reasons: ['existing_claim'],
188
+ });
189
+ outcome.counts.unchanged++;
190
+ continue;
191
+ }
192
+ const candidates = [...graph.edges, ...edges].filter((edge) => {
193
+ check();
194
+ if (edge.group_id !== group ||
195
+ edge.source_node_uuid !== envelope.bindingRef.subjectId ||
196
+ edge.target_node_uuid !== targetId ||
197
+ edge.attributes[exports.AUTOMATIC_CLAIM] === undefined)
198
+ return false;
199
+ if (++conflictScans > 128)
200
+ throw new ExtractionDiagnostics_1.ExtractionBudgetError('conflict_limit');
201
+ return true;
202
+ });
203
+ const references = candidates.reduce((total, edge) => {
204
+ var _a, _b;
205
+ return total +
206
+ new Set([
207
+ ...edge.episodes,
208
+ ...((_b = (_a = (0, schemas_1.extractionMetadataFromAttributes)(edge.attributes)) === null || _a === void 0 ? void 0 : _a.episode_uuids) !== null && _b !== void 0 ? _b : []),
209
+ ]).size;
210
+ }, 0);
211
+ hydrated += references;
212
+ if (references > 8 || hydrated > 512)
213
+ throw new ExtractionDiagnostics_1.ExtractionBudgetError('conflict_limit');
214
+ const conflict = candidates.some((edge) => {
215
+ var _a;
216
+ const other = AutomaticClaim_schema_1.AutomaticClaimMetadataSchema.safeParse(edge.attributes[exports.AUTOMATIC_CLAIM]);
217
+ return (other.success &&
218
+ validateStoredAutomaticClaim({ ...graph, entities: [...graph.entities, ...entities] }, edge, check) &&
219
+ other.data.claim.polarity !== claim.polarity &&
220
+ ((_a = (0, schemas_1.extractionMetadataFromAttributes)(edge.attributes)) === null || _a === void 0 ? void 0 : _a.review_status) !== 'rejected');
221
+ });
222
+ const existingTarget = graph.entities.find((entity) => entity.uuid === targetId);
223
+ const targetReview = existingTarget
224
+ ? (_b = (0, schemas_1.extractionMetadataFromAttributes)(existingTarget.attributes)) === null || _b === void 0 ? void 0 : _b.review_status
225
+ : undefined;
226
+ const accepted = policy.autoAccept && !conflict && (!existingTarget || targetReview === 'accepted');
227
+ const metadata = {
228
+ version: 2,
229
+ source: 'policy',
230
+ confidence: null,
231
+ review_status: accepted ? 'accepted' : 'proposed',
232
+ threshold_decision: accepted ? 'auto_accepted' : 'pending_review',
233
+ extracted_at: timestamp,
234
+ episode_uuids: [sourceId],
235
+ reviewed_at: null,
236
+ reviewed_by: null,
237
+ };
238
+ const quality = {
239
+ version: 1,
240
+ category: 'preference',
241
+ policy: 'durableTemporal',
242
+ evidence: [
243
+ { source_id: sourceId, start: claim.rawClauseSpan.start, end: claim.rawClauseSpan.end },
244
+ ],
245
+ temporal: { status: 'none', source_times: [source.reference_time], timezone: null },
246
+ };
247
+ const claimMetadata = AutomaticClaim_schema_1.AutomaticClaimMetadataSchema.parse({
248
+ version: 1,
249
+ generation: 'literal-parser-v1',
250
+ subjectId: envelope.bindingRef.subjectId,
251
+ binding: envelope.bindingRef,
252
+ issuer: envelope.issuer,
253
+ actorReference: envelope.actorReference,
254
+ policy,
255
+ claim,
256
+ sourceId,
257
+ key,
258
+ });
259
+ const target = [...graph.entities, ...entities].find((entity) => entity.uuid === targetId);
260
+ if (target &&
261
+ (target.group_id !== group ||
262
+ target.entity_type !== 'preference_value' ||
263
+ target.name !== claim.literal))
264
+ throw new Error('Engram automatic: identity_collision');
265
+ if (!target) {
266
+ entities.push(schemas_1.EntityNodeSchema.parse({
267
+ uuid: targetId,
268
+ group_id: group,
269
+ name: claim.literal,
270
+ entity_type: 'preference_value',
271
+ summary: '',
272
+ created_at: timestamp,
273
+ updated_at: timestamp,
274
+ attributes: {
275
+ engram_extraction: metadata,
276
+ engram_memory_quality: quality,
277
+ engram_literal_v1: {
278
+ version: 1,
279
+ languageTag: claim.languageTag,
280
+ literal: claim.literal,
281
+ key: (0, QueueState_1.fingerprint)(valueKey),
282
+ },
283
+ },
284
+ }));
285
+ outcome.counts.entities_created++;
286
+ }
287
+ edges.push(schemas_1.EntityEdgeSchema.parse({
288
+ uuid: edgeId,
289
+ group_id: group,
290
+ source_node_uuid: envelope.bindingRef.subjectId,
291
+ target_node_uuid: targetId,
292
+ name: 'PREFERS',
293
+ fact: claim.clause,
294
+ episodes: [sourceId],
295
+ created_at: timestamp,
296
+ updated_at: timestamp,
297
+ attributes: {
298
+ engram_extraction: metadata,
299
+ engram_memory_quality: quality,
300
+ [exports.AUTOMATIC_CLAIM]: claimMetadata,
301
+ },
302
+ }));
303
+ outcome.counts.edges_created++;
304
+ receipt.items.push({
305
+ claimId: edgeId,
306
+ state: accepted ? 'accepted' : 'proposed',
307
+ persisted: false,
308
+ mutation: 'pending',
309
+ reasons: [conflict ? 'conflicting_claim' : accepted ? 'selected' : 'review_required'],
310
+ });
311
+ }
312
+ }
313
+ outcome.automatic = AutomaticClaim_schema_1.AutomaticReceiptSchema.parse(receipt);
314
+ extensionBytes += Buffer.byteLength(JSON.stringify(receipt));
315
+ for (const item of [...entities, ...edges])
316
+ extensionBytes += Buffer.byteLength(JSON.stringify({
317
+ claim: item.attributes[exports.AUTOMATIC_CLAIM],
318
+ literal: item.attributes.engram_literal_v1,
319
+ }));
320
+ if (extensionBytes > 32 * 1024)
321
+ throw new ExtractionDiagnostics_1.ExtractionBudgetError('metadata_bytes');
322
+ check();
323
+ return {
324
+ version: 1,
325
+ group_id: group,
326
+ graph_hash: (0, QueueState_1.graphFingerprint)(graph, group),
327
+ source_guards: sourceIds.map((id) => ({
328
+ uuid: id,
329
+ hash: (0, QueueState_1.sourceFingerprint)(graph.episodes.find((ep) => ep.uuid === id)),
330
+ })),
331
+ entities,
332
+ edges,
333
+ outcome,
334
+ };
335
+ }
336
+ function validateAutomaticPlan(graph, plan) {
337
+ var _a, _b, _c, _d, _e;
338
+ const sources = plan.source_guards.map((guard) => graph.episodes.find((ep) => ep.uuid === guard.uuid && ep.group_id === plan.group_id));
339
+ const hasEnvelope = sources.some((source) => (source === null || source === void 0 ? void 0 : source.attributes[exports.AUTOMATIC_ENVELOPE]) !== undefined);
340
+ if (!hasEnvelope) {
341
+ if (plan.outcome.automatic ||
342
+ [...plan.entities, ...plan.edges].some((item) => {
343
+ var _a;
344
+ return item.attributes[exports.AUTOMATIC_CLAIM] ||
345
+ ((_a = (0, schemas_1.extractionMetadataFromAttributes)(item.attributes)) === null || _a === void 0 ? void 0 : _a.source) === 'policy';
346
+ }))
347
+ throw new Error('Engram automatic: missing_source_authority');
348
+ return false;
349
+ }
350
+ if (plan.outcome.error_count || plan.outcome.errors.length || plan.outcome.status !== 'succeeded')
351
+ throw new Error('Engram automatic: failed_plan');
352
+ const first = AutomaticMemory_schema_1.AutomaticSourceEnvelopeSchema.parse((_a = sources[0]) === null || _a === void 0 ? void 0 : _a.attributes[exports.AUTOMATIC_ENVELOPE]);
353
+ if (!first.policy)
354
+ throw new Error('Engram automatic: missing_policy');
355
+ const timestamp = (_e = (_c = (_b = plan.edges[0]) === null || _b === void 0 ? void 0 : _b.created_at) !== null && _c !== void 0 ? _c : (_d = plan.entities[0]) === null || _d === void 0 ? void 0 : _d.created_at) !== null && _e !== void 0 ? _e : new Date().toISOString();
356
+ const empty = {
357
+ ...plan.outcome,
358
+ counts: {
359
+ entities_created: 0,
360
+ entities_updated: 0,
361
+ edges_created: 0,
362
+ edges_updated: 0,
363
+ edges_expired: 0,
364
+ unchanged: 0,
365
+ malformed: 0,
366
+ filtered: 0,
367
+ },
368
+ };
369
+ const expected = planAutomaticClaims(graph, plan.group_id, plan.source_guards.map((guard) => guard.uuid), first.policy, empty, timestamp);
370
+ if ((0, QueueState_1.canonical)(expected.entities) !== (0, QueueState_1.canonical)(plan.entities) ||
371
+ (0, QueueState_1.canonical)(expected.edges) !== (0, QueueState_1.canonical)(plan.edges) ||
372
+ (0, QueueState_1.canonical)(expected.outcome.automatic) !== (0, QueueState_1.canonical)(plan.outcome.automatic) ||
373
+ (0, QueueState_1.canonical)(expected.outcome.counts) !== (0, QueueState_1.canonical)(plan.outcome.counts))
374
+ throw new Error('Engram automatic: invalid_plan');
375
+ return true;
376
+ }
377
+ function committedAutomaticReceipt(outcome, timestamp) {
378
+ if (!outcome.automatic)
379
+ return;
380
+ outcome.automatic.persisted = true;
381
+ outcome.automatic.commitAt = timestamp;
382
+ for (const item of outcome.automatic.items)
383
+ if (item.mutation === 'pending') {
384
+ item.persisted = true;
385
+ item.mutation = 'created';
386
+ }
387
+ }
388
+ function failedAutomaticReceipt(outcome) {
389
+ if (!outcome.automatic)
390
+ return;
391
+ outcome.automatic.persisted = false;
392
+ outcome.automatic.commitAt = null;
393
+ for (const item of outcome.automatic.items)
394
+ if (item.mutation === 'pending') {
395
+ item.persisted = false;
396
+ item.mutation = 'none';
397
+ item.state = 'deferred';
398
+ item.reasons = ['interrupted'];
399
+ }
400
+ }
401
+ //# sourceMappingURL=AutomaticClaims.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutomaticClaims.js","sourceRoot":"","sources":["../../src/extraction/AutomaticClaims.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { type AutomaticActor, type AutomaticBindingReference, type AutomaticCaptureFailureReason, type AutomaticPolicy, type AutomaticPolicyInput, type AutomaticPreferenceParseResult, type AutomaticSourceEnvelope } from '../schemas/AutomaticMemory.schema';
2
+ export declare function compileAutomaticPolicy(input?: AutomaticPolicyInput): AutomaticPolicy;
3
+ export declare function captureEnvelope(content: string, rawContent: string, actor: AutomaticActor, bindingRef: AutomaticBindingReference, intent: boolean, policy?: AutomaticPolicy): {
4
+ ok: true;
5
+ envelope: AutomaticSourceEnvelope;
6
+ } | {
7
+ ok: false;
8
+ reason: AutomaticCaptureFailureReason;
9
+ };
10
+ export declare function parseAutomaticPreferences(envelope: AutomaticSourceEnvelope, content: string): AutomaticPreferenceParseResult;