sentinel-agentos 0.3.7 → 0.3.8

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 (97) hide show
  1. package/package.json +1 -1
  2. package/LICENSE +0 -21
  3. package/README.md +0 -1797
  4. package/dist/adapters/evaluation-bridge.d.ts +0 -78
  5. package/dist/adapters/evaluation-bridge.d.ts.map +0 -1
  6. package/dist/adapters/evaluation-bridge.js +0 -273
  7. package/dist/adapters/evaluation-bridge.js.map +0 -1
  8. package/dist/adapters/memory-bridge.d.ts +0 -110
  9. package/dist/adapters/memory-bridge.d.ts.map +0 -1
  10. package/dist/adapters/memory-bridge.js +0 -316
  11. package/dist/adapters/memory-bridge.js.map +0 -1
  12. package/dist/adapters/migrate.d.ts +0 -2
  13. package/dist/adapters/migrate.d.ts.map +0 -1
  14. package/dist/adapters/migrate.js +0 -63
  15. package/dist/adapters/migrate.js.map +0 -1
  16. package/dist/api.d.ts +0 -151
  17. package/dist/api.d.ts.map +0 -1
  18. package/dist/api.js +0 -179
  19. package/dist/api.js.map +0 -1
  20. package/dist/cli.d.ts +0 -16
  21. package/dist/cli.d.ts.map +0 -1
  22. package/dist/cli.js +0 -350
  23. package/dist/cli.js.map +0 -1
  24. package/dist/core.d.ts +0 -156
  25. package/dist/core.d.ts.map +0 -1
  26. package/dist/core.js +0 -400
  27. package/dist/core.js.map +0 -1
  28. package/dist/dashboard.html +0 -175
  29. package/dist/evaluator/exec-evaluator.d.ts +0 -102
  30. package/dist/evaluator/exec-evaluator.d.ts.map +0 -1
  31. package/dist/evaluator/exec-evaluator.js +0 -266
  32. package/dist/evaluator/exec-evaluator.js.map +0 -1
  33. package/dist/evaluator/feedback.d.ts +0 -96
  34. package/dist/evaluator/feedback.d.ts.map +0 -1
  35. package/dist/evaluator/feedback.js +0 -419
  36. package/dist/evaluator/feedback.js.map +0 -1
  37. package/dist/evaluator/profiler.d.ts +0 -55
  38. package/dist/evaluator/profiler.d.ts.map +0 -1
  39. package/dist/evaluator/profiler.js +0 -130
  40. package/dist/evaluator/profiler.js.map +0 -1
  41. package/dist/guard/audit-log.d.ts +0 -47
  42. package/dist/guard/audit-log.d.ts.map +0 -1
  43. package/dist/guard/audit-log.js +0 -199
  44. package/dist/guard/audit-log.js.map +0 -1
  45. package/dist/guard/container-sandbox.d.ts +0 -25
  46. package/dist/guard/container-sandbox.d.ts.map +0 -1
  47. package/dist/guard/container-sandbox.js +0 -145
  48. package/dist/guard/container-sandbox.js.map +0 -1
  49. package/dist/guard/risk-gate.d.ts +0 -101
  50. package/dist/guard/risk-gate.d.ts.map +0 -1
  51. package/dist/guard/risk-gate.js +0 -200
  52. package/dist/guard/risk-gate.js.map +0 -1
  53. package/dist/guard/sandbox.d.ts +0 -112
  54. package/dist/guard/sandbox.d.ts.map +0 -1
  55. package/dist/guard/sandbox.js +0 -379
  56. package/dist/guard/sandbox.js.map +0 -1
  57. package/dist/guard/schema-gate.d.ts +0 -90
  58. package/dist/guard/schema-gate.d.ts.map +0 -1
  59. package/dist/guard/schema-gate.js +0 -452
  60. package/dist/guard/schema-gate.js.map +0 -1
  61. package/dist/guard/snapshot-verify.d.ts +0 -111
  62. package/dist/guard/snapshot-verify.d.ts.map +0 -1
  63. package/dist/guard/snapshot-verify.js +0 -571
  64. package/dist/guard/snapshot-verify.js.map +0 -1
  65. package/dist/index.d.ts +0 -28
  66. package/dist/index.d.ts.map +0 -1
  67. package/dist/index.js +0 -59
  68. package/dist/index.js.map +0 -1
  69. package/dist/memory/episodic.d.ts +0 -76
  70. package/dist/memory/episodic.d.ts.map +0 -1
  71. package/dist/memory/episodic.js +0 -289
  72. package/dist/memory/episodic.js.map +0 -1
  73. package/dist/memory/semantic.d.ts +0 -68
  74. package/dist/memory/semantic.d.ts.map +0 -1
  75. package/dist/memory/semantic.js +0 -299
  76. package/dist/memory/semantic.js.map +0 -1
  77. package/dist/memory/working.d.ts +0 -53
  78. package/dist/memory/working.d.ts.map +0 -1
  79. package/dist/memory/working.js +0 -166
  80. package/dist/memory/working.js.map +0 -1
  81. package/dist/middleware/openclaw.d.ts +0 -45
  82. package/dist/middleware/openclaw.d.ts.map +0 -1
  83. package/dist/middleware/openclaw.js +0 -95
  84. package/dist/middleware/openclaw.js.map +0 -1
  85. package/dist/middleware/wrapper.d.ts +0 -54
  86. package/dist/middleware/wrapper.d.ts.map +0 -1
  87. package/dist/middleware/wrapper.js +0 -155
  88. package/dist/middleware/wrapper.js.map +0 -1
  89. package/dist/server.d.ts +0 -45
  90. package/dist/server.d.ts.map +0 -1
  91. package/dist/server.js +0 -256
  92. package/dist/server.js.map +0 -1
  93. package/dist/types/index.d.ts +0 -228
  94. package/dist/types/index.d.ts.map +0 -1
  95. package/dist/types/index.js +0 -23
  96. package/dist/types/index.js.map +0 -1
  97. package/scripts/sentinel-light.js +0 -234
package/dist/index.js DELETED
@@ -1,59 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.sentinelPlugin = exports.wrapAgent = exports.createServer = exports.AgentOSAPI = exports.AgentProfiler = exports.ImplicitFeedbackEngine = exports.PostExecEvaluator = exports.RuntimeEvaluator = exports.PreExecEvaluator = exports.SemanticMemoryStore = exports.EpisodicMemory = exports.WorkingMemory = exports.SandboxViolation = exports.SandboxExecutor = exports.AuditLog = exports.VerifyGate = exports.SnapshotGate = exports.DEFAULT_RISK_THRESHOLDS = exports.RiskGate = exports.SchemaGate = exports.AgentOS = void 0;
18
- var core_1 = require("./core");
19
- Object.defineProperty(exports, "AgentOS", { enumerable: true, get: function () { return core_1.AgentOS; } });
20
- __exportStar(require("./types"), exports);
21
- var schema_gate_1 = require("./guard/schema-gate");
22
- Object.defineProperty(exports, "SchemaGate", { enumerable: true, get: function () { return schema_gate_1.SchemaGate; } });
23
- var risk_gate_1 = require("./guard/risk-gate");
24
- Object.defineProperty(exports, "RiskGate", { enumerable: true, get: function () { return risk_gate_1.RiskGate; } });
25
- var risk_gate_2 = require("./guard/risk-gate");
26
- Object.defineProperty(exports, "DEFAULT_RISK_THRESHOLDS", { enumerable: true, get: function () { return risk_gate_2.DEFAULT_RISK_THRESHOLDS; } });
27
- var snapshot_verify_1 = require("./guard/snapshot-verify");
28
- Object.defineProperty(exports, "SnapshotGate", { enumerable: true, get: function () { return snapshot_verify_1.SnapshotGate; } });
29
- Object.defineProperty(exports, "VerifyGate", { enumerable: true, get: function () { return snapshot_verify_1.VerifyGate; } });
30
- var audit_log_1 = require("./guard/audit-log");
31
- Object.defineProperty(exports, "AuditLog", { enumerable: true, get: function () { return audit_log_1.AuditLog; } });
32
- var sandbox_1 = require("./guard/sandbox");
33
- Object.defineProperty(exports, "SandboxExecutor", { enumerable: true, get: function () { return sandbox_1.SandboxExecutor; } });
34
- var sandbox_2 = require("./guard/sandbox");
35
- Object.defineProperty(exports, "SandboxViolation", { enumerable: true, get: function () { return sandbox_2.SandboxViolation; } });
36
- var working_1 = require("./memory/working");
37
- Object.defineProperty(exports, "WorkingMemory", { enumerable: true, get: function () { return working_1.WorkingMemory; } });
38
- var episodic_1 = require("./memory/episodic");
39
- Object.defineProperty(exports, "EpisodicMemory", { enumerable: true, get: function () { return episodic_1.EpisodicMemory; } });
40
- var semantic_1 = require("./memory/semantic");
41
- Object.defineProperty(exports, "SemanticMemoryStore", { enumerable: true, get: function () { return semantic_1.SemanticMemoryStore; } });
42
- var exec_evaluator_1 = require("./evaluator/exec-evaluator");
43
- Object.defineProperty(exports, "PreExecEvaluator", { enumerable: true, get: function () { return exec_evaluator_1.PreExecEvaluator; } });
44
- Object.defineProperty(exports, "RuntimeEvaluator", { enumerable: true, get: function () { return exec_evaluator_1.RuntimeEvaluator; } });
45
- Object.defineProperty(exports, "PostExecEvaluator", { enumerable: true, get: function () { return exec_evaluator_1.PostExecEvaluator; } });
46
- var feedback_1 = require("./evaluator/feedback");
47
- Object.defineProperty(exports, "ImplicitFeedbackEngine", { enumerable: true, get: function () { return feedback_1.ImplicitFeedbackEngine; } });
48
- var profiler_1 = require("./evaluator/profiler");
49
- Object.defineProperty(exports, "AgentProfiler", { enumerable: true, get: function () { return profiler_1.AgentProfiler; } });
50
- var api_1 = require("./api");
51
- Object.defineProperty(exports, "AgentOSAPI", { enumerable: true, get: function () { return api_1.AgentOSAPI; } });
52
- // --- Integration Layer ---
53
- var server_1 = require("./server");
54
- Object.defineProperty(exports, "createServer", { enumerable: true, get: function () { return server_1.createServer; } });
55
- var wrapper_1 = require("./middleware/wrapper");
56
- Object.defineProperty(exports, "wrapAgent", { enumerable: true, get: function () { return wrapper_1.wrapAgent; } });
57
- var openclaw_1 = require("./middleware/openclaw");
58
- Object.defineProperty(exports, "sentinelPlugin", { enumerable: true, get: function () { return openclaw_1.sentinelPlugin; } });
59
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,+BAAiC;AAAxB,+FAAA,OAAO,OAAA;AAChB,0CAAwB;AACxB,mDAAiD;AAAxC,yGAAA,UAAU,OAAA;AAEnB,+CAA6C;AAApC,qGAAA,QAAQ,OAAA;AAEjB,+CAA4D;AAAnD,oHAAA,uBAAuB,OAAA;AAChC,2DAAmE;AAA1D,+GAAA,YAAY,OAAA;AAAE,6GAAA,UAAU,OAAA;AAEjC,+CAA6C;AAApC,qGAAA,QAAQ,OAAA;AACjB,2CAAkD;AAAzC,0GAAA,eAAe,OAAA;AAExB,2CAAmD;AAA1C,2GAAA,gBAAgB,OAAA;AACzB,4CAAiD;AAAxC,wGAAA,aAAa,OAAA;AAEtB,8CAAmD;AAA1C,0GAAA,cAAc,OAAA;AACvB,8CAAwD;AAA/C,+GAAA,mBAAmB,OAAA;AAC5B,6DAAmG;AAA1F,kHAAA,gBAAgB,OAAA;AAAE,kHAAA,gBAAgB,OAAA;AAAE,mHAAA,iBAAiB,OAAA;AAC9D,iDAA8D;AAArD,kHAAA,sBAAsB,OAAA;AAC/B,iDAAqD;AAA5C,yGAAA,aAAa,OAAA;AAEtB,6BAAmC;AAA1B,iGAAA,UAAU,OAAA;AAEnB,4BAA4B;AAC5B,mCAAwC;AAA/B,sGAAA,YAAY,OAAA;AACrB,gDAAiD;AAAxC,oGAAA,SAAS,OAAA;AAElB,kDAAuD;AAA9C,0GAAA,cAAc,OAAA"}
@@ -1,76 +0,0 @@
1
- import { EpisodicEvent, EventType } from '../types';
2
- /**
3
- * Episodic Memory — cross-session event timeline.
4
- *
5
- * Stores past events as a timeline with automatic importance scoring
6
- * and progressive compression. Important events stay detailed forever;
7
- * low-importance events gradually compress to one-liners and eventually
8
- * get forgotten.
9
- */
10
- export declare class EpisodicMemory {
11
- private events;
12
- private maxSizeKb;
13
- private storagePath?;
14
- constructor(maxSizeKb?: number);
15
- /** Enable disk persistence */
16
- enablePersistence(workspaceRoot: string): void;
17
- /**
18
- * Record a new episodic event.
19
- *
20
- * @param type - Event classification
21
- * @param content - Event description
22
- * @param tags - Auto-extracted tags
23
- * @param relatedEntities - Related projects/files/people
24
- * @param customImportanceBoost - Additional importance boost (0-1)
25
- */
26
- record(type: EventType, content: string, tags?: string[], relatedEntities?: string[], customImportanceBoost?: number): EpisodicEvent;
27
- /**
28
- * Query events by filter.
29
- */
30
- query(filter?: {
31
- type?: EventType;
32
- minImportance?: number;
33
- since?: number;
34
- until?: number;
35
- tags?: string[];
36
- limit?: number;
37
- }): EpisodicEvent[];
38
- /**
39
- * Get all events (newest first).
40
- */
41
- getAll(): EpisodicEvent[];
42
- /**
43
- * Get events that should be injected at session startup.
44
- *
45
- * Returns: high-importance events from the last 7 days,
46
- * plus the latest milestone and corrections.
47
- */
48
- getContextualEvents(days?: number, max?: number): EpisodicEvent[];
49
- /**
50
- * Generate a context summary string for injection into session prompt.
51
- */
52
- generateContextSummary(maxChars?: number): string;
53
- /** Count events matching a set of tags */
54
- private countByTags;
55
- /** Total number of events */
56
- get count(): number;
57
- /** Estimated size in bytes */
58
- get estimatedSize(): number;
59
- /** Maximum configured size in KB */
60
- get maxSize(): number;
61
- /**
62
- * Compress events if total size exceeds threshold.
63
- * Progressive: full → summary → one-liner → forgotten (deleted).
64
- */
65
- private compressIfNeeded;
66
- /**
67
- * Compress a single event to the next level.
68
- */
69
- private compressEvent;
70
- private typeIcon;
71
- /** Persist to disk */
72
- private save;
73
- /** Load from disk */
74
- private load;
75
- }
76
- //# sourceMappingURL=episodic.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"episodic.d.ts","sourceRoot":"","sources":["../../src/memory/episodic.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,SAAS,EACV,MAAM,UAAU,CAAC;AA2BlB;;;;;;;GAOG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAC,CAAS;gBAEjB,SAAS,SAAM;IAI3B,8BAA8B;IAC9B,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAK9C;;;;;;;;OAQG;IACH,MAAM,CACJ,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,MAAM,EAAO,EACnB,eAAe,GAAE,MAAM,EAAO,EAC9B,qBAAqB,SAAI,GACxB,aAAa;IAiChB;;OAEG;IACH,KAAK,CAAC,MAAM,GAAE;QACZ,IAAI,CAAC,EAAE,SAAS,CAAC;QACjB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KACX,GAAG,aAAa,EAAE;IA4BxB;;OAEG;IACH,MAAM,IAAI,aAAa,EAAE;IAIzB;;;;;OAKG;IACH,mBAAmB,CAAC,IAAI,SAAI,EAAE,GAAG,SAAK,GAAG,aAAa,EAAE;IASxD;;OAEG;IACH,sBAAsB,CAAC,QAAQ,SAAO,GAAG,MAAM;IAqB/C,0CAA0C;IAC1C,OAAO,CAAC,WAAW;IAMnB,6BAA6B;IAC7B,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,8BAA8B;IAC9B,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,oCAAoC;IACpC,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IA8BxB;;OAEG;IACH,OAAO,CAAC,aAAa;IA6BrB,OAAO,CAAC,QAAQ;IAehB,sBAAsB;IACtB,OAAO,CAAC,IAAI;IAWZ,qBAAqB;IACrB,OAAO,CAAC,IAAI;CAUb"}
@@ -1,289 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.EpisodicMemory = void 0;
37
- const crypto = __importStar(require("crypto"));
38
- const fs = __importStar(require("fs"));
39
- const path = __importStar(require("path"));
40
- /**
41
- * Generate a unique event ID.
42
- */
43
- function generateEventId() {
44
- return `ep_${Date.now()}_${crypto.randomBytes(4).toString('hex')}`;
45
- }
46
- /**
47
- * Base importance values by event type.
48
- */
49
- const BASE_IMPORTANCE = {
50
- tool_call: 0.2,
51
- tool_failure: 0.6,
52
- decision: 0.8,
53
- correction: 0.9,
54
- publish: 0.7,
55
- error: 0.7,
56
- milestone: 0.8,
57
- note: 0.3,
58
- user_feedback: 0.8,
59
- };
60
- /**
61
- * Episodic Memory — cross-session event timeline.
62
- *
63
- * Stores past events as a timeline with automatic importance scoring
64
- * and progressive compression. Important events stay detailed forever;
65
- * low-importance events gradually compress to one-liners and eventually
66
- * get forgotten.
67
- */
68
- class EpisodicMemory {
69
- events = [];
70
- maxSizeKb;
71
- storagePath;
72
- constructor(maxSizeKb = 500) {
73
- this.maxSizeKb = maxSizeKb;
74
- }
75
- /** Enable disk persistence */
76
- enablePersistence(workspaceRoot) {
77
- this.storagePath = path.join(workspaceRoot, '.agentos', 'episodic.json');
78
- this.load();
79
- }
80
- /**
81
- * Record a new episodic event.
82
- *
83
- * @param type - Event classification
84
- * @param content - Event description
85
- * @param tags - Auto-extracted tags
86
- * @param relatedEntities - Related projects/files/people
87
- * @param customImportanceBoost - Additional importance boost (0-1)
88
- */
89
- record(type, content, tags = [], relatedEntities = [], customImportanceBoost = 0) {
90
- const baseImportance = BASE_IMPORTANCE[type] ?? 0.3;
91
- // RecencyBoost: DESIGN.md §5.4 — newer = more important
92
- // Boost = 1.0 + max(0, 1.0 - ageInDays / 30)
93
- const recencyBoost = 1.0; // Brand new event = max recency (1.0)
94
- // FrequencyBoost: same-tag events +0.1 each (max +0.5)
95
- const frequencyBoost = Math.min(0.5, this.countByTags(tags) * 0.1);
96
- const importance = Math.min(1.0, baseImportance * recencyBoost * (1 + frequencyBoost) + customImportanceBoost);
97
- const event = {
98
- id: generateEventId(),
99
- timestamp: Date.now(),
100
- type,
101
- importance: Math.round(importance * 100) / 100,
102
- compression: 'full',
103
- content,
104
- tags,
105
- relatedEntities,
106
- };
107
- this.events.push(event);
108
- this.compressIfNeeded();
109
- this.save();
110
- return event;
111
- }
112
- /**
113
- * Query events by filter.
114
- */
115
- query(filter = {}) {
116
- let results = this.events;
117
- if (filter.type) {
118
- results = results.filter((e) => e.type === filter.type);
119
- }
120
- if (filter.minImportance !== undefined) {
121
- results = results.filter((e) => e.importance >= filter.minImportance);
122
- }
123
- if (filter.since !== undefined) {
124
- results = results.filter((e) => e.timestamp >= filter.since);
125
- }
126
- if (filter.until !== undefined) {
127
- results = results.filter((e) => e.timestamp <= filter.until);
128
- }
129
- if (filter.tags && filter.tags.length > 0) {
130
- results = results.filter((e) => filter.tags.some((t) => e.tags.includes(t)));
131
- }
132
- // Most recent first
133
- results.sort((a, b) => b.timestamp - a.timestamp);
134
- const limit = filter.limit ?? 100;
135
- return results.slice(0, limit);
136
- }
137
- /**
138
- * Get all events (newest first).
139
- */
140
- getAll() {
141
- return [...this.events].sort((a, b) => b.timestamp - a.timestamp);
142
- }
143
- /**
144
- * Get events that should be injected at session startup.
145
- *
146
- * Returns: high-importance events from the last 7 days,
147
- * plus the latest milestone and corrections.
148
- */
149
- getContextualEvents(days = 7, max = 20) {
150
- const cutoff = Date.now() - days * 24 * 60 * 60 * 1000;
151
- return this.events
152
- .filter((e) => e.timestamp >= cutoff || e.importance >= 0.7)
153
- .sort((a, b) => b.importance - a.importance || b.timestamp - a.timestamp)
154
- .slice(0, max);
155
- }
156
- /**
157
- * Generate a context summary string for injection into session prompt.
158
- */
159
- generateContextSummary(maxChars = 2000) {
160
- const recent = this.getContextualEvents();
161
- if (recent.length === 0)
162
- return '';
163
- const lines = ['[AgentOS Episodic Memory]', ''];
164
- for (const event of recent) {
165
- const date = new Date(event.timestamp).toISOString().split('T')[0];
166
- const icon = this.typeIcon(event.type);
167
- const importance = event.importance >= 0.7 ? '⚠️' : '';
168
- const content = event.compression === 'one-liner'
169
- ? event.content
170
- : event.content.slice(0, 200);
171
- lines.push(`${icon} ${importance} [${date}] ${content}`);
172
- if (lines.join('\n').length > maxChars)
173
- break;
174
- }
175
- return lines.join('\n');
176
- }
177
- /** Count events matching a set of tags */
178
- countByTags(tags) {
179
- return this.events.filter((e) => tags.some((t) => e.tags.includes(t))).length;
180
- }
181
- /** Total number of events */
182
- get count() {
183
- return this.events.length;
184
- }
185
- /** Estimated size in bytes */
186
- get estimatedSize() {
187
- return JSON.stringify(this.events).length;
188
- }
189
- /** Maximum configured size in KB */
190
- get maxSize() {
191
- return this.maxSizeKb;
192
- }
193
- /**
194
- * Compress events if total size exceeds threshold.
195
- * Progressive: full → summary → one-liner → forgotten (deleted).
196
- */
197
- compressIfNeeded() {
198
- const now = Date.now();
199
- const maxBytes = this.maxSizeKb * 1024;
200
- while (this.estimatedSize > maxBytes && this.events.length > 0) {
201
- // Find the best candidate for compression:
202
- // oldest + lowest importance + not already forgotten
203
- let candidateIndex = -1;
204
- let candidateScore = Infinity;
205
- for (let i = 0; i < this.events.length; i++) {
206
- const e = this.events[i];
207
- if (e.compression === 'forgotten')
208
- continue;
209
- const ageDays = (now - e.timestamp) / (24 * 60 * 60 * 1000);
210
- const score = e.importance * 100 - ageDays; // lower = better to compress
211
- if (score < candidateScore && e.importance < 0.7) {
212
- candidateScore = score;
213
- candidateIndex = i;
214
- }
215
- }
216
- if (candidateIndex === -1)
217
- break; // Nothing left to compress
218
- const target = this.events[candidateIndex];
219
- if (target)
220
- this.compressEvent(target);
221
- }
222
- }
223
- /**
224
- * Compress a single event to the next level.
225
- */
226
- compressEvent(event) {
227
- const ageDays = (Date.now() - event.timestamp) / (24 * 60 * 60 * 1000);
228
- switch (event.compression) {
229
- case 'full':
230
- if (event.importance < 0.3 && ageDays > 7) {
231
- // Compress to summary (first 100 chars)
232
- event.compression = 'summary';
233
- event.content = event.content.slice(0, 250);
234
- }
235
- break;
236
- case 'summary':
237
- if (event.importance < 0.2 && ageDays > 30) {
238
- // Compress to one-liner
239
- event.compression = 'one-liner';
240
- const firstLine = event.content.split('\n')[0] ?? event.content;
241
- event.content = firstLine.slice(0, 120);
242
- }
243
- break;
244
- case 'one-liner':
245
- if (event.importance < 0.1 && ageDays > 90) {
246
- event.compression = 'forgotten';
247
- }
248
- break;
249
- }
250
- }
251
- typeIcon(type) {
252
- switch (type) {
253
- case 'tool_call': return '🔧';
254
- case 'tool_failure': return '❌';
255
- case 'decision': return '🎯';
256
- case 'correction': return '✏️';
257
- case 'publish': return '📦';
258
- case 'error': return '💥';
259
- case 'milestone': return '🏁';
260
- case 'note': return '📝';
261
- case 'user_feedback': return '💬';
262
- default: return '📌';
263
- }
264
- }
265
- /** Persist to disk */
266
- save() {
267
- if (!this.storagePath)
268
- return;
269
- const dir = path.dirname(this.storagePath);
270
- if (!fs.existsSync(dir)) {
271
- fs.mkdirSync(dir, { recursive: true });
272
- }
273
- fs.writeFileSync(this.storagePath, JSON.stringify(this.events, null, 2), 'utf-8');
274
- }
275
- /** Load from disk */
276
- load() {
277
- try {
278
- if (fs.existsSync(this.storagePath)) {
279
- const data = fs.readFileSync(this.storagePath, 'utf-8');
280
- this.events = JSON.parse(data);
281
- }
282
- }
283
- catch {
284
- this.events = [];
285
- }
286
- }
287
- }
288
- exports.EpisodicMemory = EpisodicMemory;
289
- //# sourceMappingURL=episodic.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"episodic.js","sourceRoot":"","sources":["../../src/memory/episodic.ts"],"names":[],"mappings":"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"}
@@ -1,68 +0,0 @@
1
- import { SemanticMemory, LearnedRule, UserFact } from '../types';
2
- /**
3
- * Semantic Memory — durable, distilled knowledge.
4
- *
5
- * Stores user preferences, project context, learned rules, and glossary
6
- * extracted from Episodic Memory over time. This is what persists
7
- * across all sessions and gets injected at startup.
8
- */
9
- export declare class SemanticMemoryStore {
10
- private memory;
11
- private storagePath?;
12
- private _saveTimer;
13
- private _dirty;
14
- constructor();
15
- /** Enable disk persistence */
16
- enablePersistence(workspaceRoot: string): void;
17
- /** Get the full semantic memory */
18
- getMemory(): Readonly<SemanticMemory>;
19
- /** Set a user preference */
20
- setPreference(key: string, value: unknown): void;
21
- /** Get a user preference */
22
- getPreference<T = unknown>(key: string): T | undefined;
23
- /** Get all preferences */
24
- getAllPreferences(): Record<string, unknown>;
25
- /** Remove a preference */
26
- removePreference(key: string): void;
27
- /** Add a fact about the user */
28
- addFact(fact: string): void;
29
- /** Get active (non-stale) user facts — updates lastReferenced on read */
30
- getFacts(maxStaleMs?: number): string[];
31
- /** Get all facts including stale ones */
32
- getAllFacts(): UserFact[];
33
- /** Set or update project context — merges with existing, preserves extra fields */
34
- setProjectContext(projectName: string, context: Record<string, unknown>): void;
35
- /** Get project context */
36
- getProjectContext(projectName: string): Record<string, unknown> | undefined;
37
- /** Get all project contexts */
38
- getAllProjects(): string[];
39
- /** Learn a new rule or reinforce an existing one */
40
- learnRule(rule: string, source: string): void;
41
- /** Get rules above a confidence threshold — updates lastReferenced on read */
42
- getRules(minConfidence?: number): LearnedRule[];
43
- /** Decay confidence of rules not referenced in a given timespan */
44
- decayUnusedRules(maxStaleMs?: number): number;
45
- /** Get all rules regardless of confidence */
46
- getAllRules(): LearnedRule[];
47
- /** Add or update a glossary term */
48
- defineTerm(term: string, meaning: string): void;
49
- /** Look up a glossary term */
50
- lookupTerm(term: string): string | undefined;
51
- /** Get the entire glossary */
52
- getGlossary(): Record<string, string>;
53
- /**
54
- * Generate a context summary for injection into the session prompt.
55
- * Concise but informative — designed to fit in a system prompt prefix.
56
- */
57
- generateContextSummary(maxChars?: number): string;
58
- /** Persist to disk */
59
- private markDirty;
60
- /** Persist to disk */
61
- private persist;
62
- private save;
63
- /** Force immediate write to disk (for testing / shutdown) */
64
- flush(): void;
65
- /** Load from disk */
66
- private load;
67
- }
68
- //# sourceMappingURL=semantic.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"semantic.d.ts","sourceRoot":"","sources":["../../src/memory/semantic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAIjE;;;;;;GAMG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,MAAM,CAAS;;IAYvB,8BAA8B;IAC9B,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAK9C,mCAAmC;IACnC,SAAS,IAAI,QAAQ,CAAC,cAAc,CAAC;IAMrC,4BAA4B;IAC5B,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAKhD,4BAA4B;IAC5B,aAAa,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAItD,0BAA0B;IAC1B,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAI5C,0BAA0B;IAC1B,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAOnC,gCAAgC;IAChC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAc3B,yEAAyE;IACzE,QAAQ,CAAC,UAAU,SAA2B,GAAG,MAAM,EAAE;IAQzD,yCAAyC;IACzC,WAAW,IAAI,QAAQ,EAAE;IAMzB,mFAAmF;IACnF,iBAAiB,CACf,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,IAAI;IAMP,0BAA0B;IAC1B,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IAI3E,+BAA+B;IAC/B,cAAc,IAAI,MAAM,EAAE;IAM1B,oDAAoD;IACpD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAsB7C,8EAA8E;IAC9E,QAAQ,CAAC,aAAa,SAAM,GAAG,WAAW,EAAE;IAQ5C,mEAAmE;IACnE,gBAAgB,CAAC,UAAU,SAA0B,GAAG,MAAM;IAa9D,6CAA6C;IAC7C,WAAW,IAAI,WAAW,EAAE;IAM5B,oCAAoC;IACpC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAK/C,8BAA8B;IAC9B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI5C,8BAA8B;IAC9B,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAIrC;;;OAGG;IACH,sBAAsB,CAAC,QAAQ,SAAO,GAAG,MAAM;IAmD/C,sBAAsB;IACtB,OAAO,CAAC,SAAS;IAajB,sBAAsB;IACtB,OAAO,CAAC,OAAO;IAWf,OAAO,CAAC,IAAI;IAIZ,6DAA6D;IAC7D,KAAK,IAAI,IAAI;IAWb,qBAAqB;IACrB,OAAO,CAAC,IAAI;CAUb"}