@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,149 @@
1
+ /**
2
+ * The retire proposal (phase 2 design 4.9, spec 13, P12, P13, P46, R1, R12,
3
+ * R27): a skill Trail keeps bringing in whose steps mostly don't run is
4
+ * offered for retirement once, ever.
5
+ *
6
+ * Firings: each settled job or name cue block is one, followed when a step of
7
+ * the skill ran (`noteFiring`, called at the credit flush beside 1b's cue
8
+ * misses, under the state lock; a busy lock drops it). The last 10 are kept;
9
+ * a version change resets them (c2).
10
+ *
11
+ * The offer is due at the Stop whose settle wrote a not-followed firing, when
12
+ * the turn ended done, the skill is personal and active or candidate, it has
13
+ * 5 or more firings and half or fewer were followed. It needs no checked
14
+ * success: it is about a block the agent didn't use.
15
+ *
16
+ * A "retire" answer is the one write the prompt hook makes on an answer
17
+ * (P12): `retireSkill` moves the folder to `.retired/` (restorable, nothing
18
+ * deleted) with ledger reason `retire-offer`, and only after the agent's
19
+ * reply before the answer ended with the offer's line 2 (D72, R1).
20
+ */
21
+ import { statSync } from 'node:fs';
22
+ import { updateSkillState, getSkillState } from './state.js';
23
+ import { forgetSkill, listAllPersonal } from './store.js';
24
+ import { HOOK_WAIT_MS } from './store-fs.js';
25
+ import { newOfferId, offerBudget, readOffers, retireOfferKey } from './offers.js';
26
+ import { retireLines } from './offer-words-2.js';
27
+ import { offerLinesOf } from './offer-lines.js';
28
+ import { endsWithLine } from './offer-words.js';
29
+ import { replyBefore } from './save-verify.js';
30
+ import { typedSha } from '../trace/typed.js';
31
+ export const FIRINGS_KEPT = 10;
32
+ /** The fewest firings before the proposal (spec 13: "5 or more firings"). */
33
+ export const RETIRE_MIN_FIRINGS = 5;
34
+ const validFiring = (f) => !!f && typeof f === 'object' && typeof f.at === 'string' && typeof f.followed === 'boolean';
35
+ /** 4.9: one firing, last 10 kept. False when nothing was written (no state, retired, or the state lock was busy). */
36
+ export function noteFiring(skillId, followed, env, now = new Date()) {
37
+ let wrote = false;
38
+ const next = updateSkillState(skillId, (s) => {
39
+ if (!s || s.status === 'retired')
40
+ return s;
41
+ const kept = Array.isArray(s.firings) ? s.firings.filter(validFiring) : [];
42
+ s.firings = [...kept, { at: now.toISOString(), followed: followed === true }].slice(-FIRINGS_KEPT);
43
+ wrote = true;
44
+ return s;
45
+ }, env);
46
+ return wrote && next !== undefined;
47
+ }
48
+ /** The firings a state holds, and how many were followed. */
49
+ export function firingsOf(s) {
50
+ const f = Array.isArray(s?.firings) ? s.firings.filter(validFiring) : [];
51
+ return { n: f.length, followed: f.filter((x) => x.followed).length };
52
+ }
53
+ /**
54
+ * 4.9's write: 1a's forget with ledger reason `retire-offer`, waiting at most a hook's 200 ms for the store. Busy:
55
+ * nothing moved. `skillId`, when given, must be the folder's own skill (a folder since replaced is not retired).
56
+ */
57
+ export function retireSkill(name, reason, env, now = new Date(), skillId) {
58
+ if (skillId !== undefined && !listAllPersonal(env).some((r) => r.name === name && r.id === skillId))
59
+ return { ok: false, reason: 'unknown' };
60
+ try {
61
+ return forgetSkill(name, env, now, { reason, waitMs: HOOK_WAIT_MS });
62
+ }
63
+ catch {
64
+ return { ok: false, reason: 'busy' };
65
+ }
66
+ }
67
+ /**
68
+ * 4.9: due at the Stop whose settle wrote a not-followed firing (`fired`, from settleCredit's `fired` callback), the
69
+ * turn ended done (R12), the skill personal and active or candidate, 5 or more firings with half or fewer followed,
70
+ * and the budget's key `<skillId>|retire` (once per skill, ever). Writes nothing.
71
+ */
72
+ export function retireOfferDue(i, fired) {
73
+ const { verdict, st, ctx, channel } = i;
74
+ const env = ctx.env;
75
+ if (!ctx.learn)
76
+ return { due: false, why: 'learn' };
77
+ if (st.pendingOffer)
78
+ return { due: false, why: 'pending' };
79
+ if (channel !== 'stop' && channel !== 'notice')
80
+ return { due: false, why: 'channel' };
81
+ if (verdict.end === 'failure' || verdict.end === 'question')
82
+ return { due: false, why: 'end' };
83
+ let last = 'no-firing';
84
+ for (const f of fired.filter((x) => x && x.followed === false)) {
85
+ const ref = listAllPersonal(env).find((r) => r.id === f.skillId);
86
+ const s = ref ? getSkillState(f.skillId, env) : null;
87
+ if (!ref || !s || s.scope !== 'personal') {
88
+ last = 'skill';
89
+ continue;
90
+ }
91
+ if (s.status !== 'active' && s.status !== 'candidate') {
92
+ last = 'status';
93
+ continue;
94
+ }
95
+ const { n, followed } = firingsOf(s);
96
+ if (n < RETIRE_MIN_FIRINGS) {
97
+ last = 'few';
98
+ continue;
99
+ }
100
+ if (followed * 2 > n) {
101
+ last = 'followed';
102
+ continue;
103
+ }
104
+ const repo = i.run.repoKey || ctx.repoKey;
105
+ const key = retireOfferKey(f.skillId);
106
+ // P13: once per skill, ever. Shown once is enough, answered or not (1a's second chance is for moments 2 and 3).
107
+ if (readOffers(env).some((l) => l.key === key && l.event === 'shown')) {
108
+ last = 'once';
109
+ continue;
110
+ }
111
+ const budget = offerBudget({ repoKey: repo, key, sessionOfferUsed: st.offerUsed, now: ctx.now, env });
112
+ if (!budget.ok) {
113
+ last = `budget:${budget.why}`;
114
+ continue;
115
+ }
116
+ return {
117
+ due: true,
118
+ offer: {
119
+ offerId: newOfferId(), moment: 'retire', runId: f.runId ?? i.run.id, name: ref.name, key, lines: retireLines({ name: ref.name, fired: n, followed }),
120
+ channel, shownAt: ctx.now.toISOString(), showMe: false, yes: null, typedAfter: [], repo, retire: { skillId: f.skillId, name: ref.name },
121
+ },
122
+ };
123
+ }
124
+ return { due: false, why: last };
125
+ }
126
+ /**
127
+ * D72, R1: the agent's reply right before the person's answer ended with the offer's own line 2, so a "retire" typed
128
+ * to some other question (or after an agent that never showed the offer) moves nothing. The person's line is found by
129
+ * its sha where the fold already met it; else (Claude Code writes the line just after the hook starts) the reply is the
130
+ * transcript's last one. An offer shown as Trail's own notice needs no reply: the person read Trail's words.
131
+ */
132
+ export function replyEndedWithOffer(po, typed, transcriptPath, env = process.env, use) {
133
+ try {
134
+ if (po.channel === 'notice')
135
+ return true;
136
+ const line2 = offerLinesOf(po, transcriptPath, env, use)?.[1];
137
+ if (!line2 || !transcriptPath)
138
+ return false;
139
+ const sha = typedSha(typed);
140
+ const entry = po.typedAfter.find((t) => t.sha === sha && Number.isInteger(t.offset) && t.offset >= 0);
141
+ const offset = entry ? entry.offset : statSync(transcriptPath).size;
142
+ const reply = replyBefore(transcriptPath, offset, env, use);
143
+ return reply !== null && endsWithLine(reply, line2);
144
+ }
145
+ catch {
146
+ return false;
147
+ }
148
+ }
149
+ //# sourceMappingURL=offer-retire.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offer-retire.js","sourceRoot":"","sources":["../../src/skills/offer-retire.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Moment 5 (phase 2 design 4.7, P1, P5, P8, P9, P29, R3, R14, rule 13): a
3
+ * skill's block drove a run that checked out and did one thing differently,
4
+ * so Trail offers once to change the skill to match: update a step done
5
+ * another way, extend it with at most 2 steps a lesson or the use before
6
+ * backs, or split the steps two uses ran into a skill of their own.
7
+ *
8
+ * The plan is c1's `planFold` on c2's `foldInputFor`; the pin (the text a
9
+ * yes would write and the file it was computed from) is c2's `replan`, the
10
+ * same function both halves of `trail skills update` run, so the offer and
11
+ * the gate can't disagree. Both come in through `OfferInput.plan` (c8 passes
12
+ * update-gate.ts's): without them nothing is due. A split is saved through
13
+ * 1a's add gate, pinned by `skillSha` of the compile that gate checks (R3).
14
+ *
15
+ * Writes nothing: the caller records the offer shown.
16
+ */
17
+ import type { SkillInjection } from '../trace/types.js';
18
+ import type { CompiledSkill, FoldOp } from './types.js';
19
+ import type { FoldInput, FoldPlan } from './fold.js';
20
+ import type { OfferDue, OfferInput } from './offer-moment.js';
21
+ /** What a planner is given of the block: its filled params and steps, when it came in, its check. */
22
+ export type PlanInj = Pick<SkillInjection, 'params' | 'steps' | 'at' | 'check'>;
23
+ /** c2's plan again, from the run sheet and the file as they are now (update-gate.ts `replan`). */
24
+ export interface Replanned {
25
+ next: CompiledSkill;
26
+ text: string;
27
+ proposalSha: string;
28
+ baseHash: string;
29
+ handEdited: boolean;
30
+ plan: FoldPlan | null;
31
+ base: CompiledSkill;
32
+ fresh: CompiledSkill | null;
33
+ }
34
+ /** c2's two shared functions (update-gate.ts), passed in so the offer and both halves of the gate plan alike. */
35
+ export interface FoldPlanner {
36
+ foldInputFor(skillId: string, runId: string, env: NodeJS.ProcessEnv, o?: {
37
+ inj?: PlanInj;
38
+ now?: Date;
39
+ }): FoldInput | null;
40
+ replan(skillId: string, runId: string, op: FoldOp | 'replace', env: NodeJS.ProcessEnv, o?: {
41
+ inj?: PlanInj;
42
+ now?: Date;
43
+ }): Replanned | null;
44
+ }
45
+ type Why = 'learn' | 'pending' | 'channel' | 'no-skill' | 'not-checked' | 'no-sheet' | 'not-settled' | 'corrected' | 'skill' | 'status' | 'version' | 'no-plan' | 'replan' | 'compile' | `plan:${string}` | `budget:${string}`;
46
+ /** A version Trail can key and bump: a positive integer. */
47
+ export declare const versionNumber: (v: unknown) => number | null;
48
+ /** 4.7: moment 5's conditions 1 to 5, in order. */
49
+ export declare function updateOfferDue(i: OfferInput): OfferDue | {
50
+ due: false;
51
+ why: Why;
52
+ };
53
+ export {};
54
+ //# sourceMappingURL=offer-update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offer-update.d.ts","sourceRoot":"","sources":["../../src/skills/offer-update.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAgB,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAY9D,qGAAqG;AACrG,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC;AAEhF,kGAAkG;AAClG,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC;IAC9F,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;CACzE;AAED,iHAAiH;AACjH,MAAM,WAAW,WAAW;IAC1B,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,OAAO,CAAC;QAAC,GAAG,CAAC,EAAE,IAAI,CAAA;KAAE,GAAG,SAAS,GAAG,IAAI,CAAC;IAC1H,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,OAAO,CAAC;QAAC,GAAG,CAAC,EAAE,IAAI,CAAA;KAAE,GAAG,SAAS,GAAG,IAAI,CAAC;CAC7I;AAED,KAAK,GAAG,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,aAAa,GAAG,UAAU,GAAG,aAAa,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,GACnI,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,MAAM,EAAE,GAAG,UAAU,MAAM,EAAE,CAAC;AAEzF,4DAA4D;AAC5D,eAAO,MAAM,aAAa,GAAI,GAAG,OAAO,KAAG,MAAM,GAAG,IAAmE,CAAC;AAExH,mDAAmD;AACnD,wBAAgB,cAAc,CAAC,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG;IAAE,GAAG,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,GAAG,CAAA;CAAE,CAuFjF"}
@@ -0,0 +1,115 @@
1
+ import { planFold } from './fold.js';
2
+ import { fillParams } from './params.js';
3
+ import { runLinesChanged } from './skill-diff.js';
4
+ import { skillHash } from './skillmd.js';
5
+ import { getSkillState } from './state.js';
6
+ import { listAllPersonal, readSkill } from './store.js';
7
+ import { newOfferId, offerBudget, updateOfferKey } from './offers.js';
8
+ import { checkLine } from './offer-words.js';
9
+ import { updateLines } from './offer-words-2.js';
10
+ import { compileOffered, skillSha } from './offer-moment.js';
11
+ /** A version Trail can key and bump: a positive integer. */
12
+ export const versionNumber = (v) => (/^[1-9]\d{0,5}$/.test(String(v ?? '')) ? Number(v) : null);
13
+ /** 4.7: moment 5's conditions 1 to 5, in order. */
14
+ export function updateOfferDue(i) {
15
+ const { run, verdict, st, ctx, channel } = i;
16
+ const env = ctx.env;
17
+ if (!ctx.learn)
18
+ return { due: false, why: 'learn' };
19
+ if (st.pendingOffer)
20
+ return { due: false, why: 'pending' };
21
+ // R13: the facts exist only at Stop.
22
+ if (channel !== 'stop' && channel !== 'notice')
23
+ return { due: false, why: 'channel' };
24
+ const skillId = run.skillId;
25
+ if (!skillId)
26
+ return { due: false, why: 'no-skill' };
27
+ if (!verdict.checked || verdict.checkIndex === null)
28
+ return { due: false, why: 'not-checked' };
29
+ const hit = run.calls[verdict.checkIndex]?.check;
30
+ if (!hit || !hit.passed)
31
+ return { due: false, why: 'not-checked' };
32
+ const sheet = i.sheet;
33
+ if (!sheet || sheet.id !== run.id)
34
+ return { due: false, why: 'no-sheet' };
35
+ // 1. This Stop's settle flushed this run's use of the skill with its check passed (spec 9: a checked success).
36
+ const parts = new Set([run.id, ...(sheet.joined ?? []).map((j) => j.id)]);
37
+ const settled = (i.settled ?? []).find((s) => s.skillId === skillId && s.use.check === 'passed'
38
+ && s.injIds.some((id) => parts.has(st.injected.find((x) => x.injId === id)?.runId ?? '')));
39
+ if (!settled)
40
+ return { due: false, why: 'not-settled' };
41
+ const inj = st.injected.filter((x) => settled.injIds.includes(x.injId)).sort((a, b) => Date.parse(a.at) - Date.parse(b.at));
42
+ const block = inj[inj.length - 1];
43
+ // 3. No correction came after the use (moment 4 goes first).
44
+ if (st.credit.some((c) => c.useId === settled.use.useId && c.corrected) || st.lessonWatch?.useId === settled.use.useId)
45
+ return { due: false, why: 'corrected' };
46
+ // 2. Personal (rule 13), Trail's, active or candidate.
47
+ const ref = listAllPersonal(env).find((r) => r.id === skillId);
48
+ const state = ref ? getSkillState(skillId, env) : null;
49
+ const skill = ref ? readSkill(ref, state) : null;
50
+ if (!ref || !skill || !state || ref.scope !== 'personal' || state.scope !== 'personal' || skill.meta.trail !== skillId)
51
+ return { due: false, why: 'skill' };
52
+ if (state.status !== 'active' && state.status !== 'candidate')
53
+ return { due: false, why: 'status' };
54
+ const version = versionNumber(skill.meta.version);
55
+ if (version === null)
56
+ return { due: false, why: 'version' };
57
+ // 5. The budget, keyed per version (P8).
58
+ const repo = run.repoKey || ctx.repoKey;
59
+ const key = updateOfferKey(skillId, version);
60
+ const budget = offerBudget({ repoKey: repo, key, sessionOfferUsed: st.offerUsed, now: ctx.now, env });
61
+ if (!budget.ok)
62
+ return { due: false, why: `budget:${budget.why}` };
63
+ // 4. The plan.
64
+ if (!i.plan)
65
+ return { due: false, why: 'no-plan' };
66
+ const o = { inj: { params: block.params, steps: block.steps, at: inj[0].at, check: block.check }, now: ctx.now };
67
+ const fi = i.plan.foldInputFor(skillId, run.id, env, o);
68
+ if (!fi)
69
+ return { due: false, why: 'no-plan' };
70
+ const plan = planFold(fi);
71
+ if (plan.op === 'none')
72
+ return { due: false, why: `plan:${plan.why}` };
73
+ const check = checkLine(hit);
74
+ const base = {
75
+ offerId: newOfferId(), moment: 'update', runId: run.id, key, channel,
76
+ shownAt: ctx.now.toISOString(), showMe: false, yes: null, typedAfter: [], repo,
77
+ };
78
+ if (plan.op === 'split') {
79
+ // R3: the split saves through 1a's add gate, which compiles the run as moment 2's offer does; the pin is that skill.
80
+ const c = compileOffered(sheet, st, ctx);
81
+ if (!c.ok || c.skill.steps.length < 2)
82
+ return { due: false, why: 'compile' };
83
+ const sha = skillSha(c.skill);
84
+ const lines = updateLines({ op: 'split', check, name: ref.name, job: run.job ?? skill.meta.job ?? 'job', at: 0, cmds: [], changes: 0,
85
+ split: { from: plan.from, to: plan.to, name: c.skill.name }, handEdited: false });
86
+ return {
87
+ due: true,
88
+ offer: {
89
+ ...base, name: c.skill.name, lines, skillSha: sha,
90
+ fold: { op: 'split', skillId, baseHash: skillHash(fi.text), proposalSha: sha.slice(0, 16), handEdited: false, splitName: c.skill.name, version },
91
+ },
92
+ };
93
+ }
94
+ const r = i.plan.replan(skillId, run.id, plan.op, env, o);
95
+ if (!r || (r.plan && r.plan.op !== plan.op))
96
+ return { due: false, why: 'replan' };
97
+ const vals = block.params ?? {};
98
+ const more = plan.op === 'update' && plan.why === 'preference' ? plan.more ?? [] : [];
99
+ const cmds = plan.op === 'update' ? [plan.cmd, ...more].map((c) => fillParams(c.cmd, vals)) : plan.cmds.map((c) => fillParams(c.cmd, vals));
100
+ const lessonIds = plan.op === 'extend' && plan.why === 'lesson' ? plan.lessonIds : [];
101
+ const lessonDate = fi.lessons.find((l) => lessonIds.includes(l.id))?.at;
102
+ const lines = updateLines({
103
+ op: plan.op, why: plan.why, ...(plan.op === 'update' && plan.why === 'preference' ? { follows: plan.follows, steps: [plan.step, ...more.map((c) => c.n)] } : {}),
104
+ check, name: ref.name, job: run.job ?? skill.meta.job ?? 'job', at: plan.op === 'update' ? plan.step : plan.at,
105
+ cmds, changes: runLinesChanged(r.base, r.next), ...(lessonDate ? { lessonDate } : {}), handEdited: r.handEdited,
106
+ });
107
+ return {
108
+ due: true,
109
+ offer: {
110
+ ...base, name: ref.name, lines,
111
+ fold: { op: plan.op, skillId, baseHash: r.baseHash, proposalSha: r.proposalSha, handEdited: r.handEdited, version, ...(lessonIds.length ? { lessonIds } : {}) },
112
+ },
113
+ };
114
+ }
115
+ //# sourceMappingURL=offer-update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offer-update.js","sourceRoot":"","sources":["../../src/skills/offer-update.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * What the agent reads around an offer of moments 3 and 4 (design 4.13 to
3
+ * 4.15): the Stop block's reason, the post-tool text, and the answers to it.
4
+ * `offer-words.ts` hands every non-repeated offer here.
5
+ *
6
+ * Built from `directive-words.ts`, as moment 2's texts are, so every offer
7
+ * reads the same way. D88 and D101: an agent follows hook text it can trust and refuses the rest
8
+ * as prompt injection. So every text says it is from Trail, gives Trail's own
9
+ * reason, quotes the words the person typed when it answers them (in the
10
+ * hook output only, never on disk), and never tells the agent to recite, to
11
+ * skip asking, or that one yes covers more than it does. The 2 lines are
12
+ * Trail's question for the person; the agent ends its reply with them so the
13
+ * person can answer, and Trail reads that answer against the last one.
14
+ *
15
+ * Never "memory" or "remember", no em dashes: the words tests read this file.
16
+ */
17
+ import type { Host } from '../trace/host.js';
18
+ import type { PendingOffer } from '../trace/types.js';
19
+ import type { HookOut } from './types.js';
20
+ /** An offer whose yes keeps a lesson, not a skill: moment 4, or moment 3 kept as a lesson. */
21
+ export declare function isLessonOffer(o: Pick<PendingOffer, 'moment'> & Partial<Pick<PendingOffer, 'repair'>>): boolean;
22
+ /** The wall's fixed words (`"rootless Docker not found"`), or plainer ones. */
23
+ export declare function wallWords(o: Partial<Pick<PendingOffer, 'repair'>>): string;
24
+ /** The command the agent runs on a yes. */
25
+ export declare function yesCommand(o: PendingOffer): string;
26
+ /** 3.5: the Stop block's reason for a moment 3 or 4 offer, given its 2 lines. */
27
+ export declare function blockReason1b(o: PendingOffer, [a, b]: [string, string]): string;
28
+ /** 3.4: the post-tool text, for completeness (moments 3 and 4 are offered at Stop only). */
29
+ export declare function postTool1b(o: PendingOffer, [a, b]: [string, string]): string;
30
+ /** The answers to a moment 3 or 4 offer, as context on the answering prompt (a bare no as a block where the host shows it). */
31
+ export declare function answer1b(a: 'yes' | 'show' | 'no' | 'other', o: PendingOffer, say: string, env: NodeJS.ProcessEnv, typed: string, host?: Host): HookOut;
32
+ //# sourceMappingURL=offer-words-1b.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offer-words-1b.d.ts","sourceRoot":"","sources":["../../src/skills/offer-words-1b.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAY1C,8FAA8F;AAC9F,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,GAAG,OAAO,CAE9G;AAED,+EAA+E;AAC/E,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,GAAG,MAAM,CAE1E;AAED,2CAA2C;AAC3C,wBAAgB,UAAU,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAKlD;AA2BD,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAE/E;AAED,4FAA4F;AAC5F,wBAAgB,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAG5E;AAED,+HAA+H;AAC/H,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,OAAO,CAetJ"}
@@ -0,0 +1,80 @@
1
+ import { flatLine } from '../notes/flatten.js';
2
+ import { WALLS } from '../trace/walls.js';
3
+ import { hostFacts } from './host-facts.js';
4
+ import { directive, FROM_TRAIL } from './directive-words.js';
5
+ const one = (v, max = 60) => flatLine(v, max);
6
+ const KEEP_IT = 'Keep it? (yes / no)';
7
+ /** Why the 2 lines end the reply (as p1a/agent-trust says it). */
8
+ const SO_THEY_ANSWER = 'so the person can answer (Trail reads their answer to the last line, so keep it as it is)';
9
+ const CHECKS_YES = 'Trail checks their yes in this session before it keeps anything.';
10
+ /** An offer whose yes keeps a lesson, not a skill: moment 4, or moment 3 kept as a lesson. */
11
+ export function isLessonOffer(o) {
12
+ return o.moment === 'correction' || (o.moment === 'repaired' && o.repair?.as === 'lesson');
13
+ }
14
+ /** The wall's fixed words (`"rootless Docker not found"`), or plainer ones. */
15
+ export function wallWords(o) {
16
+ return WALLS.find((w) => w.cls === o.repair?.cls)?.words ?? 'a known error';
17
+ }
18
+ /** The command the agent runs on a yes. */
19
+ export function yesCommand(o) {
20
+ const id = one(o.offerId, 40);
21
+ if (o.moment === 'correction')
22
+ return `trail skills lesson ${one(o.name)} --offer ${id}`;
23
+ if (isLessonOffer(o))
24
+ return `trail skills lesson --offer ${id}`;
25
+ return `trail skills add ${one(o.name)} --run ${one(o.runId, 40)}`;
26
+ }
27
+ /** What Trail offered, for the answers. */
28
+ function offered(o) {
29
+ if (o.moment === 'correction')
30
+ return `Trail offered to add a lesson to the skill ${one(o.name)}, from what they said when they corrected it`;
31
+ if (isLessonOffer(o))
32
+ return `Trail offered to keep what got past ${wallWords(o)} as a lesson`;
33
+ return `Trail offered to keep the steps that got past ${wallWords(o)} as a skill`;
34
+ }
35
+ /** Trail's own reason for the offer (D101). */
36
+ function reason(o) {
37
+ if (o.moment === 'correction') {
38
+ return `The person corrected ${one(o.name)}, a skill Trail brought in for this job; Trail offers once to add what they said to it as a lesson.`;
39
+ }
40
+ const program = one(o.repair?.program ?? '', 40) || 'a command';
41
+ const n = Math.floor(Number(o.repair?.nth));
42
+ const times = Number.isFinite(n) && n >= 2 ? `${n} times` : 'more than once';
43
+ return `Trail noticed ${program} failed on ${wallWords(o)} here ${times} and the same change got past it; it offers once to keep that.`;
44
+ }
45
+ /** After the 2 lines: what to run on each answer. */
46
+ function onAnswer(o) {
47
+ const yes = `If they answer yes, run: ${yesCommand(o)} (${CHECKS_YES.replace(/\.$/, '')}), then tell them the line it prints. `;
48
+ if (isLessonOffer(o))
49
+ return `${yes}If they say no, Trail keeps nothing.`;
50
+ return `${yes}If they say show me, run trail skills draft ${one(o.runId, 40)} --print, paste what it prints, and ask "${KEEP_IT}". If they say no, Trail keeps nothing.`;
51
+ }
52
+ /** 3.5: the Stop block's reason for a moment 3 or 4 offer, given its 2 lines. */
53
+ export function blockReason1b(o, [a, b]) {
54
+ return `[trail] ${FROM_TRAIL} ${reason(o)} When you finish this reply, end it with these 2 lines, ${SO_THEY_ANSWER}:\n${a}\n${b}\n${onAnswer(o)}`;
55
+ }
56
+ /** 3.4: the post-tool text, for completeness (moments 3 and 4 are offered at Stop only). */
57
+ export function postTool1b(o, [a, b]) {
58
+ return `[trail] ${FROM_TRAIL} ${reason(o)} If this check finishes the job, end your reply with these 2 lines, ${SO_THEY_ANSWER}:\n${a}\n${b}\n`
59
+ + "If the job isn't done yet, or you are about to ask the person something, leave them out.";
60
+ }
61
+ /** The answers to a moment 3 or 4 offer, as context on the answering prompt (a bare no as a block where the host shows it). */
62
+ export function answer1b(a, o, say, env, typed, host) {
63
+ switch (a) {
64
+ case 'yes':
65
+ return { context: directive(typed, `${offered(o)}, and this is their answer. To keep it as they said, run: ${yesCommand(o)}. ${CHECKS_YES} Then tell them the line it prints.`) };
66
+ case 'show':
67
+ if (isLessonOffer(o))
68
+ return answer1b('other', o, say, env, typed, host);
69
+ return { context: directive(typed, `${offered(o)}, and they want to see it first. Run trail skills draft ${one(o.runId, 40)} --print, paste what it prints as it is, then ask "${KEEP_IT}", since Trail reads their answer to that question.`) };
70
+ case 'no':
71
+ if (hostFacts(env, host).promptBlockShown)
72
+ return { block: `trail: ${say}` };
73
+ return { context: directive(typed, `${offered(o)}, and they said no, so Trail kept nothing. Let them know: "${say}"`) };
74
+ default:
75
+ return o.channel === 'notice' ? {} : {
76
+ context: directive(typed, `That isn't an answer to Trail's offer (${offered(o).replace(/^Trail offered /, '')}), so Trail dropped the offer and kept nothing. No need to bring the offer up again.`),
77
+ };
78
+ }
79
+ }
80
+ //# sourceMappingURL=offer-words-1b.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offer-words-1b.js","sourceRoot":"","sources":["../../src/skills/offer-words-1b.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * The words of moments 5 and 6 and the retire proposal (phase 2 design 4.7
3
+ * to 4.9, R11, R19, R24): their two lines, the Stop reason and post-tool
4
+ * text around them, and what the agent reads on each answer. `offer-words.ts`
5
+ * hands moments update, drift and retire here; 1b's lesson and repair words
6
+ * never see them (R11: they would name `trail skills lesson` or `add`).
7
+ *
8
+ * D88, D101, D107: every text says it is from Trail, gives Trail's own
9
+ * reason, quotes the words the person typed when it answers them (in the
10
+ * hook output only, never on disk), says who checks the answer, and never
11
+ * tells the agent to recite, to skip asking, or what one yes covers.
12
+ * Commands in a line are the agent's own from this session (through
13
+ * compile's secret check), one line, cut at 60 characters, in single quotes
14
+ * (R24). Lines are counted facts; no model writes any of them (P16).
15
+ *
16
+ * Never "memory" or "remember", no em dashes: the words tests read this file.
17
+ */
18
+ import type { PendingOffer, TypedAnswer } from '../trace/types.js';
19
+ import type { HookOut } from './types.js';
20
+ import type { Host } from '../trace/host.js';
21
+ /** Moment 5 (4.7). `line2*` end with the keys the person answers with. */
22
+ export declare const UPDATE_COPY: {
23
+ readonly line1Update: "{check} This time step {step} of {name} failed and {cmds} worked instead.";
24
+ readonly line1Preference: "{check} This time {steps} of {name} ran as {cmds}, the way {follows} says.";
25
+ readonly line2Preference: "Change {steps} of {name} to match? {size} (yes / show me / no)";
26
+ readonly line1Extend: "{check} This time {name} also needed {cmds} {where}.";
27
+ readonly line1Split: "{check} This time {name} ran only steps {from} to {to}, as it did last time.";
28
+ readonly line2Lesson: "Fold your {date} lesson into {name} as {steps}? {size} (yes / show me / no)";
29
+ readonly line2TwoUses: "Add {it} to {name} as {steps}? {They} ran in your last 2 {jobs}. {size} (yes / show me / no)";
30
+ readonly line2Update: "Change step {step} of {name} to the command that worked? {size} (yes / show me / no)";
31
+ readonly line2Split: "Keep steps {from} to {to} as their own skill, {new}, beside {name}? (yes / show me / no)";
32
+ readonly size: "{n} line changes.";
33
+ readonly handEdited: "You changed {name} by hand, so Trail writes it beside your file for you to compare.";
34
+ readonly reason: "Skill {name} just ran and checked out, and this run did one thing differently; Trail offers once to change the skill to match.";
35
+ readonly offered: "Trail offered to change the skill {name} to match how this job just ran";
36
+ readonly reasonSplit: "A skill Trail brought in just ran only some of its steps, the same ones as last time; Trail offers once to keep those steps as a skill of their own, {name}.";
37
+ readonly offeredSplit: "Trail offered to keep steps of a skill as a skill of their own, {name}";
38
+ };
39
+ /** Moment 6 (4.8, J15, P16). */
40
+ export declare const DRIFT_COPY: {
41
+ readonly line1: "{check} {name} needs a fix, and this {job} went another way: {how}.";
42
+ readonly line2: "Replace {name} with the {k} steps that just worked, retire it, or leave it? (replace / retire / leave it)";
43
+ readonly line2Hand: "Write the {k} steps that just worked beside your edited {name}, retire it, or leave it? (replace / retire / leave it)";
44
+ readonly reason: "Skill {name} needs a fix, and this job just checked out another way; Trail offers once to replace it, retire it or leave it.";
45
+ readonly offered: "Trail offered to replace the skill {name} with the steps that just worked";
46
+ };
47
+ /** The retire proposal (4.9, P13). */
48
+ export declare const RETIRE_COPY: {
49
+ readonly line1: "Trail brought in skill {name} {n} times lately, and its steps ran in {k} of them.";
50
+ readonly line2: "Retire it? trail skills restore {name} brings it back. (retire / keep it)";
51
+ readonly reason: "Trail brought in skill {name} for jobs here and its steps mostly did not run; it offers once, ever, to retire a skill like that.";
52
+ readonly offered: "Trail offered to retire the skill {name}";
53
+ readonly retired: "Trail retired {name}. Tell them in one line, with how to bring it back: trail skills restore {name}.";
54
+ readonly busy: "Trail couldn't retire it just now: the person can run trail forget {name}. Tell them that in one line.";
55
+ };
56
+ /** A command as a line shows it (R24): one line, at most 60 characters, its own single quotes made double, in single quotes. */
57
+ export declare const quoted: (cmd: string) => string;
58
+ export interface UpdateFacts {
59
+ op: 'update' | 'extend' | 'split';
60
+ why?: 'failed-then-worked' | 'lesson' | 'two-uses' | 'preference';
61
+ /** Part 7, why 'preference': whose learning the steps followed ("your preference"), and every step it changes. */
62
+ follows?: string;
63
+ steps?: number[];
64
+ /** The job's check as 1a's `checkLine` says it ("Published 0.22.4: npm shows it."). */
65
+ check: string;
66
+ name: string;
67
+ job: string;
68
+ /** update: the step changed; extend: the skill step the new ones go after (0: before step 1). */
69
+ at: number;
70
+ /** The new or changed steps, filled with this run's values. */
71
+ cmds: string[];
72
+ /** Run lines the change touches (`runLinesChanged`). */
73
+ changes: number;
74
+ lessonDate?: string;
75
+ split?: {
76
+ from: number;
77
+ to: number;
78
+ name: string;
79
+ };
80
+ handEdited: boolean;
81
+ }
82
+ /** 4.7: moment 5's two lines. */
83
+ export declare function updateLines(f: UpdateFacts): [string, string];
84
+ export interface DriftFacts {
85
+ check: string;
86
+ name: string;
87
+ job: string;
88
+ /** Run steps of the fresh compile (the new version's). */
89
+ steps: number;
90
+ /** Skill steps that didn't run, and fresh steps that match no skill step, in order. */
91
+ skipped: Array<{
92
+ n: number;
93
+ cmd: string;
94
+ }>;
95
+ ran: string[];
96
+ handEdited: boolean;
97
+ }
98
+ /** 4.8: moment 6's two lines; at most 2 named each way. */
99
+ export declare function driftLines(f: DriftFacts): [string, string];
100
+ export interface RetireFacts {
101
+ name: string;
102
+ fired: number;
103
+ followed: number;
104
+ }
105
+ /** 4.9: the retire proposal's two lines. */
106
+ export declare function retireLines(f: RetireFacts): [string, string];
107
+ /** The command a yes runs (4.11): `trail skills update` for update, extend and replace; 1a's add for a split. */
108
+ export declare function yesCommand2(o: PendingOffer): string;
109
+ /** 3.5 (R11): the Stop block's reason for moments 5, 6 and the retire proposal, given its 2 lines. */
110
+ export declare function blockReason2(o: PendingOffer, [a, b]: [string, string]): string;
111
+ /** 3.4: the post-tool text, for completeness (these moments go out at Stop only, R13). */
112
+ export declare function postTool2(o: PendingOffer, [a, b]: [string, string]): string;
113
+ /**
114
+ * 4.7 to 4.10: what the agent reads on the person's answer, as context on the answering prompt (a bare no as a block
115
+ * where the host shows its reason). `c.retired`: the retire the prompt hook made (the folder name), or null when the
116
+ * store was busy and nothing moved.
117
+ */
118
+ export declare function answer2(a: TypedAnswer, o: PendingOffer, c: {
119
+ paused: boolean;
120
+ firstNo: boolean;
121
+ retired?: string | null;
122
+ }, env: NodeJS.ProcessEnv, typed: string, host?: Host): HookOut;
123
+ //# sourceMappingURL=offer-words-2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offer-words-2.d.ts","sourceRoot":"","sources":["../../src/skills/offer-words-2.ts"],"names":[],"mappings":"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"}