@soleri/core 2.1.0 → 2.5.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 (377) hide show
  1. package/dist/brain/brain.d.ts +10 -1
  2. package/dist/brain/brain.d.ts.map +1 -1
  3. package/dist/brain/brain.js +116 -13
  4. package/dist/brain/brain.js.map +1 -1
  5. package/dist/brain/intelligence.d.ts +36 -1
  6. package/dist/brain/intelligence.d.ts.map +1 -1
  7. package/dist/brain/intelligence.js +119 -14
  8. package/dist/brain/intelligence.js.map +1 -1
  9. package/dist/brain/types.d.ts +34 -2
  10. package/dist/brain/types.d.ts.map +1 -1
  11. package/dist/cognee/client.d.ts +3 -0
  12. package/dist/cognee/client.d.ts.map +1 -1
  13. package/dist/cognee/client.js +17 -0
  14. package/dist/cognee/client.js.map +1 -1
  15. package/dist/cognee/sync-manager.d.ts +94 -0
  16. package/dist/cognee/sync-manager.d.ts.map +1 -0
  17. package/dist/cognee/sync-manager.js +293 -0
  18. package/dist/cognee/sync-manager.js.map +1 -0
  19. package/dist/control/identity-manager.d.ts +22 -0
  20. package/dist/control/identity-manager.d.ts.map +1 -0
  21. package/dist/control/identity-manager.js +233 -0
  22. package/dist/control/identity-manager.js.map +1 -0
  23. package/dist/control/intent-router.d.ts +32 -0
  24. package/dist/control/intent-router.d.ts.map +1 -0
  25. package/dist/control/intent-router.js +242 -0
  26. package/dist/control/intent-router.js.map +1 -0
  27. package/dist/control/types.d.ts +68 -0
  28. package/dist/control/types.d.ts.map +1 -0
  29. package/dist/control/types.js +9 -0
  30. package/dist/control/types.js.map +1 -0
  31. package/dist/curator/curator.d.ts +37 -1
  32. package/dist/curator/curator.d.ts.map +1 -1
  33. package/dist/curator/curator.js +199 -1
  34. package/dist/curator/curator.js.map +1 -1
  35. package/dist/errors/classify.d.ts +13 -0
  36. package/dist/errors/classify.d.ts.map +1 -0
  37. package/dist/errors/classify.js +97 -0
  38. package/dist/errors/classify.js.map +1 -0
  39. package/dist/errors/index.d.ts +6 -0
  40. package/dist/errors/index.d.ts.map +1 -0
  41. package/dist/errors/index.js +4 -0
  42. package/dist/errors/index.js.map +1 -0
  43. package/dist/errors/retry.d.ts +40 -0
  44. package/dist/errors/retry.d.ts.map +1 -0
  45. package/dist/errors/retry.js +97 -0
  46. package/dist/errors/retry.js.map +1 -0
  47. package/dist/errors/types.d.ts +48 -0
  48. package/dist/errors/types.d.ts.map +1 -0
  49. package/dist/errors/types.js +59 -0
  50. package/dist/errors/types.js.map +1 -0
  51. package/dist/facades/types.d.ts +1 -1
  52. package/dist/governance/governance.d.ts +42 -0
  53. package/dist/governance/governance.d.ts.map +1 -0
  54. package/dist/governance/governance.js +488 -0
  55. package/dist/governance/governance.js.map +1 -0
  56. package/dist/governance/index.d.ts +3 -0
  57. package/dist/governance/index.d.ts.map +1 -0
  58. package/dist/governance/index.js +2 -0
  59. package/dist/governance/index.js.map +1 -0
  60. package/dist/governance/types.d.ts +102 -0
  61. package/dist/governance/types.d.ts.map +1 -0
  62. package/dist/governance/types.js +3 -0
  63. package/dist/governance/types.js.map +1 -0
  64. package/dist/index.d.ts +52 -3
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +47 -1
  67. package/dist/index.js.map +1 -1
  68. package/dist/intake/content-classifier.d.ts +14 -0
  69. package/dist/intake/content-classifier.d.ts.map +1 -0
  70. package/dist/intake/content-classifier.js +125 -0
  71. package/dist/intake/content-classifier.js.map +1 -0
  72. package/dist/intake/dedup-gate.d.ts +17 -0
  73. package/dist/intake/dedup-gate.d.ts.map +1 -0
  74. package/dist/intake/dedup-gate.js +66 -0
  75. package/dist/intake/dedup-gate.js.map +1 -0
  76. package/dist/intake/intake-pipeline.d.ts +63 -0
  77. package/dist/intake/intake-pipeline.d.ts.map +1 -0
  78. package/dist/intake/intake-pipeline.js +373 -0
  79. package/dist/intake/intake-pipeline.js.map +1 -0
  80. package/dist/intake/types.d.ts +65 -0
  81. package/dist/intake/types.d.ts.map +1 -0
  82. package/dist/intake/types.js +3 -0
  83. package/dist/intake/types.js.map +1 -0
  84. package/dist/intelligence/loader.js +1 -1
  85. package/dist/intelligence/loader.js.map +1 -1
  86. package/dist/intelligence/types.d.ts +3 -1
  87. package/dist/intelligence/types.d.ts.map +1 -1
  88. package/dist/logging/logger.d.ts +37 -0
  89. package/dist/logging/logger.d.ts.map +1 -0
  90. package/dist/logging/logger.js +145 -0
  91. package/dist/logging/logger.js.map +1 -0
  92. package/dist/logging/types.d.ts +19 -0
  93. package/dist/logging/types.d.ts.map +1 -0
  94. package/dist/logging/types.js +2 -0
  95. package/dist/logging/types.js.map +1 -0
  96. package/dist/loop/loop-manager.d.ts +100 -0
  97. package/dist/loop/loop-manager.d.ts.map +1 -0
  98. package/dist/loop/loop-manager.js +379 -0
  99. package/dist/loop/loop-manager.js.map +1 -0
  100. package/dist/loop/types.d.ts +103 -0
  101. package/dist/loop/types.d.ts.map +1 -0
  102. package/dist/loop/types.js +11 -0
  103. package/dist/loop/types.js.map +1 -0
  104. package/dist/persistence/index.d.ts +3 -0
  105. package/dist/persistence/index.d.ts.map +1 -0
  106. package/dist/persistence/index.js +2 -0
  107. package/dist/persistence/index.js.map +1 -0
  108. package/dist/persistence/sqlite-provider.d.ts +25 -0
  109. package/dist/persistence/sqlite-provider.d.ts.map +1 -0
  110. package/dist/persistence/sqlite-provider.js +59 -0
  111. package/dist/persistence/sqlite-provider.js.map +1 -0
  112. package/dist/persistence/types.d.ts +36 -0
  113. package/dist/persistence/types.d.ts.map +1 -0
  114. package/dist/persistence/types.js +8 -0
  115. package/dist/persistence/types.js.map +1 -0
  116. package/dist/planning/gap-analysis.d.ts +72 -0
  117. package/dist/planning/gap-analysis.d.ts.map +1 -0
  118. package/dist/planning/gap-analysis.js +442 -0
  119. package/dist/planning/gap-analysis.js.map +1 -0
  120. package/dist/planning/gap-types.d.ts +29 -0
  121. package/dist/planning/gap-types.d.ts.map +1 -0
  122. package/dist/planning/gap-types.js +28 -0
  123. package/dist/planning/gap-types.js.map +1 -0
  124. package/dist/planning/planner.d.ts +421 -4
  125. package/dist/planning/planner.d.ts.map +1 -1
  126. package/dist/planning/planner.js +949 -21
  127. package/dist/planning/planner.js.map +1 -1
  128. package/dist/playbooks/generic/brainstorming.d.ts +9 -0
  129. package/dist/playbooks/generic/brainstorming.d.ts.map +1 -0
  130. package/dist/playbooks/generic/brainstorming.js +105 -0
  131. package/dist/playbooks/generic/brainstorming.js.map +1 -0
  132. package/dist/playbooks/generic/code-review.d.ts +11 -0
  133. package/dist/playbooks/generic/code-review.d.ts.map +1 -0
  134. package/dist/playbooks/generic/code-review.js +176 -0
  135. package/dist/playbooks/generic/code-review.js.map +1 -0
  136. package/dist/playbooks/generic/subagent-execution.d.ts +9 -0
  137. package/dist/playbooks/generic/subagent-execution.d.ts.map +1 -0
  138. package/dist/playbooks/generic/subagent-execution.js +68 -0
  139. package/dist/playbooks/generic/subagent-execution.js.map +1 -0
  140. package/dist/playbooks/generic/systematic-debugging.d.ts +9 -0
  141. package/dist/playbooks/generic/systematic-debugging.d.ts.map +1 -0
  142. package/dist/playbooks/generic/systematic-debugging.js +87 -0
  143. package/dist/playbooks/generic/systematic-debugging.js.map +1 -0
  144. package/dist/playbooks/generic/tdd.d.ts +9 -0
  145. package/dist/playbooks/generic/tdd.d.ts.map +1 -0
  146. package/dist/playbooks/generic/tdd.js +70 -0
  147. package/dist/playbooks/generic/tdd.js.map +1 -0
  148. package/dist/playbooks/generic/verification.d.ts +9 -0
  149. package/dist/playbooks/generic/verification.d.ts.map +1 -0
  150. package/dist/playbooks/generic/verification.js +74 -0
  151. package/dist/playbooks/generic/verification.js.map +1 -0
  152. package/dist/playbooks/index.d.ts +4 -0
  153. package/dist/playbooks/index.d.ts.map +1 -0
  154. package/dist/playbooks/index.js +5 -0
  155. package/dist/playbooks/index.js.map +1 -0
  156. package/dist/playbooks/playbook-registry.d.ts +42 -0
  157. package/dist/playbooks/playbook-registry.d.ts.map +1 -0
  158. package/dist/playbooks/playbook-registry.js +227 -0
  159. package/dist/playbooks/playbook-registry.js.map +1 -0
  160. package/dist/playbooks/playbook-seeder.d.ts +47 -0
  161. package/dist/playbooks/playbook-seeder.d.ts.map +1 -0
  162. package/dist/playbooks/playbook-seeder.js +104 -0
  163. package/dist/playbooks/playbook-seeder.js.map +1 -0
  164. package/dist/playbooks/playbook-types.d.ts +132 -0
  165. package/dist/playbooks/playbook-types.d.ts.map +1 -0
  166. package/dist/playbooks/playbook-types.js +12 -0
  167. package/dist/playbooks/playbook-types.js.map +1 -0
  168. package/dist/project/project-registry.d.ts +79 -0
  169. package/dist/project/project-registry.d.ts.map +1 -0
  170. package/dist/project/project-registry.js +274 -0
  171. package/dist/project/project-registry.js.map +1 -0
  172. package/dist/project/types.d.ts +28 -0
  173. package/dist/project/types.d.ts.map +1 -0
  174. package/dist/project/types.js +5 -0
  175. package/dist/project/types.js.map +1 -0
  176. package/dist/prompts/index.d.ts +4 -0
  177. package/dist/prompts/index.d.ts.map +1 -0
  178. package/dist/prompts/index.js +3 -0
  179. package/dist/prompts/index.js.map +1 -0
  180. package/dist/prompts/parser.d.ts +17 -0
  181. package/dist/prompts/parser.d.ts.map +1 -0
  182. package/dist/prompts/parser.js +47 -0
  183. package/dist/prompts/parser.js.map +1 -0
  184. package/dist/prompts/template-manager.d.ts +25 -0
  185. package/dist/prompts/template-manager.d.ts.map +1 -0
  186. package/dist/prompts/template-manager.js +71 -0
  187. package/dist/prompts/template-manager.js.map +1 -0
  188. package/dist/prompts/types.d.ts +26 -0
  189. package/dist/prompts/types.d.ts.map +1 -0
  190. package/dist/prompts/types.js +5 -0
  191. package/dist/prompts/types.js.map +1 -0
  192. package/dist/runtime/admin-extra-ops.d.ts +15 -0
  193. package/dist/runtime/admin-extra-ops.d.ts.map +1 -0
  194. package/dist/runtime/admin-extra-ops.js +595 -0
  195. package/dist/runtime/admin-extra-ops.js.map +1 -0
  196. package/dist/runtime/admin-ops.d.ts +15 -0
  197. package/dist/runtime/admin-ops.d.ts.map +1 -0
  198. package/dist/runtime/admin-ops.js +329 -0
  199. package/dist/runtime/admin-ops.js.map +1 -0
  200. package/dist/runtime/capture-ops.d.ts +15 -0
  201. package/dist/runtime/capture-ops.d.ts.map +1 -0
  202. package/dist/runtime/capture-ops.js +363 -0
  203. package/dist/runtime/capture-ops.js.map +1 -0
  204. package/dist/runtime/cognee-sync-ops.d.ts +12 -0
  205. package/dist/runtime/cognee-sync-ops.d.ts.map +1 -0
  206. package/dist/runtime/cognee-sync-ops.js +55 -0
  207. package/dist/runtime/cognee-sync-ops.js.map +1 -0
  208. package/dist/runtime/core-ops.d.ts +9 -3
  209. package/dist/runtime/core-ops.d.ts.map +1 -1
  210. package/dist/runtime/core-ops.js +693 -10
  211. package/dist/runtime/core-ops.js.map +1 -1
  212. package/dist/runtime/curator-extra-ops.d.ts +9 -0
  213. package/dist/runtime/curator-extra-ops.d.ts.map +1 -0
  214. package/dist/runtime/curator-extra-ops.js +71 -0
  215. package/dist/runtime/curator-extra-ops.js.map +1 -0
  216. package/dist/runtime/domain-ops.d.ts.map +1 -1
  217. package/dist/runtime/domain-ops.js +61 -15
  218. package/dist/runtime/domain-ops.js.map +1 -1
  219. package/dist/runtime/grading-ops.d.ts +14 -0
  220. package/dist/runtime/grading-ops.d.ts.map +1 -0
  221. package/dist/runtime/grading-ops.js +105 -0
  222. package/dist/runtime/grading-ops.js.map +1 -0
  223. package/dist/runtime/intake-ops.d.ts +14 -0
  224. package/dist/runtime/intake-ops.d.ts.map +1 -0
  225. package/dist/runtime/intake-ops.js +110 -0
  226. package/dist/runtime/intake-ops.js.map +1 -0
  227. package/dist/runtime/loop-ops.d.ts +14 -0
  228. package/dist/runtime/loop-ops.d.ts.map +1 -0
  229. package/dist/runtime/loop-ops.js +251 -0
  230. package/dist/runtime/loop-ops.js.map +1 -0
  231. package/dist/runtime/memory-cross-project-ops.d.ts +12 -0
  232. package/dist/runtime/memory-cross-project-ops.d.ts.map +1 -0
  233. package/dist/runtime/memory-cross-project-ops.js +165 -0
  234. package/dist/runtime/memory-cross-project-ops.js.map +1 -0
  235. package/dist/runtime/memory-extra-ops.d.ts +13 -0
  236. package/dist/runtime/memory-extra-ops.d.ts.map +1 -0
  237. package/dist/runtime/memory-extra-ops.js +173 -0
  238. package/dist/runtime/memory-extra-ops.js.map +1 -0
  239. package/dist/runtime/orchestrate-ops.d.ts +17 -0
  240. package/dist/runtime/orchestrate-ops.d.ts.map +1 -0
  241. package/dist/runtime/orchestrate-ops.js +246 -0
  242. package/dist/runtime/orchestrate-ops.js.map +1 -0
  243. package/dist/runtime/planning-extra-ops.d.ts +25 -0
  244. package/dist/runtime/planning-extra-ops.d.ts.map +1 -0
  245. package/dist/runtime/planning-extra-ops.js +663 -0
  246. package/dist/runtime/planning-extra-ops.js.map +1 -0
  247. package/dist/runtime/playbook-ops.d.ts +14 -0
  248. package/dist/runtime/playbook-ops.d.ts.map +1 -0
  249. package/dist/runtime/playbook-ops.js +141 -0
  250. package/dist/runtime/playbook-ops.js.map +1 -0
  251. package/dist/runtime/project-ops.d.ts +15 -0
  252. package/dist/runtime/project-ops.d.ts.map +1 -0
  253. package/dist/runtime/project-ops.js +186 -0
  254. package/dist/runtime/project-ops.js.map +1 -0
  255. package/dist/runtime/runtime.d.ts.map +1 -1
  256. package/dist/runtime/runtime.js +65 -3
  257. package/dist/runtime/runtime.js.map +1 -1
  258. package/dist/runtime/types.d.ts +29 -0
  259. package/dist/runtime/types.d.ts.map +1 -1
  260. package/dist/runtime/vault-extra-ops.d.ts +10 -0
  261. package/dist/runtime/vault-extra-ops.d.ts.map +1 -0
  262. package/dist/runtime/vault-extra-ops.js +536 -0
  263. package/dist/runtime/vault-extra-ops.js.map +1 -0
  264. package/dist/telemetry/telemetry.d.ts +48 -0
  265. package/dist/telemetry/telemetry.d.ts.map +1 -0
  266. package/dist/telemetry/telemetry.js +87 -0
  267. package/dist/telemetry/telemetry.js.map +1 -0
  268. package/dist/vault/playbook.d.ts +34 -0
  269. package/dist/vault/playbook.d.ts.map +1 -0
  270. package/dist/vault/playbook.js +60 -0
  271. package/dist/vault/playbook.js.map +1 -0
  272. package/dist/vault/vault.d.ts +97 -4
  273. package/dist/vault/vault.d.ts.map +1 -1
  274. package/dist/vault/vault.js +424 -65
  275. package/dist/vault/vault.js.map +1 -1
  276. package/package.json +7 -3
  277. package/src/__tests__/admin-extra-ops.test.ts +467 -0
  278. package/src/__tests__/admin-ops.test.ts +271 -0
  279. package/src/__tests__/brain-intelligence.test.ts +205 -0
  280. package/src/__tests__/brain.test.ts +134 -3
  281. package/src/__tests__/capture-ops.test.ts +509 -0
  282. package/src/__tests__/cognee-integration.test.ts +80 -0
  283. package/src/__tests__/cognee-sync-manager.test.ts +103 -0
  284. package/src/__tests__/core-ops.test.ts +292 -2
  285. package/src/__tests__/curator-extra-ops.test.ts +381 -0
  286. package/src/__tests__/domain-ops.test.ts +66 -0
  287. package/src/__tests__/errors.test.ts +388 -0
  288. package/src/__tests__/governance.test.ts +522 -0
  289. package/src/__tests__/grading-ops.test.ts +361 -0
  290. package/src/__tests__/identity-manager.test.ts +243 -0
  291. package/src/__tests__/intake-pipeline.test.ts +162 -0
  292. package/src/__tests__/intent-router.test.ts +222 -0
  293. package/src/__tests__/logger.test.ts +200 -0
  294. package/src/__tests__/loop-ops.test.ts +469 -0
  295. package/src/__tests__/memory-cross-project-ops.test.ts +248 -0
  296. package/src/__tests__/memory-extra-ops.test.ts +352 -0
  297. package/src/__tests__/orchestrate-ops.test.ts +289 -0
  298. package/src/__tests__/persistence.test.ts +225 -0
  299. package/src/__tests__/planner.test.ts +416 -7
  300. package/src/__tests__/planning-extra-ops.test.ts +706 -0
  301. package/src/__tests__/playbook-registry.test.ts +326 -0
  302. package/src/__tests__/playbook-seeder.test.ts +163 -0
  303. package/src/__tests__/playbook.test.ts +389 -0
  304. package/src/__tests__/project-ops.test.ts +381 -0
  305. package/src/__tests__/template-manager.test.ts +222 -0
  306. package/src/__tests__/vault-extra-ops.test.ts +482 -0
  307. package/src/brain/brain.ts +185 -16
  308. package/src/brain/intelligence.ts +179 -10
  309. package/src/brain/types.ts +40 -2
  310. package/src/cognee/client.ts +18 -0
  311. package/src/cognee/sync-manager.ts +389 -0
  312. package/src/control/identity-manager.ts +354 -0
  313. package/src/control/intent-router.ts +326 -0
  314. package/src/control/types.ts +102 -0
  315. package/src/curator/curator.ts +295 -1
  316. package/src/errors/classify.ts +102 -0
  317. package/src/errors/index.ts +5 -0
  318. package/src/errors/retry.ts +132 -0
  319. package/src/errors/types.ts +81 -0
  320. package/src/governance/governance.ts +698 -0
  321. package/src/governance/index.ts +18 -0
  322. package/src/governance/types.ts +111 -0
  323. package/src/index.ts +213 -2
  324. package/src/intake/content-classifier.ts +146 -0
  325. package/src/intake/dedup-gate.ts +92 -0
  326. package/src/intake/intake-pipeline.ts +503 -0
  327. package/src/intake/types.ts +69 -0
  328. package/src/intelligence/loader.ts +1 -1
  329. package/src/intelligence/types.ts +3 -1
  330. package/src/logging/logger.ts +154 -0
  331. package/src/logging/types.ts +21 -0
  332. package/src/loop/loop-manager.ts +448 -0
  333. package/src/loop/types.ts +115 -0
  334. package/src/persistence/index.ts +7 -0
  335. package/src/persistence/sqlite-provider.ts +62 -0
  336. package/src/persistence/types.ts +44 -0
  337. package/src/planning/gap-analysis.ts +775 -0
  338. package/src/planning/gap-types.ts +61 -0
  339. package/src/planning/planner.ts +1273 -24
  340. package/src/playbooks/generic/brainstorming.ts +110 -0
  341. package/src/playbooks/generic/code-review.ts +181 -0
  342. package/src/playbooks/generic/subagent-execution.ts +74 -0
  343. package/src/playbooks/generic/systematic-debugging.ts +92 -0
  344. package/src/playbooks/generic/tdd.ts +75 -0
  345. package/src/playbooks/generic/verification.ts +79 -0
  346. package/src/playbooks/index.ts +27 -0
  347. package/src/playbooks/playbook-registry.ts +284 -0
  348. package/src/playbooks/playbook-seeder.ts +119 -0
  349. package/src/playbooks/playbook-types.ts +162 -0
  350. package/src/project/project-registry.ts +370 -0
  351. package/src/project/types.ts +31 -0
  352. package/src/prompts/index.ts +3 -0
  353. package/src/prompts/parser.ts +59 -0
  354. package/src/prompts/template-manager.ts +77 -0
  355. package/src/prompts/types.ts +28 -0
  356. package/src/runtime/admin-extra-ops.ts +652 -0
  357. package/src/runtime/admin-ops.ts +340 -0
  358. package/src/runtime/capture-ops.ts +404 -0
  359. package/src/runtime/cognee-sync-ops.ts +63 -0
  360. package/src/runtime/core-ops.ts +787 -9
  361. package/src/runtime/curator-extra-ops.ts +85 -0
  362. package/src/runtime/domain-ops.ts +67 -15
  363. package/src/runtime/grading-ops.ts +130 -0
  364. package/src/runtime/intake-ops.ts +126 -0
  365. package/src/runtime/loop-ops.ts +277 -0
  366. package/src/runtime/memory-cross-project-ops.ts +191 -0
  367. package/src/runtime/memory-extra-ops.ts +186 -0
  368. package/src/runtime/orchestrate-ops.ts +278 -0
  369. package/src/runtime/planning-extra-ops.ts +718 -0
  370. package/src/runtime/playbook-ops.ts +169 -0
  371. package/src/runtime/project-ops.ts +202 -0
  372. package/src/runtime/runtime.ts +77 -3
  373. package/src/runtime/types.ts +29 -0
  374. package/src/runtime/vault-extra-ops.ts +606 -0
  375. package/src/telemetry/telemetry.ts +118 -0
  376. package/src/vault/playbook.ts +87 -0
  377. package/src/vault/vault.ts +575 -98
@@ -0,0 +1,373 @@
1
+ // ─── Intake Pipeline ──────────────────────────────────────────────
2
+ //
3
+ // 6-stage pipeline for ingesting PDF books into the vault:
4
+ // 1. Parse PDF + compute hash + create chunks → job record
5
+ // 2. Extract page text for each chunk
6
+ // 3. Classify chunk text via LLM
7
+ // 4. Dedup classified items against vault
8
+ // 5. Store unique items in vault
9
+ // 6. Finalize job with aggregate stats
10
+ //
11
+ // SQLite-backed job tracking for resumable processing.
12
+ import { createHash, randomUUID } from 'node:crypto';
13
+ import { readFileSync, statSync } from 'node:fs';
14
+ import { classifyChunk } from './content-classifier.js';
15
+ import { dedupItems } from './dedup-gate.js';
16
+ // =============================================================================
17
+ // CONSTANTS
18
+ // =============================================================================
19
+ const DEFAULT_CHUNK_SIZE = 10;
20
+ /**
21
+ * Map KnowledgeType → IntelligenceEntry.type.
22
+ * Only 'pattern' and 'anti-pattern' map directly; everything else becomes 'rule'.
23
+ */
24
+ function mapKnowledgeType(kt) {
25
+ if (kt === 'pattern')
26
+ return 'pattern';
27
+ if (kt === 'anti-pattern')
28
+ return 'anti-pattern';
29
+ return 'rule';
30
+ }
31
+ // =============================================================================
32
+ // HELPERS
33
+ // =============================================================================
34
+ /**
35
+ * Split concatenated PDF text into per-page segments.
36
+ *
37
+ * Strategy: split on form-feed characters first (common in pdf-parse output).
38
+ * If that yields fewer segments than expected, fall back to equal-length splits.
39
+ */
40
+ export function splitIntoPages(text, numPages) {
41
+ if (numPages <= 0)
42
+ return [text];
43
+ // Try form-feed split first
44
+ const ffPages = text.split('\f');
45
+ if (ffPages.length >= numPages) {
46
+ return ffPages.slice(0, numPages);
47
+ }
48
+ // Fallback: equal-length chunks
49
+ const chunkSize = Math.ceil(text.length / numPages);
50
+ const pages = [];
51
+ for (let i = 0; i < text.length; i += chunkSize) {
52
+ pages.push(text.slice(i, i + chunkSize));
53
+ }
54
+ // Pad with empty strings if we somehow got fewer
55
+ while (pages.length < numPages) {
56
+ pages.push('');
57
+ }
58
+ return pages;
59
+ }
60
+ // =============================================================================
61
+ // PIPELINE
62
+ // =============================================================================
63
+ export class IntakePipeline {
64
+ provider;
65
+ vault;
66
+ llm;
67
+ constructor(provider, vault, llm) {
68
+ this.provider = provider;
69
+ this.vault = vault;
70
+ this.llm = llm;
71
+ this.initSchema();
72
+ }
73
+ // ─── Schema ──────────────────────────────────────────────────────
74
+ initSchema() {
75
+ this.provider.execSql(`
76
+ CREATE TABLE IF NOT EXISTS intake_jobs (
77
+ id TEXT PRIMARY KEY,
78
+ status TEXT NOT NULL,
79
+ config TEXT NOT NULL,
80
+ pdf_meta TEXT,
81
+ toc TEXT,
82
+ stats TEXT,
83
+ created_at INTEGER,
84
+ updated_at INTEGER,
85
+ completed_at INTEGER
86
+ );
87
+
88
+ CREATE TABLE IF NOT EXISTS intake_chunks (
89
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
90
+ job_id TEXT NOT NULL REFERENCES intake_jobs(id),
91
+ chunk_index INTEGER,
92
+ title TEXT,
93
+ page_start INTEGER,
94
+ page_end INTEGER,
95
+ status TEXT DEFAULT 'pending',
96
+ items_extracted INTEGER DEFAULT 0,
97
+ items_stored INTEGER DEFAULT 0,
98
+ items_deduped INTEGER DEFAULT 0,
99
+ error TEXT,
100
+ processed_at INTEGER
101
+ );
102
+ `);
103
+ }
104
+ // ─── Stage 1: Ingest Book ────────────────────────────────────────
105
+ /**
106
+ * Parse a PDF, compute its file hash, create fixed-size page chunks,
107
+ * and persist the job + chunk records to the database.
108
+ */
109
+ async ingestBook(config) {
110
+ const jobId = randomUUID();
111
+ const now = Math.floor(Date.now() / 1000);
112
+ const chunkPageSize = config.chunkPageSize ?? DEFAULT_CHUNK_SIZE;
113
+ // Read file
114
+ const fileBuffer = readFileSync(config.pdfPath);
115
+ const fileSize = statSync(config.pdfPath).size;
116
+ const fileHash = createHash('sha256').update(fileBuffer).digest('hex');
117
+ // Dynamic import of pdf-parse
118
+ const pdfParse = (await import('pdf-parse')).default;
119
+ const pdfData = await pdfParse(fileBuffer);
120
+ const totalPages = pdfData.numpages;
121
+ const pdfMeta = { totalPages, fileHash, fileSize };
122
+ // Create chunk definitions (fixed N-page windows)
123
+ const numChunks = Math.ceil(totalPages / chunkPageSize);
124
+ this.provider.transaction(() => {
125
+ // Insert job
126
+ this.provider.run(`INSERT INTO intake_jobs (id, status, config, pdf_meta, toc, stats, created_at, updated_at, completed_at)
127
+ VALUES (@id, @status, @config, @pdfMeta, @toc, @stats, @createdAt, @updatedAt, @completedAt)`, {
128
+ id: jobId,
129
+ status: 'initialized',
130
+ config: JSON.stringify(config),
131
+ pdfMeta: JSON.stringify(pdfMeta),
132
+ toc: null,
133
+ stats: null,
134
+ createdAt: now,
135
+ updatedAt: now,
136
+ completedAt: null,
137
+ });
138
+ // Insert chunk records
139
+ for (let i = 0; i < numChunks; i++) {
140
+ const pageStart = i * chunkPageSize + 1;
141
+ const pageEnd = Math.min((i + 1) * chunkPageSize, totalPages);
142
+ const chunkTitle = `${config.title} — pages ${pageStart}-${pageEnd}`;
143
+ this.provider.run(`INSERT INTO intake_chunks (job_id, chunk_index, title, page_start, page_end, status)
144
+ VALUES (@jobId, @chunkIndex, @title, @pageStart, @pageEnd, @status)`, {
145
+ jobId,
146
+ chunkIndex: i,
147
+ title: chunkTitle,
148
+ pageStart,
149
+ pageEnd,
150
+ status: 'pending',
151
+ });
152
+ }
153
+ });
154
+ return this.getJob(jobId);
155
+ }
156
+ // ─── Stages 2-5: Process Chunks ──────────────────────────────────
157
+ /**
158
+ * Process up to `count` pending chunks for a job.
159
+ *
160
+ * For each chunk:
161
+ * 2. Extract page text from PDF
162
+ * 3. Classify via LLM
163
+ * 4. Dedup against vault
164
+ * 5. Store unique items
165
+ *
166
+ * When all chunks are done, finalizes the job (stage 6).
167
+ */
168
+ async processChunks(jobId, count = 5) {
169
+ // Get pending chunks
170
+ const pendingChunks = this.provider.all(`SELECT * FROM intake_chunks WHERE job_id = @jobId AND status = 'pending' ORDER BY chunk_index ASC LIMIT @limit`, { jobId, limit: count });
171
+ if (pendingChunks.length === 0) {
172
+ const remaining = this.countPendingChunks(jobId);
173
+ return { processed: 0, itemsStored: 0, itemsDeduped: 0, remaining };
174
+ }
175
+ // Mark job as processing
176
+ this.provider.run(`UPDATE intake_jobs SET status = 'processing', updated_at = @now WHERE id = @id`, { id: jobId, now: Math.floor(Date.now() / 1000) });
177
+ // Re-read config and parse PDF
178
+ const job = this.getJob(jobId);
179
+ if (!job) {
180
+ return { processed: 0, itemsStored: 0, itemsDeduped: 0, remaining: 0 };
181
+ }
182
+ const fileBuffer = readFileSync(job.config.pdfPath);
183
+ const pdfParse = (await import('pdf-parse')).default;
184
+ const pdfData = await pdfParse(fileBuffer);
185
+ const totalPages = job.pdfMeta?.totalPages ?? pdfData.numpages;
186
+ const pages = splitIntoPages(pdfData.text, totalPages);
187
+ let totalStored = 0;
188
+ let totalDeduped = 0;
189
+ let processed = 0;
190
+ for (const chunkRow of pendingChunks) {
191
+ const chunkId = chunkRow.id;
192
+ const chunkIndex = chunkRow.chunk_index;
193
+ const pageStart = chunkRow.page_start;
194
+ const pageEnd = chunkRow.page_end;
195
+ try {
196
+ // Mark chunk processing
197
+ this.provider.run(`UPDATE intake_chunks SET status = 'processing' WHERE id = @id`, {
198
+ id: chunkId,
199
+ });
200
+ // Stage 2: Extract page text (1-indexed → 0-indexed)
201
+ const chunkText = pages.slice(pageStart - 1, pageEnd).join('\n\n');
202
+ const citation = `${job.config.title}, pages ${pageStart}-${pageEnd}`;
203
+ // Stage 3: Classify
204
+ const classifiedItems = await classifyChunk(this.llm, chunkText, citation);
205
+ // Stage 4: Dedup
206
+ const dedupResults = dedupItems(classifiedItems, this.vault);
207
+ const uniqueItems = dedupResults.filter((r) => !r.isDuplicate);
208
+ const dupCount = dedupResults.filter((r) => r.isDuplicate).length;
209
+ // Stage 5: Store unique items in vault
210
+ let storedCount = 0;
211
+ for (let itemIdx = 0; itemIdx < uniqueItems.length; itemIdx++) {
212
+ const result = uniqueItems[itemIdx];
213
+ const entry = classifiedItemToEntry(result.item, job.config.domain, jobId, chunkIndex, itemIdx, job.config.tags);
214
+ this.vault.add(entry);
215
+ storedCount++;
216
+ }
217
+ // Update chunk record
218
+ const now = Math.floor(Date.now() / 1000);
219
+ this.provider.run(`UPDATE intake_chunks
220
+ SET status = 'completed', items_extracted = @extracted, items_stored = @stored, items_deduped = @deduped, processed_at = @now
221
+ WHERE id = @id`, {
222
+ id: chunkId,
223
+ extracted: classifiedItems.length,
224
+ stored: storedCount,
225
+ deduped: dupCount,
226
+ now,
227
+ });
228
+ totalStored += storedCount;
229
+ totalDeduped += dupCount;
230
+ processed++;
231
+ }
232
+ catch (err) {
233
+ // Graceful degradation: mark chunk as failed, continue with others
234
+ const errorMsg = err instanceof Error ? err.message : String(err);
235
+ this.provider.run(`UPDATE intake_chunks SET status = 'failed', error = @error, processed_at = @now WHERE id = @id`, { id: chunkId, error: errorMsg, now: Math.floor(Date.now() / 1000) });
236
+ processed++;
237
+ }
238
+ }
239
+ // Update job timestamp
240
+ this.provider.run(`UPDATE intake_jobs SET updated_at = @now WHERE id = @id`, {
241
+ id: jobId,
242
+ now: Math.floor(Date.now() / 1000),
243
+ });
244
+ // Check remaining
245
+ const remaining = this.countPendingChunks(jobId);
246
+ if (remaining === 0) {
247
+ this.finalizeJob(jobId);
248
+ }
249
+ return { processed, itemsStored: totalStored, itemsDeduped: totalDeduped, remaining };
250
+ }
251
+ // ─── Preview ─────────────────────────────────────────────────────
252
+ /**
253
+ * Parse a page range from a PDF and classify it without storing.
254
+ * Useful for previewing what the pipeline would extract.
255
+ */
256
+ async preview(config, pageStart, pageEnd) {
257
+ const fileBuffer = readFileSync(config.pdfPath);
258
+ const pdfParse = (await import('pdf-parse')).default;
259
+ const pdfData = await pdfParse(fileBuffer);
260
+ const totalPages = pdfData.numpages;
261
+ const pages = splitIntoPages(pdfData.text, totalPages);
262
+ const chunkText = pages.slice(pageStart - 1, pageEnd).join('\n\n');
263
+ const citation = `${config.title}, pages ${pageStart}-${pageEnd}`;
264
+ const items = await classifyChunk(this.llm, chunkText, citation);
265
+ return {
266
+ items,
267
+ chunkText,
268
+ pageRange: { start: pageStart, end: pageEnd },
269
+ };
270
+ }
271
+ // ─── Queries ─────────────────────────────────────────────────────
272
+ /**
273
+ * Get a job record by ID.
274
+ */
275
+ getJob(jobId) {
276
+ const row = this.provider.get('SELECT * FROM intake_jobs WHERE id = @id', { id: jobId });
277
+ return row ? rowToJobRecord(row) : null;
278
+ }
279
+ /**
280
+ * List all intake jobs.
281
+ */
282
+ listJobs() {
283
+ const rows = this.provider.all('SELECT * FROM intake_jobs ORDER BY created_at DESC');
284
+ return rows.map(rowToJobRecord);
285
+ }
286
+ /**
287
+ * Get all chunks for a job.
288
+ */
289
+ getChunks(jobId) {
290
+ const rows = this.provider.all('SELECT * FROM intake_chunks WHERE job_id = @jobId ORDER BY chunk_index ASC', { jobId });
291
+ return rows.map(rowToChunk);
292
+ }
293
+ // ─── Stage 6: Finalize ──────────────────────────────────────────
294
+ /**
295
+ * Sum stats from all chunks and mark the job as completed.
296
+ */
297
+ finalizeJob(jobId) {
298
+ const chunks = this.provider.all('SELECT * FROM intake_chunks WHERE job_id = @jobId', { jobId });
299
+ let itemsExtracted = 0;
300
+ let itemsStored = 0;
301
+ let itemsDeduped = 0;
302
+ let itemsFailed = 0;
303
+ for (const chunk of chunks) {
304
+ const status = chunk.status;
305
+ if (status === 'completed') {
306
+ itemsExtracted += chunk.items_extracted ?? 0;
307
+ itemsStored += chunk.items_stored ?? 0;
308
+ itemsDeduped += chunk.items_deduped ?? 0;
309
+ }
310
+ else if (status === 'failed') {
311
+ itemsFailed++;
312
+ }
313
+ }
314
+ const stats = { itemsExtracted, itemsStored, itemsDeduped, itemsFailed };
315
+ const now = Math.floor(Date.now() / 1000);
316
+ this.provider.run(`UPDATE intake_jobs SET status = 'completed', stats = @stats, updated_at = @now, completed_at = @now WHERE id = @id`, { id: jobId, stats: JSON.stringify(stats), now });
317
+ }
318
+ // ─── Private helpers ─────────────────────────────────────────────
319
+ countPendingChunks(jobId) {
320
+ const result = this.provider.get(`SELECT COUNT(*) as count FROM intake_chunks WHERE job_id = @jobId AND status = 'pending'`, { jobId });
321
+ return result?.count ?? 0;
322
+ }
323
+ }
324
+ // =============================================================================
325
+ // ROW MAPPERS
326
+ // =============================================================================
327
+ function rowToJobRecord(row) {
328
+ return {
329
+ id: row.id,
330
+ status: row.status,
331
+ config: JSON.parse(row.config),
332
+ pdfMeta: row.pdf_meta ? JSON.parse(row.pdf_meta) : null,
333
+ toc: row.toc ? JSON.parse(row.toc) : null,
334
+ stats: row.stats ? JSON.parse(row.stats) : null,
335
+ createdAt: row.created_at,
336
+ updatedAt: row.updated_at,
337
+ completedAt: row.completed_at ?? null,
338
+ };
339
+ }
340
+ function rowToChunk(row) {
341
+ return {
342
+ id: row.id,
343
+ jobId: row.job_id,
344
+ chunkIndex: row.chunk_index,
345
+ title: row.title ?? null,
346
+ pageStart: row.page_start,
347
+ pageEnd: row.page_end,
348
+ status: row.status,
349
+ itemsExtracted: row.items_extracted ?? 0,
350
+ itemsStored: row.items_stored ?? 0,
351
+ itemsDeduped: row.items_deduped ?? 0,
352
+ error: row.error ?? null,
353
+ processedAt: row.processed_at ?? null,
354
+ };
355
+ }
356
+ /**
357
+ * Convert a ClassifiedItem to an IntelligenceEntry for vault storage.
358
+ */
359
+ function classifiedItemToEntry(item, domain, jobId, chunkIndex, itemIndex, extraTags) {
360
+ const entryType = mapKnowledgeType(item.type);
361
+ const tags = [...item.tags, ...(extraTags ?? [])];
362
+ return {
363
+ id: `intake-${jobId}-${chunkIndex}-${itemIndex}`,
364
+ type: entryType,
365
+ domain,
366
+ title: item.title,
367
+ severity: item.severity,
368
+ description: item.description,
369
+ context: item.citation,
370
+ tags,
371
+ };
372
+ }
373
+ //# sourceMappingURL=intake-pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intake-pipeline.js","sourceRoot":"","sources":["../../src/intake/intake-pipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ export type IntakeJobStatus = 'initialized' | 'processing' | 'completed' | 'failed' | 'cancelled';
2
+ export type IntakeChunkStatus = 'pending' | 'processing' | 'completed' | 'failed' | 'skipped';
3
+ export type KnowledgeType = 'pattern' | 'anti-pattern' | 'principle' | 'concept' | 'reference' | 'workflow' | 'idea' | 'roadmap';
4
+ export interface IntakeConfig {
5
+ pdfPath: string;
6
+ title: string;
7
+ author?: string;
8
+ domain: string;
9
+ chunkPageSize?: number;
10
+ tags?: string[];
11
+ }
12
+ export interface IntakeChunk {
13
+ id: number;
14
+ jobId: string;
15
+ chunkIndex: number;
16
+ title: string | null;
17
+ pageStart: number;
18
+ pageEnd: number;
19
+ status: IntakeChunkStatus;
20
+ itemsExtracted: number;
21
+ itemsStored: number;
22
+ itemsDeduped: number;
23
+ error: string | null;
24
+ processedAt: number | null;
25
+ }
26
+ export interface ClassifiedItem {
27
+ type: KnowledgeType;
28
+ title: string;
29
+ description: string;
30
+ tags: string[];
31
+ severity: 'critical' | 'warning' | 'suggestion';
32
+ citation: string;
33
+ }
34
+ export interface IntakeJobRecord {
35
+ id: string;
36
+ status: IntakeJobStatus;
37
+ config: IntakeConfig;
38
+ pdfMeta: {
39
+ totalPages: number;
40
+ fileHash: string;
41
+ fileSize: number;
42
+ } | null;
43
+ toc: Array<{
44
+ title: string;
45
+ page: number;
46
+ }> | null;
47
+ stats: {
48
+ itemsExtracted: number;
49
+ itemsStored: number;
50
+ itemsDeduped: number;
51
+ itemsFailed: number;
52
+ } | null;
53
+ createdAt: number;
54
+ updatedAt: number;
55
+ completedAt: number | null;
56
+ }
57
+ export interface IntakePreviewResult {
58
+ items: ClassifiedItem[];
59
+ chunkText: string;
60
+ pageRange: {
61
+ start: number;
62
+ end: number;
63
+ };
64
+ }
65
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/intake/types.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,YAAY,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAClG,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAC9F,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,cAAc,GACd,WAAW,GACX,SAAS,GACT,WAAW,GACX,UAAU,GACV,MAAM,GACN,SAAS,CAAC;AAEd,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,UAAU,GAAG,SAAS,GAAG,YAAY,CAAC;IAChD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,eAAe,CAAC;IACxB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC3E,GAAG,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;IACnD,KAAK,EAAE;QACL,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,IAAI,CAAC;IACT,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C"}
@@ -0,0 +1,3 @@
1
+ // ─── Intake Pipeline Types ────────────────────────────────────────
2
+ export {};
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/intake/types.ts"],"names":[],"mappings":"AAAA,qEAAqE"}
@@ -30,7 +30,7 @@ export function loadIntelligenceData(dataDir) {
30
30
  function validateEntry(entry) {
31
31
  return (typeof entry.id === 'string' &&
32
32
  entry.id.length > 0 &&
33
- ['pattern', 'anti-pattern', 'rule'].includes(entry.type) &&
33
+ ['pattern', 'anti-pattern', 'rule', 'playbook'].includes(entry.type) &&
34
34
  typeof entry.title === 'string' &&
35
35
  entry.title.length > 0 &&
36
36
  typeof entry.description === 'string' &&
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/intelligence/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,MAAM,OAAO,GAAwB,EAAE,CAAC;IACxC,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,yCAAyC,GAAG,OAAO,CAAC,CAAC;QAClE,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAuB,CAAC;YACrD,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;gBAAE,SAAS;YAChE,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnC,IAAI,aAAa,CAAC,KAAK,CAAC;oBAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,aAAa,CAAC,KAAwB;IAC7C,OAAO,CACL,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ;QAC5B,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC;QACnB,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QACxD,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;QAC/B,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;QACtB,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ;QACrC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;QAC5B,CAAC,UAAU,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC9D,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAC1B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/intelligence/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,MAAM,OAAO,GAAwB,EAAE,CAAC;IACxC,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,yCAAyC,GAAG,OAAO,CAAC,CAAC;QAClE,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAuB,CAAC;YACrD,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;gBAAE,SAAS;YAChE,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnC,IAAI,aAAa,CAAC,KAAK,CAAC;oBAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,aAAa,CAAC,KAAwB;IAC7C,OAAO,CACL,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ;QAC5B,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC;QACnB,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QACpE,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;QAC/B,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;QACtB,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ;QACrC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;QAC5B,CAAC,UAAU,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC9D,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAC1B,CAAC;AACJ,CAAC"}
@@ -1,6 +1,6 @@
1
1
  export interface IntelligenceEntry {
2
2
  id: string;
3
- type: 'pattern' | 'anti-pattern' | 'rule';
3
+ type: 'pattern' | 'anti-pattern' | 'rule' | 'playbook';
4
4
  domain: string;
5
5
  title: string;
6
6
  severity: 'critical' | 'warning' | 'suggestion';
@@ -11,6 +11,8 @@ export interface IntelligenceEntry {
11
11
  why?: string;
12
12
  tags: string[];
13
13
  appliesTo?: string[];
14
+ validFrom?: number;
15
+ validUntil?: number;
14
16
  }
15
17
  export interface IntelligenceBundle {
16
18
  domain: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/intelligence/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,GAAG,cAAc,GAAG,MAAM,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,UAAU,GAAG,SAAS,GAAG,YAAY,CAAC;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/intelligence/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,GAAG,cAAc,GAAG,MAAM,GAAG,UAAU,CAAC;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,UAAU,GAAG,SAAS,GAAG,YAAY,CAAC;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Structured logger for Soleri agents.
3
+ *
4
+ * All output routes through stderr (stdout is reserved for MCP JSON-RPC).
5
+ * Supports optional file logging with daily rotation and 7-day retention.
6
+ *
7
+ * Ported from Salvador MCP's src/utils/logger.ts.
8
+ */
9
+ import type { LogContext, LoggerConfig } from './types.js';
10
+ export declare class Logger {
11
+ private readonly prefix;
12
+ private readonly minLevel;
13
+ private fileLogDir;
14
+ private fileLogPrefix;
15
+ private currentLogDate;
16
+ private currentLogPath;
17
+ constructor(config?: LoggerConfig);
18
+ /**
19
+ * Enable file-based logging. Output is teed to
20
+ * {dir}/{prefix}-YYYY-MM-DD.log in addition to stderr.
21
+ * Automatically prunes log files older than 7 days.
22
+ */
23
+ enableFileLog(dir: string, prefix?: string): void;
24
+ debug(message: string, context?: LogContext): void;
25
+ info(message: string, context?: LogContext): void;
26
+ warn(message: string, context?: LogContext): void;
27
+ error(message: string, context?: LogContext): void;
28
+ private log;
29
+ private writeToFile;
30
+ /** Switch to a new log file if the date has changed */
31
+ private rotateFileIfNeeded;
32
+ /** Remove log files older than LOG_RETENTION_DAYS */
33
+ private pruneOldLogs;
34
+ }
35
+ /** Factory function for creating a logger. */
36
+ export declare function createLogger(config?: LoggerConfig): Logger;
37
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logging/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAY,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAgBrE,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,cAAc,CAAuB;gBAEjC,MAAM,CAAC,EAAE,YAAY;IAajC;;;;OAIG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAQjD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIlD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIjD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIjD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIlD,OAAO,CAAC,GAAG;IAkBX,OAAO,CAAC,WAAW;IAoBnB,uDAAuD;IACvD,OAAO,CAAC,kBAAkB;IAS1B,qDAAqD;IACrD,OAAO,CAAC,YAAY;CAsBrB;AAED,8CAA8C;AAC9C,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM,CAE1D"}