trail-code 0.0.0-stage → 0.28.0-semantic.3

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 (593) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +567 -2
  3. package/dist/ai/crux.d.ts +88 -0
  4. package/dist/ai/crux.d.ts.map +1 -0
  5. package/dist/ai/crux.js +219 -0
  6. package/dist/ai/crux.js.map +1 -0
  7. package/dist/ai/failure.d.ts +60 -0
  8. package/dist/ai/failure.d.ts.map +1 -0
  9. package/dist/ai/failure.js +86 -0
  10. package/dist/ai/failure.js.map +1 -0
  11. package/dist/ai/llm/anthropic.d.ts +37 -0
  12. package/dist/ai/llm/anthropic.d.ts.map +1 -0
  13. package/dist/ai/llm/anthropic.js +144 -0
  14. package/dist/ai/llm/anthropic.js.map +1 -0
  15. package/dist/ai/llm/factory.d.ts +28 -0
  16. package/dist/ai/llm/factory.d.ts.map +1 -0
  17. package/dist/ai/llm/factory.js +36 -0
  18. package/dist/ai/llm/factory.js.map +1 -0
  19. package/dist/ai/llm/litellm.d.ts +34 -0
  20. package/dist/ai/llm/litellm.d.ts.map +1 -0
  21. package/dist/ai/llm/litellm.js +45 -0
  22. package/dist/ai/llm/litellm.js.map +1 -0
  23. package/dist/ai/llm/openai.d.ts +145 -0
  24. package/dist/ai/llm/openai.d.ts.map +1 -0
  25. package/dist/ai/llm/openai.js +629 -0
  26. package/dist/ai/llm/openai.js.map +1 -0
  27. package/dist/ai/llm/orcarouter.d.ts +34 -0
  28. package/dist/ai/llm/orcarouter.d.ts.map +1 -0
  29. package/dist/ai/llm/orcarouter.js +45 -0
  30. package/dist/ai/llm/orcarouter.js.map +1 -0
  31. package/dist/ai/llm/recover-tool.d.ts +21 -0
  32. package/dist/ai/llm/recover-tool.d.ts.map +1 -0
  33. package/dist/ai/llm/recover-tool.js +109 -0
  34. package/dist/ai/llm/recover-tool.js.map +1 -0
  35. package/dist/ai/llm/types.d.ts +122 -0
  36. package/dist/ai/llm/types.d.ts.map +1 -0
  37. package/dist/ai/llm/types.js +33 -0
  38. package/dist/ai/llm/types.js.map +1 -0
  39. package/dist/ai/providers.d.ts +59 -0
  40. package/dist/ai/providers.d.ts.map +1 -0
  41. package/dist/ai/providers.js +54 -0
  42. package/dist/ai/providers.js.map +1 -0
  43. package/dist/ai/summarize.d.ts +25 -0
  44. package/dist/ai/summarize.d.ts.map +1 -0
  45. package/dist/ai/summarize.js +34 -0
  46. package/dist/ai/summarize.js.map +1 -0
  47. package/dist/ai/synthesize.d.ts +40 -0
  48. package/dist/ai/synthesize.d.ts.map +1 -0
  49. package/dist/ai/synthesize.js +230 -0
  50. package/dist/ai/synthesize.js.map +1 -0
  51. package/dist/ask/ask.d.ts +199 -0
  52. package/dist/ask/ask.d.ts.map +1 -0
  53. package/dist/ask/ask.js +1291 -0
  54. package/dist/ask/ask.js.map +1 -0
  55. package/dist/ask/file-rank.d.ts +72 -0
  56. package/dist/ask/file-rank.d.ts.map +1 -0
  57. package/dist/ask/file-rank.js +160 -0
  58. package/dist/ask/file-rank.js.map +1 -0
  59. package/dist/ask/file-selection.d.ts +22 -0
  60. package/dist/ask/file-selection.d.ts.map +1 -0
  61. package/dist/ask/file-selection.js +66 -0
  62. package/dist/ask/file-selection.js.map +1 -0
  63. package/dist/ask/fuse.d.ts +195 -0
  64. package/dist/ask/fuse.d.ts.map +1 -0
  65. package/dist/ask/fuse.js +344 -0
  66. package/dist/ask/fuse.js.map +1 -0
  67. package/dist/ask/graphrank.d.ts +61 -0
  68. package/dist/ask/graphrank.d.ts.map +1 -0
  69. package/dist/ask/graphrank.js +130 -0
  70. package/dist/ask/graphrank.js.map +1 -0
  71. package/dist/ask/index-file.d.ts +44 -0
  72. package/dist/ask/index-file.d.ts.map +1 -0
  73. package/dist/ask/index-file.js +128 -0
  74. package/dist/ask/index-file.js.map +1 -0
  75. package/dist/ask/semantic.d.ts +42 -0
  76. package/dist/ask/semantic.d.ts.map +1 -0
  77. package/dist/ask/semantic.js +293 -0
  78. package/dist/ask/semantic.js.map +1 -0
  79. package/dist/bin/graft.d.ts +3 -0
  80. package/dist/bin/graft.d.ts.map +1 -0
  81. package/dist/bin/graft.js +14 -0
  82. package/dist/bin/graft.js.map +1 -0
  83. package/dist/bin/trail.d.ts +3 -0
  84. package/dist/bin/trail.d.ts.map +1 -0
  85. package/dist/bin/trail.js +13 -0
  86. package/dist/bin/trail.js.map +1 -0
  87. package/dist/blast/blast-cli.d.ts +35 -0
  88. package/dist/blast/blast-cli.d.ts.map +1 -0
  89. package/dist/blast/blast-cli.js +155 -0
  90. package/dist/blast/blast-cli.js.map +1 -0
  91. package/dist/blast/blast.d.ts +128 -0
  92. package/dist/blast/blast.d.ts.map +1 -0
  93. package/dist/blast/blast.js +383 -0
  94. package/dist/blast/blast.js.map +1 -0
  95. package/dist/blast/diff.d.ts +53 -0
  96. package/dist/blast/diff.d.ts.map +1 -0
  97. package/dist/blast/diff.js +193 -0
  98. package/dist/blast/diff.js.map +1 -0
  99. package/dist/blast/evidence.d.ts +51 -0
  100. package/dist/blast/evidence.d.ts.map +1 -0
  101. package/dist/blast/evidence.js +162 -0
  102. package/dist/blast/evidence.js.map +1 -0
  103. package/dist/blast/modules.d.ts +33 -0
  104. package/dist/blast/modules.d.ts.map +1 -0
  105. package/dist/blast/modules.js +83 -0
  106. package/dist/blast/modules.js.map +1 -0
  107. package/dist/blast/name.d.ts +74 -0
  108. package/dist/blast/name.d.ts.map +1 -0
  109. package/dist/blast/name.js +269 -0
  110. package/dist/blast/name.js.map +1 -0
  111. package/dist/blast/owners.d.ts +85 -0
  112. package/dist/blast/owners.d.ts.map +1 -0
  113. package/dist/blast/owners.js +272 -0
  114. package/dist/blast/owners.js.map +1 -0
  115. package/dist/blast/render.d.ts +46 -0
  116. package/dist/blast/render.d.ts.map +1 -0
  117. package/dist/blast/render.js +422 -0
  118. package/dist/blast/render.js.map +1 -0
  119. package/dist/blast/viz.d.ts +37 -0
  120. package/dist/blast/viz.d.ts.map +1 -0
  121. package/dist/blast/viz.js +180 -0
  122. package/dist/blast/viz.js.map +1 -0
  123. package/dist/brand.d.ts +111 -0
  124. package/dist/brand.d.ts.map +1 -0
  125. package/dist/brand.js +282 -0
  126. package/dist/brand.js.map +1 -0
  127. package/dist/claude/build-progress.d.ts +30 -0
  128. package/dist/claude/build-progress.d.ts.map +1 -0
  129. package/dist/claude/build-progress.js +81 -0
  130. package/dist/claude/build-progress.js.map +1 -0
  131. package/dist/claude/hermes-skill-template.d.ts +16 -0
  132. package/dist/claude/hermes-skill-template.d.ts.map +1 -0
  133. package/dist/claude/hermes-skill-template.js +154 -0
  134. package/dist/claude/hermes-skill-template.js.map +1 -0
  135. package/dist/claude/init.d.ts +65 -0
  136. package/dist/claude/init.d.ts.map +1 -0
  137. package/dist/claude/init.js +258 -0
  138. package/dist/claude/init.js.map +1 -0
  139. package/dist/claude/paths.d.ts +9 -0
  140. package/dist/claude/paths.d.ts.map +1 -0
  141. package/dist/claude/paths.js +22 -0
  142. package/dist/claude/paths.js.map +1 -0
  143. package/dist/claude/session-metrics.d.ts +73 -0
  144. package/dist/claude/session-metrics.d.ts.map +1 -0
  145. package/dist/claude/session-metrics.js +209 -0
  146. package/dist/claude/session-metrics.js.map +1 -0
  147. package/dist/claude/settings-merge.d.ts +76 -0
  148. package/dist/claude/settings-merge.d.ts.map +1 -0
  149. package/dist/claude/settings-merge.js +283 -0
  150. package/dist/claude/settings-merge.js.map +1 -0
  151. package/dist/claude/skill-template.d.ts +13 -0
  152. package/dist/claude/skill-template.d.ts.map +1 -0
  153. package/dist/claude/skill-template.js +290 -0
  154. package/dist/claude/skill-template.js.map +1 -0
  155. package/dist/claude/state.d.ts +85 -0
  156. package/dist/claude/state.d.ts.map +1 -0
  157. package/dist/claude/state.js +88 -0
  158. package/dist/claude/state.js.map +1 -0
  159. package/dist/claude/stats.d.ts +5 -0
  160. package/dist/claude/stats.d.ts.map +1 -0
  161. package/dist/claude/stats.js +24 -0
  162. package/dist/claude/stats.js.map +1 -0
  163. package/dist/cli-epilogue.d.ts +12 -0
  164. package/dist/cli-epilogue.d.ts.map +1 -0
  165. package/dist/cli-epilogue.js +72 -0
  166. package/dist/cli-epilogue.js.map +1 -0
  167. package/dist/cli-meta.d.ts +82 -0
  168. package/dist/cli-meta.d.ts.map +1 -0
  169. package/dist/cli-meta.js +238 -0
  170. package/dist/cli-meta.js.map +1 -0
  171. package/dist/cli-picker.d.ts +139 -0
  172. package/dist/cli-picker.d.ts.map +1 -0
  173. package/dist/cli-picker.js +439 -0
  174. package/dist/cli-picker.js.map +1 -0
  175. package/dist/cli.d.ts +3 -0
  176. package/dist/cli.d.ts.map +1 -0
  177. package/dist/cli.js +1638 -0
  178. package/dist/cli.js.map +1 -0
  179. package/dist/context/batches.d.ts +29 -0
  180. package/dist/context/batches.d.ts.map +1 -0
  181. package/dist/context/batches.js +130 -0
  182. package/dist/context/batches.js.map +1 -0
  183. package/dist/context/build.d.ts +57 -0
  184. package/dist/context/build.d.ts.map +1 -0
  185. package/dist/context/build.js +396 -0
  186. package/dist/context/build.js.map +1 -0
  187. package/dist/context/check.d.ts +42 -0
  188. package/dist/context/check.d.ts.map +1 -0
  189. package/dist/context/check.js +162 -0
  190. package/dist/context/check.js.map +1 -0
  191. package/dist/context/map-dir.d.ts +13 -0
  192. package/dist/context/map-dir.d.ts.map +1 -0
  193. package/dist/context/map-dir.js +81 -0
  194. package/dist/context/map-dir.js.map +1 -0
  195. package/dist/context/node-file.d.ts +109 -0
  196. package/dist/context/node-file.d.ts.map +1 -0
  197. package/dist/context/node-file.js +390 -0
  198. package/dist/context/node-file.js.map +1 -0
  199. package/dist/context/price.d.ts +49 -0
  200. package/dist/context/price.d.ts.map +1 -0
  201. package/dist/context/price.js +83 -0
  202. package/dist/context/price.js.map +1 -0
  203. package/dist/context/savings.d.ts +67 -0
  204. package/dist/context/savings.d.ts.map +1 -0
  205. package/dist/context/savings.js +125 -0
  206. package/dist/context/savings.js.map +1 -0
  207. package/dist/engine.d.ts +85 -0
  208. package/dist/engine.d.ts.map +1 -0
  209. package/dist/engine.js +122 -0
  210. package/dist/engine.js.map +1 -0
  211. package/dist/graph/bindings.d.ts +64 -0
  212. package/dist/graph/bindings.d.ts.map +1 -0
  213. package/dist/graph/bindings.js +713 -0
  214. package/dist/graph/bindings.js.map +1 -0
  215. package/dist/graph/build-run.d.ts +25 -0
  216. package/dist/graph/build-run.d.ts.map +1 -0
  217. package/dist/graph/build-run.js +121 -0
  218. package/dist/graph/build-run.js.map +1 -0
  219. package/dist/graph/build.d.ts +88 -0
  220. package/dist/graph/build.d.ts.map +1 -0
  221. package/dist/graph/build.js +386 -0
  222. package/dist/graph/build.js.map +1 -0
  223. package/dist/graph/cards.d.ts +46 -0
  224. package/dist/graph/cards.d.ts.map +1 -0
  225. package/dist/graph/cards.js +280 -0
  226. package/dist/graph/cards.js.map +1 -0
  227. package/dist/graph/check.d.ts +25 -0
  228. package/dist/graph/check.d.ts.map +1 -0
  229. package/dist/graph/check.js +192 -0
  230. package/dist/graph/check.js.map +1 -0
  231. package/dist/graph/container.d.ts +63 -0
  232. package/dist/graph/container.d.ts.map +1 -0
  233. package/dist/graph/container.js +191 -0
  234. package/dist/graph/container.js.map +1 -0
  235. package/dist/graph/depth-parser.d.ts +61 -0
  236. package/dist/graph/depth-parser.d.ts.map +1 -0
  237. package/dist/graph/depth-parser.js +153 -0
  238. package/dist/graph/depth-parser.js.map +1 -0
  239. package/dist/graph/enrich.d.ts +62 -0
  240. package/dist/graph/enrich.d.ts.map +1 -0
  241. package/dist/graph/enrich.js +258 -0
  242. package/dist/graph/enrich.js.map +1 -0
  243. package/dist/graph/extract-cache.d.ts +101 -0
  244. package/dist/graph/extract-cache.d.ts.map +1 -0
  245. package/dist/graph/extract-cache.js +199 -0
  246. package/dist/graph/extract-cache.js.map +1 -0
  247. package/dist/graph/extract.d.ts +85 -0
  248. package/dist/graph/extract.d.ts.map +1 -0
  249. package/dist/graph/extract.js +2377 -0
  250. package/dist/graph/extract.js.map +1 -0
  251. package/dist/graph/fingerprint.d.ts +76 -0
  252. package/dist/graph/fingerprint.d.ts.map +1 -0
  253. package/dist/graph/fingerprint.js +160 -0
  254. package/dist/graph/fingerprint.js.map +1 -0
  255. package/dist/graph/generic.d.ts +74 -0
  256. package/dist/graph/generic.d.ts.map +1 -0
  257. package/dist/graph/generic.js +773 -0
  258. package/dist/graph/generic.js.map +1 -0
  259. package/dist/graph/invariants.d.ts +33 -0
  260. package/dist/graph/invariants.d.ts.map +1 -0
  261. package/dist/graph/invariants.js +52 -0
  262. package/dist/graph/invariants.js.map +1 -0
  263. package/dist/graph/load.d.ts +29 -0
  264. package/dist/graph/load.d.ts.map +1 -0
  265. package/dist/graph/load.js +97 -0
  266. package/dist/graph/load.js.map +1 -0
  267. package/dist/graph/lsp/client.d.ts +61 -0
  268. package/dist/graph/lsp/client.d.ts.map +1 -0
  269. package/dist/graph/lsp/client.js +217 -0
  270. package/dist/graph/lsp/client.js.map +1 -0
  271. package/dist/graph/lsp/enrich.d.ts +11 -0
  272. package/dist/graph/lsp/enrich.d.ts.map +1 -0
  273. package/dist/graph/lsp/enrich.js +163 -0
  274. package/dist/graph/lsp/enrich.js.map +1 -0
  275. package/dist/graph/lsp/registry.d.ts +22 -0
  276. package/dist/graph/lsp/registry.d.ts.map +1 -0
  277. package/dist/graph/lsp/registry.js +71 -0
  278. package/dist/graph/lsp/registry.js.map +1 -0
  279. package/dist/graph/map.d.ts +107 -0
  280. package/dist/graph/map.d.ts.map +1 -0
  281. package/dist/graph/map.js +239 -0
  282. package/dist/graph/map.js.map +1 -0
  283. package/dist/graph/markdown.d.ts +22 -0
  284. package/dist/graph/markdown.d.ts.map +1 -0
  285. package/dist/graph/markdown.js +143 -0
  286. package/dist/graph/markdown.js.map +1 -0
  287. package/dist/graph/native.d.ts +46 -0
  288. package/dist/graph/native.d.ts.map +1 -0
  289. package/dist/graph/native.js +169 -0
  290. package/dist/graph/native.js.map +1 -0
  291. package/dist/graph/queries/c.scm +13 -0
  292. package/dist/graph/queries/c_sharp.scm +19 -0
  293. package/dist/graph/queries/clojure.scm +58 -0
  294. package/dist/graph/queries/cpp.scm +23 -0
  295. package/dist/graph/queries/dart.scm +42 -0
  296. package/dist/graph/queries/elixir.scm +54 -0
  297. package/dist/graph/queries/gleam.scm +51 -0
  298. package/dist/graph/queries/java.scm +20 -0
  299. package/dist/graph/queries/kotlin.scm +43 -0
  300. package/dist/graph/queries/lua.scm +36 -0
  301. package/dist/graph/queries/nix.scm +32 -0
  302. package/dist/graph/queries/php.scm +40 -0
  303. package/dist/graph/queries/ruby.scm +65 -0
  304. package/dist/graph/queries/rust.scm +41 -0
  305. package/dist/graph/queries/scala.scm +66 -0
  306. package/dist/graph/queries/solidity.scm +43 -0
  307. package/dist/graph/queries/swift.scm +51 -0
  308. package/dist/graph/refresh.d.ts +106 -0
  309. package/dist/graph/refresh.d.ts.map +1 -0
  310. package/dist/graph/refresh.js +430 -0
  311. package/dist/graph/refresh.js.map +1 -0
  312. package/dist/graph/relations.d.ts +14 -0
  313. package/dist/graph/relations.d.ts.map +1 -0
  314. package/dist/graph/relations.js +8 -0
  315. package/dist/graph/relations.js.map +1 -0
  316. package/dist/graph/resolve.d.ts +17 -0
  317. package/dist/graph/resolve.d.ts.map +1 -0
  318. package/dist/graph/resolve.js +716 -0
  319. package/dist/graph/resolve.js.map +1 -0
  320. package/dist/graph/root.d.ts +11 -0
  321. package/dist/graph/root.d.ts.map +1 -0
  322. package/dist/graph/root.js +40 -0
  323. package/dist/graph/root.js.map +1 -0
  324. package/dist/graph/scopes.d.ts +40 -0
  325. package/dist/graph/scopes.d.ts.map +1 -0
  326. package/dist/graph/scopes.js +383 -0
  327. package/dist/graph/scopes.js.map +1 -0
  328. package/dist/graph/seed.d.ts +38 -0
  329. package/dist/graph/seed.d.ts.map +1 -0
  330. package/dist/graph/seed.js +229 -0
  331. package/dist/graph/seed.js.map +1 -0
  332. package/dist/graph/source-files.d.ts +46 -0
  333. package/dist/graph/source-files.d.ts.map +1 -0
  334. package/dist/graph/source-files.js +118 -0
  335. package/dist/graph/source-files.js.map +1 -0
  336. package/dist/graph/traverse-cli.d.ts +55 -0
  337. package/dist/graph/traverse-cli.d.ts.map +1 -0
  338. package/dist/graph/traverse-cli.js +189 -0
  339. package/dist/graph/traverse-cli.js.map +1 -0
  340. package/dist/graph/traverse.d.ts +112 -0
  341. package/dist/graph/traverse.d.ts.map +1 -0
  342. package/dist/graph/traverse.js +192 -0
  343. package/dist/graph/traverse.js.map +1 -0
  344. package/dist/graph/types.d.ts +78 -0
  345. package/dist/graph/types.d.ts.map +1 -0
  346. package/dist/graph/types.js +14 -0
  347. package/dist/graph/types.js.map +1 -0
  348. package/dist/graph/wasm-runtime.d.ts +19 -0
  349. package/dist/graph/wasm-runtime.d.ts.map +1 -0
  350. package/dist/graph/wasm-runtime.js +38 -0
  351. package/dist/graph/wasm-runtime.js.map +1 -0
  352. package/dist/graph/workspace-cli.d.ts +56 -0
  353. package/dist/graph/workspace-cli.d.ts.map +1 -0
  354. package/dist/graph/workspace-cli.js +111 -0
  355. package/dist/graph/workspace-cli.js.map +1 -0
  356. package/dist/graph/workspace.d.ts +172 -0
  357. package/dist/graph/workspace.d.ts.map +1 -0
  358. package/dist/graph/workspace.js +714 -0
  359. package/dist/graph/workspace.js.map +1 -0
  360. package/dist/graph/write.d.ts +13 -0
  361. package/dist/graph/write.d.ts.map +1 -0
  362. package/dist/graph/write.js +86 -0
  363. package/dist/graph/write.js.map +1 -0
  364. package/dist/hosts/antigravity.d.ts +14 -0
  365. package/dist/hosts/antigravity.d.ts.map +1 -0
  366. package/dist/hosts/antigravity.js +59 -0
  367. package/dist/hosts/antigravity.js.map +1 -0
  368. package/dist/hosts/auto.d.ts +37 -0
  369. package/dist/hosts/auto.d.ts.map +1 -0
  370. package/dist/hosts/auto.js +141 -0
  371. package/dist/hosts/auto.js.map +1 -0
  372. package/dist/hosts/claude-global.d.ts +72 -0
  373. package/dist/hosts/claude-global.d.ts.map +1 -0
  374. package/dist/hosts/claude-global.js +230 -0
  375. package/dist/hosts/claude-global.js.map +1 -0
  376. package/dist/hosts/config-write.d.ts +36 -0
  377. package/dist/hosts/config-write.d.ts.map +1 -0
  378. package/dist/hosts/config-write.js +64 -0
  379. package/dist/hosts/config-write.js.map +1 -0
  380. package/dist/hosts/init.d.ts +28 -0
  381. package/dist/hosts/init.d.ts.map +1 -0
  382. package/dist/hosts/init.js +89 -0
  383. package/dist/hosts/init.js.map +1 -0
  384. package/dist/hosts/instructions.d.ts +14 -0
  385. package/dist/hosts/instructions.d.ts.map +1 -0
  386. package/dist/hosts/instructions.js +95 -0
  387. package/dist/hosts/instructions.js.map +1 -0
  388. package/dist/hosts/mcp-config.d.ts +78 -0
  389. package/dist/hosts/mcp-config.d.ts.map +1 -0
  390. package/dist/hosts/mcp-config.js +251 -0
  391. package/dist/hosts/mcp-config.js.map +1 -0
  392. package/dist/hosts/plan.d.ts +32 -0
  393. package/dist/hosts/plan.d.ts.map +1 -0
  394. package/dist/hosts/plan.js +73 -0
  395. package/dist/hosts/plan.js.map +1 -0
  396. package/dist/hosts/registry.d.ts +41 -0
  397. package/dist/hosts/registry.d.ts.map +1 -0
  398. package/dist/hosts/registry.js +164 -0
  399. package/dist/hosts/registry.js.map +1 -0
  400. package/dist/hosts/retract.d.ts +47 -0
  401. package/dist/hosts/retract.d.ts.map +1 -0
  402. package/dist/hosts/retract.js +520 -0
  403. package/dist/hosts/retract.js.map +1 -0
  404. package/dist/hosts/sections.d.ts +47 -0
  405. package/dist/hosts/sections.d.ts.map +1 -0
  406. package/dist/hosts/sections.js +127 -0
  407. package/dist/hosts/sections.js.map +1 -0
  408. package/dist/index.d.ts +41 -0
  409. package/dist/index.d.ts.map +1 -0
  410. package/dist/index.js +32 -0
  411. package/dist/index.js.map +1 -0
  412. package/dist/ingest/fs.d.ts +79 -0
  413. package/dist/ingest/fs.d.ts.map +1 -0
  414. package/dist/ingest/fs.js +306 -0
  415. package/dist/ingest/fs.js.map +1 -0
  416. package/dist/init-guard.d.ts +16 -0
  417. package/dist/init-guard.d.ts.map +1 -0
  418. package/dist/init-guard.js +27 -0
  419. package/dist/init-guard.js.map +1 -0
  420. package/dist/mcp/instructions.d.ts +5 -0
  421. package/dist/mcp/instructions.d.ts.map +1 -0
  422. package/dist/mcp/instructions.js +64 -0
  423. package/dist/mcp/instructions.js.map +1 -0
  424. package/dist/mcp/kept-listing.d.ts +27 -0
  425. package/dist/mcp/kept-listing.d.ts.map +1 -0
  426. package/dist/mcp/kept-listing.js +63 -0
  427. package/dist/mcp/kept-listing.js.map +1 -0
  428. package/dist/mcp/server.d.ts +4 -0
  429. package/dist/mcp/server.d.ts.map +1 -0
  430. package/dist/mcp/server.js +147 -0
  431. package/dist/mcp/server.js.map +1 -0
  432. package/dist/mcp/tool-names.d.ts +27 -0
  433. package/dist/mcp/tool-names.d.ts.map +1 -0
  434. package/dist/mcp/tool-names.js +47 -0
  435. package/dist/mcp/tool-names.js.map +1 -0
  436. package/dist/mcp/tools.d.ts +22 -0
  437. package/dist/mcp/tools.d.ts.map +1 -0
  438. package/dist/mcp/tools.js +440 -0
  439. package/dist/mcp/tools.js.map +1 -0
  440. package/dist/node-version.d.ts +15 -0
  441. package/dist/node-version.d.ts.map +1 -0
  442. package/dist/node-version.js +23 -0
  443. package/dist/node-version.js.map +1 -0
  444. package/dist/search/grep-cli.d.ts +35 -0
  445. package/dist/search/grep-cli.d.ts.map +1 -0
  446. package/dist/search/grep-cli.js +115 -0
  447. package/dist/search/grep-cli.js.map +1 -0
  448. package/dist/search/grep.d.ts +60 -0
  449. package/dist/search/grep.d.ts.map +1 -0
  450. package/dist/search/grep.js +143 -0
  451. package/dist/search/grep.js.map +1 -0
  452. package/dist/search/ignored-code.d.ts +9 -0
  453. package/dist/search/ignored-code.d.ts.map +1 -0
  454. package/dist/search/ignored-code.js +73 -0
  455. package/dist/search/ignored-code.js.map +1 -0
  456. package/dist/search/user-regexp.d.ts +26 -0
  457. package/dist/search/user-regexp.d.ts.map +1 -0
  458. package/dist/search/user-regexp.js +150 -0
  459. package/dist/search/user-regexp.js.map +1 -0
  460. package/dist/telemetry/contract.d.ts +117 -0
  461. package/dist/telemetry/contract.d.ts.map +1 -0
  462. package/dist/telemetry/contract.js +341 -0
  463. package/dist/telemetry/contract.js.map +1 -0
  464. package/dist/telemetry/flush.d.ts +21 -0
  465. package/dist/telemetry/flush.d.ts.map +1 -0
  466. package/dist/telemetry/flush.js +85 -0
  467. package/dist/telemetry/flush.js.map +1 -0
  468. package/dist/telemetry/gate.d.ts +30 -0
  469. package/dist/telemetry/gate.d.ts.map +1 -0
  470. package/dist/telemetry/gate.js +81 -0
  471. package/dist/telemetry/gate.js.map +1 -0
  472. package/dist/telemetry/identity.d.ts +40 -0
  473. package/dist/telemetry/identity.d.ts.map +1 -0
  474. package/dist/telemetry/identity.js +80 -0
  475. package/dist/telemetry/identity.js.map +1 -0
  476. package/dist/telemetry/index.d.ts +18 -0
  477. package/dist/telemetry/index.d.ts.map +1 -0
  478. package/dist/telemetry/index.js +16 -0
  479. package/dist/telemetry/index.js.map +1 -0
  480. package/dist/telemetry/key.d.ts +21 -0
  481. package/dist/telemetry/key.d.ts.map +1 -0
  482. package/dist/telemetry/key.js +49 -0
  483. package/dist/telemetry/key.js.map +1 -0
  484. package/dist/telemetry/notice.d.ts +19 -0
  485. package/dist/telemetry/notice.d.ts.map +1 -0
  486. package/dist/telemetry/notice.js +93 -0
  487. package/dist/telemetry/notice.js.map +1 -0
  488. package/dist/telemetry/queue.d.ts +35 -0
  489. package/dist/telemetry/queue.d.ts.map +1 -0
  490. package/dist/telemetry/queue.js +162 -0
  491. package/dist/telemetry/queue.js.map +1 -0
  492. package/dist/telemetry/send.d.ts +19 -0
  493. package/dist/telemetry/send.d.ts.map +1 -0
  494. package/dist/telemetry/send.js +84 -0
  495. package/dist/telemetry/send.js.map +1 -0
  496. package/dist/telemetry/sessions.d.ts +25 -0
  497. package/dist/telemetry/sessions.d.ts.map +1 -0
  498. package/dist/telemetry/sessions.js +104 -0
  499. package/dist/telemetry/sessions.js.map +1 -0
  500. package/dist/telemetry/track.d.ts +62 -0
  501. package/dist/telemetry/track.d.ts.map +1 -0
  502. package/dist/telemetry/track.js +143 -0
  503. package/dist/telemetry/track.js.map +1 -0
  504. package/dist/upkeep-run.d.ts +22 -0
  505. package/dist/upkeep-run.d.ts.map +1 -0
  506. package/dist/upkeep-run.js +85 -0
  507. package/dist/upkeep-run.js.map +1 -0
  508. package/dist/upkeep.d.ts +127 -0
  509. package/dist/upkeep.d.ts.map +1 -0
  510. package/dist/upkeep.js +252 -0
  511. package/dist/upkeep.js.map +1 -0
  512. package/dist/util/actions-folder.d.ts +2 -0
  513. package/dist/util/actions-folder.d.ts.map +1 -0
  514. package/dist/util/actions-folder.js +9 -0
  515. package/dist/util/actions-folder.js.map +1 -0
  516. package/dist/util/browser.d.ts +3 -0
  517. package/dist/util/browser.d.ts.map +1 -0
  518. package/dist/util/browser.js +14 -0
  519. package/dist/util/browser.js.map +1 -0
  520. package/dist/util/child-process.d.ts +15 -0
  521. package/dist/util/child-process.d.ts.map +1 -0
  522. package/dist/util/child-process.js +15 -0
  523. package/dist/util/child-process.js.map +1 -0
  524. package/dist/util/front-matter.d.ts +46 -0
  525. package/dist/util/front-matter.d.ts.map +1 -0
  526. package/dist/util/front-matter.js +113 -0
  527. package/dist/util/front-matter.js.map +1 -0
  528. package/dist/util/id.d.ts +7 -0
  529. package/dist/util/id.d.ts.map +1 -0
  530. package/dist/util/id.js +14 -0
  531. package/dist/util/id.js.map +1 -0
  532. package/dist/util/paths.d.ts +29 -0
  533. package/dist/util/paths.d.ts.map +1 -0
  534. package/dist/util/paths.js +71 -0
  535. package/dist/util/paths.js.map +1 -0
  536. package/dist/util/private-file.d.ts +14 -0
  537. package/dist/util/private-file.d.ts.map +1 -0
  538. package/dist/util/private-file.js +82 -0
  539. package/dist/util/private-file.js.map +1 -0
  540. package/dist/util/source.d.ts +4 -0
  541. package/dist/util/source.d.ts.map +1 -0
  542. package/dist/util/source.js +12 -0
  543. package/dist/util/source.js.map +1 -0
  544. package/dist/util/spinner.d.ts +15 -0
  545. package/dist/util/spinner.d.ts.map +1 -0
  546. package/dist/util/spinner.js +52 -0
  547. package/dist/util/spinner.js.map +1 -0
  548. package/dist/util/state.d.ts +120 -0
  549. package/dist/util/state.d.ts.map +1 -0
  550. package/dist/util/state.js +264 -0
  551. package/dist/util/state.js.map +1 -0
  552. package/dist/vendor/grammars/tree-sitter-go.LICENSE +21 -0
  553. package/dist/vendor/grammars/tree-sitter-go.wasm +0 -0
  554. package/dist/vendor/grammars/tree-sitter-java.LICENSE +21 -0
  555. package/dist/vendor/grammars/tree-sitter-java.wasm +0 -0
  556. package/dist/vendor/grammars/tree-sitter-kotlin.LICENSE +9 -0
  557. package/dist/vendor/grammars/tree-sitter-kotlin.wasm +0 -0
  558. package/dist/vendor/grammars/tree-sitter-php.LICENSE +22 -0
  559. package/dist/vendor/grammars/tree-sitter-php.wasm +0 -0
  560. package/dist/vendor/grammars/tree-sitter-python.LICENSE +21 -0
  561. package/dist/vendor/grammars/tree-sitter-python.wasm +0 -0
  562. package/dist/vendor/grammars/tree-sitter-r.LICENSE +9 -0
  563. package/dist/vendor/grammars/tree-sitter-r.wasm +0 -0
  564. package/dist/vendor/grammars/tree-sitter-swift.LICENSE +21 -0
  565. package/dist/vendor/grammars/tree-sitter-swift.wasm +0 -0
  566. package/dist/vendor/grammars/tree-sitter-tsx.wasm +0 -0
  567. package/dist/vendor/grammars/tree-sitter-typescript.LICENSE +21 -0
  568. package/dist/vendor/grammars/tree-sitter-typescript.wasm +0 -0
  569. package/dist/viewer/app.js +2 -0
  570. package/dist/viewer/index.html +49 -0
  571. package/dist/viewer/style.css +154 -0
  572. package/dist/viz/assemble.d.ts +83 -0
  573. package/dist/viz/assemble.d.ts.map +1 -0
  574. package/dist/viz/assemble.js +101 -0
  575. package/dist/viz/assemble.js.map +1 -0
  576. package/dist/viz/export.d.ts +39 -0
  577. package/dist/viz/export.d.ts.map +1 -0
  578. package/dist/viz/export.js +98 -0
  579. package/dist/viz/export.js.map +1 -0
  580. package/dist/viz/serve.d.ts +13 -0
  581. package/dist/viz/serve.d.ts.map +1 -0
  582. package/dist/viz/serve.js +130 -0
  583. package/dist/viz/serve.js.map +1 -0
  584. package/package.json +115 -4
  585. package/scripts/build-grammar-wasm.mjs +112 -0
  586. package/scripts/build-viewer.mjs +44 -0
  587. package/scripts/graph-quality.mjs +117 -0
  588. package/scripts/pack-trail.mjs +53 -0
  589. package/scripts/postinstall.mjs +65 -0
  590. package/scripts/run-tests.mjs +72 -0
  591. package/scripts/stamp-telemetry-key.mjs +56 -0
  592. package/scripts/tally-audit.mjs +140 -0
  593. package/scripts/vendor-grammars.mjs +53 -0
@@ -0,0 +1,81 @@
1
+ /**
2
+ * `graft build`, run from `graft init` as one line that redraws in place.
3
+ *
4
+ * `buildGraphIfMissing` hands the child the terminal, which prints a `parsing
5
+ * N/M: path` line and four more after it. That is the right output for someone
6
+ * who ran `graft build`, and five lines of someone else's output in the middle
7
+ * of init. Here the child's output is read instead: its progress becomes the
8
+ * spinner's `1,204 of 1,942 files`, its totals become init's one summary line,
9
+ * and any warning or error it printed is passed on whole.
10
+ */
11
+ import { spawn } from "node:child_process";
12
+ import { hasGraftIndex } from "../graph/root.js";
13
+ import { startSpinner } from "../util/spinner.js";
14
+ const n = (s) => Number((s ?? "0").replace(/,/g, "")) || 0;
15
+ /** The totals out of `graft build`'s stdout, or null when it printed none. */
16
+ export function parseBuildSummary(stdout) {
17
+ const wiring = /✓ wiring: ([\d,]+) nodes.*?, ([\d,]+) edges/.exec(stdout);
18
+ if (!wiring)
19
+ return null;
20
+ const parsed = /parsed: [\d,]+ of ([\d,]+) files/.exec(stdout);
21
+ return { nodes: n(wiring[1]), edges: n(wiring[2]), files: n(parsed?.[1]) };
22
+ }
23
+ /** The last `parsing N/M` in a chunk of the child's stderr. */
24
+ export function parseProgress(chunk) {
25
+ let last = null;
26
+ for (const m of chunk.matchAll(/(?:parsing|summarizing) (\d+)\/(\d+)/g))
27
+ last = { index: n(m[1]), total: n(m[2]) };
28
+ return last;
29
+ }
30
+ /**
31
+ * Build the graph for `dir` unless it has one, showing progress on a spinner.
32
+ *
33
+ * `built: false` with no `failed` means there was nothing to do (`--no-build`,
34
+ * or a graph already there). Warning and error lines the build printed come
35
+ * back in `messages`, for the caller to print in full.
36
+ */
37
+ export async function buildGraphWithProgress(dir, opts) {
38
+ if (opts.build === false || !opts.cliPath || hasGraftIndex(dir))
39
+ return { built: false, messages: [] };
40
+ const spinner = startSpinner("building the graph");
41
+ let stdout = "";
42
+ let stderr = "";
43
+ const fmt = (x) => x.toLocaleString("en-US");
44
+ // Base: 10 min per repo for semantic embedding, minimum 10 min, maximum 120 min.
45
+ const perRepo = 10 * 60_000;
46
+ const repos = Math.max(1, opts.childCount ?? 1);
47
+ const timeoutMs = Math.min(Math.max(repos * perRepo, 10 * 60_000), 120 * 60_000);
48
+ const code = await new Promise((resolve) => {
49
+ const child = spawn(process.execPath, [...process.execArgv, opts.cliPath, "build", "."], {
50
+ cwd: dir,
51
+ stdio: ["ignore", "pipe", "pipe"],
52
+ windowsHide: true,
53
+ });
54
+ const timer = setTimeout(() => child.kill(), timeoutMs);
55
+ timer.unref?.();
56
+ child.stdout.setEncoding("utf8");
57
+ child.stderr.setEncoding("utf8");
58
+ child.stdout.on("data", (d) => (stdout += d));
59
+ child.stderr.on("data", (d) => {
60
+ stderr += d;
61
+ const p = parseProgress(d);
62
+ if (p)
63
+ spinner.update(`building the graph · ${fmt(p.index)} of ${fmt(p.total)} files`);
64
+ });
65
+ child.on("error", () => resolve(null));
66
+ child.on("close", (c) => {
67
+ clearTimeout(timer);
68
+ resolve(c);
69
+ });
70
+ });
71
+ spinner.stop();
72
+ const messages = `${stdout}\n${stderr.replace(/\r[^\n]*/g, "\n")}`
73
+ .split("\n")
74
+ .map((l) => l.trimEnd())
75
+ .filter((l) => /^\s*[⚠✗]/.test(l));
76
+ const graph = parseBuildSummary(stdout) ?? undefined;
77
+ if (code !== 0)
78
+ return { built: false, failed: true, messages };
79
+ return { built: true, graph, messages };
80
+ }
81
+ //# sourceMappingURL=build-progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-progress.js","sourceRoot":"","sources":["../../src/claude/build-progress.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Hermes-specific trail skill template.
3
+ *
4
+ * Hermes (Nous Research) reads skills from its own profile directory
5
+ * (~/.hermes/skills/ or %LOCALAPPDATA%/hermes/skills/) and requires YAML
6
+ * frontmatter with name/description/category/triggers.
7
+ *
8
+ * This is separate from the Claude Code skill (skill-template.ts) because
9
+ * the formats differ. Both describe the same reduced surface: the code map and
10
+ * its nine MCP tools. There is no learnings/knowledge layer any more, so nothing
11
+ * here may name a command or tool the binary does not expose — an agent that
12
+ * reads a skill telling it to run a removed command fails with total confidence.
13
+ */
14
+ import { type Brand } from "../brand.js";
15
+ export declare function hermesSkillTemplate(brand?: Brand): string;
16
+ //# sourceMappingURL=hermes-skill-template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hermes-skill-template.d.ts","sourceRoot":"","sources":["../../src/claude/hermes-skill-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAW,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAElD,wBAAgB,mBAAmB,CAAC,KAAK,GAAE,KAAe,GAAG,MAAM,CA0IlE"}
@@ -0,0 +1,154 @@
1
+ /**
2
+ * Hermes-specific trail skill template.
3
+ *
4
+ * Hermes (Nous Research) reads skills from its own profile directory
5
+ * (~/.hermes/skills/ or %LOCALAPPDATA%/hermes/skills/) and requires YAML
6
+ * frontmatter with name/description/category/triggers.
7
+ *
8
+ * This is separate from the Claude Code skill (skill-template.ts) because
9
+ * the formats differ. Both describe the same reduced surface: the code map and
10
+ * its nine MCP tools. There is no learnings/knowledge layer any more, so nothing
11
+ * here may name a command or tool the binary does not expose — an agent that
12
+ * reads a skill telling it to run a removed command fails with total confidence.
13
+ */
14
+ import { inBrand } from "../brand.js";
15
+ export function hermesSkillTemplate(brand = "graft") {
16
+ return inBrand(`---
17
+ name: trail
18
+ description: >
19
+ Use for ANY task in a trail-indexed repo. Runs trail ask before exploring and
20
+ trail callers before changing a symbol. The index refreshes itself on every
21
+ query and works in git worktrees with no setup.
22
+ category: devops
23
+ triggers:
24
+ - trail ask / trail grep / trail callers / trail map / trail skeleton
25
+ - code search in trail- or graft-indexed repos
26
+ - blast radius before changing a symbol
27
+ - querying the map from a git worktree
28
+ - semantic search over specs and .md docs
29
+ ---
30
+
31
+ # trail — el código en un grafo, no en la cabeza del agente
32
+
33
+ Un grafo de llamadas construido con tree-sitter (sin LLM, sin API key, $0), expuesto
34
+ como CLI y como 9 tools MCP. No genera documentación que alguien tenga que mantener:
35
+ responde consultas sobre el código tal como está en el working tree.
36
+
37
+ ## Cuándo usarlo
38
+
39
+ - **Antes de explorar código**, correr \`trail ask "<tarea>" --source\` — incluso para
40
+ "¿dónde está X?" o "¿cómo funciona Y?", antes de grep o de abrir archivos.
41
+ - **Antes de cambiar un símbolo**, correr \`trail callers <sym>\` para ver el blast radius.
42
+ - **Para orientarse** en un repo desconocido, \`trail map\` primero.
43
+ - **Para specs y docs** (.md), \`trail_search_semantic\`.
44
+
45
+ ## Herramientas MCP — cuál usar
46
+
47
+ Las 9 tools: \`trail_set_scope\`, \`trail_find_code\`, \`trail_file_api\`,
48
+ \`trail_check_freshness\`, \`trail_build\`, \`trail_trace_calls\`, \`trail_find_all\`,
49
+ \`trail_repo_map\`, \`trail_search_semantic\`.
50
+
51
+ | Tool | Para qué | Cuándo |
52
+ |---|---|---|
53
+ | \`trail_find_code\` | Búsqueda léxica | **Código**: funciones, símbolos, variables, clases |
54
+ | \`trail_find_all\` | Grep exhaustivo | Todas las ocurrencias de un literal, agrupadas por símbolo |
55
+ | \`trail_trace_calls\` | Grafo de llamadas | Blast radius antes de cambiar algo (\`direction\`, \`depth\`) |
56
+ | \`trail_file_api\` | Firmas del archivo | Ver la API sin leer el archivo completo |
57
+ | \`trail_repo_map\` | Mapa del repo | Orientarse en un repo o workspace desconocido |
58
+ | \`trail_search_semantic\` | Búsqueda conceptual | **Solo specs/docs** en lenguaje natural (.md) |
59
+ | \`trail_check_freshness\` | Estado del índice | ¿El mapa coincide con el working tree? |
60
+ | \`trail_build\` | Rebuild en background | Reconstruir grafo + índice semántico |
61
+ | \`trail_set_scope\` | Fijar scope de sesión | Acotar todas las consultas a un subtree del workspace |
62
+
63
+ > **Regla del semántico**: \`trail_search_semantic\` embebe lenguaje natural, así que
64
+ > rinde en \`.md\` (specs, docs, cartas de sistema) y aporta poco en código.
65
+ > Para un nombre de símbolo usar siempre \`trail_find_code\`.
66
+ >
67
+ > ✅ \`trail_search_semantic("cómo funciona la cuota mínima")\` → encuentra specs
68
+ > ❌ \`trail_search_semantic("retomarCopiaEnProceso")\` → no matchea código
69
+ > ✅ \`trail_find_code("retomarCopiaEnProceso")\` → encuentra el símbolo exacto
70
+
71
+ ## CLI equivalente (cuando el servidor MCP no está activo)
72
+
73
+ \`\`\`
74
+ trail ask "<pregunta>" --source # localizar + entender
75
+ trail grep "<literal>" # exhaustivo — todas las ocurrencias
76
+ trail callers <sym> --depth 2 # blast radius antes de cambiar
77
+ trail skeleton <archivo> # API del archivo en ~200 tokens
78
+ trail map # orientación del repo o workspace
79
+ trail build # reconstruir el mapa (incluye cards e INDEX.md)
80
+ trail status # estado del mapa, frescura y tokens ahorrados
81
+ trail blast --base origin/main # blast radius de un diff (para CI)
82
+ trail viz # grafo interactivo en el browser
83
+ \`\`\`
84
+
85
+ \`trail build --deep\` usa un LLM para resumir símbolos: es opt-in y necesita API key.
86
+
87
+ ## Worktrees
88
+
89
+ Un git worktree enlazado (\`.git\` es un archivo, no un directorio) no tiene índice
90
+ propio, porque el mapa vive en el cache git-ignored. **No hay nada que ejecutar
91
+ antes**: la primera consulta copia el grafo del checkout principal y lo parchea con
92
+ el diff entre las dos ramas, así que la respuesta es sobre el código de *ese*
93
+ worktree, no sobre la rama del principal. El índice semántico viaja igual.
94
+
95
+ ## Refresco por drift
96
+
97
+ Toda consulta compara el fingerprint del índice contra el working tree:
98
+
99
+ - **Hasta 50 archivos cambiados**: se re-extraen antes de responder. Una edición
100
+ recién hecha ya está en el grafo y la respuesta no lleva advertencia.
101
+ - **Más de 50** (un cambio de rama, el merge de trabajo ajeno): se dispara un
102
+ rebuild en background y la respuesta empieza con
103
+ \`[stale: N files changed, rebuilding in background]\`. Significa "esta respuesta
104
+ puede ser anterior al cambio": volver a preguntar en un momento, sin reformular.
105
+ - El índice semántico se refresca siempre en background: cargar el modelo local
106
+ cuesta segundos y no debe bloquear una consulta léxica.
107
+
108
+ Por eso no hace falta \`trail build\` después de un merge. El checkout principal
109
+ tampoco necesita quedarse en una rama concreta: cada path consultado responde sobre
110
+ su propio working tree.
111
+
112
+ ## Scope en workspace grande
113
+
114
+ **Siempre acotar al repo correcto** con \`--in\` (CLI) o \`in=\` (MCP). Sin eso, las
115
+ búsquedas federan sobre todos los repos del workspace y traen hits de otros clientes.
116
+
117
+ \`\`\`
118
+ # MCP
119
+ trail_find_code(query="EvaluacionDetalle", in="default-core/frontend")
120
+ trail_search_semantic(query="cuota minima", in="default-core")
121
+
122
+ # CLI
123
+ trail ask "EvaluacionDetalle" --in default-core/frontend/
124
+ \`\`\`
125
+
126
+ En workspaces con repos compound (ej. \`default-core/frontend\`), usar el path
127
+ completo: \`in="default-core"\` no es un scope válido.
128
+
129
+ ## Cómo leer el resultado
130
+
131
+ - Los hits traen \`covers:\` con el \`file:line\` exacto: citar desde ahí, no re-abrir
132
+ el archivo para "verificar".
133
+ - Si un span viene truncado ("+N more lines"), abrir el archivo en ese rango exacto.
134
+ - \`trail ask\` devuelve top-N; para "todas las ocurrencias" usar \`trail grep\`.
135
+ - No pasar la salida por \`head\`/\`tail\`: ya viene acotada y reporta lo que omitió.
136
+
137
+ ## Configuración del servidor MCP (Hermes)
138
+
139
+ \`\`\`yaml
140
+ mcp_servers:
141
+ trail:
142
+ command: C:/Users/<user>/AppData/Roaming/npm/trail.cmd # o "trail" en Linux/macOS
143
+ args:
144
+ - mcp
145
+ - C:/ruta/al/workspace
146
+ env:
147
+ PYTHONUTF8: "1"
148
+ \`\`\`
149
+
150
+ Si \`trail\` no está instalado: \`npm install -g trail-code --ignore-scripts\`
151
+ y después \`trail init\` en el repo.
152
+ `, brand);
153
+ }
154
+ //# sourceMappingURL=hermes-skill-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hermes-skill-template.js","sourceRoot":"","sources":["../../src/claude/hermes-skill-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,OAAO,EAAc,MAAM,aAAa,CAAC;AAElD,MAAM,UAAU,mBAAmB,CAAC,QAAe,OAAO;IACxD,OAAO,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwIhB,EAAE,KAAK,CAAC,CAAC;AACV,CAAC"}
@@ -0,0 +1,65 @@
1
+ import { type GlobalWrite } from '../hosts/claude-global.js';
2
+ import { type McpWrite } from '../hosts/mcp-config.js';
3
+ import type { PlannedWrite } from '../hosts/plan.js';
4
+ import { type Brand } from '../brand.js';
5
+ /** trail's committed hook path (kept for retract/upkeep references). */
6
+ export declare const TRAIL_HOOK: string;
7
+ /** The status line's shim path (kept for retract/upkeep references). */
8
+ export declare const TRAIL_STATUSLINE: string;
9
+ /** Where trail's skill goes: the user's own `~/.claude`, never the repo. */
10
+ export declare function trailSkillPath(home?: string): string;
11
+ /**
12
+ * Where trail's Hermes skill goes: the user's Hermes profile skills directory.
13
+ * On Windows: %LOCALAPPDATA%/hermes/skills/trail/SKILL.md
14
+ * On Linux/macOS: ~/.hermes/skills/trail/SKILL.md
15
+ */
16
+ export declare function hermesSkillPath(home?: string): string;
17
+ /** Whether the Hermes skills directory exists on this machine. */
18
+ export declare function hermesInstalled(home?: string): boolean;
19
+ /**
20
+ * The files `runInit` writes — pure, no writes, so `--dry-run` and the picker
21
+ * can report them up front.
22
+ */
23
+ export declare function claudeTargets(dir: string, initBrand?: Brand, home?: string): PlannedWrite[];
24
+ /**
25
+ * The name the Claude Code wiring goes by in `dir`.
26
+ */
27
+ export declare function wiringName(dir: string, initBrand?: Brand): Brand;
28
+ /**
29
+ * `claudeTargets` under one name.
30
+ * trail-solo-grafo: hook.cjs and settings.json writing removed; kept for retract/plan compatibility.
31
+ */
32
+ export declare function claudeTargetsFor(dir: string, name: Brand, home?: string): PlannedWrite[];
33
+ /**
34
+ * The layout every graft repo has: shims in `.claude/helpers/`, the skill in `.claude/skills/`.
35
+ */
36
+ export declare function legacyClaudeTargets(dir: string, name: Brand): PlannedWrite[];
37
+ /**
38
+ * Build the graph if it isn't there yet.
39
+ */
40
+ export declare function buildGraphIfMissing(dir: string, opts: {
41
+ build?: boolean;
42
+ cliPath?: string;
43
+ }): boolean;
44
+ export interface InitResult {
45
+ settingsPath: string;
46
+ shims: string[];
47
+ skill: string;
48
+ mcp: McpWrite | null;
49
+ global: GlobalWrite[];
50
+ warnings: string[];
51
+ built: boolean;
52
+ }
53
+ export declare function runInit(dir: string, opts?: {
54
+ build?: boolean;
55
+ cliPath?: string;
56
+ statusline?: boolean;
57
+ global?: boolean;
58
+ home?: string;
59
+ brand?: Brand;
60
+ }): InitResult;
61
+ /**
62
+ * Keep a personal file out of git without touching the repo's `.gitignore`.
63
+ */
64
+ export declare function keepOutOfGit(dir: string, rel: string): void;
65
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/claude/init.ts"],"names":[],"mappings":"AAIA,OAAO,EAA6C,KAAK,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAIxG,OAAO,EAA6B,KAAK,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAGlF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAqB,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAE5D,wEAAwE;AACxE,eAAO,MAAM,UAAU,QAA6B,CAAC;AACrD,wEAAwE;AACxE,eAAO,MAAM,gBAAgB,QAAmC,CAAC;AACjE,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAMhE;AAED,kEAAkE;AAClE,wBAAgB,eAAe,CAAC,IAAI,GAAE,MAAkB,GAAG,OAAO,CAKjE;AAcD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CAE3F;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,KAAK,GAAG,KAAK,CAEhE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAE,MAAkB,GAAG,YAAY,EAAE,CAUnG;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,YAAY,EAAE,CAU5E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAQrG;AAeD,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,wBAAgB,OAAO,CACrB,GAAG,EAAE,MAAM,EACX,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAO,GACrH,UAAU,CAsBZ;AAyFD;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAgB3D"}
@@ -0,0 +1,258 @@
1
+ import { mkdirSync, writeFileSync, readFileSync, rmSync, rmdirSync, existsSync, appendFileSync } from 'node:fs';
2
+ import { join, dirname, resolve, isAbsolute } from 'node:path';
3
+ import { homedir } from 'node:os';
4
+ import { execFileSync } from 'node:child_process';
5
+ import { disableGraftServerIn, installClaudeGlobal } from '../hosts/claude-global.js';
6
+ import { mergeGraftSettings } from './settings-merge.js';
7
+ import { skillTemplate } from './skill-template.js';
8
+ import { hermesSkillTemplate } from './hermes-skill-template.js';
9
+ import { mergeJsonKey, serverEntry } from '../hosts/mcp-config.js';
10
+ import { readJsonObject } from '../hosts/config-write.js';
11
+ import { hasGraftIndex } from '../graph/root.js';
12
+ import { repoWiredForTrail } from '../brand.js';
13
+ /** trail's committed hook path (kept for retract/upkeep references). */
14
+ export const TRAIL_HOOK = join('.trail', 'hook.cjs');
15
+ /** The status line's shim path (kept for retract/upkeep references). */
16
+ export const TRAIL_STATUSLINE = join('.trail', 'statusline.cjs');
17
+ /** Where trail's skill goes: the user's own `~/.claude`, never the repo. */
18
+ export function trailSkillPath(home = homedir()) {
19
+ return join(home, '.claude', 'skills', 'trail', 'SKILL.md');
20
+ }
21
+ /**
22
+ * Where trail's Hermes skill goes: the user's Hermes profile skills directory.
23
+ * On Windows: %LOCALAPPDATA%/hermes/skills/trail/SKILL.md
24
+ * On Linux/macOS: ~/.hermes/skills/trail/SKILL.md
25
+ */
26
+ export function hermesSkillPath(home = homedir()) {
27
+ if (process.platform === 'win32') {
28
+ const local = process.env.LOCALAPPDATA ?? join(home, 'AppData', 'Local');
29
+ return join(local, 'hermes', 'skills', 'trail', 'SKILL.md');
30
+ }
31
+ return join(home, '.hermes', 'skills', 'trail', 'SKILL.md');
32
+ }
33
+ /** Whether the Hermes skills directory exists on this machine. */
34
+ export function hermesInstalled(home = homedir()) {
35
+ const dir = process.platform === 'win32'
36
+ ? join(process.env.LOCALAPPDATA ?? join(home, 'AppData', 'Local'), 'hermes', 'skills')
37
+ : join(home, '.hermes', 'skills');
38
+ return existsSync(dir);
39
+ }
40
+ /** Write `entry` into `.trail/.gitignore` to keep the cache out of git. */
41
+ function ignoreInTrailDir(root, entry) {
42
+ const trailDir = join(root, '.trail');
43
+ mkdirSync(trailDir, { recursive: true });
44
+ const giPath = join(trailDir, '.gitignore');
45
+ let current = '';
46
+ try {
47
+ current = readFileSync(giPath, 'utf8');
48
+ }
49
+ catch { /* new file */ }
50
+ if (!current.split('\n').some(l => l.trim() === entry.trim())) {
51
+ writeFileSync(giPath, current ? `${current.trimEnd()}\n${entry}\n` : `${entry}\n`);
52
+ }
53
+ }
54
+ /**
55
+ * The files `runInit` writes — pure, no writes, so `--dry-run` and the picker
56
+ * can report them up front.
57
+ */
58
+ export function claudeTargets(dir, initBrand, home) {
59
+ return claudeTargetsFor(dir, wiringName(dir, initBrand), home);
60
+ }
61
+ /**
62
+ * The name the Claude Code wiring goes by in `dir`.
63
+ */
64
+ export function wiringName(dir, initBrand) {
65
+ return initBrand === 'trail' || repoWiredForTrail(dir) ? 'trail' : 'graft';
66
+ }
67
+ /**
68
+ * `claudeTargets` under one name.
69
+ * trail-solo-grafo: hook.cjs and settings.json writing removed; kept for retract/plan compatibility.
70
+ */
71
+ export function claudeTargetsFor(dir, name, home = homedir()) {
72
+ if (name !== 'trail')
73
+ return legacyClaudeTargets(dir, name);
74
+ const t = (path, what) => ({ hostId: 'claude', id: 'claude', path, scope: 'repo', kind: 'claude', what });
75
+ return [
76
+ t(join(dir, '.claude', 'settings.json'), 'trail SessionStart hook, shared'),
77
+ t(join(dir, TRAIL_HOOK), 'hooks shim, shared'),
78
+ t(join(dir, '.claude', 'settings.local.json'), 'trail statusline + allowlist, yours'),
79
+ t(join(dir, TRAIL_STATUSLINE), 'statusline shim, git-ignored'),
80
+ { hostId: 'claude', id: 'claude', path: trailSkillPath(home), scope: 'global', kind: 'claude', what: 'trail skill' },
81
+ ];
82
+ }
83
+ /**
84
+ * The layout every graft repo has: shims in `.claude/helpers/`, the skill in `.claude/skills/`.
85
+ */
86
+ export function legacyClaudeTargets(dir, name) {
87
+ const t = (path, what, kind = 'claude') => ({ hostId: 'claude', id: 'claude', path, scope: 'repo', kind, what });
88
+ return [
89
+ t(join(dir, '.claude', 'settings.json'), `${name} statusline + hook blocks`),
90
+ t(join(dir, '.claude', 'helpers', `${name}-statusline.cjs`), 'statusline shim'),
91
+ t(join(dir, '.claude', 'helpers', `${name}-hooks.cjs`), 'hooks shim'),
92
+ t(join(dir, '.claude', 'skills', name, 'SKILL.md'), `${name} skill`),
93
+ t(join(dir, '.mcp.json'), `mcpServers.${name}`, 'mcp'),
94
+ ];
95
+ }
96
+ /**
97
+ * Build the graph if it isn't there yet.
98
+ */
99
+ export function buildGraphIfMissing(dir, opts) {
100
+ if (opts.build === false || !opts.cliPath || hasGraftIndex(dir))
101
+ return false;
102
+ try {
103
+ execFileSync(process.execPath, [...process.execArgv, opts.cliPath, 'build', '.'], { cwd: dir, stdio: 'inherit', timeout: 300000, windowsHide: true });
104
+ return true;
105
+ }
106
+ catch {
107
+ return false;
108
+ }
109
+ }
110
+ /** The repo's settings as an object to merge into. */
111
+ function readSettings(path) {
112
+ let text;
113
+ try {
114
+ text = readFileSync(path, 'utf8');
115
+ }
116
+ catch {
117
+ return {};
118
+ }
119
+ if (!text.trim())
120
+ return {};
121
+ try {
122
+ const parsed = JSON.parse(text);
123
+ return parsed && typeof parsed === 'object' && !Array.isArray(parsed) ? parsed : null;
124
+ }
125
+ catch {
126
+ return null;
127
+ }
128
+ }
129
+ export function runInit(dir, opts = {}) {
130
+ if (wiringName(dir, opts.brand) === 'trail')
131
+ return runTrailInit(dir, opts);
132
+ // graft brand: write settings (no hooks), skill, MCP. Shims removed (trail-solo-grafo).
133
+ const [settings, _statusline, _hooks, skill, mcpTarget] = legacyClaudeTargets(dir, 'graft').map((t) => t.path);
134
+ mkdirSync(dirname(skill), { recursive: true });
135
+ const settingsPath = settings;
136
+ const existing = readSettings(settingsPath);
137
+ const { merged, warnings } = mergeGraftSettings(existing ?? {}, { statusline: opts.statusline, name: 'graft' });
138
+ if (existing)
139
+ writeFileSync(settingsPath, `${JSON.stringify(merged, null, 2)}\n`);
140
+ else
141
+ warnings.push(notPlainJson('.claude/settings.json', "graft's settings"));
142
+ const skillPath = skill;
143
+ writeFileSync(skillPath, skillTemplate('graft'));
144
+ const mcp = mergeJsonKey('claude', mcpTarget, 'mcpServers', serverEntry({ brand: 'graft' }), 'graft');
145
+ const global = opts.global === false ? [] : installClaudeGlobal(opts.home ?? homedir(), 'graft');
146
+ const built = buildGraphIfMissing(dir, opts);
147
+ return { settingsPath, shims: [], skill: skillPath, mcp, global, warnings, built };
148
+ }
149
+ /** The warning for a settings file init left alone because it isn't plain JSON. */
150
+ function notPlainJson(file, what) {
151
+ return `Left ${file} as it was: it isn't plain JSON (a comment or a trailing comma?), and rewriting it would lose what's in it. Make it plain JSON and run init again to add ${what} there.`;
152
+ }
153
+ /**
154
+ * `runInit` for a repo on trail.
155
+ * trail-solo-grafo: writes only .trail/ dir, Hermes skill, and MCP config.
156
+ * Hook shim (.trail/hook.cjs), statusline shim, .claude/settings.json, and
157
+ * knowledge hook plugin are NOT written.
158
+ */
159
+ function runTrailInit(dir, opts) {
160
+ const home = opts.home ?? homedir();
161
+ const global = opts.global !== false;
162
+ // Create the .trail/ directory and git-ignore the cache inside it.
163
+ mkdirSync(join(dir, '.trail'), { recursive: true });
164
+ ignoreInTrailDir(dir, 'cache/');
165
+ const warnings = [];
166
+ let skillPath = '';
167
+ if (global) {
168
+ // Write the trail Claude skill.
169
+ const skill = trailSkillPath(home);
170
+ mkdirSync(dirname(skill), { recursive: true });
171
+ writeFileSync(skill, skillTemplate('trail'));
172
+ skillPath = skill;
173
+ // Write the Hermes skill when Hermes is installed on this machine.
174
+ if (hermesInstalled(home)) {
175
+ const hPath = hermesSkillPath(home);
176
+ mkdirSync(dirname(hPath), { recursive: true });
177
+ writeFileSync(hPath, hermesSkillTemplate('trail'));
178
+ }
179
+ }
180
+ // Clean up any old hook/shim/skill files a previous init may have written.
181
+ clearOldLayout(dir);
182
+ const globalWrites = global ? installClaudeGlobal(home, 'trail') : [];
183
+ if (global)
184
+ globalWrites.push(disableGraftServerIn(home, resolve(dir)));
185
+ const built = buildGraphIfMissing(dir, opts);
186
+ // settings path: nothing written now; return empty string.
187
+ return { settingsPath: '', shims: [], skill: skillPath, mcp: null, global: globalWrites, warnings, built };
188
+ }
189
+ /**
190
+ * Remove old hook/shim/skill files a previous init may have written.
191
+ */
192
+ function clearOldLayout(dir, opts = {}) {
193
+ for (const n of ['graft', 'trail']) {
194
+ const [, oldSl, oldHk, oldSkill] = legacyClaudeTargets(dir, n).map((t) => t.path);
195
+ if (!opts.keepShims) {
196
+ rmSync(oldSl, { force: true });
197
+ rmSync(oldHk, { force: true });
198
+ }
199
+ rmSync(dirname(oldSkill), { recursive: true, force: true });
200
+ }
201
+ for (const d of [join(dir, '.claude', 'helpers'), join(dir, '.claude', 'skills')]) {
202
+ try {
203
+ rmdirSync(d);
204
+ }
205
+ catch { /* holds the user's files, or was never there */ }
206
+ }
207
+ // Remove old .trail/hook.cjs and .trail/statusline.cjs if they exist.
208
+ rmSync(join(dir, TRAIL_HOOK), { force: true });
209
+ rmSync(join(dir, TRAIL_STATUSLINE), { force: true });
210
+ dropServer(join(dir, '.mcp.json'), ['trail', 'graft']);
211
+ }
212
+ /** Take trail's (or graft's) server out of an `.mcp.json`. */
213
+ function dropServer(path, names) {
214
+ try {
215
+ const loaded = readJsonObject(path);
216
+ if (loaded === 'unparseable' || !loaded.existed)
217
+ return;
218
+ const root = loaded.root;
219
+ const servers = root.mcpServers;
220
+ if (!servers || typeof servers !== 'object' || !names.some((n) => n in servers))
221
+ return;
222
+ for (const n of names)
223
+ delete servers[n];
224
+ if (Object.keys(servers).length === 0)
225
+ delete root.mcpServers;
226
+ if (Object.keys(root).length === 0)
227
+ rmSync(path, { force: true });
228
+ else
229
+ writeFileSync(path, `${JSON.stringify(root, null, 2)}\n`);
230
+ }
231
+ catch { /* leave it as the user has it */ }
232
+ }
233
+ /**
234
+ * Keep a personal file out of git without touching the repo's `.gitignore`.
235
+ */
236
+ export function keepOutOfGit(dir, rel) {
237
+ try {
238
+ execFileSync('git', ['check-ignore', '-q', '--', rel], { cwd: dir, stdio: 'ignore', windowsHide: true });
239
+ return;
240
+ }
241
+ catch (e) {
242
+ if (e.status !== 1)
243
+ return;
244
+ }
245
+ try {
246
+ let exclude = execFileSync('git', ['rev-parse', '--git-path', 'info/exclude'], { cwd: dir, encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'], windowsHide: true }).trim();
247
+ if (!isAbsolute(exclude))
248
+ exclude = join(dir, exclude);
249
+ const line = `/${rel.split('\\').join('/')}`;
250
+ const text = existsSync(exclude) ? readFileSync(exclude, 'utf8') : '';
251
+ if (text.split('\n').some((l) => l.trim() === line))
252
+ return;
253
+ mkdirSync(dirname(exclude), { recursive: true });
254
+ appendFileSync(exclude, `${text && !text.endsWith('\n') ? '\n' : ''}${line}\n`);
255
+ }
256
+ catch { /* best-effort */ }
257
+ }
258
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/claude/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /** Absolute path to the graft CLI (`<pkgRoot>/dist/cli.js`), resolved from this module. */
2
+ export declare function graftCliPath(): string;
3
+ /** Absolute path to this package's `dist/claude` dir. Baked into the generated shims at
4
+ * init time as their primary resolution candidate, so the statusline/hooks find graft
5
+ * without runtime guesswork — correct regardless of how Node was installed. */
6
+ export declare function claudeDistDir(): string;
7
+ /** Absolute path to a sibling script in the claude dir (e.g. `sync-run.js`). */
8
+ export declare function claudeScriptPath(name: string): string;
9
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/claude/paths.ts"],"names":[],"mappings":"AASA,2FAA2F;AAC3F,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;+EAE+E;AAC/E,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD"}