@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,111 @@
1
+ // ─── Policy Types ───────────────────────────────────────────────────
2
+
3
+ export type PolicyType = 'quota' | 'retention' | 'auto-capture';
4
+ export type PolicyPreset = 'strict' | 'moderate' | 'permissive';
5
+ export type PolicyAction = 'capture' | 'quarantine' | 'reject' | 'propose';
6
+
7
+ export interface QuotaPolicy {
8
+ maxEntriesTotal: number;
9
+ maxEntriesPerCategory: number;
10
+ maxEntriesPerType: number;
11
+ warnAtPercent: number;
12
+ }
13
+
14
+ export interface RetentionPolicy {
15
+ archiveAfterDays: number;
16
+ minHitsToKeep: number;
17
+ deleteArchivedAfterDays: number;
18
+ }
19
+
20
+ export interface AutoCapturePolicy {
21
+ enabled: boolean;
22
+ requireReview: boolean;
23
+ maxPendingProposals: number;
24
+ autoExpireDays: number;
25
+ }
26
+
27
+ export interface VaultPolicy {
28
+ projectPath: string;
29
+ quotas: QuotaPolicy;
30
+ retention: RetentionPolicy;
31
+ autoCapture: AutoCapturePolicy;
32
+ }
33
+
34
+ export interface QuotaStatus {
35
+ total: number;
36
+ maxTotal: number;
37
+ byCategory: Record<string, number>;
38
+ byType: Record<string, number>;
39
+ warnAtPercent: number;
40
+ isWarning: boolean;
41
+ }
42
+
43
+ export interface PolicyDecision {
44
+ allowed: boolean;
45
+ action: PolicyAction;
46
+ reason?: string;
47
+ quotaStatus?: QuotaStatus;
48
+ }
49
+
50
+ export interface BatchDecision {
51
+ entry: { type: string; category: string; title?: string };
52
+ decision: PolicyDecision;
53
+ }
54
+
55
+ export interface PolicyAuditEntry {
56
+ id: number;
57
+ projectPath: string;
58
+ policyType: string;
59
+ oldConfig: Record<string, unknown> | null;
60
+ newConfig: Record<string, unknown>;
61
+ changedBy: string | null;
62
+ changedAt: number;
63
+ }
64
+
65
+ // ─── Proposal Types ─────────────────────────────────────────────────
66
+
67
+ export type ProposalStatus = 'pending' | 'approved' | 'rejected' | 'modified' | 'expired';
68
+
69
+ export interface Proposal {
70
+ id: number;
71
+ projectPath: string;
72
+ entryId: string | null;
73
+ title: string;
74
+ type: string;
75
+ category: string;
76
+ proposedData: Record<string, unknown>;
77
+ status: ProposalStatus;
78
+ proposedAt: number;
79
+ decidedAt: number | null;
80
+ decidedBy: string | null;
81
+ modificationNote: string | null;
82
+ source: string;
83
+ }
84
+
85
+ export interface ProposalStats {
86
+ total: number;
87
+ pending: number;
88
+ approved: number;
89
+ rejected: number;
90
+ modified: number;
91
+ expired: number;
92
+ acceptanceRate: number;
93
+ byCategory: Record<string, { total: number; accepted: number; rate: number }>;
94
+ }
95
+
96
+ // ─── Dashboard ──────────────────────────────────────────────────────
97
+
98
+ export interface GovernanceDashboard {
99
+ vaultSize: number;
100
+ quotaPercent: number;
101
+ quotaStatus: QuotaStatus;
102
+ pendingProposals: number;
103
+ acceptanceRate: number;
104
+ evaluationTrend: Record<string, number>;
105
+ policySummary: {
106
+ maxEntries: number;
107
+ requireReview: boolean;
108
+ archiveAfterDays: number;
109
+ autoExpireDays: number;
110
+ };
111
+ }
package/src/index.ts CHANGED
@@ -5,6 +5,31 @@ export { loadIntelligenceData } from './intelligence/loader.js';
5
5
  // ─── Vault ───────────────────────────────────────────────────────────
6
6
  export { Vault } from './vault/vault.js';
7
7
  export type { SearchResult, VaultStats, ProjectInfo, Memory, MemoryStats } from './vault/vault.js';
8
+ export { validatePlaybook, parsePlaybookFromEntry } from './vault/playbook.js';
9
+ export type { Playbook, PlaybookStep, PlaybookValidationResult } from './vault/playbook.js';
10
+
11
+ // ─── Playbook System (registry, matching, seeding) ─────────────────
12
+ export {
13
+ getBuiltinPlaybook,
14
+ getAllBuiltinPlaybooks,
15
+ scorePlaybook,
16
+ mergePlaybooks,
17
+ matchPlaybooks,
18
+ seedDefaultPlaybooks,
19
+ playbookDefinitionToEntry,
20
+ entryToPlaybookDefinition,
21
+ } from './playbooks/index.js';
22
+ export type {
23
+ PlaybookTier,
24
+ PlaybookIntent,
25
+ BrainstormSection,
26
+ PlaybookGate,
27
+ PlaybookTaskTemplate,
28
+ PlaybookDefinition,
29
+ MergedPlaybook,
30
+ PlaybookMatchResult,
31
+ } from './playbooks/index.js';
32
+ export { createPlaybookOps } from './runtime/playbook-ops.js';
8
33
 
9
34
  // ─── Text Utilities ─────────────────────────────────────────────────
10
35
  export {
@@ -37,6 +62,26 @@ export type {
37
62
  CuratorStatus,
38
63
  } from './curator/types.js';
39
64
 
65
+ // ─── Governance ─────────────────────────────────────────────────────
66
+ export { Governance } from './governance/governance.js';
67
+ export type {
68
+ PolicyType,
69
+ PolicyPreset,
70
+ PolicyAction,
71
+ QuotaPolicy,
72
+ RetentionPolicy,
73
+ AutoCapturePolicy,
74
+ VaultPolicy,
75
+ QuotaStatus,
76
+ PolicyDecision,
77
+ BatchDecision,
78
+ PolicyAuditEntry,
79
+ ProposalStatus,
80
+ Proposal,
81
+ ProposalStats,
82
+ GovernanceDashboard,
83
+ } from './governance/types.js';
84
+
40
85
  // ─── Brain ───────────────────────────────────────────────────────────
41
86
  export { Brain } from './brain/brain.js';
42
87
  export { BrainIntelligence } from './brain/intelligence.js';
@@ -48,6 +93,11 @@ export type {
48
93
  CaptureResult,
49
94
  BrainStats,
50
95
  QueryContext,
96
+ FeedbackType,
97
+ FeedbackSource,
98
+ FeedbackInput,
99
+ FeedbackEntry,
100
+ FeedbackStats,
51
101
  PatternStrength,
52
102
  StrengthsQuery,
53
103
  BrainSession,
@@ -74,9 +124,91 @@ export type {
74
124
  CogneeCognifyResult,
75
125
  } from './cognee/types.js';
76
126
 
127
+ // ─── Cognee Sync ──────────────────────────────────────────────────────
128
+ export { CogneeSyncManager } from './cognee/sync-manager.js';
129
+ export type { SyncOp, SyncStatus, SyncQueueItem, SyncManagerStats } from './cognee/sync-manager.js';
130
+
131
+ // ─── Intake Pipeline ──────────────────────────────────────────────────
132
+ export { IntakePipeline } from './intake/intake-pipeline.js';
133
+ export { classifyChunk, VALID_TYPES, CLASSIFICATION_PROMPT } from './intake/content-classifier.js';
134
+ export { dedupItems, DEDUP_THRESHOLD } from './intake/dedup-gate.js';
135
+ export type {
136
+ IntakeConfig,
137
+ IntakeChunk,
138
+ IntakeJobRecord,
139
+ IntakeJobStatus,
140
+ IntakeChunkStatus,
141
+ KnowledgeType,
142
+ ClassifiedItem,
143
+ IntakePreviewResult,
144
+ } from './intake/types.js';
145
+ export type { DedupResult } from './intake/dedup-gate.js';
146
+
77
147
  // ─── Planning ────────────────────────────────────────────────────────
78
- export { Planner } from './planning/planner.js';
79
- export type { PlanStatus, TaskStatus, PlanTask, Plan, PlanStore } from './planning/planner.js';
148
+ export {
149
+ Planner,
150
+ calculateScore,
151
+ calculateDriftScore,
152
+ isValidTransition,
153
+ getValidNextStatuses,
154
+ shouldExpire,
155
+ LIFECYCLE_TRANSITIONS,
156
+ NON_EXPIRING_STATUSES,
157
+ DRIFT_WEIGHTS,
158
+ } from './planning/planner.js';
159
+ export type {
160
+ PlanStatus,
161
+ TaskStatus,
162
+ TaskEvidence,
163
+ TaskMetrics,
164
+ TaskDeliverable,
165
+ ExecutionSummary,
166
+ PlanTask,
167
+ PlanDecision,
168
+ Plan,
169
+ PlanStore,
170
+ DriftItem,
171
+ ReconciliationReport,
172
+ ReviewEvidence,
173
+ PlanGrade,
174
+ PlanCheck,
175
+ } from './planning/planner.js';
176
+
177
+ // ─── Plan Gap Analysis ──────────────────────────────────────────────
178
+ export {
179
+ runGapAnalysis,
180
+ createToolFeasibilityPass,
181
+ createFlowAlignmentPass,
182
+ createAntiPatternPass,
183
+ } from './planning/gap-analysis.js';
184
+ export type { GapAnalysisOptions, GapAnalysisPass } from './planning/gap-analysis.js';
185
+ export {
186
+ SEVERITY_WEIGHTS,
187
+ CATEGORY_PENALTY_CAPS,
188
+ MIN_OBJECTIVE_LENGTH,
189
+ MIN_SCOPE_LENGTH,
190
+ MIN_DECISION_LENGTH,
191
+ generateGapId,
192
+ } from './planning/gap-types.js';
193
+ export type { GapSeverity, GapCategory, PlanGap } from './planning/gap-types.js';
194
+
195
+ // ─── Loop ────────────────────────────────────────────────────────────
196
+ export {
197
+ LoopManager,
198
+ extractPromise,
199
+ detectImplicitCompletion,
200
+ detectAnomaly,
201
+ } from './loop/loop-manager.js';
202
+ export type {
203
+ LoopMode,
204
+ LoopConfig,
205
+ LoopIteration,
206
+ LoopStatus,
207
+ LoopState,
208
+ LoopKnowledge,
209
+ LoopHistoryEntry,
210
+ LoopIterateDecision,
211
+ } from './loop/types.js';
80
212
 
81
213
  // ─── LLM Types ───────────────────────────────────────────────────────
82
214
  export { SecretString, LLMError } from './llm/types.js';
@@ -122,8 +254,87 @@ export type {
122
254
  // ─── LLM Client ─────────────────────────────────────────────────────
123
255
  export { LLMClient } from './llm/llm-client.js';
124
256
 
257
+ // ─── Control ────────────────────────────────────────────────────────
258
+ export { IdentityManager } from './control/identity-manager.js';
259
+ export { IntentRouter } from './control/intent-router.js';
260
+ export type {
261
+ GuidelineCategory,
262
+ Guideline,
263
+ AgentIdentity,
264
+ IdentityVersion,
265
+ IdentityUpdateInput,
266
+ GuidelineInput,
267
+ IntentType,
268
+ OperationalMode,
269
+ IntentClassification,
270
+ ModeConfig,
271
+ MorphResult,
272
+ } from './control/types.js';
273
+
274
+ // ─── Project Registry ──────────────────────────────────────────────
275
+ export { ProjectRegistry } from './project/project-registry.js';
276
+ export type { RegisteredProject, ProjectRule, LinkType, ProjectLink } from './project/types.js';
277
+
278
+ // ─── Telemetry ─────────────────────────────────────────────────────
279
+ export { Telemetry } from './telemetry/telemetry.js';
280
+ export type { FacadeCall, TelemetryStats } from './telemetry/telemetry.js';
281
+
282
+ // ─── Logging ────────────────────────────────────────────────────────
283
+ export { Logger, createLogger } from './logging/logger.js';
284
+ export type { LogLevel, LogEntry, LogContext, LoggerConfig } from './logging/types.js';
285
+
125
286
  // ─── Runtime Factory ────────────────────────────────────────────────
126
287
  export { createAgentRuntime } from './runtime/runtime.js';
127
288
  export { createCoreOps } from './runtime/core-ops.js';
128
289
  export { createDomainFacade, createDomainFacades } from './runtime/domain-ops.js';
290
+ export { createPlanningExtraOps } from './runtime/planning-extra-ops.js';
291
+ export { createMemoryExtraOps } from './runtime/memory-extra-ops.js';
292
+ export { createVaultExtraOps } from './runtime/vault-extra-ops.js';
293
+ export { createAdminOps } from './runtime/admin-ops.js';
294
+ export { createAdminExtraOps } from './runtime/admin-extra-ops.js';
295
+ export { createLoopOps } from './runtime/loop-ops.js';
296
+ export { createOrchestrateOps } from './runtime/orchestrate-ops.js';
297
+ export { createGradingOps } from './runtime/grading-ops.js';
298
+ export { createCaptureOps } from './runtime/capture-ops.js';
299
+ export { createCuratorExtraOps } from './runtime/curator-extra-ops.js';
300
+ export { createProjectOps } from './runtime/project-ops.js';
301
+ export { createMemoryCrossProjectOps } from './runtime/memory-cross-project-ops.js';
302
+ export { createCogneeSyncOps } from './runtime/cognee-sync-ops.js';
303
+ export { createIntakeOps } from './runtime/intake-ops.js';
129
304
  export type { AgentRuntimeConfig, AgentRuntime } from './runtime/types.js';
305
+
306
+ // ─── Errors ────────────────────────────────────────────────────────────
307
+ export {
308
+ SoleriErrorCode,
309
+ SoleriError,
310
+ ok,
311
+ err,
312
+ isOk,
313
+ isErr,
314
+ classifyError,
315
+ retryWithPreset,
316
+ shouldRetry,
317
+ getRetryDelay,
318
+ RETRY_PRESETS,
319
+ } from './errors/index.js';
320
+ export type {
321
+ ErrorClassification,
322
+ Result,
323
+ SoleriErrorOptions,
324
+ RetryPreset,
325
+ RetryConfig as SoleriRetryConfig,
326
+ RetryOptions,
327
+ } from './errors/index.js';
328
+
329
+ // ─── Persistence ───────────────────────────────────────────────────────
330
+ export { SQLitePersistenceProvider } from './persistence/index.js';
331
+ export type {
332
+ PersistenceProvider,
333
+ PersistenceParams,
334
+ RunResult,
335
+ PersistenceConfig,
336
+ } from './persistence/index.js';
337
+
338
+ // ─── Prompts ───────────────────────────────────────────────────────────
339
+ export { TemplateManager, parseVariables, resolveIncludes } from './prompts/index.js';
340
+ export type { PromptTemplate, TemplateVariable, RenderOptions } from './prompts/index.js';
@@ -0,0 +1,146 @@
1
+ // ─── Content Classifier — LLM-based knowledge extraction ────────────────────
2
+ //
3
+ // Takes a text chunk and uses an LLM to classify it into structured
4
+ // knowledge items. Graceful degradation: returns [] on any error.
5
+
6
+ import type { LLMClient } from '../llm/llm-client.js';
7
+ import type { ClassifiedItem, KnowledgeType } from './types.js';
8
+
9
+ // =============================================================================
10
+ // CONSTANTS
11
+ // =============================================================================
12
+
13
+ export const VALID_TYPES: KnowledgeType[] = [
14
+ 'pattern',
15
+ 'anti-pattern',
16
+ 'principle',
17
+ 'concept',
18
+ 'reference',
19
+ 'workflow',
20
+ 'idea',
21
+ 'roadmap',
22
+ ];
23
+
24
+ const VALID_SEVERITIES = ['critical', 'warning', 'suggestion'] as const;
25
+ type Severity = (typeof VALID_SEVERITIES)[number];
26
+
27
+ export const CLASSIFICATION_PROMPT = `You are a knowledge extraction engine. Your job is to analyze a text chunk and extract structured knowledge items from it.
28
+
29
+ For each distinct piece of knowledge you identify, produce an object with these fields:
30
+ - type: one of ${JSON.stringify(VALID_TYPES)}
31
+ - title: concise title, max 80 characters
32
+ - description: 2-3 sentence summary of the knowledge
33
+ - tags: 3-5 lowercase single-word or hyphenated tags
34
+ - severity: one of "critical", "warning", "suggestion"
35
+
36
+ Rules:
37
+ - Extract ALL meaningful knowledge items from the text.
38
+ - Each item must be self-contained and independently useful.
39
+ - Use "critical" for must-know items, "warning" for important gotchas, "suggestion" for nice-to-know.
40
+ - Tags should be specific and useful for search.
41
+ - Respond with a pure JSON array of objects. No markdown fences, no explanation, no wrapping.
42
+ - If the text contains no extractable knowledge, respond with an empty array: []`;
43
+
44
+ // =============================================================================
45
+ // CLASSIFIER
46
+ // =============================================================================
47
+
48
+ /**
49
+ * Classify a text chunk into structured knowledge items using an LLM.
50
+ *
51
+ * @param llm - LLMClient instance
52
+ * @param chunkText - The text to classify
53
+ * @param citation - Source citation (e.g. "book.pdf, pages 12-15")
54
+ * @returns Classified items, or [] on any error
55
+ */
56
+ export async function classifyChunk(
57
+ llm: LLMClient,
58
+ chunkText: string,
59
+ citation: string,
60
+ ): Promise<ClassifiedItem[]> {
61
+ try {
62
+ const result = await llm.complete({
63
+ provider: 'openai',
64
+ model: 'gpt-4o-mini',
65
+ systemPrompt: CLASSIFICATION_PROMPT,
66
+ userPrompt: chunkText,
67
+ maxTokens: 4096,
68
+ temperature: 0.3,
69
+ caller: 'intake',
70
+ task: 'classify',
71
+ });
72
+
73
+ const raw = parseJsonResponse(result.text);
74
+ if (!Array.isArray(raw)) return [];
75
+
76
+ return raw
77
+ .map((item: unknown) => sanitizeItem(item, citation))
78
+ .filter((item): item is ClassifiedItem => item !== null);
79
+ } catch {
80
+ // Graceful degradation — never throw
81
+ return [];
82
+ }
83
+ }
84
+
85
+ // =============================================================================
86
+ // HELPERS
87
+ // =============================================================================
88
+
89
+ /**
90
+ * Parse a JSON response, handling potential markdown fences the LLM
91
+ * might include despite instructions.
92
+ */
93
+ function parseJsonResponse(text: string): unknown {
94
+ const trimmed = text.trim();
95
+
96
+ // Strip markdown fences if present (defensive)
97
+ const fenceMatch = trimmed.match(/^```(?:json)?\s*\n?([\s\S]*?)\n?\s*```$/);
98
+ const jsonStr = fenceMatch ? fenceMatch[1] : trimmed;
99
+
100
+ return JSON.parse(jsonStr);
101
+ }
102
+
103
+ /**
104
+ * Validate and sanitize a single classified item.
105
+ * Returns null if the item is not salvageable.
106
+ */
107
+ function sanitizeItem(raw: unknown, citation: string): ClassifiedItem | null {
108
+ if (!raw || typeof raw !== 'object') return null;
109
+
110
+ const obj = raw as Record<string, unknown>;
111
+
112
+ // Type — must be a valid KnowledgeType
113
+ const type = typeof obj.type === 'string' ? obj.type : '';
114
+ if (!VALID_TYPES.includes(type as KnowledgeType)) return null;
115
+
116
+ // Title — required, truncate to 80 chars
117
+ const title = typeof obj.title === 'string' ? obj.title.slice(0, 80).trim() : '';
118
+ if (!title) return null;
119
+
120
+ // Description — required
121
+ const description = typeof obj.description === 'string' ? obj.description.trim() : '';
122
+ if (!description) return null;
123
+
124
+ // Tags — must be array of strings, cap at 5
125
+ const tags = Array.isArray(obj.tags)
126
+ ? obj.tags
127
+ .filter((t): t is string => typeof t === 'string')
128
+ .map((t) => t.toLowerCase().trim())
129
+ .filter((t) => t.length > 0)
130
+ .slice(0, 5)
131
+ : [];
132
+
133
+ // Severity — default to 'suggestion' if invalid
134
+ const severity: Severity = VALID_SEVERITIES.includes(obj.severity as Severity)
135
+ ? (obj.severity as Severity)
136
+ : 'suggestion';
137
+
138
+ return {
139
+ type: type as KnowledgeType,
140
+ title,
141
+ description,
142
+ tags,
143
+ severity,
144
+ citation,
145
+ };
146
+ }
@@ -0,0 +1,92 @@
1
+ // ─── Dedup Gate ───────────────────────────────────────────────────
2
+ // TF-IDF cosine similarity check against existing vault entries.
3
+ // Pure function: no side effects, no I/O beyond reading vault.
4
+
5
+ import {
6
+ tokenize,
7
+ calculateTfIdf,
8
+ cosineSimilarity,
9
+ type SparseVector,
10
+ } from '../text/similarity.js';
11
+ import type { Vault } from '../vault/vault.js';
12
+ import type { ClassifiedItem } from './types.js';
13
+
14
+ export const DEDUP_THRESHOLD = 0.85;
15
+
16
+ export interface DedupResult {
17
+ item: ClassifiedItem;
18
+ isDuplicate: boolean;
19
+ bestMatchId?: string;
20
+ similarity: number;
21
+ }
22
+
23
+ /**
24
+ * Check new items against existing vault entries for duplicates using TF-IDF cosine similarity.
25
+ *
26
+ * Builds a shared IDF vocabulary from all texts (existing + new), computes TF-IDF vectors,
27
+ * and marks items as duplicates when cosine similarity >= DEDUP_THRESHOLD.
28
+ */
29
+ export function dedupItems(items: ClassifiedItem[], vault: Vault): DedupResult[] {
30
+ const existing = vault.exportAll().entries;
31
+
32
+ // Fast path: nothing in vault — everything is new
33
+ if (existing.length === 0) {
34
+ return items.map((item) => ({
35
+ item,
36
+ isDuplicate: false,
37
+ similarity: 0,
38
+ }));
39
+ }
40
+
41
+ // ── Build texts for vocabulary ──────────────────────────────────
42
+ const existingTexts = existing.map((e) => `${e.title} ${e.description}`);
43
+ const newTexts = items.map((i) => `${i.title} ${i.description}`);
44
+ const allTexts = [...existingTexts, ...newTexts];
45
+ const totalDocs = allTexts.length;
46
+
47
+ // ── Count document frequency per term ───────────────────────────
48
+ const docFreq = new Map<string, number>();
49
+ for (const text of allTexts) {
50
+ const terms = new Set(tokenize(text));
51
+ for (const term of terms) {
52
+ docFreq.set(term, (docFreq.get(term) ?? 0) + 1);
53
+ }
54
+ }
55
+
56
+ // ── Build IDF vocabulary ────────────────────────────────────────
57
+ const vocabulary = new Map<string, number>();
58
+ for (const [term, df] of docFreq) {
59
+ vocabulary.set(term, Math.log((totalDocs + 1) / (df + 1)) + 1);
60
+ }
61
+
62
+ // ── Compute TF-IDF vectors for existing entries ─────────────────
63
+ const existingVectors: Array<{ id: string; vec: SparseVector }> = existing.map((entry, idx) => ({
64
+ id: entry.id,
65
+ vec: calculateTfIdf(tokenize(existingTexts[idx]), vocabulary),
66
+ }));
67
+
68
+ // ── Score each new item against all existing entries ────────────
69
+ return items.map((item, idx) => {
70
+ const itemVec = calculateTfIdf(tokenize(newTexts[idx]), vocabulary);
71
+
72
+ let bestSimilarity = 0;
73
+ let bestMatchId: string | undefined;
74
+
75
+ for (const { id, vec } of existingVectors) {
76
+ const sim = cosineSimilarity(itemVec, vec);
77
+ if (sim > bestSimilarity) {
78
+ bestSimilarity = sim;
79
+ bestMatchId = id;
80
+ }
81
+ }
82
+
83
+ const isDuplicate = bestSimilarity >= DEDUP_THRESHOLD;
84
+
85
+ return {
86
+ item,
87
+ isDuplicate,
88
+ bestMatchId: isDuplicate ? bestMatchId : undefined,
89
+ similarity: bestSimilarity,
90
+ };
91
+ });
92
+ }