@vinaes/succ 1.3.19

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 (781) hide show
  1. package/LICENSE +87 -0
  2. package/README.md +588 -0
  3. package/agents/succ-checkpoint-manager.md +51 -0
  4. package/agents/succ-code-reviewer.md +181 -0
  5. package/agents/succ-context-optimizer.md +83 -0
  6. package/agents/succ-debug.md +224 -0
  7. package/agents/succ-decision-auditor.md +74 -0
  8. package/agents/succ-deep-search.md +41 -0
  9. package/agents/succ-diff-reviewer.md +123 -0
  10. package/agents/succ-explore.md +83 -0
  11. package/agents/succ-general.md +109 -0
  12. package/agents/succ-knowledge-indexer.md +45 -0
  13. package/agents/succ-knowledge-mapper.md +61 -0
  14. package/agents/succ-memory-curator.md +43 -0
  15. package/agents/succ-memory-health-monitor.md +55 -0
  16. package/agents/succ-pattern-detective.md +62 -0
  17. package/agents/succ-plan.md +172 -0
  18. package/agents/succ-quality-improvement-coach.md +63 -0
  19. package/agents/succ-readiness-improver.md +62 -0
  20. package/agents/succ-session-handoff-orchestrator.md +54 -0
  21. package/agents/succ-session-reviewer.md +46 -0
  22. package/agents/succ-style-tracker.md +73 -0
  23. package/dist/cli.d.ts +3 -0
  24. package/dist/cli.d.ts.map +1 -0
  25. package/dist/cli.js +749 -0
  26. package/dist/cli.js.map +1 -0
  27. package/dist/commands/agents-md.d.ts +16 -0
  28. package/dist/commands/agents-md.d.ts.map +1 -0
  29. package/dist/commands/agents-md.js +33 -0
  30. package/dist/commands/agents-md.js.map +1 -0
  31. package/dist/commands/analyze-agents.d.ts +20 -0
  32. package/dist/commands/analyze-agents.d.ts.map +1 -0
  33. package/dist/commands/analyze-agents.js +305 -0
  34. package/dist/commands/analyze-agents.js.map +1 -0
  35. package/dist/commands/analyze-helpers.d.ts +22 -0
  36. package/dist/commands/analyze-helpers.d.ts.map +1 -0
  37. package/dist/commands/analyze-helpers.js +38 -0
  38. package/dist/commands/analyze-helpers.js.map +1 -0
  39. package/dist/commands/analyze-profile.d.ts +53 -0
  40. package/dist/commands/analyze-profile.d.ts.map +1 -0
  41. package/dist/commands/analyze-profile.js +638 -0
  42. package/dist/commands/analyze-profile.js.map +1 -0
  43. package/dist/commands/analyze-recursive.d.ts +20 -0
  44. package/dist/commands/analyze-recursive.d.ts.map +1 -0
  45. package/dist/commands/analyze-recursive.js +326 -0
  46. package/dist/commands/analyze-recursive.js.map +1 -0
  47. package/dist/commands/analyze-utils.d.ts +83 -0
  48. package/dist/commands/analyze-utils.d.ts.map +1 -0
  49. package/dist/commands/analyze-utils.js +541 -0
  50. package/dist/commands/analyze-utils.js.map +1 -0
  51. package/dist/commands/analyze.d.ts +15 -0
  52. package/dist/commands/analyze.d.ts.map +1 -0
  53. package/dist/commands/analyze.js +265 -0
  54. package/dist/commands/analyze.js.map +1 -0
  55. package/dist/commands/backfill.d.ts +22 -0
  56. package/dist/commands/backfill.d.ts.map +1 -0
  57. package/dist/commands/backfill.js +62 -0
  58. package/dist/commands/backfill.js.map +1 -0
  59. package/dist/commands/benchmark-quality.d.ts +18 -0
  60. package/dist/commands/benchmark-quality.d.ts.map +1 -0
  61. package/dist/commands/benchmark-quality.js +316 -0
  62. package/dist/commands/benchmark-quality.js.map +1 -0
  63. package/dist/commands/benchmark-sqlite-vec.d.ts +12 -0
  64. package/dist/commands/benchmark-sqlite-vec.d.ts.map +1 -0
  65. package/dist/commands/benchmark-sqlite-vec.js +281 -0
  66. package/dist/commands/benchmark-sqlite-vec.js.map +1 -0
  67. package/dist/commands/benchmark.d.ts +57 -0
  68. package/dist/commands/benchmark.d.ts.map +1 -0
  69. package/dist/commands/benchmark.js +682 -0
  70. package/dist/commands/benchmark.js.map +1 -0
  71. package/dist/commands/chat.d.ts +14 -0
  72. package/dist/commands/chat.d.ts.map +1 -0
  73. package/dist/commands/chat.js +84 -0
  74. package/dist/commands/chat.js.map +1 -0
  75. package/dist/commands/checkpoint.d.ts +27 -0
  76. package/dist/commands/checkpoint.d.ts.map +1 -0
  77. package/dist/commands/checkpoint.js +181 -0
  78. package/dist/commands/checkpoint.js.map +1 -0
  79. package/dist/commands/clear.d.ts +9 -0
  80. package/dist/commands/clear.d.ts.map +1 -0
  81. package/dist/commands/clear.js +31 -0
  82. package/dist/commands/clear.js.map +1 -0
  83. package/dist/commands/config.d.ts +26 -0
  84. package/dist/commands/config.d.ts.map +1 -0
  85. package/dist/commands/config.js +247 -0
  86. package/dist/commands/config.js.map +1 -0
  87. package/dist/commands/consolidate.d.ts +21 -0
  88. package/dist/commands/consolidate.d.ts.map +1 -0
  89. package/dist/commands/consolidate.js +117 -0
  90. package/dist/commands/consolidate.js.map +1 -0
  91. package/dist/commands/daemon.d.ts +48 -0
  92. package/dist/commands/daemon.d.ts.map +1 -0
  93. package/dist/commands/daemon.js +218 -0
  94. package/dist/commands/daemon.js.map +1 -0
  95. package/dist/commands/embedding.d.ts +26 -0
  96. package/dist/commands/embedding.d.ts.map +1 -0
  97. package/dist/commands/embedding.js +168 -0
  98. package/dist/commands/embedding.js.map +1 -0
  99. package/dist/commands/graph.d.ts +20 -0
  100. package/dist/commands/graph.d.ts.map +1 -0
  101. package/dist/commands/graph.js +128 -0
  102. package/dist/commands/graph.js.map +1 -0
  103. package/dist/commands/index-code.d.ts +23 -0
  104. package/dist/commands/index-code.d.ts.map +1 -0
  105. package/dist/commands/index-code.js +218 -0
  106. package/dist/commands/index-code.js.map +1 -0
  107. package/dist/commands/index.d.ts +23 -0
  108. package/dist/commands/index.d.ts.map +1 -0
  109. package/dist/commands/index.js +217 -0
  110. package/dist/commands/index.js.map +1 -0
  111. package/dist/commands/init-templates.d.ts +21 -0
  112. package/dist/commands/init-templates.d.ts.map +1 -0
  113. package/dist/commands/init-templates.js +487 -0
  114. package/dist/commands/init-templates.js.map +1 -0
  115. package/dist/commands/init.d.ts +10 -0
  116. package/dist/commands/init.d.ts.map +1 -0
  117. package/dist/commands/init.js +865 -0
  118. package/dist/commands/init.js.map +1 -0
  119. package/dist/commands/memories.d.ts +47 -0
  120. package/dist/commands/memories.d.ts.map +1 -0
  121. package/dist/commands/memories.js +597 -0
  122. package/dist/commands/memories.js.map +1 -0
  123. package/dist/commands/migrate.d.ts +19 -0
  124. package/dist/commands/migrate.d.ts.map +1 -0
  125. package/dist/commands/migrate.js +154 -0
  126. package/dist/commands/migrate.js.map +1 -0
  127. package/dist/commands/prd.d.ts +46 -0
  128. package/dist/commands/prd.d.ts.map +1 -0
  129. package/dist/commands/prd.js +378 -0
  130. package/dist/commands/prd.js.map +1 -0
  131. package/dist/commands/precompute-context.d.ts +11 -0
  132. package/dist/commands/precompute-context.d.ts.map +1 -0
  133. package/dist/commands/precompute-context.js +12 -0
  134. package/dist/commands/precompute-context.js.map +1 -0
  135. package/dist/commands/progress.d.ts +16 -0
  136. package/dist/commands/progress.d.ts.map +1 -0
  137. package/dist/commands/progress.js +38 -0
  138. package/dist/commands/progress.js.map +1 -0
  139. package/dist/commands/reindex.d.ts +17 -0
  140. package/dist/commands/reindex.d.ts.map +1 -0
  141. package/dist/commands/reindex.js +83 -0
  142. package/dist/commands/reindex.js.map +1 -0
  143. package/dist/commands/retention.d.ts +19 -0
  144. package/dist/commands/retention.d.ts.map +1 -0
  145. package/dist/commands/retention.js +162 -0
  146. package/dist/commands/retention.js.map +1 -0
  147. package/dist/commands/score.d.ts +10 -0
  148. package/dist/commands/score.d.ts.map +1 -0
  149. package/dist/commands/score.js +28 -0
  150. package/dist/commands/score.js.map +1 -0
  151. package/dist/commands/search.d.ts +7 -0
  152. package/dist/commands/search.d.ts.map +1 -0
  153. package/dist/commands/search.js +89 -0
  154. package/dist/commands/search.js.map +1 -0
  155. package/dist/commands/session-summary.d.ts +15 -0
  156. package/dist/commands/session-summary.d.ts.map +1 -0
  157. package/dist/commands/session-summary.js +16 -0
  158. package/dist/commands/session-summary.js.map +1 -0
  159. package/dist/commands/setup.d.ts +6 -0
  160. package/dist/commands/setup.d.ts.map +1 -0
  161. package/dist/commands/setup.js +222 -0
  162. package/dist/commands/setup.js.map +1 -0
  163. package/dist/commands/soul.d.ts +9 -0
  164. package/dist/commands/soul.d.ts.map +1 -0
  165. package/dist/commands/soul.js +256 -0
  166. package/dist/commands/soul.js.map +1 -0
  167. package/dist/commands/stats.d.ts +18 -0
  168. package/dist/commands/stats.d.ts.map +1 -0
  169. package/dist/commands/stats.js +138 -0
  170. package/dist/commands/stats.js.map +1 -0
  171. package/dist/commands/status.d.ts +2 -0
  172. package/dist/commands/status.d.ts.map +1 -0
  173. package/dist/commands/status.js +145 -0
  174. package/dist/commands/status.js.map +1 -0
  175. package/dist/commands/train-bpe.d.ts +8 -0
  176. package/dist/commands/train-bpe.d.ts.map +1 -0
  177. package/dist/commands/train-bpe.js +35 -0
  178. package/dist/commands/train-bpe.js.map +1 -0
  179. package/dist/commands/watch.d.ts +22 -0
  180. package/dist/commands/watch.d.ts.map +1 -0
  181. package/dist/commands/watch.js +171 -0
  182. package/dist/commands/watch.js.map +1 -0
  183. package/dist/daemon/analyzer.d.ts +54 -0
  184. package/dist/daemon/analyzer.d.ts.map +1 -0
  185. package/dist/daemon/analyzer.js +362 -0
  186. package/dist/daemon/analyzer.js.map +1 -0
  187. package/dist/daemon/client.d.ts +87 -0
  188. package/dist/daemon/client.d.ts.map +1 -0
  189. package/dist/daemon/client.js +356 -0
  190. package/dist/daemon/client.js.map +1 -0
  191. package/dist/daemon/index.d.ts +12 -0
  192. package/dist/daemon/index.d.ts.map +1 -0
  193. package/dist/daemon/index.js +12 -0
  194. package/dist/daemon/index.js.map +1 -0
  195. package/dist/daemon/service.d.ts +51 -0
  196. package/dist/daemon/service.d.ts.map +1 -0
  197. package/dist/daemon/service.js +1203 -0
  198. package/dist/daemon/service.js.map +1 -0
  199. package/dist/daemon/session-processor.d.ts +85 -0
  200. package/dist/daemon/session-processor.d.ts.map +1 -0
  201. package/dist/daemon/session-processor.js +571 -0
  202. package/dist/daemon/session-processor.js.map +1 -0
  203. package/dist/daemon/sessions.d.ts +62 -0
  204. package/dist/daemon/sessions.d.ts.map +1 -0
  205. package/dist/daemon/sessions.js +192 -0
  206. package/dist/daemon/sessions.js.map +1 -0
  207. package/dist/daemon/watcher.d.ts +52 -0
  208. package/dist/daemon/watcher.d.ts.map +1 -0
  209. package/dist/daemon/watcher.js +363 -0
  210. package/dist/daemon/watcher.js.map +1 -0
  211. package/dist/lib/agents-md-generator.d.ts +33 -0
  212. package/dist/lib/agents-md-generator.d.ts.map +1 -0
  213. package/dist/lib/agents-md-generator.js +156 -0
  214. package/dist/lib/agents-md-generator.js.map +1 -0
  215. package/dist/lib/ai-readiness.d.ts +132 -0
  216. package/dist/lib/ai-readiness.d.ts.map +1 -0
  217. package/dist/lib/ai-readiness.js +702 -0
  218. package/dist/lib/ai-readiness.js.map +1 -0
  219. package/dist/lib/analyze-state.d.ts +34 -0
  220. package/dist/lib/analyze-state.d.ts.map +1 -0
  221. package/dist/lib/analyze-state.js +106 -0
  222. package/dist/lib/analyze-state.js.map +1 -0
  223. package/dist/lib/benchmark.d.ts +250 -0
  224. package/dist/lib/benchmark.d.ts.map +1 -0
  225. package/dist/lib/benchmark.js +778 -0
  226. package/dist/lib/benchmark.js.map +1 -0
  227. package/dist/lib/bm25.d.ts +114 -0
  228. package/dist/lib/bm25.d.ts.map +1 -0
  229. package/dist/lib/bm25.js +727 -0
  230. package/dist/lib/bm25.js.map +1 -0
  231. package/dist/lib/bpe.d.ts +70 -0
  232. package/dist/lib/bpe.d.ts.map +1 -0
  233. package/dist/lib/bpe.js +270 -0
  234. package/dist/lib/bpe.js.map +1 -0
  235. package/dist/lib/checkpoint.d.ts +124 -0
  236. package/dist/lib/checkpoint.d.ts.map +1 -0
  237. package/dist/lib/checkpoint.js +321 -0
  238. package/dist/lib/checkpoint.js.map +1 -0
  239. package/dist/lib/chunker.d.ts +47 -0
  240. package/dist/lib/chunker.d.ts.map +1 -0
  241. package/dist/lib/chunker.js +358 -0
  242. package/dist/lib/chunker.js.map +1 -0
  243. package/dist/lib/claude-ws-transport.d.ts +76 -0
  244. package/dist/lib/claude-ws-transport.d.ts.map +1 -0
  245. package/dist/lib/claude-ws-transport.js +487 -0
  246. package/dist/lib/claude-ws-transport.js.map +1 -0
  247. package/dist/lib/compact-briefing.d.ts +22 -0
  248. package/dist/lib/compact-briefing.d.ts.map +1 -0
  249. package/dist/lib/compact-briefing.js +180 -0
  250. package/dist/lib/compact-briefing.js.map +1 -0
  251. package/dist/lib/config-defaults.d.ts +41 -0
  252. package/dist/lib/config-defaults.d.ts.map +1 -0
  253. package/dist/lib/config-defaults.js +99 -0
  254. package/dist/lib/config-defaults.js.map +1 -0
  255. package/dist/lib/config-display.d.ts +16 -0
  256. package/dist/lib/config-display.d.ts.map +1 -0
  257. package/dist/lib/config-display.js +408 -0
  258. package/dist/lib/config-display.js.map +1 -0
  259. package/dist/lib/config-types.d.ts +601 -0
  260. package/dist/lib/config-types.d.ts.map +1 -0
  261. package/dist/lib/config-types.js +7 -0
  262. package/dist/lib/config-types.js.map +1 -0
  263. package/dist/lib/config-validation.d.ts +19 -0
  264. package/dist/lib/config-validation.d.ts.map +1 -0
  265. package/dist/lib/config-validation.js +136 -0
  266. package/dist/lib/config-validation.js.map +1 -0
  267. package/dist/lib/config.d.ts +143 -0
  268. package/dist/lib/config.d.ts.map +1 -0
  269. package/dist/lib/config.js +689 -0
  270. package/dist/lib/config.js.map +1 -0
  271. package/dist/lib/consolidate.d.ts +115 -0
  272. package/dist/lib/consolidate.d.ts.map +1 -0
  273. package/dist/lib/consolidate.js +600 -0
  274. package/dist/lib/consolidate.js.map +1 -0
  275. package/dist/lib/db/bm25-indexes.d.ts +58 -0
  276. package/dist/lib/db/bm25-indexes.d.ts.map +1 -0
  277. package/dist/lib/db/bm25-indexes.js +333 -0
  278. package/dist/lib/db/bm25-indexes.js.map +1 -0
  279. package/dist/lib/db/bpe.d.ts +18 -0
  280. package/dist/lib/db/bpe.d.ts.map +1 -0
  281. package/dist/lib/db/bpe.js +44 -0
  282. package/dist/lib/db/bpe.js.map +1 -0
  283. package/dist/lib/db/connection.d.ts +47 -0
  284. package/dist/lib/db/connection.d.ts.map +1 -0
  285. package/dist/lib/db/connection.js +114 -0
  286. package/dist/lib/db/connection.js.map +1 -0
  287. package/dist/lib/db/documents.d.ts +58 -0
  288. package/dist/lib/db/documents.d.ts.map +1 -0
  289. package/dist/lib/db/documents.js +374 -0
  290. package/dist/lib/db/documents.js.map +1 -0
  291. package/dist/lib/db/file-hash.d.ts +26 -0
  292. package/dist/lib/db/file-hash.d.ts.map +1 -0
  293. package/dist/lib/db/file-hash.js +56 -0
  294. package/dist/lib/db/file-hash.js.map +1 -0
  295. package/dist/lib/db/global-memories.d.ts +62 -0
  296. package/dist/lib/db/global-memories.d.ts.map +1 -0
  297. package/dist/lib/db/global-memories.js +173 -0
  298. package/dist/lib/db/global-memories.js.map +1 -0
  299. package/dist/lib/db/graph.d.ts +163 -0
  300. package/dist/lib/db/graph.d.ts.map +1 -0
  301. package/dist/lib/db/graph.js +488 -0
  302. package/dist/lib/db/graph.js.map +1 -0
  303. package/dist/lib/db/helpers.d.ts +13 -0
  304. package/dist/lib/db/helpers.d.ts.map +1 -0
  305. package/dist/lib/db/helpers.js +21 -0
  306. package/dist/lib/db/helpers.js.map +1 -0
  307. package/dist/lib/db/hybrid-search.d.ts +64 -0
  308. package/dist/lib/db/hybrid-search.d.ts.map +1 -0
  309. package/dist/lib/db/hybrid-search.js +549 -0
  310. package/dist/lib/db/hybrid-search.js.map +1 -0
  311. package/dist/lib/db/index.d.ts +23 -0
  312. package/dist/lib/db/index.d.ts.map +1 -0
  313. package/dist/lib/db/index.js +23 -0
  314. package/dist/lib/db/index.js.map +1 -0
  315. package/dist/lib/db/memories.d.ts +174 -0
  316. package/dist/lib/db/memories.d.ts.map +1 -0
  317. package/dist/lib/db/memories.js +866 -0
  318. package/dist/lib/db/memories.js.map +1 -0
  319. package/dist/lib/db/retention.d.ts +64 -0
  320. package/dist/lib/db/retention.d.ts.map +1 -0
  321. package/dist/lib/db/retention.js +115 -0
  322. package/dist/lib/db/retention.js.map +1 -0
  323. package/dist/lib/db/schema.d.ts +29 -0
  324. package/dist/lib/db/schema.d.ts.map +1 -0
  325. package/dist/lib/db/schema.js +832 -0
  326. package/dist/lib/db/schema.js.map +1 -0
  327. package/dist/lib/db/skills.d.ts +65 -0
  328. package/dist/lib/db/skills.d.ts.map +1 -0
  329. package/dist/lib/db/skills.js +119 -0
  330. package/dist/lib/db/skills.js.map +1 -0
  331. package/dist/lib/db/token-frequency.d.ts +34 -0
  332. package/dist/lib/db/token-frequency.d.ts.map +1 -0
  333. package/dist/lib/db/token-frequency.js +92 -0
  334. package/dist/lib/db/token-frequency.js.map +1 -0
  335. package/dist/lib/db/token-stats.d.ts +43 -0
  336. package/dist/lib/db/token-stats.d.ts.map +1 -0
  337. package/dist/lib/db/token-stats.js +59 -0
  338. package/dist/lib/db/token-stats.js.map +1 -0
  339. package/dist/lib/db/types.d.ts +57 -0
  340. package/dist/lib/db/types.d.ts.map +1 -0
  341. package/dist/lib/db/types.js +5 -0
  342. package/dist/lib/db/types.js.map +1 -0
  343. package/dist/lib/db/web-search-history.d.ts +22 -0
  344. package/dist/lib/db/web-search-history.d.ts.map +1 -0
  345. package/dist/lib/db/web-search-history.js +107 -0
  346. package/dist/lib/db/web-search-history.js.map +1 -0
  347. package/dist/lib/debug/state.d.ts +17 -0
  348. package/dist/lib/debug/state.d.ts.map +1 -0
  349. package/dist/lib/debug/state.js +131 -0
  350. package/dist/lib/debug/state.js.map +1 -0
  351. package/dist/lib/debug/types.d.ts +74 -0
  352. package/dist/lib/debug/types.d.ts.map +1 -0
  353. package/dist/lib/debug/types.js +85 -0
  354. package/dist/lib/debug/types.js.map +1 -0
  355. package/dist/lib/embedding-pool.d.ts +37 -0
  356. package/dist/lib/embedding-pool.d.ts.map +1 -0
  357. package/dist/lib/embedding-pool.js +159 -0
  358. package/dist/lib/embedding-pool.js.map +1 -0
  359. package/dist/lib/embedding-worker.d.ts +7 -0
  360. package/dist/lib/embedding-worker.d.ts.map +1 -0
  361. package/dist/lib/embedding-worker.js +49 -0
  362. package/dist/lib/embedding-worker.js.map +1 -0
  363. package/dist/lib/embeddings.d.ts +54 -0
  364. package/dist/lib/embeddings.d.ts.map +1 -0
  365. package/dist/lib/embeddings.js +437 -0
  366. package/dist/lib/embeddings.js.map +1 -0
  367. package/dist/lib/errors.d.ts +40 -0
  368. package/dist/lib/errors.d.ts.map +1 -0
  369. package/dist/lib/errors.js +66 -0
  370. package/dist/lib/errors.js.map +1 -0
  371. package/dist/lib/fault-logger.d.ts +35 -0
  372. package/dist/lib/fault-logger.d.ts.map +1 -0
  373. package/dist/lib/fault-logger.js +182 -0
  374. package/dist/lib/fault-logger.js.map +1 -0
  375. package/dist/lib/graph/centrality.d.ts +34 -0
  376. package/dist/lib/graph/centrality.d.ts.map +1 -0
  377. package/dist/lib/graph/centrality.js +76 -0
  378. package/dist/lib/graph/centrality.js.map +1 -0
  379. package/dist/lib/graph/cleanup.d.ts +36 -0
  380. package/dist/lib/graph/cleanup.d.ts.map +1 -0
  381. package/dist/lib/graph/cleanup.js +96 -0
  382. package/dist/lib/graph/cleanup.js.map +1 -0
  383. package/dist/lib/graph/community-detection.d.ts +61 -0
  384. package/dist/lib/graph/community-detection.d.ts.map +1 -0
  385. package/dist/lib/graph/community-detection.js +218 -0
  386. package/dist/lib/graph/community-detection.js.map +1 -0
  387. package/dist/lib/graph/contextual-proximity.d.ts +41 -0
  388. package/dist/lib/graph/contextual-proximity.d.ts.map +1 -0
  389. package/dist/lib/graph/contextual-proximity.js +125 -0
  390. package/dist/lib/graph/contextual-proximity.js.map +1 -0
  391. package/dist/lib/graph/llm-relations.d.ts +54 -0
  392. package/dist/lib/graph/llm-relations.d.ts.map +1 -0
  393. package/dist/lib/graph/llm-relations.js +265 -0
  394. package/dist/lib/graph/llm-relations.js.map +1 -0
  395. package/dist/lib/graph-export.d.ts +13 -0
  396. package/dist/lib/graph-export.d.ts.map +1 -0
  397. package/dist/lib/graph-export.js +637 -0
  398. package/dist/lib/graph-export.js.map +1 -0
  399. package/dist/lib/graph-scheduler.d.ts +7 -0
  400. package/dist/lib/graph-scheduler.d.ts.map +1 -0
  401. package/dist/lib/graph-scheduler.js +21 -0
  402. package/dist/lib/graph-scheduler.js.map +1 -0
  403. package/dist/lib/indexer.d.ts +36 -0
  404. package/dist/lib/indexer.d.ts.map +1 -0
  405. package/dist/lib/indexer.js +226 -0
  406. package/dist/lib/indexer.js.map +1 -0
  407. package/dist/lib/learning-delta.d.ts +35 -0
  408. package/dist/lib/learning-delta.d.ts.map +1 -0
  409. package/dist/lib/learning-delta.js +53 -0
  410. package/dist/lib/learning-delta.js.map +1 -0
  411. package/dist/lib/llm.d.ts +118 -0
  412. package/dist/lib/llm.d.ts.map +1 -0
  413. package/dist/lib/llm.js +439 -0
  414. package/dist/lib/llm.js.map +1 -0
  415. package/dist/lib/lock.d.ts +27 -0
  416. package/dist/lib/lock.d.ts.map +1 -0
  417. package/dist/lib/lock.js +143 -0
  418. package/dist/lib/lock.js.map +1 -0
  419. package/dist/lib/md-fetch.d.ts +61 -0
  420. package/dist/lib/md-fetch.d.ts.map +1 -0
  421. package/dist/lib/md-fetch.js +141 -0
  422. package/dist/lib/md-fetch.js.map +1 -0
  423. package/dist/lib/mmr.d.ts +29 -0
  424. package/dist/lib/mmr.d.ts.map +1 -0
  425. package/dist/lib/mmr.js +89 -0
  426. package/dist/lib/mmr.js.map +1 -0
  427. package/dist/lib/onboarding/ai-chat.d.ts +11 -0
  428. package/dist/lib/onboarding/ai-chat.d.ts.map +1 -0
  429. package/dist/lib/onboarding/ai-chat.js +85 -0
  430. package/dist/lib/onboarding/ai-chat.js.map +1 -0
  431. package/dist/lib/onboarding/index.d.ts +7 -0
  432. package/dist/lib/onboarding/index.d.ts.map +1 -0
  433. package/dist/lib/onboarding/index.js +7 -0
  434. package/dist/lib/onboarding/index.js.map +1 -0
  435. package/dist/lib/onboarding/wizard.d.ts +11 -0
  436. package/dist/lib/onboarding/wizard.d.ts.map +1 -0
  437. package/dist/lib/onboarding/wizard.js +104 -0
  438. package/dist/lib/onboarding/wizard.js.map +1 -0
  439. package/dist/lib/ort-provider.d.ts +27 -0
  440. package/dist/lib/ort-provider.d.ts.map +1 -0
  441. package/dist/lib/ort-provider.js +83 -0
  442. package/dist/lib/ort-provider.js.map +1 -0
  443. package/dist/lib/ort-session.d.ts +32 -0
  444. package/dist/lib/ort-session.d.ts.map +1 -0
  445. package/dist/lib/ort-session.js +227 -0
  446. package/dist/lib/ort-session.js.map +1 -0
  447. package/dist/lib/patterns.d.ts +43 -0
  448. package/dist/lib/patterns.d.ts.map +1 -0
  449. package/dist/lib/patterns.js +395 -0
  450. package/dist/lib/patterns.js.map +1 -0
  451. package/dist/lib/prd/codebase-context.d.ts +27 -0
  452. package/dist/lib/prd/codebase-context.d.ts.map +1 -0
  453. package/dist/lib/prd/codebase-context.js +420 -0
  454. package/dist/lib/prd/codebase-context.js.map +1 -0
  455. package/dist/lib/prd/context.d.ts +24 -0
  456. package/dist/lib/prd/context.d.ts.map +1 -0
  457. package/dist/lib/prd/context.js +68 -0
  458. package/dist/lib/prd/context.js.map +1 -0
  459. package/dist/lib/prd/executor.d.ts +52 -0
  460. package/dist/lib/prd/executor.d.ts.map +1 -0
  461. package/dist/lib/prd/executor.js +154 -0
  462. package/dist/lib/prd/executor.js.map +1 -0
  463. package/dist/lib/prd/export.d.ts +40 -0
  464. package/dist/lib/prd/export.d.ts.map +1 -0
  465. package/dist/lib/prd/export.js +511 -0
  466. package/dist/lib/prd/export.js.map +1 -0
  467. package/dist/lib/prd/gates.d.ts +30 -0
  468. package/dist/lib/prd/gates.d.ts.map +1 -0
  469. package/dist/lib/prd/gates.js +100 -0
  470. package/dist/lib/prd/gates.js.map +1 -0
  471. package/dist/lib/prd/generate.d.ts +56 -0
  472. package/dist/lib/prd/generate.d.ts.map +1 -0
  473. package/dist/lib/prd/generate.js +357 -0
  474. package/dist/lib/prd/generate.js.map +1 -0
  475. package/dist/lib/prd/parse.d.ts +21 -0
  476. package/dist/lib/prd/parse.d.ts.map +1 -0
  477. package/dist/lib/prd/parse.js +270 -0
  478. package/dist/lib/prd/parse.js.map +1 -0
  479. package/dist/lib/prd/prompt-builder.d.ts +18 -0
  480. package/dist/lib/prd/prompt-builder.d.ts.map +1 -0
  481. package/dist/lib/prd/prompt-builder.js +61 -0
  482. package/dist/lib/prd/prompt-builder.js.map +1 -0
  483. package/dist/lib/prd/runner.d.ts +54 -0
  484. package/dist/lib/prd/runner.d.ts.map +1 -0
  485. package/dist/lib/prd/runner.js +563 -0
  486. package/dist/lib/prd/runner.js.map +1 -0
  487. package/dist/lib/prd/scheduler.d.ts +27 -0
  488. package/dist/lib/prd/scheduler.d.ts.map +1 -0
  489. package/dist/lib/prd/scheduler.js +113 -0
  490. package/dist/lib/prd/scheduler.js.map +1 -0
  491. package/dist/lib/prd/state.d.ts +77 -0
  492. package/dist/lib/prd/state.d.ts.map +1 -0
  493. package/dist/lib/prd/state.js +253 -0
  494. package/dist/lib/prd/state.js.map +1 -0
  495. package/dist/lib/prd/team-runner.d.ts +48 -0
  496. package/dist/lib/prd/team-runner.d.ts.map +1 -0
  497. package/dist/lib/prd/team-runner.js +261 -0
  498. package/dist/lib/prd/team-runner.js.map +1 -0
  499. package/dist/lib/prd/types.d.ts +169 -0
  500. package/dist/lib/prd/types.d.ts.map +1 -0
  501. package/dist/lib/prd/types.js +143 -0
  502. package/dist/lib/prd/types.js.map +1 -0
  503. package/dist/lib/prd/worktree.d.ts +54 -0
  504. package/dist/lib/prd/worktree.d.ts.map +1 -0
  505. package/dist/lib/prd/worktree.js +255 -0
  506. package/dist/lib/prd/worktree.js.map +1 -0
  507. package/dist/lib/precompute-context.d.ts +48 -0
  508. package/dist/lib/precompute-context.d.ts.map +1 -0
  509. package/dist/lib/precompute-context.js +265 -0
  510. package/dist/lib/precompute-context.js.map +1 -0
  511. package/dist/lib/pricing.d.ts +60 -0
  512. package/dist/lib/pricing.d.ts.map +1 -0
  513. package/dist/lib/pricing.js +258 -0
  514. package/dist/lib/pricing.js.map +1 -0
  515. package/dist/lib/process-registry.d.ts +30 -0
  516. package/dist/lib/process-registry.d.ts.map +1 -0
  517. package/dist/lib/process-registry.js +92 -0
  518. package/dist/lib/process-registry.js.map +1 -0
  519. package/dist/lib/progress-log.d.ts +44 -0
  520. package/dist/lib/progress-log.d.ts.map +1 -0
  521. package/dist/lib/progress-log.js +58 -0
  522. package/dist/lib/progress-log.js.map +1 -0
  523. package/dist/lib/public-api.d.ts +56 -0
  524. package/dist/lib/public-api.d.ts.map +1 -0
  525. package/dist/lib/public-api.js +63 -0
  526. package/dist/lib/public-api.js.map +1 -0
  527. package/dist/lib/quality.d.ts +66 -0
  528. package/dist/lib/quality.d.ts.map +1 -0
  529. package/dist/lib/quality.js +486 -0
  530. package/dist/lib/quality.js.map +1 -0
  531. package/dist/lib/query-expansion.d.ts +16 -0
  532. package/dist/lib/query-expansion.d.ts.map +1 -0
  533. package/dist/lib/query-expansion.js +53 -0
  534. package/dist/lib/query-expansion.js.map +1 -0
  535. package/dist/lib/readiness.d.ts +35 -0
  536. package/dist/lib/readiness.d.ts.map +1 -0
  537. package/dist/lib/readiness.js +142 -0
  538. package/dist/lib/readiness.js.map +1 -0
  539. package/dist/lib/reference-embeddings.d.ts +39 -0
  540. package/dist/lib/reference-embeddings.d.ts.map +1 -0
  541. package/dist/lib/reference-embeddings.js +95 -0
  542. package/dist/lib/reference-embeddings.js.map +1 -0
  543. package/dist/lib/reflection-synthesizer.d.ts +27 -0
  544. package/dist/lib/reflection-synthesizer.d.ts.map +1 -0
  545. package/dist/lib/reflection-synthesizer.js +149 -0
  546. package/dist/lib/reflection-synthesizer.js.map +1 -0
  547. package/dist/lib/retention.d.ts +105 -0
  548. package/dist/lib/retention.d.ts.map +1 -0
  549. package/dist/lib/retention.js +246 -0
  550. package/dist/lib/retention.js.map +1 -0
  551. package/dist/lib/sensitive-filter.d.ts +34 -0
  552. package/dist/lib/sensitive-filter.d.ts.map +1 -0
  553. package/dist/lib/sensitive-filter.js +344 -0
  554. package/dist/lib/sensitive-filter.js.map +1 -0
  555. package/dist/lib/session-observations.d.ts +59 -0
  556. package/dist/lib/session-observations.d.ts.map +1 -0
  557. package/dist/lib/session-observations.js +128 -0
  558. package/dist/lib/session-observations.js.map +1 -0
  559. package/dist/lib/session-summary.d.ts +65 -0
  560. package/dist/lib/session-summary.d.ts.map +1 -0
  561. package/dist/lib/session-summary.js +344 -0
  562. package/dist/lib/session-summary.js.map +1 -0
  563. package/dist/lib/similarity-worker.d.ts +7 -0
  564. package/dist/lib/similarity-worker.d.ts.map +1 -0
  565. package/dist/lib/similarity-worker.js +36 -0
  566. package/dist/lib/similarity-worker.js.map +1 -0
  567. package/dist/lib/skills.d.ts +78 -0
  568. package/dist/lib/skills.d.ts.map +1 -0
  569. package/dist/lib/skills.js +439 -0
  570. package/dist/lib/skills.js.map +1 -0
  571. package/dist/lib/skyll-client.d.ts +59 -0
  572. package/dist/lib/skyll-client.d.ts.map +1 -0
  573. package/dist/lib/skyll-client.js +257 -0
  574. package/dist/lib/skyll-client.js.map +1 -0
  575. package/dist/lib/storage/backends/interface.d.ts +383 -0
  576. package/dist/lib/storage/backends/interface.d.ts.map +1 -0
  577. package/dist/lib/storage/backends/interface.js +12 -0
  578. package/dist/lib/storage/backends/interface.js.map +1 -0
  579. package/dist/lib/storage/backends/postgresql.d.ts +454 -0
  580. package/dist/lib/storage/backends/postgresql.d.ts.map +1 -0
  581. package/dist/lib/storage/backends/postgresql.js +2528 -0
  582. package/dist/lib/storage/backends/postgresql.js.map +1 -0
  583. package/dist/lib/storage/benchmark.d.ts +16 -0
  584. package/dist/lib/storage/benchmark.d.ts.map +1 -0
  585. package/dist/lib/storage/benchmark.js +219 -0
  586. package/dist/lib/storage/benchmark.js.map +1 -0
  587. package/dist/lib/storage/dispatcher-export.d.ts +108 -0
  588. package/dist/lib/storage/dispatcher-export.d.ts.map +1 -0
  589. package/dist/lib/storage/dispatcher-export.js +593 -0
  590. package/dist/lib/storage/dispatcher-export.js.map +1 -0
  591. package/dist/lib/storage/dispatcher.d.ts +468 -0
  592. package/dist/lib/storage/dispatcher.d.ts.map +1 -0
  593. package/dist/lib/storage/dispatcher.js +1926 -0
  594. package/dist/lib/storage/dispatcher.js.map +1 -0
  595. package/dist/lib/storage/index.d.ts +481 -0
  596. package/dist/lib/storage/index.d.ts.map +1 -0
  597. package/dist/lib/storage/index.js +727 -0
  598. package/dist/lib/storage/index.js.map +1 -0
  599. package/dist/lib/storage/migration/export-import.d.ts +133 -0
  600. package/dist/lib/storage/migration/export-import.d.ts.map +1 -0
  601. package/dist/lib/storage/migration/export-import.js +264 -0
  602. package/dist/lib/storage/migration/export-import.js.map +1 -0
  603. package/dist/lib/storage/types.d.ts +313 -0
  604. package/dist/lib/storage/types.d.ts.map +1 -0
  605. package/dist/lib/storage/types.js +30 -0
  606. package/dist/lib/storage/types.js.map +1 -0
  607. package/dist/lib/storage/vector/interface.d.ts +89 -0
  608. package/dist/lib/storage/vector/interface.d.ts.map +1 -0
  609. package/dist/lib/storage/vector/interface.js +10 -0
  610. package/dist/lib/storage/vector/interface.js.map +1 -0
  611. package/dist/lib/storage/vector/qdrant.d.ts +221 -0
  612. package/dist/lib/storage/vector/qdrant.d.ts.map +1 -0
  613. package/dist/lib/storage/vector/qdrant.js +880 -0
  614. package/dist/lib/storage/vector/qdrant.js.map +1 -0
  615. package/dist/lib/supersession.d.ts +26 -0
  616. package/dist/lib/supersession.d.ts.map +1 -0
  617. package/dist/lib/supersession.js +97 -0
  618. package/dist/lib/supersession.js.map +1 -0
  619. package/dist/lib/temporal.d.ts +140 -0
  620. package/dist/lib/temporal.d.ts.map +1 -0
  621. package/dist/lib/temporal.js +303 -0
  622. package/dist/lib/temporal.js.map +1 -0
  623. package/dist/lib/token-budget.d.ts +79 -0
  624. package/dist/lib/token-budget.d.ts.map +1 -0
  625. package/dist/lib/token-budget.js +146 -0
  626. package/dist/lib/token-budget.js.map +1 -0
  627. package/dist/lib/token-counter.d.ts +27 -0
  628. package/dist/lib/token-counter.d.ts.map +1 -0
  629. package/dist/lib/token-counter.js +52 -0
  630. package/dist/lib/token-counter.js.map +1 -0
  631. package/dist/lib/tree-sitter/chunker-ts.d.ts +24 -0
  632. package/dist/lib/tree-sitter/chunker-ts.d.ts.map +1 -0
  633. package/dist/lib/tree-sitter/chunker-ts.js +206 -0
  634. package/dist/lib/tree-sitter/chunker-ts.js.map +1 -0
  635. package/dist/lib/tree-sitter/extractor.d.ts +43 -0
  636. package/dist/lib/tree-sitter/extractor.d.ts.map +1 -0
  637. package/dist/lib/tree-sitter/extractor.js +297 -0
  638. package/dist/lib/tree-sitter/extractor.js.map +1 -0
  639. package/dist/lib/tree-sitter/index.d.ts +13 -0
  640. package/dist/lib/tree-sitter/index.d.ts.map +1 -0
  641. package/dist/lib/tree-sitter/index.js +14 -0
  642. package/dist/lib/tree-sitter/index.js.map +1 -0
  643. package/dist/lib/tree-sitter/parser.d.ts +70 -0
  644. package/dist/lib/tree-sitter/parser.d.ts.map +1 -0
  645. package/dist/lib/tree-sitter/parser.js +354 -0
  646. package/dist/lib/tree-sitter/parser.js.map +1 -0
  647. package/dist/lib/tree-sitter/public.d.ts +28 -0
  648. package/dist/lib/tree-sitter/public.d.ts.map +1 -0
  649. package/dist/lib/tree-sitter/public.js +50 -0
  650. package/dist/lib/tree-sitter/public.js.map +1 -0
  651. package/dist/lib/tree-sitter/queries.d.ts +28 -0
  652. package/dist/lib/tree-sitter/queries.d.ts.map +1 -0
  653. package/dist/lib/tree-sitter/queries.js +383 -0
  654. package/dist/lib/tree-sitter/queries.js.map +1 -0
  655. package/dist/lib/tree-sitter/types.d.ts +69 -0
  656. package/dist/lib/tree-sitter/types.d.ts.map +1 -0
  657. package/dist/lib/tree-sitter/types.js +131 -0
  658. package/dist/lib/tree-sitter/types.js.map +1 -0
  659. package/dist/lib/working-memory-pipeline.d.ts +118 -0
  660. package/dist/lib/working-memory-pipeline.d.ts.map +1 -0
  661. package/dist/lib/working-memory-pipeline.js +344 -0
  662. package/dist/lib/working-memory-pipeline.js.map +1 -0
  663. package/dist/mcp/helpers.d.ts +44 -0
  664. package/dist/mcp/helpers.d.ts.map +1 -0
  665. package/dist/mcp/helpers.js +244 -0
  666. package/dist/mcp/helpers.js.map +1 -0
  667. package/dist/mcp/index.d.ts +10 -0
  668. package/dist/mcp/index.d.ts.map +1 -0
  669. package/dist/mcp/index.js +15 -0
  670. package/dist/mcp/index.js.map +1 -0
  671. package/dist/mcp/resources.d.ts +12 -0
  672. package/dist/mcp/resources.d.ts.map +1 -0
  673. package/dist/mcp/resources.js +136 -0
  674. package/dist/mcp/resources.js.map +1 -0
  675. package/dist/mcp/server.d.ts +22 -0
  676. package/dist/mcp/server.d.ts.map +1 -0
  677. package/dist/mcp/server.js +131 -0
  678. package/dist/mcp/server.js.map +1 -0
  679. package/dist/mcp/tools/config.d.ts +10 -0
  680. package/dist/mcp/tools/config.d.ts.map +1 -0
  681. package/dist/mcp/tools/config.js +236 -0
  682. package/dist/mcp/tools/config.js.map +1 -0
  683. package/dist/mcp/tools/dead-end.d.ts +9 -0
  684. package/dist/mcp/tools/dead-end.d.ts.map +1 -0
  685. package/dist/mcp/tools/dead-end.js +137 -0
  686. package/dist/mcp/tools/dead-end.js.map +1 -0
  687. package/dist/mcp/tools/debug.d.ts +9 -0
  688. package/dist/mcp/tools/debug.d.ts.map +1 -0
  689. package/dist/mcp/tools/debug.js +387 -0
  690. package/dist/mcp/tools/debug.js.map +1 -0
  691. package/dist/mcp/tools/graph.d.ts +9 -0
  692. package/dist/mcp/tools/graph.d.ts.map +1 -0
  693. package/dist/mcp/tools/graph.js +337 -0
  694. package/dist/mcp/tools/graph.js.map +1 -0
  695. package/dist/mcp/tools/indexing.d.ts +12 -0
  696. package/dist/mcp/tools/indexing.d.ts.map +1 -0
  697. package/dist/mcp/tools/indexing.js +289 -0
  698. package/dist/mcp/tools/indexing.js.map +1 -0
  699. package/dist/mcp/tools/memory.d.ts +14 -0
  700. package/dist/mcp/tools/memory.d.ts.map +1 -0
  701. package/dist/mcp/tools/memory.js +1170 -0
  702. package/dist/mcp/tools/memory.js.map +1 -0
  703. package/dist/mcp/tools/prd.d.ts +12 -0
  704. package/dist/mcp/tools/prd.d.ts.map +1 -0
  705. package/dist/mcp/tools/prd.js +276 -0
  706. package/dist/mcp/tools/prd.js.map +1 -0
  707. package/dist/mcp/tools/search.d.ts +9 -0
  708. package/dist/mcp/tools/search.d.ts.map +1 -0
  709. package/dist/mcp/tools/search.js +279 -0
  710. package/dist/mcp/tools/search.js.map +1 -0
  711. package/dist/mcp/tools/status.d.ts +10 -0
  712. package/dist/mcp/tools/status.d.ts.map +1 -0
  713. package/dist/mcp/tools/status.js +296 -0
  714. package/dist/mcp/tools/status.js.map +1 -0
  715. package/dist/mcp/tools/web-fetch.d.ts +10 -0
  716. package/dist/mcp/tools/web-fetch.d.ts.map +1 -0
  717. package/dist/mcp/tools/web-fetch.js +107 -0
  718. package/dist/mcp/tools/web-fetch.js.map +1 -0
  719. package/dist/mcp/tools/web-search.d.ts +14 -0
  720. package/dist/mcp/tools/web-search.d.ts.map +1 -0
  721. package/dist/mcp/tools/web-search.js +427 -0
  722. package/dist/mcp/tools/web-search.js.map +1 -0
  723. package/dist/mcp/types.d.ts +16 -0
  724. package/dist/mcp/types.d.ts.map +1 -0
  725. package/dist/mcp/types.js +5 -0
  726. package/dist/mcp/types.js.map +1 -0
  727. package/dist/mcp-server.d.ts +9 -0
  728. package/dist/mcp-server.d.ts.map +1 -0
  729. package/dist/mcp-server.js +9 -0
  730. package/dist/mcp-server.js.map +1 -0
  731. package/dist/prompts/analyze.d.ts +21 -0
  732. package/dist/prompts/analyze.d.ts.map +1 -0
  733. package/dist/prompts/analyze.js +27 -0
  734. package/dist/prompts/analyze.js.map +1 -0
  735. package/dist/prompts/briefing.d.ts +27 -0
  736. package/dist/prompts/briefing.d.ts.map +1 -0
  737. package/dist/prompts/briefing.js +123 -0
  738. package/dist/prompts/briefing.js.map +1 -0
  739. package/dist/prompts/chat.d.ts +8 -0
  740. package/dist/prompts/chat.d.ts.map +1 -0
  741. package/dist/prompts/chat.js +39 -0
  742. package/dist/prompts/chat.js.map +1 -0
  743. package/dist/prompts/daemon.d.ts +16 -0
  744. package/dist/prompts/daemon.d.ts.map +1 -0
  745. package/dist/prompts/daemon.js +46 -0
  746. package/dist/prompts/daemon.js.map +1 -0
  747. package/dist/prompts/extraction.d.ts +13 -0
  748. package/dist/prompts/extraction.d.ts.map +1 -0
  749. package/dist/prompts/extraction.js +93 -0
  750. package/dist/prompts/extraction.js.map +1 -0
  751. package/dist/prompts/index.d.ts +17 -0
  752. package/dist/prompts/index.d.ts.map +1 -0
  753. package/dist/prompts/index.js +27 -0
  754. package/dist/prompts/index.js.map +1 -0
  755. package/dist/prompts/memory.d.ts +11 -0
  756. package/dist/prompts/memory.d.ts.map +1 -0
  757. package/dist/prompts/memory.js +23 -0
  758. package/dist/prompts/memory.js.map +1 -0
  759. package/dist/prompts/onboarding.d.ts +16 -0
  760. package/dist/prompts/onboarding.d.ts.map +1 -0
  761. package/dist/prompts/onboarding.js +183 -0
  762. package/dist/prompts/onboarding.js.map +1 -0
  763. package/dist/prompts/prd.d.ts +12 -0
  764. package/dist/prompts/prd.d.ts.map +1 -0
  765. package/dist/prompts/prd.js +211 -0
  766. package/dist/prompts/prd.js.map +1 -0
  767. package/dist/prompts/quality.d.ts +11 -0
  768. package/dist/prompts/quality.d.ts.map +1 -0
  769. package/dist/prompts/quality.js +11 -0
  770. package/dist/prompts/quality.js.map +1 -0
  771. package/dist/prompts/skills.d.ts +16 -0
  772. package/dist/prompts/skills.d.ts.map +1 -0
  773. package/dist/prompts/skills.js +30 -0
  774. package/dist/prompts/skills.js.map +1 -0
  775. package/hooks/succ-post-tool.cjs +227 -0
  776. package/hooks/succ-pre-tool.cjs +312 -0
  777. package/hooks/succ-session-end.cjs +85 -0
  778. package/hooks/succ-session-start.cjs +618 -0
  779. package/hooks/succ-stop-reflection.cjs +87 -0
  780. package/hooks/succ-user-prompt.cjs +220 -0
  781. package/package.json +128 -0
@@ -0,0 +1,702 @@
1
+ /**
2
+ * AI-Readiness Score
3
+ *
4
+ * Measures how "ready" a project is for AI collaboration.
5
+ *
6
+ * Metrics (Total: 100%):
7
+ * - Brain Vault: 20% - CLAUDE.md exists, folder structure
8
+ * - Memory Coverage: 20% - Memories vs project size
9
+ * - Code Index: 15% - % of source files indexed
10
+ * - Soul Document: 10% - soul.md exists and complete
11
+ * - Hooks Active: 10% - session-start/end/user-prompt/post-tool/stop configured
12
+ * - Agents Configured: 5% - Custom Claude Code agents in .claude/agents/
13
+ * - Doc Index: 10% - Markdown docs indexed
14
+ * - Quality Average: 5% - Average memory quality score
15
+ * - Index Freshness: 5% - How up-to-date the index is (stale/deleted files)
16
+ */
17
+ import fs from 'fs';
18
+ import path from 'path';
19
+ import { getSuccDir, getProjectRoot } from './config.js';
20
+ import { getMemoryStats, getCodeFileCount, getDocsFileCount, getAverageMemoryQuality, getStaleFileCount, } from './storage/index.js';
21
+ // Metric weights (must sum to 100)
22
+ export const METRIC_WEIGHTS = {
23
+ brain_vault: 20,
24
+ memory_coverage: 20,
25
+ code_index: 15,
26
+ soul_document: 10,
27
+ hooks_active: 10,
28
+ agents_configured: 5,
29
+ doc_index: 10,
30
+ quality_average: 5,
31
+ index_freshness: 5,
32
+ };
33
+ /**
34
+ * Calculate brain vault score (20 points max)
35
+ * - CLAUDE.md exists: 10 points
36
+ * - brain/ folder structure: 5 points
37
+ * - Number of docs (5+ = 5 points)
38
+ */
39
+ export function calculateBrainVaultScore() {
40
+ const succDir = getSuccDir();
41
+ const brainDir = path.join(succDir, 'brain');
42
+ const maxScore = METRIC_WEIGHTS.brain_vault;
43
+ let score = 0;
44
+ const details = [];
45
+ const suggestions = [];
46
+ // Check CLAUDE.md
47
+ const claudeMdPaths = [path.join(succDir, 'CLAUDE.md'), path.join(getProjectRoot(), 'CLAUDE.md')];
48
+ const claudeMdExists = claudeMdPaths.some((p) => fs.existsSync(p));
49
+ if (claudeMdExists) {
50
+ score += 10;
51
+ details.push('CLAUDE.md exists');
52
+ }
53
+ else {
54
+ suggestions.push('Create CLAUDE.md with project-specific instructions');
55
+ }
56
+ // Check brain folder structure
57
+ if (fs.existsSync(brainDir)) {
58
+ score += 5;
59
+ details.push('brain/ folder exists');
60
+ // Count markdown files in brain (5+ docs = 5 points)
61
+ const mdFiles = countMarkdownFiles(brainDir);
62
+ if (mdFiles >= 5) {
63
+ score += 5;
64
+ details.push(`${mdFiles} docs in brain/`);
65
+ }
66
+ else if (mdFiles >= 1) {
67
+ details.push(`${mdFiles} docs in brain/`);
68
+ suggestions.push('Add more documentation to .succ/brain/');
69
+ }
70
+ else {
71
+ suggestions.push('Add documentation files to .succ/brain/');
72
+ }
73
+ }
74
+ else {
75
+ suggestions.push('Run `succ init` to create brain vault structure');
76
+ }
77
+ return {
78
+ name: 'brain_vault',
79
+ label: 'Brain Vault',
80
+ score,
81
+ maxScore,
82
+ details: details.join(', ') || 'Not configured',
83
+ suggestions: suggestions.length > 0 ? suggestions : undefined,
84
+ };
85
+ }
86
+ /**
87
+ * Calculate memory coverage score (20 points max)
88
+ * Based on number of memories relative to project age/size
89
+ * - 0 memories: 0 points
90
+ * - 1-10 memories: 5 points
91
+ * - 11-50 memories: 10 points
92
+ * - 51-100 memories: 15 points
93
+ * - 100+ memories: 20 points
94
+ */
95
+ export async function calculateMemoryCoverageScore() {
96
+ const maxScore = METRIC_WEIGHTS.memory_coverage;
97
+ try {
98
+ const memStats = await getMemoryStats();
99
+ const total = memStats.total_memories;
100
+ let score = 0;
101
+ if (total >= 100)
102
+ score = 20;
103
+ else if (total >= 51)
104
+ score = 15;
105
+ else if (total >= 11)
106
+ score = 10;
107
+ else if (total >= 1)
108
+ score = 5;
109
+ const suggestions = [];
110
+ if (total < 10) {
111
+ suggestions.push('Use succ_remember to save learnings and decisions');
112
+ }
113
+ if (total < 50) {
114
+ suggestions.push('Continue building memory knowledge base');
115
+ }
116
+ return {
117
+ name: 'memory_coverage',
118
+ label: 'Memory Coverage',
119
+ score,
120
+ maxScore,
121
+ details: `${total} memories`,
122
+ suggestions: suggestions.length > 0 ? suggestions : undefined,
123
+ };
124
+ }
125
+ catch {
126
+ return {
127
+ name: 'memory_coverage',
128
+ label: 'Memory Coverage',
129
+ score: 0,
130
+ maxScore,
131
+ details: 'No memories',
132
+ suggestions: ['Initialize succ and start saving memories'],
133
+ };
134
+ }
135
+ }
136
+ /**
137
+ * Calculate code index score (15 points max)
138
+ * Based on % of source files indexed
139
+ * - 0%: 0 points
140
+ * - 1-25%: 4 points
141
+ * - 26-50%: 7 points
142
+ * - 51-75%: 11 points
143
+ * - 76-100%: 15 points
144
+ */
145
+ export async function calculateCodeIndexScore() {
146
+ const maxScore = METRIC_WEIGHTS.code_index;
147
+ const projectRoot = getProjectRoot();
148
+ try {
149
+ // Count source files in project
150
+ const sourceExtensions = ['.ts', '.tsx', '.js', '.jsx', '.py', '.go', '.rs', '.java'];
151
+ const totalSourceFiles = countSourceFiles(projectRoot, sourceExtensions);
152
+ // Get indexed code files count via dispatcher
153
+ const indexedCount = await getCodeFileCount();
154
+ if (totalSourceFiles === 0) {
155
+ return {
156
+ name: 'code_index',
157
+ label: 'Code Index',
158
+ score: maxScore, // Full score if no source files
159
+ maxScore,
160
+ details: 'No source files to index',
161
+ };
162
+ }
163
+ const percentage = Math.round((indexedCount / totalSourceFiles) * 100);
164
+ let score = 0;
165
+ if (percentage >= 76)
166
+ score = 15;
167
+ else if (percentage >= 51)
168
+ score = 11;
169
+ else if (percentage >= 26)
170
+ score = 7;
171
+ else if (percentage >= 1)
172
+ score = 4;
173
+ const suggestions = [];
174
+ if (percentage < 50) {
175
+ suggestions.push('Run `succ index-code` to index source files');
176
+ }
177
+ return {
178
+ name: 'code_index',
179
+ label: 'Code Index',
180
+ score,
181
+ maxScore,
182
+ details: `${percentage}% indexed (${indexedCount}/${totalSourceFiles} files)`,
183
+ suggestions: suggestions.length > 0 ? suggestions : undefined,
184
+ };
185
+ }
186
+ catch {
187
+ return {
188
+ name: 'code_index',
189
+ label: 'Code Index',
190
+ score: 0,
191
+ maxScore,
192
+ details: 'Not indexed',
193
+ suggestions: ['Run `succ index-code` to index source files'],
194
+ };
195
+ }
196
+ }
197
+ /**
198
+ * Calculate soul document score (10 points max)
199
+ * - soul.md exists: 5 points
200
+ * - soul.md has custom content (not just template): 5 points
201
+ */
202
+ export function calculateSoulDocumentScore() {
203
+ const succDir = getSuccDir();
204
+ const maxScore = METRIC_WEIGHTS.soul_document;
205
+ const soulPaths = [
206
+ path.join(succDir, 'soul.md'),
207
+ path.join(succDir, 'SOUL.md'),
208
+ path.join(getProjectRoot(), 'soul.md'),
209
+ path.join(getProjectRoot(), 'SOUL.md'),
210
+ ];
211
+ let soulPath = null;
212
+ for (const p of soulPaths) {
213
+ if (fs.existsSync(p)) {
214
+ soulPath = p;
215
+ break;
216
+ }
217
+ }
218
+ if (!soulPath) {
219
+ return {
220
+ name: 'soul_document',
221
+ label: 'Soul Document',
222
+ score: 0,
223
+ maxScore,
224
+ details: 'Not found',
225
+ suggestions: ['Create soul.md to define your AI collaboration style'],
226
+ };
227
+ }
228
+ const content = fs.readFileSync(soulPath, 'utf8');
229
+ const hasCustomContent = checkSoulCustomization(content);
230
+ const score = hasCustomContent ? 10 : 5;
231
+ const details = hasCustomContent ? 'Complete' : 'Exists but incomplete';
232
+ return {
233
+ name: 'soul_document',
234
+ label: 'Soul Document',
235
+ score,
236
+ maxScore,
237
+ details,
238
+ suggestions: hasCustomContent
239
+ ? undefined
240
+ : ['Customize your soul.md with personal preferences'],
241
+ };
242
+ }
243
+ /**
244
+ * Calculate hooks active score (10 points max)
245
+ * Checks for all succ hooks:
246
+ * - session-start: 2 points (context injection)
247
+ * - session-end: 2 points (session handoff)
248
+ * - user-prompt: 2 points (prompt enhancement)
249
+ * - post-tool: 2 points (tool result processing)
250
+ * - stop-reflection: 2 points (end-of-session reflection)
251
+ */
252
+ export function calculateHooksActiveScore() {
253
+ const succDir = getSuccDir();
254
+ const hooksDir = path.join(succDir, 'hooks');
255
+ const maxScore = METRIC_WEIGHTS.hooks_active;
256
+ let score = 0;
257
+ const details = [];
258
+ const suggestions = [];
259
+ // Define all hooks with their variants
260
+ const hookChecks = [
261
+ {
262
+ name: 'session-start',
263
+ paths: ['succ-session-start.cjs', 'session-start.cjs', 'session-start.js'],
264
+ points: 2,
265
+ suggestion: 'Add session-start hook for context injection',
266
+ },
267
+ {
268
+ name: 'session-end',
269
+ paths: ['succ-session-end.cjs', 'succ-idle-watcher.cjs', 'session-end.cjs', 'session-end.js'],
270
+ points: 2,
271
+ suggestion: 'Add session-end hook for session handoff',
272
+ },
273
+ {
274
+ name: 'user-prompt',
275
+ paths: ['succ-user-prompt.cjs', 'user-prompt.cjs', 'user-prompt.js'],
276
+ points: 2,
277
+ suggestion: 'Add user-prompt hook for prompt enhancement',
278
+ },
279
+ {
280
+ name: 'post-tool',
281
+ paths: ['succ-post-tool.cjs', 'post-tool.cjs', 'post-tool.js'],
282
+ points: 2,
283
+ suggestion: 'Add post-tool hook for tool result processing',
284
+ },
285
+ {
286
+ name: 'stop-reflection',
287
+ paths: ['succ-stop-reflection.cjs', 'stop-reflection.cjs', 'stop-reflection.js'],
288
+ points: 2,
289
+ suggestion: 'Add stop-reflection hook for end-of-session reflection',
290
+ },
291
+ ];
292
+ for (const hook of hookChecks) {
293
+ const exists = hook.paths.some((p) => fs.existsSync(path.join(hooksDir, p)));
294
+ if (exists) {
295
+ score += hook.points;
296
+ details.push(hook.name);
297
+ }
298
+ else {
299
+ suggestions.push(hook.suggestion);
300
+ }
301
+ }
302
+ return {
303
+ name: 'hooks_active',
304
+ label: 'Hooks Active',
305
+ score,
306
+ maxScore,
307
+ details: details.length > 0 ? details.join(', ') : 'None configured',
308
+ suggestions: suggestions.length > 0 ? suggestions : undefined,
309
+ };
310
+ }
311
+ /**
312
+ * Calculate agents configured score (5 points max)
313
+ * Checks for custom Claude Code agents in .claude/agents/
314
+ * - 0 agents: 0 points
315
+ * - 1-3 agents: 1 point
316
+ * - 4-6 agents: 2 points
317
+ * - 7-9 agents: 3 points
318
+ * - 10+ agents: 5 points
319
+ */
320
+ export function calculateAgentsConfiguredScore() {
321
+ const projectRoot = getProjectRoot();
322
+ const agentsDir = path.join(projectRoot, '.claude', 'agents');
323
+ const maxScore = METRIC_WEIGHTS.agents_configured;
324
+ if (!fs.existsSync(agentsDir)) {
325
+ return {
326
+ name: 'agents_configured',
327
+ label: 'Agents',
328
+ score: 0,
329
+ maxScore,
330
+ details: 'No agents directory',
331
+ suggestions: ['Create .claude/agents/ with custom subagents'],
332
+ };
333
+ }
334
+ // Count .md files in agents directory
335
+ let agentCount = 0;
336
+ try {
337
+ const files = fs.readdirSync(agentsDir);
338
+ agentCount = files.filter((f) => f.endsWith('.md')).length;
339
+ }
340
+ catch {
341
+ // Ignore errors
342
+ }
343
+ let score = 0;
344
+ if (agentCount >= 10)
345
+ score = 5;
346
+ else if (agentCount >= 7)
347
+ score = 3;
348
+ else if (agentCount >= 4)
349
+ score = 2;
350
+ else if (agentCount >= 1)
351
+ score = 1;
352
+ const suggestions = [];
353
+ if (agentCount < 10) {
354
+ suggestions.push('Add more custom agents to .claude/agents/ (10+ for full score)');
355
+ }
356
+ return {
357
+ name: 'agents_configured',
358
+ label: 'Agents',
359
+ score,
360
+ maxScore,
361
+ details: agentCount > 0 ? `${agentCount} agents` : 'No agents',
362
+ suggestions: suggestions.length > 0 ? suggestions : undefined,
363
+ };
364
+ }
365
+ /**
366
+ * Calculate doc index score (10 points max)
367
+ * Based on % of markdown files in brain/ that are indexed
368
+ */
369
+ export async function calculateDocIndexScore() {
370
+ const succDir = getSuccDir();
371
+ const brainDir = path.join(succDir, 'brain');
372
+ const maxScore = METRIC_WEIGHTS.doc_index;
373
+ if (!fs.existsSync(brainDir)) {
374
+ return {
375
+ name: 'doc_index',
376
+ label: 'Doc Index',
377
+ score: 0,
378
+ maxScore,
379
+ details: 'No brain/ folder',
380
+ suggestions: ['Run `succ init` to create brain vault'],
381
+ };
382
+ }
383
+ try {
384
+ // Count markdown files in brain
385
+ const totalMdFiles = countMarkdownFiles(brainDir);
386
+ if (totalMdFiles === 0) {
387
+ return {
388
+ name: 'doc_index',
389
+ label: 'Doc Index',
390
+ score: maxScore, // Full score if nothing to index
391
+ maxScore,
392
+ details: 'No docs to index',
393
+ };
394
+ }
395
+ // Get indexed doc files count via dispatcher
396
+ const indexedCount = await getDocsFileCount();
397
+ const percentage = Math.round((indexedCount / totalMdFiles) * 100);
398
+ let score = 0;
399
+ if (percentage >= 80)
400
+ score = 10;
401
+ else if (percentage >= 50)
402
+ score = 7;
403
+ else if (percentage >= 20)
404
+ score = 4;
405
+ else if (percentage >= 1)
406
+ score = 2;
407
+ const suggestions = [];
408
+ if (percentage < 80) {
409
+ suggestions.push('Run `succ index` to index remaining docs');
410
+ }
411
+ return {
412
+ name: 'doc_index',
413
+ label: 'Doc Index',
414
+ score,
415
+ maxScore,
416
+ details: `${indexedCount}/${totalMdFiles} files indexed`,
417
+ suggestions: suggestions.length > 0 ? suggestions : undefined,
418
+ };
419
+ }
420
+ catch {
421
+ return {
422
+ name: 'doc_index',
423
+ label: 'Doc Index',
424
+ score: 0,
425
+ maxScore,
426
+ details: 'Not indexed',
427
+ suggestions: ['Run `succ index` to index brain vault docs'],
428
+ };
429
+ }
430
+ }
431
+ /**
432
+ * Calculate quality average score (5 points max)
433
+ * Based on average quality score of memories
434
+ * - No quality scores: 0 points
435
+ * - Avg < 0.3: 1 point
436
+ * - Avg 0.3-0.5: 2 points
437
+ * - Avg 0.5-0.7: 3 points
438
+ * - Avg 0.7-0.85: 4 points
439
+ * - Avg >= 0.85: 5 points
440
+ */
441
+ export async function calculateQualityAverageScore() {
442
+ const maxScore = METRIC_WEIGHTS.quality_average;
443
+ try {
444
+ const result = await getAverageMemoryQuality();
445
+ if (!result.avg || result.count === 0) {
446
+ return {
447
+ name: 'quality_average',
448
+ label: 'Quality Average',
449
+ score: 0,
450
+ maxScore,
451
+ details: 'No quality scores',
452
+ suggestions: ['Enable quality scoring for memories'],
453
+ };
454
+ }
455
+ const avg = result.avg;
456
+ let score = 0;
457
+ if (avg >= 0.85)
458
+ score = 5;
459
+ else if (avg >= 0.7)
460
+ score = 4;
461
+ else if (avg >= 0.5)
462
+ score = 3;
463
+ else if (avg >= 0.3)
464
+ score = 2;
465
+ else
466
+ score = 1;
467
+ const suggestions = [];
468
+ if (avg < 0.5) {
469
+ suggestions.push('Focus on saving higher-quality memories');
470
+ }
471
+ return {
472
+ name: 'quality_average',
473
+ label: 'Quality Average',
474
+ score,
475
+ maxScore,
476
+ details: `${(avg * 100).toFixed(0)}% avg (${result.count} scored)`,
477
+ suggestions: suggestions.length > 0 ? suggestions : undefined,
478
+ };
479
+ }
480
+ catch {
481
+ return {
482
+ name: 'quality_average',
483
+ label: 'Quality Average',
484
+ score: 0,
485
+ maxScore,
486
+ details: 'Not available',
487
+ suggestions: ['Enable quality scoring'],
488
+ };
489
+ }
490
+ }
491
+ /**
492
+ * Calculate index freshness score (5 points max)
493
+ * Based on % of indexed files that are still current (not stale/deleted)
494
+ * - 100% fresh (0 stale/deleted): 5 points
495
+ * - 90-99% fresh: 4 points
496
+ * - 70-89% fresh: 3 points
497
+ * - 50-69% fresh: 2 points
498
+ * - 1-49% fresh: 1 point
499
+ * - No files indexed: 5 points (nothing to be stale)
500
+ */
501
+ export async function calculateIndexFreshnessScore() {
502
+ const maxScore = METRIC_WEIGHTS.index_freshness;
503
+ const projectRoot = getProjectRoot();
504
+ try {
505
+ const freshness = await getStaleFileCount(projectRoot);
506
+ if (freshness.total === 0) {
507
+ return {
508
+ name: 'index_freshness',
509
+ label: 'Index Freshness',
510
+ score: maxScore,
511
+ maxScore,
512
+ details: 'No files indexed',
513
+ };
514
+ }
515
+ const outdated = freshness.stale + freshness.deleted;
516
+ const freshPercent = Math.round(((freshness.total - outdated) / freshness.total) * 100);
517
+ let score = 0;
518
+ if (freshPercent >= 100)
519
+ score = 5;
520
+ else if (freshPercent >= 90)
521
+ score = 4;
522
+ else if (freshPercent >= 70)
523
+ score = 3;
524
+ else if (freshPercent >= 50)
525
+ score = 2;
526
+ else
527
+ score = 1;
528
+ const details = [`${freshPercent}% fresh`];
529
+ if (freshness.stale > 0)
530
+ details.push(`${freshness.stale} stale`);
531
+ if (freshness.deleted > 0)
532
+ details.push(`${freshness.deleted} deleted`);
533
+ const suggestions = [];
534
+ if (outdated > 0) {
535
+ suggestions.push('Run `succ reindex` to refresh stale/deleted entries');
536
+ }
537
+ return {
538
+ name: 'index_freshness',
539
+ label: 'Index Freshness',
540
+ score,
541
+ maxScore,
542
+ details: details.join(', '),
543
+ suggestions: suggestions.length > 0 ? suggestions : undefined,
544
+ };
545
+ }
546
+ catch {
547
+ return {
548
+ name: 'index_freshness',
549
+ label: 'Index Freshness',
550
+ score: 0,
551
+ maxScore,
552
+ details: 'Not available',
553
+ suggestions: ['Run `succ reindex` to check index health'],
554
+ };
555
+ }
556
+ }
557
+ /**
558
+ * Calculate full AI-Readiness Score
559
+ */
560
+ export async function calculateAIReadinessScore() {
561
+ const metrics = [
562
+ calculateBrainVaultScore(),
563
+ await calculateMemoryCoverageScore(),
564
+ await calculateCodeIndexScore(),
565
+ calculateSoulDocumentScore(),
566
+ calculateHooksActiveScore(),
567
+ calculateAgentsConfiguredScore(),
568
+ await calculateDocIndexScore(),
569
+ await calculateQualityAverageScore(),
570
+ await calculateIndexFreshnessScore(),
571
+ ];
572
+ const totalScore = metrics.reduce((sum, m) => sum + m.score, 0);
573
+ const maxScore = 100;
574
+ // Calculate stars (1-5)
575
+ let stars = 1;
576
+ if (totalScore >= 90)
577
+ stars = 5;
578
+ else if (totalScore >= 75)
579
+ stars = 4;
580
+ else if (totalScore >= 50)
581
+ stars = 3;
582
+ else if (totalScore >= 25)
583
+ stars = 2;
584
+ // Collect all suggestions, prioritized by impact
585
+ const allSuggestions = [];
586
+ const metricsByMissingPoints = [...metrics].sort((a, b) => b.maxScore - b.score - (a.maxScore - a.score));
587
+ for (const metric of metricsByMissingPoints) {
588
+ if (metric.suggestions) {
589
+ allSuggestions.push(...metric.suggestions);
590
+ }
591
+ }
592
+ // Dedupe and limit suggestions
593
+ const uniqueSuggestions = [...new Set(allSuggestions)].slice(0, 5);
594
+ return {
595
+ totalScore,
596
+ maxScore,
597
+ stars,
598
+ metrics,
599
+ suggestions: uniqueSuggestions,
600
+ };
601
+ }
602
+ /**
603
+ * Format score for display
604
+ */
605
+ export function formatAIReadinessScore(result) {
606
+ const lines = [];
607
+ // Header with stars
608
+ const starDisplay = '\u2B50'.repeat(result.stars);
609
+ lines.push(`AI-Readiness Score: ${result.totalScore}/${result.maxScore} ${starDisplay}`);
610
+ lines.push('');
611
+ // Metrics breakdown
612
+ for (const metric of result.metrics) {
613
+ const check = metric.score === metric.maxScore ? '\u2713' : ' ';
614
+ const scoreStr = `${metric.score}/${metric.maxScore}`.padStart(5);
615
+ const label = metric.label.padEnd(16);
616
+ lines.push(` ${label} ${scoreStr} ${check} ${metric.details}`);
617
+ }
618
+ // Suggestions
619
+ if (result.suggestions.length > 0) {
620
+ lines.push('');
621
+ lines.push('Suggestions:');
622
+ for (const suggestion of result.suggestions) {
623
+ lines.push(` - ${suggestion}`);
624
+ }
625
+ }
626
+ return lines.join('\n');
627
+ }
628
+ // Helper functions
629
+ function countMarkdownFiles(dir) {
630
+ let count = 0;
631
+ try {
632
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
633
+ for (const entry of entries) {
634
+ const fullPath = path.join(dir, entry.name);
635
+ if (entry.isDirectory() && !entry.name.startsWith('.')) {
636
+ count += countMarkdownFiles(fullPath);
637
+ }
638
+ else if (entry.isFile() && entry.name.endsWith('.md')) {
639
+ count++;
640
+ }
641
+ }
642
+ }
643
+ catch {
644
+ // Ignore errors
645
+ }
646
+ return count;
647
+ }
648
+ function countSourceFiles(dir, extensions) {
649
+ let count = 0;
650
+ // Directories to skip
651
+ const skipDirs = [
652
+ 'node_modules',
653
+ '.git',
654
+ 'dist',
655
+ 'build',
656
+ '.succ',
657
+ '.claude',
658
+ 'vendor',
659
+ '__pycache__',
660
+ ];
661
+ try {
662
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
663
+ for (const entry of entries) {
664
+ if (entry.isDirectory() && !skipDirs.includes(entry.name) && !entry.name.startsWith('.')) {
665
+ count += countSourceFiles(path.join(dir, entry.name), extensions);
666
+ }
667
+ else if (entry.isFile()) {
668
+ const ext = path.extname(entry.name).toLowerCase();
669
+ if (extensions.includes(ext)) {
670
+ count++;
671
+ }
672
+ }
673
+ }
674
+ }
675
+ catch {
676
+ // Ignore errors
677
+ }
678
+ return count;
679
+ }
680
+ function checkSoulCustomization(content) {
681
+ // Check if soul.md has been customized beyond the template
682
+ // Template markers that indicate it's still a template
683
+ const templateMarkers = [
684
+ '_Add your preferences here',
685
+ 'Preferred frameworks:',
686
+ 'Code style:',
687
+ 'Testing approach:',
688
+ 'Communication language:',
689
+ ];
690
+ // Check if all template markers are still present (means not customized)
691
+ const hasAllMarkers = templateMarkers.every((marker) => content.includes(marker));
692
+ // Check if there's substantial custom content
693
+ const lines = content.split('\n').filter((line) => line.trim().length > 0);
694
+ const hasSubstantialContent = lines.length > 30;
695
+ // Check for custom sections (not in default template)
696
+ const hasCustomSections = content.includes('## My Preferences') ||
697
+ content.includes('## About Me') ||
698
+ content.includes('## Code Style') ||
699
+ (content.includes('Preferred frameworks:') && !!content.match(/Preferred frameworks:\s*\S+/));
700
+ return !hasAllMarkers || hasSubstantialContent || hasCustomSections;
701
+ }
702
+ //# sourceMappingURL=ai-readiness.js.map