@nanonets/graft 0.24.0 → 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 (396) hide show
  1. package/dist/ask/ask.d.ts +8 -0
  2. package/dist/ask/ask.d.ts.map +1 -1
  3. package/dist/ask/ask.js +33 -12
  4. package/dist/ask/ask.js.map +1 -1
  5. package/dist/claude/hook-io.d.ts +44 -0
  6. package/dist/claude/hook-io.d.ts.map +1 -0
  7. package/dist/claude/hook-io.js +144 -0
  8. package/dist/claude/hook-io.js.map +1 -0
  9. package/dist/claude/skills-hook-util.d.ts +25 -0
  10. package/dist/claude/skills-hook-util.d.ts.map +1 -0
  11. package/dist/claude/skills-hook-util.js +71 -0
  12. package/dist/claude/skills-hook-util.js.map +1 -0
  13. package/dist/cli-picker.d.ts +24 -0
  14. package/dist/cli-picker.d.ts.map +1 -1
  15. package/dist/cli-picker.js +36 -5
  16. package/dist/cli-picker.js.map +1 -1
  17. package/dist/cli.d.ts.map +1 -1
  18. package/dist/cli.js +278 -29
  19. package/dist/cli.js.map +1 -1
  20. package/dist/cloud/lookup-activity.d.ts +16 -0
  21. package/dist/cloud/lookup-activity.d.ts.map +1 -0
  22. package/dist/cloud/lookup-activity.js +56 -0
  23. package/dist/cloud/lookup-activity.js.map +1 -0
  24. package/dist/cloud/nudge.d.ts.map +1 -1
  25. package/dist/cloud/nudge.js +3 -0
  26. package/dist/cloud/nudge.js.map +1 -1
  27. package/dist/cloud/onboarding.d.ts +237 -0
  28. package/dist/cloud/onboarding.d.ts.map +1 -0
  29. package/dist/cloud/onboarding.js +536 -0
  30. package/dist/cloud/onboarding.js.map +1 -0
  31. package/dist/cloud/pair.d.ts +76 -0
  32. package/dist/cloud/pair.d.ts.map +1 -0
  33. package/dist/cloud/pair.js +249 -0
  34. package/dist/cloud/pair.js.map +1 -0
  35. package/dist/cloud/workspace-sync.d.ts +10 -2
  36. package/dist/cloud/workspace-sync.d.ts.map +1 -1
  37. package/dist/cloud/workspace-sync.js +119 -7
  38. package/dist/cloud/workspace-sync.js.map +1 -1
  39. package/dist/cloud/workspace.d.ts +22 -1
  40. package/dist/cloud/workspace.d.ts.map +1 -1
  41. package/dist/cloud/workspace.js +16 -1
  42. package/dist/cloud/workspace.js.map +1 -1
  43. package/dist/graph/native.d.ts +2 -0
  44. package/dist/graph/native.d.ts.map +1 -1
  45. package/dist/graph/native.js +29 -4
  46. package/dist/graph/native.js.map +1 -1
  47. package/dist/hosts/claude-global.d.ts +14 -0
  48. package/dist/hosts/claude-global.d.ts.map +1 -1
  49. package/dist/hosts/claude-global.js +38 -3
  50. package/dist/hosts/claude-global.js.map +1 -1
  51. package/dist/init/install-record.d.ts +21 -0
  52. package/dist/init/install-record.d.ts.map +1 -0
  53. package/dist/init/install-record.js +144 -0
  54. package/dist/init/install-record.js.map +1 -0
  55. package/dist/init/plain-file.d.ts +11 -0
  56. package/dist/init/plain-file.d.ts.map +1 -0
  57. package/dist/init/plain-file.js +80 -0
  58. package/dist/init/plain-file.js.map +1 -0
  59. package/dist/mcp/brains.d.ts +72 -0
  60. package/dist/mcp/brains.d.ts.map +1 -0
  61. package/dist/mcp/brains.js +220 -0
  62. package/dist/mcp/brains.js.map +1 -0
  63. package/dist/mcp/server.d.ts +3 -1
  64. package/dist/mcp/server.d.ts.map +1 -1
  65. package/dist/mcp/server.js +40 -5
  66. package/dist/mcp/server.js.map +1 -1
  67. package/dist/mcp/tools.d.ts.map +1 -1
  68. package/dist/mcp/tools.js +7 -2
  69. package/dist/mcp/tools.js.map +1 -1
  70. package/dist/notes/cold-start.d.ts +30 -1
  71. package/dist/notes/cold-start.d.ts.map +1 -1
  72. package/dist/notes/cold-start.js +98 -19
  73. package/dist/notes/cold-start.js.map +1 -1
  74. package/dist/notes/every-repo.d.ts +18 -0
  75. package/dist/notes/every-repo.d.ts.map +1 -0
  76. package/dist/notes/every-repo.js +86 -0
  77. package/dist/notes/every-repo.js.map +1 -0
  78. package/dist/notes/guardrails.d.ts +8 -0
  79. package/dist/notes/guardrails.d.ts.map +1 -0
  80. package/dist/notes/guardrails.js +38 -0
  81. package/dist/notes/guardrails.js.map +1 -0
  82. package/dist/notes/lesson-index.d.ts +13 -0
  83. package/dist/notes/lesson-index.d.ts.map +1 -0
  84. package/dist/notes/lesson-index.js +135 -0
  85. package/dist/notes/lesson-index.js.map +1 -0
  86. package/dist/notes/linked-learnings.d.ts +8 -0
  87. package/dist/notes/linked-learnings.d.ts.map +1 -0
  88. package/dist/notes/linked-learnings.js +113 -0
  89. package/dist/notes/linked-learnings.js.map +1 -0
  90. package/dist/notes/replace.d.ts +14 -0
  91. package/dist/notes/replace.d.ts.map +1 -0
  92. package/dist/notes/replace.js +38 -0
  93. package/dist/notes/replace.js.map +1 -0
  94. package/dist/notes/repo-notes-dir.d.ts +2 -0
  95. package/dist/notes/repo-notes-dir.d.ts.map +1 -0
  96. package/dist/notes/repo-notes-dir.js +16 -0
  97. package/dist/notes/repo-notes-dir.js.map +1 -0
  98. package/dist/skills/anchors-cli.d.ts +33 -0
  99. package/dist/skills/anchors-cli.d.ts.map +1 -0
  100. package/dist/skills/anchors-cli.js +274 -0
  101. package/dist/skills/anchors-cli.js.map +1 -0
  102. package/dist/skills/anchors-git.d.ts +29 -0
  103. package/dist/skills/anchors-git.d.ts.map +1 -0
  104. package/dist/skills/anchors-git.js +241 -0
  105. package/dist/skills/anchors-git.js.map +1 -0
  106. package/dist/skills/anchors-wide.d.ts +25 -0
  107. package/dist/skills/anchors-wide.d.ts.map +1 -0
  108. package/dist/skills/anchors-wide.js +481 -0
  109. package/dist/skills/anchors-wide.js.map +1 -0
  110. package/dist/skills/anchors.d.ts +32 -0
  111. package/dist/skills/anchors.d.ts.map +1 -0
  112. package/dist/skills/anchors.js +485 -0
  113. package/dist/skills/anchors.js.map +1 -0
  114. package/dist/skills/check-result.d.ts +26 -0
  115. package/dist/skills/check-result.d.ts.map +1 -0
  116. package/dist/skills/check-result.js +46 -0
  117. package/dist/skills/check-result.js.map +1 -0
  118. package/dist/skills/codex-sandbox.d.ts +6 -0
  119. package/dist/skills/codex-sandbox.d.ts.map +1 -0
  120. package/dist/skills/codex-sandbox.js +55 -0
  121. package/dist/skills/codex-sandbox.js.map +1 -0
  122. package/dist/skills/compile-split.d.ts +57 -0
  123. package/dist/skills/compile-split.d.ts.map +1 -0
  124. package/dist/skills/compile-split.js +532 -0
  125. package/dist/skills/compile-split.js.map +1 -0
  126. package/dist/skills/compile-version.d.ts +37 -0
  127. package/dist/skills/compile-version.d.ts.map +1 -0
  128. package/dist/skills/compile-version.js +56 -0
  129. package/dist/skills/compile-version.js.map +1 -0
  130. package/dist/skills/compile-waits.d.ts +12 -0
  131. package/dist/skills/compile-waits.d.ts.map +1 -0
  132. package/dist/skills/compile-waits.js +52 -0
  133. package/dist/skills/compile-waits.js.map +1 -0
  134. package/dist/skills/compile-words.d.ts +82 -0
  135. package/dist/skills/compile-words.d.ts.map +1 -0
  136. package/dist/skills/compile-words.js +385 -0
  137. package/dist/skills/compile-words.js.map +1 -0
  138. package/dist/skills/compile.d.ts +35 -0
  139. package/dist/skills/compile.d.ts.map +1 -0
  140. package/dist/skills/compile.js +488 -0
  141. package/dist/skills/compile.js.map +1 -0
  142. package/dist/skills/credit-facts.d.ts +8 -0
  143. package/dist/skills/credit-facts.d.ts.map +1 -0
  144. package/dist/skills/credit-facts.js +32 -0
  145. package/dist/skills/credit-facts.js.map +1 -0
  146. package/dist/skills/directive-words.d.ts +11 -0
  147. package/dist/skills/directive-words.d.ts.map +1 -0
  148. package/dist/skills/directive-words.js +33 -0
  149. package/dist/skills/directive-words.js.map +1 -0
  150. package/dist/skills/fidelity.d.ts +42 -0
  151. package/dist/skills/fidelity.d.ts.map +1 -0
  152. package/dist/skills/fidelity.js +138 -0
  153. package/dist/skills/fidelity.js.map +1 -0
  154. package/dist/skills/forget-notice.d.ts +44 -0
  155. package/dist/skills/forget-notice.d.ts.map +1 -0
  156. package/dist/skills/forget-notice.js +131 -0
  157. package/dist/skills/forget-notice.js.map +1 -0
  158. package/dist/skills/found-skill.d.ts +35 -0
  159. package/dist/skills/found-skill.d.ts.map +1 -0
  160. package/dist/skills/found-skill.js +66 -0
  161. package/dist/skills/found-skill.js.map +1 -0
  162. package/dist/skills/front-version.d.ts +12 -0
  163. package/dist/skills/front-version.d.ts.map +1 -0
  164. package/dist/skills/front-version.js +87 -0
  165. package/dist/skills/front-version.js.map +1 -0
  166. package/dist/skills/host-facts.d.ts +51 -0
  167. package/dist/skills/host-facts.d.ts.map +1 -0
  168. package/dist/skills/host-facts.js +134 -0
  169. package/dist/skills/host-facts.js.map +1 -0
  170. package/dist/skills/ledger.d.ts +43 -0
  171. package/dist/skills/ledger.d.ts.map +1 -0
  172. package/dist/skills/ledger.js +336 -0
  173. package/dist/skills/ledger.js.map +1 -0
  174. package/dist/skills/lessons.d.ts +60 -0
  175. package/dist/skills/lessons.d.ts.map +1 -0
  176. package/dist/skills/lessons.js +396 -0
  177. package/dist/skills/lessons.js.map +1 -0
  178. package/dist/skills/offer-answers.d.ts +20 -0
  179. package/dist/skills/offer-answers.d.ts.map +1 -0
  180. package/dist/skills/offer-answers.js +51 -0
  181. package/dist/skills/offer-answers.js.map +1 -0
  182. package/dist/skills/own-folder.d.ts +9 -0
  183. package/dist/skills/own-folder.d.ts.map +1 -0
  184. package/dist/skills/own-folder.js +36 -0
  185. package/dist/skills/own-folder.js.map +1 -0
  186. package/dist/skills/person.d.ts +34 -0
  187. package/dist/skills/person.d.ts.map +1 -0
  188. package/dist/skills/person.js +102 -0
  189. package/dist/skills/person.js.map +1 -0
  190. package/dist/skills/probe-clean.d.ts +9 -0
  191. package/dist/skills/probe-clean.d.ts.map +1 -0
  192. package/dist/skills/probe-clean.js +48 -0
  193. package/dist/skills/probe-clean.js.map +1 -0
  194. package/dist/skills/probes.d.ts +26 -0
  195. package/dist/skills/probes.d.ts.map +1 -0
  196. package/dist/skills/probes.js +225 -0
  197. package/dist/skills/probes.js.map +1 -0
  198. package/dist/skills/recall.d.ts +119 -0
  199. package/dist/skills/recall.d.ts.map +1 -0
  200. package/dist/skills/recall.js +370 -0
  201. package/dist/skills/recall.js.map +1 -0
  202. package/dist/skills/receipts.d.ts +44 -0
  203. package/dist/skills/receipts.d.ts.map +1 -0
  204. package/dist/skills/receipts.js +223 -0
  205. package/dist/skills/receipts.js.map +1 -0
  206. package/dist/skills/run-checkout.d.ts +4 -0
  207. package/dist/skills/run-checkout.d.ts.map +1 -0
  208. package/dist/skills/run-checkout.js +37 -0
  209. package/dist/skills/run-checkout.js.map +1 -0
  210. package/dist/skills/runblock.d.ts +45 -0
  211. package/dist/skills/runblock.d.ts.map +1 -0
  212. package/dist/skills/runblock.js +222 -0
  213. package/dist/skills/runblock.js.map +1 -0
  214. package/dist/skills/save-parse.d.ts +42 -0
  215. package/dist/skills/save-parse.d.ts.map +1 -0
  216. package/dist/skills/save-parse.js +172 -0
  217. package/dist/skills/save-parse.js.map +1 -0
  218. package/dist/skills/save-store.d.ts +12 -0
  219. package/dist/skills/save-store.d.ts.map +1 -0
  220. package/dist/skills/save-store.js +22 -0
  221. package/dist/skills/save-store.js.map +1 -0
  222. package/dist/skills/settings.d.ts +38 -0
  223. package/dist/skills/settings.d.ts.map +1 -0
  224. package/dist/skills/settings.js +133 -0
  225. package/dist/skills/settings.js.map +1 -0
  226. package/dist/skills/skill-diff.d.ts +40 -0
  227. package/dist/skills/skill-diff.d.ts.map +1 -0
  228. package/dist/skills/skill-diff.js +191 -0
  229. package/dist/skills/skill-diff.js.map +1 -0
  230. package/dist/skills/skill-file.d.ts +24 -0
  231. package/dist/skills/skill-file.d.ts.map +1 -0
  232. package/dist/skills/skill-file.js +97 -0
  233. package/dist/skills/skill-file.js.map +1 -0
  234. package/dist/skills/skill-rebuild.d.ts +27 -0
  235. package/dist/skills/skill-rebuild.d.ts.map +1 -0
  236. package/dist/skills/skill-rebuild.js +85 -0
  237. package/dist/skills/skill-rebuild.js.map +1 -0
  238. package/dist/skills/skillmd.d.ts +17 -0
  239. package/dist/skills/skillmd.d.ts.map +1 -0
  240. package/dist/skills/skillmd.js +219 -0
  241. package/dist/skills/skillmd.js.map +1 -0
  242. package/dist/skills/skills.d.ts +2 -0
  243. package/dist/skills/skills.d.ts.map +1 -1
  244. package/dist/skills/skills.js +1 -1
  245. package/dist/skills/skills.js.map +1 -1
  246. package/dist/skills/staleness.d.ts +27 -0
  247. package/dist/skills/staleness.d.ts.map +1 -0
  248. package/dist/skills/staleness.js +178 -0
  249. package/dist/skills/staleness.js.map +1 -0
  250. package/dist/skills/state.d.ts +36 -0
  251. package/dist/skills/state.d.ts.map +1 -0
  252. package/dist/skills/state.js +259 -0
  253. package/dist/skills/state.js.map +1 -0
  254. package/dist/skills/store-fs.d.ts +77 -0
  255. package/dist/skills/store-fs.d.ts.map +1 -0
  256. package/dist/skills/store-fs.js +194 -0
  257. package/dist/skills/store-fs.js.map +1 -0
  258. package/dist/skills/store-held.d.ts +44 -0
  259. package/dist/skills/store-held.d.ts.map +1 -0
  260. package/dist/skills/store-held.js +147 -0
  261. package/dist/skills/store-held.js.map +1 -0
  262. package/dist/skills/store.d.ts +73 -0
  263. package/dist/skills/store.d.ts.map +1 -0
  264. package/dist/skills/store.js +279 -0
  265. package/dist/skills/store.js.map +1 -0
  266. package/dist/skills/validate.d.ts +11 -0
  267. package/dist/skills/validate.d.ts.map +1 -0
  268. package/dist/skills/validate.js +112 -0
  269. package/dist/skills/validate.js.map +1 -0
  270. package/dist/skills/versions-fs.d.ts +45 -0
  271. package/dist/skills/versions-fs.d.ts.map +1 -0
  272. package/dist/skills/versions-fs.js +234 -0
  273. package/dist/skills/versions-fs.js.map +1 -0
  274. package/dist/skills/versions.d.ts +56 -0
  275. package/dist/skills/versions.d.ts.map +1 -0
  276. package/dist/skills/versions.js +351 -0
  277. package/dist/skills/versions.js.map +1 -0
  278. package/dist/trace/checks.d.ts +63 -0
  279. package/dist/trace/checks.d.ts.map +1 -0
  280. package/dist/trace/checks.js +487 -0
  281. package/dist/trace/checks.js.map +1 -0
  282. package/dist/trace/claude.d.ts +124 -0
  283. package/dist/trace/claude.d.ts.map +1 -0
  284. package/dist/trace/claude.js +303 -0
  285. package/dist/trace/claude.js.map +1 -0
  286. package/dist/trace/codex-exec.d.ts +22 -0
  287. package/dist/trace/codex-exec.d.ts.map +1 -0
  288. package/dist/trace/codex-exec.js +129 -0
  289. package/dist/trace/codex-exec.js.map +1 -0
  290. package/dist/trace/codex-meta.d.ts +23 -0
  291. package/dist/trace/codex-meta.d.ts.map +1 -0
  292. package/dist/trace/codex-meta.js +112 -0
  293. package/dist/trace/codex-meta.js.map +1 -0
  294. package/dist/trace/codex.d.ts +33 -0
  295. package/dist/trace/codex.d.ts.map +1 -0
  296. package/dist/trace/codex.js +485 -0
  297. package/dist/trace/codex.js.map +1 -0
  298. package/dist/trace/cursor.d.ts +16 -0
  299. package/dist/trace/cursor.d.ts.map +1 -0
  300. package/dist/trace/cursor.js +133 -0
  301. package/dist/trace/cursor.js.map +1 -0
  302. package/dist/trace/dialect.d.ts +43 -0
  303. package/dist/trace/dialect.d.ts.map +1 -0
  304. package/dist/trace/dialect.js +95 -0
  305. package/dist/trace/dialect.js.map +1 -0
  306. package/dist/trace/epochs.d.ts +10 -0
  307. package/dist/trace/epochs.d.ts.map +1 -0
  308. package/dist/trace/epochs.js +16 -0
  309. package/dist/trace/epochs.js.map +1 -0
  310. package/dist/trace/failure.d.ts +15 -0
  311. package/dist/trace/failure.d.ts.map +1 -0
  312. package/dist/trace/failure.js +69 -0
  313. package/dist/trace/failure.js.map +1 -0
  314. package/dist/trace/gate-file.d.ts +71 -0
  315. package/dist/trace/gate-file.d.ts.map +1 -0
  316. package/dist/trace/gate-file.js +329 -0
  317. package/dist/trace/gate-file.js.map +1 -0
  318. package/dist/trace/guard-fast.d.ts +22 -0
  319. package/dist/trace/guard-fast.d.ts.map +1 -0
  320. package/dist/trace/guard-fast.js +213 -0
  321. package/dist/trace/guard-fast.js.map +1 -0
  322. package/dist/trace/housekeeping.d.ts +5 -0
  323. package/dist/trace/housekeeping.d.ts.map +1 -0
  324. package/dist/trace/housekeeping.js +93 -0
  325. package/dist/trace/housekeeping.js.map +1 -0
  326. package/dist/trace/jobs.d.ts +52 -0
  327. package/dist/trace/jobs.d.ts.map +1 -0
  328. package/dist/trace/jobs.js +182 -0
  329. package/dist/trace/jobs.js.map +1 -0
  330. package/dist/trace/known-repo.d.ts +3 -0
  331. package/dist/trace/known-repo.d.ts.map +1 -0
  332. package/dist/trace/known-repo.js +55 -0
  333. package/dist/trace/known-repo.js.map +1 -0
  334. package/dist/trace/pool.d.ts +40 -0
  335. package/dist/trace/pool.d.ts.map +1 -0
  336. package/dist/trace/pool.js +154 -0
  337. package/dist/trace/pool.js.map +1 -0
  338. package/dist/trace/repairs.d.ts +27 -0
  339. package/dist/trace/repairs.d.ts.map +1 -0
  340. package/dist/trace/repairs.js +303 -0
  341. package/dist/trace/repairs.js.map +1 -0
  342. package/dist/trace/run-calls.d.ts +82 -0
  343. package/dist/trace/run-calls.d.ts.map +1 -0
  344. package/dist/trace/run-calls.js +331 -0
  345. package/dist/trace/run-calls.js.map +1 -0
  346. package/dist/trace/run-join.d.ts +20 -0
  347. package/dist/trace/run-join.d.ts.map +1 -0
  348. package/dist/trace/run-join.js +99 -0
  349. package/dist/trace/run-join.js.map +1 -0
  350. package/dist/trace/run-sheets.d.ts +26 -0
  351. package/dist/trace/run-sheets.d.ts.map +1 -0
  352. package/dist/trace/run-sheets.js +145 -0
  353. package/dist/trace/run-sheets.js.map +1 -0
  354. package/dist/trace/run-turns.d.ts +24 -0
  355. package/dist/trace/run-turns.d.ts.map +1 -0
  356. package/dist/trace/run-turns.js +67 -0
  357. package/dist/trace/run-turns.js.map +1 -0
  358. package/dist/trace/run-verdict.d.ts +24 -0
  359. package/dist/trace/run-verdict.d.ts.map +1 -0
  360. package/dist/trace/run-verdict.js +176 -0
  361. package/dist/trace/run-verdict.js.map +1 -0
  362. package/dist/trace/runs.d.ts +54 -0
  363. package/dist/trace/runs.d.ts.map +1 -0
  364. package/dist/trace/runs.js +501 -0
  365. package/dist/trace/runs.js.map +1 -0
  366. package/dist/trace/skill-session.d.ts +64 -0
  367. package/dist/trace/skill-session.d.ts.map +1 -0
  368. package/dist/trace/skill-session.js +232 -0
  369. package/dist/trace/skill-session.js.map +1 -0
  370. package/dist/trace/tamper.d.ts +12 -0
  371. package/dist/trace/tamper.d.ts.map +1 -0
  372. package/dist/trace/tamper.js +405 -0
  373. package/dist/trace/tamper.js.map +1 -0
  374. package/dist/trace/typed.d.ts +30 -0
  375. package/dist/trace/typed.d.ts.map +1 -0
  376. package/dist/trace/typed.js +132 -0
  377. package/dist/trace/typed.js.map +1 -0
  378. package/dist/trace/wall-state.d.ts +86 -0
  379. package/dist/trace/wall-state.d.ts.map +1 -0
  380. package/dist/trace/wall-state.js +279 -0
  381. package/dist/trace/wall-state.js.map +1 -0
  382. package/dist/trace/walls.d.ts +40 -0
  383. package/dist/trace/walls.d.ts.map +1 -0
  384. package/dist/trace/walls.js +318 -0
  385. package/dist/trace/walls.js.map +1 -0
  386. package/dist/vendor/tree-sitter-swift/LICENSE +21 -0
  387. package/dist/vendor/tree-sitter-swift/node-types.json +30694 -0
  388. package/dist/vendor/tree-sitter-swift/prebuilds/darwin-arm64/tree-sitter-swift.node +0 -0
  389. package/dist/vendor/tree-sitter-swift/prebuilds/darwin-x64/tree-sitter-swift.node +0 -0
  390. package/dist/vendor/tree-sitter-swift/prebuilds/linux-arm64/tree-sitter-swift.node +0 -0
  391. package/dist/vendor/tree-sitter-swift/prebuilds/linux-x64/tree-sitter-swift.node +0 -0
  392. package/dist/vendor/tree-sitter-swift/prebuilds/win32-arm64/tree-sitter-swift.node +0 -0
  393. package/dist/vendor/tree-sitter-swift/prebuilds/win32-x64/tree-sitter-swift.node +0 -0
  394. package/package.json +6 -3
  395. package/scripts/stamp-telemetry-key.mjs +8 -5
  396. package/scripts/vendor-grammars.mjs +35 -0
@@ -17,7 +17,7 @@ import { join } from "node:path";
17
17
  import { trailHome } from "../notes/home.js";
18
18
  import { readJson, writeJsonAtomic } from "../util/state.js";
19
19
  /** Trail's own front end and API. TRAIL_URL (or the older GRAFT_BRAIN_URL) moves it, for a local or self-hosted Trail. */
20
- const DEFAULT_TRAIL_URL = "https://app.trailhq.com";
20
+ export const DEFAULT_TRAIL_URL = "https://team.trailhq.com";
21
21
  export function trailUrl(env = process.env) {
22
22
  return (env.TRAIL_URL || env.GRAFT_BRAIN_URL || DEFAULT_TRAIL_URL).replace(/\/+$/, "");
23
23
  }
@@ -97,6 +97,21 @@ export async function registerHandoff(base, req, fetchImpl) {
97
97
  const r = await call(base, "POST", "/api/cli/handoffs", req, { fetchImpl });
98
98
  return isError(r) ? r : r.body;
99
99
  }
100
+ /**
101
+ * Report how a `trail init --pair` run is going, for the onboarding page that
102
+ * shows it live. "reviewed" once the person has kept or dropped what it found
103
+ * (Trail takes no more), "gone" when the link expired or Trail doesn't know it.
104
+ */
105
+ export async function postHandoffProgress(base, body, fetchImpl) {
106
+ const r = await call(base, "POST", "/api/cli/handoffs/progress", body, { fetchImpl, timeoutMs: 15_000 });
107
+ if (!isError(r))
108
+ return "ok";
109
+ if (r.status === 409)
110
+ return "reviewed";
111
+ if (r.status === 404 || r.status === 410)
112
+ return "gone";
113
+ return "error";
114
+ }
100
115
  /** Ask once whether the person finished in the browser. A network or server error counts as "not yet". */
101
116
  export async function claimHandoff(base, state, fetchImpl) {
102
117
  const r = await call(base, "POST", "/api/cli/handoffs/claim", { state }, { fetchImpl, timeoutMs: 10_000 });
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/cloud/workspace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/cloud/workspace.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  import type Parser from "tree-sitter";
2
2
  import type { Language } from "./extract.js";
3
+ /** `id` from `vendorDir` when the build put it there, else from node_modules. */
4
+ export declare function requireGrammar(id: string, vendorDir?: string): unknown;
3
5
  /**
4
6
  * True when `lang`'s native grammar loads and the parser accepts it. The first call
5
7
  * per language does the loading; the answer is cached for the life of the process.
@@ -1 +1 @@
1
- {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../src/graph/native.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AA0E7C;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAmBnD;AAED;mFACmF;AACnF,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CASnD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,MAAM,EAAE,CAUzE;AAED;yEACyE;AACzE,MAAM,WAAW,cAAc;IAC7B,kFAAkF;IAClF,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,cAAc,GAAG,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO7G;AAED;;6EAE6E;AAC7E,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,IAAI,GAAG,IAAI,CAKlF;AAED,0EAA0E;AAC1E,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAErD"}
1
+ {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../src/graph/native.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAgB7C,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,SAAa,GAAG,OAAO,CAO1E;AAwED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAmBnD;AAED;mFACmF;AACnF,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CASnD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,MAAM,EAAE,CAWzE;AAED;yEACyE;AACzE,MAAM,WAAW,cAAc;IAC7B,kFAAkF;IAClF,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,cAAc,GAAG,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO7G;AAED;;6EAE6E;AAC7E,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,IAAI,GAAG,IAAI,CAKlF;AAED,0EAA0E;AAC1E,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAErD"}
@@ -16,8 +16,32 @@
16
16
  * breadth tier instead (`fallbackLangOf` in generic.ts), and the build says which
17
17
  * languages and how to get the native parser back ({@link nativeFallbackNotice}).
18
18
  */
19
+ import { existsSync } from "node:fs";
19
20
  import { createRequire } from "node:module";
21
+ import { join } from "node:path";
22
+ import { fileURLToPath } from "node:url";
20
23
  const nodeRequire = createRequire(import.meta.url);
24
+ /**
25
+ * Grammars the build copies into dist/vendor/ (scripts/vendor-grammars.mjs)
26
+ * instead of the package depending on them. tree-sitter-swift asks for
27
+ * tree-sitter ^0.22 while every other grammar asks for ^0.21, so as a dependency
28
+ * it made every `npm install -g` print a wall of peer warnings. Its prebuilt
29
+ * binaries cover all six desktop platforms; anywhere else the require fails and
30
+ * Swift goes to its WASM stand-in like any missing grammar. Run from src/, there
31
+ * is no dist/vendor/ and the dev dependency stands in.
32
+ */
33
+ const VENDORED = new Set(["tree-sitter-swift"]);
34
+ const VENDOR_DIR = fileURLToPath(new URL("../vendor/", import.meta.url));
35
+ /** `id` from `vendorDir` when the build put it there, else from node_modules. */
36
+ export function requireGrammar(id, vendorDir = VENDOR_DIR) {
37
+ const dir = join(vendorDir, id);
38
+ if (!VENDORED.has(id) || !existsSync(dir))
39
+ return nodeRequire(id);
40
+ const grammar = nodeRequire(join(dir, "prebuilds", `${process.platform}-${process.arch}`, `${id}.node`));
41
+ // What the package's own bindings/node/index.js adds to the binding.
42
+ grammar.nodeTypeInfo = nodeRequire(join(dir, "node-types.json"));
43
+ return grammar;
44
+ }
21
45
  const CORE = "tree-sitter";
22
46
  /** The module each depth-tier grammar comes from, and the export that is the
23
47
  * grammar when the module ships more than one (typescript+tsx, php+php_only). */
@@ -38,7 +62,7 @@ const GRAMMAR_MODULES = {
38
62
  const NPM_NAME = {
39
63
  "tree-sitter-r": "@davisvaughan/tree-sitter-r",
40
64
  };
41
- let requireModule = (id) => nodeRequire(id);
65
+ let requireModule = (id) => requireGrammar(id);
42
66
  const modules = new Map();
43
67
  const ready = new Map();
44
68
  /** undefined: not tried yet. null: tried, and the core binding is unusable. */
@@ -132,7 +156,8 @@ export function missingNativePackages(langs) {
132
156
  continue;
133
157
  for (const id of [CORE, GRAMMAR_MODULES[lang].module]) {
134
158
  const m = modules.get(id);
135
- if (m && !m.ok)
159
+ // A vendored grammar has no install script for a flag to allow.
160
+ if (m && !m.ok && !VENDORED.has(id))
136
161
  out.add(NPM_NAME[id] ?? id);
137
162
  }
138
163
  }
@@ -157,13 +182,13 @@ export function nativeFallbackNotice(fallback, packageName) {
157
182
  * `require`), and forget everything loaded so far. A missing binary is simulated by
158
183
  * a function that throws for that module id, the way node-gyp-build does. */
159
184
  export function setNativeRequireForTest(fn) {
160
- requireModule = fn ?? ((id) => nodeRequire(id));
185
+ requireModule = fn ?? ((id) => requireGrammar(id));
161
186
  modules.clear();
162
187
  ready.clear();
163
188
  parser = undefined;
164
189
  }
165
190
  /** The real `require` the seam above wraps, for a test's pass-through. */
166
191
  export function realNativeRequire(id) {
167
- return nodeRequire(id);
192
+ return requireGrammar(id);
168
193
  }
169
194
  //# sourceMappingURL=native.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"native.js","sourceRoot":"","sources":["../../src/graph/native.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAI5C,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEnD,MAAM,IAAI,GAAG,aAAa,CAAC;AAE3B;iFACiF;AACjF,MAAM,eAAe,GAAwD;IAC3E,UAAU,EAAE,EAAE,MAAM,EAAE,wBAAwB,EAAE,IAAI,EAAE,YAAY,EAAE;IACpE,GAAG,EAAE,EAAE,MAAM,EAAE,wBAAwB,EAAE,IAAI,EAAE,KAAK,EAAE;IACtD,MAAM,EAAE,EAAE,MAAM,EAAE,oBAAoB,EAAE;IACxC,EAAE,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE;IAChC,CAAC,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE;IAC9B,IAAI,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;IACpC,MAAM,EAAE,EAAE,MAAM,EAAE,oBAAoB,EAAE;IACxC,KAAK,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE;IACtC,GAAG,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,KAAK,EAAE;CAChD,CAAC;AAEF;;wDAEwD;AACxD,MAAM,QAAQ,GAA2B;IACvC,eAAe,EAAE,6BAA6B;CAC/C,CAAC;AAIF,IAAI,aAAa,GAA4B,CAAC,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AACrE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;AAC1C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAqB,CAAC;AAC3C,+EAA+E;AAC/E,IAAI,MAAiC,CAAC;AAEtC,SAAS,OAAO,CAAC,GAAY;IAC3B,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,IAAI,CAAC,EAAU;IACtB,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC1B,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,IAAI,CAAC;YACH,GAAG,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC;QAC/C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3C,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,UAAU;IACjB,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,MAAM,GAAG,IAAI,CAAC;QACd,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,MAAM,GAAG,IAAK,IAAI,CAAC,KAAuB,EAAE,CAAC;YAC/C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,IAAI,CAAC,CAAC,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,IAAI,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,KAAiC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC/E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,IAAc;IACxC,IAAI,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACzB,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;QACrB,EAAE,GAAG,KAAK,CAAC;QACX,6EAA6E;QAC7E,gEAAgE;QAChE,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,CAAC,CAAC,WAAW,CAAC,OAAgB,CAAC,CAAC;gBAChC,EAAE,GAAG,IAAI,CAAC;YACZ,CAAC;YAAC,MAAM,CAAC;gBACP,4EAA4E;YAC9E,CAAC;QACH,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;mFACmF;AACnF,MAAM,UAAU,YAAY,CAAC,IAAc;IACzC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAChF,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,2BAA2B,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACzG,CAAC;IACD,MAAM,CAAC,GAAG,MAAgB,CAAC;IAC3B,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAU,CAAC,CAAC;IACxC,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAyB;IAC7D,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,WAAW,CAAC,IAAI,CAAC;YAAE,SAAS;QAChC,KAAK,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YACtD,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;gBAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC;AAUD;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAoC,EAAE,WAAmB;IAC5F,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9D,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,wBAAwB,CAAC;IACjG,MAAM,IAAI,GAAG,KAAK,KAAK,yBAAyB,IAAI,WAAW,CAAC;IAChE,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,OAAO,GAAG,IAAI,2CAA2C,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,WAAW,EAAE,CAAC;AACxG,CAAC;AAED;;6EAE6E;AAC7E,MAAM,UAAU,uBAAuB,CAAC,EAAoC;IAC1E,aAAa,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,KAAK,EAAE,CAAC;IAChB,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,MAAM,GAAG,SAAS,CAAC;AACrB,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,iBAAiB,CAAC,EAAU;IAC1C,OAAO,WAAW,CAAC,EAAE,CAAC,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"native.js","sourceRoot":"","sources":["../../src/graph/native.ts"],"names":[],"mappings":"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"}
@@ -53,4 +53,18 @@ export declare function fitTrailServerToMachine(home: string, folder: string, ha
53
53
  trail: boolean;
54
54
  graft: boolean;
55
55
  }): GlobalWrite;
56
+ /** The flag that makes `trail mcp` serve only the workspace's brain tools. */
57
+ export declare const BRAINS_FLAG = "--brains";
58
+ /** Whether a user-scope `trail` entry is the brains-only server (`trail mcp --brains`). */
59
+ export declare function isBrainsServer(entry: unknown): boolean;
60
+ /**
61
+ * Once this machine is connected to a Trail workspace, Claude Code gets one
62
+ * `trail` entry at the user MCP scope (`~/.claude.json`, every project): a
63
+ * server that serves only the workspace's brain tools. trail gives Claude
64
+ * Code no repo-tools server (its hooks and the `trail` command do that work),
65
+ * so this one lists the four brain tools and nothing else. Best-effort.
66
+ */
67
+ export declare function installBrainsServer(home: string): GlobalWrite;
68
+ /** Take the brains server out again (`trail logout`). Leaves any other `trail` entry alone. */
69
+ export declare function removeBrainsServer(home: string): GlobalWrite;
56
70
  //# sourceMappingURL=claude-global.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude-global.d.ts","sourceRoot":"","sources":["../../src/hosts/claude-global.ts"],"names":[],"mappings":"AAgCA,OAAO,EAA8B,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,qFAAqF;AACrF,MAAM,MAAM,WAAW,GAAG,WAAW,CAAC;AAEtC,sFAAsF;AACtF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,KAAe,GAAG,YAAY,EAAE,CAUxF;AAeD;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,KAAe,GAAG,WAAW,EAAE,CAwCvF;AAiBD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CAkB9E;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG,WAAW,CA4B1H"}
1
+ {"version":3,"file":"claude-global.d.ts","sourceRoot":"","sources":["../../src/hosts/claude-global.ts"],"names":[],"mappings":"AAgCA,OAAO,EAA8B,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,qFAAqF;AACrF,MAAM,MAAM,WAAW,GAAG,WAAW,CAAC;AAEtC,sFAAsF;AACtF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,KAAe,GAAG,YAAY,EAAE,CAUxF;AAeD;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,KAAe,GAAG,WAAW,EAAE,CAyCvF;AAkBD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CAkB9E;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG,WAAW,CA4B1H;AAMD,8EAA8E;AAC9E,eAAO,MAAM,WAAW,aAAa,CAAC;AAEtC,2FAA2F;AAC3F,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAGtD;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAS7D;AAED,+FAA+F;AAC/F,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAE5D"}
@@ -113,7 +113,8 @@ export function installClaudeGlobal(home, brand = 'graft') {
113
113
  // graft's keeps serving every repo still wired as graft; a trail repo turns
114
114
  // it off for its own folder (see disableGraftServerIn).
115
115
  if (brand === 'trail') {
116
- out.push(dropUserServer(mcp.id, mcp.path, 'trail'));
116
+ // The workspace-brains server `init --connect` adds stays: it serves no repo tools.
117
+ out.push(dropUserServer(mcp.id, mcp.path, 'trail', isBrainsServer));
117
118
  return out;
118
119
  }
119
120
  try {
@@ -124,8 +125,8 @@ export function installClaudeGlobal(home, brand = 'graft') {
124
125
  }
125
126
  return out;
126
127
  }
127
- /** Remove one user-scope server from `~/.claude.json`, leaving everything else. */
128
- function dropUserServer(id, path, name) {
128
+ /** Remove one user-scope server from `~/.claude.json`, leaving everything else; `keep` spares an entry it accepts. */
129
+ function dropUserServer(id, path, name, keep) {
129
130
  try {
130
131
  const loaded = readJsonObject(path);
131
132
  if (loaded === 'unparseable')
@@ -133,6 +134,8 @@ function dropUserServer(id, path, name) {
133
134
  const servers = loaded.root.mcpServers;
134
135
  if (!servers || typeof servers !== 'object' || !(name in servers))
135
136
  return { id, path, action: 'unchanged' };
137
+ if (keep?.(servers[name]))
138
+ return { id, path, action: 'unchanged' };
136
139
  delete servers[name];
137
140
  writeFileSync(path, `${JSON.stringify(loaded.root, null, 2)}\n`);
138
141
  return { id, path, action: 'updated' };
@@ -216,4 +219,36 @@ export function fitTrailServerToMachine(home, folder, has) {
216
219
  return { id, path, action: 'skipped-unparseable' };
217
220
  }
218
221
  }
222
+ /* -------------------------------------------------------------------------- */
223
+ /* the workspace's brains, for Claude Code */
224
+ /* -------------------------------------------------------------------------- */
225
+ /** The flag that makes `trail mcp` serve only the workspace's brain tools. */
226
+ export const BRAINS_FLAG = '--brains';
227
+ /** Whether a user-scope `trail` entry is the brains-only server (`trail mcp --brains`). */
228
+ export function isBrainsServer(entry) {
229
+ const args = entry?.args;
230
+ return Array.isArray(args) && args.includes(BRAINS_FLAG);
231
+ }
232
+ /**
233
+ * Once this machine is connected to a Trail workspace, Claude Code gets one
234
+ * `trail` entry at the user MCP scope (`~/.claude.json`, every project): a
235
+ * server that serves only the workspace's brain tools. trail gives Claude
236
+ * Code no repo-tools server (its hooks and the `trail` command do that work),
237
+ * so this one lists the four brain tools and nothing else. Best-effort.
238
+ */
239
+ export function installBrainsServer(home) {
240
+ const id = 'claude-global-brains';
241
+ const path = join(home, '.claude.json');
242
+ try {
243
+ const { command, args } = serverEntry({ brand: 'trail' });
244
+ return mergeJsonKey(id, path, 'mcpServers', { command, args: [...args, BRAINS_FLAG] }, 'trail');
245
+ }
246
+ catch {
247
+ return { id, path, action: 'skipped-unparseable' };
248
+ }
249
+ }
250
+ /** Take the brains server out again (`trail logout`). Leaves any other `trail` entry alone. */
251
+ export function removeBrainsServer(home) {
252
+ return dropUserServer('claude-global-brains', join(home, '.claude.json'), 'trail', (e) => !isBrainsServer(e));
253
+ }
219
254
  //# sourceMappingURL=claude-global.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude-global.js","sourceRoot":"","sources":["../../src/hosts/claude-global.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-global.js","sourceRoot":"","sources":["../../src/hosts/claude-global.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /** What a recorded path holds: a sha256, or null for "init deleted it". */
2
+ export type InstallFiles = Record<string, string | null>;
3
+ export interface InstallSnap {
4
+ checkout: string;
5
+ rels: string[];
6
+ before: Map<string, string | null | false>;
7
+ dirty: Set<string>;
8
+ prior: InstallFiles | null;
9
+ }
10
+ export declare function installRecordPath(checkout: string, env?: NodeJS.ProcessEnv): string;
11
+ /** The sha256 of a plain file's bytes; null when nothing is there; false for a link, a FIFO, a folder or a big file. */
12
+ export declare function fileSha(path: string): string | null | false;
13
+ /** The record for this checkout, or null when there is none or it names another checkout. */
14
+ export declare function readInstallRecord(checkout: string, env?: NodeJS.ProcessEnv): InstallFiles | null;
15
+ /** Whether `rel` is a path init recorded here that still holds what init left (absent, for one it deleted). */
16
+ export declare function initLeftIt(files: InstallFiles | null, checkout: string, rel: string): boolean;
17
+ /** Before init writes: what each path holds, which were dirty already, and the last record. */
18
+ export declare function snapInstall(checkout: string, rels: string[], env?: NodeJS.ProcessEnv): InstallSnap;
19
+ /** After init wrote: record the paths it made its own, and return them. */
20
+ export declare function recordInstall(snap: InstallSnap, env?: NodeJS.ProcessEnv): string[];
21
+ //# sourceMappingURL=install-record.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-record.d.ts","sourceRoot":"","sources":["../../src/init/install-record.ts"],"names":[],"mappings":"AAwBA,2EAA2E;AAC3E,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;AAEzD,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC;IAC3C,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnB,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;CAC5B;AAUD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAGnF;AAED,wHAAwH;AACxH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,KAAK,CAwB3D;AAED,6FAA6F;AAC7F,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,YAAY,GAAG,IAAI,CAgBhG;AAED,+GAA+G;AAC/G,wBAAgB,UAAU,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAG7F;AAoBD,+FAA+F;AAC/F,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,WAAW,CAM/G;AAED,2EAA2E;AAC3E,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,EAAE,CAc/F"}
@@ -0,0 +1,144 @@
1
+ /**
2
+ * D120 (2): the install record, `<trail home>/state/installed/<checkout hash>.json`:
3
+ * the repo paths `trail init` wrote in one checkout, each with the sha256 of what
4
+ * it wrote (null for a file it deleted). The clean-tree ready probe ignores a
5
+ * dirty path only while it is in this record and still holds those bytes, so any
6
+ * later edit blocks again.
7
+ *
8
+ * A path counts as init's when init changed it and it was clean in git just
9
+ * before (or the last record already had it, unchanged since). A path the person
10
+ * had dirty before init stays theirs, whatever init then wrote into it. Links,
11
+ * FIFOs and files over 1 MB are never recorded or vouched for.
12
+ */
13
+ import { spawnSync } from 'node:child_process';
14
+ import { createHash } from 'node:crypto';
15
+ import { closeSync, fstatSync, lstatSync, readSync, realpathSync } from 'node:fs';
16
+ import { join } from 'node:path';
17
+ import { trailPath, writePrivate } from '../util/private-fs.js';
18
+ import { openPlain, readPlain } from './plain-file.js';
19
+ const MAX_FILE = 1024 * 1024;
20
+ const MAX_PATHS = 200;
21
+ const REL = /^(?!\/)(?!.*(?:^|\/)\.\.?(?:\/|$))[\w.@+-]+(?:\/[\w.@+-]+)*$/;
22
+ const SHA = /^[0-9a-f]{64}$/;
23
+ function real(checkout) {
24
+ try {
25
+ return realpathSync.native(checkout);
26
+ }
27
+ catch {
28
+ return checkout;
29
+ }
30
+ }
31
+ export function installRecordPath(checkout, env) {
32
+ const key = createHash('sha256').update(real(checkout)).digest('hex').slice(0, 16);
33
+ return trailPath(env, 'state', 'installed', `${key}.json`);
34
+ }
35
+ /** The sha256 of a plain file's bytes; null when nothing is there; false for a link, a FIFO, a folder or a big file. */
36
+ export function fileSha(path) {
37
+ try {
38
+ if (!lstatSync(path).isFile())
39
+ return false;
40
+ }
41
+ catch {
42
+ return null;
43
+ }
44
+ let fd = -1;
45
+ try {
46
+ fd = openPlain(path);
47
+ const size = fstatSync(fd).size;
48
+ if (size > MAX_FILE)
49
+ return false;
50
+ const buf = Buffer.alloc(size);
51
+ let off = 0;
52
+ while (off < size) {
53
+ const n = readSync(fd, buf, off, size - off, off);
54
+ if (n <= 0)
55
+ break;
56
+ off += n;
57
+ }
58
+ return createHash('sha256').update(buf.subarray(0, off)).digest('hex');
59
+ }
60
+ catch {
61
+ return false;
62
+ }
63
+ finally {
64
+ if (fd >= 0)
65
+ closeSync(fd);
66
+ }
67
+ }
68
+ /** The record for this checkout, or null when there is none or it names another checkout. */
69
+ export function readInstallRecord(checkout, env) {
70
+ let raw;
71
+ try {
72
+ const text = readPlain(installRecordPath(checkout, env), MAX_FILE);
73
+ if (text === null)
74
+ return null;
75
+ raw = JSON.parse(text);
76
+ }
77
+ catch {
78
+ return null;
79
+ }
80
+ const r = raw;
81
+ if (!r || r.v !== 1 || r.checkout !== real(checkout) || !r.files || typeof r.files !== 'object' || Array.isArray(r.files))
82
+ return null;
83
+ const out = {};
84
+ for (const [rel, sha] of Object.entries(r.files).slice(0, MAX_PATHS)) {
85
+ if (REL.test(rel) && (sha === null || (typeof sha === 'string' && SHA.test(sha))))
86
+ out[rel] = sha;
87
+ }
88
+ return out;
89
+ }
90
+ /** Whether `rel` is a path init recorded here that still holds what init left (absent, for one it deleted). */
91
+ export function initLeftIt(files, checkout, rel) {
92
+ if (!files || !Object.hasOwn(files, rel) || !REL.test(rel))
93
+ return false;
94
+ return fileSha(join(checkout, rel)) === files[rel];
95
+ }
96
+ /** The paths of `git status --porcelain -z` (a rename's both sides), for the paths asked about. */
97
+ function dirtyPaths(checkout, rels, env) {
98
+ if (!rels.length)
99
+ return new Set();
100
+ const r = spawnSync('git', ['status', '--porcelain', '-z', '--untracked-files=all', '--', ...rels], {
101
+ cwd: checkout, encoding: 'utf8', timeout: 10_000, env: { ...env, GIT_OPTIONAL_LOCKS: '0', GIT_TERMINAL_PROMPT: '0' },
102
+ });
103
+ if (r.status !== 0 || typeof r.stdout !== 'string')
104
+ return null;
105
+ const out = new Set();
106
+ const parts = r.stdout.split('\0');
107
+ for (let i = 0; i < parts.length; i++) {
108
+ const p = parts[i];
109
+ if (p.length < 4)
110
+ continue;
111
+ out.add(p.slice(3));
112
+ if (p[0] === 'R' || p[0] === 'C')
113
+ out.add(parts[++i] ?? '');
114
+ }
115
+ return out;
116
+ }
117
+ /** Before init writes: what each path holds, which were dirty already, and the last record. */
118
+ export function snapInstall(checkout, rels, env = process.env) {
119
+ const list = [...new Set(rels.filter((r) => REL.test(r)))].slice(0, MAX_PATHS);
120
+ const dirty = dirtyPaths(checkout, list, env);
121
+ const before = new Map(list.map((rel) => [rel, fileSha(join(checkout, rel))]));
122
+ // When git can't say, every path counts as dirty: nothing is vouched for that the probe couldn't check either.
123
+ return { checkout, rels: list, before, dirty: dirty ?? new Set(list), prior: readInstallRecord(checkout, env) };
124
+ }
125
+ /** After init wrote: record the paths it made its own, and return them. */
126
+ export function recordInstall(snap, env = process.env) {
127
+ const files = {};
128
+ for (const rel of snap.rels) {
129
+ const before = snap.before.get(rel);
130
+ const after = fileSha(join(snap.checkout, rel));
131
+ if (before === false || after === false)
132
+ continue;
133
+ const vouched = !!snap.prior && Object.hasOwn(snap.prior, rel) && snap.prior[rel] === before;
134
+ if (vouched || (before !== after && !snap.dirty.has(rel)))
135
+ files[rel] = after ?? null;
136
+ }
137
+ // Nothing init wrote, and nothing there before: no record at all.
138
+ const kept = Object.keys(files);
139
+ if (!kept.length && !snap.prior)
140
+ return kept;
141
+ writePrivate(installRecordPath(snap.checkout, env), `${JSON.stringify({ v: 1, checkout: real(snap.checkout), files }, null, 2)}\n`);
142
+ return kept;
143
+ }
144
+ //# sourceMappingURL=install-record.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-record.js","sourceRoot":"","sources":["../../src/init/install-record.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /** A read-only descriptor of a plain file, or a throw. `follow`: a link to a plain file is allowed. */
2
+ export declare function openPlain(path: string, opts?: {
3
+ follow?: boolean;
4
+ }): number;
5
+ /** A plain file's text (no link, no FIFO) of at most `max` bytes; null otherwise. Never throws. */
6
+ export declare function readPlain(path: string, max: number): string | null;
7
+ /** Claude Code's projects folder for `env`, real path; null when there is none. */
8
+ export declare function claudeProjectsDir(env?: NodeJS.ProcessEnv): string | null;
9
+ /** `path` is `<projects>/<folder>/<name>.jsonl`, a plain file, with no link in the folder or the file itself. */
10
+ export declare function claudeTranscript(path: string, env?: NodeJS.ProcessEnv): boolean;
11
+ //# sourceMappingURL=plain-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plain-file.d.ts","sourceRoot":"","sources":["../../src/init/plain-file.ts"],"names":[],"mappings":"AAgBA,uGAAuG;AACvG,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,MAAM,CAU/E;AAED,mGAAmG;AACnG,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAclE;AAED,mFAAmF;AACnF,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,IAAI,CAMrF;AAED,iHAAiH;AACjH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAY5F"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * How init opens a file it did not write (b5 review): transcripts, how-to
3
+ * files, and the pointers in its own record, which an agent can edit.
4
+ *
5
+ * - `openPlain` never waits on a FIFO or a device (O_NONBLOCK, then a
6
+ * plain-file check on the open descriptor, so a file swapped after a stat
7
+ * is still caught) and, unless asked, never follows a link.
8
+ * - `claudeTranscript` says whether a path is a transcript where Claude Code
9
+ * keeps them, `~/.claude/projects/<folder>/<name>.jsonl` (HOME from env, as
10
+ * discovery reads it), reached with no link on the way: a file the agent
11
+ * wrote anywhere else, or linked into that folder, is not one.
12
+ */
13
+ import { closeSync, constants, fstatSync, lstatSync, openSync, readSync, realpathSync } from 'node:fs';
14
+ import { homedir } from 'node:os';
15
+ import { basename, dirname, join } from 'node:path';
16
+ /** A read-only descriptor of a plain file, or a throw. `follow`: a link to a plain file is allowed. */
17
+ export function openPlain(path, opts = {}) {
18
+ const flags = constants.O_RDONLY | (constants.O_NONBLOCK ?? 0) | (opts.follow ? 0 : constants.O_NOFOLLOW ?? 0);
19
+ const fd = openSync(path, flags);
20
+ try {
21
+ if (!fstatSync(fd).isFile())
22
+ throw new Error('not a plain file');
23
+ }
24
+ catch (e) {
25
+ closeSync(fd);
26
+ throw e;
27
+ }
28
+ return fd;
29
+ }
30
+ /** A plain file's text (no link, no FIFO) of at most `max` bytes; null otherwise. Never throws. */
31
+ export function readPlain(path, max) {
32
+ let fd = -1;
33
+ try {
34
+ fd = openPlain(path);
35
+ const size = fstatSync(fd).size;
36
+ if (size > max)
37
+ return null;
38
+ const buf = Buffer.alloc(size);
39
+ const n = readSync(fd, buf, 0, size, 0);
40
+ return buf.toString('utf8', 0, n);
41
+ }
42
+ catch {
43
+ return null;
44
+ }
45
+ finally {
46
+ if (fd >= 0)
47
+ try {
48
+ closeSync(fd);
49
+ }
50
+ catch { /* closed */ }
51
+ }
52
+ }
53
+ /** Claude Code's projects folder for `env`, real path; null when there is none. */
54
+ export function claudeProjectsDir(env = process.env) {
55
+ try {
56
+ return realpathSync(join(env.HOME || homedir(), '.claude', 'projects'));
57
+ }
58
+ catch {
59
+ return null;
60
+ }
61
+ }
62
+ /** `path` is `<projects>/<folder>/<name>.jsonl`, a plain file, with no link in the folder or the file itself. */
63
+ export function claudeTranscript(path, env = process.env) {
64
+ try {
65
+ if (typeof path !== 'string' || !path.endsWith('.jsonl'))
66
+ return false;
67
+ const root = claudeProjectsDir(env);
68
+ if (!root)
69
+ return false;
70
+ // Neither the file nor its folder is a link, and the folder is one of the projects folder's own.
71
+ if (!lstatSync(path).isFile() || !lstatSync(dirname(path)).isDirectory())
72
+ return false;
73
+ const folder = realpathSync(dirname(path));
74
+ return dirname(folder) === root && lstatSync(join(root, basename(folder))).isDirectory();
75
+ }
76
+ catch {
77
+ return false;
78
+ }
79
+ }
80
+ //# sourceMappingURL=plain-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plain-file.js","sourceRoot":"","sources":["../../src/init/plain-file.ts"],"names":[],"mappings":"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"}