@actalk/inkos-core 1.3.6 → 1.3.7

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 (444) hide show
  1. package/dist/agent/agent-session.d.ts +7 -7
  2. package/dist/agent/agent-session.d.ts.map +1 -1
  3. package/dist/agent/agent-session.js +392 -63
  4. package/dist/agent/agent-session.js.map +1 -1
  5. package/dist/agent/agent-system-prompt.d.ts.map +1 -1
  6. package/dist/agent/agent-system-prompt.js +20 -16
  7. package/dist/agent/agent-system-prompt.js.map +1 -1
  8. package/dist/agent/agent-tools.d.ts +4 -1
  9. package/dist/agent/agent-tools.d.ts.map +1 -1
  10. package/dist/agent/agent-tools.js +81 -64
  11. package/dist/agent/agent-tools.js.map +1 -1
  12. package/dist/agents/architect.d.ts +18 -20
  13. package/dist/agents/architect.d.ts.map +1 -1
  14. package/dist/agents/architect.js +513 -632
  15. package/dist/agents/architect.js.map +1 -1
  16. package/dist/agents/chapter-analyzer.d.ts.map +1 -1
  17. package/dist/agents/chapter-analyzer.js +10 -6
  18. package/dist/agents/chapter-analyzer.js.map +1 -1
  19. package/dist/agents/composer.d.ts +1 -13
  20. package/dist/agents/composer.d.ts.map +1 -1
  21. package/dist/agents/composer.js +297 -290
  22. package/dist/agents/composer.js.map +1 -1
  23. package/dist/agents/consolidator.d.ts +17 -1
  24. package/dist/agents/consolidator.d.ts.map +1 -1
  25. package/dist/agents/consolidator.js +44 -6
  26. package/dist/agents/consolidator.js.map +1 -1
  27. package/dist/agents/continuity.d.ts +4 -1
  28. package/dist/agents/continuity.d.ts.map +1 -1
  29. package/dist/agents/continuity.js +111 -21
  30. package/dist/agents/continuity.js.map +1 -1
  31. package/dist/agents/length-normalizer.d.ts.map +1 -1
  32. package/dist/agents/length-normalizer.js +1 -4
  33. package/dist/agents/length-normalizer.js.map +1 -1
  34. package/dist/agents/planner-context.d.ts +54 -0
  35. package/dist/agents/planner-context.d.ts.map +1 -0
  36. package/dist/agents/planner-context.js +245 -0
  37. package/dist/agents/planner-context.js.map +1 -0
  38. package/dist/agents/planner-prompts.d.ts +36 -0
  39. package/dist/agents/planner-prompts.d.ts.map +1 -0
  40. package/dist/agents/planner-prompts.js +350 -0
  41. package/dist/agents/planner-prompts.js.map +1 -0
  42. package/dist/agents/planner.d.ts +39 -11
  43. package/dist/agents/planner.d.ts.map +1 -1
  44. package/dist/agents/planner.js +212 -195
  45. package/dist/agents/planner.js.map +1 -1
  46. package/dist/agents/polisher.d.ts +33 -0
  47. package/dist/agents/polisher.d.ts.map +1 -0
  48. package/dist/agents/polisher.js +122 -0
  49. package/dist/agents/polisher.js.map +1 -0
  50. package/dist/agents/post-write-validator.d.ts +1 -0
  51. package/dist/agents/post-write-validator.d.ts.map +1 -1
  52. package/dist/agents/post-write-validator.js +13 -0
  53. package/dist/agents/post-write-validator.js.map +1 -1
  54. package/dist/agents/reviser.d.ts +6 -2
  55. package/dist/agents/reviser.d.ts.map +1 -1
  56. package/dist/agents/reviser.js +379 -98
  57. package/dist/agents/reviser.js.map +1 -1
  58. package/dist/agents/rules-reader.d.ts +15 -2
  59. package/dist/agents/rules-reader.d.ts.map +1 -1
  60. package/dist/agents/rules-reader.js +49 -6
  61. package/dist/agents/rules-reader.js.map +1 -1
  62. package/dist/agents/state-validator.d.ts +9 -1
  63. package/dist/agents/state-validator.d.ts.map +1 -1
  64. package/dist/agents/state-validator.js +37 -1
  65. package/dist/agents/state-validator.js.map +1 -1
  66. package/dist/agents/writer-prompts.d.ts +1 -0
  67. package/dist/agents/writer-prompts.d.ts.map +1 -1
  68. package/dist/agents/writer-prompts.js +272 -29
  69. package/dist/agents/writer-prompts.js.map +1 -1
  70. package/dist/agents/writer.d.ts +12 -3
  71. package/dist/agents/writer.d.ts.map +1 -1
  72. package/dist/agents/writer.js +77 -107
  73. package/dist/agents/writer.js.map +1 -1
  74. package/dist/index.d.ts +20 -5
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +19 -5
  77. package/dist/index.js.map +1 -1
  78. package/dist/interaction/book-session-store.d.ts.map +1 -1
  79. package/dist/interaction/book-session-store.js +84 -69
  80. package/dist/interaction/book-session-store.js.map +1 -1
  81. package/dist/interaction/events.d.ts +2 -2
  82. package/dist/interaction/project-tools.d.ts +1 -0
  83. package/dist/interaction/project-tools.d.ts.map +1 -1
  84. package/dist/interaction/project-tools.js +51 -3
  85. package/dist/interaction/project-tools.js.map +1 -1
  86. package/dist/interaction/session-transcript-legacy.d.ts +4 -0
  87. package/dist/interaction/session-transcript-legacy.d.ts.map +1 -0
  88. package/dist/interaction/session-transcript-legacy.js +100 -0
  89. package/dist/interaction/session-transcript-legacy.js.map +1 -0
  90. package/dist/interaction/session-transcript-restore.d.ts +17 -0
  91. package/dist/interaction/session-transcript-restore.d.ts.map +1 -0
  92. package/dist/interaction/session-transcript-restore.js +493 -0
  93. package/dist/interaction/session-transcript-restore.js.map +1 -0
  94. package/dist/interaction/session-transcript-schema.d.ts +402 -0
  95. package/dist/interaction/session-transcript-schema.d.ts.map +1 -0
  96. package/dist/interaction/session-transcript-schema.js +59 -0
  97. package/dist/interaction/session-transcript-schema.js.map +1 -0
  98. package/dist/interaction/session-transcript.d.ts +14 -0
  99. package/dist/interaction/session-transcript.d.ts.map +1 -0
  100. package/dist/interaction/session-transcript.js +152 -0
  101. package/dist/interaction/session-transcript.js.map +1 -0
  102. package/dist/interaction/session.d.ts +10 -10
  103. package/dist/interaction/session.d.ts.map +1 -1
  104. package/dist/interaction/session.js +5 -3
  105. package/dist/interaction/session.js.map +1 -1
  106. package/dist/llm/provider.d.ts +6 -9
  107. package/dist/llm/provider.d.ts.map +1 -1
  108. package/dist/llm/provider.js +255 -63
  109. package/dist/llm/provider.js.map +1 -1
  110. package/dist/llm/providers/endpoints/ai360.d.ts +10 -0
  111. package/dist/llm/providers/endpoints/ai360.d.ts.map +1 -0
  112. package/dist/llm/providers/endpoints/ai360.js +34 -0
  113. package/dist/llm/providers/endpoints/ai360.js.map +1 -0
  114. package/dist/llm/providers/endpoints/anthropic.d.ts +12 -0
  115. package/dist/llm/providers/endpoints/anthropic.d.ts.map +1 -0
  116. package/dist/llm/providers/endpoints/anthropic.js +72 -0
  117. package/dist/llm/providers/endpoints/anthropic.js.map +1 -0
  118. package/dist/llm/providers/endpoints/astronCodingPlan.d.ts +16 -0
  119. package/dist/llm/providers/endpoints/astronCodingPlan.d.ts.map +1 -0
  120. package/dist/llm/providers/endpoints/astronCodingPlan.js +16 -0
  121. package/dist/llm/providers/endpoints/astronCodingPlan.js.map +1 -0
  122. package/dist/llm/providers/endpoints/baichuan.d.ts +10 -0
  123. package/dist/llm/providers/endpoints/baichuan.d.ts.map +1 -0
  124. package/dist/llm/providers/endpoints/baichuan.js +20 -0
  125. package/dist/llm/providers/endpoints/baichuan.js.map +1 -0
  126. package/dist/llm/providers/endpoints/bailian.d.ts +25 -0
  127. package/dist/llm/providers/endpoints/bailian.d.ts.map +1 -0
  128. package/dist/llm/providers/endpoints/bailian.js +42 -0
  129. package/dist/llm/providers/endpoints/bailian.js.map +1 -0
  130. package/dist/llm/providers/endpoints/bailianCodingPlan.d.ts +10 -0
  131. package/dist/llm/providers/endpoints/bailianCodingPlan.d.ts.map +1 -0
  132. package/dist/llm/providers/endpoints/bailianCodingPlan.js +22 -0
  133. package/dist/llm/providers/endpoints/bailianCodingPlan.js.map +1 -0
  134. package/dist/llm/providers/endpoints/custom.d.ts +16 -0
  135. package/dist/llm/providers/endpoints/custom.d.ts.map +1 -0
  136. package/dist/llm/providers/endpoints/custom.js +15 -0
  137. package/dist/llm/providers/endpoints/custom.js.map +1 -0
  138. package/dist/llm/providers/endpoints/deepseek.d.ts +17 -0
  139. package/dist/llm/providers/endpoints/deepseek.d.ts.map +1 -0
  140. package/dist/llm/providers/endpoints/deepseek.js +20 -0
  141. package/dist/llm/providers/endpoints/deepseek.js.map +1 -0
  142. package/dist/llm/providers/endpoints/giteeai.d.ts +10 -0
  143. package/dist/llm/providers/endpoints/giteeai.d.ts.map +1 -0
  144. package/dist/llm/providers/endpoints/giteeai.js +33 -0
  145. package/dist/llm/providers/endpoints/giteeai.js.map +1 -0
  146. package/dist/llm/providers/endpoints/githubCopilot.d.ts +10 -0
  147. package/dist/llm/providers/endpoints/githubCopilot.d.ts.map +1 -0
  148. package/dist/llm/providers/endpoints/githubCopilot.js +35 -0
  149. package/dist/llm/providers/endpoints/githubCopilot.js.map +1 -0
  150. package/dist/llm/providers/endpoints/glmCodingPlan.d.ts +9 -0
  151. package/dist/llm/providers/endpoints/glmCodingPlan.d.ts.map +1 -0
  152. package/dist/llm/providers/endpoints/glmCodingPlan.js +21 -0
  153. package/dist/llm/providers/endpoints/glmCodingPlan.js.map +1 -0
  154. package/dist/llm/providers/endpoints/google.d.ts +12 -0
  155. package/dist/llm/providers/endpoints/google.d.ts.map +1 -0
  156. package/dist/llm/providers/endpoints/google.js +41 -0
  157. package/dist/llm/providers/endpoints/google.js.map +1 -0
  158. package/dist/llm/providers/endpoints/hunyuan.d.ts +10 -0
  159. package/dist/llm/providers/endpoints/hunyuan.d.ts.map +1 -0
  160. package/dist/llm/providers/endpoints/hunyuan.js +34 -0
  161. package/dist/llm/providers/endpoints/hunyuan.js.map +1 -0
  162. package/dist/llm/providers/endpoints/infiniai.d.ts +10 -0
  163. package/dist/llm/providers/endpoints/infiniai.d.ts.map +1 -0
  164. package/dist/llm/providers/endpoints/infiniai.js +64 -0
  165. package/dist/llm/providers/endpoints/infiniai.js.map +1 -0
  166. package/dist/llm/providers/endpoints/internlm.d.ts +10 -0
  167. package/dist/llm/providers/endpoints/internlm.d.ts.map +1 -0
  168. package/dist/llm/providers/endpoints/internlm.js +20 -0
  169. package/dist/llm/providers/endpoints/internlm.js.map +1 -0
  170. package/dist/llm/providers/endpoints/kimiCodingPlan.d.ts +9 -0
  171. package/dist/llm/providers/endpoints/kimiCodingPlan.d.ts.map +1 -0
  172. package/dist/llm/providers/endpoints/kimiCodingPlan.js +17 -0
  173. package/dist/llm/providers/endpoints/kimiCodingPlan.js.map +1 -0
  174. package/dist/llm/providers/endpoints/longcat.d.ts +9 -0
  175. package/dist/llm/providers/endpoints/longcat.d.ts.map +1 -0
  176. package/dist/llm/providers/endpoints/longcat.js +18 -0
  177. package/dist/llm/providers/endpoints/longcat.js.map +1 -0
  178. package/dist/llm/providers/endpoints/minimax.d.ts +15 -0
  179. package/dist/llm/providers/endpoints/minimax.d.ts.map +1 -0
  180. package/dist/llm/providers/endpoints/minimax.js +26 -0
  181. package/dist/llm/providers/endpoints/minimax.js.map +1 -0
  182. package/dist/llm/providers/endpoints/minimaxCodingPlan.d.ts +9 -0
  183. package/dist/llm/providers/endpoints/minimaxCodingPlan.d.ts.map +1 -0
  184. package/dist/llm/providers/endpoints/minimaxCodingPlan.js +21 -0
  185. package/dist/llm/providers/endpoints/minimaxCodingPlan.js.map +1 -0
  186. package/dist/llm/providers/endpoints/mistral.d.ts +11 -0
  187. package/dist/llm/providers/endpoints/mistral.d.ts.map +1 -0
  188. package/dist/llm/providers/endpoints/mistral.js +31 -0
  189. package/dist/llm/providers/endpoints/mistral.js.map +1 -0
  190. package/dist/llm/providers/endpoints/modelscope.d.ts +10 -0
  191. package/dist/llm/providers/endpoints/modelscope.d.ts.map +1 -0
  192. package/dist/llm/providers/endpoints/modelscope.js +22 -0
  193. package/dist/llm/providers/endpoints/modelscope.js.map +1 -0
  194. package/dist/llm/providers/endpoints/moonshot.d.ts +12 -0
  195. package/dist/llm/providers/endpoints/moonshot.d.ts.map +1 -0
  196. package/dist/llm/providers/endpoints/moonshot.js +29 -0
  197. package/dist/llm/providers/endpoints/moonshot.js.map +1 -0
  198. package/dist/llm/providers/endpoints/newapi.d.ts +14 -0
  199. package/dist/llm/providers/endpoints/newapi.d.ts.map +1 -0
  200. package/dist/llm/providers/endpoints/newapi.js +14 -0
  201. package/dist/llm/providers/endpoints/newapi.js.map +1 -0
  202. package/dist/llm/providers/endpoints/ollama.d.ts +12 -0
  203. package/dist/llm/providers/endpoints/ollama.d.ts.map +1 -0
  204. package/dist/llm/providers/endpoints/ollama.js +63 -0
  205. package/dist/llm/providers/endpoints/ollama.js.map +1 -0
  206. package/dist/llm/providers/endpoints/openai.d.ts +12 -0
  207. package/dist/llm/providers/endpoints/openai.d.ts.map +1 -0
  208. package/dist/llm/providers/endpoints/openai.js +67 -0
  209. package/dist/llm/providers/endpoints/openai.js.map +1 -0
  210. package/dist/llm/providers/endpoints/opencodeCodingPlan.d.ts +9 -0
  211. package/dist/llm/providers/endpoints/opencodeCodingPlan.d.ts.map +1 -0
  212. package/dist/llm/providers/endpoints/opencodeCodingPlan.js +23 -0
  213. package/dist/llm/providers/endpoints/opencodeCodingPlan.js.map +1 -0
  214. package/dist/llm/providers/endpoints/openrouter.d.ts +15 -0
  215. package/dist/llm/providers/endpoints/openrouter.d.ts.map +1 -0
  216. package/dist/llm/providers/endpoints/openrouter.js +74 -0
  217. package/dist/llm/providers/endpoints/openrouter.js.map +1 -0
  218. package/dist/llm/providers/endpoints/ppio.d.ts +15 -0
  219. package/dist/llm/providers/endpoints/ppio.d.ts.map +1 -0
  220. package/dist/llm/providers/endpoints/ppio.js +73 -0
  221. package/dist/llm/providers/endpoints/ppio.js.map +1 -0
  222. package/dist/llm/providers/endpoints/qiniu.d.ts +10 -0
  223. package/dist/llm/providers/endpoints/qiniu.d.ts.map +1 -0
  224. package/dist/llm/providers/endpoints/qiniu.js +24 -0
  225. package/dist/llm/providers/endpoints/qiniu.js.map +1 -0
  226. package/dist/llm/providers/endpoints/sensenova.d.ts +10 -0
  227. package/dist/llm/providers/endpoints/sensenova.d.ts.map +1 -0
  228. package/dist/llm/providers/endpoints/sensenova.js +37 -0
  229. package/dist/llm/providers/endpoints/sensenova.js.map +1 -0
  230. package/dist/llm/providers/endpoints/siliconcloud.d.ts +14 -0
  231. package/dist/llm/providers/endpoints/siliconcloud.d.ts.map +1 -0
  232. package/dist/llm/providers/endpoints/siliconcloud.js +114 -0
  233. package/dist/llm/providers/endpoints/siliconcloud.js.map +1 -0
  234. package/dist/llm/providers/endpoints/spark.d.ts +14 -0
  235. package/dist/llm/providers/endpoints/spark.d.ts.map +1 -0
  236. package/dist/llm/providers/endpoints/spark.js +21 -0
  237. package/dist/llm/providers/endpoints/spark.js.map +1 -0
  238. package/dist/llm/providers/endpoints/stepfun.d.ts +10 -0
  239. package/dist/llm/providers/endpoints/stepfun.d.ts.map +1 -0
  240. package/dist/llm/providers/endpoints/stepfun.js +27 -0
  241. package/dist/llm/providers/endpoints/stepfun.js.map +1 -0
  242. package/dist/llm/providers/endpoints/tencentcloud.d.ts +10 -0
  243. package/dist/llm/providers/endpoints/tencentcloud.d.ts.map +1 -0
  244. package/dist/llm/providers/endpoints/tencentcloud.js +17 -0
  245. package/dist/llm/providers/endpoints/tencentcloud.js.map +1 -0
  246. package/dist/llm/providers/endpoints/volcengine.d.ts +10 -0
  247. package/dist/llm/providers/endpoints/volcengine.d.ts.map +1 -0
  248. package/dist/llm/providers/endpoints/volcengine.js +44 -0
  249. package/dist/llm/providers/endpoints/volcengine.js.map +1 -0
  250. package/dist/llm/providers/endpoints/volcengineCodingPlan.d.ts +19 -0
  251. package/dist/llm/providers/endpoints/volcengineCodingPlan.d.ts.map +1 -0
  252. package/dist/llm/providers/endpoints/volcengineCodingPlan.js +25 -0
  253. package/dist/llm/providers/endpoints/volcengineCodingPlan.js.map +1 -0
  254. package/dist/llm/providers/endpoints/wenxin.d.ts +10 -0
  255. package/dist/llm/providers/endpoints/wenxin.d.ts.map +1 -0
  256. package/dist/llm/providers/endpoints/wenxin.js +98 -0
  257. package/dist/llm/providers/endpoints/wenxin.js.map +1 -0
  258. package/dist/llm/providers/endpoints/xai.d.ts +11 -0
  259. package/dist/llm/providers/endpoints/xai.d.ts.map +1 -0
  260. package/dist/llm/providers/endpoints/xai.js +25 -0
  261. package/dist/llm/providers/endpoints/xai.js.map +1 -0
  262. package/dist/llm/providers/endpoints/xiaomimimo.d.ts +12 -0
  263. package/dist/llm/providers/endpoints/xiaomimimo.d.ts.map +1 -0
  264. package/dist/llm/providers/endpoints/xiaomimimo.js +16 -0
  265. package/dist/llm/providers/endpoints/xiaomimimo.js.map +1 -0
  266. package/dist/llm/providers/endpoints/zeroone.d.ts +10 -0
  267. package/dist/llm/providers/endpoints/zeroone.d.ts.map +1 -0
  268. package/dist/llm/providers/endpoints/zeroone.js +26 -0
  269. package/dist/llm/providers/endpoints/zeroone.js.map +1 -0
  270. package/dist/llm/providers/endpoints/zhipu.d.ts +12 -0
  271. package/dist/llm/providers/endpoints/zhipu.d.ts.map +1 -0
  272. package/dist/llm/providers/endpoints/zhipu.js +51 -0
  273. package/dist/llm/providers/endpoints/zhipu.js.map +1 -0
  274. package/dist/llm/providers/index.d.ts +5 -0
  275. package/dist/llm/providers/index.d.ts.map +1 -0
  276. package/dist/llm/providers/index.js +67 -0
  277. package/dist/llm/providers/index.js.map +1 -0
  278. package/dist/llm/providers/lookup.d.ts +16 -0
  279. package/dist/llm/providers/lookup.d.ts.map +1 -0
  280. package/dist/llm/providers/lookup.js +68 -0
  281. package/dist/llm/providers/lookup.js.map +1 -0
  282. package/dist/llm/providers/probe.d.ts +11 -0
  283. package/dist/llm/providers/probe.d.ts.map +1 -0
  284. package/dist/llm/providers/probe.js +24 -0
  285. package/dist/llm/providers/probe.js.map +1 -0
  286. package/dist/llm/providers/types.d.ts +71 -0
  287. package/dist/llm/providers/types.d.ts.map +1 -0
  288. package/dist/llm/providers/types.js +9 -0
  289. package/dist/llm/providers/types.js.map +1 -0
  290. package/dist/llm/providers/verify.d.ts +27 -0
  291. package/dist/llm/providers/verify.d.ts.map +1 -0
  292. package/dist/llm/providers/verify.js +77 -0
  293. package/dist/llm/providers/verify.js.map +1 -0
  294. package/dist/llm/secrets.d.ts.map +1 -1
  295. package/dist/llm/secrets.js +27 -2
  296. package/dist/llm/secrets.js.map +1 -1
  297. package/dist/llm/service-presets.d.ts +13 -3
  298. package/dist/llm/service-presets.d.ts.map +1 -1
  299. package/dist/llm/service-presets.js +78 -42
  300. package/dist/llm/service-presets.js.map +1 -1
  301. package/dist/llm/service-resolver.d.ts +1 -1
  302. package/dist/llm/service-resolver.d.ts.map +1 -1
  303. package/dist/llm/service-resolver.js +13 -0
  304. package/dist/llm/service-resolver.js.map +1 -1
  305. package/dist/models/book-rules.d.ts +23 -1
  306. package/dist/models/book-rules.d.ts.map +1 -1
  307. package/dist/models/book-rules.js +54 -2
  308. package/dist/models/book-rules.js.map +1 -1
  309. package/dist/models/input-governance.d.ts +20 -244
  310. package/dist/models/input-governance.d.ts.map +1 -1
  311. package/dist/models/input-governance.js +7 -51
  312. package/dist/models/input-governance.js.map +1 -1
  313. package/dist/models/project.d.ts +29 -28
  314. package/dist/models/project.d.ts.map +1 -1
  315. package/dist/models/project.js +11 -9
  316. package/dist/models/project.js.map +1 -1
  317. package/dist/models/runtime-state.d.ts +120 -0
  318. package/dist/models/runtime-state.d.ts.map +1 -1
  319. package/dist/models/runtime-state.js +12 -0
  320. package/dist/models/runtime-state.js.map +1 -1
  321. package/dist/pipeline/agent.d.ts.map +1 -1
  322. package/dist/pipeline/agent.js +59 -10
  323. package/dist/pipeline/agent.js.map +1 -1
  324. package/dist/pipeline/chapter-review-cycle.d.ts +11 -4
  325. package/dist/pipeline/chapter-review-cycle.d.ts.map +1 -1
  326. package/dist/pipeline/chapter-review-cycle.js +156 -73
  327. package/dist/pipeline/chapter-review-cycle.js.map +1 -1
  328. package/dist/pipeline/chapter-truth-validation.d.ts +2 -1
  329. package/dist/pipeline/chapter-truth-validation.d.ts.map +1 -1
  330. package/dist/pipeline/chapter-truth-validation.js +1 -1
  331. package/dist/pipeline/chapter-truth-validation.js.map +1 -1
  332. package/dist/pipeline/persisted-governed-plan.d.ts +1 -0
  333. package/dist/pipeline/persisted-governed-plan.d.ts.map +1 -1
  334. package/dist/pipeline/persisted-governed-plan.js +181 -66
  335. package/dist/pipeline/persisted-governed-plan.js.map +1 -1
  336. package/dist/pipeline/runner.d.ts +20 -17
  337. package/dist/pipeline/runner.d.ts.map +1 -1
  338. package/dist/pipeline/runner.js +359 -84
  339. package/dist/pipeline/runner.js.map +1 -1
  340. package/dist/state/manager.d.ts.map +1 -1
  341. package/dist/state/manager.js +44 -4
  342. package/dist/state/manager.js.map +1 -1
  343. package/dist/state/memory-db.d.ts +6 -0
  344. package/dist/state/memory-db.d.ts.map +1 -1
  345. package/dist/state/memory-db.js.map +1 -1
  346. package/dist/state/runtime-state-store.d.ts.map +1 -1
  347. package/dist/state/runtime-state-store.js +4 -1
  348. package/dist/state/runtime-state-store.js.map +1 -1
  349. package/dist/state/state-projections.d.ts +3 -1
  350. package/dist/state/state-projections.d.ts.map +1 -1
  351. package/dist/state/state-projections.js +58 -15
  352. package/dist/state/state-projections.js.map +1 -1
  353. package/dist/utils/book-id.d.ts +4 -0
  354. package/dist/utils/book-id.d.ts.map +1 -0
  355. package/dist/utils/book-id.js +27 -0
  356. package/dist/utils/book-id.js.map +1 -0
  357. package/dist/utils/chapter-cadence.js +1 -0
  358. package/dist/utils/chapter-cadence.js.map +1 -1
  359. package/dist/utils/chapter-memo-parser.d.ts +19 -0
  360. package/dist/utils/chapter-memo-parser.d.ts.map +1 -0
  361. package/dist/utils/chapter-memo-parser.js +114 -0
  362. package/dist/utils/chapter-memo-parser.js.map +1 -0
  363. package/dist/utils/config-loader.d.ts +7 -11
  364. package/dist/utils/config-loader.d.ts.map +1 -1
  365. package/dist/utils/config-loader.js +13 -253
  366. package/dist/utils/config-loader.js.map +1 -1
  367. package/dist/utils/context-assembly.d.ts +24 -0
  368. package/dist/utils/context-assembly.d.ts.map +1 -0
  369. package/dist/utils/context-assembly.js +77 -0
  370. package/dist/utils/context-assembly.js.map +1 -0
  371. package/dist/utils/effective-llm-config.d.ts +34 -0
  372. package/dist/utils/effective-llm-config.d.ts.map +1 -0
  373. package/dist/utils/effective-llm-config.js +417 -0
  374. package/dist/utils/effective-llm-config.js.map +1 -0
  375. package/dist/utils/governed-working-set.js +1 -1
  376. package/dist/utils/governed-working-set.js.map +1 -1
  377. package/dist/utils/hook-ledger-validator.d.ts +82 -0
  378. package/dist/utils/hook-ledger-validator.d.ts.map +1 -0
  379. package/dist/utils/hook-ledger-validator.js +225 -0
  380. package/dist/utils/hook-ledger-validator.js.map +1 -0
  381. package/dist/utils/hook-lifecycle.d.ts +5 -0
  382. package/dist/utils/hook-lifecycle.d.ts.map +1 -1
  383. package/dist/utils/hook-lifecycle.js +32 -0
  384. package/dist/utils/hook-lifecycle.js.map +1 -1
  385. package/dist/utils/hook-policy.d.ts +0 -17
  386. package/dist/utils/hook-policy.d.ts.map +1 -1
  387. package/dist/utils/hook-policy.js +0 -30
  388. package/dist/utils/hook-policy.js.map +1 -1
  389. package/dist/utils/hook-promotion.d.ts +83 -0
  390. package/dist/utils/hook-promotion.d.ts.map +1 -0
  391. package/dist/utils/hook-promotion.js +241 -0
  392. package/dist/utils/hook-promotion.js.map +1 -0
  393. package/dist/utils/hook-stale-detection.d.ts +51 -0
  394. package/dist/utils/hook-stale-detection.d.ts.map +1 -0
  395. package/dist/utils/hook-stale-detection.js +125 -0
  396. package/dist/utils/hook-stale-detection.js.map +1 -0
  397. package/dist/utils/llm-endpoint-auth.d.ts +5 -0
  398. package/dist/utils/llm-endpoint-auth.d.ts.map +1 -0
  399. package/dist/utils/llm-endpoint-auth.js +36 -0
  400. package/dist/utils/llm-endpoint-auth.js.map +1 -0
  401. package/dist/utils/llm-env.d.ts +14 -0
  402. package/dist/utils/llm-env.d.ts.map +1 -0
  403. package/dist/utils/llm-env.js +53 -0
  404. package/dist/utils/llm-env.js.map +1 -0
  405. package/dist/utils/memory-retrieval.d.ts +23 -1
  406. package/dist/utils/memory-retrieval.d.ts.map +1 -1
  407. package/dist/utils/memory-retrieval.js +45 -2
  408. package/dist/utils/memory-retrieval.js.map +1 -1
  409. package/dist/utils/narrative-control.d.ts +16 -0
  410. package/dist/utils/narrative-control.d.ts.map +1 -0
  411. package/dist/utils/narrative-control.js +131 -0
  412. package/dist/utils/narrative-control.js.map +1 -0
  413. package/dist/utils/path-safety.d.ts +2 -0
  414. package/dist/utils/path-safety.d.ts.map +1 -0
  415. package/dist/utils/path-safety.js +11 -0
  416. package/dist/utils/path-safety.js.map +1 -0
  417. package/dist/utils/planning-materials.d.ts +35 -0
  418. package/dist/utils/planning-materials.d.ts.map +1 -0
  419. package/dist/utils/planning-materials.js +123 -0
  420. package/dist/utils/planning-materials.js.map +1 -0
  421. package/dist/utils/proxy-fetch.d.ts +9 -0
  422. package/dist/utils/proxy-fetch.d.ts.map +1 -0
  423. package/dist/utils/proxy-fetch.js +31 -0
  424. package/dist/utils/proxy-fetch.js.map +1 -0
  425. package/dist/utils/runtime-writer.d.ts +14 -0
  426. package/dist/utils/runtime-writer.d.ts.map +1 -0
  427. package/dist/utils/runtime-writer.js +21 -0
  428. package/dist/utils/runtime-writer.js.map +1 -0
  429. package/dist/utils/spot-fix-patches.d.ts +7 -0
  430. package/dist/utils/spot-fix-patches.d.ts.map +1 -1
  431. package/dist/utils/spot-fix-patches.js +109 -36
  432. package/dist/utils/spot-fix-patches.js.map +1 -1
  433. package/dist/utils/story-markdown.d.ts.map +1 -1
  434. package/dist/utils/story-markdown.js +104 -6
  435. package/dist/utils/story-markdown.js.map +1 -1
  436. package/dist/utils/writing-methodology.d.ts +10 -0
  437. package/dist/utils/writing-methodology.d.ts.map +1 -0
  438. package/dist/utils/writing-methodology.js +163 -0
  439. package/dist/utils/writing-methodology.js.map +1 -0
  440. package/package.json +3 -2
  441. package/dist/utils/hook-agenda.d.ts +0 -21
  442. package/dist/utils/hook-agenda.d.ts.map +0 -1
  443. package/dist/utils/hook-agenda.js +0 -95
  444. package/dist/utils/hook-agenda.js.map +0 -1
@@ -0,0 +1,225 @@
1
+ /**
2
+ * Phase 9-3: hard gate that a chapter draft actually acts on the hook ledger
3
+ * the planner declared in the memo's "## 本章 hook 账" / "## Hook ledger for
4
+ * this chapter" section.
5
+ *
6
+ * The planner commits, per chapter, to:
7
+ * - advance: <hook_id> "name" → state-change
8
+ * - resolve: <hook_id> "name" → action
9
+ *
10
+ * The validator parses those two lists and checks that every committed hook
11
+ * has observable evidence in the draft. "Evidence" means the draft mentions
12
+ * at least one keyword from the ledger line's descriptor (hook name, key
13
+ * noun, etc.). We deliberately do NOT require the draft to repeat the raw
14
+ * hook_id like "H007" — writers don't embed IDs in prose.
15
+ */
16
+ const LEDGER_HEADING_PATTERNS = [
17
+ /^#{2,3}\s*本章\s*hook\s*账\s*$/im,
18
+ /^#{2,3}\s*Hook\s+ledger\s+for\s+this\s+chapter\s*$/im,
19
+ ];
20
+ const SUBSECTION_KEYS = ["open", "advance", "resolve", "defer"];
21
+ /**
22
+ * Tokens that look like hook_ids but are placeholders meaning "no hooks in
23
+ * this slot". Writers sometimes emit "- 无" or "- none" under an empty slot
24
+ * instead of leaving it blank.
25
+ */
26
+ const PLACEHOLDER_TOKENS = /^(无|空|none|nil|null|暂无|n\/a|na|n-a|tbd|todo|待定)$/i;
27
+ /** Subsection heading words that must not be parsed as hook_ids. */
28
+ const SUBSECTION_WORDS = /^(open|advance|resolve|defer|new)$/i;
29
+ export function parseHookLedger(memoBody) {
30
+ const section = extractLedgerSection(memoBody);
31
+ if (!section) {
32
+ return { open: [], advance: [], resolve: [], defer: [], newOpenCount: 0 };
33
+ }
34
+ const result = {
35
+ open: [],
36
+ advance: [],
37
+ resolve: [],
38
+ defer: [],
39
+ };
40
+ let newOpenCount = 0;
41
+ let current = null;
42
+ for (const rawLine of section.split(/\r?\n/)) {
43
+ const line = rawLine.trim();
44
+ if (line.length === 0)
45
+ continue;
46
+ const subHeadingMatch = line.match(/^(open|advance|resolve|defer)\s*[::]?\s*$/i);
47
+ if (subHeadingMatch) {
48
+ current = subHeadingMatch[1].toLowerCase();
49
+ continue;
50
+ }
51
+ if (!current)
52
+ continue;
53
+ if (!line.startsWith("-"))
54
+ continue;
55
+ // `[new]` placeholder lines have no hook_id but still count as a new hook
56
+ // opened (揭 1 埋 1 floor check). extractLedgerEntry filters them out for
57
+ // advance/resolve evidence matching; we tally them separately here.
58
+ const cleaned = line.replace(/^-+\s*/, "").trim();
59
+ if (current === "open" && /^\[new\]/i.test(cleaned)) {
60
+ newOpenCount += 1;
61
+ continue;
62
+ }
63
+ const entry = extractLedgerEntry(line);
64
+ if (entry)
65
+ result[current].push(entry);
66
+ }
67
+ return { ...result, newOpenCount };
68
+ }
69
+ /**
70
+ * Enforce: every hook declared under advance / resolve must have observable
71
+ * evidence in the draft text. We do NOT validate `open` (new hooks don't have
72
+ * a pre-existing id/descriptor to echo) or `defer` (deferred = deliberately
73
+ * not touched).
74
+ *
75
+ * Additionally enforces the "揭 1 埋 1" hard floor (Xu Er Jia De Mao, 番茄文章
76
+ * 10): whenever a chapter resolves one or more hooks, it must open at least
77
+ * as many new hooks in the same memo. "Resolve without opening" leaves the
78
+ * reader feeling "解完即索然无味" — the story loses forward pull. The softer
79
+ * "揭 1 埋 2" rule is a planner-prompt recommendation, not a hard gate here,
80
+ * because enforcing ×2 would conflict with the "≤ 2 new hooks per chapter"
81
+ * cap on the planner side when resolve=2.
82
+ */
83
+ export function validateHookLedger(memoBody, draftContent) {
84
+ const ledger = parseHookLedger(memoBody);
85
+ const violations = [];
86
+ // Evidence check for everything the memo committed to land in prose.
87
+ const committed = dedupeById([...ledger.advance, ...ledger.resolve]);
88
+ for (const entry of committed) {
89
+ if (!draftEchoesEntry(draftContent, entry)) {
90
+ violations.push({
91
+ severity: "critical",
92
+ category: "hook 账未兑现",
93
+ description: `memo 在 advance/resolve 里声明要处理 ${entry.id},但正文没有对应的落地动作`,
94
+ suggestion: `在正文中加入对 ${entry.id} 的具体情节推进(动作、对话、环境变化),或把它从 hook 账里移到 defer 并给出理由`,
95
+ });
96
+ }
97
+ }
98
+ // "揭 1 埋 1" hard floor: when anything was resolved, at least the same
99
+ // number of new hooks must have been opened. We count both `[new]`
100
+ // placeholder lines (newOpenCount — the normal way planners declare fresh
101
+ // hooks without an id) and any id-bearing lines under `open:` (rare, but
102
+ // legal if a planner re-opens a previously paused hook).
103
+ const resolvedCount = ledger.resolve.length;
104
+ const openedCount = ledger.open.length + ledger.newOpenCount;
105
+ if (resolvedCount > 0 && openedCount < resolvedCount) {
106
+ violations.push({
107
+ severity: "critical",
108
+ category: "hook 账揭 1 埋 1 违规",
109
+ description: `本章 resolve 了 ${resolvedCount} 个钩子,但 open 只有 ${openedCount} 个新钩子。只揭不埋会让读者豁然开朗后索然无味,本书的前进拉力被削弱。`,
110
+ suggestion: `在 memo 的 open 段下至少再埋 ${resolvedCount - openedCount} 个与本章已揭钩子相关的新钩子(番茄老师徐二家的猫:"掀开一个伏笔的同时,再埋两个伏笔")。新钩子最好与已揭钩子彼此关联,不要凭空冒出来。`,
111
+ });
112
+ }
113
+ return violations;
114
+ }
115
+ function extractLedgerSection(memoBody) {
116
+ for (const pattern of LEDGER_HEADING_PATTERNS) {
117
+ const match = memoBody.match(pattern);
118
+ if (!match || match.index === undefined)
119
+ continue;
120
+ const start = match.index + match[0].length;
121
+ const rest = memoBody.slice(start);
122
+ const nextHeading = rest.match(/\n#{2,3}\s/);
123
+ const end = nextHeading ? nextHeading.index ?? rest.length : rest.length;
124
+ return rest.slice(0, end);
125
+ }
126
+ return undefined;
127
+ }
128
+ function extractLedgerEntry(line) {
129
+ const cleaned = line.replace(/^-+\s*/, "").trim();
130
+ if (cleaned.startsWith("[new]") || cleaned.startsWith("[NEW]"))
131
+ return undefined;
132
+ // Reject whole-line placeholders first — "- 无", "- n/a", "- none" etc.
133
+ const firstWord = cleaned.split(/\s+/)[0] ?? "";
134
+ if (PLACEHOLDER_TOKENS.test(firstWord))
135
+ return undefined;
136
+ const idMatch = cleaned.match(/^([A-Za-z\u4e00-\u9fff][A-Za-z0-9_\-\u4e00-\u9fff]{0,19})/);
137
+ if (!idMatch)
138
+ return undefined;
139
+ const candidate = idMatch[1];
140
+ if (SUBSECTION_WORDS.test(candidate))
141
+ return undefined;
142
+ if (PLACEHOLDER_TOKENS.test(candidate))
143
+ return undefined;
144
+ const descriptor = cleaned.slice(candidate.length).trim();
145
+ return { id: candidate, descriptor, keywords: extractKeywords(descriptor) };
146
+ }
147
+ /**
148
+ * Extract content-matching tokens from a ledger line's descriptor.
149
+ *
150
+ * Priority 1: quoted hook name — `H007 "胖虎借条" → ...` — this is the most
151
+ * informative token the planner attached, and it's what the writer should
152
+ * echo. We split compound CJK names into leading/trailing 2-grams so
153
+ * partial echoes still count.
154
+ *
155
+ * Priority 2: if no quoted name, fall back to the descriptor text UP TO the
156
+ * first state-transition arrow (→ or ->), same CJK/ASCII splitting. Anything
157
+ * AFTER the arrow describes new state, not the hook itself, and risks
158
+ * character-name false positives.
159
+ */
160
+ function extractKeywords(descriptor) {
161
+ if (!descriptor)
162
+ return [];
163
+ // Try the quoted-name anchor first — matches "..." or "..." quotes.
164
+ const quotedMatch = descriptor.match(/[""]([^""\n]+)[""]/);
165
+ const source = quotedMatch ? quotedMatch[1] : descriptor.split(/[→]|->/, 1)[0];
166
+ const cjkRuns = source.match(/[\u4e00-\u9fff]{2,}/g) ?? [];
167
+ const cjkTokens = [];
168
+ for (const run of cjkRuns) {
169
+ cjkTokens.push(run);
170
+ if (run.length >= 3) {
171
+ for (let index = 0; index <= run.length - 2; index++) {
172
+ cjkTokens.push(run.slice(index, index + 2));
173
+ }
174
+ }
175
+ if (run.length >= 4) {
176
+ cjkTokens.push(run.slice(0, 3));
177
+ cjkTokens.push(run.slice(-3));
178
+ }
179
+ }
180
+ const ascii = (source.match(/[A-Za-z]{3,}/g) ?? []).map((w) => w.toLowerCase());
181
+ return dedupeStrings([...cjkTokens, ...ascii].filter((tok) => !ASCII_STOPWORDS.has(tok)));
182
+ }
183
+ const ASCII_STOPWORDS = new Set([
184
+ "and", "the", "for", "with", "from", "that", "into", "then",
185
+ "open", "close", "advance", "resolve", "defer", "new",
186
+ "planted", "pressured", "near", "payoff", "ready", "stale",
187
+ ]);
188
+ function draftEchoesEntry(draft, entry) {
189
+ if (entry.keywords.length > 0) {
190
+ const draftLower = draft.toLowerCase();
191
+ return entry.keywords.some((kw) => {
192
+ // ASCII keywords are already lowercased; CJK keywords case doesn't matter.
193
+ return /^[a-z]/.test(kw) ? draftLower.includes(kw) : draft.includes(kw);
194
+ });
195
+ }
196
+ // Bare-id ledger line with no descriptor — fall back to ID match.
197
+ if (/^[A-Za-z0-9_-]+$/.test(entry.id)) {
198
+ return new RegExp(`\\b${escapeRegex(entry.id)}\\b`).test(draft);
199
+ }
200
+ return draft.includes(entry.id);
201
+ }
202
+ function dedupeById(entries) {
203
+ const seen = new Set();
204
+ const result = [];
205
+ for (const entry of entries) {
206
+ if (seen.has(entry.id))
207
+ continue;
208
+ seen.add(entry.id);
209
+ result.push(entry);
210
+ }
211
+ return result;
212
+ }
213
+ function dedupeStrings(values) {
214
+ return [...new Set(values)];
215
+ }
216
+ function escapeRegex(value) {
217
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
218
+ }
219
+ export const INTERNAL = {
220
+ SUBSECTION_KEYS,
221
+ extractLedgerSection,
222
+ extractLedgerEntry,
223
+ extractKeywords,
224
+ };
225
+ //# sourceMappingURL=hook-ledger-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook-ledger-validator.js","sourceRoot":"","sources":["../../src/utils/hook-ledger-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAgCH,MAAM,uBAAuB,GAAG;IAC9B,+BAA+B;IAC/B,sDAAsD;CACvD,CAAC;AAEF,MAAM,eAAe,GAAoC,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAEjG;;;;GAIG;AACH,MAAM,kBAAkB,GAAG,mDAAmD,CAAC;AAE/E,oEAAoE;AACpE,MAAM,gBAAgB,GAAG,qCAAqC,CAAC;AAE/D,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,MAAM,OAAO,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;IAC5E,CAAC;IAGD,MAAM,MAAM,GAA0C;QACpD,IAAI,EAAE,EAAE;QACR,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,EAAE;QACX,KAAK,EAAE,EAAE;KACV,CAAC;IACF,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,IAAI,OAAO,GAAsB,IAAI,CAAC;IACtC,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAEhC,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;QACjF,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,GAAG,eAAe,CAAC,CAAC,CAAE,CAAC,WAAW,EAAgB,CAAC;YAC1D,SAAS;QACX,CAAC;QAED,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAEpC,0EAA0E;QAC1E,wEAAwE;QACxE,oEAAoE;QACpE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAClD,IAAI,OAAO,KAAK,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACpD,YAAY,IAAI,CAAC,CAAC;YAClB,SAAS;QACX,CAAC;QAED,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,KAAK;YAAE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,EAAE,GAAG,MAAM,EAAE,YAAY,EAAE,CAAC;AACrC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAAgB,EAChB,YAAoB;IAEpB,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,UAAU,GAA0B,EAAE,CAAC;IAE7C,qEAAqE;IACrE,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACrE,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC;YAC3C,UAAU,CAAC,IAAI,CAAC;gBACd,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,WAAW;gBACrB,WAAW,EAAE,iCAAiC,KAAK,CAAC,EAAE,eAAe;gBACrE,UAAU,EAAE,WAAW,KAAK,CAAC,EAAE,iDAAiD;aACjF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,sEAAsE;IACtE,mEAAmE;IACnE,0EAA0E;IAC1E,yEAAyE;IACzE,yDAAyD;IACzD,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;IAC5C,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;IAC7D,IAAI,aAAa,GAAG,CAAC,IAAI,WAAW,GAAG,aAAa,EAAE,CAAC;QACrD,UAAU,CAAC,IAAI,CAAC;YACd,QAAQ,EAAE,UAAU;YACpB,QAAQ,EAAE,kBAAkB;YAC5B,WAAW,EAAE,gBAAgB,aAAa,kBAAkB,WAAW,qCAAqC;YAC5G,UAAU,EAAE,wBAAwB,aAAa,GAAG,WAAW,uEAAuE;SACvI,CAAC,CAAC;IACL,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAgB;IAC5C,KAAK,MAAM,OAAO,IAAI,uBAAuB,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;YAAE,SAAS;QAClD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC5C,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QACzE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAClD,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IAEjF,uEAAuE;IACvE,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAChD,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAEzD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC3F,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAE/B,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;IAC9B,IAAI,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IACvD,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAEzD,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1D,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC;AAC9E,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,eAAe,CAAC,UAAkB;IACzC,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IAE3B,oEAAoE;IACpE,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC;IAEjF,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC;IAC3D,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACpB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;gBACrD,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACpB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAChC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAChF,OAAO,aAAa,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5F,CAAC;AAED,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAC3D,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK;IACrD,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO;CAC3D,CAAC,CAAC;AAEH,SAAS,gBAAgB,CAAC,KAAa,EAAE,KAAsB;IAC7D,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACvC,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;YAChC,2EAA2E;YAC3E,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC;IACD,kEAAkE;IAClE,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;QACtC,OAAO,IAAI,MAAM,CAAC,MAAM,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,UAAU,CAAC,OAAuC;IACzD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAAE,SAAS;QACjC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,aAAa,CAAC,MAA6B;IAClD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,eAAe;IACf,oBAAoB;IACpB,kBAAkB;IAClB,eAAe;CAChB,CAAC"}
@@ -1,5 +1,10 @@
1
1
  import type { HookPayoffTiming } from "../models/runtime-state.js";
2
+ import type { StoredHook } from "../state/memory-db.js";
2
3
  import { type HookPhase } from "./hook-policy.js";
4
+ export declare const DEFAULT_HOOK_LOOKAHEAD_CHAPTERS = 3;
5
+ export declare function filterActiveHooks(hooks: ReadonlyArray<StoredHook>): StoredHook[];
6
+ export declare function isFuturePlannedHook(hook: StoredHook, chapterNumber: number, lookahead?: number): boolean;
7
+ export declare function isHookWithinChapterWindow(hook: StoredHook, chapterNumber: number, recentWindow?: number, lookahead?: number): boolean;
3
8
  export declare function normalizeHookPayoffTiming(value: string | undefined | null): HookPayoffTiming | undefined;
4
9
  export declare function inferHookPayoffTiming(params: {
5
10
  readonly expectedPayoff?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"hook-lifecycle.d.ts","sourceRoot":"","sources":["../../src/utils/hook-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAML,KAAK,SAAS,EACf,MAAM,kBAAkB,CAAC;AAmC1B,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,gBAAgB,GAAG,SAAS,CAWxG;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,gBAAgB,CAcnB;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC9C,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,gBAAgB,CAMnB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,IAAI,GAAG,IAAI,GACpB,MAAM,CAER;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC,GAAG;IACF,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC,CAgDA"}
1
+ {"version":3,"file":"hook-lifecycle.d.ts","sourceRoot":"","sources":["../../src/utils/hook-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAML,KAAK,SAAS,EACf,MAAM,kBAAkB,CAAC;AAE1B,eAAO,MAAM,+BAA+B,IAAI,CAAC;AASjD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,UAAU,EAAE,CAEhF;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,UAAU,EAChB,aAAa,EAAE,MAAM,EACrB,SAAS,GAAE,MAAwC,GAClD,OAAO,CAET;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,UAAU,EAChB,aAAa,EAAE,MAAM,EACrB,YAAY,GAAE,MAAU,EACxB,SAAS,GAAE,MAAwC,GAClD,OAAO,CAoBT;AAmCD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,gBAAgB,GAAG,SAAS,CAWxG;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,gBAAgB,CAcnB;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC9C,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,gBAAgB,CAMnB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,IAAI,GAAG,IAAI,GACpB,MAAM,CAER;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC,GAAG;IACF,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC,CAgDA"}
@@ -1,4 +1,36 @@
1
1
  import { HOOK_ACTIVITY_THRESHOLDS, HOOK_PHASE_THRESHOLDS, HOOK_PHASE_WEIGHT, HOOK_PRESSURE_WEIGHTS, HOOK_TIMING_PROFILES, } from "./hook-policy.js";
2
+ export const DEFAULT_HOOK_LOOKAHEAD_CHAPTERS = 3;
3
+ function normalizeStoredHookStatus(status) {
4
+ if (/^(resolved|closed|done|已回收|已解决)$/i.test(status.trim()))
5
+ return "resolved";
6
+ if (/^(deferred|paused|hold|延后|延期|搁置|暂缓)$/i.test(status.trim()))
7
+ return "deferred";
8
+ if (/^(progressing|advanced|重大推进|持续推进)$/i.test(status.trim()))
9
+ return "progressing";
10
+ return "open";
11
+ }
12
+ export function filterActiveHooks(hooks) {
13
+ return hooks.filter((hook) => normalizeStoredHookStatus(hook.status) !== "resolved");
14
+ }
15
+ export function isFuturePlannedHook(hook, chapterNumber, lookahead = DEFAULT_HOOK_LOOKAHEAD_CHAPTERS) {
16
+ return hook.lastAdvancedChapter <= 0 && hook.startChapter > chapterNumber + lookahead;
17
+ }
18
+ export function isHookWithinChapterWindow(hook, chapterNumber, recentWindow = 5, lookahead = DEFAULT_HOOK_LOOKAHEAD_CHAPTERS) {
19
+ const recentCutoff = Math.max(0, chapterNumber - recentWindow);
20
+ if (hook.lastAdvancedChapter > 0 && hook.lastAdvancedChapter >= recentCutoff) {
21
+ return true;
22
+ }
23
+ if (hook.lastAdvancedChapter > 0) {
24
+ return false;
25
+ }
26
+ if (hook.startChapter <= 0) {
27
+ return true;
28
+ }
29
+ if (hook.startChapter >= recentCutoff && hook.startChapter <= chapterNumber) {
30
+ return true;
31
+ }
32
+ return hook.startChapter > chapterNumber && hook.startChapter <= chapterNumber + lookahead;
33
+ }
2
34
  const LABELS = {
3
35
  en: {
4
36
  immediate: "immediate",
@@ -1 +1 @@
1
- {"version":3,"file":"hook-lifecycle.js","sourceRoot":"","sources":["../../src/utils/hook-lifecycle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hook-lifecycle.js","sourceRoot":"","sources":["../../src/utils/hook-lifecycle.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import type { HookPayoffTiming } from "../models/runtime-state.js";
2
2
  export type HookPhase = "opening" | "middle" | "late";
3
- export type HookAgendaLoad = "light" | "medium" | "heavy";
4
3
  export interface HookLifecycleProfile {
5
4
  readonly earliestResolveAge: number;
6
5
  readonly staleDormancy: number;
@@ -34,22 +33,6 @@ export declare const HOOK_ACTIVITY_THRESHOLDS: {
34
33
  readonly refreshDormancy: 2;
35
34
  readonly freshPromiseAge: 1;
36
35
  };
37
- export declare const HOOK_AGENDA_LIMITS: Record<HookAgendaLoad, {
38
- readonly staleDebt: number;
39
- readonly mustAdvance: number;
40
- readonly eligibleResolve: number;
41
- readonly avoidFamilies: number;
42
- }>;
43
- export declare const HOOK_AGENDA_LOAD_THRESHOLDS: {
44
- readonly heavyReadyCount: 3;
45
- readonly heavyStaleCount: 4;
46
- readonly heavyCriticalCount: 3;
47
- readonly heavyPressuredCount: 6;
48
- readonly mediumReadyCount: 2;
49
- readonly mediumStaleCount: 2;
50
- readonly mediumCriticalCount: 1;
51
- readonly mediumPressuredFamilies: 3;
52
- };
53
36
  export declare const HOOK_VISIBILITY_WINDOWS: Record<HookPayoffTiming, number>;
54
37
  export declare const HOOK_RELEVANT_SELECTION_DEFAULTS: {
55
38
  readonly primary: {
@@ -1 +1 @@
1
- {"version":3,"file":"hook-policy.d.ts","sourceRoot":"","sources":["../../src/utils/hook-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AACtD,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE1D,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,gBAAgB,EAAE,oBAAoB,CAoC/E,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAIvD,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;CAKxB,CAAC;AAEX,eAAO,MAAM,qBAAqB;;;;;;;;;;CAUxB,CAAC;AAEX,eAAO,MAAM,wBAAwB;;;;;;CAM3B,CAAC;AAEX,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,cAAc,EAAE;IACtD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC,CAmBA,CAAC;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;;CAS9B,CAAC;AAEX,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAMpE,CAAC;AAEF,eAAO,MAAM,gCAAgC;;;;;;;;;;;;CAYnC,CAAC;AAEX,eAAO,MAAM,oBAAoB;;;;;CAKvB,CAAC;AAEX,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAE5E"}
1
+ {"version":3,"file":"hook-policy.d.ts","sourceRoot":"","sources":["../../src/utils/hook-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEtD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,gBAAgB,EAAE,oBAAoB,CAoC/E,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAIvD,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;CAKxB,CAAC;AAEX,eAAO,MAAM,qBAAqB;;;;;;;;;;CAUxB,CAAC;AAEX,eAAO,MAAM,wBAAwB;;;;;;CAM3B,CAAC;AAEX,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAMpE,CAAC;AAEF,eAAO,MAAM,gCAAgC;;;;;;;;;;;;CAYnC,CAAC;AAEX,eAAO,MAAM,oBAAoB;;;;;CAKvB,CAAC;AAEX,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAE5E"}
@@ -64,36 +64,6 @@ export const HOOK_ACTIVITY_THRESHOLDS = {
64
64
  refreshDormancy: 2,
65
65
  freshPromiseAge: 1,
66
66
  };
67
- export const HOOK_AGENDA_LIMITS = {
68
- light: {
69
- staleDebt: 1,
70
- mustAdvance: 2,
71
- eligibleResolve: 1,
72
- avoidFamilies: 2,
73
- },
74
- medium: {
75
- staleDebt: 2,
76
- mustAdvance: 2,
77
- eligibleResolve: 1,
78
- avoidFamilies: 3,
79
- },
80
- heavy: {
81
- staleDebt: 3,
82
- mustAdvance: 3,
83
- eligibleResolve: 2,
84
- avoidFamilies: 4,
85
- },
86
- };
87
- export const HOOK_AGENDA_LOAD_THRESHOLDS = {
88
- heavyReadyCount: 3,
89
- heavyStaleCount: 4,
90
- heavyCriticalCount: 3,
91
- heavyPressuredCount: 6,
92
- mediumReadyCount: 2,
93
- mediumStaleCount: 2,
94
- mediumCriticalCount: 1,
95
- mediumPressuredFamilies: 3,
96
- };
97
67
  export const HOOK_VISIBILITY_WINDOWS = {
98
68
  immediate: 5,
99
69
  "near-term": 5,
@@ -1 +1 @@
1
- {"version":3,"file":"hook-policy.js","sourceRoot":"","sources":["../../src/utils/hook-policy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hook-policy.js","sourceRoot":"","sources":["../../src/utils/hook-policy.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,MAAM,oBAAoB,GAAmD;IAClF,SAAS,EAAE;QACT,kBAAkB,EAAE,CAAC;QACrB,aAAa,EAAE,CAAC;QAChB,UAAU,EAAE,CAAC;QACb,YAAY,EAAE,SAAS;QACvB,WAAW,EAAE,CAAC;KACf;IACD,WAAW,EAAE;QACX,kBAAkB,EAAE,CAAC;QACrB,aAAa,EAAE,CAAC;QAChB,UAAU,EAAE,CAAC;QACb,YAAY,EAAE,SAAS;QACvB,WAAW,EAAE,CAAC;KACf;IACD,SAAS,EAAE;QACT,kBAAkB,EAAE,CAAC;QACrB,aAAa,EAAE,CAAC;QAChB,UAAU,EAAE,CAAC;QACb,YAAY,EAAE,SAAS;QACvB,WAAW,EAAE,CAAC;KACf;IACD,WAAW,EAAE;QACX,kBAAkB,EAAE,CAAC;QACrB,aAAa,EAAE,CAAC;QAChB,UAAU,EAAE,EAAE;QACd,YAAY,EAAE,QAAQ;QACtB,WAAW,EAAE,CAAC;KACf;IACD,OAAO,EAAE;QACP,kBAAkB,EAAE,CAAC;QACrB,aAAa,EAAE,CAAC;QAChB,UAAU,EAAE,EAAE;QACd,YAAY,EAAE,MAAM;QACpB,WAAW,EAAE,CAAC;KACf;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAA8B;IAC1D,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,CAAC;CACR,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,cAAc,EAAE,IAAI;IACpB,YAAY,EAAE,IAAI;IAClB,aAAa,EAAE,CAAC;IAChB,WAAW,EAAE,EAAE;CACP,CAAC;AAEX,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,iBAAiB,EAAE,CAAC;IACpB,mBAAmB,EAAE,CAAC;IACtB,qBAAqB,EAAE,EAAE;IACzB,uBAAuB,EAAE,CAAC;IAC1B,yBAAyB,EAAE,CAAC;IAC5B,uBAAuB,EAAE,EAAE;IAC3B,mBAAmB,EAAE,EAAE;IACvB,wBAAwB,EAAE,CAAC;IAC3B,uBAAuB,EAAE,EAAE;CACnB,CAAC;AAEX,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,uBAAuB,EAAE,CAAC;IAC1B,sBAAsB,EAAE,CAAC;IACzB,2BAA2B,EAAE,CAAC;IAC9B,eAAe,EAAE,CAAC;IAClB,eAAe,EAAE,CAAC;CACV,CAAC;AAEX,MAAM,CAAC,MAAM,uBAAuB,GAAqC;IACvE,SAAS,EAAE,CAAC;IACZ,WAAW,EAAE,CAAC;IACd,SAAS,EAAE,CAAC;IACZ,WAAW,EAAE,CAAC;IACd,OAAO,EAAE,EAAE;CACZ,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC9C,OAAO,EAAE;QACP,SAAS,EAAE,CAAC;QACZ,uBAAuB,EAAE,CAAC;QAC1B,kBAAkB,EAAE,CAAC;KACtB;IACD,KAAK,EAAE;QACL,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,CAAC;QAChB,gBAAgB,EAAE,CAAC;QACnB,qBAAqB,EAAE,CAAC;KACzB;CACO,CAAC;AAEX,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,cAAc,EAAE,EAAE;IAClB,kBAAkB,EAAE,EAAE;IACtB,eAAe,EAAE,CAAC;IAClB,qBAAqB,EAAE,CAAC;CAChB,CAAC;AAEX,MAAM,UAAU,2BAA2B,CAAC,MAAwB;IAClE,OAAO,uBAAuB,CAAC,MAAM,CAAC,CAAC;AACzC,CAAC"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Phase 7 — hook promotion rules.
3
+ *
4
+ * Architect produces a pool of hook seeds (every row in the initial
5
+ * pending_hooks table is conceptually a seed). Not every seed belongs in
6
+ * the live `pending_hooks.md` ledger — pushing all of them there turns the
7
+ * ledger into noise within a few chapters.
8
+ *
9
+ * A seed is *promoted* into the ledger when any of these four conditions
10
+ * holds. The consolidator (maintains pending_hooks.md post-chapter) calls
11
+ * `shouldPromoteHook` for every tracked seed, and the ledger retains only
12
+ * the hooks that cross the threshold.
13
+ *
14
+ * 1. cross_volume — the hook spans volume boundaries. It either pays off
15
+ * in a later volume, or depends on hooks declared in a later volume.
16
+ * 2. advanced_count >= 2 — the hook has been advanced/pushed in two or
17
+ * more chapters since planting, proving readers already track it.
18
+ * 3. depends_on non-empty — the hook has upstream causal dependencies
19
+ * worth tracking, even if it hasn't been touched recently.
20
+ * 4. core_hook === true — architect marked this hook as main-line
21
+ * load-bearing; it always belongs in the ledger.
22
+ */
23
+ import type { StoredHook } from "../state/memory-db.js";
24
+ export interface VolumeBoundary {
25
+ readonly name: string;
26
+ readonly startCh: number;
27
+ readonly endCh: number;
28
+ }
29
+ export interface PromotionContext {
30
+ /** Volume boundaries parsed from outline/volume_map.md, ordered by startCh. */
31
+ readonly volumeBoundaries: ReadonlyArray<VolumeBoundary>;
32
+ /** Current chapter number (0 at book creation). */
33
+ readonly currentChapter: number;
34
+ /** Hook id -> advanced count (how many chapters advanced this hook since planting). */
35
+ readonly advancedCounts: ReadonlyMap<string, number>;
36
+ /**
37
+ * Hook id -> start chapter lookup for every seed (including unpromoted ones).
38
+ * Used to tell whether a `depends_on` target is declared in a later volume.
39
+ */
40
+ readonly allSeedStartChapters: ReadonlyMap<string, number>;
41
+ }
42
+ export interface PromotionDecision {
43
+ readonly promote: boolean;
44
+ readonly reasons: ReadonlyArray<PromotionReason>;
45
+ }
46
+ export type PromotionReason = "cross_volume" | "advanced_count" | "depends_on" | "core_hook";
47
+ export declare function shouldPromoteHook(hook: StoredHook, context: PromotionContext): PromotionDecision;
48
+ /**
49
+ * Derive the default half-life (in chapters) for a hook that did not set it
50
+ * explicitly. Mirrors the prompt defaults: immediate/near-term = 10,
51
+ * mid-arc = 30, slow-burn/endgame = 80. Unknown timing falls to mid-arc.
52
+ */
53
+ export declare function defaultHalfLifeChapters(payoffTiming: StoredHook["payoffTiming"] | undefined): number;
54
+ export declare function resolveHalfLifeChapters(hook: StoredHook): number;
55
+ /**
56
+ * Escape special regex characters in a string so it can be used as a
57
+ * literal pattern inside `new RegExp(...)`.
58
+ */
59
+ export declare function escapeRegex(s: string): string;
60
+ export interface PromotionPassResult {
61
+ /** Whether any hook flipped to promoted=true. */
62
+ readonly updated: boolean;
63
+ /** The (possibly updated) hooks array. */
64
+ readonly hooks: ReadonlyArray<StoredHook>;
65
+ /** Number of hooks that flipped from non-promoted to promoted. */
66
+ readonly flippedCount: number;
67
+ }
68
+ /**
69
+ * Derive hook advancement counts from chapter_summaries.md content.
70
+ *
71
+ * Counts how many chapter-summary data rows mention each hook id in the
72
+ * hookActivity column (index 5, 0-based — "伏笔动态" / "hookActivity").
73
+ */
74
+ export declare function deriveAdvancedCountsFromSummaries(summariesRaw: string, hookIds: ReadonlyArray<string>): Map<string, number>;
75
+ /**
76
+ * Lightweight promotion pass: read hooks + chapter_summaries, check
77
+ * advancedCount >= 2, flip promoted flag. No LLM calls.
78
+ *
79
+ * Returns the result without doing any I/O — caller decides whether to
80
+ * persist.
81
+ */
82
+ export declare function rerunPromotionPass(hooks: ReadonlyArray<StoredHook>, summariesRaw: string): PromotionPassResult;
83
+ //# sourceMappingURL=hook-promotion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook-promotion.d.ts","sourceRoot":"","sources":["../../src/utils/hook-promotion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,+EAA+E;IAC/E,QAAQ,CAAC,gBAAgB,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IACzD,mDAAmD;IACnD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,uFAAuF;IACvF,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD;;;OAGG;IACH,QAAQ,CAAC,oBAAoB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;CAClD;AAED,MAAM,MAAM,eAAe,GACvB,cAAc,GACd,gBAAgB,GAChB,YAAY,GACZ,WAAW,CAAC;AAEhB,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,gBAAgB,GACxB,iBAAiB,CA0BnB;AAkFD;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,YAAY,EAAE,UAAU,CAAC,cAAc,CAAC,GAAG,SAAS,GACnD,MAAM,CAYR;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAEhE;AAMD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,MAAM,WAAW,mBAAmB;IAClC,iDAAiD;IACjD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,0CAA0C;IAC1C,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAC1C,kEAAkE;IAClE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC/C,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,GAC7B,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAuBrB;AA+BD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,EAChC,YAAY,EAAE,MAAM,GACnB,mBAAmB,CA0BrB"}