@nanonets/graft 0.23.1 → 0.24.1

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 (650) hide show
  1. package/README.md +4 -4
  2. package/dist/ai/crux.d.ts +31 -3
  3. package/dist/ai/crux.d.ts.map +1 -1
  4. package/dist/ai/crux.js +88 -10
  5. package/dist/ai/crux.js.map +1 -1
  6. package/dist/ai/llm/openai.d.ts +101 -0
  7. package/dist/ai/llm/openai.d.ts.map +1 -1
  8. package/dist/ai/llm/openai.js +396 -6
  9. package/dist/ai/llm/openai.js.map +1 -1
  10. package/dist/ai/llm/recover-tool.d.ts +2 -0
  11. package/dist/ai/llm/recover-tool.d.ts.map +1 -1
  12. package/dist/ai/llm/recover-tool.js +1 -1
  13. package/dist/ai/llm/recover-tool.js.map +1 -1
  14. package/dist/ai/synthesize.d.ts.map +1 -1
  15. package/dist/ai/synthesize.js +100 -1
  16. package/dist/ai/synthesize.js.map +1 -1
  17. package/dist/ask/ask.d.ts +8 -0
  18. package/dist/ask/ask.d.ts.map +1 -1
  19. package/dist/ask/ask.js +33 -12
  20. package/dist/ask/ask.js.map +1 -1
  21. package/dist/claude/format.js +1 -1
  22. package/dist/claude/format.js.map +1 -1
  23. package/dist/claude/hook-io.d.ts +44 -0
  24. package/dist/claude/hook-io.d.ts.map +1 -0
  25. package/dist/claude/hook-io.js +144 -0
  26. package/dist/claude/hook-io.js.map +1 -0
  27. package/dist/claude/hooks.d.ts +0 -18
  28. package/dist/claude/hooks.d.ts.map +1 -1
  29. package/dist/claude/hooks.js +24 -77
  30. package/dist/claude/hooks.js.map +1 -1
  31. package/dist/claude/init.js +3 -3
  32. package/dist/claude/init.js.map +1 -1
  33. package/dist/claude/note-signals.d.ts +28 -0
  34. package/dist/claude/note-signals.d.ts.map +1 -0
  35. package/dist/claude/note-signals.js +325 -0
  36. package/dist/claude/note-signals.js.map +1 -0
  37. package/dist/claude/shim-template.d.ts.map +1 -1
  38. package/dist/claude/shim-template.js +10 -4
  39. package/dist/claude/shim-template.js.map +1 -1
  40. package/dist/claude/skill-template.d.ts.map +1 -1
  41. package/dist/claude/skill-template.js +49 -18
  42. package/dist/claude/skill-template.js.map +1 -1
  43. package/dist/claude/skills-hook-util.d.ts +25 -0
  44. package/dist/claude/skills-hook-util.d.ts.map +1 -0
  45. package/dist/claude/skills-hook-util.js +71 -0
  46. package/dist/claude/skills-hook-util.js.map +1 -0
  47. package/dist/claude/state.d.ts +4 -3
  48. package/dist/claude/state.d.ts.map +1 -1
  49. package/dist/claude/state.js.map +1 -1
  50. package/dist/claude/sync-run.js +1 -1
  51. package/dist/claude/sync-run.js.map +1 -1
  52. package/dist/cli-picker.d.ts +36 -5
  53. package/dist/cli-picker.d.ts.map +1 -1
  54. package/dist/cli-picker.js +60 -13
  55. package/dist/cli-picker.js.map +1 -1
  56. package/dist/cli.d.ts +2 -0
  57. package/dist/cli.d.ts.map +1 -1
  58. package/dist/cli.js +406 -64
  59. package/dist/cli.js.map +1 -1
  60. package/dist/cloud/lookup-activity.d.ts +16 -0
  61. package/dist/cloud/lookup-activity.d.ts.map +1 -0
  62. package/dist/cloud/lookup-activity.js +56 -0
  63. package/dist/cloud/lookup-activity.js.map +1 -0
  64. package/dist/cloud/nudge.d.ts.map +1 -1
  65. package/dist/cloud/nudge.js +3 -0
  66. package/dist/cloud/nudge.js.map +1 -1
  67. package/dist/cloud/onboarding.d.ts +237 -0
  68. package/dist/cloud/onboarding.d.ts.map +1 -0
  69. package/dist/cloud/onboarding.js +536 -0
  70. package/dist/cloud/onboarding.js.map +1 -0
  71. package/dist/cloud/pair.d.ts +76 -0
  72. package/dist/cloud/pair.d.ts.map +1 -0
  73. package/dist/cloud/pair.js +249 -0
  74. package/dist/cloud/pair.js.map +1 -0
  75. package/dist/cloud/workspace-sync.d.ts +10 -2
  76. package/dist/cloud/workspace-sync.d.ts.map +1 -1
  77. package/dist/cloud/workspace-sync.js +119 -7
  78. package/dist/cloud/workspace-sync.js.map +1 -1
  79. package/dist/cloud/workspace.d.ts +22 -1
  80. package/dist/cloud/workspace.d.ts.map +1 -1
  81. package/dist/cloud/workspace.js +16 -1
  82. package/dist/cloud/workspace.js.map +1 -1
  83. package/dist/context/batches.d.ts +29 -0
  84. package/dist/context/batches.d.ts.map +1 -0
  85. package/dist/context/batches.js +130 -0
  86. package/dist/context/batches.js.map +1 -0
  87. package/dist/context/build.d.ts +7 -2
  88. package/dist/context/build.d.ts.map +1 -1
  89. package/dist/context/build.js +84 -50
  90. package/dist/context/build.js.map +1 -1
  91. package/dist/context/node-file.d.ts.map +1 -1
  92. package/dist/context/node-file.js +41 -4
  93. package/dist/context/node-file.js.map +1 -1
  94. package/dist/engine.d.ts +2 -0
  95. package/dist/engine.d.ts.map +1 -1
  96. package/dist/engine.js +1 -0
  97. package/dist/engine.js.map +1 -1
  98. package/dist/graph/cards.d.ts.map +1 -1
  99. package/dist/graph/cards.js +9 -4
  100. package/dist/graph/cards.js.map +1 -1
  101. package/dist/graph/enrich.d.ts.map +1 -1
  102. package/dist/graph/enrich.js +8 -3
  103. package/dist/graph/enrich.js.map +1 -1
  104. package/dist/graph/generic.d.ts.map +1 -1
  105. package/dist/graph/generic.js +207 -6
  106. package/dist/graph/generic.js.map +1 -1
  107. package/dist/graph/lsp/client.d.ts +18 -0
  108. package/dist/graph/lsp/client.d.ts.map +1 -1
  109. package/dist/graph/lsp/client.js +40 -2
  110. package/dist/graph/lsp/client.js.map +1 -1
  111. package/dist/graph/lsp/enrich.d.ts.map +1 -1
  112. package/dist/graph/lsp/enrich.js +9 -1
  113. package/dist/graph/lsp/enrich.js.map +1 -1
  114. package/dist/graph/lsp/registry.d.ts +7 -0
  115. package/dist/graph/lsp/registry.d.ts.map +1 -1
  116. package/dist/graph/lsp/registry.js +27 -2
  117. package/dist/graph/lsp/registry.js.map +1 -1
  118. package/dist/graph/native.d.ts +2 -0
  119. package/dist/graph/native.d.ts.map +1 -1
  120. package/dist/graph/native.js +29 -4
  121. package/dist/graph/native.js.map +1 -1
  122. package/dist/graph/queries/gleam.scm +51 -0
  123. package/dist/graph/resolve.d.ts.map +1 -1
  124. package/dist/graph/resolve.js +65 -3
  125. package/dist/graph/resolve.js.map +1 -1
  126. package/dist/graph/workspace-cli.d.ts +2 -0
  127. package/dist/graph/workspace-cli.d.ts.map +1 -1
  128. package/dist/graph/workspace-cli.js +1 -1
  129. package/dist/graph/workspace-cli.js.map +1 -1
  130. package/dist/hosts/claude-global.d.ts +14 -0
  131. package/dist/hosts/claude-global.d.ts.map +1 -1
  132. package/dist/hosts/claude-global.js +38 -3
  133. package/dist/hosts/claude-global.js.map +1 -1
  134. package/dist/init/install-record.d.ts +21 -0
  135. package/dist/init/install-record.d.ts.map +1 -0
  136. package/dist/init/install-record.js +144 -0
  137. package/dist/init/install-record.js.map +1 -0
  138. package/dist/init/plain-file.d.ts +11 -0
  139. package/dist/init/plain-file.d.ts.map +1 -0
  140. package/dist/init/plain-file.js +80 -0
  141. package/dist/init/plain-file.js.map +1 -0
  142. package/dist/mcp/brains.d.ts +72 -0
  143. package/dist/mcp/brains.d.ts.map +1 -0
  144. package/dist/mcp/brains.js +220 -0
  145. package/dist/mcp/brains.js.map +1 -0
  146. package/dist/mcp/server.d.ts +3 -1
  147. package/dist/mcp/server.d.ts.map +1 -1
  148. package/dist/mcp/server.js +40 -5
  149. package/dist/mcp/server.js.map +1 -1
  150. package/dist/mcp/tools.d.ts.map +1 -1
  151. package/dist/mcp/tools.js +7 -2
  152. package/dist/mcp/tools.js.map +1 -1
  153. package/dist/notes/branches.d.ts +7 -1
  154. package/dist/notes/branches.d.ts.map +1 -1
  155. package/dist/notes/branches.js +31 -3
  156. package/dist/notes/branches.js.map +1 -1
  157. package/dist/notes/cold-start.d.ts +42 -3
  158. package/dist/notes/cold-start.d.ts.map +1 -1
  159. package/dist/notes/cold-start.js +144 -24
  160. package/dist/notes/cold-start.js.map +1 -1
  161. package/dist/notes/credit.d.ts +37 -0
  162. package/dist/notes/credit.d.ts.map +1 -0
  163. package/dist/notes/credit.js +78 -0
  164. package/dist/notes/credit.js.map +1 -0
  165. package/dist/notes/every-repo.d.ts +18 -0
  166. package/dist/notes/every-repo.d.ts.map +1 -0
  167. package/dist/notes/every-repo.js +86 -0
  168. package/dist/notes/every-repo.js.map +1 -0
  169. package/dist/notes/find-notes.d.ts +17 -0
  170. package/dist/notes/find-notes.d.ts.map +1 -0
  171. package/dist/notes/find-notes.js +48 -0
  172. package/dist/notes/find-notes.js.map +1 -0
  173. package/dist/notes/flatten.d.ts +31 -0
  174. package/dist/notes/flatten.d.ts.map +1 -0
  175. package/dist/notes/flatten.js +73 -0
  176. package/dist/notes/flatten.js.map +1 -0
  177. package/dist/notes/git-facts.d.ts +2 -0
  178. package/dist/notes/git-facts.d.ts.map +1 -1
  179. package/dist/notes/git-facts.js +6 -0
  180. package/dist/notes/git-facts.js.map +1 -1
  181. package/dist/notes/guardrails.d.ts +8 -0
  182. package/dist/notes/guardrails.d.ts.map +1 -0
  183. package/dist/notes/guardrails.js +38 -0
  184. package/dist/notes/guardrails.js.map +1 -0
  185. package/dist/notes/home.d.ts +24 -6
  186. package/dist/notes/home.d.ts.map +1 -1
  187. package/dist/notes/home.js +82 -15
  188. package/dist/notes/home.js.map +1 -1
  189. package/dist/notes/learning-fields.d.ts +102 -0
  190. package/dist/notes/learning-fields.d.ts.map +1 -0
  191. package/dist/notes/learning-fields.js +214 -0
  192. package/dist/notes/learning-fields.js.map +1 -0
  193. package/dist/notes/lesson-index.d.ts +13 -0
  194. package/dist/notes/lesson-index.d.ts.map +1 -0
  195. package/dist/notes/lesson-index.js +135 -0
  196. package/dist/notes/lesson-index.js.map +1 -0
  197. package/dist/notes/linked-learnings.d.ts +8 -0
  198. package/dist/notes/linked-learnings.d.ts.map +1 -0
  199. package/dist/notes/linked-learnings.js +113 -0
  200. package/dist/notes/linked-learnings.js.map +1 -0
  201. package/dist/notes/memory-notes.d.ts +71 -0
  202. package/dist/notes/memory-notes.d.ts.map +1 -0
  203. package/dist/notes/memory-notes.js +239 -0
  204. package/dist/notes/memory-notes.js.map +1 -0
  205. package/dist/notes/note-gate.d.ts +42 -0
  206. package/dist/notes/note-gate.d.ts.map +1 -0
  207. package/dist/notes/note-gate.js +181 -0
  208. package/dist/notes/note-gate.js.map +1 -0
  209. package/dist/notes/notes.d.ts +29 -85
  210. package/dist/notes/notes.d.ts.map +1 -1
  211. package/dist/notes/notes.js +69 -254
  212. package/dist/notes/notes.js.map +1 -1
  213. package/dist/notes/pr-reviews.d.ts +35 -7
  214. package/dist/notes/pr-reviews.d.ts.map +1 -1
  215. package/dist/notes/pr-reviews.js +156 -46
  216. package/dist/notes/pr-reviews.js.map +1 -1
  217. package/dist/notes/replace.d.ts +14 -0
  218. package/dist/notes/replace.d.ts.map +1 -0
  219. package/dist/notes/replace.js +38 -0
  220. package/dist/notes/replace.js.map +1 -0
  221. package/dist/notes/repo-notes-dir.d.ts +2 -0
  222. package/dist/notes/repo-notes-dir.d.ts.map +1 -0
  223. package/dist/notes/repo-notes-dir.js +16 -0
  224. package/dist/notes/repo-notes-dir.js.map +1 -0
  225. package/dist/notes/secrets.d.ts +28 -0
  226. package/dist/notes/secrets.d.ts.map +1 -0
  227. package/dist/notes/secrets.js +362 -0
  228. package/dist/notes/secrets.js.map +1 -0
  229. package/dist/notes/targets.d.ts +37 -0
  230. package/dist/notes/targets.d.ts.map +1 -0
  231. package/dist/notes/targets.js +108 -0
  232. package/dist/notes/targets.js.map +1 -0
  233. package/dist/notes/team-check.d.ts +22 -0
  234. package/dist/notes/team-check.d.ts.map +1 -0
  235. package/dist/notes/team-check.js +130 -0
  236. package/dist/notes/team-check.js.map +1 -0
  237. package/dist/notes/trail-home.d.ts +3 -0
  238. package/dist/notes/trail-home.d.ts.map +1 -0
  239. package/dist/notes/trail-home.js +12 -0
  240. package/dist/notes/trail-home.js.map +1 -0
  241. package/dist/skills/anchors-cli.d.ts +33 -0
  242. package/dist/skills/anchors-cli.d.ts.map +1 -0
  243. package/dist/skills/anchors-cli.js +274 -0
  244. package/dist/skills/anchors-cli.js.map +1 -0
  245. package/dist/skills/anchors-git.d.ts +29 -0
  246. package/dist/skills/anchors-git.d.ts.map +1 -0
  247. package/dist/skills/anchors-git.js +241 -0
  248. package/dist/skills/anchors-git.js.map +1 -0
  249. package/dist/skills/anchors-wide.d.ts +25 -0
  250. package/dist/skills/anchors-wide.d.ts.map +1 -0
  251. package/dist/skills/anchors-wide.js +481 -0
  252. package/dist/skills/anchors-wide.js.map +1 -0
  253. package/dist/skills/anchors.d.ts +32 -0
  254. package/dist/skills/anchors.d.ts.map +1 -0
  255. package/dist/skills/anchors.js +485 -0
  256. package/dist/skills/anchors.js.map +1 -0
  257. package/dist/skills/answers-prompt.d.ts +13 -0
  258. package/dist/skills/answers-prompt.d.ts.map +1 -0
  259. package/dist/skills/answers-prompt.js +83 -0
  260. package/dist/skills/answers-prompt.js.map +1 -0
  261. package/dist/skills/check-result.d.ts +26 -0
  262. package/dist/skills/check-result.d.ts.map +1 -0
  263. package/dist/skills/check-result.js +46 -0
  264. package/dist/skills/check-result.js.map +1 -0
  265. package/dist/skills/codex-sandbox.d.ts +6 -0
  266. package/dist/skills/codex-sandbox.d.ts.map +1 -0
  267. package/dist/skills/codex-sandbox.js +55 -0
  268. package/dist/skills/codex-sandbox.js.map +1 -0
  269. package/dist/skills/compile-split.d.ts +57 -0
  270. package/dist/skills/compile-split.d.ts.map +1 -0
  271. package/dist/skills/compile-split.js +532 -0
  272. package/dist/skills/compile-split.js.map +1 -0
  273. package/dist/skills/compile-version.d.ts +37 -0
  274. package/dist/skills/compile-version.d.ts.map +1 -0
  275. package/dist/skills/compile-version.js +56 -0
  276. package/dist/skills/compile-version.js.map +1 -0
  277. package/dist/skills/compile-waits.d.ts +12 -0
  278. package/dist/skills/compile-waits.d.ts.map +1 -0
  279. package/dist/skills/compile-waits.js +52 -0
  280. package/dist/skills/compile-waits.js.map +1 -0
  281. package/dist/skills/compile-words.d.ts +82 -0
  282. package/dist/skills/compile-words.d.ts.map +1 -0
  283. package/dist/skills/compile-words.js +385 -0
  284. package/dist/skills/compile-words.js.map +1 -0
  285. package/dist/skills/compile.d.ts +35 -0
  286. package/dist/skills/compile.d.ts.map +1 -0
  287. package/dist/skills/compile.js +488 -0
  288. package/dist/skills/compile.js.map +1 -0
  289. package/dist/skills/credit-facts.d.ts +8 -0
  290. package/dist/skills/credit-facts.d.ts.map +1 -0
  291. package/dist/skills/credit-facts.js +32 -0
  292. package/dist/skills/credit-facts.js.map +1 -0
  293. package/dist/skills/directive-words.d.ts +11 -0
  294. package/dist/skills/directive-words.d.ts.map +1 -0
  295. package/dist/skills/directive-words.js +33 -0
  296. package/dist/skills/directive-words.js.map +1 -0
  297. package/dist/skills/fidelity.d.ts +42 -0
  298. package/dist/skills/fidelity.d.ts.map +1 -0
  299. package/dist/skills/fidelity.js +138 -0
  300. package/dist/skills/fidelity.js.map +1 -0
  301. package/dist/skills/forget-notice.d.ts +44 -0
  302. package/dist/skills/forget-notice.d.ts.map +1 -0
  303. package/dist/skills/forget-notice.js +131 -0
  304. package/dist/skills/forget-notice.js.map +1 -0
  305. package/dist/skills/found-skill.d.ts +35 -0
  306. package/dist/skills/found-skill.d.ts.map +1 -0
  307. package/dist/skills/found-skill.js +66 -0
  308. package/dist/skills/found-skill.js.map +1 -0
  309. package/dist/skills/front-version.d.ts +12 -0
  310. package/dist/skills/front-version.d.ts.map +1 -0
  311. package/dist/skills/front-version.js +87 -0
  312. package/dist/skills/front-version.js.map +1 -0
  313. package/dist/skills/host-facts.d.ts +51 -0
  314. package/dist/skills/host-facts.d.ts.map +1 -0
  315. package/dist/skills/host-facts.js +134 -0
  316. package/dist/skills/host-facts.js.map +1 -0
  317. package/dist/skills/ledger.d.ts +43 -0
  318. package/dist/skills/ledger.d.ts.map +1 -0
  319. package/dist/skills/ledger.js +336 -0
  320. package/dist/skills/ledger.js.map +1 -0
  321. package/dist/skills/lessons.d.ts +60 -0
  322. package/dist/skills/lessons.d.ts.map +1 -0
  323. package/dist/skills/lessons.js +396 -0
  324. package/dist/skills/lessons.js.map +1 -0
  325. package/dist/skills/never-save.d.ts +5 -0
  326. package/dist/skills/never-save.d.ts.map +1 -0
  327. package/dist/skills/never-save.js +158 -0
  328. package/dist/skills/never-save.js.map +1 -0
  329. package/dist/skills/offer-answers.d.ts +20 -0
  330. package/dist/skills/offer-answers.d.ts.map +1 -0
  331. package/dist/skills/offer-answers.js +51 -0
  332. package/dist/skills/offer-answers.js.map +1 -0
  333. package/dist/skills/own-folder.d.ts +9 -0
  334. package/dist/skills/own-folder.d.ts.map +1 -0
  335. package/dist/skills/own-folder.js +36 -0
  336. package/dist/skills/own-folder.js.map +1 -0
  337. package/dist/skills/params.d.ts +39 -0
  338. package/dist/skills/params.d.ts.map +1 -0
  339. package/dist/skills/params.js +275 -0
  340. package/dist/skills/params.js.map +1 -0
  341. package/dist/skills/person.d.ts +34 -0
  342. package/dist/skills/person.d.ts.map +1 -0
  343. package/dist/skills/person.js +102 -0
  344. package/dist/skills/person.js.map +1 -0
  345. package/dist/skills/probe-clean.d.ts +9 -0
  346. package/dist/skills/probe-clean.d.ts.map +1 -0
  347. package/dist/skills/probe-clean.js +48 -0
  348. package/dist/skills/probe-clean.js.map +1 -0
  349. package/dist/skills/probes.d.ts +26 -0
  350. package/dist/skills/probes.d.ts.map +1 -0
  351. package/dist/skills/probes.js +225 -0
  352. package/dist/skills/probes.js.map +1 -0
  353. package/dist/skills/ran-less.d.ts +5 -0
  354. package/dist/skills/ran-less.d.ts.map +1 -0
  355. package/dist/skills/ran-less.js +51 -0
  356. package/dist/skills/ran-less.js.map +1 -0
  357. package/dist/skills/recall.d.ts +119 -0
  358. package/dist/skills/recall.d.ts.map +1 -0
  359. package/dist/skills/recall.js +370 -0
  360. package/dist/skills/recall.js.map +1 -0
  361. package/dist/skills/receipts.d.ts +44 -0
  362. package/dist/skills/receipts.d.ts.map +1 -0
  363. package/dist/skills/receipts.js +223 -0
  364. package/dist/skills/receipts.js.map +1 -0
  365. package/dist/skills/risk-delta.d.ts +32 -0
  366. package/dist/skills/risk-delta.d.ts.map +1 -0
  367. package/dist/skills/risk-delta.js +56 -0
  368. package/dist/skills/risk-delta.js.map +1 -0
  369. package/dist/skills/risk.d.ts +73 -0
  370. package/dist/skills/risk.d.ts.map +1 -0
  371. package/dist/skills/risk.js +396 -0
  372. package/dist/skills/risk.js.map +1 -0
  373. package/dist/skills/run-checkout.d.ts +4 -0
  374. package/dist/skills/run-checkout.d.ts.map +1 -0
  375. package/dist/skills/run-checkout.js +37 -0
  376. package/dist/skills/run-checkout.js.map +1 -0
  377. package/dist/skills/runblock.d.ts +45 -0
  378. package/dist/skills/runblock.d.ts.map +1 -0
  379. package/dist/skills/runblock.js +222 -0
  380. package/dist/skills/runblock.js.map +1 -0
  381. package/dist/skills/save-parse.d.ts +42 -0
  382. package/dist/skills/save-parse.d.ts.map +1 -0
  383. package/dist/skills/save-parse.js +172 -0
  384. package/dist/skills/save-parse.js.map +1 -0
  385. package/dist/skills/save-store.d.ts +12 -0
  386. package/dist/skills/save-store.d.ts.map +1 -0
  387. package/dist/skills/save-store.js +22 -0
  388. package/dist/skills/save-store.js.map +1 -0
  389. package/dist/skills/settings.d.ts +38 -0
  390. package/dist/skills/settings.d.ts.map +1 -0
  391. package/dist/skills/settings.js +133 -0
  392. package/dist/skills/settings.js.map +1 -0
  393. package/dist/skills/skill-diff.d.ts +40 -0
  394. package/dist/skills/skill-diff.d.ts.map +1 -0
  395. package/dist/skills/skill-diff.js +191 -0
  396. package/dist/skills/skill-diff.js.map +1 -0
  397. package/dist/skills/skill-file.d.ts +24 -0
  398. package/dist/skills/skill-file.d.ts.map +1 -0
  399. package/dist/skills/skill-file.js +97 -0
  400. package/dist/skills/skill-file.js.map +1 -0
  401. package/dist/skills/skill-rebuild.d.ts +27 -0
  402. package/dist/skills/skill-rebuild.d.ts.map +1 -0
  403. package/dist/skills/skill-rebuild.js +85 -0
  404. package/dist/skills/skill-rebuild.js.map +1 -0
  405. package/dist/skills/skillmd.d.ts +17 -0
  406. package/dist/skills/skillmd.d.ts.map +1 -0
  407. package/dist/skills/skillmd.js +219 -0
  408. package/dist/skills/skillmd.js.map +1 -0
  409. package/dist/skills/skills.d.ts +2 -0
  410. package/dist/skills/skills.d.ts.map +1 -1
  411. package/dist/skills/skills.js +1 -1
  412. package/dist/skills/skills.js.map +1 -1
  413. package/dist/skills/staleness.d.ts +27 -0
  414. package/dist/skills/staleness.d.ts.map +1 -0
  415. package/dist/skills/staleness.js +178 -0
  416. package/dist/skills/staleness.js.map +1 -0
  417. package/dist/skills/state.d.ts +36 -0
  418. package/dist/skills/state.d.ts.map +1 -0
  419. package/dist/skills/state.js +259 -0
  420. package/dist/skills/state.js.map +1 -0
  421. package/dist/skills/store-fs.d.ts +77 -0
  422. package/dist/skills/store-fs.d.ts.map +1 -0
  423. package/dist/skills/store-fs.js +194 -0
  424. package/dist/skills/store-fs.js.map +1 -0
  425. package/dist/skills/store-held.d.ts +44 -0
  426. package/dist/skills/store-held.d.ts.map +1 -0
  427. package/dist/skills/store-held.js +147 -0
  428. package/dist/skills/store-held.js.map +1 -0
  429. package/dist/skills/store.d.ts +73 -0
  430. package/dist/skills/store.d.ts.map +1 -0
  431. package/dist/skills/store.js +279 -0
  432. package/dist/skills/store.js.map +1 -0
  433. package/dist/skills/types.d.ts +422 -0
  434. package/dist/skills/types.d.ts.map +1 -0
  435. package/dist/skills/types.js +2 -0
  436. package/dist/skills/types.js.map +1 -0
  437. package/dist/skills/validate.d.ts +11 -0
  438. package/dist/skills/validate.d.ts.map +1 -0
  439. package/dist/skills/validate.js +112 -0
  440. package/dist/skills/validate.js.map +1 -0
  441. package/dist/skills/versions-fs.d.ts +45 -0
  442. package/dist/skills/versions-fs.d.ts.map +1 -0
  443. package/dist/skills/versions-fs.js +234 -0
  444. package/dist/skills/versions-fs.js.map +1 -0
  445. package/dist/skills/versions.d.ts +56 -0
  446. package/dist/skills/versions.d.ts.map +1 -0
  447. package/dist/skills/versions.js +351 -0
  448. package/dist/skills/versions.js.map +1 -0
  449. package/dist/telemetry/contract.d.ts.map +1 -1
  450. package/dist/telemetry/contract.js +8 -6
  451. package/dist/telemetry/contract.js.map +1 -1
  452. package/dist/telemetry/notice.d.ts.map +1 -1
  453. package/dist/telemetry/notice.js +3 -1
  454. package/dist/telemetry/notice.js.map +1 -1
  455. package/dist/trace/check-reads.d.ts +36 -0
  456. package/dist/trace/check-reads.d.ts.map +1 -0
  457. package/dist/trace/check-reads.js +57 -0
  458. package/dist/trace/check-reads.js.map +1 -0
  459. package/dist/trace/checks.d.ts +63 -0
  460. package/dist/trace/checks.d.ts.map +1 -0
  461. package/dist/trace/checks.js +487 -0
  462. package/dist/trace/checks.js.map +1 -0
  463. package/dist/trace/claude.d.ts +124 -0
  464. package/dist/trace/claude.d.ts.map +1 -0
  465. package/dist/trace/claude.js +303 -0
  466. package/dist/trace/claude.js.map +1 -0
  467. package/dist/trace/codex-exec.d.ts +22 -0
  468. package/dist/trace/codex-exec.d.ts.map +1 -0
  469. package/dist/trace/codex-exec.js +129 -0
  470. package/dist/trace/codex-exec.js.map +1 -0
  471. package/dist/trace/codex-meta.d.ts +23 -0
  472. package/dist/trace/codex-meta.d.ts.map +1 -0
  473. package/dist/trace/codex-meta.js +112 -0
  474. package/dist/trace/codex-meta.js.map +1 -0
  475. package/dist/trace/codex.d.ts +33 -0
  476. package/dist/trace/codex.d.ts.map +1 -0
  477. package/dist/trace/codex.js +485 -0
  478. package/dist/trace/codex.js.map +1 -0
  479. package/dist/trace/cursor.d.ts +16 -0
  480. package/dist/trace/cursor.d.ts.map +1 -0
  481. package/dist/trace/cursor.js +133 -0
  482. package/dist/trace/cursor.js.map +1 -0
  483. package/dist/trace/dialect.d.ts +43 -0
  484. package/dist/trace/dialect.d.ts.map +1 -0
  485. package/dist/trace/dialect.js +95 -0
  486. package/dist/trace/dialect.js.map +1 -0
  487. package/dist/trace/epochs.d.ts +10 -0
  488. package/dist/trace/epochs.d.ts.map +1 -0
  489. package/dist/trace/epochs.js +16 -0
  490. package/dist/trace/epochs.js.map +1 -0
  491. package/dist/trace/failure.d.ts +15 -0
  492. package/dist/trace/failure.d.ts.map +1 -0
  493. package/dist/trace/failure.js +69 -0
  494. package/dist/trace/failure.js.map +1 -0
  495. package/dist/trace/gate-file.d.ts +71 -0
  496. package/dist/trace/gate-file.d.ts.map +1 -0
  497. package/dist/trace/gate-file.js +329 -0
  498. package/dist/trace/gate-file.js.map +1 -0
  499. package/dist/trace/guard-fast.d.ts +22 -0
  500. package/dist/trace/guard-fast.d.ts.map +1 -0
  501. package/dist/trace/guard-fast.js +213 -0
  502. package/dist/trace/guard-fast.js.map +1 -0
  503. package/dist/trace/host.d.ts +40 -0
  504. package/dist/trace/host.d.ts.map +1 -0
  505. package/dist/trace/host.js +84 -0
  506. package/dist/trace/host.js.map +1 -0
  507. package/dist/trace/housekeeping.d.ts +5 -0
  508. package/dist/trace/housekeeping.d.ts.map +1 -0
  509. package/dist/trace/housekeeping.js +93 -0
  510. package/dist/trace/housekeeping.js.map +1 -0
  511. package/dist/trace/jobs.d.ts +52 -0
  512. package/dist/trace/jobs.d.ts.map +1 -0
  513. package/dist/trace/jobs.js +182 -0
  514. package/dist/trace/jobs.js.map +1 -0
  515. package/dist/trace/known-repo.d.ts +3 -0
  516. package/dist/trace/known-repo.d.ts.map +1 -0
  517. package/dist/trace/known-repo.js +55 -0
  518. package/dist/trace/known-repo.js.map +1 -0
  519. package/dist/trace/pool.d.ts +40 -0
  520. package/dist/trace/pool.d.ts.map +1 -0
  521. package/dist/trace/pool.js +154 -0
  522. package/dist/trace/pool.js.map +1 -0
  523. package/dist/trace/redact.d.ts +8 -0
  524. package/dist/trace/redact.d.ts.map +1 -0
  525. package/dist/trace/redact.js +63 -0
  526. package/dist/trace/redact.js.map +1 -0
  527. package/dist/trace/repairs.d.ts +27 -0
  528. package/dist/trace/repairs.d.ts.map +1 -0
  529. package/dist/trace/repairs.js +303 -0
  530. package/dist/trace/repairs.js.map +1 -0
  531. package/dist/trace/run-calls.d.ts +82 -0
  532. package/dist/trace/run-calls.d.ts.map +1 -0
  533. package/dist/trace/run-calls.js +331 -0
  534. package/dist/trace/run-calls.js.map +1 -0
  535. package/dist/trace/run-join.d.ts +20 -0
  536. package/dist/trace/run-join.d.ts.map +1 -0
  537. package/dist/trace/run-join.js +99 -0
  538. package/dist/trace/run-join.js.map +1 -0
  539. package/dist/trace/run-sheets.d.ts +26 -0
  540. package/dist/trace/run-sheets.d.ts.map +1 -0
  541. package/dist/trace/run-sheets.js +145 -0
  542. package/dist/trace/run-sheets.js.map +1 -0
  543. package/dist/trace/run-turns.d.ts +24 -0
  544. package/dist/trace/run-turns.d.ts.map +1 -0
  545. package/dist/trace/run-turns.js +67 -0
  546. package/dist/trace/run-turns.js.map +1 -0
  547. package/dist/trace/run-verdict.d.ts +24 -0
  548. package/dist/trace/run-verdict.d.ts.map +1 -0
  549. package/dist/trace/run-verdict.js +176 -0
  550. package/dist/trace/run-verdict.js.map +1 -0
  551. package/dist/trace/runs.d.ts +54 -0
  552. package/dist/trace/runs.d.ts.map +1 -0
  553. package/dist/trace/runs.js +501 -0
  554. package/dist/trace/runs.js.map +1 -0
  555. package/dist/trace/seen-cache.d.ts +9 -0
  556. package/dist/trace/seen-cache.d.ts.map +1 -0
  557. package/dist/trace/seen-cache.js +46 -0
  558. package/dist/trace/seen-cache.js.map +1 -0
  559. package/dist/trace/shell-scan.d.ts +52 -0
  560. package/dist/trace/shell-scan.d.ts.map +1 -0
  561. package/dist/trace/shell-scan.js +318 -0
  562. package/dist/trace/shell-scan.js.map +1 -0
  563. package/dist/trace/shell-words.d.ts +91 -0
  564. package/dist/trace/shell-words.d.ts.map +1 -0
  565. package/dist/trace/shell-words.js +558 -0
  566. package/dist/trace/shell-words.js.map +1 -0
  567. package/dist/trace/shell.d.ts +91 -0
  568. package/dist/trace/shell.d.ts.map +1 -0
  569. package/dist/trace/shell.js +435 -0
  570. package/dist/trace/shell.js.map +1 -0
  571. package/dist/trace/skill-session.d.ts +64 -0
  572. package/dist/trace/skill-session.d.ts.map +1 -0
  573. package/dist/trace/skill-session.js +232 -0
  574. package/dist/trace/skill-session.js.map +1 -0
  575. package/dist/trace/state.d.ts +27 -0
  576. package/dist/trace/state.d.ts.map +1 -0
  577. package/dist/trace/state.js +98 -0
  578. package/dist/trace/state.js.map +1 -0
  579. package/dist/trace/tamper-code.d.ts +9 -0
  580. package/dist/trace/tamper-code.d.ts.map +1 -0
  581. package/dist/trace/tamper-code.js +174 -0
  582. package/dist/trace/tamper-code.js.map +1 -0
  583. package/dist/trace/tamper-git.d.ts +12 -0
  584. package/dist/trace/tamper-git.d.ts.map +1 -0
  585. package/dist/trace/tamper-git.js +77 -0
  586. package/dist/trace/tamper-git.js.map +1 -0
  587. package/dist/trace/tamper.d.ts +12 -0
  588. package/dist/trace/tamper.d.ts.map +1 -0
  589. package/dist/trace/tamper.js +405 -0
  590. package/dist/trace/tamper.js.map +1 -0
  591. package/dist/trace/typed.d.ts +30 -0
  592. package/dist/trace/typed.d.ts.map +1 -0
  593. package/dist/trace/typed.js +132 -0
  594. package/dist/trace/typed.js.map +1 -0
  595. package/dist/trace/types.d.ts +477 -0
  596. package/dist/trace/types.d.ts.map +1 -0
  597. package/dist/trace/types.js +12 -0
  598. package/dist/trace/types.js.map +1 -0
  599. package/dist/trace/wall-state.d.ts +86 -0
  600. package/dist/trace/wall-state.d.ts.map +1 -0
  601. package/dist/trace/wall-state.js +279 -0
  602. package/dist/trace/wall-state.js.map +1 -0
  603. package/dist/trace/walls-glob.d.ts +11 -0
  604. package/dist/trace/walls-glob.d.ts.map +1 -0
  605. package/dist/trace/walls-glob.js +264 -0
  606. package/dist/trace/walls-glob.js.map +1 -0
  607. package/dist/trace/walls-quoted.d.ts +25 -0
  608. package/dist/trace/walls-quoted.d.ts.map +1 -0
  609. package/dist/trace/walls-quoted.js +81 -0
  610. package/dist/trace/walls-quoted.js.map +1 -0
  611. package/dist/trace/walls.d.ts +40 -0
  612. package/dist/trace/walls.d.ts.map +1 -0
  613. package/dist/trace/walls.js +318 -0
  614. package/dist/trace/walls.js.map +1 -0
  615. package/dist/upkeep.d.ts +1 -1
  616. package/dist/upkeep.d.ts.map +1 -1
  617. package/dist/upkeep.js +4 -1
  618. package/dist/upkeep.js.map +1 -1
  619. package/dist/util/actions-folder.d.ts +2 -0
  620. package/dist/util/actions-folder.d.ts.map +1 -0
  621. package/dist/util/actions-folder.js +9 -0
  622. package/dist/util/actions-folder.js.map +1 -0
  623. package/dist/util/front-matter.d.ts +31 -4
  624. package/dist/util/front-matter.d.ts.map +1 -1
  625. package/dist/util/front-matter.js +95 -3
  626. package/dist/util/front-matter.js.map +1 -1
  627. package/dist/util/private-file.d.ts +14 -0
  628. package/dist/util/private-file.d.ts.map +1 -0
  629. package/dist/util/private-file.js +82 -0
  630. package/dist/util/private-file.js.map +1 -0
  631. package/dist/util/private-fs.d.ts +25 -0
  632. package/dist/util/private-fs.d.ts.map +1 -0
  633. package/dist/util/private-fs.js +253 -0
  634. package/dist/util/private-fs.js.map +1 -0
  635. package/dist/util/state.d.ts.map +1 -1
  636. package/dist/util/state.js +3 -0
  637. package/dist/util/state.js.map +1 -1
  638. package/dist/vendor/tree-sitter-swift/LICENSE +21 -0
  639. package/dist/vendor/tree-sitter-swift/node-types.json +30694 -0
  640. package/dist/vendor/tree-sitter-swift/prebuilds/darwin-arm64/tree-sitter-swift.node +0 -0
  641. package/dist/vendor/tree-sitter-swift/prebuilds/darwin-x64/tree-sitter-swift.node +0 -0
  642. package/dist/vendor/tree-sitter-swift/prebuilds/linux-arm64/tree-sitter-swift.node +0 -0
  643. package/dist/vendor/tree-sitter-swift/prebuilds/linux-x64/tree-sitter-swift.node +0 -0
  644. package/dist/vendor/tree-sitter-swift/prebuilds/win32-arm64/tree-sitter-swift.node +0 -0
  645. package/dist/vendor/tree-sitter-swift/prebuilds/win32-x64/tree-sitter-swift.node +0 -0
  646. package/dist/viewer/app.js +2 -2
  647. package/package.json +10 -7
  648. package/scripts/run-tests.mjs +14 -2
  649. package/scripts/stamp-telemetry-key.mjs +8 -5
  650. package/scripts/vendor-grammars.mjs +35 -0
@@ -0,0 +1,422 @@
1
+ /**
2
+ * The shapes of learned skills: the SKILL.md metadata, compiled and parsed
3
+ * skills, their state and ledger lines, offers, receipts, the person's
4
+ * settings, and what a skills hook part hands back to the hook that writes.
5
+ *
6
+ * Types only.
7
+ */
8
+ import type { GatedKind, JobClass, OfferChannel } from '../trace/types.js';
9
+ export type Scope = 'personal' | 'repo' | 'team';
10
+ export type SkillStatus = 'candidate' | 'active' | 'needs-fix' | 'retired';
11
+ export type SkillFrom = 'init' | 'repeated' | 'repaired' | 'asked';
12
+ /** Flat quoted strings under `metadata:` in SKILL.md. Key names are the YAML keys. */
13
+ export interface SkillMeta {
14
+ trail: string;
15
+ scope: Scope;
16
+ applies?: string;
17
+ job?: JobClass;
18
+ asks: string;
19
+ 'status-asks'?: string;
20
+ params?: string;
21
+ needs?: string;
22
+ ready?: string;
23
+ 'check-first'?: string;
24
+ /** D116 item 5: ' | '-separated things the person does first (a login whose keystrokes the run fed, dropped from the steps). */
25
+ 'before-you-start'?: string;
26
+ 'confirm-before'?: string;
27
+ check?: string;
28
+ 'check-shows'?: string;
29
+ /** D59b: the check is a deploy status tool the agent calls (e.g. 'get_deployment'); `check` then says what to read, not a command. */
30
+ 'check-tool'?: string;
31
+ version: string;
32
+ }
33
+ export interface ParamDef {
34
+ name: string;
35
+ shape: 'version' | 'sha' | 'pr' | 'port' | 'branch' | 'date' | 'varied';
36
+ /** A literal, or a `$(...)` command for sha and date. */
37
+ default?: string;
38
+ /** Values seen in the run(s) it came from. Shapes only; never secret-flagged. */
39
+ seen: string[];
40
+ }
41
+ export interface SkillStep {
42
+ n: number;
43
+ cmd: string;
44
+ gated: GatedKind | null;
45
+ bg: boolean;
46
+ wait: boolean;
47
+ /** compile only: the tool_use ids it was copied from (the gate re-reads each, 4.9). */
48
+ from?: string[];
49
+ }
50
+ export interface CompiledSkill {
51
+ name: string;
52
+ title: string;
53
+ description: string;
54
+ meta: SkillMeta;
55
+ steps: SkillStep[];
56
+ check: string;
57
+ checkShows: string | null;
58
+ /** tests and query families: the check is also the last Run step (4.5 step 3). */
59
+ checkIsStep: boolean;
60
+ ifFails: string[];
61
+ dontUse: string;
62
+ params: ParamDef[];
63
+ helpers: Array<{
64
+ file: string;
65
+ from: string;
66
+ content: string;
67
+ }>;
68
+ leftOut: {
69
+ failed: number;
70
+ lookOnly: number;
71
+ duplicates: number;
72
+ plumbing: number;
73
+ work: number;
74
+ };
75
+ /** D58 b: steps that ran outside the repo, left out; shown in the draft with where they ran ("in api", "outside any repo"). */
76
+ elsewhere?: Array<{
77
+ cmd: string;
78
+ where: string;
79
+ }>;
80
+ /** D59a: the run a compaction cut, joined: how many compactions, when its first part began, the steps from before the last one. */
81
+ carried?: {
82
+ compactions: number;
83
+ startedAt: string;
84
+ steps: number[];
85
+ };
86
+ /** The run it was copied from, for the Stop use line (3.5 step 5) and `trail skills`. */
87
+ source: {
88
+ runId: string;
89
+ commands: number;
90
+ failed: number;
91
+ at: string;
92
+ };
93
+ }
94
+ export interface ParsedSkill {
95
+ name: string;
96
+ description: string;
97
+ meta: SkillMeta;
98
+ steps: SkillStep[];
99
+ check: string | null;
100
+ checkShows: string | null;
101
+ ifFails: string[];
102
+ dontUse: string;
103
+ params: ParamDef[];
104
+ hash: string;
105
+ }
106
+ export interface SkillRef {
107
+ id: string;
108
+ name: string;
109
+ scope: Scope;
110
+ applies: string | null;
111
+ dir: string;
112
+ file: string;
113
+ }
114
+ export interface SkillState {
115
+ name: string;
116
+ scope: Scope;
117
+ status: SkillStatus;
118
+ from: SkillFrom;
119
+ runId: string | null;
120
+ addedAt: string;
121
+ lastWorked: string | null;
122
+ lastUsedAt: string | null;
123
+ lastUsedRepo: string | null;
124
+ uses: number;
125
+ checkedUses: number;
126
+ hash: string;
127
+ source: {
128
+ commands: number;
129
+ failed: number;
130
+ at: string;
131
+ } | null;
132
+ /** The failed step of the last two uses, newest last; [] when the last use had no failed step (4.8). */
133
+ lastFails: Array<{
134
+ step: number;
135
+ at: string;
136
+ }>;
137
+ /** Why it is needs-fix, in words: 'step 4 failed on Nov 2 and Nov 4'. */
138
+ statusWhy?: string;
139
+ prevStatus?: SkillStatus;
140
+ /** D65: the SKILL.md hash when it was marked needs-fix. Only an edit after that mark (a hash other than this) brings it back. */
141
+ fixHash?: string;
142
+ promoteOffers: {
143
+ repo?: string;
144
+ team?: string;
145
+ };
146
+ }
147
+ export interface SkillsStateFile {
148
+ v: 1;
149
+ skills: Record<string, SkillState>;
150
+ }
151
+ export type Answer = 'yes' | 'no' | 'show' | 'none' | 'withdrawn';
152
+ export interface OfferLine {
153
+ id: string;
154
+ at: string;
155
+ /** 1b: 'closed' lines come only from init (moment 'init', answer 'no', 4.20). */
156
+ event: 'shown' | 'answer' | 'not-shown' | 'closed';
157
+ repo: string;
158
+ key: string;
159
+ /** Phase 2: 'update', 'drift' and 'retire' (2.4); widened here because a field's type can't be widened by merging. */
160
+ moment: 'repeated' | 'repaired' | 'correction' | 'init' | 'update' | 'drift' | 'retire';
161
+ runId: string;
162
+ name: string;
163
+ channel: OfferChannel;
164
+ answer?: Answer;
165
+ }
166
+ /** Phase 2: cue 'run' (c10's `trail run` only), and the fidelity facts in LedgerUseFacts (2.3). */
167
+ export type LedgerUse = {
168
+ at: string;
169
+ event: 'use';
170
+ useId: string;
171
+ skill: string;
172
+ v: string;
173
+ host: string;
174
+ cue: 'job' | 'name' | 'compact' | 'run';
175
+ repo: string;
176
+ stepsRan: number[];
177
+ failedStep: number | null;
178
+ readyFailed: string[];
179
+ check: 'passed' | 'failed' | 'none';
180
+ calls: number;
181
+ failed: number;
182
+ } & LedgerUseFacts;
183
+ export type LedgerLine = {
184
+ at: string;
185
+ event: 'saved';
186
+ skill: string;
187
+ v: string;
188
+ from: SkillFrom;
189
+ scope: Scope;
190
+ receipt: {
191
+ consent: 'offer-yes' | 'asked' | 'init';
192
+ stepsVerified: number;
193
+ stepsTotal: number;
194
+ };
195
+ } | LedgerUse | LedgerLesson | LedgerCue | LedgerChanged | {
196
+ at: string;
197
+ event: 'corrected';
198
+ skill: string;
199
+ useId: string;
200
+ } | {
201
+ at: string;
202
+ event: 'status';
203
+ skill: string;
204
+ from: SkillStatus;
205
+ to: SkillStatus;
206
+ /** Phase 2: 'retire-offer', the retire proposal's or drift's retire (2.3). */
207
+ reason: 'checked-use' | 'failed-twice' | 'forget' | 'restore' | 'retire-offer';
208
+ };
209
+ export interface TrailSkillSettings {
210
+ v: 1;
211
+ skills: 'on' | 'off';
212
+ onSince: string | null;
213
+ offers: 'on' | 'off';
214
+ offersOffAt: string | null;
215
+ offRepos: string[];
216
+ pausedUntil: Record<string, string>;
217
+ skillsOff: string[];
218
+ /** Cache of the governor window (4.13); offers.jsonl stays the truth. */
219
+ lastNine: Array<'yes' | 'no' | 'none'>;
220
+ governorSaidAt: string | null;
221
+ }
222
+ export interface Receipt {
223
+ v: 1;
224
+ session: string;
225
+ transcriptPath: string;
226
+ toolUseId: string;
227
+ runId: string;
228
+ name: string;
229
+ at: string;
230
+ host: string;
231
+ tier: 'A' | 'B' | 'C' | 'D';
232
+ consent: 'offer-yes' | 'asked' | 'none';
233
+ offerId: string | null;
234
+ /** The person's typed line that gave consent: its byte offset and the sha256 of the whole line. */
235
+ typed: {
236
+ offset: number;
237
+ lineSha: string;
238
+ } | null;
239
+ typedYes: boolean;
240
+ typedSave: boolean;
241
+ /** What the person's save request said about scope (asked saves only), for the CLI's line (D27). */
242
+ asked: 'this repo' | 'every repo' | 'repo' | 'team' | null;
243
+ stepsTotal: number;
244
+ stepsVerified: number;
245
+ verdict: 'live' | 'held';
246
+ heldWhy?: 'no-yes' | 'host';
247
+ /** D93: the checkout the PreToolUse half compiled the run in ('' for none); the CLI half uses it, never its own cwd. */
248
+ checkout?: string;
249
+ /** Set by the CLI when it acts on the receipt; a used receipt never counts again. */
250
+ usedAt: string | null;
251
+ }
252
+ /** What a skills hook part hands its caller, which writes one JSON object (0.2 `emitHook`). */
253
+ export interface HookOut {
254
+ /** additionalContext: the agent reads it. */
255
+ context?: string;
256
+ /** systemMessage: the person sees it, the agent doesn't. */
257
+ notice?: string;
258
+ /** decision "block" with this reason (UserPromptSubmit: the prompt goes no further; Stop: the agent continues). */
259
+ block?: string;
260
+ }
261
+ /** A lesson kept on a skill (moment 4) or tied to a wall (moment 3). */
262
+ export type LedgerLesson = {
263
+ at: string;
264
+ event: 'lesson';
265
+ skill: string;
266
+ lessonId: string;
267
+ src: 'correction' | 'repair';
268
+ consent: 'offer-yes';
269
+ };
270
+ /** An asks phrase that kept missing was dropped from the cue (4.19). The phrase is never written, only its sha (R30). */
271
+ export type LedgerCue = {
272
+ at: string;
273
+ event: 'cue';
274
+ skill: string;
275
+ phraseSha: string;
276
+ change: 'dropped';
277
+ };
278
+ export interface SkillState {
279
+ /** phraseSha -> misses in a row (4.19, R30). Absent reads as {}. */
280
+ cueMisses?: Record<string, number>;
281
+ /** When skill_stale{unused} was sent. */
282
+ unusedSaidAt?: string | null;
283
+ /** When skill_stale{missing} was last sent (once a day, 4.18). */
284
+ missingSaidAt?: string | null;
285
+ }
286
+ /** receipts/<session-id>.keep.json: the PreToolUse half of a `trail keep` (4.9). */
287
+ export interface KeepReceipt {
288
+ v: 1;
289
+ kind: 'keep';
290
+ session: string;
291
+ /** The very file the hooks read for this session (receiptTranscriptRead, D82). */
292
+ transcriptPath: string;
293
+ toolUseId: string;
294
+ /** Where the list was: the tool_result of a `trail init` call (its offset), or the handover the record names. */
295
+ list: {
296
+ offset: number;
297
+ initRunId: string;
298
+ via: 'init-call' | 'handover';
299
+ };
300
+ /** The first typed line after the list. */
301
+ typed: {
302
+ offset: number;
303
+ lineSha: string;
304
+ };
305
+ /** sha256 of the agent text between the list and the typed line, which named every item (4.9 step 3, R22). */
306
+ replySha: string;
307
+ /** What the command asked for. */
308
+ numbers: number[] | 'none' | 'all';
309
+ at: string;
310
+ verdict: 'live' | 'held';
311
+ heldWhy?: 'no-answer' | 'numbers' | 'not-shown' | 'host';
312
+ usedAt: string | null;
313
+ }
314
+ /** receipts/<session-id>.lesson.json: the PreToolUse half of a lesson save (4.15). */
315
+ export interface LessonReceipt {
316
+ v: 1;
317
+ kind: 'lesson';
318
+ session: string;
319
+ transcriptPath: string;
320
+ toolUseId: string;
321
+ offerId: string;
322
+ /** null for a moment-3 lesson (tied to a wall, no skill). */
323
+ skill: string | null;
324
+ /** The yes. */
325
+ typed: {
326
+ offset: number;
327
+ lineSha: string;
328
+ };
329
+ lessonSha: string;
330
+ at: string;
331
+ verdict: 'live' | 'held';
332
+ heldWhy?: 'no-yes' | 'changed' | 'host';
333
+ usedAt: string | null;
334
+ }
335
+ /** One block that came in for a job and was settled (4.9): followed when a step of it ran. Last 10, oldest first. */
336
+ export interface Firing {
337
+ at: string;
338
+ followed: boolean;
339
+ }
340
+ /** What a fold changes (4.2): a step, steps added, or steps kept as their own skill. */
341
+ export type FoldOp = 'update' | 'extend' | 'split';
342
+ /** A write of the file Trail wrote (4.5): one ledger `changed` line each. A split is a save; a retire is a status line. */
343
+ export type ChangeOp = 'update' | 'extend' | 'replace' | 'adopted' | 'restore-version';
344
+ /** 4.1: what the next run did against the skill. Counts only. */
345
+ export interface FidelityCounts {
346
+ ran: number;
347
+ missing: number;
348
+ extra: number;
349
+ changed: number;
350
+ }
351
+ export interface SkillState {
352
+ /** 4.9: settled job and name cue blocks, last 10, oldest first. Reset when the skill changes version. */
353
+ firings?: Firing[];
354
+ /** 4.6: the proposal Trail wrote beside a hand-edited file; adopted when the file becomes byte-equal to it. */
355
+ proposed?: {
356
+ hash: string;
357
+ version: number;
358
+ op: FoldOp | 'replace';
359
+ at: string;
360
+ } | null;
361
+ /** When Trail last changed the file (fold, replace, adopt, restore by version). */
362
+ changedAt?: string | null;
363
+ /** 4.5 (R8): a write in progress, so a crash between the file and the state is finished, not taken for a hand edit. */
364
+ pendingWrite?: {
365
+ hash: string;
366
+ from: number;
367
+ at: string;
368
+ } | null;
369
+ }
370
+ /** 2.3: the use line's fidelity facts, absent before phase 2. A 1b reader ignores them. */
371
+ export interface LedgerUseFacts {
372
+ /** 4.1: counts only. */
373
+ fid?: FidelityCounts;
374
+ /** 8-hex shas of the compiled text of passing steps the skill lacks (`extraKey`), at most 4. Never the text. */
375
+ extraShas?: string[];
376
+ /** Steps that failed and were then done another way that passed, at most 4. */
377
+ changedSteps?: number[];
378
+ /** D137: gated steps this session couldn't ask for, handed to the person to run (counted in stepsRan). */
379
+ handed?: number[];
380
+ }
381
+ /** A change to the file Trail wrote, one per write (4.5, 2.3). */
382
+ export type LedgerChanged = {
383
+ at: string;
384
+ event: 'changed';
385
+ skill: string;
386
+ op: ChangeOp;
387
+ from: number;
388
+ to: number;
389
+ offerId: string | null;
390
+ lessonIds?: string[];
391
+ };
392
+ export interface OfferLine {
393
+ /** 2.4: on an answer line, what the yes chose: a fold op, drift's 'replace', or 'retire' (drift's or the retire proposal's). */
394
+ op?: FoldOp | 'replace' | 'retire';
395
+ }
396
+ /** receipts/<session-id>.update.json: the PreToolUse half of `trail skills update` (4.11). No step text, only the two hashes. */
397
+ export interface UpdateReceipt {
398
+ v: 1;
399
+ kind: 'update';
400
+ session: string;
401
+ /** The very file the hooks read for this session (receiptTranscriptRead, D82). */
402
+ transcriptPath: string;
403
+ toolUseId: string;
404
+ host: string;
405
+ offerId: string;
406
+ skillId: string;
407
+ name: string;
408
+ runId: string;
409
+ op: FoldOp | 'replace';
410
+ /** The SKILL.md hash the plan was computed from. */
411
+ baseHash: string;
412
+ /** 4.11: sha256 of the proposed file text, 16 hex. */
413
+ proposalSha: string;
414
+ /** The yes. */
415
+ typed: {
416
+ offset: number;
417
+ lineSha: string;
418
+ };
419
+ at: string;
420
+ usedAt: string | null;
421
+ }
422
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/skills/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/skills/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ /** The top-level keys the spec allows. */
2
+ export declare const SPEC_KEYS: readonly string[];
3
+ export declare const NAME_MAX = 64;
4
+ export declare const DESCRIPTION_MAX = 1024;
5
+ export declare const COMPATIBILITY_MAX = 500;
6
+ /**
7
+ * Every way `text` (a SKILL.md) breaks the spec, for a skill in the folder
8
+ * `folderName`. Empty when it is valid.
9
+ */
10
+ export declare function skillProblems(text: string, folderName: string): string[];
11
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/skills/validate.ts"],"names":[],"mappings":"AAkBA,0CAA0C;AAC1C,eAAO,MAAM,SAAS,EAAE,SAAS,MAAM,EAAqF,CAAC;AAE7H,eAAO,MAAM,QAAQ,KAAK,CAAC;AAC3B,eAAO,MAAM,eAAe,OAAO,CAAC;AACpC,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAgCrC;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAwCxE"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * What keeps a SKILL.md from being a valid Agent Skills file, in plain words.
3
+ *
4
+ * The rules are the spec's (agentskills.io/specification), as its reference
5
+ * validator (`skills-ref`) checks them, with one tightening: a name is ASCII
6
+ * only (a-z, 0-9 and single hyphens), since it is also a folder name on every
7
+ * machine that clones the repo. Its YAML reader (strictyaml) refuses a
8
+ * byte-order mark, flow style (`{ … }`, `[ … ]`), tags (`!!str`), anchors and
9
+ * aliases, so those are problems here too. Only `name`, `description`, `license`,
10
+ * `compatibility`, `allowed-tools` and `metadata` may sit at the top level;
11
+ * Trail keeps everything of its own, `version` included, under `metadata`, as
12
+ * flat strings.
13
+ *
14
+ * Pure: no I/O. CI also runs the reference validator over the fixtures in
15
+ * `test/fixtures/skills/`, which a test keeps equal to what Trail writes.
16
+ */
17
+ import { matter } from "../util/front-matter.js";
18
+ /** The top-level keys the spec allows. */
19
+ export const SPEC_KEYS = ["name", "description", "license", "compatibility", "allowed-tools", "metadata"];
20
+ export const NAME_MAX = 64;
21
+ export const DESCRIPTION_MAX = 1024;
22
+ export const COMPATIBILITY_MAX = 500;
23
+ /** a-z and 0-9 in words joined by single hyphens. */
24
+ const NAME = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
25
+ /** A value in flow style or with a tag, after `key:` or `- `: text like `[draft]` mid-line, quoted, or on a folded line is not one. */
26
+ const FLOW_OR_TAG = /^\s*(?:-\s+|[^\s'"#][^:'"]*:\s+)([[{!])/;
27
+ /** The front matter between the opening `---` line and the closing one, or null when there isn't both. */
28
+ function frontMatterBlock(text) {
29
+ const lines = text.split(/\r?\n/);
30
+ if (lines[0]?.trimEnd() !== "---")
31
+ return null;
32
+ const close = lines.findIndex((l, i) => i > 0 && l.trimEnd() === "---");
33
+ return close === -1 ? null : lines.slice(1, close).join("\n");
34
+ }
35
+ function isMap(v) {
36
+ return typeof v === "object" && v !== null && !Array.isArray(v) && !(v instanceof Date);
37
+ }
38
+ function nameProblems(name, folderName) {
39
+ if (typeof name !== "string" || !name.trim())
40
+ return ["`name` is missing: it must be text, the skill's folder name"];
41
+ const out = [];
42
+ if (name.length > NAME_MAX)
43
+ out.push(`\`name\` is ${name.length} characters: at most ${NAME_MAX}`);
44
+ if (name !== name.toLowerCase())
45
+ out.push("`name` must be lowercase");
46
+ if (name.startsWith("-") || name.endsWith("-"))
47
+ out.push("`name` can't start or end with a hyphen");
48
+ if (name.includes("--"))
49
+ out.push("`name` can't have two hyphens in a row");
50
+ if (!NAME.test(name) && /[^a-z0-9-]/.test(name.toLowerCase()))
51
+ out.push("`name` may hold only a-z, 0-9 and hyphens");
52
+ if (name !== folderName)
53
+ out.push(`\`name\` is "${name}" but its folder is "${folderName}": they must match`);
54
+ return out;
55
+ }
56
+ /**
57
+ * Every way `text` (a SKILL.md) breaks the spec, for a skill in the folder
58
+ * `folderName`. Empty when it is valid.
59
+ */
60
+ export function skillProblems(text, folderName) {
61
+ if (text.startsWith("\uFEFF"))
62
+ return ["SKILL.md starts with a byte-order mark, which the reference validator reads as text before the opening `---`"];
63
+ const block = frontMatterBlock(text);
64
+ if (block === null)
65
+ return ["SKILL.md must open with YAML front matter between two `---` lines"];
66
+ // The reference validator splits the file on its first two `---`, wherever they are.
67
+ if (block.includes("---"))
68
+ return ["the front matter holds `---`, which ends it early for some readers"];
69
+ let data;
70
+ try {
71
+ const parsed = matter(text);
72
+ if (parsed.refused)
73
+ return [`the front matter isn't read: ${parsed.refused}`];
74
+ data = parsed.data;
75
+ }
76
+ catch {
77
+ return ["the front matter isn't valid YAML"];
78
+ }
79
+ if (!isMap(data))
80
+ return ["the front matter must be a YAML map"];
81
+ const odd = block.split("\n").map((l) => FLOW_OR_TAG.exec(l)?.[1]).find(Boolean);
82
+ if (odd)
83
+ return [odd === "!" ? "the front matter has a YAML tag (`!`): write the value as plain text" : "the front matter uses flow style (`{ … }` or `[ … ]`): write maps and lists as blocks, one item per line"];
84
+ const out = [];
85
+ const extra = Object.keys(data).filter((k) => !SPEC_KEYS.includes(k));
86
+ if (extra.length)
87
+ out.push(`only ${SPEC_KEYS.join(", ")} may sit at the top level; move ${extra.sort().join(", ")} under metadata`);
88
+ out.push(...nameProblems(data.name, folderName));
89
+ const description = data.description;
90
+ if (typeof description !== "string" || !description.trim())
91
+ out.push("`description` is missing: it must be text, what the skill does and when to use it");
92
+ else if (description.length > DESCRIPTION_MAX)
93
+ out.push(`\`description\` is ${description.length} characters: at most ${DESCRIPTION_MAX}`);
94
+ if ("compatibility" in data) {
95
+ const c = data.compatibility;
96
+ if (typeof c !== "string")
97
+ out.push("`compatibility` must be text");
98
+ else if (c.length > COMPATIBILITY_MAX)
99
+ out.push(`\`compatibility\` is ${c.length} characters: at most ${COMPATIBILITY_MAX}`);
100
+ }
101
+ if ("metadata" in data) {
102
+ const m = data.metadata;
103
+ if (!isMap(m))
104
+ out.push("`metadata` must be a map of names to quoted strings");
105
+ else
106
+ for (const [k, v] of Object.entries(m))
107
+ if (typeof v !== "string")
108
+ out.push(`\`metadata.${k}\` must be a quoted string`);
109
+ }
110
+ return out;
111
+ }
112
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/skills/validate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { type Stats } from 'node:fs';
2
+ import type { CompiledSkill, SkillRef } from './types.js';
3
+ export declare const V_DIR: RegExp;
4
+ export declare function versionsDir(ref: SkillRef): string;
5
+ export declare const lst: (p: string) => Stats | null;
6
+ /** The text of a regular file of at most 64 KB, never through a link; null otherwise (a FIFO is never opened). */
7
+ export declare function regularText(path: string): string | null;
8
+ /** A new file, written and synced (O_EXCL: never over something there). */
9
+ export declare function writeSynced(path: string, data: string, mode?: number): void;
10
+ export declare function syncDir(dir: string): void;
11
+ /** A folder of ours, made 0700; a link or a file in its place refuses (throws). */
12
+ export declare function ownDir(dir: string): void;
13
+ export declare class LinkError extends Error {
14
+ }
15
+ /** The plain files of `from` (scripts/, lessons/) copied into a new folder `to`; links and folders inside are left out. */
16
+ export declare function copyFlat(from: string, to: string, mode: number, only?: (name: string) => boolean): number;
17
+ export declare const tmpName: (dir: string, tag: string) => string;
18
+ /**
19
+ * `.versions/<name>/` holding `text` as SKILL.md (and `scripts` copied when given): written in a temp folder, synced,
20
+ * renamed into place. A folder already there with the same SKILL.md is reused; with other bytes, 'changed'.
21
+ */
22
+ export declare function keepFolder(ref: SkillRef, name: string, text: string, scripts: string | null): 'kept' | 'same' | 'changed';
23
+ /** The person's edited file kept as `hand-<date>` (`-2`, `-3` the same day; the same bytes reuse it), the last 3 kept. */
24
+ export declare function keepHand(ref: SkillRef, text: string, now: Date): string;
25
+ /** Removes the oldest folders matching `re` past `keep` (by version number, else by name), never `spare`. */
26
+ export declare function prune(ref: SkillRef, re: RegExp, keep: number, spare?: string): void;
27
+ export interface LessonFile {
28
+ name: string;
29
+ id: string;
30
+ guardrail: boolean;
31
+ }
32
+ /** The top-level lesson files of a skill folder, with the id and kind readLessons gives them. */
33
+ export declare function lessonFiles(dir: string): LessonFile[];
34
+ /** Moves lesson files into `to` (made 0700); a move that fails leaves the lesson riding the block, which is harmless. */
35
+ export declare function moveLessons(dir: string, files: LessonFile[], to: string): void;
36
+ export interface Swap {
37
+ undo: () => void;
38
+ done: () => void;
39
+ }
40
+ /** scripts/ replaced by the files in `from` (a folder) or `helpers`; `undo` puts the old ones back, `done` drops them. */
41
+ export declare function swapScripts(ref: SkillRef, src: {
42
+ from?: string;
43
+ helpers?: CompiledSkill['helpers'];
44
+ }): Swap;
45
+ //# sourceMappingURL=versions-fs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versions-fs.d.ts","sourceRoot":"","sources":["../../src/skills/versions-fs.ts"],"names":[],"mappings":"AAOA,OAAO,EAAkH,KAAK,KAAK,EAAE,MAAM,SAAS,CAAC;AAErJ,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAO1D,eAAO,MAAM,KAAK,QAAsB,CAAC;AAEzC,wBAAgB,WAAW,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,CAEjD;AAED,eAAO,MAAM,GAAG,GAAI,GAAG,MAAM,KAAG,KAAK,GAAG,IAMvC,CAAC;AAGF,kHAAkH;AAClH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQvD;AAED,2EAA2E;AAC3E,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,SAAQ,GAAG,IAAI,CAS1E;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAKzC;AAED,mFAAmF;AACnF,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAIxC;AACD,qBAAa,SAAU,SAAQ,KAAK;CAAG;AAEvC,2HAA2H;AAC3H,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,GAAG,MAAM,CAYzG;AAED,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,EAAE,KAAK,MAAM,WAA+D,CAAC;AAEhH;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAkBzH;AAED,0HAA0H;AAC1H,wBAAgB,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,GAAG,MAAM,CAWvE;AAED,6GAA6G;AAC7G,wBAAgB,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAWnF;AAKD,MAAM,WAAW,UAAU;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE;AAE5E,iGAAiG;AACjG,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,EAAE,CAkBrD;AAED,yHAAyH;AACzH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAU9E;AAED,MAAM,WAAW,IAAI;IAAG,IAAI,EAAE,MAAM,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,IAAI,CAAA;CAAE;AAE5D,0HAA0H;AAC1H,wBAAgB,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;CAAE,GAAG,IAAI,CAoC3G"}