@nanonets/graft 0.24.1 → 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 (480) hide show
  1. package/README.md +26 -21
  2. package/dist/blast/render.js +1 -1
  3. package/dist/blast/render.js.map +1 -1
  4. package/dist/brand.js +1 -1
  5. package/dist/brand.js.map +1 -1
  6. package/dist/check/learning-edits.d.ts +18 -3
  7. package/dist/check/learning-edits.d.ts.map +1 -1
  8. package/dist/check/learning-edits.js +54 -10
  9. package/dist/check/learning-edits.js.map +1 -1
  10. package/dist/check/local-check.d.ts +7 -3
  11. package/dist/check/local-check.d.ts.map +1 -1
  12. package/dist/check/local-check.js +55 -11
  13. package/dist/check/local-check.js.map +1 -1
  14. package/dist/check/types.d.ts +11 -2
  15. package/dist/check/types.d.ts.map +1 -1
  16. package/dist/claude/format.d.ts +11 -7
  17. package/dist/claude/format.d.ts.map +1 -1
  18. package/dist/claude/format.js +50 -28
  19. package/dist/claude/format.js.map +1 -1
  20. package/dist/claude/hook-io.js +1 -1
  21. package/dist/claude/hook-io.js.map +1 -1
  22. package/dist/claude/hook-layers.d.ts +4 -2
  23. package/dist/claude/hook-layers.d.ts.map +1 -1
  24. package/dist/claude/hook-layers.js +21 -4
  25. package/dist/claude/hook-layers.js.map +1 -1
  26. package/dist/claude/hooks.d.ts +9 -32
  27. package/dist/claude/hooks.d.ts.map +1 -1
  28. package/dist/claude/hooks.js +154 -350
  29. package/dist/claude/hooks.js.map +1 -1
  30. package/dist/claude/init.d.ts.map +1 -1
  31. package/dist/claude/init.js +56 -18
  32. package/dist/claude/init.js.map +1 -1
  33. package/dist/claude/note-signals.d.ts +6 -0
  34. package/dist/claude/note-signals.d.ts.map +1 -1
  35. package/dist/claude/note-signals.js +14 -3
  36. package/dist/claude/note-signals.js.map +1 -1
  37. package/dist/claude/post-bash.d.ts +26 -0
  38. package/dist/claude/post-bash.d.ts.map +1 -0
  39. package/dist/claude/post-bash.js +191 -0
  40. package/dist/claude/post-bash.js.map +1 -0
  41. package/dist/claude/pre-bash-skills.d.ts +21 -0
  42. package/dist/claude/pre-bash-skills.d.ts.map +1 -0
  43. package/dist/claude/pre-bash-skills.js +253 -0
  44. package/dist/claude/pre-bash-skills.js.map +1 -0
  45. package/dist/claude/pre-bash.d.ts +50 -0
  46. package/dist/claude/pre-bash.d.ts.map +1 -0
  47. package/dist/claude/pre-bash.js +245 -0
  48. package/dist/claude/pre-bash.js.map +1 -0
  49. package/dist/claude/prompt-consent.d.ts +19 -0
  50. package/dist/claude/prompt-consent.d.ts.map +1 -0
  51. package/dist/claude/prompt-consent.js +14 -0
  52. package/dist/claude/prompt-consent.js.map +1 -0
  53. package/dist/claude/prompt-hook.d.ts +76 -0
  54. package/dist/claude/prompt-hook.d.ts.map +1 -0
  55. package/dist/claude/prompt-hook.js +303 -0
  56. package/dist/claude/prompt-hook.js.map +1 -0
  57. package/dist/claude/prompt-skills.d.ts +19 -0
  58. package/dist/claude/prompt-skills.d.ts.map +1 -0
  59. package/dist/claude/prompt-skills.js +305 -0
  60. package/dist/claude/prompt-skills.js.map +1 -0
  61. package/dist/claude/session-metrics.js +4 -4
  62. package/dist/claude/session-metrics.js.map +1 -1
  63. package/dist/claude/settings-merge.d.ts +10 -0
  64. package/dist/claude/settings-merge.d.ts.map +1 -1
  65. package/dist/claude/settings-merge.js +46 -17
  66. package/dist/claude/settings-merge.js.map +1 -1
  67. package/dist/claude/shim-template.d.ts.map +1 -1
  68. package/dist/claude/shim-template.js +86 -28
  69. package/dist/claude/shim-template.js.map +1 -1
  70. package/dist/claude/skill-template.d.ts +2 -0
  71. package/dist/claude/skill-template.d.ts.map +1 -1
  72. package/dist/claude/skill-template.js +53 -34
  73. package/dist/claude/skill-template.js.map +1 -1
  74. package/dist/claude/skill-use.d.ts +16 -0
  75. package/dist/claude/skill-use.d.ts.map +1 -0
  76. package/dist/claude/skill-use.js +78 -0
  77. package/dist/claude/skill-use.js.map +1 -0
  78. package/dist/claude/skills-wiring.d.ts +26 -0
  79. package/dist/claude/skills-wiring.d.ts.map +1 -0
  80. package/dist/claude/skills-wiring.js +110 -0
  81. package/dist/claude/skills-wiring.js.map +1 -0
  82. package/dist/claude/start-init.d.ts +13 -0
  83. package/dist/claude/start-init.d.ts.map +1 -0
  84. package/dist/claude/start-init.js +75 -0
  85. package/dist/claude/start-init.js.map +1 -0
  86. package/dist/claude/start-skills.d.ts +31 -0
  87. package/dist/claude/start-skills.d.ts.map +1 -0
  88. package/dist/claude/start-skills.js +274 -0
  89. package/dist/claude/start-skills.js.map +1 -0
  90. package/dist/claude/state.d.ts +19 -7
  91. package/dist/claude/state.d.ts.map +1 -1
  92. package/dist/claude/state.js +59 -4
  93. package/dist/claude/state.js.map +1 -1
  94. package/dist/claude/stop-skills.d.ts +23 -0
  95. package/dist/claude/stop-skills.d.ts.map +1 -0
  96. package/dist/claude/stop-skills.js +233 -0
  97. package/dist/claude/stop-skills.js.map +1 -0
  98. package/dist/claude/stop.d.ts +23 -0
  99. package/dist/claude/stop.d.ts.map +1 -0
  100. package/dist/claude/stop.js +219 -0
  101. package/dist/claude/stop.js.map +1 -0
  102. package/dist/claude/tally.d.ts +29 -41
  103. package/dist/claude/tally.d.ts.map +1 -1
  104. package/dist/claude/tally.js +111 -165
  105. package/dist/claude/tally.js.map +1 -1
  106. package/dist/claude/walls-hook.d.ts +52 -0
  107. package/dist/claude/walls-hook.d.ts.map +1 -0
  108. package/dist/claude/walls-hook.js +279 -0
  109. package/dist/claude/walls-hook.js.map +1 -0
  110. package/dist/cli-epilogue.d.ts.map +1 -1
  111. package/dist/cli-epilogue.js +24 -14
  112. package/dist/cli-epilogue.js.map +1 -1
  113. package/dist/cli-meta.js +3 -3
  114. package/dist/cli-meta.js.map +1 -1
  115. package/dist/cli-picker.d.ts.map +1 -1
  116. package/dist/cli-picker.js +8 -6
  117. package/dist/cli-picker.js.map +1 -1
  118. package/dist/cli.d.ts.map +1 -1
  119. package/dist/cli.js +238 -402
  120. package/dist/cli.js.map +1 -1
  121. package/dist/cloud/head-learnings.d.ts +13 -0
  122. package/dist/cloud/head-learnings.d.ts.map +1 -0
  123. package/dist/cloud/head-learnings.js +84 -0
  124. package/dist/cloud/head-learnings.js.map +1 -0
  125. package/dist/cloud/lookup-activity.d.ts +5 -3
  126. package/dist/cloud/lookup-activity.d.ts.map +1 -1
  127. package/dist/cloud/lookup-activity.js +8 -8
  128. package/dist/cloud/lookup-activity.js.map +1 -1
  129. package/dist/cloud/nudge.d.ts +15 -7
  130. package/dist/cloud/nudge.d.ts.map +1 -1
  131. package/dist/cloud/nudge.js +42 -33
  132. package/dist/cloud/nudge.js.map +1 -1
  133. package/dist/cloud/onboarding.d.ts +37 -1
  134. package/dist/cloud/onboarding.d.ts.map +1 -1
  135. package/dist/cloud/onboarding.js +77 -1
  136. package/dist/cloud/onboarding.js.map +1 -1
  137. package/dist/cloud/other-repos.d.ts +39 -0
  138. package/dist/cloud/other-repos.d.ts.map +1 -0
  139. package/dist/cloud/other-repos.js +137 -0
  140. package/dist/cloud/other-repos.js.map +1 -0
  141. package/dist/cloud/pair.d.ts +17 -7
  142. package/dist/cloud/pair.d.ts.map +1 -1
  143. package/dist/cloud/pair.js +81 -60
  144. package/dist/cloud/pair.js.map +1 -1
  145. package/dist/cloud/workspace-sync.d.ts +67 -11
  146. package/dist/cloud/workspace-sync.d.ts.map +1 -1
  147. package/dist/cloud/workspace-sync.js +299 -55
  148. package/dist/cloud/workspace-sync.js.map +1 -1
  149. package/dist/cloud/workspace.d.ts +74 -10
  150. package/dist/cloud/workspace.d.ts.map +1 -1
  151. package/dist/cloud/workspace.js +96 -8
  152. package/dist/cloud/workspace.js.map +1 -1
  153. package/dist/hosts/claude-global.js +1 -1
  154. package/dist/hosts/claude-global.js.map +1 -1
  155. package/dist/hosts/codex-hooks.d.ts +6 -0
  156. package/dist/hosts/codex-hooks.d.ts.map +1 -1
  157. package/dist/hosts/codex-hooks.js +89 -16
  158. package/dist/hosts/codex-hooks.js.map +1 -1
  159. package/dist/hosts/codex-trust.d.ts +28 -0
  160. package/dist/hosts/codex-trust.d.ts.map +1 -0
  161. package/dist/hosts/codex-trust.js +280 -0
  162. package/dist/hosts/codex-trust.js.map +1 -0
  163. package/dist/hosts/cursor-hooks.d.ts.map +1 -1
  164. package/dist/hosts/cursor-hooks.js +3 -1
  165. package/dist/hosts/cursor-hooks.js.map +1 -1
  166. package/dist/init/candidates.d.ts +60 -0
  167. package/dist/init/candidates.d.ts.map +1 -0
  168. package/dist/init/candidates.js +202 -0
  169. package/dist/init/candidates.js.map +1 -0
  170. package/dist/init/claude-call.d.ts +51 -0
  171. package/dist/init/claude-call.d.ts.map +1 -0
  172. package/dist/init/claude-call.js +199 -0
  173. package/dist/init/claude-call.js.map +1 -0
  174. package/dist/init/discover-worker.d.ts +18 -0
  175. package/dist/init/discover-worker.d.ts.map +1 -0
  176. package/dist/init/discover-worker.js +111 -0
  177. package/dist/init/discover-worker.js.map +1 -0
  178. package/dist/init/handover.d.ts +16 -0
  179. package/dist/init/handover.d.ts.map +1 -0
  180. package/dist/init/handover.js +92 -0
  181. package/dist/init/handover.js.map +1 -0
  182. package/dist/init/howtos.d.ts +20 -0
  183. package/dist/init/howtos.d.ts.map +1 -0
  184. package/dist/init/howtos.js +90 -0
  185. package/dist/init/howtos.js.map +1 -0
  186. package/dist/init/init-record.d.ts +134 -0
  187. package/dist/init/init-record.d.ts.map +1 -0
  188. package/dist/init/init-record.js +339 -0
  189. package/dist/init/init-record.js.map +1 -0
  190. package/dist/init/install-paths.d.ts +6 -0
  191. package/dist/init/install-paths.d.ts.map +1 -0
  192. package/dist/init/install-paths.js +87 -0
  193. package/dist/init/install-paths.js.map +1 -0
  194. package/dist/init/keep-answer.d.ts +43 -0
  195. package/dist/init/keep-answer.d.ts.map +1 -0
  196. package/dist/init/keep-answer.js +118 -0
  197. package/dist/init/keep-answer.js.map +1 -0
  198. package/dist/init/keep-gate.d.ts +30 -0
  199. package/dist/init/keep-gate.d.ts.map +1 -0
  200. package/dist/init/keep-gate.js +178 -0
  201. package/dist/init/keep-gate.js.map +1 -0
  202. package/dist/init/keep-list.d.ts +67 -0
  203. package/dist/init/keep-list.d.ts.map +1 -0
  204. package/dist/init/keep-list.js +232 -0
  205. package/dist/init/keep-list.js.map +1 -0
  206. package/dist/init/keep.d.ts +52 -0
  207. package/dist/init/keep.d.ts.map +1 -0
  208. package/dist/init/keep.js +393 -0
  209. package/dist/init/keep.js.map +1 -0
  210. package/dist/init/look-back-mine.d.ts +37 -0
  211. package/dist/init/look-back-mine.d.ts.map +1 -0
  212. package/dist/init/look-back-mine.js +215 -0
  213. package/dist/init/look-back-mine.js.map +1 -0
  214. package/dist/init/look-back.d.ts +81 -0
  215. package/dist/init/look-back.d.ts.map +1 -0
  216. package/dist/init/look-back.js +170 -0
  217. package/dist/init/look-back.js.map +1 -0
  218. package/dist/init/miners.d.ts +46 -0
  219. package/dist/init/miners.d.ts.map +1 -0
  220. package/dist/init/miners.js +141 -0
  221. package/dist/init/miners.js.map +1 -0
  222. package/dist/init/name-call.d.ts +37 -0
  223. package/dist/init/name-call.d.ts.map +1 -0
  224. package/dist/init/name-call.js +151 -0
  225. package/dist/init/name-call.js.map +1 -0
  226. package/dist/init/plain-file.d.ts.map +1 -1
  227. package/dist/init/plain-file.js +3 -0
  228. package/dist/init/plain-file.js.map +1 -1
  229. package/dist/init/prefs.d.ts +70 -0
  230. package/dist/init/prefs.d.ts.map +1 -0
  231. package/dist/init/prefs.js +282 -0
  232. package/dist/init/prefs.js.map +1 -0
  233. package/dist/init/relay.d.ts +15 -0
  234. package/dist/init/relay.d.ts.map +1 -0
  235. package/dist/init/relay.js +15 -0
  236. package/dist/init/relay.js.map +1 -0
  237. package/dist/init/replay-runs.d.ts +121 -0
  238. package/dist/init/replay-runs.d.ts.map +1 -0
  239. package/dist/init/replay-runs.js +457 -0
  240. package/dist/init/replay-runs.js.map +1 -0
  241. package/dist/init/replay-tamper.d.ts +18 -0
  242. package/dist/init/replay-tamper.d.ts.map +1 -0
  243. package/dist/init/replay-tamper.js +87 -0
  244. package/dist/init/replay-tamper.js.map +1 -0
  245. package/dist/init/review-screen.d.ts +74 -0
  246. package/dist/init/review-screen.d.ts.map +1 -0
  247. package/dist/init/review-screen.js +258 -0
  248. package/dist/init/review-screen.js.map +1 -0
  249. package/dist/init/review-tty.d.ts +29 -0
  250. package/dist/init/review-tty.d.ts.map +1 -0
  251. package/dist/init/review-tty.js +218 -0
  252. package/dist/init/review-tty.js.map +1 -0
  253. package/dist/init/review.d.ts +12 -0
  254. package/dist/init/review.d.ts.map +1 -0
  255. package/dist/init/review.js +12 -0
  256. package/dist/init/review.js.map +1 -0
  257. package/dist/init/run.d.ts +87 -0
  258. package/dist/init/run.d.ts.map +1 -0
  259. package/dist/init/run.js +347 -0
  260. package/dist/init/run.js.map +1 -0
  261. package/dist/init/sessions.d.ts +63 -0
  262. package/dist/init/sessions.d.ts.map +1 -0
  263. package/dist/init/sessions.js +377 -0
  264. package/dist/init/sessions.js.map +1 -0
  265. package/dist/init/transcript.d.ts +81 -0
  266. package/dist/init/transcript.d.ts.map +1 -0
  267. package/dist/init/transcript.js +216 -0
  268. package/dist/init/transcript.js.map +1 -0
  269. package/dist/init/types.d.ts +139 -0
  270. package/dist/init/types.d.ts.map +1 -0
  271. package/dist/init/types.js +2 -0
  272. package/dist/init/types.js.map +1 -0
  273. package/dist/notes/cold-start.d.ts +5 -213
  274. package/dist/notes/cold-start.d.ts.map +1 -1
  275. package/dist/notes/cold-start.js +5 -654
  276. package/dist/notes/cold-start.js.map +1 -1
  277. package/dist/notes/edit-overlap.d.ts.map +1 -1
  278. package/dist/notes/edit-overlap.js +4 -1
  279. package/dist/notes/edit-overlap.js.map +1 -1
  280. package/dist/notes/notes.d.ts +8 -4
  281. package/dist/notes/notes.d.ts.map +1 -1
  282. package/dist/notes/notes.js +9 -7
  283. package/dist/notes/notes.js.map +1 -1
  284. package/dist/notes/pr-reviews.d.ts +4 -0
  285. package/dist/notes/pr-reviews.d.ts.map +1 -1
  286. package/dist/notes/pr-reviews.js +6 -5
  287. package/dist/notes/pr-reviews.js.map +1 -1
  288. package/dist/notes/repo-trail.d.ts +1 -1
  289. package/dist/notes/repo-trail.d.ts.map +1 -1
  290. package/dist/notes/repo-trail.js +24 -4
  291. package/dist/notes/repo-trail.js.map +1 -1
  292. package/dist/search/grep.d.ts.map +1 -1
  293. package/dist/search/grep.js +4 -2
  294. package/dist/search/grep.js.map +1 -1
  295. package/dist/search/user-regexp.d.ts +26 -0
  296. package/dist/search/user-regexp.d.ts.map +1 -0
  297. package/dist/search/user-regexp.js +150 -0
  298. package/dist/search/user-regexp.js.map +1 -0
  299. package/dist/skills/anchors-cli.d.ts +5 -0
  300. package/dist/skills/anchors-cli.d.ts.map +1 -1
  301. package/dist/skills/anchors-cli.js +7 -2
  302. package/dist/skills/anchors-cli.js.map +1 -1
  303. package/dist/skills/anchors-wide.js +2 -2
  304. package/dist/skills/anchors-wide.js.map +1 -1
  305. package/dist/skills/cli-skills-1b.d.ts +17 -0
  306. package/dist/skills/cli-skills-1b.d.ts.map +1 -0
  307. package/dist/skills/cli-skills-1b.js +166 -0
  308. package/dist/skills/cli-skills-1b.js.map +1 -0
  309. package/dist/skills/cli-skills-2.d.ts +35 -0
  310. package/dist/skills/cli-skills-2.d.ts.map +1 -0
  311. package/dist/skills/cli-skills-2.js +129 -0
  312. package/dist/skills/cli-skills-2.js.map +1 -0
  313. package/dist/skills/cli-skills-report-1b.d.ts +49 -0
  314. package/dist/skills/cli-skills-report-1b.d.ts.map +1 -0
  315. package/dist/skills/cli-skills-report-1b.js +191 -0
  316. package/dist/skills/cli-skills-report-1b.js.map +1 -0
  317. package/dist/skills/cli-skills-report.d.ts +86 -0
  318. package/dist/skills/cli-skills-report.d.ts.map +1 -0
  319. package/dist/skills/cli-skills-report.js +121 -0
  320. package/dist/skills/cli-skills-report.js.map +1 -0
  321. package/dist/skills/cli-skills.d.ts +30 -0
  322. package/dist/skills/cli-skills.d.ts.map +1 -0
  323. package/dist/skills/cli-skills.js +379 -0
  324. package/dist/skills/cli-skills.js.map +1 -0
  325. package/dist/skills/compile-split.d.ts.map +1 -1
  326. package/dist/skills/compile-split.js +18 -0
  327. package/dist/skills/compile-split.js.map +1 -1
  328. package/dist/skills/compile-words.d.ts +4 -1
  329. package/dist/skills/compile-words.d.ts.map +1 -1
  330. package/dist/skills/compile-words.js +68 -8
  331. package/dist/skills/compile-words.js.map +1 -1
  332. package/dist/skills/compile.d.ts +7 -0
  333. package/dist/skills/compile.d.ts.map +1 -1
  334. package/dist/skills/compile.js +17 -0
  335. package/dist/skills/compile.js.map +1 -1
  336. package/dist/skills/credit.d.ts +86 -0
  337. package/dist/skills/credit.d.ts.map +1 -0
  338. package/dist/skills/credit.js +259 -0
  339. package/dist/skills/credit.js.map +1 -0
  340. package/dist/skills/fold-gated.d.ts +3 -0
  341. package/dist/skills/fold-gated.d.ts.map +1 -0
  342. package/dist/skills/fold-gated.js +78 -0
  343. package/dist/skills/fold-gated.js.map +1 -0
  344. package/dist/skills/fold.d.ts +87 -0
  345. package/dist/skills/fold.d.ts.map +1 -0
  346. package/dist/skills/fold.js +348 -0
  347. package/dist/skills/fold.js.map +1 -0
  348. package/dist/skills/follow-learnings.d.ts +128 -0
  349. package/dist/skills/follow-learnings.d.ts.map +1 -0
  350. package/dist/skills/follow-learnings.js +278 -0
  351. package/dist/skills/follow-learnings.js.map +1 -0
  352. package/dist/skills/learning-steps.d.ts +43 -0
  353. package/dist/skills/learning-steps.d.ts.map +1 -0
  354. package/dist/skills/learning-steps.js +294 -0
  355. package/dist/skills/learning-steps.js.map +1 -0
  356. package/dist/skills/lesson-gate.d.ts +25 -0
  357. package/dist/skills/lesson-gate.d.ts.map +1 -0
  358. package/dist/skills/lesson-gate.js +316 -0
  359. package/dist/skills/lesson-gate.js.map +1 -0
  360. package/dist/skills/offer-drift.d.ts +35 -0
  361. package/dist/skills/offer-drift.d.ts.map +1 -0
  362. package/dist/skills/offer-drift.js +98 -0
  363. package/dist/skills/offer-drift.js.map +1 -0
  364. package/dist/skills/offer-lesson.d.ts +31 -0
  365. package/dist/skills/offer-lesson.d.ts.map +1 -0
  366. package/dist/skills/offer-lesson.js +123 -0
  367. package/dist/skills/offer-lesson.js.map +1 -0
  368. package/dist/skills/offer-lines.d.ts +40 -0
  369. package/dist/skills/offer-lines.d.ts.map +1 -0
  370. package/dist/skills/offer-lines.js +80 -0
  371. package/dist/skills/offer-lines.js.map +1 -0
  372. package/dist/skills/offer-moment.d.ts +102 -0
  373. package/dist/skills/offer-moment.d.ts.map +1 -0
  374. package/dist/skills/offer-moment.js +260 -0
  375. package/dist/skills/offer-moment.js.map +1 -0
  376. package/dist/skills/offer-repair.d.ts +36 -0
  377. package/dist/skills/offer-repair.d.ts.map +1 -0
  378. package/dist/skills/offer-repair.js +212 -0
  379. package/dist/skills/offer-repair.js.map +1 -0
  380. package/dist/skills/offer-retire.d.ts +53 -0
  381. package/dist/skills/offer-retire.d.ts.map +1 -0
  382. package/dist/skills/offer-retire.js +149 -0
  383. package/dist/skills/offer-retire.js.map +1 -0
  384. package/dist/skills/offer-update.d.ts +54 -0
  385. package/dist/skills/offer-update.d.ts.map +1 -0
  386. package/dist/skills/offer-update.js +115 -0
  387. package/dist/skills/offer-update.js.map +1 -0
  388. package/dist/skills/offer-words-1b.d.ts +32 -0
  389. package/dist/skills/offer-words-1b.d.ts.map +1 -0
  390. package/dist/skills/offer-words-1b.js +80 -0
  391. package/dist/skills/offer-words-1b.js.map +1 -0
  392. package/dist/skills/offer-words-2.d.ts +123 -0
  393. package/dist/skills/offer-words-2.d.ts.map +1 -0
  394. package/dist/skills/offer-words-2.js +194 -0
  395. package/dist/skills/offer-words-2.js.map +1 -0
  396. package/dist/skills/offer-words.d.ts +65 -0
  397. package/dist/skills/offer-words.d.ts.map +1 -0
  398. package/dist/skills/offer-words.js +205 -0
  399. package/dist/skills/offer-words.js.map +1 -0
  400. package/dist/skills/offers.d.ts +66 -0
  401. package/dist/skills/offers.d.ts.map +1 -0
  402. package/dist/skills/offers.js +284 -0
  403. package/dist/skills/offers.js.map +1 -0
  404. package/dist/skills/runblock.d.ts +2 -0
  405. package/dist/skills/runblock.d.ts.map +1 -1
  406. package/dist/skills/runblock.js +11 -6
  407. package/dist/skills/runblock.js.map +1 -1
  408. package/dist/skills/save-gate.d.ts +64 -0
  409. package/dist/skills/save-gate.d.ts.map +1 -0
  410. package/dist/skills/save-gate.js +354 -0
  411. package/dist/skills/save-gate.js.map +1 -0
  412. package/dist/skills/save-verify.d.ts +59 -0
  413. package/dist/skills/save-verify.d.ts.map +1 -0
  414. package/dist/skills/save-verify.js +390 -0
  415. package/dist/skills/save-verify.js.map +1 -0
  416. package/dist/skills/settings.d.ts +12 -2
  417. package/dist/skills/settings.d.ts.map +1 -1
  418. package/dist/skills/settings.js +24 -2
  419. package/dist/skills/settings.js.map +1 -1
  420. package/dist/skills/skills.d.ts +26 -8
  421. package/dist/skills/skills.d.ts.map +1 -1
  422. package/dist/skills/skills.js +105 -52
  423. package/dist/skills/skills.js.map +1 -1
  424. package/dist/skills/types.d.ts +8 -0
  425. package/dist/skills/types.d.ts.map +1 -1
  426. package/dist/skills/update-gate.d.ts +36 -0
  427. package/dist/skills/update-gate.d.ts.map +1 -0
  428. package/dist/skills/update-gate.js +357 -0
  429. package/dist/skills/update-gate.js.map +1 -0
  430. package/dist/skills/update-plan.d.ts +40 -0
  431. package/dist/skills/update-plan.d.ts.map +1 -0
  432. package/dist/skills/update-plan.js +196 -0
  433. package/dist/skills/update-plan.js.map +1 -0
  434. package/dist/skills/value-line.d.ts +94 -0
  435. package/dist/skills/value-line.d.ts.map +1 -0
  436. package/dist/skills/value-line.js +355 -0
  437. package/dist/skills/value-line.js.map +1 -0
  438. package/dist/telemetry/contract.d.ts +15 -1
  439. package/dist/telemetry/contract.d.ts.map +1 -1
  440. package/dist/telemetry/contract.js +80 -11
  441. package/dist/telemetry/contract.js.map +1 -1
  442. package/dist/telemetry/gate.js +4 -4
  443. package/dist/telemetry/gate.js.map +1 -1
  444. package/dist/telemetry/index.d.ts +1 -1
  445. package/dist/telemetry/index.d.ts.map +1 -1
  446. package/dist/telemetry/index.js +1 -1
  447. package/dist/telemetry/index.js.map +1 -1
  448. package/dist/telemetry/notice.js +5 -5
  449. package/dist/telemetry/notice.js.map +1 -1
  450. package/dist/telemetry/queue.d.ts.map +1 -1
  451. package/dist/telemetry/queue.js +7 -7
  452. package/dist/telemetry/queue.js.map +1 -1
  453. package/dist/telemetry/track.d.ts.map +1 -1
  454. package/dist/telemetry/track.js +4 -3
  455. package/dist/telemetry/track.js.map +1 -1
  456. package/dist/trace/checks.d.ts.map +1 -1
  457. package/dist/trace/checks.js +10 -2
  458. package/dist/trace/checks.js.map +1 -1
  459. package/dist/trace/gate-file.d.ts +1 -1
  460. package/dist/trace/gate-file.d.ts.map +1 -1
  461. package/dist/trace/gate-file.js +3 -3
  462. package/dist/trace/gate-file.js.map +1 -1
  463. package/dist/upkeep-run.d.ts.map +1 -1
  464. package/dist/upkeep-run.js +2 -23
  465. package/dist/upkeep-run.js.map +1 -1
  466. package/dist/upkeep.d.ts.map +1 -1
  467. package/dist/upkeep.js +2 -3
  468. package/dist/upkeep.js.map +1 -1
  469. package/dist/util/private-fs.d.ts +6 -0
  470. package/dist/util/private-fs.d.ts.map +1 -1
  471. package/dist/util/private-fs.js +9 -1
  472. package/dist/util/private-fs.js.map +1 -1
  473. package/dist/util/state.d.ts.map +1 -1
  474. package/dist/util/state.js +17 -3
  475. package/dist/util/state.js.map +1 -1
  476. package/package.json +1 -1
  477. package/dist/skills/found-skill.d.ts +0 -35
  478. package/dist/skills/found-skill.d.ts.map +0 -1
  479. package/dist/skills/found-skill.js +0 -66
  480. package/dist/skills/found-skill.js.map +0 -1
@@ -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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"}
@@ -0,0 +1,194 @@
1
+ import { flatLine } from '../notes/flatten.js';
2
+ import { JOB_CLASSES } from '../trace/jobs.js';
3
+ import { hostFacts } from './host-facts.js';
4
+ import { FROM_TRAIL, quoteOf } from './directive-words.js';
5
+ import { notSaved } from './offer-words.js';
6
+ /** Moment 5 (4.7). `line2*` end with the keys the person answers with. */
7
+ export const UPDATE_COPY = {
8
+ line1Update: '{check} This time step {step} of {name} failed and {cmds} worked instead.',
9
+ line1Preference: '{check} This time {steps} of {name} ran as {cmds}, the way {follows} says.',
10
+ line2Preference: 'Change {steps} of {name} to match? {size} (yes / show me / no)',
11
+ line1Extend: '{check} This time {name} also needed {cmds} {where}.',
12
+ line1Split: '{check} This time {name} ran only steps {from} to {to}, as it did last time.',
13
+ line2Lesson: 'Fold your {date} lesson into {name} as {steps}? {size} (yes / show me / no)',
14
+ line2TwoUses: 'Add {it} to {name} as {steps}? {They} ran in your last 2 {jobs}. {size} (yes / show me / no)',
15
+ line2Update: 'Change step {step} of {name} to the command that worked? {size} (yes / show me / no)',
16
+ line2Split: 'Keep steps {from} to {to} as their own skill, {new}, beside {name}? (yes / show me / no)',
17
+ size: '{n} line changes.',
18
+ handEdited: 'You changed {name} by hand, so Trail writes it beside your file for you to compare.',
19
+ reason: 'Skill {name} just ran and checked out, and this run did one thing differently; Trail offers once to change the skill to match.',
20
+ offered: 'Trail offered to change the skill {name} to match how this job just ran',
21
+ 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}.',
22
+ offeredSplit: 'Trail offered to keep steps of a skill as a skill of their own, {name}',
23
+ };
24
+ /** Moment 6 (4.8, J15, P16). */
25
+ export const DRIFT_COPY = {
26
+ line1: '{check} {name} needs a fix, and this {job} went another way: {how}.',
27
+ line2: 'Replace {name} with the {k} steps that just worked, retire it, or leave it? (replace / retire / leave it)',
28
+ line2Hand: 'Write the {k} steps that just worked beside your edited {name}, retire it, or leave it? (replace / retire / leave it)',
29
+ 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.',
30
+ offered: 'Trail offered to replace the skill {name} with the steps that just worked',
31
+ };
32
+ /** The retire proposal (4.9, P13). */
33
+ export const RETIRE_COPY = {
34
+ line1: 'Trail brought in skill {name} {n} times lately, and its steps ran in {k} of them.',
35
+ line2: 'Retire it? trail skills restore {name} brings it back. (retire / keep it)',
36
+ 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.',
37
+ offered: 'Trail offered to retire the skill {name}',
38
+ retired: 'Trail retired {name}. Tell them in one line, with how to bring it back: trail skills restore {name}.',
39
+ busy: "Trail couldn't retire it just now: the person can run trail forget {name}. Tell them that in one line.",
40
+ };
41
+ const LINE_MAX = 400;
42
+ const fill = (t, v) => t.replace(/\{(\w+)\}/g, (m, k) => (v[k] === undefined ? m : String(v[k])));
43
+ const one = (v, max = 60) => flatLine(v, max);
44
+ /** A command as a line shows it (R24): one line, at most 60 characters, its own single quotes made double, in single quotes. */
45
+ export const quoted = (cmd) => `'${one(String(cmd ?? '').replace(/'/g, '"'), 60)}'`;
46
+ const both = (items) => (items.length < 2 ? items.join('') : `${items.slice(0, -1).join(', ')} and ${items[items.length - 1]}`);
47
+ const nounOf = (job) => JOB_CLASSES.find((j) => j.job === job)?.noun ?? job ?? 'job';
48
+ const MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
49
+ /** A lesson's local date ('2026-10-30') as 'Oct 30'; never shifted by the time zone. */
50
+ function dayWords(local) {
51
+ const m = /^(\d{4})-(\d{2})-(\d{2})/.exec(String(local ?? ''));
52
+ return m && MONTHS[Number(m[2]) - 1] ? `${MONTHS[Number(m[2]) - 1]} ${Number(m[3])}` : 'an earlier';
53
+ }
54
+ const pairOf = (a, b) => [flatLine(a, LINE_MAX), flatLine(b, LINE_MAX)];
55
+ /** 4.7: moment 5's two lines. */
56
+ export function updateLines(f) {
57
+ const C = UPDATE_COPY;
58
+ const name = one(f.name);
59
+ const check = one(f.check, 160);
60
+ const cmds = both(f.cmds.slice(0, 2).map(quoted));
61
+ const size = f.handEdited ? fill(C.handEdited, { name }) : fill(C.size, { n: Math.max(0, Math.floor(f.changes)) });
62
+ if (f.op === 'split' && f.split) {
63
+ const s = { from: f.split.from, to: f.split.to };
64
+ return pairOf(fill(C.line1Split, { check, name, ...s }), fill(C.line2Split, { ...s, name, new: one(f.split.name) }));
65
+ }
66
+ if (f.op === 'update') {
67
+ if (f.why === 'preference' && f.follows) {
68
+ const ns = f.steps?.length ? f.steps : [f.at];
69
+ const steps = ns.length === 1 ? `step ${ns[0]}` : `steps ${both(ns.map(String))}`;
70
+ const all = f.cmds.map(quoted);
71
+ const ran = all.length > 2 ? `${all.slice(0, 2).join(', ')} and ${all.length - 2} more` : both(all);
72
+ return pairOf(fill(C.line1Preference, { check, name, steps, cmds: ran, follows: one(f.follows) }), fill(C.line2Preference, { steps, name, size }));
73
+ }
74
+ return pairOf(fill(C.line1Update, { check, name, step: f.at, cmds }), fill(C.line2Update, { step: f.at, name, size }));
75
+ }
76
+ const n = Math.min(2, Math.max(1, f.cmds.length));
77
+ const steps = n === 1 ? `step ${f.at + 1}` : `steps ${f.at + 1} and ${f.at + 2}`;
78
+ const where = f.at > 0 ? `after step ${f.at}` : 'before step 1';
79
+ const line1 = fill(C.line1Extend, { check, name, cmds, where });
80
+ const line2 = f.why === 'lesson'
81
+ ? fill(C.line2Lesson, { date: dayWords(f.lessonDate), name, steps, size })
82
+ : fill(C.line2TwoUses, { it: n === 1 ? 'it' : 'them', They: n === 1 ? 'It' : 'They', name, steps, jobs: `${nounOf(f.job)}s`, size });
83
+ return pairOf(line1, line2);
84
+ }
85
+ /** 4.8: moment 6's two lines; at most 2 named each way. */
86
+ export function driftLines(f) {
87
+ const C = DRIFT_COPY;
88
+ const name = one(f.name);
89
+ const skipped = both(f.skipped.slice(0, 2).map((s) => `${quoted(s.cmd)} (step ${s.n})`));
90
+ const ran = both(f.ran.slice(0, 2).map(quoted));
91
+ const how = skipped && ran ? `it skipped ${skipped} and ran ${ran}` : skipped ? `it skipped ${skipped}` : `it ran ${ran}`;
92
+ const line1 = fill(C.line1, { check: one(f.check, 160), name, job: nounOf(f.job), how });
93
+ return pairOf(line1, fill(f.handEdited ? C.line2Hand : C.line2, { name, k: Math.max(0, Math.floor(f.steps)) }));
94
+ }
95
+ /** 4.9: the retire proposal's two lines. */
96
+ export function retireLines(f) {
97
+ const name = one(f.name);
98
+ return pairOf(fill(RETIRE_COPY.line1, { name, n: Math.floor(f.fired), k: Math.floor(f.followed) }), fill(RETIRE_COPY.line2, { name }));
99
+ }
100
+ /** Why the 2 lines end the reply (as 1a and 1b say it). */
101
+ const SO_THEY_ANSWER = 'so the person can answer (Trail reads their answer to the last line, so keep it as it is)';
102
+ const CHECKS = 'Trail checks their answer in this session before it changes anything';
103
+ const CHECKS_KEEP = 'Trail checks their answer in this session before it keeps anything';
104
+ const idOf = (o) => one(o.offerId, 40);
105
+ const runOf = (o) => one(o.runId, 40);
106
+ const isSplit = (o) => o.moment === 'update' && o.fold?.op === 'split';
107
+ /** The skill an offer is about: its folder name. A split's offer names the new skill (its lines name the old one). */
108
+ const skillName = (o) => one(o.name);
109
+ function reason(o) {
110
+ const name = skillName(o);
111
+ if (o.moment === 'drift')
112
+ return fill(DRIFT_COPY.reason, { name });
113
+ if (o.moment === 'retire')
114
+ return fill(RETIRE_COPY.reason, { name });
115
+ if (isSplit(o))
116
+ return fill(UPDATE_COPY.reasonSplit, { name });
117
+ return fill(UPDATE_COPY.reason, { name });
118
+ }
119
+ /** The command a yes runs (4.11): `trail skills update` for update, extend and replace; 1a's add for a split. */
120
+ export function yesCommand2(o) {
121
+ if (isSplit(o))
122
+ return `trail skills add ${one(o.fold?.splitName ?? o.name)} --run ${runOf(o)}`;
123
+ return `trail skills update ${one(o.name)} --offer ${idOf(o)}`;
124
+ }
125
+ /** After "show me": the draft, then the offer's own last line again, so Trail reads the answer to it (D72). */
126
+ const showStep = (o) => `run trail skills draft ${runOf(o)} --print, paste what it prints as it is, then ask the last line again: "${one(o.lines?.[1] ?? '', 400)}"`;
127
+ function onAnswer(o) {
128
+ if (o.moment === 'retire') {
129
+ return 'If they answer retire, Trail retires it itself when it reads their answer, and tells you what to say. If they say keep it, Trail changes nothing.';
130
+ }
131
+ const checks = isSplit(o) ? CHECKS_KEEP : CHECKS;
132
+ const yesWord = o.moment === 'drift' ? 'replace' : 'yes';
133
+ const yes = `If they answer ${yesWord}, run: ${yesCommand2(o)} (${checks}), then tell them the line it prints. `;
134
+ const show = `If they say show me, ${showStep(o)}. `;
135
+ if (o.moment === 'drift')
136
+ return `${yes}If they say retire, Trail retires it itself when it reads their answer. ${show}If they say leave it, Trail changes nothing.`;
137
+ return `${yes}${show}If they say no, Trail changes nothing.`;
138
+ }
139
+ /** 3.5 (R11): the Stop block's reason for moments 5, 6 and the retire proposal, given its 2 lines. */
140
+ export function blockReason2(o, [a, b]) {
141
+ 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)}`;
142
+ }
143
+ /** 3.4: the post-tool text, for completeness (these moments go out at Stop only, R13). */
144
+ export function postTool2(o, [a, b]) {
145
+ 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`
146
+ + "If the job isn't done yet, or you are about to ask the person something, leave them out.";
147
+ }
148
+ /** `[trail] From Trail, ... They typed "x" <tail>`: the D107 opening, quoting the person's words when there are any. */
149
+ function said(typed, tail) {
150
+ const q = quoteOf(typed);
151
+ return ['[trail]', FROM_TRAIL, q ? `They typed "${q}"${tail.startsWith('to ') ? ' ' : '. '}${tail}` : tail].join(' ');
152
+ }
153
+ function offered(o) {
154
+ const name = skillName(o);
155
+ if (o.moment === 'drift')
156
+ return fill(DRIFT_COPY.offered, { name });
157
+ if (o.moment === 'retire')
158
+ return fill(RETIRE_COPY.offered, { name });
159
+ if (isSplit(o))
160
+ return fill(UPDATE_COPY.offeredSplit, { name });
161
+ return fill(UPDATE_COPY.offered, { name });
162
+ }
163
+ /**
164
+ * 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
165
+ * where the host shows its reason). `c.retired`: the retire the prompt hook made (the folder name), or null when the
166
+ * store was busy and nothing moved.
167
+ */
168
+ export function answer2(a, o, c, env, typed, host) {
169
+ switch (a) {
170
+ case 'yes': {
171
+ const what = isSplit(o) ? 'to the new skill Trail showed,' : 'to the change Trail showed for';
172
+ const check = isSplit(o) ? CHECKS_KEEP : CHECKS;
173
+ const then = isSplit(o) ? ' Then tell them the line it prints.' : '';
174
+ return { context: said(typed, `${what} ${skillName(o)}. Run: ${yesCommand2(o)}. ${check}.${then}`) };
175
+ }
176
+ case 'show':
177
+ return { context: said(typed, `${offered(o)}, and they want to see it first. To show them, ${showStep(o)}, since Trail reads their answer to that question.`) };
178
+ case 'retire': {
179
+ const name = one(o.retire?.name ?? o.name);
180
+ return { context: said(typed, c.retired ? fill(RETIRE_COPY.retired, { name: one(c.retired) }) : fill(RETIRE_COPY.busy, { name })) };
181
+ }
182
+ case 'no': {
183
+ const say = notSaved(c).replace(/^OK, not saved\./, 'OK, nothing changed.');
184
+ if (hostFacts(env, host).promptBlockShown)
185
+ return { block: `trail: ${say}` };
186
+ return { context: said(typed, `${offered(o)}, and they said no, so Trail changed nothing. Let them know: "${say}"`) };
187
+ }
188
+ default:
189
+ return o.channel === 'notice' ? {} : {
190
+ context: said(typed, `That isn't an answer to Trail's offer (${offered(o).replace(/^Trail offered /, '')}), so Trail dropped the offer and changed nothing. No need to bring the offer up again.`),
191
+ };
192
+ }
193
+ }
194
+ //# sourceMappingURL=offer-words-2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offer-words-2.js","sourceRoot":"","sources":["../../src/skills/offer-words-2.ts"],"names":[],"mappings":"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"}