@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,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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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * The words of a repeated-job offer and of the answers to it (design 3.4,
3
+ * 3.5, 4.12, spec 9). Re-exported from `offers.ts`, where the design names
4
+ * them.
5
+ *
6
+ * An offer is exactly 2 lines the agent says word for word: what checked out
7
+ * and what it cost, in numbers counted from the transcript, then the
8
+ * question with its three keys. Every value is flattened to one line, so a
9
+ * branch name or a version from a command can never add a line. Never
10
+ * "memory" or "remember", no em dashes: a test greps every string here.
11
+ */
12
+ import type { Host } from '../trace/host.js';
13
+ import type { DialectUse } from '../trace/dialect.js';
14
+ import type { CheckHit, JobClass, PendingOffer } from '../trace/types.js';
15
+ import type { HookOut } from './types.js';
16
+ export interface OfferFacts {
17
+ job: JobClass;
18
+ check: CheckHit;
19
+ ordinal: number;
20
+ unit: 'day' | 'time';
21
+ commands: number;
22
+ failed: number;
23
+ steps: number;
24
+ where: 'this repo' | 'every repo';
25
+ branches: string[];
26
+ }
27
+ /** For `trail skills` (2.10), once per time the governor turns on. */
28
+ export declare const GOVERNOR_LINE = "you kept fewer than 1 in 3 offers lately, so a job now has to come back a 4th day before Trail offers it";
29
+ export declare function ordinalWord(n: number): string;
30
+ /** 1b (4.13): the check's own line, as moment 2's line 1 opens (`Tests pass (12 passed).`), for moment 3's line 1. */
31
+ export declare function checkLine(check: CheckHit, branches?: string[]): string;
32
+ /** 4.12's line 2: the question an offer's yes answers. `n` is the skill's steps (a separate check counts as one). */
33
+ export declare function keepLine(n: number, where?: 'this repo' | 'every repo'): string;
34
+ /** `line` is a line 2 that `keepLine` (or moment 3's `repairLines`) writes, and nothing else (a question of the agent's own is not). */
35
+ export declare function isKeepLine(line: string): boolean;
36
+ /** The question after "show me" and the draft (4.12): a yes after the draft answers this. */
37
+ export declare const KEEP_IT = "Keep it? (yes / no)";
38
+ /** The reply's last words are `line` (said word for word as its last line): nothing after it, no question of the agent's own. */
39
+ export declare function endsWithLine(reply: string, line: string): boolean;
40
+ /** 4.12: exactly 2 lines, every number counted from the trace, every value flattened. */
41
+ export declare function offerLines(f: OfferFacts): [string, string];
42
+ /**
43
+ * 3.5: the Stop block's reason, which the agent reads. D101: from Trail, with Trail's own reason for offering; the
44
+ * 2 lines are Trail's question for the person, never an order to recite.
45
+ */
46
+ export declare function stopBlockReason(o: PendingOffer, transcriptPath?: string | null, use?: DialectUse): string;
47
+ /** 3.5: the Stop notice the person reads (channel `notice`). */
48
+ export declare function noticeText(o: PendingOffer, transcriptPath?: string | null, use?: DialectUse): string;
49
+ /** 3.4: the passing check's PostToolUse context (channel `post-tool`). */
50
+ export declare function postToolOfferText(o: PendingOffer, transcriptPath?: string | null): string;
51
+ /** What "OK, not saved." grows into: the way to stop offers on the first no ever, the pause when it starts. */
52
+ export declare function notSaved(c: {
53
+ paused: boolean;
54
+ firstNo: boolean;
55
+ }): string;
56
+ /**
57
+ * 4.12, as context on the answering prompt; a bare no as a block where the host shows its reason (O2). D101: each
58
+ * directive says it is from Trail, quotes the words the person typed (`typed`, from the prompt hook's payload, never
59
+ * stored) and says why. 1b: a moment 3 or 4 offer's answers are `answer1b`'s, which need no lines.
60
+ */
61
+ export declare function answerDirective(a: 'yes' | 'show' | 'no' | 'other', o: PendingOffer, c: {
62
+ paused: boolean;
63
+ firstNo: boolean;
64
+ }, env?: NodeJS.ProcessEnv, typed?: string, host?: Host): HookOut;
65
+ //# sourceMappingURL=offer-words.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offer-words.d.ts","sourceRoot":"","sources":["../../src/skills/offer-words.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAY1C,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IACtE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,WAAW,GAAG,YAAY,CAAC;IACnF,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,sEAAsE;AACtE,eAAO,MAAM,aAAa,6GAA6G,CAAC;AAKxI,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAK7C;AAoDD,sHAAsH;AACtH,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAE,MAAM,EAAO,GAAG,MAAM,CAE1E;AAED,qHAAqH;AACrH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,WAAW,GAAG,YAA0B,GAAG,MAAM,CAG3F;AAKD,wIAAwI;AACxI,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGhD;AAED,6FAA6F;AAC7F,eAAO,MAAM,OAAO,wBAAwB,CAAC;AAK7C,iIAAiI;AACjI,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAGjE;AAED,yFAAyF;AACzF,wBAAgB,UAAU,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAO1D;AAuBD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,YAAY,EAAE,cAAc,GAAE,MAAM,GAAG,IAAW,EAAE,GAAG,CAAC,EAAE,UAAU,GAAG,MAAM,CAU/G;AAED,gEAAgE;AAChE,wBAAgB,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE,cAAc,GAAE,MAAM,GAAG,IAAW,EAAE,GAAG,CAAC,EAAE,UAAU,GAAG,MAAM,CAK1G;AAED,0EAA0E;AAC1E,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,YAAY,EAAE,cAAc,GAAE,MAAM,GAAG,IAAW,GAAG,MAAM,CAQ/F;AAED,+GAA+G;AAC/G,wBAAgB,QAAQ,CAAC,CAAC,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAIzE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,EAAE,KAAK,GAAE,MAAW,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,OAAO,CAmB7M"}
@@ -0,0 +1,205 @@
1
+ import { flatLine } from '../notes/flatten.js';
2
+ import { JOB_CLASSES } from '../trace/jobs.js';
3
+ import { hostFacts } from './host-facts.js';
4
+ import { directive, FROM_TRAIL } from './directive-words.js';
5
+ import { offerLinesOf } from './offer-lines.js';
6
+ import { answer1b, blockReason1b, postTool1b } from './offer-words-1b.js';
7
+ import { answer2, blockReason2, postTool2 } from './offer-words-2.js';
8
+ /** Phase 2 (R11): moments 5 and 6 and the retire proposal have words of their own (offer-words-2.ts). */
9
+ const isPhase2 = (o) => o.moment === 'update' || o.moment === 'drift' || o.moment === 'retire';
10
+ /** For `trail skills` (2.10), once per time the governor turns on. */
11
+ export const GOVERNOR_LINE = 'you kept fewer than 1 in 3 offers lately, so a job now has to come back a 4th day before Trail offers it';
12
+ /** One line, at most `max` characters; '' when nothing is left. */
13
+ const one = (v, max = 40) => flatLine(v, max);
14
+ export function ordinalWord(n) {
15
+ const k = Math.max(0, Math.floor(n));
16
+ const teen = k % 100;
17
+ if (teen >= 11 && teen <= 13)
18
+ return `${k}th`;
19
+ return `${k}${['th', 'st', 'nd', 'rd'][k % 10] ?? 'th'}`;
20
+ }
21
+ const plural = (n, word) => `${n} ${word}${n === 1 ? '' : 's'}`;
22
+ /** "beta and prod", "beta, staging and prod". */
23
+ function listed(items) {
24
+ if (items.length < 2)
25
+ return items.join('');
26
+ return `${items.slice(0, -1).join(', ')} and ${items[items.length - 1]}`;
27
+ }
28
+ /** The ship subject and its verb: "beta and prod are both", "prod is", "beta, staging and prod are all". */
29
+ function shipSubject(branches) {
30
+ const b = [...new Set(branches.map((x) => one(x)).filter(Boolean))];
31
+ if (!b.length)
32
+ return null;
33
+ if (b.length === 1)
34
+ return `${b[0]} is`;
35
+ return `${listed(b)} are ${b.length === 2 ? 'both' : 'all'}`;
36
+ }
37
+ /** 4.12's lead: what checked out, from the check's facts. Facts missing: the plainer words. */
38
+ function lead(f) {
39
+ const facts = f.check.facts;
40
+ const sha = one(facts.sha ?? '').slice(0, 7);
41
+ switch (f.check.family) {
42
+ case 'npm-view': {
43
+ const v = one(facts.version ?? '');
44
+ return `Published ${v || 'the new version'}: npm shows it.`;
45
+ }
46
+ case 'deploy': {
47
+ const state = one(facts.state ?? '') || 'ready';
48
+ const subject = shipSubject(f.branches);
49
+ if (subject)
50
+ return `Shipped: ${subject}${sha ? ` at ${sha}` : ''} and ${state}.`;
51
+ return `Shipped: the deploy${sha ? ` at ${sha}` : ''} is ${state}.`;
52
+ }
53
+ case 'ls-remote':
54
+ case 'push': {
55
+ const remote = one(facts.remote ?? '') || 'the remote';
56
+ const subject = shipSubject(f.branches.length ? f.branches : facts.branch ? [facts.branch] : []);
57
+ if (subject && sha)
58
+ return `Shipped: ${subject} at ${sha} on ${remote}.`;
59
+ if (subject)
60
+ return `Shipped: ${subject.replace(/ (?:is|are (?:both|all))$/, '')} moved on ${remote}.`;
61
+ return `Shipped: ${sha ? `${sha} is` : 'it is'} on ${remote}.`;
62
+ }
63
+ case 'tests': {
64
+ const n = facts.passedCount;
65
+ return typeof n === 'number' && Number.isFinite(n) && n > 0 ? `Tests pass (${Math.floor(n)} passed).` : 'Tests pass.';
66
+ }
67
+ case 'query':
68
+ return 'Done: the numbers are in.';
69
+ default:
70
+ return 'Done: the check passed.';
71
+ }
72
+ }
73
+ /** 1b (4.13): the check's own line, as moment 2's line 1 opens (`Tests pass (12 passed).`), for moment 3's line 1. */
74
+ export function checkLine(check, branches = []) {
75
+ return lead({ check, branches });
76
+ }
77
+ /** 4.12's line 2: the question an offer's yes answers. `n` is the skill's steps (a separate check counts as one). */
78
+ export function keepLine(n, where = 'this repo') {
79
+ const k = Math.max(0, Math.floor(n));
80
+ return `Keep the ${k === 1 ? 'one' : k} that worked as a skill, just for you in ${where === 'every repo' ? 'every repo' : 'this repo'}? (yes / show me / no)`;
81
+ }
82
+ const KEEP_RE = /^Keep the (?:one|[1-9]\d*) that worked as a skill, just for you in (?:this repo|every repo)\? \(yes \/ show me \/ no\)$/;
83
+ /** Moment 3's line 2 for a skill (4.13, offer-repair.ts `repairLines`). */
84
+ const REPAIR_KEEP_RE = /^Keep the [1-9]\d* working steps as a skill, just for you in this repo\? \(yes \/ show me \/ no\)$/;
85
+ /** `line` is a line 2 that `keepLine` (or moment 3's `repairLines`) writes, and nothing else (a question of the agent's own is not). */
86
+ export function isKeepLine(line) {
87
+ const l = String(line ?? '');
88
+ return KEEP_RE.test(l) || REPAIR_KEEP_RE.test(l);
89
+ }
90
+ /** The question after "show me" and the draft (4.12): a yes after the draft answers this. */
91
+ export const KEEP_IT = 'Keep it? (yes / no)';
92
+ /** Spaces collapsed, and what a reply may dress its last line with (bold, italics, quotes, a full stop) taken off the end. */
93
+ const bare = (t) => String(t ?? '').replace(/\s+/g, ' ').trim().replace(/[\s*_`"'\u2018\u2019\u201c\u201d.]+$/u, '');
94
+ /** The reply's last words are `line` (said word for word as its last line): nothing after it, no question of the agent's own. */
95
+ export function endsWithLine(reply, line) {
96
+ const l = bare(line);
97
+ return l.length > 0 && bare(reply).endsWith(l);
98
+ }
99
+ /** 4.12: exactly 2 lines, every number counted from the trace, every value flattened. */
100
+ export function offerLines(f) {
101
+ const noun = JOB_CLASSES.find((j) => j.job === f.job)?.noun ?? 'job';
102
+ const commands = Math.max(0, Math.floor(f.commands));
103
+ const failed = Math.max(0, Math.floor(f.failed));
104
+ const cost = failed ? `${plural(commands, 'command')} this time, ${failed} failed` : `${plural(commands, 'command')} this time`;
105
+ const line1 = `${lead(f)} That's the ${ordinalWord(f.ordinal)} ${f.unit === 'day' ? 'day' : 'time'} I've worked out this ${noun} from scratch (${cost}).`;
106
+ return [flatLine(line1, 400), flatLine(keepLine(f.steps, f.where), 400)];
107
+ }
108
+ /**
109
+ * 1b (R12): the offer's lines through offerLinesOf (a correction's are rebuilt from the transcript); null when it has
110
+ * none, and then its texts are empty, so nothing goes out.
111
+ */
112
+ function lines(o, transcriptPath, use) {
113
+ const l = offerLinesOf(o, transcriptPath, process.env, use);
114
+ return l ? [flatLine(l[0], 400), flatLine(l[1], 400)] : null;
115
+ }
116
+ const nameOf = (o) => one(o.name, 60);
117
+ const runOf = (o) => one(o.runId, 40);
118
+ /** D101: Trail's own reason for an offer, from its count: "Trail noticed this job worked out on 3 days; it offers once to keep it." */
119
+ function offerReason(o) {
120
+ const n = Math.floor(Number(o.seen?.n));
121
+ const how = !Number.isFinite(n) || n < 2 ? 'more than once' : o.seen?.unit === 'time' ? `${n} times` : `on ${n} days`;
122
+ return `Trail noticed this job worked out ${how}; it offers once to keep it.`;
123
+ }
124
+ /** Why the 2 lines end the reply: the person answers the last one, and Trail matches that answer to its words. */
125
+ const SO_THEY_ANSWER = 'so the person can answer (Trail reads their answer to the last line, so keep it as it is)';
126
+ /**
127
+ * 3.5: the Stop block's reason, which the agent reads. D101: from Trail, with Trail's own reason for offering; the
128
+ * 2 lines are Trail's question for the person, never an order to recite.
129
+ */
130
+ export function stopBlockReason(o, transcriptPath = null, use) {
131
+ const both = lines(o, transcriptPath, use);
132
+ if (!both)
133
+ return '';
134
+ if (isPhase2(o))
135
+ return blockReason2(o, both);
136
+ if (o.moment !== 'repeated')
137
+ return blockReason1b(o, both);
138
+ const [a, b] = both;
139
+ return `[trail] ${FROM_TRAIL} ${offerReason(o)} If the job is done, end your reply with these 2 lines, ${SO_THEY_ANSWER}:\n${a}\n${b}\n`
140
+ + `If they answer yes, run: trail skills add ${nameOf(o)} --run ${runOf(o)} (Trail checks their yes in this session before it keeps anything), then tell them the line it prints. `
141
+ + `If they say show me, run trail skills draft ${runOf(o)} --print, paste what it prints, and ask "${KEEP_IT}". `
142
+ + 'If they say no, Trail keeps nothing.';
143
+ }
144
+ /** 3.5: the Stop notice the person reads (channel `notice`). */
145
+ export function noticeText(o, transcriptPath = null, use) {
146
+ const both = lines(o, transcriptPath, use);
147
+ if (!both)
148
+ return '';
149
+ const [a, b] = both;
150
+ return `trail: ${a}\n${b}`;
151
+ }
152
+ /** 3.4: the passing check's PostToolUse context (channel `post-tool`). */
153
+ export function postToolOfferText(o, transcriptPath = null) {
154
+ const both = lines(o, transcriptPath);
155
+ if (!both)
156
+ return '';
157
+ if (isPhase2(o))
158
+ return postTool2(o, both);
159
+ if (o.moment !== 'repeated')
160
+ return postTool1b(o, both);
161
+ const [a, b] = both;
162
+ return `[trail] ${FROM_TRAIL} ${offerReason(o)} If this check finishes the job, end your reply with these 2 lines, ${SO_THEY_ANSWER}:\n${a}\n${b}\n`
163
+ + "If the job isn't done yet, or you are about to ask the person something, leave them out.";
164
+ }
165
+ /** What "OK, not saved." grows into: the way to stop offers on the first no ever, the pause when it starts. */
166
+ export function notSaved(c) {
167
+ if (c.paused)
168
+ return "OK, not saved. I won't offer skills in this repo for 2 weeks. (To stop them everywhere: trail skills offers off)";
169
+ if (c.firstNo)
170
+ return 'OK, not saved. (To stop these offers: trail skills offers off)';
171
+ return 'OK, not saved.';
172
+ }
173
+ /**
174
+ * 4.12, as context on the answering prompt; a bare no as a block where the host shows its reason (O2). D101: each
175
+ * directive says it is from Trail, quotes the words the person typed (`typed`, from the prompt hook's payload, never
176
+ * stored) and says why. 1b: a moment 3 or 4 offer's answers are `answer1b`'s, which need no lines.
177
+ */
178
+ export function answerDirective(a, o, c, env = process.env, typed = '', host) {
179
+ if (isPhase2(o))
180
+ return answer2(a, o, c, env, typed, host);
181
+ if (o.moment !== 'repeated')
182
+ return answer1b(a, o, notSaved(c), env, typed, host);
183
+ switch (a) {
184
+ case 'yes':
185
+ return { context: directive(typed, `${OFFERED}, and this is their answer. To keep it as they said, run: trail skills add ${nameOf(o)} --run ${runOf(o)}. ${CHECKS_YES} Then tell them the line it prints.`) };
186
+ case 'show':
187
+ return { context: directive(typed, `${OFFERED}, and they want to see it first. Run trail skills draft ${runOf(o)} --print, paste what it prints as it is, then ask "${KEEP_IT}", since Trail reads their answer to that question.`) };
188
+ case 'no': {
189
+ const say = notSaved(c);
190
+ if (hostFacts(env, host).promptBlockShown)
191
+ return { block: `trail: ${say}` };
192
+ return { context: directive(typed, `${OFFERED}, and they said no, so Trail kept nothing. Let them know: "${say}"`) };
193
+ }
194
+ default:
195
+ // The agent said the offer (stop, post-tool): it can let it go. A notice it never saw needs nothing.
196
+ return o.channel === 'notice' ? {} : {
197
+ context: directive(typed, "That isn't an answer to Trail's offer to keep the last job as a skill, so Trail dropped the offer and kept nothing. No need to bring the offer up again."),
198
+ };
199
+ }
200
+ }
201
+ /** What an answer directive says the offer was. */
202
+ const OFFERED = 'Trail offered to keep the last job as a skill';
203
+ /** Why the agent may run the add: the gate checks the yes, the agent's word is not taken for it. */
204
+ const CHECKS_YES = 'Trail checks their yes in this session before it keeps anything.';
205
+ //# sourceMappingURL=offer-words.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offer-words.js","sourceRoot":"","sources":["../../src/skills/offer-words.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import type { PendingOffer } from '../trace/types.js';
2
+ import type { Answer, OfferLine } from './types.js';
3
+ export { answerDirective, endsWithLine, isKeepLine, keepLine, noticeText, offerLines, postToolOfferText, stopBlockReason, GOVERNOR_LINE, KEEP_IT, type OfferFacts, } from './offer-words.js';
4
+ /** <home>/offers.jsonl */
5
+ export declare function offersPath(env?: NodeJS.ProcessEnv): string;
6
+ export declare function readOffers(env?: NodeJS.ProcessEnv): OfferLine[];
7
+ /** OfferLine's `answer` as the final one, null when never answered (`OfferLine & { answer: Answer | null }` can't hold null). */
8
+ export type OfferRecord = Omit<OfferLine, 'answer'> & {
9
+ answer: Answer | null;
10
+ };
11
+ /**
12
+ * Folds 'shown' + 'answer' + 'not-shown' lines by id: one record per offer with its final answer. The record's
13
+ * `at` is when it was shown; `not-shown` (the agent left it out) wins over `shown`; the last answer wins.
14
+ */
15
+ export declare function foldOffers(lines: OfferLine[]): OfferRecord[];
16
+ export interface BudgetCtx {
17
+ repoKey: string;
18
+ key: string;
19
+ sessionOfferUsed: boolean;
20
+ now?: Date;
21
+ env?: NodeJS.ProcessEnv;
22
+ }
23
+ export type BudgetVerdict = {
24
+ ok: true;
25
+ extraDay: boolean;
26
+ secondChance: boolean;
27
+ } | {
28
+ ok: false;
29
+ why: 'session' | 'week' | 'first-week' | 'said-no' | 'paused' | 'off' | 'off-here' | 'no-answer-twice' | 'too-soon';
30
+ };
31
+ /** 4.13, steps 1 to 8 in order. */
32
+ export declare function offerBudget(c: BudgetCtx): BudgetVerdict;
33
+ export declare function recordShown(o: PendingOffer, repoKey: string, env?: NodeJS.ProcessEnv, now?: Date): void;
34
+ /** A stop or post-tool offer the agent left out: the session stays spent; the week and the governor ignore it. */
35
+ export declare function recordNotShown(o: PendingOffer, repoKey: string, env?: NodeJS.ProcessEnv, now?: Date): void;
36
+ /**
37
+ * Records the answer and refreshes settings.lastNine. The 2nd 'no' in a row in this repo pauses it 14 days.
38
+ * Phase 2 (2.4): `op` says which change a yes chose (a fold op, drift's 'replace', or 'retire'); `answer` stays 1a's.
39
+ */
40
+ export declare function recordAnswer(o: PendingOffer, repoKey: string, a: Answer, env?: NodeJS.ProcessEnv, now?: Date, op?: OfferLine['op']): {
41
+ paused: boolean;
42
+ firstNo: boolean;
43
+ };
44
+ /**
45
+ * For `trail skills` (2.10): the governor line the first time it is printed while the governor is on (records
46
+ * governorSaidAt through noteGovernor); null otherwise. noteGovernor clears governorSaidAt when the governor turns
47
+ * off, so it is said again next time.
48
+ */
49
+ export declare function governorLine(env?: NodeJS.ProcessEnv, now?: Date): string | null;
50
+ /**
51
+ * Init's `closed` line (2.4, 4.20, R53): an item the person was shown at `trail init` and didn't keep. It counts as
52
+ * "said no" for `key` forever, and for nothing else: not the session, the week, the first week, the pause or the
53
+ * governor (P10). Its only writer; b6 calls it for each skill key init closes.
54
+ */
55
+ export declare function recordInitClosed(repoKey: string, key: string, env?: NodeJS.ProcessEnv, now?: Date): void;
56
+ /** Moment 5's key: `<skillId>|update|v<n>`. */
57
+ export declare const updateOfferKey: (skillId: string, version: number) => string;
58
+ /** Moment 6's key: `<skillId>|drift|v<n>`. */
59
+ export declare const driftOfferKey: (skillId: string, version: number) => string;
60
+ /** The retire proposal's key: `<skillId>|retire`. */
61
+ export declare const retireOfferKey: (skillId: string) => string;
62
+ /** The skill a skill-keyed offer names (moments 4, 5, 6 and the retire proposal); null for a repo-keyed one (2, 3). */
63
+ export declare function skillOfOfferKey(key: string): string | null;
64
+ /** 'o-' + 6 hex */
65
+ export declare function newOfferId(): string;
66
+ //# sourceMappingURL=offers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offers.d.ts","sourceRoot":"","sources":["../../src/skills/offers.ts"],"names":[],"mappings":"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"}