@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,166 @@
1
+ /**
2
+ * Phase 1b's CLI surface (design 1.7), beside `cli-skills.ts`:
3
+ * - `trail skills lesson [<skill>] --offer <offer-id>`: the CLI half of a
4
+ * lesson save (4.15, `keepLessonCli`); it re-decides from the transcript.
5
+ * - `trail skills draft init-<n> --print`: the pending init skill compiled
6
+ * again from its source and printed. Writes nothing.
7
+ * - `trail forget <id or name>`: a skill lesson id (`ls-…`) or a learning id
8
+ * (`l-…`: a guardrail or a wall lesson) first, then a kept guardrail's
9
+ * name (`no-timeout`, the way out its deny names), then a skill. A
10
+ * learning is marked retired, never deleted; a skill lesson moves to its
11
+ * skill's `lessons/.forgotten/`.
12
+ */
13
+ import { lstatSync, mkdirSync, readdirSync, readFileSync, renameSync, statSync } from 'node:fs';
14
+ import { basename, dirname, join } from 'node:path';
15
+ import { flatLine } from '../notes/flatten.js';
16
+ import { repoPlace, shownPath } from '../notes/home.js';
17
+ import { everyRepoDir } from '../notes/every-repo.js';
18
+ import { refuseLinkedIntoCheckout } from '../notes/linked-learnings.js';
19
+ import { repoNotesDir } from '../notes/repo-notes-dir.js';
20
+ import { LEARNING_ID } from '../notes/learning-fields.js';
21
+ import { parseNote, renderNote } from '../notes/notes.js';
22
+ import { writePrivate } from '../util/private-fs.js';
23
+ import { WALLS } from '../trace/walls.js';
24
+ import { readInitRecord } from '../init/init-record.js';
25
+ import { recompileInitSkill } from '../init/replay-runs.js';
26
+ import { initDraft } from '../init/review-tty.js';
27
+ import { keepLessonCli } from './lesson-gate.js';
28
+ import { skillsDir } from './store-fs.js';
29
+ const one = (t, max = 60) => flatLine(t, max);
30
+ const SKILL_LESSON_ID = /^ls-[0-9a-f]{6}$/;
31
+ /** The guardrail templates by name (`no-timeout`, `push-over-ssh`), from the wall catalog. */
32
+ const GUARDRAILS = new Map(WALLS.flatMap((w) => (w.guardrail ? [[w.guardrail.fileName.replace(/\.md$/, ''), w.guardrail]] : [])));
33
+ /** 4.15's CLI half: the saved line and exit 0, or the held line and exit 1. */
34
+ export function lessonCommand(skill, offerId, env, now) {
35
+ const r = keepLessonCli(skill, offerId, env, now);
36
+ return { code: r.code, lines: [r.line] };
37
+ }
38
+ /** `trail skills draft init-<n> --print`: the pending init skill n, compiled again from its source (R24, R37). */
39
+ export function initDraftCommand(n, cwd, env, now) {
40
+ const key = repoPlace(cwd, env).key;
41
+ const p = key ? readInitRecord(key, env).pending.find((x) => x.n === n) : undefined;
42
+ if (!p)
43
+ return { code: 1, lines: [`✗ no item ${n} waits for an answer in this repo · look back again: trail init --look-back`] };
44
+ if (p.kind !== 'skill' || !p.skill)
45
+ return { code: 1, lines: [`✗ item ${n} is a ${p.kind}, not a skill: it has no steps to show`] };
46
+ const r = recompileInitSkill(p.skill.src, key, env, now);
47
+ if (!r.ok)
48
+ return { code: 1, lines: [`✗ ${one(p.plainName)}: its past session changed or is gone, so Trail can't show the steps.`] };
49
+ return { code: 0, lines: initDraft({ ...r.compiled, name: p.plainName || r.compiled.name }) };
50
+ }
51
+ /** A plain file, not a link, whose text parses as a learning. */
52
+ function readLearning(path) {
53
+ try {
54
+ const st = lstatSync(path);
55
+ if (!st.isFile() || st.size > 64 * 1024)
56
+ return null;
57
+ return parseNote(readFileSync(path, 'utf8'), path);
58
+ }
59
+ catch {
60
+ return null;
61
+ }
62
+ }
63
+ /**
64
+ * The learnings forget may retire: every-repo ones, then this repo's personal ones. The every-repo folder may be a
65
+ * dotfiles link (D114 (1)), as the session-start lister and the guardrail read it; the per-repo one never is.
66
+ */
67
+ function learningFiles(cwd, env) {
68
+ const dirs = [[everyRepoDir(env), true]];
69
+ try {
70
+ const key = repoPlace(cwd, env).key;
71
+ if (key)
72
+ dirs.push([repoNotesDir(key, env), false]);
73
+ }
74
+ catch { /* no repo here */ }
75
+ return dirs.flatMap(([d, linkOk]) => {
76
+ try {
77
+ if (!(linkOk ? statSync(d) : lstatSync(d)).isDirectory())
78
+ return [];
79
+ return readdirSync(d).filter((f) => f.endsWith('.md')).sort().map((f) => join(d, f));
80
+ }
81
+ catch {
82
+ return [];
83
+ }
84
+ });
85
+ }
86
+ /** Marks a learning retired (it stops loading and enforcing), never deleting it, and never through a link into a Trail checkout. */
87
+ function retire(n, env) {
88
+ if (n.status === 'retired')
89
+ return { code: 0, lines: [`✓ ${one(n.title)} was already forgotten`] };
90
+ const { path, ...rest } = n;
91
+ try {
92
+ refuseLinkedIntoCheckout(dirname(path), env);
93
+ }
94
+ catch (e) {
95
+ return { code: 1, lines: [`✗ ${e.message}`] };
96
+ }
97
+ writePrivate(path, renderNote({ ...rest, status: 'retired' }));
98
+ const what = n.kind === 'guardrail' ? 'guardrail' : n.kind === 'lesson' ? 'lesson' : 'learning';
99
+ const name = what === 'guardrail' ? basename(path, '.md') : one(n.title, 60);
100
+ return {
101
+ code: 0, lines: [`✓ ${what} forgotten: ${one(n.title, 80)} · it stops loading; the file stays, marked retired: ${shownPath(path)}`],
102
+ dropped: { what, name, back: `change status: retired to status: active in ${shownPath(path)}` },
103
+ };
104
+ }
105
+ /** A skill lesson by id: its file moves to the skill's `lessons/.forgotten/`. */
106
+ function forgetSkillLesson(id, env) {
107
+ let skills;
108
+ try {
109
+ skills = readdirSync(skillsDir(env)).filter((s) => !s.startsWith('.'));
110
+ }
111
+ catch {
112
+ return null;
113
+ }
114
+ for (const skill of skills) {
115
+ const dir = join(skillsDir(env), skill, 'lessons');
116
+ let files;
117
+ try {
118
+ if (!lstatSync(dir).isDirectory())
119
+ continue;
120
+ files = readdirSync(dir).filter((f) => f.endsWith('.md'));
121
+ }
122
+ catch {
123
+ continue;
124
+ }
125
+ for (const f of files) {
126
+ const path = join(dir, f);
127
+ try {
128
+ if (!lstatSync(path).isFile())
129
+ continue;
130
+ const m = /^id:\s*"?(ls-[0-9a-f]{6})"?\s*$/m.exec(readFileSync(path, 'utf8').slice(0, 4096));
131
+ if (m?.[1] !== id)
132
+ continue;
133
+ const gone = join(dir, '.forgotten');
134
+ mkdirSync(gone, { recursive: true, mode: 0o700 });
135
+ renameSync(path, join(gone, f));
136
+ return {
137
+ code: 0, lines: [`✓ lesson ${id} forgotten · it no longer rides with ${one(skill)}`],
138
+ dropped: { what: 'lesson', name: id, back: `move ${f} from ${shownPath(gone)}/ back into ${shownPath(dir)}/` },
139
+ };
140
+ }
141
+ catch { /* the next one */ }
142
+ }
143
+ }
144
+ return null;
145
+ }
146
+ /**
147
+ * `trail forget` for what isn't a skill: an id first, then a kept guardrail's name. Null when `arg` is neither, so
148
+ * the caller tries a skill of that name; a lesson-id shape that matches nothing is an error, never a skill (b4 review).
149
+ */
150
+ export function forgetLearning(arg, cwd, env) {
151
+ if (SKILL_LESSON_ID.test(arg))
152
+ return forgetSkillLesson(arg, env) ?? { code: 1, lines: [`✗ no lesson called ${one(arg, 40)}`] };
153
+ if (LEARNING_ID.test(arg)) {
154
+ const n = learningFiles(cwd, env).map(readLearning).find((x) => x?.id === arg);
155
+ return n ? retire(n, env) : { code: 1, lines: [`✗ no learning called ${one(arg, 40)} here`] };
156
+ }
157
+ const g = GUARDRAILS.get(arg);
158
+ if (g) {
159
+ const n = learningFiles(cwd, env).map(readLearning).find((x) => x && x.kind === 'guardrail'
160
+ && (x.path.endsWith(`/${arg}.md`) || x.title === g.title) && x.status !== 'retired');
161
+ if (n)
162
+ return retire(n, env);
163
+ }
164
+ return null;
165
+ }
166
+ //# sourceMappingURL=cli-skills-1b.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-skills-1b.js","sourceRoot":"","sources":["../../src/skills/cli-skills-1b.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import type { PersonCheck } from './person.js';
2
+ import type { SkillRef } from './types.js';
3
+ /** What a phase 2 command body needs of `cli-skills.ts`'s io (it fits structurally). */
4
+ export interface CliCtx {
5
+ env: NodeJS.ProcessEnv;
6
+ now: () => Date;
7
+ person: () => PersonCheck;
8
+ track: (event: string, props: Record<string, string>) => void;
9
+ out: (l: string) => void;
10
+ err: (l: string) => void;
11
+ }
12
+ /** `trail skills update <name> --offer <id>`: the exit code, after printing what `cliUpdate` returns. */
13
+ export declare function updateCommand(name: string, opts: {
14
+ offer?: string;
15
+ }, x: CliCtx): number;
16
+ /** 4.12: `trail skills restore <name> --version <n>`, the person only. */
17
+ export declare function restoreVersionCommand(name: string, version: string, x: CliCtx): number;
18
+ /**
19
+ * 4.7 "show me": for a run whose change Trail offered (the pending update or drift offer of the run's session), the
20
+ * change as a diff of the file as it is now. null for any other run: `draft` prints 1a's draft (a split's new skill
21
+ * is one).
22
+ */
23
+ export declare function draftFoldText(runId: string, env?: NodeJS.ProcessEnv): string | null;
24
+ /** For `trail skills show`: the versions kept and a change waiting beside a hand-edited file; null when neither. */
25
+ export declare function versionsLine(ref: SkillRef, env?: NodeJS.ProcessEnv): string | null;
26
+ /**
27
+ * The CLI's own `-v, --version` is read anywhere on the command line, so it would print Trail's version for
28
+ * `trail skills restore <name> --version <n>`. For that one command the flag is taken out of argv before commander
29
+ * parses, and its value handed to the restore. `{ argv }` alone for any other command.
30
+ */
31
+ export declare function liftRestoreVersion(argv: readonly string[]): {
32
+ argv: string[];
33
+ version?: string;
34
+ };
35
+ //# sourceMappingURL=cli-skills-2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-skills-2.d.ts","sourceRoot":"","sources":["../../src/skills/cli-skills-2.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQ3C,wFAAwF;AACxF,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,GAAG,EAAE,MAAM,IAAI,CAAC;IAChB,MAAM,EAAE,MAAM,WAAW,CAAC;IAC1B,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IAC9D,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACzB,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1B;AAKD,yGAAyG;AACzG,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAUvF;AAED,0EAA0E;AAC1E,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CA2BtF;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,IAAI,CAahG;AAED,oHAAoH;AACpH,wBAAgB,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,IAAI,CAO/F;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG;IAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAkBhG"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Phase 2's CLI bodies (design 1.2, 3.6), beside `cli-skills.ts`, which
3
+ * registers them and prints:
4
+ * - `trail skills update <name> --offer <id>`: the CLI half of the update
5
+ * gate (`cliUpdate`); `skill_changed{op}` on a write.
6
+ * - `trail skills restore <name> --version <n>`: an older version back as a
7
+ * new one, the person's only (P28: `personAtTerminal` here, the agent
8
+ * guard before it).
9
+ * - `trail skills draft <run-id> --print` for a run whose change is offered:
10
+ * the change as a diff (4.7 "show me"). Writes nothing.
11
+ * - the versions a skill keeps, for `trail skills show`.
12
+ *
13
+ * Root `--version` (the CLI's own) would take `restore --version <n>`
14
+ * before the subcommand saw it, so `cli-skills.ts` lifts that flag out of
15
+ * argv for the restore (`liftRestoreVersion`) before commander parses.
16
+ */
17
+ import { flatLine } from '../notes/flatten.js';
18
+ import { readRunSheet } from '../trace/runs.js';
19
+ import { getSkillState } from './state.js';
20
+ import { listAllPersonal } from './store.js';
21
+ import { printDiff } from './skill-diff.js';
22
+ import { listVersions, restoreVersion } from './versions.js';
23
+ import { cliUpdate, replan } from './update-gate.js';
24
+ import { sessionOf } from './update-plan.js';
25
+ const one = (t, max = 60) => flatLine(t, max);
26
+ const personOnly = (command) => `Only the person can run this, in their own terminal: trail ${command}`;
27
+ /** `trail skills update <name> --offer <id>`: the exit code, after printing what `cliUpdate` returns. */
28
+ export function updateCommand(name, opts, x) {
29
+ if (!opts.offer) {
30
+ x.err('✗ trail skills update takes the offer it answers: trail skills update <name> --offer <id>');
31
+ return 1;
32
+ }
33
+ const r = cliUpdate(name, opts.offer, x.env, x.now());
34
+ for (const l of r.lines)
35
+ (r.code === 0 ? x.out : x.err)(l);
36
+ // A proposal changes no file Trail reads; adopting it later is its own `skill_changed{adopted}`.
37
+ if (r.code === 0 && r.op && !r.proposal)
38
+ x.track('skill_changed', { op: r.op });
39
+ return r.code;
40
+ }
41
+ /** 4.12: `trail skills restore <name> --version <n>`, the person only. */
42
+ export function restoreVersionCommand(name, version, x) {
43
+ const v = String(version ?? '');
44
+ const command = `skills restore ${one(name)} --version ${/^[1-9]\d{0,5}$/.test(v) ? v : '<n>'}`;
45
+ if (!x.person().ok) {
46
+ x.err(personOnly(command));
47
+ return 1;
48
+ }
49
+ if (!/^[1-9]\d{0,5}$/.test(v)) {
50
+ x.err('✗ --version takes a version number: trail skills restore <name> --version <n>');
51
+ return 1;
52
+ }
53
+ const ref = listAllPersonal(x.env).find((r) => r.name === name);
54
+ if (!ref) {
55
+ x.err(`✗ no skill called ${one(name)} · trail skills lists them`);
56
+ return 1;
57
+ }
58
+ const r = restoreVersion(ref, Number(v), x.env, x.now());
59
+ if (!r.ok) {
60
+ x.err(r.why === 'unknown' ? `✗ ${one(name)} keeps no v${v} · see what it keeps: trail skills show ${one(name)}`
61
+ : r.why === 'busy' ? '✗ the skill store is busy (another trail command is changing it). Try again.'
62
+ : r.why === 'link' ? `✗ ${one(name)}'s folder in Trail's home is a link, so Trail won't write through it`
63
+ : `✗ Trail couldn't bring back v${v} of ${one(name)}; it is as it was`);
64
+ return 1;
65
+ }
66
+ x.out(`✓ ${one(name)} has v${v}'s steps again, as v${r.version} · go back: trail skills restore ${one(name)} --version ${r.version - 1}`);
67
+ x.track('skill_changed', { op: 'restore-version' });
68
+ return 0;
69
+ }
70
+ /**
71
+ * 4.7 "show me": for a run whose change Trail offered (the pending update or drift offer of the run's session), the
72
+ * change as a diff of the file as it is now. null for any other run: `draft` prints 1a's draft (a split's new skill
73
+ * is one).
74
+ */
75
+ export function draftFoldText(runId, env = process.env) {
76
+ try {
77
+ const sheet = readRunSheet(runId, env);
78
+ const st = sheet ? sessionOf(sheet, env) : null;
79
+ const po = st?.pendingOffer;
80
+ if (!sheet || !po || po.runId !== runId || (po.moment !== 'update' && po.moment !== 'drift') || !po.fold || po.fold.op === 'split')
81
+ return null;
82
+ const r = replan(po.fold.skillId, runId, po.fold.op, env, { st });
83
+ if (!r)
84
+ return null;
85
+ const diff = printDiff(r.current, r.text, [`${po.name}/SKILL.md now`, `${po.name}/SKILL.md v${r.next.meta.version}`]);
86
+ return diff || null;
87
+ }
88
+ catch {
89
+ return null;
90
+ }
91
+ }
92
+ /** For `trail skills show`: the versions kept and a change waiting beside a hand-edited file; null when neither. */
93
+ export function versionsLine(ref, env = process.env) {
94
+ const kept = listVersions(ref);
95
+ const proposed = getSkillState(ref.id, env)?.proposed;
96
+ const parts = [];
97
+ if (kept.length)
98
+ parts.push(`older versions kept: ${kept.map((v) => `v${v}`).join(', ')}; bring one back in your own terminal: trail skills restore ${one(ref.name)} --version <n>`);
99
+ if (proposed && typeof proposed.version === 'number')
100
+ parts.push(`a change waits beside your edited file in .versions/proposed-v${proposed.version}`);
101
+ return parts.length ? parts.join(' · ') : null;
102
+ }
103
+ /**
104
+ * The CLI's own `-v, --version` is read anywhere on the command line, so it would print Trail's version for
105
+ * `trail skills restore <name> --version <n>`. For that one command the flag is taken out of argv before commander
106
+ * parses, and its value handed to the restore. `{ argv }` alone for any other command.
107
+ */
108
+ export function liftRestoreVersion(argv) {
109
+ const a = [...argv];
110
+ const s = a.indexOf('skills');
111
+ if (s < 0 || a[s + 1] !== 'restore')
112
+ return { argv: a };
113
+ for (let i = s + 2; i < a.length; i++) {
114
+ if (a[i] === '--')
115
+ break;
116
+ if (a[i] === '--version') {
117
+ const v = a[i + 1] ?? '';
118
+ a.splice(i, v && !v.startsWith('-') ? 2 : 1);
119
+ return { argv: a, version: v.startsWith('-') ? '' : v };
120
+ }
121
+ if (a[i].startsWith('--version=')) {
122
+ const v = a[i].slice('--version='.length);
123
+ a.splice(i, 1);
124
+ return { argv: a, version: v };
125
+ }
126
+ }
127
+ return { argv: a };
128
+ }
129
+ //# sourceMappingURL=cli-skills-2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-skills-2.js","sourceRoot":"","sources":["../../src/skills/cli-skills-2.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { type RepoPlace } from '../notes/home.js';
2
+ import type { WallClass } from '../trace/types.js';
3
+ import type { ParsedSkill, SkillRef, SkillState } from './types.js';
4
+ export interface SkillExtras {
5
+ lessons: number;
6
+ outOfDate: string | null;
7
+ unusedSince: string | null;
8
+ }
9
+ export interface GuardrailRow {
10
+ name: string;
11
+ applies: string;
12
+ enforced: boolean;
13
+ }
14
+ export interface ErrorRow {
15
+ class: WallClass;
16
+ times: number;
17
+ fixed: number;
18
+ }
19
+ /** The repo the command runs in, or null outside one. */
20
+ export declare function placeOf(cwd: string | undefined, env: NodeJS.ProcessEnv): RepoPlace | null;
21
+ /** One skill's 1b facts: lesson files, gone anchors (only where it applies here), unused for 60 days. */
22
+ export declare function skillExtras(ref: SkillRef, parsed: ParsedSkill | null, st: SkillState | undefined, place: RepoPlace | null, env: NodeJS.ProcessEnv, now: Date): SkillExtras;
23
+ /** The part a skill's line gains (2.12). */
24
+ export declare function extrasWords(x: SkillExtras): string;
25
+ /**
26
+ * The guardrails kept: every repo, then this repo's. `enforced` only where the fast path denies (b7 review): skills on
27
+ * (0 rule 1) and the file still says check no-timeout and enforce sure-fail (guard-fast.ts reads both).
28
+ */
29
+ export declare function guardrailRows(place: RepoPlace | null, env: NodeJS.ProcessEnv, skillsOn?: boolean): GuardrailRow[];
30
+ export declare function guardrailLines(rows: GuardrailRow[]): string[];
31
+ /** The errors in the catalog Trail saw in this repo over 30 days, and how often a repair followed. */
32
+ export declare function errorRows(place: RepoPlace | null, env: NodeJS.ProcessEnv, now: Date): ErrorRow[];
33
+ export declare function errorLine(rows: ErrorRow[]): string | null;
34
+ /** Skill lesson files plus the live wall lessons that hold here (or in every repo). */
35
+ export declare function lessonTotal(skillLessons: number, place: RepoPlace | null, env: NodeJS.ProcessEnv): number;
36
+ export declare const lessonsLine: (n: number) => string | null;
37
+ /**
38
+ * Phase 2 (3.6, 4.14): the weekly value line for the repo `trail skills` runs in, on top of the list, any day once
39
+ * skills have been on for a week (P21). Null outside a repo, in the first week, with skills off, with nothing to say,
40
+ * or on a throw (a count that can't be read says nothing).
41
+ */
42
+ export declare function valueHere(place: RepoPlace | null, env: NodeJS.ProcessEnv, now: Date): string | null;
43
+ /**
44
+ * Phase 2 (3.6, P2, P3): how the skill's last uses followed it, for `trail skills show`, from the fidelity counts on
45
+ * its ledger's use lines (the last 10 that carry them). Counts of uses only; a use line without counts (1b's, or one
46
+ * whose flush threw) is not counted. Null until there is one. Fidelity never changes a status (P3).
47
+ */
48
+ export declare function fidelityLine(skillId: string, env: NodeJS.ProcessEnv): string | null;
49
+ //# sourceMappingURL=cli-skills-report-1b.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-skills-report-1b.d.ts","sourceRoot":"","sources":["../../src/skills/cli-skills-report-1b.ts"],"names":[],"mappings":"AAWA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAM7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAMnD,OAAO,KAAK,EAAa,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAO/E,MAAM,WAAW,WAAW;IAAG,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE;AACtG,MAAM,WAAW,YAAY;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE;AAClF,MAAM,WAAW,QAAQ;IAAG,KAAK,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AAE5E,yDAAyD;AACzD,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,GAAG,IAAI,CAQzF;AAKD,yGAAyG;AACzG,wBAAgB,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,EAAE,EAAE,EAAE,UAAU,GAAG,SAAS,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,EACxH,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,GAAG,WAAW,CAOhD;AAED,4CAA4C;AAC5C,wBAAgB,WAAW,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAMlD;AAgCD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,QAAQ,UAAO,GAAG,YAAY,EAAE,CAM9G;AAOD,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,CAI7D;AAED,sGAAsG;AACtG,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,GAAG,QAAQ,EAAE,CAahG;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,GAAG,IAAI,CAIzD;AAED,uFAAuF;AACvF,wBAAgB,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAIzG;AAED,eAAO,MAAM,WAAW,GAAI,GAAG,MAAM,kBAAuE,CAAC;AAE7G;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAOnG;AAID;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,GAAG,IAAI,CAiBnF"}
@@ -0,0 +1,191 @@
1
+ /**
2
+ * Phase 1b's `trail skills` lines (design 2.12), beside `cli-skills-report.ts`:
3
+ * per skill its lesson count, "may be out of date" for a skill that applies
4
+ * in the repo the command runs in, and "unused since" after 60 days; then the
5
+ * guardrails kept, the errors Trail knows in this repo over 30 days, and the
6
+ * lesson count. Reading only: file reads and stats, no process, no network.
7
+ * The guardrail line has no counts (R62): those are telemetry only.
8
+ */
9
+ import { lstatSync, readdirSync, readFileSync } from 'node:fs';
10
+ import { basename, join } from 'node:path';
11
+ import { flatLine } from '../notes/flatten.js';
12
+ import { repoPlace } from '../notes/home.js';
13
+ import { everyRepoLearnings } from '../notes/every-repo.js';
14
+ import { repoNotesDir } from '../notes/repo-notes-dir.js';
15
+ import { parseNote } from '../notes/notes.js';
16
+ import { readWalls } from '../trace/wall-state.js';
17
+ import { WALLS } from '../trace/walls.js';
18
+ import { goneAnchors, goneWords } from './anchors.js';
19
+ import { readLedger } from './ledger.js';
20
+ import { readLessons, wallLessons } from './lessons.js';
21
+ import { unusedSince } from './staleness.js';
22
+ import { valueLine, valueWeek } from './value-line.js';
23
+ const DAY_MS = 86_400_000;
24
+ const ERROR_DAYS = 30;
25
+ const one = (t, max = 60) => flatLine(t, max);
26
+ const plural = (n, w) => `${n} ${w}${n === 1 ? '' : 's'}`;
27
+ /** The repo the command runs in, or null outside one. */
28
+ export function placeOf(cwd, env) {
29
+ if (!cwd)
30
+ return null;
31
+ try {
32
+ const p = repoPlace(cwd, env);
33
+ return p.git && p.key ? p : null;
34
+ }
35
+ catch {
36
+ return null;
37
+ }
38
+ }
39
+ const appliesHere = (applies, place) => !!place
40
+ && (!applies || applies.toLowerCase() === 'every repo' || applies.toLowerCase() === place.key.toLowerCase());
41
+ /** One skill's 1b facts: lesson files, gone anchors (only where it applies here), unused for 60 days. */
42
+ export function skillExtras(ref, parsed, st, place, env, now) {
43
+ let gone = '';
44
+ if (parsed && appliesHere(ref.applies, place)) {
45
+ // Phase 2 (4.13): `trail skills` may scan the repo's CLI for its subcommands (and caches what it found).
46
+ try {
47
+ gone = goneWords(goneAnchors(parsed, place.checkout, env, { scan: true, deadline: Date.now() + 1000 }));
48
+ }
49
+ catch { /* a check that throws says nothing */ }
50
+ }
51
+ return { lessons: readLessons(ref.dir).length, outOfDate: gone || null, unusedSince: st ? unusedSince(st, now) : null };
52
+ }
53
+ /** The part a skill's line gains (2.12). */
54
+ export function extrasWords(x) {
55
+ const parts = [];
56
+ if (x.lessons)
57
+ parts.push(plural(x.lessons, 'lesson'));
58
+ if (x.outOfDate)
59
+ parts.push(`may be out of date: ${one(x.outOfDate, 160)}`);
60
+ if (x.unusedSince)
61
+ parts.push(`unused since ${dayOfLocal(x.unusedSince)} (not in the list agents see; asking for it still brings it)`);
62
+ return parts.map((p) => ` · ${p}`).join('');
63
+ }
64
+ const MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
65
+ function dayOfLocal(d) {
66
+ const m = /^(\d{4})-(\d{2})-(\d{2})$/.exec(d);
67
+ return m ? `${MONTHS[Number(m[2]) - 1] ?? 'Jan'} ${Number(m[3])}` : 'an earlier day';
68
+ }
69
+ /** Active guardrails in this repo's personal folder (plain files only). */
70
+ function repoGuardrails(place, env) {
71
+ if (!place)
72
+ return [];
73
+ let dir;
74
+ let files;
75
+ try {
76
+ dir = repoNotesDir(place.key, env);
77
+ files = readdirSync(dir).filter((f) => f.endsWith('.md')).sort();
78
+ }
79
+ catch {
80
+ return [];
81
+ }
82
+ return files.flatMap((f) => {
83
+ try {
84
+ const path = join(dir, f);
85
+ const st = lstatSync(path);
86
+ if (!st.isFile() || st.size > 64 * 1024)
87
+ return [];
88
+ const n = parseNote(readFileSync(path, 'utf8'), path);
89
+ return n ? [n] : [];
90
+ }
91
+ catch {
92
+ return [];
93
+ }
94
+ });
95
+ }
96
+ /**
97
+ * The guardrails kept: every repo, then this repo's. `enforced` only where the fast path denies (b7 review): skills on
98
+ * (0 rule 1) and the file still says check no-timeout and enforce sure-fail (guard-fast.ts reads both).
99
+ */
100
+ export function guardrailRows(place, env, skillsOn = true) {
101
+ const live = (n) => n.kind === 'guardrail' && (n.status ?? 'active') === 'active';
102
+ const stops = (n) => skillsOn && n.check === 'no-timeout' && n.enforce === 'sure-fail';
103
+ const every = everyRepoLearnings(env).filter(live).map((n) => ({ name: basename(n.path, '.md'), applies: 'every repo', enforced: stops(n) }));
104
+ const here = repoGuardrails(place, env).filter(live).map((n) => ({ name: basename(n.path, '.md'), applies: 'this repo', enforced: stops(n) }));
105
+ return [...every, ...here];
106
+ }
107
+ /** What a guardrail does, in words. */
108
+ function guardrailDoes(g) {
109
+ return g.enforced ? 'stops `timeout N` while this Mac has no timeout' : 'agents read it at session start';
110
+ }
111
+ export function guardrailLines(rows) {
112
+ if (!rows.length)
113
+ return [];
114
+ const width = Math.max(...rows.map((g) => one(g.name).length)) + 3;
115
+ return ['guardrails:', ...rows.map((g) => ` ${one(g.name).padEnd(width)}${g.applies} · ${guardrailDoes(g)}`)];
116
+ }
117
+ /** The errors in the catalog Trail saw in this repo over 30 days, and how often a repair followed. */
118
+ export function errorRows(place, env, now) {
119
+ if (!place)
120
+ return [];
121
+ const w = readWalls(env);
122
+ const since = now.getTime() - ERROR_DAYS * DAY_MS;
123
+ const recent = (x) => x.repo.toLowerCase() === place.key.toLowerCase() && Date.parse(`${x.d}T12:00:00`) >= since;
124
+ const out = [];
125
+ for (const wall of WALLS) {
126
+ const c = w.classes[wall.cls];
127
+ if (!c)
128
+ continue;
129
+ const times = c.seen.filter(recent).length;
130
+ if (times)
131
+ out.push({ class: wall.cls, times, fixed: c.fixed.filter(recent).length });
132
+ }
133
+ return out.sort((a, b) => b.times - a.times);
134
+ }
135
+ export function errorLine(rows) {
136
+ if (!rows.length)
137
+ return null;
138
+ const words = (r) => `${WALLS.find((x) => x.cls === r.class).words} ${plural(r.times, 'time')}${r.fixed ? `, fixed ${plural(r.fixed, 'time')}` : ''}`;
139
+ return `errors Trail knows here (${ERROR_DAYS} days): ${rows.map(words).join(' · ')}`;
140
+ }
141
+ /** Skill lesson files plus the live wall lessons that hold here (or in every repo). */
142
+ export function lessonTotal(skillLessons, place, env) {
143
+ const ids = new Set();
144
+ for (const w of WALLS)
145
+ for (const l of wallLessons(w.cls, place?.key ?? '', env))
146
+ ids.add(l.id);
147
+ return skillLessons + ids.size;
148
+ }
149
+ export const lessonsLine = (n) => (n ? `lessons: ${n} (trail skills show <name> lists them)` : null);
150
+ /**
151
+ * Phase 2 (3.6, 4.14): the weekly value line for the repo `trail skills` runs in, on top of the list, any day once
152
+ * skills have been on for a week (P21). Null outside a repo, in the first week, with skills off, with nothing to say,
153
+ * or on a throw (a count that can't be read says nothing).
154
+ */
155
+ export function valueHere(place, env, now) {
156
+ if (!place)
157
+ return null;
158
+ try {
159
+ return valueWeek(env, now) ? valueLine([place.key], env, now) : null;
160
+ }
161
+ catch {
162
+ return null;
163
+ }
164
+ }
165
+ const FIDELITY_USES = 10;
166
+ /**
167
+ * Phase 2 (3.6, P2, P3): how the skill's last uses followed it, for `trail skills show`, from the fidelity counts on
168
+ * its ledger's use lines (the last 10 that carry them). Counts of uses only; a use line without counts (1b's, or one
169
+ * whose flush threw) is not counted. Null until there is one. Fidelity never changes a status (P3).
170
+ */
171
+ export function fidelityLine(skillId, env) {
172
+ let uses;
173
+ try {
174
+ uses = readLedger(skillId, env).filter((l) => l.event === 'use' && !!l.fid && typeof l.fid === 'object').slice(-FIDELITY_USES);
175
+ }
176
+ catch {
177
+ return null;
178
+ }
179
+ if (!uses.length)
180
+ return null;
181
+ const n = (f) => uses.filter(f).length;
182
+ const parts = [
183
+ ['every step ran as kept', n((u) => u.fid.missing === 0 && u.fid.changed === 0)],
184
+ ['a step was left out', n((u) => u.fid.missing > 0)],
185
+ ['a step ran another way', n((u) => u.fid.changed > 0)],
186
+ ['an extra command ran', n((u) => u.fid.extra > 0)],
187
+ ];
188
+ const said = parts.filter(([, k]) => k > 0).map(([w, k]) => `${w} in ${k}`);
189
+ return `how its last ${plural(uses.length, 'use')} with counts on this machine went: ${said.join(' · ')}`;
190
+ }
191
+ //# sourceMappingURL=cli-skills-report-1b.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-skills-report-1b.js","sourceRoot":"","sources":["../../src/skills/cli-skills-report-1b.ts"],"names":[],"mappings":"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"}