@monoes/memory 1.0.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.
Files changed (178) hide show
  1. package/README.md +902 -0
  2. package/dist/agent-memory-scope.d.ts +131 -0
  3. package/dist/agent-memory-scope.d.ts.map +1 -0
  4. package/dist/agent-memory-scope.js +230 -0
  5. package/dist/agent-memory-scope.js.map +1 -0
  6. package/dist/agentdb-adapter.d.ts +165 -0
  7. package/dist/agentdb-adapter.d.ts.map +1 -0
  8. package/dist/agentdb-adapter.js +836 -0
  9. package/dist/agentdb-adapter.js.map +1 -0
  10. package/dist/agentdb-backend.d.ts +218 -0
  11. package/dist/agentdb-backend.d.ts.map +1 -0
  12. package/dist/agentdb-backend.js +879 -0
  13. package/dist/agentdb-backend.js.map +1 -0
  14. package/dist/auto-memory-bridge.d.ts +230 -0
  15. package/dist/auto-memory-bridge.d.ts.map +1 -0
  16. package/dist/auto-memory-bridge.js +730 -0
  17. package/dist/auto-memory-bridge.js.map +1 -0
  18. package/dist/cache-manager.d.ts +134 -0
  19. package/dist/cache-manager.d.ts.map +1 -0
  20. package/dist/cache-manager.js +410 -0
  21. package/dist/cache-manager.js.map +1 -0
  22. package/dist/checkpointer.d.ts +78 -0
  23. package/dist/checkpointer.d.ts.map +1 -0
  24. package/dist/checkpointer.js +174 -0
  25. package/dist/checkpointer.js.map +1 -0
  26. package/dist/controller-registry.d.ts +216 -0
  27. package/dist/controller-registry.d.ts.map +1 -0
  28. package/dist/controller-registry.js +897 -0
  29. package/dist/controller-registry.js.map +1 -0
  30. package/dist/database-provider.d.ts +87 -0
  31. package/dist/database-provider.d.ts.map +1 -0
  32. package/dist/database-provider.js +434 -0
  33. package/dist/database-provider.js.map +1 -0
  34. package/dist/diskann-backend.d.ts +126 -0
  35. package/dist/diskann-backend.d.ts.map +1 -0
  36. package/dist/diskann-backend.js +324 -0
  37. package/dist/diskann-backend.js.map +1 -0
  38. package/dist/episodic-store.d.ts +58 -0
  39. package/dist/episodic-store.d.ts.map +1 -0
  40. package/dist/episodic-store.js +160 -0
  41. package/dist/episodic-store.js.map +1 -0
  42. package/dist/hnsw-index.d.ts +111 -0
  43. package/dist/hnsw-index.d.ts.map +1 -0
  44. package/dist/hnsw-index.js +778 -0
  45. package/dist/hnsw-index.js.map +1 -0
  46. package/dist/hnsw-lite.d.ts +29 -0
  47. package/dist/hnsw-lite.d.ts.map +1 -0
  48. package/dist/hnsw-lite.js +236 -0
  49. package/dist/hnsw-lite.js.map +1 -0
  50. package/dist/hybrid-backend.d.ts +299 -0
  51. package/dist/hybrid-backend.d.ts.map +1 -0
  52. package/dist/hybrid-backend.js +804 -0
  53. package/dist/hybrid-backend.js.map +1 -0
  54. package/dist/index.d.ts +228 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +379 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/knowledge/document-chunker.d.ts +22 -0
  59. package/dist/knowledge/document-chunker.d.ts.map +1 -0
  60. package/dist/knowledge/document-chunker.js +52 -0
  61. package/dist/knowledge/document-chunker.js.map +1 -0
  62. package/dist/knowledge/index.d.ts +12 -0
  63. package/dist/knowledge/index.d.ts.map +1 -0
  64. package/dist/knowledge/index.js +9 -0
  65. package/dist/knowledge/index.js.map +1 -0
  66. package/dist/knowledge/knowledge-retriever.d.ts +48 -0
  67. package/dist/knowledge/knowledge-retriever.d.ts.map +1 -0
  68. package/dist/knowledge/knowledge-retriever.js +80 -0
  69. package/dist/knowledge/knowledge-retriever.js.map +1 -0
  70. package/dist/knowledge/knowledge-store.d.ts +58 -0
  71. package/dist/knowledge/knowledge-store.d.ts.map +1 -0
  72. package/dist/knowledge/knowledge-store.js +121 -0
  73. package/dist/knowledge/knowledge-store.js.map +1 -0
  74. package/dist/learning-bridge.d.ts +162 -0
  75. package/dist/learning-bridge.d.ts.map +1 -0
  76. package/dist/learning-bridge.js +522 -0
  77. package/dist/learning-bridge.js.map +1 -0
  78. package/dist/memory-graph.d.ts +123 -0
  79. package/dist/memory-graph.d.ts.map +1 -0
  80. package/dist/memory-graph.js +412 -0
  81. package/dist/memory-graph.js.map +1 -0
  82. package/dist/migration.d.ts +68 -0
  83. package/dist/migration.d.ts.map +1 -0
  84. package/dist/migration.js +513 -0
  85. package/dist/migration.js.map +1 -0
  86. package/dist/partitioned-hnsw.d.ts +65 -0
  87. package/dist/partitioned-hnsw.d.ts.map +1 -0
  88. package/dist/partitioned-hnsw.js +209 -0
  89. package/dist/partitioned-hnsw.js.map +1 -0
  90. package/dist/persistent-sona.d.ts +144 -0
  91. package/dist/persistent-sona.d.ts.map +1 -0
  92. package/dist/persistent-sona.js +333 -0
  93. package/dist/persistent-sona.js.map +1 -0
  94. package/dist/procedural/action-record.d.ts +19 -0
  95. package/dist/procedural/action-record.d.ts.map +1 -0
  96. package/dist/procedural/action-record.js +51 -0
  97. package/dist/procedural/action-record.js.map +1 -0
  98. package/dist/procedural/action-sequence-extractor.d.ts +25 -0
  99. package/dist/procedural/action-sequence-extractor.d.ts.map +1 -0
  100. package/dist/procedural/action-sequence-extractor.js +91 -0
  101. package/dist/procedural/action-sequence-extractor.js.map +1 -0
  102. package/dist/procedural/index.d.ts +14 -0
  103. package/dist/procedural/index.d.ts.map +1 -0
  104. package/dist/procedural/index.js +13 -0
  105. package/dist/procedural/index.js.map +1 -0
  106. package/dist/procedural/learned-skill.d.ts +17 -0
  107. package/dist/procedural/learned-skill.d.ts.map +1 -0
  108. package/dist/procedural/learned-skill.js +73 -0
  109. package/dist/procedural/learned-skill.js.map +1 -0
  110. package/dist/procedural/procedure-extractor-worker.d.ts +27 -0
  111. package/dist/procedural/procedure-extractor-worker.d.ts.map +1 -0
  112. package/dist/procedural/procedure-extractor-worker.js +39 -0
  113. package/dist/procedural/procedure-extractor-worker.js.map +1 -0
  114. package/dist/procedural/skill-registry.d.ts +25 -0
  115. package/dist/procedural/skill-registry.d.ts.map +1 -0
  116. package/dist/procedural/skill-registry.js +56 -0
  117. package/dist/procedural/skill-registry.js.map +1 -0
  118. package/dist/procedural/types.d.ts +67 -0
  119. package/dist/procedural/types.d.ts.map +1 -0
  120. package/dist/procedural/types.js +15 -0
  121. package/dist/procedural/types.js.map +1 -0
  122. package/dist/prompt-version-store.d.ts +59 -0
  123. package/dist/prompt-version-store.d.ts.map +1 -0
  124. package/dist/prompt-version-store.js +175 -0
  125. package/dist/prompt-version-store.js.map +1 -0
  126. package/dist/query-builder.d.ts +52 -0
  127. package/dist/query-builder.d.ts.map +1 -0
  128. package/dist/query-builder.js +134 -0
  129. package/dist/query-builder.js.map +1 -0
  130. package/dist/rvf-backend.d.ts +51 -0
  131. package/dist/rvf-backend.d.ts.map +1 -0
  132. package/dist/rvf-backend.js +499 -0
  133. package/dist/rvf-backend.js.map +1 -0
  134. package/dist/rvf-learning-store.d.ts +141 -0
  135. package/dist/rvf-learning-store.d.ts.map +1 -0
  136. package/dist/rvf-learning-store.js +344 -0
  137. package/dist/rvf-learning-store.js.map +1 -0
  138. package/dist/rvf-migration.d.ts +45 -0
  139. package/dist/rvf-migration.d.ts.map +1 -0
  140. package/dist/rvf-migration.js +254 -0
  141. package/dist/rvf-migration.js.map +1 -0
  142. package/dist/sqlite-backend.d.ts +127 -0
  143. package/dist/sqlite-backend.d.ts.map +1 -0
  144. package/dist/sqlite-backend.js +618 -0
  145. package/dist/sqlite-backend.js.map +1 -0
  146. package/dist/sqljs-backend.d.ts +128 -0
  147. package/dist/sqljs-backend.d.ts.map +1 -0
  148. package/dist/sqljs-backend.js +611 -0
  149. package/dist/sqljs-backend.js.map +1 -0
  150. package/dist/tier-manager.d.ts +79 -0
  151. package/dist/tier-manager.d.ts.map +1 -0
  152. package/dist/tier-manager.js +169 -0
  153. package/dist/tier-manager.js.map +1 -0
  154. package/dist/tiers/contextual.d.ts +43 -0
  155. package/dist/tiers/contextual.d.ts.map +1 -0
  156. package/dist/tiers/contextual.js +102 -0
  157. package/dist/tiers/contextual.js.map +1 -0
  158. package/dist/tiers/entity.d.ts +46 -0
  159. package/dist/tiers/entity.d.ts.map +1 -0
  160. package/dist/tiers/entity.js +106 -0
  161. package/dist/tiers/entity.js.map +1 -0
  162. package/dist/tiers/index.d.ts +4 -0
  163. package/dist/tiers/index.d.ts.map +1 -0
  164. package/dist/tiers/index.js +4 -0
  165. package/dist/tiers/index.js.map +1 -0
  166. package/dist/tiers/short-term.d.ts +42 -0
  167. package/dist/tiers/short-term.d.ts.map +1 -0
  168. package/dist/tiers/short-term.js +89 -0
  169. package/dist/tiers/short-term.js.map +1 -0
  170. package/dist/types/checkpoint.d.ts +44 -0
  171. package/dist/types/checkpoint.d.ts.map +1 -0
  172. package/dist/types/checkpoint.js +8 -0
  173. package/dist/types/checkpoint.js.map +1 -0
  174. package/dist/types.d.ts +526 -0
  175. package/dist/types.d.ts.map +1 -0
  176. package/dist/types.js +58 -0
  177. package/dist/types.js.map +1 -0
  178. package/package.json +46 -0
@@ -0,0 +1,73 @@
1
+ /**
2
+ * LearnedSkillSerializer — Creates and serializes LearnedSkill objects.
3
+ *
4
+ * Part of Task 45 — Procedural Memory.
5
+ */
6
+ import { randomUUID } from 'crypto';
7
+ export class LearnedSkillSerializer {
8
+ /**
9
+ * Create a new LearnedSkill from extracted data.
10
+ */
11
+ static create(name, agentSlug, triggerPattern, actionSequence, successCount, avgQualityScore, sourceRunIds) {
12
+ const now = new Date().toISOString();
13
+ return {
14
+ skillId: randomUUID(),
15
+ name,
16
+ agentSlug,
17
+ trigger: {
18
+ pattern: triggerPattern,
19
+ mode: 'exact',
20
+ minConfidence: 0.8,
21
+ },
22
+ actionSequence,
23
+ successCount,
24
+ avgQualityScore,
25
+ sourceRunIds,
26
+ createdAt: now,
27
+ lastUpdatedAt: now,
28
+ version: 1,
29
+ };
30
+ }
31
+ /**
32
+ * Serialize a LearnedSkill to a markdown string with YAML frontmatter.
33
+ */
34
+ static toMarkdown(skill) {
35
+ const lines = [];
36
+ lines.push('---');
37
+ lines.push(`skill_id: ${skill.skillId}`);
38
+ lines.push(`name: ${skill.name}`);
39
+ lines.push(`agent_slug: ${skill.agentSlug}`);
40
+ lines.push(`success_count: ${skill.successCount}`);
41
+ lines.push(`avg_quality_score: ${skill.avgQualityScore}`);
42
+ lines.push(`version: ${skill.version}`);
43
+ lines.push(`created_at: ${skill.createdAt}`);
44
+ lines.push(`last_updated_at: ${skill.lastUpdatedAt}`);
45
+ lines.push(`source_run_ids: [${skill.sourceRunIds.join(', ')}]`);
46
+ lines.push('---');
47
+ lines.push('');
48
+ lines.push(`# ${skill.name}`);
49
+ lines.push('');
50
+ lines.push('## Trigger');
51
+ lines.push('');
52
+ lines.push(`- Pattern: \`${skill.trigger.pattern}\``);
53
+ lines.push(`- Mode: ${skill.trigger.mode}`);
54
+ lines.push(`- Min Confidence: ${skill.trigger.minConfidence}`);
55
+ lines.push('');
56
+ lines.push('## Action Sequence');
57
+ lines.push('');
58
+ for (let i = 0; i < skill.actionSequence.length; i++) {
59
+ const step = skill.actionSequence[i];
60
+ lines.push(`### Step ${i + 1}: ${step.toolName}`);
61
+ lines.push('');
62
+ lines.push(`- Tool: \`${step.toolName}\``);
63
+ lines.push(`- Outcome: ${step.outcome}`);
64
+ lines.push(`- Duration: ${step.durationMs}ms`);
65
+ if (step.qualityScore !== undefined) {
66
+ lines.push(`- Quality: ${step.qualityScore}`);
67
+ }
68
+ lines.push('');
69
+ }
70
+ return lines.join('\n');
71
+ }
72
+ }
73
+ //# sourceMappingURL=learned-skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"learned-skill.js","sourceRoot":"","sources":["../../src/procedural/learned-skill.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * ProcedureExtractorWorker — Background worker that extracts action
3
+ * sequences from successful agent runs and stores them as learned
4
+ * skills in procedural memory (Task 45).
5
+ *
6
+ * Delegates to ActionSequenceExtractor for grouping and fingerprinting.
7
+ *
8
+ * @module v1/memory/procedural/procedure-extractor-worker
9
+ */
10
+ import type { ActionRecord } from './types.js';
11
+ export interface ProcedureExtractionContext {
12
+ records: ActionRecord[];
13
+ minOccurrences?: number;
14
+ minSuccessRate?: number;
15
+ }
16
+ export interface ProcedureExtractionResult {
17
+ extracted: boolean;
18
+ skillsFound: number;
19
+ skillsStored: number;
20
+ durationMs: number;
21
+ }
22
+ export declare class ProcedureExtractorWorker {
23
+ readonly name: "procedure-extractor";
24
+ readonly priority: "low";
25
+ execute(context: ProcedureExtractionContext): Promise<ProcedureExtractionResult>;
26
+ }
27
+ //# sourceMappingURL=procedure-extractor-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"procedure-extractor-worker.d.ts","sourceRoot":"","sources":["../../src/procedural/procedure-extractor-worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,wBAAwB;IACnC,QAAQ,CAAC,IAAI,EAAG,qBAAqB,CAAU;IAC/C,QAAQ,CAAC,QAAQ,EAAG,KAAK,CAAU;IAE7B,OAAO,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,yBAAyB,CAAC;CA4BvF"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * ProcedureExtractorWorker — Background worker that extracts action
3
+ * sequences from successful agent runs and stores them as learned
4
+ * skills in procedural memory (Task 45).
5
+ *
6
+ * Delegates to ActionSequenceExtractor for grouping and fingerprinting.
7
+ *
8
+ * @module v1/memory/procedural/procedure-extractor-worker
9
+ */
10
+ export class ProcedureExtractorWorker {
11
+ name = 'procedure-extractor';
12
+ priority = 'low';
13
+ async execute(context) {
14
+ const start = Date.now();
15
+ try {
16
+ const { ActionSequenceExtractor } = await import('./action-sequence-extractor.js');
17
+ const extractor = new ActionSequenceExtractor({
18
+ minSuccessCount: context.minOccurrences,
19
+ minAvgQualityScore: context.minSuccessRate,
20
+ });
21
+ const groups = extractor.extract(context.records);
22
+ return {
23
+ extracted: true,
24
+ skillsFound: groups.length,
25
+ skillsStored: groups.length,
26
+ durationMs: Date.now() - start,
27
+ };
28
+ }
29
+ catch {
30
+ return {
31
+ extracted: false,
32
+ skillsFound: 0,
33
+ skillsStored: 0,
34
+ durationMs: Date.now() - start,
35
+ };
36
+ }
37
+ }
38
+ }
39
+ //# sourceMappingURL=procedure-extractor-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"procedure-extractor-worker.js","sourceRoot":"","sources":["../../src/procedural/procedure-extractor-worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAiBH,MAAM,OAAO,wBAAwB;IAC1B,IAAI,GAAG,qBAA8B,CAAC;IACtC,QAAQ,GAAG,KAAc,CAAC;IAEnC,KAAK,CAAC,OAAO,CAAC,OAAmC;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEzB,IAAI,CAAC;YACH,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;YAEnF,MAAM,SAAS,GAAG,IAAI,uBAAuB,CAAC;gBAC5C,eAAe,EAAE,OAAO,CAAC,cAAc;gBACvC,kBAAkB,EAAE,OAAO,CAAC,cAAc;aAC3C,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAElD,OAAO;gBACL,SAAS,EAAE,IAAI;gBACf,WAAW,EAAE,MAAM,CAAC,MAAM;gBAC1B,YAAY,EAAE,MAAM,CAAC,MAAM;gBAC3B,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;aAC/B,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;gBACL,SAAS,EAAE,KAAK;gBAChB,WAAW,EAAE,CAAC;gBACd,YAAY,EAAE,CAAC;gBACf,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;aAC/B,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * SkillRegistry — JSONL-backed registry for learned skills.
3
+ *
4
+ * Part of Task 45 — Procedural Memory.
5
+ */
6
+ import type { LearnedSkill } from './types.js';
7
+ export declare class SkillRegistry {
8
+ private filePath;
9
+ constructor(filePath: string);
10
+ /** Register a new learned skill */
11
+ register(skill: LearnedSkill): void;
12
+ /** List all registered skills */
13
+ list(): LearnedSkill[];
14
+ /** Get a skill by ID */
15
+ get(skillId: string): LearnedSkill | undefined;
16
+ /**
17
+ * Find a skill that matches the same fingerprint (agentSlug + tool sequence).
18
+ * Fingerprint = agentSlug + sorted tool names joined by " -> ".
19
+ */
20
+ findByFingerprint(skill: LearnedSkill): LearnedSkill | undefined;
21
+ /** Update a skill by ID (rewrites the entire file) */
22
+ update(skillId: string, updated: LearnedSkill): void;
23
+ private buildFingerprint;
24
+ }
25
+ //# sourceMappingURL=skill-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-registry.d.ts","sourceRoot":"","sources":["../../src/procedural/skill-registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,MAAM;IAQ5B,mCAAmC;IACnC,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAInC,iCAAiC;IACjC,IAAI,IAAI,YAAY,EAAE;IAOtB,wBAAwB;IACxB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI9C;;;OAGG;IACH,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,GAAG,SAAS;IAKhE,sDAAsD;IACtD,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAQpD,OAAO,CAAC,gBAAgB;CAIzB"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * SkillRegistry — JSONL-backed registry for learned skills.
3
+ *
4
+ * Part of Task 45 — Procedural Memory.
5
+ */
6
+ import { appendFileSync, readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
7
+ import { dirname } from 'path';
8
+ export class SkillRegistry {
9
+ filePath;
10
+ constructor(filePath) {
11
+ this.filePath = filePath;
12
+ const dir = dirname(filePath);
13
+ if (!existsSync(dir)) {
14
+ mkdirSync(dir, { recursive: true });
15
+ }
16
+ }
17
+ /** Register a new learned skill */
18
+ register(skill) {
19
+ appendFileSync(this.filePath, JSON.stringify(skill) + '\n', 'utf-8');
20
+ }
21
+ /** List all registered skills */
22
+ list() {
23
+ if (!existsSync(this.filePath))
24
+ return [];
25
+ const content = readFileSync(this.filePath, 'utf-8').trim();
26
+ if (!content)
27
+ return [];
28
+ return content.split('\n').filter(Boolean).map((line) => JSON.parse(line));
29
+ }
30
+ /** Get a skill by ID */
31
+ get(skillId) {
32
+ return this.list().find((s) => s.skillId === skillId);
33
+ }
34
+ /**
35
+ * Find a skill that matches the same fingerprint (agentSlug + tool sequence).
36
+ * Fingerprint = agentSlug + sorted tool names joined by " -> ".
37
+ */
38
+ findByFingerprint(skill) {
39
+ const fp = this.buildFingerprint(skill);
40
+ return this.list().find((s) => this.buildFingerprint(s) === fp);
41
+ }
42
+ /** Update a skill by ID (rewrites the entire file) */
43
+ update(skillId, updated) {
44
+ const all = this.list();
45
+ const idx = all.findIndex((s) => s.skillId === skillId);
46
+ if (idx === -1)
47
+ return;
48
+ all[idx] = updated;
49
+ writeFileSync(this.filePath, all.map((s) => JSON.stringify(s)).join('\n') + '\n', 'utf-8');
50
+ }
51
+ buildFingerprint(skill) {
52
+ const toolChain = skill.actionSequence.map((a) => a.toolName).join(' -> ');
53
+ return `${skill.agentSlug}::${toolChain}`;
54
+ }
55
+ }
56
+ //# sourceMappingURL=skill-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-registry.js","sourceRoot":"","sources":["../../src/procedural/skill-registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACxF,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAG/B,MAAM,OAAO,aAAa;IAChB,QAAQ,CAAS;IAEzB,YAAY,QAAgB;QAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,QAAQ,CAAC,KAAmB;QAC1B,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;IACvE,CAAC;IAED,iCAAiC;IACjC,IAAI;QACF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAO,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5D,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QACxB,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAiB,CAAC,CAAC;IAC7F,CAAC;IAED,wBAAwB;IACxB,GAAG,CAAC,OAAe;QACjB,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IACxD,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,KAAmB;QACnC,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,sDAAsD;IACtD,MAAM,CAAC,OAAe,EAAE,OAAqB;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;QACxD,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,OAAO;QACvB,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;QACnB,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7F,CAAC;IAEO,gBAAgB,CAAC,KAAmB;QAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3E,OAAO,GAAG,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;IAC5C,CAAC;CACF"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Procedural Memory Types
3
+ *
4
+ * Types for learning from successful agent executions.
5
+ * Part of Task 45 — Procedural Memory.
6
+ */
7
+ /** Outcome of a single tool action */
8
+ export type ActionOutcome = 'success' | 'failure' | 'partial';
9
+ /** A single recorded action within an agent run */
10
+ export interface ActionRecord {
11
+ recordId: string;
12
+ runId: string;
13
+ agentId: string;
14
+ agentSlug: string;
15
+ toolName: string;
16
+ toolInput: Record<string, unknown>;
17
+ toolOutput?: string;
18
+ outcome: ActionOutcome;
19
+ durationMs: number;
20
+ qualityScore?: number;
21
+ timestamp: string;
22
+ }
23
+ /** Configuration for extracting learned skills from action records */
24
+ export interface ExtractionConfig {
25
+ /** Minimum number of successful occurrences before extraction (default 3) */
26
+ minSuccessCount: number;
27
+ /** Minimum average quality score threshold (default 0.75) */
28
+ minAvgQualityScore: number;
29
+ /** Maximum actions in a sequence (default 12) */
30
+ maxSequenceLength: number;
31
+ /** How far back to look in days (default 30) */
32
+ lookbackDays: number;
33
+ /** Minimum similarity for grouping sequences (default 0.85) */
34
+ minSimilarityForGrouping: number;
35
+ }
36
+ /** Default extraction configuration */
37
+ export declare const DEFAULT_EXTRACTION_CONFIG: ExtractionConfig;
38
+ /** Trigger condition for a learned skill */
39
+ export interface SkillTrigger {
40
+ pattern: string;
41
+ mode: 'exact' | 'semantic';
42
+ minConfidence: number;
43
+ }
44
+ /** A learned skill extracted from repeated successful executions */
45
+ export interface LearnedSkill {
46
+ skillId: string;
47
+ name: string;
48
+ agentSlug: string;
49
+ trigger: SkillTrigger;
50
+ actionSequence: ActionRecord[];
51
+ successCount: number;
52
+ avgQualityScore: number;
53
+ sourceRunIds: string[];
54
+ createdAt: string;
55
+ lastUpdatedAt: string;
56
+ version: number;
57
+ }
58
+ /** A group of similar action sequences discovered by the extractor */
59
+ export interface ActionSequenceGroup {
60
+ agentSlug: string;
61
+ fingerprint: string;
62
+ sequences: ActionRecord[][];
63
+ successCount: number;
64
+ avgQualityScore: number;
65
+ runIds: string[];
66
+ }
67
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/procedural/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,sCAAsC;AACtC,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9D,mDAAmD;AACnD,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,aAAa,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,sEAAsE;AACtE,MAAM,WAAW,gBAAgB;IAC/B,6EAA6E;IAC7E,eAAe,EAAE,MAAM,CAAC;IACxB,6DAA6D;IAC7D,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iDAAiD;IACjD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gDAAgD;IAChD,YAAY,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,wBAAwB,EAAE,MAAM,CAAC;CAClC;AAED,uCAAuC;AACvC,eAAO,MAAM,yBAAyB,EAAE,gBAMvC,CAAC;AAEF,4CAA4C;AAC5C,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,GAAG,UAAU,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,oEAAoE;AACpE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,YAAY,CAAC;IACtB,cAAc,EAAE,YAAY,EAAE,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,sEAAsE;AACtE,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,YAAY,EAAE,EAAE,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Procedural Memory Types
3
+ *
4
+ * Types for learning from successful agent executions.
5
+ * Part of Task 45 — Procedural Memory.
6
+ */
7
+ /** Default extraction configuration */
8
+ export const DEFAULT_EXTRACTION_CONFIG = {
9
+ minSuccessCount: 3,
10
+ minAvgQualityScore: 0.75,
11
+ maxSequenceLength: 12,
12
+ lookbackDays: 30,
13
+ minSimilarityForGrouping: 0.85,
14
+ };
15
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/procedural/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkCH,uCAAuC;AACvC,MAAM,CAAC,MAAM,yBAAyB,GAAqB;IACzD,eAAe,EAAE,CAAC;IAClB,kBAAkB,EAAE,IAAI;IACxB,iBAAiB,EAAE,EAAE;IACrB,YAAY,EAAE,EAAE;IAChB,wBAAwB,EAAE,IAAI;CAC/B,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * PromptVersionStore - JSONL-based prompt version management
3
+ *
4
+ * Stores prompt versions and experiments as append-only JSONL files.
5
+ * Supports versioning, A/B experiments, quality scoring, and line-level diffs.
6
+ *
7
+ * File layout:
8
+ * {dirPath}/versions.jsonl - one PromptVersion JSON per line
9
+ * {dirPath}/experiments.jsonl - one PromptExperiment JSON per line
10
+ *
11
+ * @module @monomind/memory/prompt-version-store
12
+ */
13
+ export interface PromptVersion {
14
+ agentSlug: string;
15
+ version: string;
16
+ prompt: string;
17
+ changelog: string;
18
+ activeFrom: Date;
19
+ activeTo?: Date;
20
+ qualityScore?: number;
21
+ traceCount: number;
22
+ publishedBy: string;
23
+ createdAt: Date;
24
+ }
25
+ export interface PromptExperiment {
26
+ agentSlug: string;
27
+ control: string;
28
+ candidate: string;
29
+ trafficPct: number;
30
+ startedAt: Date;
31
+ endsAt?: Date;
32
+ winnerId?: string;
33
+ }
34
+ export interface DiffResult {
35
+ agentSlug: string;
36
+ versionA: string;
37
+ versionB: string;
38
+ additions: number;
39
+ deletions: number;
40
+ }
41
+ export declare class PromptVersionStore {
42
+ private readonly versionsPath;
43
+ private readonly experimentsPath;
44
+ constructor(dirPath: string);
45
+ save(version: PromptVersion): void;
46
+ getActive(agentSlug: string): PromptVersion | null;
47
+ listVersions(agentSlug: string): PromptVersion[];
48
+ setActive(agentSlug: string, version: string): void;
49
+ diff(agentSlug: string, vA: string, vB: string): DiffResult;
50
+ updateQualityScore(agentSlug: string, version: string, score: number): void;
51
+ saveExperiment(exp: PromptExperiment): void;
52
+ getExperiment(agentSlug: string): PromptExperiment | null;
53
+ concludeExperiment(agentSlug: string, winnerId: string): void;
54
+ private readVersions;
55
+ private writeVersions;
56
+ private readExperiments;
57
+ private writeExperiments;
58
+ }
59
+ //# sourceMappingURL=prompt-version-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-version-store.d.ts","sourceRoot":"","sources":["../src/prompt-version-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,IAAI,CAAC;IACjB,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;IAChB,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAmFD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;gBAE7B,OAAO,EAAE,MAAM;IAQ3B,IAAI,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKlC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAKlD,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,EAAE;IAMhD,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAenD,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,UAAU;IAsB3D,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAY3E,cAAc,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI;IAK3C,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAKzD,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAY7D,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,gBAAgB;CAIzB"}
@@ -0,0 +1,175 @@
1
+ /**
2
+ * PromptVersionStore - JSONL-based prompt version management
3
+ *
4
+ * Stores prompt versions and experiments as append-only JSONL files.
5
+ * Supports versioning, A/B experiments, quality scoring, and line-level diffs.
6
+ *
7
+ * File layout:
8
+ * {dirPath}/versions.jsonl - one PromptVersion JSON per line
9
+ * {dirPath}/experiments.jsonl - one PromptExperiment JSON per line
10
+ *
11
+ * @module @monomind/memory/prompt-version-store
12
+ */
13
+ import * as fs from 'node:fs';
14
+ import * as path from 'node:path';
15
+ function versionToRecord(v) {
16
+ return {
17
+ agentSlug: v.agentSlug,
18
+ version: v.version,
19
+ prompt: v.prompt,
20
+ changelog: v.changelog,
21
+ activeFrom: v.activeFrom.toISOString(),
22
+ activeTo: v.activeTo ? v.activeTo.toISOString() : null,
23
+ qualityScore: v.qualityScore ?? null,
24
+ traceCount: v.traceCount,
25
+ publishedBy: v.publishedBy,
26
+ createdAt: v.createdAt.toISOString(),
27
+ };
28
+ }
29
+ function recordToVersion(r) {
30
+ return {
31
+ agentSlug: r.agentSlug,
32
+ version: r.version,
33
+ prompt: r.prompt,
34
+ changelog: r.changelog,
35
+ activeFrom: new Date(r.activeFrom),
36
+ activeTo: r.activeTo ? new Date(r.activeTo) : undefined,
37
+ qualityScore: r.qualityScore ?? undefined,
38
+ traceCount: r.traceCount,
39
+ publishedBy: r.publishedBy,
40
+ createdAt: new Date(r.createdAt),
41
+ };
42
+ }
43
+ function experimentToRecord(e) {
44
+ return {
45
+ agentSlug: e.agentSlug,
46
+ control: e.control,
47
+ candidate: e.candidate,
48
+ trafficPct: e.trafficPct,
49
+ startedAt: e.startedAt.toISOString(),
50
+ endsAt: e.endsAt ? e.endsAt.toISOString() : null,
51
+ winnerId: e.winnerId ?? null,
52
+ };
53
+ }
54
+ function recordToExperiment(r) {
55
+ return {
56
+ agentSlug: r.agentSlug,
57
+ control: r.control,
58
+ candidate: r.candidate,
59
+ trafficPct: r.trafficPct,
60
+ startedAt: new Date(r.startedAt),
61
+ endsAt: r.endsAt ? new Date(r.endsAt) : undefined,
62
+ winnerId: r.winnerId ?? undefined,
63
+ };
64
+ }
65
+ // ===== Store =====
66
+ export class PromptVersionStore {
67
+ versionsPath;
68
+ experimentsPath;
69
+ constructor(dirPath) {
70
+ fs.mkdirSync(dirPath, { recursive: true });
71
+ this.versionsPath = path.join(dirPath, 'versions.jsonl');
72
+ this.experimentsPath = path.join(dirPath, 'experiments.jsonl');
73
+ }
74
+ // ---- versions ----
75
+ save(version) {
76
+ const line = JSON.stringify(versionToRecord(version)) + '\n';
77
+ fs.appendFileSync(this.versionsPath, line, 'utf-8');
78
+ }
79
+ getActive(agentSlug) {
80
+ const all = this.readVersions();
81
+ return all.find((v) => v.agentSlug === agentSlug && v.activeTo === undefined) ?? null;
82
+ }
83
+ listVersions(agentSlug) {
84
+ return this.readVersions()
85
+ .filter((v) => v.agentSlug === agentSlug)
86
+ .sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime());
87
+ }
88
+ setActive(agentSlug, version) {
89
+ const all = this.readVersions();
90
+ const now = new Date();
91
+ for (const v of all) {
92
+ if (v.agentSlug === agentSlug && v.activeTo === undefined) {
93
+ v.activeTo = now;
94
+ }
95
+ if (v.agentSlug === agentSlug && v.version === version) {
96
+ v.activeTo = undefined;
97
+ v.activeFrom = now;
98
+ }
99
+ }
100
+ this.writeVersions(all);
101
+ }
102
+ diff(agentSlug, vA, vB) {
103
+ const all = this.readVersions();
104
+ const a = all.find((v) => v.agentSlug === agentSlug && v.version === vA);
105
+ const b = all.find((v) => v.agentSlug === agentSlug && v.version === vB);
106
+ const linesA = a ? a.prompt.split('\n') : [];
107
+ const linesB = b ? b.prompt.split('\n') : [];
108
+ const setA = new Set(linesA);
109
+ const setB = new Set(linesB);
110
+ let additions = 0;
111
+ let deletions = 0;
112
+ for (const line of linesB) {
113
+ if (!setA.has(line))
114
+ additions++;
115
+ }
116
+ for (const line of linesA) {
117
+ if (!setB.has(line))
118
+ deletions++;
119
+ }
120
+ return { agentSlug, versionA: vA, versionB: vB, additions, deletions };
121
+ }
122
+ updateQualityScore(agentSlug, version, score) {
123
+ const all = this.readVersions();
124
+ for (const v of all) {
125
+ if (v.agentSlug === agentSlug && v.version === version) {
126
+ v.qualityScore = score;
127
+ }
128
+ }
129
+ this.writeVersions(all);
130
+ }
131
+ // ---- experiments ----
132
+ saveExperiment(exp) {
133
+ const line = JSON.stringify(experimentToRecord(exp)) + '\n';
134
+ fs.appendFileSync(this.experimentsPath, line, 'utf-8');
135
+ }
136
+ getExperiment(agentSlug) {
137
+ const all = this.readExperiments();
138
+ return all.find((e) => e.agentSlug === agentSlug && e.winnerId === undefined) ?? null;
139
+ }
140
+ concludeExperiment(agentSlug, winnerId) {
141
+ const all = this.readExperiments();
142
+ for (const e of all) {
143
+ if (e.agentSlug === agentSlug && e.winnerId === undefined) {
144
+ e.winnerId = winnerId;
145
+ }
146
+ }
147
+ this.writeExperiments(all);
148
+ }
149
+ // ---- private I/O ----
150
+ readVersions() {
151
+ if (!fs.existsSync(this.versionsPath))
152
+ return [];
153
+ const content = fs.readFileSync(this.versionsPath, 'utf-8').trim();
154
+ if (!content)
155
+ return [];
156
+ return content.split('\n').filter(Boolean).map((line) => recordToVersion(JSON.parse(line)));
157
+ }
158
+ writeVersions(versions) {
159
+ const data = versions.map((v) => JSON.stringify(versionToRecord(v))).join('\n') + '\n';
160
+ fs.writeFileSync(this.versionsPath, data, 'utf-8');
161
+ }
162
+ readExperiments() {
163
+ if (!fs.existsSync(this.experimentsPath))
164
+ return [];
165
+ const content = fs.readFileSync(this.experimentsPath, 'utf-8').trim();
166
+ if (!content)
167
+ return [];
168
+ return content.split('\n').filter(Boolean).map((line) => recordToExperiment(JSON.parse(line)));
169
+ }
170
+ writeExperiments(experiments) {
171
+ const data = experiments.map((e) => JSON.stringify(experimentToRecord(e))).join('\n') + '\n';
172
+ fs.writeFileSync(this.experimentsPath, data, 'utf-8');
173
+ }
174
+ }
175
+ //# sourceMappingURL=prompt-version-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-version-store.js","sourceRoot":"","sources":["../src/prompt-version-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import type { MemoryQuery } from './types.js';
2
+ export type SortField = NonNullable<MemoryQuery['sortField']>;
3
+ export type SortDirection = NonNullable<MemoryQuery['sortDirection']>;
4
+ /**
5
+ * Fluent builder for MemoryQuery objects.
6
+ *
7
+ * @example
8
+ * const q = query()
9
+ * .semantic('authentication patterns')
10
+ * .inNamespace('security')
11
+ * .withTags(['critical'])
12
+ * .threshold(0.8)
13
+ * .limit(10)
14
+ * .build();
15
+ */
16
+ export declare class QueryBuilder {
17
+ private _type;
18
+ private _content?;
19
+ private _namespace?;
20
+ private _tags?;
21
+ private _limit;
22
+ private _offset?;
23
+ private _threshold?;
24
+ private _sortField?;
25
+ private _sortDirection?;
26
+ semantic(content: string): this;
27
+ exact(key: string): this;
28
+ hybrid(content: string): this;
29
+ inNamespace(namespace: string): this;
30
+ withTags(tags: string[]): this;
31
+ limit(n: number): this;
32
+ offset(n: number): this;
33
+ threshold(t: number): this;
34
+ sortBy(field: SortField, direction?: SortDirection): this;
35
+ newestFirst(): this;
36
+ oldestFirst(): this;
37
+ recentlyAccessed(): this;
38
+ mostAccessed(): this;
39
+ reset(): this;
40
+ clone(): QueryBuilder;
41
+ build(): MemoryQuery;
42
+ }
43
+ /** Factory shorthand: `query().semantic('...').build()` */
44
+ export declare function query(): QueryBuilder;
45
+ /** Pre-built common query patterns */
46
+ export declare const QueryTemplates: {
47
+ recentInNamespace(namespace: string, limit?: number): MemoryQuery;
48
+ byTags(tags: string[], limit?: number): MemoryQuery;
49
+ semanticSearch(content: string, limit?: number, threshold?: number): MemoryQuery;
50
+ exactKey(namespace: string, key: string): MemoryQuery;
51
+ };
52
+ //# sourceMappingURL=query-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../src/query-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAa,MAAM,YAAY,CAAC;AAEzD,MAAM,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;AAC9D,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC;AAEtE;;;;;;;;;;;GAWG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,KAAK,CAAC,CAAW;IACzB,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAC,CAAY;IAC/B,OAAO,CAAC,cAAc,CAAC,CAAgB;IAEvC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM/B,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAMxB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM7B,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKpC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI;IAK9B,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAKtB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAKvB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAK1B,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,GAAE,aAAsB,GAAG,IAAI;IAOjE,WAAW,IAAI,IAAI;IACnB,WAAW,IAAI,IAAI;IACnB,gBAAgB,IAAI,IAAI;IACxB,YAAY,IAAI,IAAI;IAEpB,KAAK,IAAI,IAAI;IAab,KAAK,IAAI,YAAY;IAcrB,KAAK,IAAI,WAAW;CAcrB;AAED,2DAA2D;AAC3D,wBAAgB,KAAK,IAAI,YAAY,CAEpC;AAED,sCAAsC;AACtC,eAAO,MAAM,cAAc;iCACI,MAAM,mBAAe,WAAW;iBAIhD,MAAM,EAAE,mBAAe,WAAW;4BAIvB,MAAM,uCAAgC,WAAW;wBAIrD,MAAM,OAAO,MAAM,GAAG,WAAW;CAGtD,CAAC"}