@soleri/core 7.0.0 → 8.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 (210) hide show
  1. package/dist/agency/agency-manager.d.ts +27 -1
  2. package/dist/agency/agency-manager.d.ts.map +1 -1
  3. package/dist/agency/agency-manager.js +180 -9
  4. package/dist/agency/agency-manager.js.map +1 -1
  5. package/dist/agency/default-rules.d.ts +7 -0
  6. package/dist/agency/default-rules.d.ts.map +1 -0
  7. package/dist/agency/default-rules.js +79 -0
  8. package/dist/agency/default-rules.js.map +1 -0
  9. package/dist/agency/types.d.ts +48 -0
  10. package/dist/agency/types.d.ts.map +1 -1
  11. package/dist/brain/brain.d.ts +17 -2
  12. package/dist/brain/brain.d.ts.map +1 -1
  13. package/dist/brain/brain.js +118 -8
  14. package/dist/brain/brain.js.map +1 -1
  15. package/dist/brain/knowledge-synthesizer.d.ts +37 -0
  16. package/dist/brain/knowledge-synthesizer.d.ts.map +1 -0
  17. package/dist/brain/knowledge-synthesizer.js +161 -0
  18. package/dist/brain/knowledge-synthesizer.js.map +1 -0
  19. package/dist/brain/learning-radar.d.ts +96 -0
  20. package/dist/brain/learning-radar.d.ts.map +1 -0
  21. package/dist/brain/learning-radar.js +202 -0
  22. package/dist/brain/learning-radar.js.map +1 -0
  23. package/dist/brain/types.d.ts +15 -0
  24. package/dist/brain/types.d.ts.map +1 -1
  25. package/dist/context/context-engine.d.ts.map +1 -1
  26. package/dist/context/context-engine.js +82 -17
  27. package/dist/context/context-engine.js.map +1 -1
  28. package/dist/context/types.d.ts +5 -0
  29. package/dist/context/types.d.ts.map +1 -1
  30. package/dist/control/intent-router.d.ts +12 -1
  31. package/dist/control/intent-router.d.ts.map +1 -1
  32. package/dist/control/intent-router.js +68 -0
  33. package/dist/control/intent-router.js.map +1 -1
  34. package/dist/control/types.d.ts +17 -0
  35. package/dist/control/types.d.ts.map +1 -1
  36. package/dist/curator/classifier.d.ts +18 -0
  37. package/dist/curator/classifier.d.ts.map +1 -0
  38. package/dist/curator/classifier.js +61 -0
  39. package/dist/curator/classifier.js.map +1 -0
  40. package/dist/curator/quality-gate.d.ts +29 -0
  41. package/dist/curator/quality-gate.d.ts.map +1 -0
  42. package/dist/curator/quality-gate.js +88 -0
  43. package/dist/curator/quality-gate.js.map +1 -0
  44. package/dist/engine/bin/soleri-engine.js +1 -0
  45. package/dist/engine/bin/soleri-engine.js.map +1 -1
  46. package/dist/events/event-bus.d.ts +30 -0
  47. package/dist/events/event-bus.d.ts.map +1 -0
  48. package/dist/events/event-bus.js +51 -0
  49. package/dist/events/event-bus.js.map +1 -0
  50. package/dist/flows/chain-runner.d.ts +46 -0
  51. package/dist/flows/chain-runner.d.ts.map +1 -0
  52. package/dist/flows/chain-runner.js +271 -0
  53. package/dist/flows/chain-runner.js.map +1 -0
  54. package/dist/flows/chain-types.d.ts +103 -0
  55. package/dist/flows/chain-types.d.ts.map +1 -0
  56. package/dist/flows/chain-types.js +23 -0
  57. package/dist/flows/chain-types.js.map +1 -0
  58. package/dist/health/doctor-checks.d.ts +15 -0
  59. package/dist/health/doctor-checks.d.ts.map +1 -0
  60. package/dist/health/doctor-checks.js +98 -0
  61. package/dist/health/doctor-checks.js.map +1 -0
  62. package/dist/intake/text-ingester.d.ts +52 -0
  63. package/dist/intake/text-ingester.d.ts.map +1 -0
  64. package/dist/intake/text-ingester.js +181 -0
  65. package/dist/intake/text-ingester.js.map +1 -0
  66. package/dist/llm/llm-client.d.ts.map +1 -1
  67. package/dist/llm/llm-client.js +37 -1
  68. package/dist/llm/llm-client.js.map +1 -1
  69. package/dist/llm/oauth-discovery.d.ts +26 -0
  70. package/dist/llm/oauth-discovery.d.ts.map +1 -0
  71. package/dist/llm/oauth-discovery.js +149 -0
  72. package/dist/llm/oauth-discovery.js.map +1 -0
  73. package/dist/planning/evidence-collector.d.ts +41 -0
  74. package/dist/planning/evidence-collector.d.ts.map +1 -0
  75. package/dist/planning/evidence-collector.js +194 -0
  76. package/dist/planning/evidence-collector.js.map +1 -0
  77. package/dist/planning/planner.d.ts +4 -0
  78. package/dist/planning/planner.d.ts.map +1 -1
  79. package/dist/planning/planner.js +11 -0
  80. package/dist/planning/planner.js.map +1 -1
  81. package/dist/queue/job-queue.d.ts +92 -0
  82. package/dist/queue/job-queue.d.ts.map +1 -0
  83. package/dist/queue/job-queue.js +180 -0
  84. package/dist/queue/job-queue.js.map +1 -0
  85. package/dist/queue/pipeline-runner.d.ts +62 -0
  86. package/dist/queue/pipeline-runner.d.ts.map +1 -0
  87. package/dist/queue/pipeline-runner.js +126 -0
  88. package/dist/queue/pipeline-runner.js.map +1 -0
  89. package/dist/runtime/admin-setup-ops.d.ts +20 -0
  90. package/dist/runtime/admin-setup-ops.d.ts.map +1 -0
  91. package/dist/runtime/admin-setup-ops.js +583 -0
  92. package/dist/runtime/admin-setup-ops.js.map +1 -0
  93. package/dist/runtime/chain-ops.d.ts +9 -0
  94. package/dist/runtime/chain-ops.d.ts.map +1 -0
  95. package/dist/runtime/chain-ops.js +107 -0
  96. package/dist/runtime/chain-ops.js.map +1 -0
  97. package/dist/runtime/claude-md-helpers.d.ts +65 -0
  98. package/dist/runtime/claude-md-helpers.d.ts.map +1 -0
  99. package/dist/runtime/claude-md-helpers.js +173 -0
  100. package/dist/runtime/claude-md-helpers.js.map +1 -0
  101. package/dist/runtime/curator-extra-ops.d.ts +3 -2
  102. package/dist/runtime/curator-extra-ops.d.ts.map +1 -1
  103. package/dist/runtime/curator-extra-ops.js +81 -3
  104. package/dist/runtime/curator-extra-ops.js.map +1 -1
  105. package/dist/runtime/facades/admin-facade.d.ts.map +1 -1
  106. package/dist/runtime/facades/admin-facade.js +4 -0
  107. package/dist/runtime/facades/admin-facade.js.map +1 -1
  108. package/dist/runtime/facades/agency-facade.d.ts.map +1 -1
  109. package/dist/runtime/facades/agency-facade.js +64 -0
  110. package/dist/runtime/facades/agency-facade.js.map +1 -1
  111. package/dist/runtime/facades/brain-facade.d.ts.map +1 -1
  112. package/dist/runtime/facades/brain-facade.js +122 -1
  113. package/dist/runtime/facades/brain-facade.js.map +1 -1
  114. package/dist/runtime/facades/control-facade.d.ts.map +1 -1
  115. package/dist/runtime/facades/control-facade.js +42 -0
  116. package/dist/runtime/facades/control-facade.js.map +1 -1
  117. package/dist/runtime/facades/memory-facade.d.ts.map +1 -1
  118. package/dist/runtime/facades/memory-facade.js +20 -2
  119. package/dist/runtime/facades/memory-facade.js.map +1 -1
  120. package/dist/runtime/facades/plan-facade.d.ts.map +1 -1
  121. package/dist/runtime/facades/plan-facade.js +2 -0
  122. package/dist/runtime/facades/plan-facade.js.map +1 -1
  123. package/dist/runtime/facades/vault-facade.d.ts.map +1 -1
  124. package/dist/runtime/facades/vault-facade.js +25 -5
  125. package/dist/runtime/facades/vault-facade.js.map +1 -1
  126. package/dist/runtime/intake-ops.d.ts +7 -5
  127. package/dist/runtime/intake-ops.d.ts.map +1 -1
  128. package/dist/runtime/intake-ops.js +98 -5
  129. package/dist/runtime/intake-ops.js.map +1 -1
  130. package/dist/runtime/memory-extra-ops.d.ts +6 -3
  131. package/dist/runtime/memory-extra-ops.d.ts.map +1 -1
  132. package/dist/runtime/memory-extra-ops.js +292 -4
  133. package/dist/runtime/memory-extra-ops.js.map +1 -1
  134. package/dist/runtime/planning-extra-ops.d.ts.map +1 -1
  135. package/dist/runtime/planning-extra-ops.js +85 -0
  136. package/dist/runtime/planning-extra-ops.js.map +1 -1
  137. package/dist/runtime/playbook-ops.js +1 -1
  138. package/dist/runtime/playbook-ops.js.map +1 -1
  139. package/dist/runtime/runtime.d.ts.map +1 -1
  140. package/dist/runtime/runtime.js +143 -2
  141. package/dist/runtime/runtime.js.map +1 -1
  142. package/dist/runtime/session-briefing.d.ts +23 -0
  143. package/dist/runtime/session-briefing.d.ts.map +1 -0
  144. package/dist/runtime/session-briefing.js +140 -0
  145. package/dist/runtime/session-briefing.js.map +1 -0
  146. package/dist/runtime/types.d.ts +23 -0
  147. package/dist/runtime/types.d.ts.map +1 -1
  148. package/dist/runtime/vault-linking-ops.d.ts.map +1 -1
  149. package/dist/runtime/vault-linking-ops.js +1 -3
  150. package/dist/runtime/vault-linking-ops.js.map +1 -1
  151. package/dist/vault/vault.d.ts +25 -0
  152. package/dist/vault/vault.d.ts.map +1 -1
  153. package/dist/vault/vault.js +67 -3
  154. package/dist/vault/vault.js.map +1 -1
  155. package/package.json +1 -1
  156. package/src/__tests__/admin-setup-ops.test.ts +355 -0
  157. package/src/__tests__/async-infrastructure.test.ts +307 -0
  158. package/src/__tests__/cognee-client-gaps.test.ts +6 -2
  159. package/src/__tests__/cognee-hybrid-search.test.ts +49 -35
  160. package/src/__tests__/cognee-sync-manager-deep.test.ts +89 -65
  161. package/src/__tests__/curator-extra-ops.test.ts +6 -2
  162. package/src/__tests__/curator-pipeline-e2e.test.ts +358 -0
  163. package/src/__tests__/memory-extra-ops.test.ts +2 -2
  164. package/src/__tests__/planning-extra-ops.test.ts +2 -2
  165. package/src/__tests__/second-brain-features.test.ts +583 -0
  166. package/src/agency/agency-manager.ts +217 -9
  167. package/src/agency/default-rules.ts +83 -0
  168. package/src/agency/types.ts +61 -0
  169. package/src/brain/brain.ts +110 -8
  170. package/src/brain/knowledge-synthesizer.ts +218 -0
  171. package/src/brain/learning-radar.ts +340 -0
  172. package/src/brain/types.ts +16 -0
  173. package/src/context/context-engine.ts +114 -15
  174. package/src/context/types.ts +5 -0
  175. package/src/control/intent-router.ts +107 -0
  176. package/src/control/types.ts +10 -0
  177. package/src/curator/classifier.ts +88 -0
  178. package/src/curator/quality-gate.ts +129 -0
  179. package/src/engine/bin/soleri-engine.ts +1 -0
  180. package/src/events/event-bus.ts +58 -0
  181. package/src/flows/chain-runner.ts +369 -0
  182. package/src/flows/chain-types.ts +57 -0
  183. package/src/health/doctor-checks.ts +115 -0
  184. package/src/intake/text-ingester.ts +234 -0
  185. package/src/llm/llm-client.ts +38 -1
  186. package/src/llm/oauth-discovery.ts +169 -0
  187. package/src/planning/evidence-collector.ts +247 -0
  188. package/src/planning/planner.ts +11 -0
  189. package/src/queue/job-queue.ts +281 -0
  190. package/src/queue/pipeline-runner.ts +149 -0
  191. package/src/runtime/admin-setup-ops.ts +664 -0
  192. package/src/runtime/chain-ops.ts +121 -0
  193. package/src/runtime/claude-md-helpers.ts +236 -0
  194. package/src/runtime/curator-extra-ops.ts +86 -3
  195. package/src/runtime/facades/admin-facade.ts +4 -0
  196. package/src/runtime/facades/agency-facade.ts +68 -0
  197. package/src/runtime/facades/brain-facade.ts +142 -1
  198. package/src/runtime/facades/control-facade.ts +45 -0
  199. package/src/runtime/facades/memory-facade.ts +20 -2
  200. package/src/runtime/facades/plan-facade.ts +2 -0
  201. package/src/runtime/facades/vault-facade.ts +28 -5
  202. package/src/runtime/intake-ops.ts +107 -5
  203. package/src/runtime/memory-extra-ops.ts +312 -4
  204. package/src/runtime/planning-extra-ops.ts +94 -0
  205. package/src/runtime/playbook-ops.ts +1 -1
  206. package/src/runtime/runtime.ts +138 -2
  207. package/src/runtime/session-briefing.ts +161 -0
  208. package/src/runtime/types.ts +23 -0
  209. package/src/runtime/vault-linking-ops.ts +1 -3
  210. package/src/vault/vault.ts +79 -4
@@ -1,15 +1,16 @@
1
1
  /**
2
- * Intake operations — 4 ops for book/PDF ingestion.
2
+ * Intake operations — 7 ops for book/PDF and text/URL ingestion.
3
3
  *
4
- * Ops: intake_ingest_book, intake_process, intake_status, intake_preview.
4
+ * Ops: intake_ingest_book, intake_process, intake_status, intake_preview,
5
+ * ingest_url, ingest_text, ingest_batch.
5
6
  */
6
7
  import { z } from 'zod';
7
8
  /**
8
- * Create the 4 intake operations.
9
+ * Create the 7 intake operations.
9
10
  *
10
- * The pipeline is optional — when null, all ops return a graceful error.
11
+ * The pipeline and textIngester are optional — when null, affected ops return a graceful error.
11
12
  */
12
- export function createIntakeOps(pipeline) {
13
+ export function createIntakeOps(pipeline, textIngester) {
13
14
  return [
14
15
  // ─── Ingest Book ──────────────────────────────────────────────
15
16
  {
@@ -105,6 +106,98 @@ export function createIntakeOps(pipeline) {
105
106
  return pipeline.preview({ pdfPath, title, domain }, pageStart, pageEnd);
106
107
  },
107
108
  },
109
+ // ─── URL Ingestion (#203) ──────────────────────────────────────
110
+ {
111
+ name: 'ingest_url',
112
+ description: 'Fetch a URL, extract text, classify into knowledge items via LLM, dedup against vault, and store. ' +
113
+ 'Returns count of ingested entries and duplicates skipped.',
114
+ auth: 'write',
115
+ schema: z.object({
116
+ url: z.string().describe('URL to fetch and ingest'),
117
+ domain: z.string().optional().describe('Knowledge domain (default: general)'),
118
+ tags: z.array(z.string()).optional().describe('Additional tags for all extracted entries'),
119
+ }),
120
+ handler: async (params) => {
121
+ if (!textIngester)
122
+ return { error: 'Text ingester not configured (LLM client required)' };
123
+ return textIngester.ingestUrl(params.url, {
124
+ domain: params.domain,
125
+ tags: params.tags,
126
+ });
127
+ },
128
+ },
129
+ // ─── Text/Transcript Ingestion (#203) ──────────────────────────
130
+ {
131
+ name: 'ingest_text',
132
+ description: 'Ingest raw text (article, transcript, notes) — classify via LLM, dedup, and store. ' +
133
+ 'Use for transcripts, copied articles, meeting notes, etc.',
134
+ auth: 'write',
135
+ schema: z.object({
136
+ text: z.string().describe('The text content to ingest'),
137
+ title: z.string().describe('Title for the source material'),
138
+ sourceType: z
139
+ .enum(['article', 'transcript', 'notes', 'documentation'])
140
+ .optional()
141
+ .default('notes')
142
+ .describe('Type of source material'),
143
+ url: z.string().optional().describe('Source URL if available'),
144
+ author: z.string().optional().describe('Author of the source material'),
145
+ domain: z.string().optional().describe('Knowledge domain (default: general)'),
146
+ tags: z.array(z.string()).optional().describe('Additional tags'),
147
+ }),
148
+ handler: async (params) => {
149
+ if (!textIngester)
150
+ return { error: 'Text ingester not configured (LLM client required)' };
151
+ const source = {
152
+ type: params.sourceType,
153
+ title: params.title,
154
+ url: params.url,
155
+ author: params.author,
156
+ };
157
+ return textIngester.ingestText(params.text, source, {
158
+ domain: params.domain,
159
+ tags: params.tags,
160
+ });
161
+ },
162
+ },
163
+ // ─── Batch Ingestion (#203) ────────────────────────────────────
164
+ {
165
+ name: 'ingest_batch',
166
+ description: 'Ingest multiple text items in one call. Each item has its own source metadata. Processed sequentially.',
167
+ auth: 'write',
168
+ schema: z.object({
169
+ items: z
170
+ .array(z.object({
171
+ text: z.string(),
172
+ title: z.string(),
173
+ sourceType: z.enum(['article', 'transcript', 'notes', 'documentation']).optional(),
174
+ url: z.string().optional(),
175
+ author: z.string().optional(),
176
+ domain: z.string().optional(),
177
+ tags: z.array(z.string()).optional(),
178
+ }))
179
+ .min(1)
180
+ .describe('Array of items to ingest'),
181
+ }),
182
+ handler: async (params) => {
183
+ if (!textIngester)
184
+ return { error: 'Text ingester not configured (LLM client required)' };
185
+ const items = params.items.map((item) => ({
186
+ text: item.text,
187
+ source: {
188
+ type: item.sourceType ?? 'notes',
189
+ title: item.title,
190
+ url: item.url,
191
+ author: item.author,
192
+ },
193
+ opts: {
194
+ domain: item.domain,
195
+ tags: item.tags,
196
+ },
197
+ }));
198
+ return textIngester.ingestBatch(items);
199
+ },
200
+ },
108
201
  ];
109
202
  }
110
203
  //# sourceMappingURL=intake-ops.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"intake-ops.js","sourceRoot":"","sources":["../../src/runtime/intake-ops.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,QAA+B;IAC7D,OAAO;QACL,iEAAiE;QACjE;YACE,IAAI,EAAE,oBAAoB;YAC1B,WAAW,EACT,kGAAkG;YACpG,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;gBACf,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;gBAC9D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;gBACzE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6DAA6D,CAAC;gBAC1F,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;gBACnE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;gBAC3F,IAAI,EAAE,CAAC;qBACJ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;qBACjB,QAAQ,EAAE;qBACV,QAAQ,CAAC,mDAAmD,CAAC;aACjE,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBACxB,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,OAAO,EAAE,KAAK,EAAE,gCAAgC,EAAE,CAAC;gBACrD,CAAC;gBACD,MAAM,MAAM,GAAG;oBACb,OAAO,EAAE,MAAM,CAAC,OAAiB;oBACjC,KAAK,EAAE,MAAM,CAAC,KAAe;oBAC7B,MAAM,EAAE,MAAM,CAAC,MAAgB;oBAC/B,MAAM,EAAE,MAAM,CAAC,MAA4B;oBAC3C,aAAa,EAAE,MAAM,CAAC,aAAmC;oBACzD,IAAI,EAAE,MAAM,CAAC,IAA4B;iBAC1C,CAAC;gBACF,OAAO,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACrC,CAAC;SACF;QAED,iEAAiE;QACjE;YACE,IAAI,EAAE,gBAAgB;YACtB,WAAW,EACT,gHAAgH;YAClH,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;gBACf,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;gBACtE,KAAK,EAAE,CAAC;qBACL,MAAM,EAAE;qBACR,QAAQ,EAAE;qBACV,QAAQ,CAAC,+DAA+D,CAAC;aAC7E,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBACxB,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,OAAO,EAAE,KAAK,EAAE,gCAAgC,EAAE,CAAC;gBACrD,CAAC;gBACD,OAAO,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,KAAe,EAAE,MAAM,CAAC,KAA2B,CAAC,CAAC;YAC5F,CAAC;SACF;QAED,iEAAiE;QACjE;YACE,IAAI,EAAE,eAAe;YACrB,WAAW,EACT,4FAA4F;YAC9F,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;gBACf,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;aACnF,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBACxB,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,OAAO,EAAE,KAAK,EAAE,gCAAgC,EAAE,CAAC;gBACrD,CAAC;gBACD,MAAM,KAAK,GAAG,MAAM,CAAC,KAA2B,CAAC;gBACjD,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACnC,IAAI,CAAC,GAAG,EAAE,CAAC;wBACT,OAAO,EAAE,KAAK,EAAE,kBAAkB,KAAK,EAAE,EAAE,CAAC;oBAC9C,CAAC;oBACD,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;oBACzC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;gBACzB,CAAC;gBACD,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;YACvC,CAAC;SACF;QAED,iEAAiE;QACjE;YACE,IAAI,EAAE,gBAAgB;YACtB,WAAW,EACT,oGAAoG;YACtG,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;gBACf,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;gBAC9D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;gBAC9D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;gBAC3E,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;gBACjF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;aAC/E,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBACxB,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,OAAO,EAAE,KAAK,EAAE,gCAAgC,EAAE,CAAC;gBACrD,CAAC;gBACD,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAMtD,CAAC;gBACF,OAAO,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YAC1E,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"intake-ops.js","sourceRoot":"","sources":["../../src/runtime/intake-ops.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,14 @@
1
1
  /**
2
- * Extended memory operations — 8 ops for advanced memory management.
2
+ * Extended memory operations — 18 ops for advanced memory management.
3
3
  *
4
4
  * These complement the 4 base memory ops in core-ops.ts:
5
5
  * memory_search, memory_capture, memory_list, session_capture
6
6
  *
7
- * New ops: memory_delete, memory_stats, memory_export, memory_import,
8
- * memory_prune, memory_deduplicate, memory_topics, memory_by_project
7
+ * CRUD: memory_delete, memory_stats, memory_export, memory_import,
8
+ * memory_prune, memory_deduplicate, memory_topics, memory_by_project
9
+ * Governance (#213): memory_get, session_search, knowledge_audit, smart_capture,
10
+ * knowledge_health, merge_patterns, knowledge_reorganize,
11
+ * list_project_knowledge, list_projects, knowledge_debug
9
12
  */
10
13
  import type { OpDefinition } from '../facades/types.js';
11
14
  import type { AgentRuntime } from './types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"memory-extra-ops.d.ts","sourceRoot":"","sources":["../../src/runtime/memory-extra-ops.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,EAAE,CA2K1E"}
1
+ {"version":3,"file":"memory-extra-ops.d.ts","sourceRoot":"","sources":["../../src/runtime/memory-extra-ops.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,EAAE,CA4d1E"}
@@ -1,15 +1,18 @@
1
1
  /**
2
- * Extended memory operations — 8 ops for advanced memory management.
2
+ * Extended memory operations — 18 ops for advanced memory management.
3
3
  *
4
4
  * These complement the 4 base memory ops in core-ops.ts:
5
5
  * memory_search, memory_capture, memory_list, session_capture
6
6
  *
7
- * New ops: memory_delete, memory_stats, memory_export, memory_import,
8
- * memory_prune, memory_deduplicate, memory_topics, memory_by_project
7
+ * CRUD: memory_delete, memory_stats, memory_export, memory_import,
8
+ * memory_prune, memory_deduplicate, memory_topics, memory_by_project
9
+ * Governance (#213): memory_get, session_search, knowledge_audit, smart_capture,
10
+ * knowledge_health, merge_patterns, knowledge_reorganize,
11
+ * list_project_knowledge, list_projects, knowledge_debug
9
12
  */
10
13
  import { z } from 'zod';
11
14
  export function createMemoryExtraOps(runtime) {
12
- const { vault } = runtime;
15
+ const { vault, brain, curator, linkManager } = runtime;
13
16
  return [
14
17
  {
15
18
  name: 'memory_delete',
@@ -106,6 +109,11 @@ export function createMemoryExtraOps(runtime) {
106
109
  topics: m.topics ?? [],
107
110
  filesModified: m.filesModified ?? [],
108
111
  toolsUsed: m.toolsUsed ?? [],
112
+ intent: m.intent ?? null,
113
+ decisions: m.decisions ?? [],
114
+ currentState: m.currentState ?? null,
115
+ nextSteps: m.nextSteps ?? [],
116
+ vaultEntriesReferenced: m.vaultEntriesReferenced ?? [],
109
117
  createdAt: m.createdAt,
110
118
  archivedAt: m.archivedAt ?? null,
111
119
  }));
@@ -168,6 +176,286 @@ export function createMemoryExtraOps(runtime) {
168
176
  return { count: groups.length, projects: groups };
169
177
  },
170
178
  },
179
+ // ─── Knowledge Governance (#213) ─────────────────────────────────
180
+ {
181
+ name: 'memory_get',
182
+ description: 'Get a single memory entry by ID.',
183
+ auth: 'read',
184
+ schema: z.object({
185
+ id: z.string().describe('Memory ID'),
186
+ }),
187
+ handler: async (params) => {
188
+ const memory = vault.getMemory(params.id);
189
+ if (!memory)
190
+ return { found: false, id: params.id };
191
+ return memory;
192
+ },
193
+ },
194
+ {
195
+ name: 'session_search',
196
+ description: 'Search session memories with optional includeArchived flag.',
197
+ auth: 'read',
198
+ schema: z.object({
199
+ query: z.string().describe('Search query'),
200
+ includeArchived: z.boolean().optional().default(false),
201
+ intent: z.string().optional().describe('Filter by session intent'),
202
+ limit: z.number().optional().default(10),
203
+ }),
204
+ handler: async (params) => {
205
+ // Use searchMemories with type=session
206
+ const results = vault.searchMemories(params.query, {
207
+ type: 'session',
208
+ intent: params.intent,
209
+ limit: params.limit,
210
+ });
211
+ // If includeArchived, also search archived
212
+ if (params.includeArchived) {
213
+ try {
214
+ const archived = vault
215
+ .getProvider()
216
+ .all("SELECT * FROM memories WHERE type = 'session' AND archived_at IS NOT NULL AND summary LIKE @q ORDER BY created_at DESC LIMIT @limit", { q: `%${params.query}%`, limit: params.limit });
217
+ // Minimal parsing for archived results
218
+ const archivedMemories = archived.map((r) => ({
219
+ id: r.id,
220
+ summary: r.summary,
221
+ intent: r.intent ?? null,
222
+ createdAt: r.created_at,
223
+ archived: true,
224
+ }));
225
+ return { active: results, archived: archivedMemories };
226
+ }
227
+ catch {
228
+ return { active: results, archived: [] };
229
+ }
230
+ }
231
+ return { results };
232
+ },
233
+ },
234
+ {
235
+ name: 'knowledge_audit',
236
+ description: 'Audit vault knowledge quality — coverage, freshness, tag health, recommendations.',
237
+ auth: 'read',
238
+ handler: async () => {
239
+ const healthAudit = curator.healthAudit();
240
+ const vaultStats = vault.stats();
241
+ const brainStats = brain.getStats();
242
+ return {
243
+ vault: {
244
+ totalEntries: vaultStats.totalEntries,
245
+ byType: vaultStats.byType,
246
+ byDomain: vaultStats.byDomain,
247
+ },
248
+ health: healthAudit,
249
+ brain: brainStats,
250
+ };
251
+ },
252
+ },
253
+ {
254
+ name: 'smart_capture',
255
+ description: 'Capture knowledge with auto-classification — infers type, tags, and severity from content.',
256
+ auth: 'write',
257
+ schema: z.object({
258
+ title: z.string(),
259
+ description: z.string(),
260
+ domain: z.string().optional().default('general'),
261
+ context: z.string().optional(),
262
+ why: z.string().optional(),
263
+ }),
264
+ handler: async (params) => {
265
+ const id = `smart-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`;
266
+ // Auto-infer type from keywords
267
+ const desc = params.description.toLowerCase();
268
+ const inferredType = desc.includes('never') ||
269
+ desc.includes("don't") ||
270
+ desc.includes('avoid') ||
271
+ desc.includes('anti')
272
+ ? 'anti-pattern'
273
+ : 'pattern';
274
+ const inferredSeverity = desc.includes('must') || desc.includes('critical') || desc.includes('always')
275
+ ? 'critical'
276
+ : desc.includes('should') || desc.includes('important')
277
+ ? 'warning'
278
+ : 'suggestion';
279
+ const result = brain.enrichAndCapture({
280
+ id,
281
+ type: inferredType,
282
+ domain: params.domain,
283
+ title: params.title,
284
+ description: params.description,
285
+ severity: inferredSeverity,
286
+ context: params.context,
287
+ why: params.why,
288
+ });
289
+ return {
290
+ ...result,
291
+ inferred: { type: inferredType, severity: inferredSeverity },
292
+ };
293
+ },
294
+ },
295
+ {
296
+ name: 'knowledge_health',
297
+ description: 'Knowledge base health — freshness, staleness, contradictions, coverage gaps.',
298
+ auth: 'read',
299
+ handler: async () => {
300
+ const audit = curator.healthAudit();
301
+ const ageReport = vault.getAgeReport();
302
+ const contradictions = curator.detectContradictions();
303
+ return {
304
+ score: audit.score,
305
+ metrics: audit.metrics,
306
+ ageDistribution: ageReport,
307
+ openContradictions: contradictions.filter((c) => c.status === 'open').length,
308
+ recommendations: audit.recommendations,
309
+ };
310
+ },
311
+ },
312
+ {
313
+ name: 'merge_patterns',
314
+ description: 'Merge two vault entries into one — combines tags, preserves links from both.',
315
+ auth: 'write',
316
+ schema: z.object({
317
+ keepId: z.string().describe('Entry ID to keep (survives the merge)'),
318
+ removeId: z.string().describe('Entry ID to remove (merged into keepId)'),
319
+ }),
320
+ handler: async (params) => {
321
+ const keepEntry = vault.get(params.keepId);
322
+ const removeEntry = vault.get(params.removeId);
323
+ if (!keepEntry)
324
+ return { error: `Entry not found: ${params.keepId}` };
325
+ if (!removeEntry)
326
+ return { error: `Entry not found: ${params.removeId}` };
327
+ // Merge tags
328
+ const mergedTags = [...new Set([...keepEntry.tags, ...removeEntry.tags])];
329
+ // Update the kept entry with merged tags and enriched description
330
+ vault.update(params.keepId, {
331
+ tags: mergedTags,
332
+ description: keepEntry.description.includes(removeEntry.title)
333
+ ? keepEntry.description
334
+ : `${keepEntry.description}\n\n[Merged from: ${removeEntry.title}] ${removeEntry.description}`,
335
+ });
336
+ // Transfer links from removed entry to kept entry
337
+ if (linkManager) {
338
+ try {
339
+ const links = linkManager.getLinks(params.removeId);
340
+ for (const link of links) {
341
+ const otherId = link.sourceId === params.removeId ? link.targetId : link.sourceId;
342
+ if (otherId !== params.keepId) {
343
+ try {
344
+ linkManager.addLink(params.keepId, otherId, link.linkType, `merged from ${params.removeId}`);
345
+ }
346
+ catch {
347
+ /* duplicate link — skip */
348
+ }
349
+ }
350
+ }
351
+ }
352
+ catch {
353
+ /* link manager ops failed — non-critical */
354
+ }
355
+ }
356
+ // Remove the merged entry
357
+ vault.remove(params.removeId);
358
+ return {
359
+ merged: true,
360
+ keptId: params.keepId,
361
+ removedId: params.removeId,
362
+ mergedTags,
363
+ };
364
+ },
365
+ },
366
+ {
367
+ name: 'knowledge_reorganize',
368
+ description: 'Re-categorize vault entries — change domain, retag, with dry-run preview.',
369
+ auth: 'write',
370
+ schema: z.object({
371
+ fromDomain: z.string().describe('Current domain to reorganize'),
372
+ toDomain: z.string().describe('Target domain'),
373
+ addTags: z.array(z.string()).optional().describe('Tags to add to all affected entries'),
374
+ removeTags: z
375
+ .array(z.string())
376
+ .optional()
377
+ .describe('Tags to remove from all affected entries'),
378
+ dryRun: z.boolean().optional().default(true).describe('Preview without applying'),
379
+ }),
380
+ handler: async (params) => {
381
+ const entries = vault.list({ limit: 10000 }).filter((e) => e.domain === params.fromDomain);
382
+ const addTags = params.addTags ?? [];
383
+ const removeTags = new Set(params.removeTags ?? []);
384
+ const toDomain = params.toDomain;
385
+ if (params.dryRun) {
386
+ return {
387
+ dryRun: true,
388
+ affected: entries.length,
389
+ fromDomain: params.fromDomain,
390
+ toDomain,
391
+ entries: entries.slice(0, 20).map((e) => ({ id: e.id, title: e.title })),
392
+ };
393
+ }
394
+ let updated = 0;
395
+ for (const entry of entries) {
396
+ const newTags = [...entry.tags.filter((t) => !removeTags.has(t)), ...addTags];
397
+ vault.update(entry.id, { domain: toDomain, tags: [...new Set(newTags)] });
398
+ updated++;
399
+ }
400
+ return { applied: true, updated, fromDomain: params.fromDomain, toDomain };
401
+ },
402
+ },
403
+ {
404
+ name: 'list_project_knowledge',
405
+ description: 'List vault entries scoped to a project (by tier tag or domain).',
406
+ auth: 'read',
407
+ schema: z.object({
408
+ project: z.string().describe('Project name or path to filter by'),
409
+ limit: z.number().optional().default(50),
410
+ }),
411
+ handler: async () => {
412
+ // Entries with tier='project' or tagged with project name
413
+ const all = vault.list({ limit: 10000 });
414
+ const projectEntries = all.filter((e) => e.tier === 'project' || e.origin === 'user');
415
+ return {
416
+ count: projectEntries.length,
417
+ entries: projectEntries.slice(0, 50).map((e) => ({
418
+ id: e.id,
419
+ title: e.title,
420
+ type: e.type,
421
+ domain: e.domain,
422
+ tier: e.tier,
423
+ })),
424
+ };
425
+ },
426
+ },
427
+ {
428
+ name: 'list_projects',
429
+ description: 'List all distinct domains and tiers in the vault — shows knowledge distribution.',
430
+ auth: 'read',
431
+ handler: async () => {
432
+ const stats = vault.stats();
433
+ return {
434
+ domains: Object.entries(stats.byDomain ?? {}).map(([domain, count]) => ({
435
+ domain,
436
+ count,
437
+ })),
438
+ types: Object.entries(stats.byType ?? {}).map(([type, count]) => ({ type, count })),
439
+ total: stats.totalEntries,
440
+ };
441
+ },
442
+ },
443
+ {
444
+ name: 'knowledge_debug',
445
+ description: 'Debug knowledge system internals — vault DB stats, brain state, curator state, memory counts.',
446
+ auth: 'admin',
447
+ handler: async () => {
448
+ return {
449
+ vault: {
450
+ stats: vault.stats(),
451
+ recentCount: vault.getRecent(1).length > 0 ? 'has entries' : 'empty',
452
+ },
453
+ brain: brain.getStats(),
454
+ curator: curator.getStatus(),
455
+ memory: vault.memoryStats(),
456
+ };
457
+ },
458
+ },
171
459
  ];
172
460
  }
173
461
  //# sourceMappingURL=memory-extra-ops.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory-extra-ops.js","sourceRoot":"","sources":["../../src/runtime/memory-extra-ops.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory-extra-ops.js","sourceRoot":"","sources":["../../src/runtime/memory-extra-ops.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"planning-extra-ops.d.ts","sourceRoot":"","sources":["../../src/runtime/planning-extra-ops.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK/C;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,EAAE,CAgrB5E"}
1
+ {"version":3,"file":"planning-extra-ops.d.ts","sourceRoot":"","sources":["../../src/runtime/planning-extra-ops.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM/C;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,EAAE,CA6wB5E"}
@@ -9,6 +9,7 @@
9
9
  * deliverable submission, and deliverable verification.
10
10
  */
11
11
  import { z } from 'zod';
12
+ import { collectGitEvidence } from '../planning/evidence-collector.js';
12
13
  import { matchPlaybooks } from '../playbooks/index.js';
13
14
  import { entryToPlaybookDefinition } from '../playbooks/index.js';
14
15
  /**
@@ -658,6 +659,90 @@ export function createPlanningExtraOps(runtime) {
658
659
  }
659
660
  },
660
661
  },
662
+ // ─── Evidence-Based Reconciliation (#206) ─────────────────────
663
+ {
664
+ name: 'plan_reconcile_with_evidence',
665
+ description: 'Cross-reference plan tasks against git diff to produce an evidence-based drift report. ' +
666
+ 'Shows which tasks have matching file changes, which are missing, and what unplanned work was done.',
667
+ auth: 'read',
668
+ schema: z.object({
669
+ planId: z.string().describe('Plan ID to verify against git'),
670
+ projectPath: z.string().describe('Project root (must be a git repo)'),
671
+ baseBranch: z
672
+ .string()
673
+ .optional()
674
+ .default('main')
675
+ .describe('Branch to diff against (default: main)'),
676
+ }),
677
+ handler: async (params) => {
678
+ try {
679
+ const plan = planner.get(params.planId);
680
+ if (!plan)
681
+ return { error: `Plan not found: ${params.planId}` };
682
+ return collectGitEvidence(plan, params.projectPath, params.baseBranch);
683
+ }
684
+ catch (err) {
685
+ return { error: err.message };
686
+ }
687
+ },
688
+ },
689
+ // ─── Purge Plans (#215) ──────────────────────────────────────────
690
+ {
691
+ name: 'plan_purge',
692
+ description: 'Permanently delete plans by mode: "archived" (only archived), "completed" (completed + archived), ' +
693
+ '"stale" (draft/approved older than 24h), or "specific" (by IDs). Use dryRun to preview.',
694
+ auth: 'admin',
695
+ schema: z.object({
696
+ mode: z.enum(['archived', 'completed', 'stale', 'specific']).describe('Purge mode'),
697
+ planIds: z.array(z.string()).optional().describe('Plan IDs for specific mode'),
698
+ dryRun: z.boolean().optional().default(false).describe('Preview without deleting'),
699
+ }),
700
+ handler: async (params) => {
701
+ const mode = params.mode;
702
+ const dryRun = params.dryRun;
703
+ const plans = planner.list();
704
+ const now = Date.now();
705
+ const staleThresholdMs = 24 * 60 * 60 * 1000;
706
+ let toPurge;
707
+ if (mode === 'archived') {
708
+ toPurge = plans.filter((p) => p.status === 'archived');
709
+ }
710
+ else if (mode === 'completed') {
711
+ toPurge = plans.filter((p) => p.status === 'completed' || p.status === 'archived');
712
+ }
713
+ else if (mode === 'stale') {
714
+ toPurge = plans.filter((p) => (p.status === 'draft' || p.status === 'approved' || p.status === 'brainstorming') &&
715
+ p.createdAt &&
716
+ now - p.createdAt > staleThresholdMs);
717
+ }
718
+ else if (mode === 'specific') {
719
+ const ids = new Set(params.planIds ?? []);
720
+ toPurge = plans.filter((p) => ids.has(p.id));
721
+ }
722
+ else {
723
+ return { error: `Unknown purge mode: ${mode}` };
724
+ }
725
+ if (dryRun) {
726
+ return {
727
+ dryRun: true,
728
+ mode,
729
+ wouldPurge: toPurge.length,
730
+ plans: toPurge.map((p) => ({ id: p.id, status: p.status, objective: p.objective })),
731
+ };
732
+ }
733
+ let purged = 0;
734
+ for (const p of toPurge) {
735
+ try {
736
+ planner.remove(p.id);
737
+ purged++;
738
+ }
739
+ catch {
740
+ // Skip plans that can't be removed
741
+ }
742
+ }
743
+ return { purged, mode };
744
+ },
745
+ },
661
746
  ];
662
747
  }
663
748
  //# sourceMappingURL=planning-extra-ops.js.map