@nanonets/graft 0.24.0 → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (791) hide show
  1. package/README.md +26 -21
  2. package/dist/ask/ask.d.ts +8 -0
  3. package/dist/ask/ask.d.ts.map +1 -1
  4. package/dist/ask/ask.js +33 -12
  5. package/dist/ask/ask.js.map +1 -1
  6. package/dist/blast/render.js +1 -1
  7. package/dist/blast/render.js.map +1 -1
  8. package/dist/brand.js +1 -1
  9. package/dist/brand.js.map +1 -1
  10. package/dist/check/learning-edits.d.ts +18 -3
  11. package/dist/check/learning-edits.d.ts.map +1 -1
  12. package/dist/check/learning-edits.js +54 -10
  13. package/dist/check/learning-edits.js.map +1 -1
  14. package/dist/check/local-check.d.ts +7 -3
  15. package/dist/check/local-check.d.ts.map +1 -1
  16. package/dist/check/local-check.js +55 -11
  17. package/dist/check/local-check.js.map +1 -1
  18. package/dist/check/types.d.ts +11 -2
  19. package/dist/check/types.d.ts.map +1 -1
  20. package/dist/claude/format.d.ts +11 -7
  21. package/dist/claude/format.d.ts.map +1 -1
  22. package/dist/claude/format.js +50 -28
  23. package/dist/claude/format.js.map +1 -1
  24. package/dist/claude/hook-io.d.ts +44 -0
  25. package/dist/claude/hook-io.d.ts.map +1 -0
  26. package/dist/claude/hook-io.js +144 -0
  27. package/dist/claude/hook-io.js.map +1 -0
  28. package/dist/claude/hook-layers.d.ts +4 -2
  29. package/dist/claude/hook-layers.d.ts.map +1 -1
  30. package/dist/claude/hook-layers.js +21 -4
  31. package/dist/claude/hook-layers.js.map +1 -1
  32. package/dist/claude/hooks.d.ts +9 -32
  33. package/dist/claude/hooks.d.ts.map +1 -1
  34. package/dist/claude/hooks.js +154 -350
  35. package/dist/claude/hooks.js.map +1 -1
  36. package/dist/claude/init.d.ts.map +1 -1
  37. package/dist/claude/init.js +56 -18
  38. package/dist/claude/init.js.map +1 -1
  39. package/dist/claude/note-signals.d.ts +6 -0
  40. package/dist/claude/note-signals.d.ts.map +1 -1
  41. package/dist/claude/note-signals.js +14 -3
  42. package/dist/claude/note-signals.js.map +1 -1
  43. package/dist/claude/post-bash.d.ts +26 -0
  44. package/dist/claude/post-bash.d.ts.map +1 -0
  45. package/dist/claude/post-bash.js +191 -0
  46. package/dist/claude/post-bash.js.map +1 -0
  47. package/dist/claude/pre-bash-skills.d.ts +21 -0
  48. package/dist/claude/pre-bash-skills.d.ts.map +1 -0
  49. package/dist/claude/pre-bash-skills.js +253 -0
  50. package/dist/claude/pre-bash-skills.js.map +1 -0
  51. package/dist/claude/pre-bash.d.ts +50 -0
  52. package/dist/claude/pre-bash.d.ts.map +1 -0
  53. package/dist/claude/pre-bash.js +245 -0
  54. package/dist/claude/pre-bash.js.map +1 -0
  55. package/dist/claude/prompt-consent.d.ts +19 -0
  56. package/dist/claude/prompt-consent.d.ts.map +1 -0
  57. package/dist/claude/prompt-consent.js +14 -0
  58. package/dist/claude/prompt-consent.js.map +1 -0
  59. package/dist/claude/prompt-hook.d.ts +76 -0
  60. package/dist/claude/prompt-hook.d.ts.map +1 -0
  61. package/dist/claude/prompt-hook.js +303 -0
  62. package/dist/claude/prompt-hook.js.map +1 -0
  63. package/dist/claude/prompt-skills.d.ts +19 -0
  64. package/dist/claude/prompt-skills.d.ts.map +1 -0
  65. package/dist/claude/prompt-skills.js +305 -0
  66. package/dist/claude/prompt-skills.js.map +1 -0
  67. package/dist/claude/session-metrics.js +4 -4
  68. package/dist/claude/session-metrics.js.map +1 -1
  69. package/dist/claude/settings-merge.d.ts +10 -0
  70. package/dist/claude/settings-merge.d.ts.map +1 -1
  71. package/dist/claude/settings-merge.js +46 -17
  72. package/dist/claude/settings-merge.js.map +1 -1
  73. package/dist/claude/shim-template.d.ts.map +1 -1
  74. package/dist/claude/shim-template.js +86 -28
  75. package/dist/claude/shim-template.js.map +1 -1
  76. package/dist/claude/skill-template.d.ts +2 -0
  77. package/dist/claude/skill-template.d.ts.map +1 -1
  78. package/dist/claude/skill-template.js +53 -34
  79. package/dist/claude/skill-template.js.map +1 -1
  80. package/dist/claude/skill-use.d.ts +16 -0
  81. package/dist/claude/skill-use.d.ts.map +1 -0
  82. package/dist/claude/skill-use.js +78 -0
  83. package/dist/claude/skill-use.js.map +1 -0
  84. package/dist/claude/skills-hook-util.d.ts +25 -0
  85. package/dist/claude/skills-hook-util.d.ts.map +1 -0
  86. package/dist/claude/skills-hook-util.js +71 -0
  87. package/dist/claude/skills-hook-util.js.map +1 -0
  88. package/dist/claude/skills-wiring.d.ts +26 -0
  89. package/dist/claude/skills-wiring.d.ts.map +1 -0
  90. package/dist/claude/skills-wiring.js +110 -0
  91. package/dist/claude/skills-wiring.js.map +1 -0
  92. package/dist/claude/start-init.d.ts +13 -0
  93. package/dist/claude/start-init.d.ts.map +1 -0
  94. package/dist/claude/start-init.js +75 -0
  95. package/dist/claude/start-init.js.map +1 -0
  96. package/dist/claude/start-skills.d.ts +31 -0
  97. package/dist/claude/start-skills.d.ts.map +1 -0
  98. package/dist/claude/start-skills.js +274 -0
  99. package/dist/claude/start-skills.js.map +1 -0
  100. package/dist/claude/state.d.ts +19 -7
  101. package/dist/claude/state.d.ts.map +1 -1
  102. package/dist/claude/state.js +59 -4
  103. package/dist/claude/state.js.map +1 -1
  104. package/dist/claude/stop-skills.d.ts +23 -0
  105. package/dist/claude/stop-skills.d.ts.map +1 -0
  106. package/dist/claude/stop-skills.js +233 -0
  107. package/dist/claude/stop-skills.js.map +1 -0
  108. package/dist/claude/stop.d.ts +23 -0
  109. package/dist/claude/stop.d.ts.map +1 -0
  110. package/dist/claude/stop.js +219 -0
  111. package/dist/claude/stop.js.map +1 -0
  112. package/dist/claude/tally.d.ts +29 -41
  113. package/dist/claude/tally.d.ts.map +1 -1
  114. package/dist/claude/tally.js +111 -165
  115. package/dist/claude/tally.js.map +1 -1
  116. package/dist/claude/walls-hook.d.ts +52 -0
  117. package/dist/claude/walls-hook.d.ts.map +1 -0
  118. package/dist/claude/walls-hook.js +279 -0
  119. package/dist/claude/walls-hook.js.map +1 -0
  120. package/dist/cli-epilogue.d.ts.map +1 -1
  121. package/dist/cli-epilogue.js +24 -14
  122. package/dist/cli-epilogue.js.map +1 -1
  123. package/dist/cli-meta.js +3 -3
  124. package/dist/cli-meta.js.map +1 -1
  125. package/dist/cli-picker.d.ts +24 -0
  126. package/dist/cli-picker.d.ts.map +1 -1
  127. package/dist/cli-picker.js +44 -11
  128. package/dist/cli-picker.js.map +1 -1
  129. package/dist/cli.d.ts.map +1 -1
  130. package/dist/cli.js +475 -390
  131. package/dist/cli.js.map +1 -1
  132. package/dist/cloud/head-learnings.d.ts +13 -0
  133. package/dist/cloud/head-learnings.d.ts.map +1 -0
  134. package/dist/cloud/head-learnings.js +84 -0
  135. package/dist/cloud/head-learnings.js.map +1 -0
  136. package/dist/cloud/lookup-activity.d.ts +18 -0
  137. package/dist/cloud/lookup-activity.d.ts.map +1 -0
  138. package/dist/cloud/lookup-activity.js +56 -0
  139. package/dist/cloud/lookup-activity.js.map +1 -0
  140. package/dist/cloud/nudge.d.ts +15 -7
  141. package/dist/cloud/nudge.d.ts.map +1 -1
  142. package/dist/cloud/nudge.js +45 -33
  143. package/dist/cloud/nudge.js.map +1 -1
  144. package/dist/cloud/onboarding.d.ts +273 -0
  145. package/dist/cloud/onboarding.d.ts.map +1 -0
  146. package/dist/cloud/onboarding.js +612 -0
  147. package/dist/cloud/onboarding.js.map +1 -0
  148. package/dist/cloud/other-repos.d.ts +39 -0
  149. package/dist/cloud/other-repos.d.ts.map +1 -0
  150. package/dist/cloud/other-repos.js +137 -0
  151. package/dist/cloud/other-repos.js.map +1 -0
  152. package/dist/cloud/pair.d.ts +86 -0
  153. package/dist/cloud/pair.d.ts.map +1 -0
  154. package/dist/cloud/pair.js +270 -0
  155. package/dist/cloud/pair.js.map +1 -0
  156. package/dist/cloud/workspace-sync.d.ts +75 -11
  157. package/dist/cloud/workspace-sync.d.ts.map +1 -1
  158. package/dist/cloud/workspace-sync.js +409 -53
  159. package/dist/cloud/workspace-sync.js.map +1 -1
  160. package/dist/cloud/workspace.d.ts +95 -10
  161. package/dist/cloud/workspace.d.ts.map +1 -1
  162. package/dist/cloud/workspace.js +112 -9
  163. package/dist/cloud/workspace.js.map +1 -1
  164. package/dist/graph/native.d.ts +2 -0
  165. package/dist/graph/native.d.ts.map +1 -1
  166. package/dist/graph/native.js +29 -4
  167. package/dist/graph/native.js.map +1 -1
  168. package/dist/hosts/claude-global.d.ts +14 -0
  169. package/dist/hosts/claude-global.d.ts.map +1 -1
  170. package/dist/hosts/claude-global.js +39 -4
  171. package/dist/hosts/claude-global.js.map +1 -1
  172. package/dist/hosts/codex-hooks.d.ts +6 -0
  173. package/dist/hosts/codex-hooks.d.ts.map +1 -1
  174. package/dist/hosts/codex-hooks.js +89 -16
  175. package/dist/hosts/codex-hooks.js.map +1 -1
  176. package/dist/hosts/codex-trust.d.ts +28 -0
  177. package/dist/hosts/codex-trust.d.ts.map +1 -0
  178. package/dist/hosts/codex-trust.js +280 -0
  179. package/dist/hosts/codex-trust.js.map +1 -0
  180. package/dist/hosts/cursor-hooks.d.ts.map +1 -1
  181. package/dist/hosts/cursor-hooks.js +3 -1
  182. package/dist/hosts/cursor-hooks.js.map +1 -1
  183. package/dist/init/candidates.d.ts +60 -0
  184. package/dist/init/candidates.d.ts.map +1 -0
  185. package/dist/init/candidates.js +202 -0
  186. package/dist/init/candidates.js.map +1 -0
  187. package/dist/init/claude-call.d.ts +51 -0
  188. package/dist/init/claude-call.d.ts.map +1 -0
  189. package/dist/init/claude-call.js +199 -0
  190. package/dist/init/claude-call.js.map +1 -0
  191. package/dist/init/discover-worker.d.ts +18 -0
  192. package/dist/init/discover-worker.d.ts.map +1 -0
  193. package/dist/init/discover-worker.js +111 -0
  194. package/dist/init/discover-worker.js.map +1 -0
  195. package/dist/init/handover.d.ts +16 -0
  196. package/dist/init/handover.d.ts.map +1 -0
  197. package/dist/init/handover.js +92 -0
  198. package/dist/init/handover.js.map +1 -0
  199. package/dist/init/howtos.d.ts +20 -0
  200. package/dist/init/howtos.d.ts.map +1 -0
  201. package/dist/init/howtos.js +90 -0
  202. package/dist/init/howtos.js.map +1 -0
  203. package/dist/init/init-record.d.ts +134 -0
  204. package/dist/init/init-record.d.ts.map +1 -0
  205. package/dist/init/init-record.js +339 -0
  206. package/dist/init/init-record.js.map +1 -0
  207. package/dist/init/install-paths.d.ts +6 -0
  208. package/dist/init/install-paths.d.ts.map +1 -0
  209. package/dist/init/install-paths.js +87 -0
  210. package/dist/init/install-paths.js.map +1 -0
  211. package/dist/init/install-record.d.ts +21 -0
  212. package/dist/init/install-record.d.ts.map +1 -0
  213. package/dist/init/install-record.js +144 -0
  214. package/dist/init/install-record.js.map +1 -0
  215. package/dist/init/keep-answer.d.ts +43 -0
  216. package/dist/init/keep-answer.d.ts.map +1 -0
  217. package/dist/init/keep-answer.js +118 -0
  218. package/dist/init/keep-answer.js.map +1 -0
  219. package/dist/init/keep-gate.d.ts +30 -0
  220. package/dist/init/keep-gate.d.ts.map +1 -0
  221. package/dist/init/keep-gate.js +178 -0
  222. package/dist/init/keep-gate.js.map +1 -0
  223. package/dist/init/keep-list.d.ts +67 -0
  224. package/dist/init/keep-list.d.ts.map +1 -0
  225. package/dist/init/keep-list.js +232 -0
  226. package/dist/init/keep-list.js.map +1 -0
  227. package/dist/init/keep.d.ts +52 -0
  228. package/dist/init/keep.d.ts.map +1 -0
  229. package/dist/init/keep.js +393 -0
  230. package/dist/init/keep.js.map +1 -0
  231. package/dist/init/look-back-mine.d.ts +37 -0
  232. package/dist/init/look-back-mine.d.ts.map +1 -0
  233. package/dist/init/look-back-mine.js +215 -0
  234. package/dist/init/look-back-mine.js.map +1 -0
  235. package/dist/init/look-back.d.ts +81 -0
  236. package/dist/init/look-back.d.ts.map +1 -0
  237. package/dist/init/look-back.js +170 -0
  238. package/dist/init/look-back.js.map +1 -0
  239. package/dist/init/miners.d.ts +46 -0
  240. package/dist/init/miners.d.ts.map +1 -0
  241. package/dist/init/miners.js +141 -0
  242. package/dist/init/miners.js.map +1 -0
  243. package/dist/init/name-call.d.ts +37 -0
  244. package/dist/init/name-call.d.ts.map +1 -0
  245. package/dist/init/name-call.js +151 -0
  246. package/dist/init/name-call.js.map +1 -0
  247. package/dist/init/plain-file.d.ts +11 -0
  248. package/dist/init/plain-file.d.ts.map +1 -0
  249. package/dist/init/plain-file.js +83 -0
  250. package/dist/init/plain-file.js.map +1 -0
  251. package/dist/init/prefs.d.ts +70 -0
  252. package/dist/init/prefs.d.ts.map +1 -0
  253. package/dist/init/prefs.js +282 -0
  254. package/dist/init/prefs.js.map +1 -0
  255. package/dist/init/relay.d.ts +15 -0
  256. package/dist/init/relay.d.ts.map +1 -0
  257. package/dist/init/relay.js +15 -0
  258. package/dist/init/relay.js.map +1 -0
  259. package/dist/init/replay-runs.d.ts +121 -0
  260. package/dist/init/replay-runs.d.ts.map +1 -0
  261. package/dist/init/replay-runs.js +457 -0
  262. package/dist/init/replay-runs.js.map +1 -0
  263. package/dist/init/replay-tamper.d.ts +18 -0
  264. package/dist/init/replay-tamper.d.ts.map +1 -0
  265. package/dist/init/replay-tamper.js +87 -0
  266. package/dist/init/replay-tamper.js.map +1 -0
  267. package/dist/init/review-screen.d.ts +74 -0
  268. package/dist/init/review-screen.d.ts.map +1 -0
  269. package/dist/init/review-screen.js +258 -0
  270. package/dist/init/review-screen.js.map +1 -0
  271. package/dist/init/review-tty.d.ts +29 -0
  272. package/dist/init/review-tty.d.ts.map +1 -0
  273. package/dist/init/review-tty.js +218 -0
  274. package/dist/init/review-tty.js.map +1 -0
  275. package/dist/init/review.d.ts +12 -0
  276. package/dist/init/review.d.ts.map +1 -0
  277. package/dist/init/review.js +12 -0
  278. package/dist/init/review.js.map +1 -0
  279. package/dist/init/run.d.ts +87 -0
  280. package/dist/init/run.d.ts.map +1 -0
  281. package/dist/init/run.js +347 -0
  282. package/dist/init/run.js.map +1 -0
  283. package/dist/init/sessions.d.ts +63 -0
  284. package/dist/init/sessions.d.ts.map +1 -0
  285. package/dist/init/sessions.js +377 -0
  286. package/dist/init/sessions.js.map +1 -0
  287. package/dist/init/transcript.d.ts +81 -0
  288. package/dist/init/transcript.d.ts.map +1 -0
  289. package/dist/init/transcript.js +216 -0
  290. package/dist/init/transcript.js.map +1 -0
  291. package/dist/init/types.d.ts +139 -0
  292. package/dist/init/types.d.ts.map +1 -0
  293. package/dist/init/types.js +2 -0
  294. package/dist/init/types.js.map +1 -0
  295. package/dist/mcp/brains.d.ts +72 -0
  296. package/dist/mcp/brains.d.ts.map +1 -0
  297. package/dist/mcp/brains.js +220 -0
  298. package/dist/mcp/brains.js.map +1 -0
  299. package/dist/mcp/server.d.ts +3 -1
  300. package/dist/mcp/server.d.ts.map +1 -1
  301. package/dist/mcp/server.js +40 -5
  302. package/dist/mcp/server.js.map +1 -1
  303. package/dist/mcp/tools.d.ts.map +1 -1
  304. package/dist/mcp/tools.js +7 -2
  305. package/dist/mcp/tools.js.map +1 -1
  306. package/dist/notes/cold-start.d.ts +5 -184
  307. package/dist/notes/cold-start.d.ts.map +1 -1
  308. package/dist/notes/cold-start.js +5 -575
  309. package/dist/notes/cold-start.js.map +1 -1
  310. package/dist/notes/edit-overlap.d.ts.map +1 -1
  311. package/dist/notes/edit-overlap.js +4 -1
  312. package/dist/notes/edit-overlap.js.map +1 -1
  313. package/dist/notes/every-repo.d.ts +18 -0
  314. package/dist/notes/every-repo.d.ts.map +1 -0
  315. package/dist/notes/every-repo.js +86 -0
  316. package/dist/notes/every-repo.js.map +1 -0
  317. package/dist/notes/guardrails.d.ts +8 -0
  318. package/dist/notes/guardrails.d.ts.map +1 -0
  319. package/dist/notes/guardrails.js +38 -0
  320. package/dist/notes/guardrails.js.map +1 -0
  321. package/dist/notes/lesson-index.d.ts +13 -0
  322. package/dist/notes/lesson-index.d.ts.map +1 -0
  323. package/dist/notes/lesson-index.js +135 -0
  324. package/dist/notes/lesson-index.js.map +1 -0
  325. package/dist/notes/linked-learnings.d.ts +8 -0
  326. package/dist/notes/linked-learnings.d.ts.map +1 -0
  327. package/dist/notes/linked-learnings.js +113 -0
  328. package/dist/notes/linked-learnings.js.map +1 -0
  329. package/dist/notes/notes.d.ts +8 -4
  330. package/dist/notes/notes.d.ts.map +1 -1
  331. package/dist/notes/notes.js +9 -7
  332. package/dist/notes/notes.js.map +1 -1
  333. package/dist/notes/pr-reviews.d.ts +4 -0
  334. package/dist/notes/pr-reviews.d.ts.map +1 -1
  335. package/dist/notes/pr-reviews.js +6 -5
  336. package/dist/notes/pr-reviews.js.map +1 -1
  337. package/dist/notes/replace.d.ts +14 -0
  338. package/dist/notes/replace.d.ts.map +1 -0
  339. package/dist/notes/replace.js +38 -0
  340. package/dist/notes/replace.js.map +1 -0
  341. package/dist/notes/repo-notes-dir.d.ts +2 -0
  342. package/dist/notes/repo-notes-dir.d.ts.map +1 -0
  343. package/dist/notes/repo-notes-dir.js +16 -0
  344. package/dist/notes/repo-notes-dir.js.map +1 -0
  345. package/dist/notes/repo-trail.d.ts +1 -1
  346. package/dist/notes/repo-trail.d.ts.map +1 -1
  347. package/dist/notes/repo-trail.js +24 -4
  348. package/dist/notes/repo-trail.js.map +1 -1
  349. package/dist/search/grep.d.ts.map +1 -1
  350. package/dist/search/grep.js +4 -2
  351. package/dist/search/grep.js.map +1 -1
  352. package/dist/search/user-regexp.d.ts +26 -0
  353. package/dist/search/user-regexp.d.ts.map +1 -0
  354. package/dist/search/user-regexp.js +150 -0
  355. package/dist/search/user-regexp.js.map +1 -0
  356. package/dist/skills/anchors-cli.d.ts +38 -0
  357. package/dist/skills/anchors-cli.d.ts.map +1 -0
  358. package/dist/skills/anchors-cli.js +279 -0
  359. package/dist/skills/anchors-cli.js.map +1 -0
  360. package/dist/skills/anchors-git.d.ts +29 -0
  361. package/dist/skills/anchors-git.d.ts.map +1 -0
  362. package/dist/skills/anchors-git.js +241 -0
  363. package/dist/skills/anchors-git.js.map +1 -0
  364. package/dist/skills/anchors-wide.d.ts +25 -0
  365. package/dist/skills/anchors-wide.d.ts.map +1 -0
  366. package/dist/skills/anchors-wide.js +481 -0
  367. package/dist/skills/anchors-wide.js.map +1 -0
  368. package/dist/skills/anchors.d.ts +32 -0
  369. package/dist/skills/anchors.d.ts.map +1 -0
  370. package/dist/skills/anchors.js +485 -0
  371. package/dist/skills/anchors.js.map +1 -0
  372. package/dist/skills/check-result.d.ts +26 -0
  373. package/dist/skills/check-result.d.ts.map +1 -0
  374. package/dist/skills/check-result.js +46 -0
  375. package/dist/skills/check-result.js.map +1 -0
  376. package/dist/skills/cli-skills-1b.d.ts +17 -0
  377. package/dist/skills/cli-skills-1b.d.ts.map +1 -0
  378. package/dist/skills/cli-skills-1b.js +166 -0
  379. package/dist/skills/cli-skills-1b.js.map +1 -0
  380. package/dist/skills/cli-skills-2.d.ts +35 -0
  381. package/dist/skills/cli-skills-2.d.ts.map +1 -0
  382. package/dist/skills/cli-skills-2.js +129 -0
  383. package/dist/skills/cli-skills-2.js.map +1 -0
  384. package/dist/skills/cli-skills-report-1b.d.ts +49 -0
  385. package/dist/skills/cli-skills-report-1b.d.ts.map +1 -0
  386. package/dist/skills/cli-skills-report-1b.js +191 -0
  387. package/dist/skills/cli-skills-report-1b.js.map +1 -0
  388. package/dist/skills/cli-skills-report.d.ts +86 -0
  389. package/dist/skills/cli-skills-report.d.ts.map +1 -0
  390. package/dist/skills/cli-skills-report.js +121 -0
  391. package/dist/skills/cli-skills-report.js.map +1 -0
  392. package/dist/skills/cli-skills.d.ts +30 -0
  393. package/dist/skills/cli-skills.d.ts.map +1 -0
  394. package/dist/skills/cli-skills.js +379 -0
  395. package/dist/skills/cli-skills.js.map +1 -0
  396. package/dist/skills/codex-sandbox.d.ts +6 -0
  397. package/dist/skills/codex-sandbox.d.ts.map +1 -0
  398. package/dist/skills/codex-sandbox.js +55 -0
  399. package/dist/skills/codex-sandbox.js.map +1 -0
  400. package/dist/skills/compile-split.d.ts +57 -0
  401. package/dist/skills/compile-split.d.ts.map +1 -0
  402. package/dist/skills/compile-split.js +550 -0
  403. package/dist/skills/compile-split.js.map +1 -0
  404. package/dist/skills/compile-version.d.ts +37 -0
  405. package/dist/skills/compile-version.d.ts.map +1 -0
  406. package/dist/skills/compile-version.js +56 -0
  407. package/dist/skills/compile-version.js.map +1 -0
  408. package/dist/skills/compile-waits.d.ts +12 -0
  409. package/dist/skills/compile-waits.d.ts.map +1 -0
  410. package/dist/skills/compile-waits.js +52 -0
  411. package/dist/skills/compile-waits.js.map +1 -0
  412. package/dist/skills/compile-words.d.ts +85 -0
  413. package/dist/skills/compile-words.d.ts.map +1 -0
  414. package/dist/skills/compile-words.js +445 -0
  415. package/dist/skills/compile-words.js.map +1 -0
  416. package/dist/skills/compile.d.ts +42 -0
  417. package/dist/skills/compile.d.ts.map +1 -0
  418. package/dist/skills/compile.js +505 -0
  419. package/dist/skills/compile.js.map +1 -0
  420. package/dist/skills/credit-facts.d.ts +8 -0
  421. package/dist/skills/credit-facts.d.ts.map +1 -0
  422. package/dist/skills/credit-facts.js +32 -0
  423. package/dist/skills/credit-facts.js.map +1 -0
  424. package/dist/skills/credit.d.ts +86 -0
  425. package/dist/skills/credit.d.ts.map +1 -0
  426. package/dist/skills/credit.js +259 -0
  427. package/dist/skills/credit.js.map +1 -0
  428. package/dist/skills/directive-words.d.ts +11 -0
  429. package/dist/skills/directive-words.d.ts.map +1 -0
  430. package/dist/skills/directive-words.js +33 -0
  431. package/dist/skills/directive-words.js.map +1 -0
  432. package/dist/skills/fidelity.d.ts +42 -0
  433. package/dist/skills/fidelity.d.ts.map +1 -0
  434. package/dist/skills/fidelity.js +138 -0
  435. package/dist/skills/fidelity.js.map +1 -0
  436. package/dist/skills/fold-gated.d.ts +3 -0
  437. package/dist/skills/fold-gated.d.ts.map +1 -0
  438. package/dist/skills/fold-gated.js +78 -0
  439. package/dist/skills/fold-gated.js.map +1 -0
  440. package/dist/skills/fold.d.ts +87 -0
  441. package/dist/skills/fold.d.ts.map +1 -0
  442. package/dist/skills/fold.js +348 -0
  443. package/dist/skills/fold.js.map +1 -0
  444. package/dist/skills/follow-learnings.d.ts +128 -0
  445. package/dist/skills/follow-learnings.d.ts.map +1 -0
  446. package/dist/skills/follow-learnings.js +278 -0
  447. package/dist/skills/follow-learnings.js.map +1 -0
  448. package/dist/skills/forget-notice.d.ts +44 -0
  449. package/dist/skills/forget-notice.d.ts.map +1 -0
  450. package/dist/skills/forget-notice.js +131 -0
  451. package/dist/skills/forget-notice.js.map +1 -0
  452. package/dist/skills/front-version.d.ts +12 -0
  453. package/dist/skills/front-version.d.ts.map +1 -0
  454. package/dist/skills/front-version.js +87 -0
  455. package/dist/skills/front-version.js.map +1 -0
  456. package/dist/skills/host-facts.d.ts +51 -0
  457. package/dist/skills/host-facts.d.ts.map +1 -0
  458. package/dist/skills/host-facts.js +134 -0
  459. package/dist/skills/host-facts.js.map +1 -0
  460. package/dist/skills/learning-steps.d.ts +43 -0
  461. package/dist/skills/learning-steps.d.ts.map +1 -0
  462. package/dist/skills/learning-steps.js +294 -0
  463. package/dist/skills/learning-steps.js.map +1 -0
  464. package/dist/skills/ledger.d.ts +43 -0
  465. package/dist/skills/ledger.d.ts.map +1 -0
  466. package/dist/skills/ledger.js +336 -0
  467. package/dist/skills/ledger.js.map +1 -0
  468. package/dist/skills/lesson-gate.d.ts +25 -0
  469. package/dist/skills/lesson-gate.d.ts.map +1 -0
  470. package/dist/skills/lesson-gate.js +316 -0
  471. package/dist/skills/lesson-gate.js.map +1 -0
  472. package/dist/skills/lessons.d.ts +60 -0
  473. package/dist/skills/lessons.d.ts.map +1 -0
  474. package/dist/skills/lessons.js +396 -0
  475. package/dist/skills/lessons.js.map +1 -0
  476. package/dist/skills/offer-answers.d.ts +20 -0
  477. package/dist/skills/offer-answers.d.ts.map +1 -0
  478. package/dist/skills/offer-answers.js +51 -0
  479. package/dist/skills/offer-answers.js.map +1 -0
  480. package/dist/skills/offer-drift.d.ts +35 -0
  481. package/dist/skills/offer-drift.d.ts.map +1 -0
  482. package/dist/skills/offer-drift.js +98 -0
  483. package/dist/skills/offer-drift.js.map +1 -0
  484. package/dist/skills/offer-lesson.d.ts +31 -0
  485. package/dist/skills/offer-lesson.d.ts.map +1 -0
  486. package/dist/skills/offer-lesson.js +123 -0
  487. package/dist/skills/offer-lesson.js.map +1 -0
  488. package/dist/skills/offer-lines.d.ts +40 -0
  489. package/dist/skills/offer-lines.d.ts.map +1 -0
  490. package/dist/skills/offer-lines.js +80 -0
  491. package/dist/skills/offer-lines.js.map +1 -0
  492. package/dist/skills/offer-moment.d.ts +102 -0
  493. package/dist/skills/offer-moment.d.ts.map +1 -0
  494. package/dist/skills/offer-moment.js +260 -0
  495. package/dist/skills/offer-moment.js.map +1 -0
  496. package/dist/skills/offer-repair.d.ts +36 -0
  497. package/dist/skills/offer-repair.d.ts.map +1 -0
  498. package/dist/skills/offer-repair.js +212 -0
  499. package/dist/skills/offer-repair.js.map +1 -0
  500. package/dist/skills/offer-retire.d.ts +53 -0
  501. package/dist/skills/offer-retire.d.ts.map +1 -0
  502. package/dist/skills/offer-retire.js +149 -0
  503. package/dist/skills/offer-retire.js.map +1 -0
  504. package/dist/skills/offer-update.d.ts +54 -0
  505. package/dist/skills/offer-update.d.ts.map +1 -0
  506. package/dist/skills/offer-update.js +115 -0
  507. package/dist/skills/offer-update.js.map +1 -0
  508. package/dist/skills/offer-words-1b.d.ts +32 -0
  509. package/dist/skills/offer-words-1b.d.ts.map +1 -0
  510. package/dist/skills/offer-words-1b.js +80 -0
  511. package/dist/skills/offer-words-1b.js.map +1 -0
  512. package/dist/skills/offer-words-2.d.ts +123 -0
  513. package/dist/skills/offer-words-2.d.ts.map +1 -0
  514. package/dist/skills/offer-words-2.js +194 -0
  515. package/dist/skills/offer-words-2.js.map +1 -0
  516. package/dist/skills/offer-words.d.ts +65 -0
  517. package/dist/skills/offer-words.d.ts.map +1 -0
  518. package/dist/skills/offer-words.js +205 -0
  519. package/dist/skills/offer-words.js.map +1 -0
  520. package/dist/skills/offers.d.ts +66 -0
  521. package/dist/skills/offers.d.ts.map +1 -0
  522. package/dist/skills/offers.js +284 -0
  523. package/dist/skills/offers.js.map +1 -0
  524. package/dist/skills/own-folder.d.ts +9 -0
  525. package/dist/skills/own-folder.d.ts.map +1 -0
  526. package/dist/skills/own-folder.js +36 -0
  527. package/dist/skills/own-folder.js.map +1 -0
  528. package/dist/skills/person.d.ts +34 -0
  529. package/dist/skills/person.d.ts.map +1 -0
  530. package/dist/skills/person.js +102 -0
  531. package/dist/skills/person.js.map +1 -0
  532. package/dist/skills/probe-clean.d.ts +9 -0
  533. package/dist/skills/probe-clean.d.ts.map +1 -0
  534. package/dist/skills/probe-clean.js +48 -0
  535. package/dist/skills/probe-clean.js.map +1 -0
  536. package/dist/skills/probes.d.ts +26 -0
  537. package/dist/skills/probes.d.ts.map +1 -0
  538. package/dist/skills/probes.js +225 -0
  539. package/dist/skills/probes.js.map +1 -0
  540. package/dist/skills/recall.d.ts +119 -0
  541. package/dist/skills/recall.d.ts.map +1 -0
  542. package/dist/skills/recall.js +370 -0
  543. package/dist/skills/recall.js.map +1 -0
  544. package/dist/skills/receipts.d.ts +44 -0
  545. package/dist/skills/receipts.d.ts.map +1 -0
  546. package/dist/skills/receipts.js +223 -0
  547. package/dist/skills/receipts.js.map +1 -0
  548. package/dist/skills/run-checkout.d.ts +4 -0
  549. package/dist/skills/run-checkout.d.ts.map +1 -0
  550. package/dist/skills/run-checkout.js +37 -0
  551. package/dist/skills/run-checkout.js.map +1 -0
  552. package/dist/skills/runblock.d.ts +47 -0
  553. package/dist/skills/runblock.d.ts.map +1 -0
  554. package/dist/skills/runblock.js +227 -0
  555. package/dist/skills/runblock.js.map +1 -0
  556. package/dist/skills/save-gate.d.ts +64 -0
  557. package/dist/skills/save-gate.d.ts.map +1 -0
  558. package/dist/skills/save-gate.js +354 -0
  559. package/dist/skills/save-gate.js.map +1 -0
  560. package/dist/skills/save-parse.d.ts +42 -0
  561. package/dist/skills/save-parse.d.ts.map +1 -0
  562. package/dist/skills/save-parse.js +172 -0
  563. package/dist/skills/save-parse.js.map +1 -0
  564. package/dist/skills/save-store.d.ts +12 -0
  565. package/dist/skills/save-store.d.ts.map +1 -0
  566. package/dist/skills/save-store.js +22 -0
  567. package/dist/skills/save-store.js.map +1 -0
  568. package/dist/skills/save-verify.d.ts +59 -0
  569. package/dist/skills/save-verify.d.ts.map +1 -0
  570. package/dist/skills/save-verify.js +390 -0
  571. package/dist/skills/save-verify.js.map +1 -0
  572. package/dist/skills/settings.d.ts +48 -0
  573. package/dist/skills/settings.d.ts.map +1 -0
  574. package/dist/skills/settings.js +155 -0
  575. package/dist/skills/settings.js.map +1 -0
  576. package/dist/skills/skill-diff.d.ts +40 -0
  577. package/dist/skills/skill-diff.d.ts.map +1 -0
  578. package/dist/skills/skill-diff.js +191 -0
  579. package/dist/skills/skill-diff.js.map +1 -0
  580. package/dist/skills/skill-file.d.ts +24 -0
  581. package/dist/skills/skill-file.d.ts.map +1 -0
  582. package/dist/skills/skill-file.js +97 -0
  583. package/dist/skills/skill-file.js.map +1 -0
  584. package/dist/skills/skill-rebuild.d.ts +27 -0
  585. package/dist/skills/skill-rebuild.d.ts.map +1 -0
  586. package/dist/skills/skill-rebuild.js +85 -0
  587. package/dist/skills/skill-rebuild.js.map +1 -0
  588. package/dist/skills/skillmd.d.ts +17 -0
  589. package/dist/skills/skillmd.d.ts.map +1 -0
  590. package/dist/skills/skillmd.js +219 -0
  591. package/dist/skills/skillmd.js.map +1 -0
  592. package/dist/skills/skills.d.ts +28 -8
  593. package/dist/skills/skills.d.ts.map +1 -1
  594. package/dist/skills/skills.js +106 -53
  595. package/dist/skills/skills.js.map +1 -1
  596. package/dist/skills/staleness.d.ts +27 -0
  597. package/dist/skills/staleness.d.ts.map +1 -0
  598. package/dist/skills/staleness.js +178 -0
  599. package/dist/skills/staleness.js.map +1 -0
  600. package/dist/skills/state.d.ts +36 -0
  601. package/dist/skills/state.d.ts.map +1 -0
  602. package/dist/skills/state.js +259 -0
  603. package/dist/skills/state.js.map +1 -0
  604. package/dist/skills/store-fs.d.ts +77 -0
  605. package/dist/skills/store-fs.d.ts.map +1 -0
  606. package/dist/skills/store-fs.js +194 -0
  607. package/dist/skills/store-fs.js.map +1 -0
  608. package/dist/skills/store-held.d.ts +44 -0
  609. package/dist/skills/store-held.d.ts.map +1 -0
  610. package/dist/skills/store-held.js +147 -0
  611. package/dist/skills/store-held.js.map +1 -0
  612. package/dist/skills/store.d.ts +73 -0
  613. package/dist/skills/store.d.ts.map +1 -0
  614. package/dist/skills/store.js +279 -0
  615. package/dist/skills/store.js.map +1 -0
  616. package/dist/skills/types.d.ts +8 -0
  617. package/dist/skills/types.d.ts.map +1 -1
  618. package/dist/skills/update-gate.d.ts +36 -0
  619. package/dist/skills/update-gate.d.ts.map +1 -0
  620. package/dist/skills/update-gate.js +357 -0
  621. package/dist/skills/update-gate.js.map +1 -0
  622. package/dist/skills/update-plan.d.ts +40 -0
  623. package/dist/skills/update-plan.d.ts.map +1 -0
  624. package/dist/skills/update-plan.js +196 -0
  625. package/dist/skills/update-plan.js.map +1 -0
  626. package/dist/skills/validate.d.ts +11 -0
  627. package/dist/skills/validate.d.ts.map +1 -0
  628. package/dist/skills/validate.js +112 -0
  629. package/dist/skills/validate.js.map +1 -0
  630. package/dist/skills/value-line.d.ts +94 -0
  631. package/dist/skills/value-line.d.ts.map +1 -0
  632. package/dist/skills/value-line.js +355 -0
  633. package/dist/skills/value-line.js.map +1 -0
  634. package/dist/skills/versions-fs.d.ts +45 -0
  635. package/dist/skills/versions-fs.d.ts.map +1 -0
  636. package/dist/skills/versions-fs.js +234 -0
  637. package/dist/skills/versions-fs.js.map +1 -0
  638. package/dist/skills/versions.d.ts +56 -0
  639. package/dist/skills/versions.d.ts.map +1 -0
  640. package/dist/skills/versions.js +351 -0
  641. package/dist/skills/versions.js.map +1 -0
  642. package/dist/telemetry/contract.d.ts +15 -1
  643. package/dist/telemetry/contract.d.ts.map +1 -1
  644. package/dist/telemetry/contract.js +80 -11
  645. package/dist/telemetry/contract.js.map +1 -1
  646. package/dist/telemetry/gate.js +4 -4
  647. package/dist/telemetry/gate.js.map +1 -1
  648. package/dist/telemetry/index.d.ts +1 -1
  649. package/dist/telemetry/index.d.ts.map +1 -1
  650. package/dist/telemetry/index.js +1 -1
  651. package/dist/telemetry/index.js.map +1 -1
  652. package/dist/telemetry/notice.js +5 -5
  653. package/dist/telemetry/notice.js.map +1 -1
  654. package/dist/telemetry/queue.d.ts.map +1 -1
  655. package/dist/telemetry/queue.js +7 -7
  656. package/dist/telemetry/queue.js.map +1 -1
  657. package/dist/telemetry/track.d.ts.map +1 -1
  658. package/dist/telemetry/track.js +4 -3
  659. package/dist/telemetry/track.js.map +1 -1
  660. package/dist/trace/checks.d.ts +63 -0
  661. package/dist/trace/checks.d.ts.map +1 -0
  662. package/dist/trace/checks.js +495 -0
  663. package/dist/trace/checks.js.map +1 -0
  664. package/dist/trace/claude.d.ts +124 -0
  665. package/dist/trace/claude.d.ts.map +1 -0
  666. package/dist/trace/claude.js +303 -0
  667. package/dist/trace/claude.js.map +1 -0
  668. package/dist/trace/codex-exec.d.ts +22 -0
  669. package/dist/trace/codex-exec.d.ts.map +1 -0
  670. package/dist/trace/codex-exec.js +129 -0
  671. package/dist/trace/codex-exec.js.map +1 -0
  672. package/dist/trace/codex-meta.d.ts +23 -0
  673. package/dist/trace/codex-meta.d.ts.map +1 -0
  674. package/dist/trace/codex-meta.js +112 -0
  675. package/dist/trace/codex-meta.js.map +1 -0
  676. package/dist/trace/codex.d.ts +33 -0
  677. package/dist/trace/codex.d.ts.map +1 -0
  678. package/dist/trace/codex.js +485 -0
  679. package/dist/trace/codex.js.map +1 -0
  680. package/dist/trace/cursor.d.ts +16 -0
  681. package/dist/trace/cursor.d.ts.map +1 -0
  682. package/dist/trace/cursor.js +133 -0
  683. package/dist/trace/cursor.js.map +1 -0
  684. package/dist/trace/dialect.d.ts +43 -0
  685. package/dist/trace/dialect.d.ts.map +1 -0
  686. package/dist/trace/dialect.js +95 -0
  687. package/dist/trace/dialect.js.map +1 -0
  688. package/dist/trace/epochs.d.ts +10 -0
  689. package/dist/trace/epochs.d.ts.map +1 -0
  690. package/dist/trace/epochs.js +16 -0
  691. package/dist/trace/epochs.js.map +1 -0
  692. package/dist/trace/failure.d.ts +15 -0
  693. package/dist/trace/failure.d.ts.map +1 -0
  694. package/dist/trace/failure.js +69 -0
  695. package/dist/trace/failure.js.map +1 -0
  696. package/dist/trace/gate-file.d.ts +71 -0
  697. package/dist/trace/gate-file.d.ts.map +1 -0
  698. package/dist/trace/gate-file.js +329 -0
  699. package/dist/trace/gate-file.js.map +1 -0
  700. package/dist/trace/guard-fast.d.ts +22 -0
  701. package/dist/trace/guard-fast.d.ts.map +1 -0
  702. package/dist/trace/guard-fast.js +213 -0
  703. package/dist/trace/guard-fast.js.map +1 -0
  704. package/dist/trace/housekeeping.d.ts +5 -0
  705. package/dist/trace/housekeeping.d.ts.map +1 -0
  706. package/dist/trace/housekeeping.js +93 -0
  707. package/dist/trace/housekeeping.js.map +1 -0
  708. package/dist/trace/jobs.d.ts +52 -0
  709. package/dist/trace/jobs.d.ts.map +1 -0
  710. package/dist/trace/jobs.js +182 -0
  711. package/dist/trace/jobs.js.map +1 -0
  712. package/dist/trace/known-repo.d.ts +3 -0
  713. package/dist/trace/known-repo.d.ts.map +1 -0
  714. package/dist/trace/known-repo.js +55 -0
  715. package/dist/trace/known-repo.js.map +1 -0
  716. package/dist/trace/pool.d.ts +40 -0
  717. package/dist/trace/pool.d.ts.map +1 -0
  718. package/dist/trace/pool.js +154 -0
  719. package/dist/trace/pool.js.map +1 -0
  720. package/dist/trace/repairs.d.ts +27 -0
  721. package/dist/trace/repairs.d.ts.map +1 -0
  722. package/dist/trace/repairs.js +303 -0
  723. package/dist/trace/repairs.js.map +1 -0
  724. package/dist/trace/run-calls.d.ts +82 -0
  725. package/dist/trace/run-calls.d.ts.map +1 -0
  726. package/dist/trace/run-calls.js +331 -0
  727. package/dist/trace/run-calls.js.map +1 -0
  728. package/dist/trace/run-join.d.ts +20 -0
  729. package/dist/trace/run-join.d.ts.map +1 -0
  730. package/dist/trace/run-join.js +99 -0
  731. package/dist/trace/run-join.js.map +1 -0
  732. package/dist/trace/run-sheets.d.ts +26 -0
  733. package/dist/trace/run-sheets.d.ts.map +1 -0
  734. package/dist/trace/run-sheets.js +145 -0
  735. package/dist/trace/run-sheets.js.map +1 -0
  736. package/dist/trace/run-turns.d.ts +24 -0
  737. package/dist/trace/run-turns.d.ts.map +1 -0
  738. package/dist/trace/run-turns.js +67 -0
  739. package/dist/trace/run-turns.js.map +1 -0
  740. package/dist/trace/run-verdict.d.ts +24 -0
  741. package/dist/trace/run-verdict.d.ts.map +1 -0
  742. package/dist/trace/run-verdict.js +176 -0
  743. package/dist/trace/run-verdict.js.map +1 -0
  744. package/dist/trace/runs.d.ts +54 -0
  745. package/dist/trace/runs.d.ts.map +1 -0
  746. package/dist/trace/runs.js +501 -0
  747. package/dist/trace/runs.js.map +1 -0
  748. package/dist/trace/skill-session.d.ts +64 -0
  749. package/dist/trace/skill-session.d.ts.map +1 -0
  750. package/dist/trace/skill-session.js +232 -0
  751. package/dist/trace/skill-session.js.map +1 -0
  752. package/dist/trace/tamper.d.ts +12 -0
  753. package/dist/trace/tamper.d.ts.map +1 -0
  754. package/dist/trace/tamper.js +405 -0
  755. package/dist/trace/tamper.js.map +1 -0
  756. package/dist/trace/typed.d.ts +30 -0
  757. package/dist/trace/typed.d.ts.map +1 -0
  758. package/dist/trace/typed.js +132 -0
  759. package/dist/trace/typed.js.map +1 -0
  760. package/dist/trace/wall-state.d.ts +86 -0
  761. package/dist/trace/wall-state.d.ts.map +1 -0
  762. package/dist/trace/wall-state.js +279 -0
  763. package/dist/trace/wall-state.js.map +1 -0
  764. package/dist/trace/walls.d.ts +40 -0
  765. package/dist/trace/walls.d.ts.map +1 -0
  766. package/dist/trace/walls.js +318 -0
  767. package/dist/trace/walls.js.map +1 -0
  768. package/dist/upkeep-run.d.ts.map +1 -1
  769. package/dist/upkeep-run.js +2 -23
  770. package/dist/upkeep-run.js.map +1 -1
  771. package/dist/upkeep.d.ts.map +1 -1
  772. package/dist/upkeep.js +2 -3
  773. package/dist/upkeep.js.map +1 -1
  774. package/dist/util/private-fs.d.ts +6 -0
  775. package/dist/util/private-fs.d.ts.map +1 -1
  776. package/dist/util/private-fs.js +9 -1
  777. package/dist/util/private-fs.js.map +1 -1
  778. package/dist/util/state.d.ts.map +1 -1
  779. package/dist/util/state.js +17 -3
  780. package/dist/util/state.js.map +1 -1
  781. package/dist/vendor/tree-sitter-swift/LICENSE +21 -0
  782. package/dist/vendor/tree-sitter-swift/node-types.json +30694 -0
  783. package/dist/vendor/tree-sitter-swift/prebuilds/darwin-arm64/tree-sitter-swift.node +0 -0
  784. package/dist/vendor/tree-sitter-swift/prebuilds/darwin-x64/tree-sitter-swift.node +0 -0
  785. package/dist/vendor/tree-sitter-swift/prebuilds/linux-arm64/tree-sitter-swift.node +0 -0
  786. package/dist/vendor/tree-sitter-swift/prebuilds/linux-x64/tree-sitter-swift.node +0 -0
  787. package/dist/vendor/tree-sitter-swift/prebuilds/win32-arm64/tree-sitter-swift.node +0 -0
  788. package/dist/vendor/tree-sitter-swift/prebuilds/win32-x64/tree-sitter-swift.node +0 -0
  789. package/package.json +6 -3
  790. package/scripts/stamp-telemetry-key.mjs +8 -5
  791. package/scripts/vendor-grammars.mjs +35 -0
@@ -0,0 +1,98 @@
1
+ import { ranAs } from './ledger.js';
2
+ import { fillParams } from './params.js';
3
+ import { normalizeCommand } from '../trace/shell.js';
4
+ import { getSkillState } from './state.js';
5
+ import { listAllPersonal, readSkill } from './store.js';
6
+ import { driftOfferKey, newOfferId, offerBudget } from './offers.js';
7
+ import { checkLine } from './offer-words.js';
8
+ import { driftLines } from './offer-words-2.js';
9
+ import { versionNumber } from './offer-update.js';
10
+ /** The values a fresh compile filled its params with (this run's). */
11
+ const freshValues = (c) => Object.fromEntries(c.params.filter((p) => p.seen[0] !== undefined).map((p) => [p.name, p.seen[0]]));
12
+ /** 4.8 step 2: the skill steps the run skipped and the fresh steps the skill doesn't have, in order. */
13
+ export function wentAnotherWay(base, fresh) {
14
+ const filled = fresh.steps.map((s) => fillParams(s.cmd, freshValues(fresh)));
15
+ const isCheck = (cmd) => !!base.check && normalizeCommand(cmd) === normalizeCommand(base.check);
16
+ const skipped = base.steps.filter((b) => !isCheck(b.cmd) && !filled.some((f) => ranAs(b.cmd, f, {}))).map((b) => ({ n: b.n, cmd: b.cmd }));
17
+ const ran = filled.filter((f) => !base.steps.some((b) => ranAs(b.cmd, f, {})) && !(base.check && ranAs(base.check, f, {})));
18
+ return { skipped, ran };
19
+ }
20
+ /** Applies here: this repo's skill, or one for every repo. */
21
+ const appliesTo = (applies, repoKey) => applies === 'every repo' || (!!applies && applies.toLowerCase() === repoKey.toLowerCase());
22
+ /** 4.8: moment 6's conditions 1 to 3. */
23
+ export function driftOfferDue(i) {
24
+ const { run, verdict, st, ctx, channel } = i;
25
+ const env = ctx.env;
26
+ if (!ctx.learn)
27
+ return { due: false, why: 'learn' };
28
+ if (st.pendingOffer)
29
+ return { due: false, why: 'pending' };
30
+ if (channel !== 'stop' && channel !== 'notice')
31
+ return { due: false, why: 'channel' };
32
+ // 1. A run no block drove (a needs-fix skill is never injected), of a job, checked.
33
+ if (run.skillId)
34
+ return { due: false, why: 'skill-run' };
35
+ if (!run.job)
36
+ return { due: false, why: 'job' };
37
+ if (!verdict.checked || verdict.checkIndex === null)
38
+ return { due: false, why: 'not-checked' };
39
+ const hit = run.calls[verdict.checkIndex]?.check;
40
+ if (!hit || !hit.passed)
41
+ return { due: false, why: 'not-checked' };
42
+ const sheet = i.sheet;
43
+ if (!sheet || sheet.id !== run.id)
44
+ return { due: false, why: 'no-sheet' };
45
+ const repo = run.repoKey || ctx.repoKey;
46
+ // A personal skill (rule 13) for this job, needs-fix, that applies here; by name, so the pick is stable.
47
+ const refs = listAllPersonal(env).filter((r) => r.scope === 'personal').sort((a, b) => a.name.localeCompare(b.name));
48
+ let last = 'no-skill';
49
+ for (const ref of refs) {
50
+ const state = getSkillState(ref.id, env);
51
+ if (!state || state.status !== 'needs-fix' || state.scope !== 'personal')
52
+ continue;
53
+ const skill = readSkill(ref, state);
54
+ if (!skill || skill.meta.trail !== ref.id || skill.meta.job !== run.job || !appliesTo(skill.meta.applies ?? ref.applies, repo))
55
+ continue;
56
+ const version = versionNumber(skill.meta.version);
57
+ if (version === null) {
58
+ last = 'version';
59
+ continue;
60
+ }
61
+ // 3. The budget, keyed per version (P8).
62
+ const key = driftOfferKey(ref.id, version);
63
+ const budget = offerBudget({ repoKey: repo, key, sessionOfferUsed: st.offerUsed, now: ctx.now, env });
64
+ if (!budget.ok) {
65
+ last = `budget:${budget.why}`;
66
+ continue;
67
+ }
68
+ // 2. The run compiles to 2 or more steps (D70) and went another way (P15).
69
+ if (!i.plan)
70
+ return { due: false, why: 'no-plan' };
71
+ const r = i.plan.replan(ref.id, run.id, 'replace', env, { now: ctx.now });
72
+ if (!r || !r.fresh) {
73
+ last = 'replan';
74
+ continue;
75
+ }
76
+ if (r.next.steps.length < 2) {
77
+ last = 'one-step';
78
+ continue;
79
+ }
80
+ const way = wentAnotherWay(r.base, r.fresh);
81
+ if (!way.skipped.length && !way.ran.length) {
82
+ last = 'same-way';
83
+ continue;
84
+ }
85
+ const lines = driftLines({ check: checkLine(hit), name: ref.name, job: run.job, steps: r.next.steps.length, ...way, handEdited: r.handEdited });
86
+ return {
87
+ due: true,
88
+ offer: {
89
+ offerId: newOfferId(), moment: 'drift', runId: run.id, name: ref.name, key, lines, channel,
90
+ shownAt: ctx.now.toISOString(), showMe: false, yes: null, typedAfter: [], repo,
91
+ fold: { op: 'replace', skillId: ref.id, baseHash: r.baseHash, proposalSha: r.proposalSha, handEdited: r.handEdited, version },
92
+ retire: { skillId: ref.id, name: ref.name },
93
+ },
94
+ };
95
+ }
96
+ return { due: false, why: last };
97
+ }
98
+ //# sourceMappingURL=offer-drift.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offer-drift.js","sourceRoot":"","sources":["../../src/skills/offer-drift.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { GateCtx } from '../trace/skill-session.js';
2
+ import type { SkillSessionState } from '../trace/types.js';
3
+ import type { OfferDue, OfferInput } from './offer-moment.js';
4
+ export { offerLinesOf, correctionLesson, correctionLines, typedLineAt, type OfferLinesIn } from './offer-lines.js';
5
+ /** A skill with this many lessons gets no more offers (4.14 step 4). */
6
+ export declare const MAX_LESSONS = 10;
7
+ /**
8
+ * 4.14 step 3: the first call after the correction that worked, is a step-kind call and matches no step of the
9
+ * skill, as the lesson holds it: params put back by `lessonText`, paths relativized here. Null (the phrase alone)
10
+ * when there is none, or it carries a secret, is on the never-save list, is gated, teaches a way around a check
11
+ * (D104) or runs past 300 characters. `id` is the call's, also when its command isn't used.
12
+ */
13
+ export declare function fixCommand(st: SkillSessionState, offset: number, steps: string[], params: Record<string, string>, where: {
14
+ checkout: string;
15
+ home: string;
16
+ }): {
17
+ id: string | null;
18
+ cmd: string | null;
19
+ };
20
+ type Why = 'learn' | 'pending' | 'no-watch' | 'no-line' | 'end' | 'skill' | 'lessons' | 'phrase' | 'refused' | `budget:${string}`;
21
+ /**
22
+ * Moment 4 (4.14). Called first by offerDue at Stop, inside the session lock. Due: the offer to hold as
23
+ * `pendingOffer`, its lines null (rebuilt by offerLinesOf). Writes nothing.
24
+ */
25
+ export declare function lessonOfferDue(i: OfferInput & {
26
+ ctx: OfferInput['ctx'] & Pick<GateCtx, 'transcriptPath'>;
27
+ }): OfferDue | {
28
+ due: false;
29
+ why: Why;
30
+ };
31
+ //# sourceMappingURL=offer-lesson.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offer-lesson.d.ts","sourceRoot":"","sources":["../../src/skills/offer-lesson.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAyB,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAUlF,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE9D,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEnH,wEAAwE;AACxE,eAAO,MAAM,WAAW,KAAK,CAAC;AAc9B;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/G,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAStF;AAED,KAAK,GAAG,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,KAAK,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,MAAM,EAAE,CAAC;AAElI;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,UAAU,GAAG;IAAE,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAA;CAAE,GAAG,QAAQ,GAAG;IAAE,GAAG,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,GAAG,CAAA;CAAE,CAkDhJ"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Moment 4 (design 4.14, J07): the person corrected a skill Trail brought
3
+ * in, within 2 typed prompts of its use, in a form Trail can read as a
4
+ * lesson ("no, it didn't push the tag"). At the Stop of that turn Trail
5
+ * offers to add the lesson to the skill, with its exact text in line 2.
6
+ *
7
+ * The prompt hook only records the correction's sha (`creditWindow`); the
8
+ * offer needs the fold to have found the person's own typed line with that
9
+ * sha (`corrected.offset`, `noteCorrectionLine`), so the hook's payload alone
10
+ * never makes an offer and the agent's text can't fill it (R27). The lesson
11
+ * starts from the person's words, read back by that pointer; the fix command
12
+ * is the first new step that worked after the correction, held to the rules
13
+ * every skill step and every repair delta meets (R27, D104).
14
+ *
15
+ * Nothing typed is written: the pending offer keeps the pointer, the fix
16
+ * command and the lesson's sha, and its lines are rebuilt by `offerLinesOf`.
17
+ */
18
+ import { homedir } from 'node:os';
19
+ import { useFor } from '../trace/dialect.js';
20
+ import { commandKind, relativizePaths, stepMatches } from '../trace/shell.js';
21
+ import { secretReason } from '../notes/secrets.js';
22
+ import { gatedKind } from './risk.js';
23
+ import { neverSave } from './never-save.js';
24
+ import { riskyCommand } from './risk-delta.js';
25
+ import { listAllPersonal, readSkill } from './store.js';
26
+ import { readLessons, lessonRefused, lessonSha, lessonText, correctionPhrase } from './lessons.js';
27
+ import { newOfferId, offerBudget } from './offers.js';
28
+ import { typedLineAt } from './offer-lines.js';
29
+ export { offerLinesOf, correctionLesson, correctionLines, typedLineAt } from './offer-lines.js';
30
+ /** A skill with this many lessons gets no more offers (4.14 step 4). */
31
+ export const MAX_LESSONS = 10;
32
+ /** A fix command longer than this is not used: the lesson is the phrase alone (4.14 step 3). */
33
+ const FIX_MAX = 300;
34
+ /** The calls the session still holds that came after `offset` in the transcript, in transcript order. */
35
+ function callsAfter(st, offset) {
36
+ const all = st.runs.flatMap((r) => (Array.isArray(r.calls) ? r.calls : []));
37
+ return all.filter((c) => Number.isInteger(c.src?.use) && c.src.use > offset).sort((a, b) => a.src.use - b.src.use);
38
+ }
39
+ /** A call that ran and worked, with its whole command: a result read, not failed, not in the background. */
40
+ const worked = (c) => !c.failed && typeof c.cmd === 'string' && !c.truncated && !c.secret && c.bg !== true
41
+ && (c.src?.result != null || c.fromMark === true);
42
+ /**
43
+ * 4.14 step 3: the first call after the correction that worked, is a step-kind call and matches no step of the
44
+ * skill, as the lesson holds it: params put back by `lessonText`, paths relativized here. Null (the phrase alone)
45
+ * when there is none, or it carries a secret, is on the never-save list, is gated, teaches a way around a check
46
+ * (D104) or runs past 300 characters. `id` is the call's, also when its command isn't used.
47
+ */
48
+ export function fixCommand(st, offset, steps, params, where) {
49
+ for (const c of callsAfter(st, offset)) {
50
+ if (!worked(c) || c.kind !== 'step' || commandKind(c.cmd) !== 'step')
51
+ continue;
52
+ if (steps.some((s) => stepMatches(s, c.cmd, params)))
53
+ continue;
54
+ const cmd = relativizePaths(c.cmd, where.checkout, where.home).trim();
55
+ const bad = !cmd || cmd.length > FIX_MAX || secretReason(cmd) !== null || neverSave(cmd) !== null || gatedKind(cmd) !== null || riskyCommand(cmd);
56
+ return { id: c.id, cmd: bad ? null : cmd };
57
+ }
58
+ return { id: null, cmd: null };
59
+ }
60
+ /**
61
+ * Moment 4 (4.14). Called first by offerDue at Stop, inside the session lock. Due: the offer to hold as
62
+ * `pendingOffer`, its lines null (rebuilt by offerLinesOf). Writes nothing.
63
+ */
64
+ export function lessonOfferDue(i) {
65
+ const { run, verdict, st, ctx, channel } = i;
66
+ const env = ctx.env;
67
+ if (!ctx.learn)
68
+ return { due: false, why: 'learn' };
69
+ if (st.pendingOffer)
70
+ return { due: false, why: 'pending' };
71
+ const watch = st.lessonWatch;
72
+ if (!watch)
73
+ return { due: false, why: 'no-watch' };
74
+ const credit = st.credit.find((c) => c.useId === watch.useId && c.skillId === watch.skillId && c.corrected?.sha === watch.typedSha);
75
+ const offset = credit?.corrected?.offset;
76
+ // R27: only once the fold met the person's own typed line with the hook's sha.
77
+ if (!credit || typeof offset !== 'number' || !ctx.transcriptPath)
78
+ return { due: false, why: 'no-line' };
79
+ if (verdict.end === 'failure' || verdict.end === 'question')
80
+ return { due: false, why: 'end' };
81
+ const ref = listAllPersonal(env).find((r) => r.id === watch.skillId);
82
+ const skill = ref ? readSkill(ref) : null;
83
+ if (!ref || !skill)
84
+ return { due: false, why: 'skill' };
85
+ if (readLessons(ref.dir).length >= MAX_LESSONS)
86
+ return { due: false, why: 'lessons' };
87
+ const typed = typedLineAt(ctx.transcriptPath, offset, watch.typedSha, env, useFor(st.host, st));
88
+ const phrase = typed === null ? null : correctionPhrase(typed);
89
+ if (!phrase)
90
+ return { due: false, why: 'phrase' };
91
+ const repo = run.repoKey || ctx.repoKey;
92
+ const key = `${watch.skillId}|correction`;
93
+ // P18, R40: a pending offer this same correction withdrew frees the session's slot for this one offer only.
94
+ const freed = st.withdrewFor?.typedSha === watch.typedSha;
95
+ const budget = offerBudget({ repoKey: repo, key, sessionOfferUsed: st.offerUsed && !freed, now: ctx.now, env });
96
+ if (!budget.ok)
97
+ return { due: false, why: `budget:${budget.why}` };
98
+ const inj = st.injected.find((x) => x.injId === credit.injId);
99
+ const params = inj && inj.params && typeof inj.params === 'object' ? inj.params : {};
100
+ const fix = fixCommand(st, offset, skill.steps.map((s) => s.cmd), params, { checkout: ctx.checkout, home: env.HOME || homedir() });
101
+ let text = lessonText(phrase, fix.cmd, params);
102
+ const alone = lessonText(phrase, null, params);
103
+ if (!text || !alone)
104
+ return { due: false, why: 'phrase' };
105
+ // The fix as the lesson holds it (params put back), so offerLinesOf rebuilds this very text from the typed line.
106
+ let kept = fix.cmd && text.startsWith(`${alone}: `) ? text.slice(alone.length + 2) : null;
107
+ if (kept !== null && lessonText(phrase, kept, {}) !== text)
108
+ kept = null;
109
+ if (kept === null || lessonRefused(text)) {
110
+ kept = null;
111
+ text = alone;
112
+ }
113
+ // D109: the final text is held to the run block's rule too (a skip-the-ask lesson is never offered).
114
+ if (lessonRefused(text))
115
+ return { due: false, why: 'refused' };
116
+ const offer = {
117
+ offerId: newOfferId(), moment: 'correction', runId: credit.runId ?? run.id, name: skill.name, key, lines: null, channel,
118
+ shownAt: channel === 'post-tool' ? null : ctx.now.toISOString(), showMe: false, yes: null, typedAfter: [], repo,
119
+ correction: { skillId: watch.skillId, useId: watch.useId, typed: { offset, sha: watch.typedSha }, fixCallId: fix.id, lessonSha: lessonSha(text), fix: kept },
120
+ };
121
+ return { due: true, offer };
122
+ }
123
+ //# sourceMappingURL=offer-lesson.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offer-lesson.js","sourceRoot":"","sources":["../../src/skills/offer-lesson.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * The two lines of a pending offer (design 1.4, P17, R12). A moment-2 or
3
+ * moment-3 offer keeps them in the session file. A moment-4 offer can't: its
4
+ * first line quotes the person's correction and its lesson starts from their
5
+ * words, and no typed text is ever written to disk (0 rule 6). So it keeps a
6
+ * pointer to the typed line (offset and sha), the fix command and the
7
+ * lesson's sha, and its lines are rebuilt here from the transcript each time
8
+ * they are read. When the line is gone, isn't the person's, or no longer
9
+ * gives the same lesson, there are no lines: the offer is dropped, never
10
+ * shown or answered with other words.
11
+ *
12
+ * Every reader of `PendingOffer.lines` goes through `offerLinesOf` (R12).
13
+ * Re-exported from `offer-lesson.ts`, where the design names it.
14
+ */
15
+ import type { PendingOffer } from '../trace/types.js';
16
+ import { type DialectUse } from '../trace/dialect.js';
17
+ /** What a reader needs of an offer to know its lines. */
18
+ export type OfferLinesIn = Pick<PendingOffer, 'lines'> & Partial<Pick<PendingOffer, 'moment' | 'name' | 'correction'>>;
19
+ /**
20
+ * The person's typed line at `offset`, when its words still hash to `sha`; null otherwise. D133: read through the
21
+ * host's dialect when `use` is given (a Codex line is the person's only by its keyed hash, P30); Claude's reader without.
22
+ */
23
+ export declare function typedLineAt(transcriptPath: string, offset: number, sha: string, env?: NodeJS.ProcessEnv, use?: DialectUse): string | null;
24
+ /**
25
+ * Moment 4's lesson and the words it quotes, from the correction line and the fix command (4.14 steps 2 and 5):
26
+ * null when the line can't be read back, has no correction phrase, or gives a lesson whose sha isn't `lessonSha`.
27
+ */
28
+ export declare function correctionLesson(c: NonNullable<PendingOffer['correction']>, transcriptPath: string | null, env?: NodeJS.ProcessEnv, use?: DialectUse): {
29
+ said: string;
30
+ text: string;
31
+ kind: 'lesson' | 'guardrail';
32
+ } | null;
33
+ /** Moment 4's 2 lines (J07): `You corrected {skill}: {said}.` and the question with the lesson's exact text. */
34
+ export declare function correctionLines(skill: string, said: string, text: string): [string, string];
35
+ /**
36
+ * The two lines of any pending offer: `o.lines`, or for a 'correction' rebuilt from the transcript (a correction's
37
+ * stored lines are never read). Null when the correction line is gone or its sha changed, or the offer has none.
38
+ */
39
+ export declare function offerLinesOf(o: OfferLinesIn | null | undefined, transcriptPath: string | null, env?: NodeJS.ProcessEnv, use?: DialectUse): [string, string] | null;
40
+ //# sourceMappingURL=offer-lines.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offer-lines.d.ts","sourceRoot":"","sources":["../../src/skills/offer-lines.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AASnE,yDAAyD;AACzD,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC;AAEvH;;;GAGG;AACH,wBAAgB,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,EAAE,GAAG,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAiBtJ;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,EAAE,GAAG,CAAC,EAAE,UAAU,GAChK;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,GAAG,WAAW,CAAA;CAAE,GAAG,IAAI,CAQpE;AAED,gHAAgH;AAChH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAM3F;AAID;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,EAAE,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAY/K"}
@@ -0,0 +1,80 @@
1
+ import { isTypedByPerson, typedText } from '../trace/claude.js';
2
+ import { typedOnLine } from '../trace/dialect.js';
3
+ import { typedSha } from '../trace/typed.js';
4
+ import { flatLine } from '../notes/flatten.js';
5
+ import { lineAt } from './receipts.js';
6
+ import { correctionPhrase, LESSON_COPY, lessonRefused, lessonSha, lessonText } from './lessons.js';
7
+ const LINE_MAX = 400;
8
+ const fill = (t, v) => t.replace(/\{(\w+)\}/g, (m, k) => v[k] ?? m);
9
+ /**
10
+ * The person's typed line at `offset`, when its words still hash to `sha`; null otherwise. D133: read through the
11
+ * host's dialect when `use` is given (a Codex line is the person's only by its keyed hash, P30); Claude's reader without.
12
+ */
13
+ export function typedLineAt(transcriptPath, offset, sha, env = process.env, use) {
14
+ if (!Number.isInteger(offset) || offset < 0 || typeof sha !== 'string')
15
+ return null;
16
+ const line = lineAt(transcriptPath, offset);
17
+ if (line === null)
18
+ return null;
19
+ let entry;
20
+ try {
21
+ entry = JSON.parse(line);
22
+ }
23
+ catch {
24
+ return null;
25
+ }
26
+ if (use && use.dialect.host !== 'claude') {
27
+ const said = typedOnLine(entry, use, env);
28
+ return said && typedSha(said) === sha ? said : null;
29
+ }
30
+ if (!isTypedByPerson(entry, env))
31
+ return null;
32
+ const text = typedText(entry, env);
33
+ return typedSha(text) === sha ? text : null;
34
+ }
35
+ /**
36
+ * Moment 4's lesson and the words it quotes, from the correction line and the fix command (4.14 steps 2 and 5):
37
+ * null when the line can't be read back, has no correction phrase, or gives a lesson whose sha isn't `lessonSha`.
38
+ */
39
+ export function correctionLesson(c, transcriptPath, env = process.env, use) {
40
+ if (!transcriptPath || !c || !c.typed)
41
+ return null;
42
+ const typed = typedLineAt(transcriptPath, c.typed.offset, c.typed.sha, env, use);
43
+ const phrase = typed === null ? null : correctionPhrase(typed);
44
+ if (!phrase)
45
+ return null;
46
+ const text = lessonText(phrase, typeof c.fix === 'string' && c.fix ? c.fix : null, {});
47
+ if (!text || lessonRefused(text) || lessonSha(text) !== c.lessonSha)
48
+ return null;
49
+ return { said: phrase.said, text, kind: phrase.kind };
50
+ }
51
+ /** Moment 4's 2 lines (J07): `You corrected {skill}: {said}.` and the question with the lesson's exact text. */
52
+ export function correctionLines(skill, said, text) {
53
+ return [
54
+ flatLine(fill(LESSON_COPY.offerFirst, { skill: flatLine(skill, 60), said: flatLine(said, 120) }), LINE_MAX),
55
+ // D114 (3), as moment 3's line 2 (b7 review): the quotes inside the quoted lesson become single ones.
56
+ flatLine(fill(LESSON_COPY.offerSecond, { lesson: flatLine(text, 200).replace(/["\u201c\u201d]/g, "'") }), LINE_MAX),
57
+ ];
58
+ }
59
+ const pair = (v) => Array.isArray(v) && v.length === 2 && typeof v[0] === 'string' && typeof v[1] === 'string' && !!v[0] && !!v[1];
60
+ /**
61
+ * The two lines of any pending offer: `o.lines`, or for a 'correction' rebuilt from the transcript (a correction's
62
+ * stored lines are never read). Null when the correction line is gone or its sha changed, or the offer has none.
63
+ */
64
+ export function offerLinesOf(o, transcriptPath, env = process.env, use) {
65
+ try {
66
+ if (!o)
67
+ return null;
68
+ if (o.moment === 'correction') {
69
+ if (!o.correction)
70
+ return null;
71
+ const l = correctionLesson(o.correction, transcriptPath, env, use);
72
+ return l ? correctionLines(String(o.name ?? ''), l.said, l.text) : null;
73
+ }
74
+ return pair(o.lines) ? o.lines : null;
75
+ }
76
+ catch {
77
+ return null;
78
+ }
79
+ }
80
+ //# sourceMappingURL=offer-lines.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offer-lines.js","sourceRoot":"","sources":["../../src/skills/offer-lines.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ import type { CheckedVerdict, FoldResult } from '../trace/runs.js';
2
+ import type { GateCtx } from '../trace/skill-session.js';
3
+ import type { OfferChannel, PendingOffer, RunSheet, RunState, SkillSessionState, TypedAnswer } from '../trace/types.js';
4
+ import type { CompiledSkill, HookOut } from './types.js';
5
+ import { compileRun } from './compile.js';
6
+ import { type OfferLinesIn } from './offer-lines.js';
7
+ import type { FoldPlanner } from './offer-update.js';
8
+ import type { Fired, Settled } from './credit.js';
9
+ import { type DialectUse } from '../trace/dialect.js';
10
+ /**
11
+ * What a yes to an offer agrees to: the skill's steps (the calls each was copied from, and its text with the
12
+ * skill's own name taken out) and its check. The gate saves only a skill with the same sha (4.9 step 5): steps run
13
+ * after the offer, or a run sheet changed since, are not what the person said yes to.
14
+ */
15
+ export declare function skillSha(c: CompiledSkill): string;
16
+ /**
17
+ * The repo an offer is for: its `repo` (1b), else from its key, '<repoKey>|job:<job>' or '<repoKey>|wall:<cls>|<program>'.
18
+ * A skill-keyed offer ('<skillId>|correction', phase 2's update, drift and retire keys) names no repo: '' without
19
+ * `repo` (D126).
20
+ */
21
+ export declare function offerRepo(o: Pick<PendingOffer, 'key'> & {
22
+ repo?: unknown;
23
+ }): string;
24
+ export interface Captured {
25
+ /** Return this now (a directive for yes, show me or no); null: go on to 3.2 step 5. */
26
+ out: HookOut | null;
27
+ /** Going on: context to add first (the agent said the offer and the person moved on). */
28
+ extra?: string;
29
+ /** For telemetry `skill_answer`: the class, or why the offer was dropped unanswered; null with no offer, or for a
30
+ * second yes after the first (ignored, D70: nothing to send). */
31
+ answer: TypedAnswer | 'stale' | 'not-shown' | null;
32
+ /** Phase 2 (4.9): the prompt hook retired the skill on this answer (for telemetry `skill_changed{retire}`). */
33
+ changed?: 'retire';
34
+ }
35
+ /**
36
+ * 3.2 step 4, on the session state inside the prompt hook's lock. Only the first typed prompt after the offer
37
+ * answers it, or the second after one "show me". A `yes` sets `pendingOffer.yes` from this prompt's own words
38
+ * (hashed), which the gate later matches against the person's line in the transcript.
39
+ */
40
+ export declare function captureAnswer(st: SkillSessionState, typed: string, env?: NodeJS.ProcessEnv, now?: Date, o?: {
41
+ transcriptPath?: string | null;
42
+ }): Captured;
43
+ /**
44
+ * 3.2 step 6.4: the person asked to keep a run. Spends the session's offer, withdraws a pending one, and records
45
+ * the request with this prompt's words hashed. When this hook's catch-up already folded the typed line (Claude Code
46
+ * wrote it before the hook ran), its offset is taken from `fold.typed` now: the fold only fills `typed` for a line
47
+ * it meets after the request exists. `skill` is the skill compiled for this ask (3.2 step 6.3); its `skillSha` is
48
+ * kept (D73): the gate keeps only that skill, so steps run or written into the sheet after the ask are not what was
49
+ * asked for.
50
+ */
51
+ export declare function noteSaveRequest(st: SkillSessionState, fold: Pick<FoldResult, 'typed'> | null, req: {
52
+ runId: string;
53
+ typed: string;
54
+ scope: NonNullable<SkillSessionState['saveRequest']>['scope'];
55
+ skill: CompiledSkill;
56
+ }, env?: NodeJS.ProcessEnv, now?: Date): void;
57
+ export interface OfferInput {
58
+ run: RunState;
59
+ /** checkedSuccess(run, lastAssistant) (Stop) or with lastAssistant null (post-tool, 3.4). */
60
+ verdict: CheckedVerdict;
61
+ /** The run's sheet as written for this verdict. */
62
+ sheet: RunSheet | null;
63
+ st: SkillSessionState;
64
+ /** 1b: Stop passes its whole GateCtx; moment 4 reads the transcript (no transcript: no moment 4). */
65
+ ctx: Pick<GateCtx, 'learn' | 'checkout' | 'repoKey' | 'env' | 'now'> & Partial<Pick<GateCtx, 'transcriptPath'>>;
66
+ channel: OfferChannel;
67
+ /** Phase 2 (moments 5 and 6): c2's foldInputFor and replan (update-gate.ts); without them neither is due. */
68
+ plan?: FoldPlanner;
69
+ /** Phase 2: the uses this Stop's settle flushed (moment 5 needs this run's, checked). */
70
+ settled?: Settled[];
71
+ /** Phase 2: the firings this Stop's settle wrote (the retire proposal needs a not-followed one). */
72
+ fired?: Fired[];
73
+ }
74
+ export type OfferDue = {
75
+ due: true;
76
+ offer: PendingOffer;
77
+ } | {
78
+ due: false;
79
+ why: 'learn' | 'pending' | 'job' | 'skill' | 'not-checked' | 'family' | 'no-repo' | 'covered' | 'not-repeated' | 'no-sheet' | 'compile' | 'one-step' | 'unknown-repo' | `budget:${string}`;
80
+ };
81
+ /** Phase 2 (4.10, P18): the order offerDue tries the moments in; the first that is due is the offer. */
82
+ export declare const OFFER_ORDER: readonly ["correction", "drift", "update", "repaired", "repeated", "retire"];
83
+ /**
84
+ * 1b (4.13, 4.14, 3.5 step 6), phase 2 (4.10, P18): moment 4, 6, 5, 3, 2, then the retire proposal, the first that is
85
+ * due. All but moment 2 are Stop's only (stop and notice channels, R13); none due, the answer is moment 2's. Writes
86
+ * nothing: the caller records it shown.
87
+ */
88
+ export declare function offerDue(i: OfferInput): OfferDue;
89
+ /** What compile makes of an offer's run, exactly as the save gate's compile of its yes will (moments 2 and 3, R58). */
90
+ export declare function compileOffered(sheet: RunSheet, st: SkillSessionState, ctx: OfferInput['ctx']): ReturnType<typeof compileRun>;
91
+ /**
92
+ * Moment 2: 4.12 conditions 1 to 6, in order. Due: the offer to hold as `pendingOffer` (shown now for `stop` and
93
+ * `notice`; `shownAt` null for `post-tool`, set when the reply carries it). Writes nothing.
94
+ */
95
+ export declare function repeatedOfferDue(i: OfferInput): OfferDue;
96
+ /**
97
+ * For g7's Stop (3.5 steps 6 and 7): the agent's reply carried the offer, as its last line. A reply that adds a
98
+ * question of its own after the offer, or leaves it out, did not: the offer is recorded not shown and dropped, so
99
+ * the person's next yes can't be taken as a yes to the skill.
100
+ */
101
+ export declare function offerEndsReply(o: OfferLinesIn, reply: string | null, transcriptPath?: string | null, use?: DialectUse): boolean;
102
+ //# sourceMappingURL=offer-moment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offer-moment.d.ts","sourceRoot":"","sources":["../../src/skills/offer-moment.ts"],"names":[],"mappings":"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"}