@selvakumaresra/specship 0.1.3 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (694) hide show
  1. package/README.md +2 -2
  2. package/commands/ss-design-implement.md +79 -0
  3. package/commands/{cg-drifted.md → ss-drifted.md} +2 -2
  4. package/commands/{cg-fix.md → ss-fix.md} +1 -1
  5. package/commands/{cg-implement.md → ss-implement.md} +1 -1
  6. package/commands/ss-spec-author.md +43 -0
  7. package/commands/ss-spec-review.md +48 -0
  8. package/dist/bin/node-version-check.d.ts +37 -0
  9. package/dist/bin/node-version-check.d.ts.map +1 -0
  10. package/dist/bin/node-version-check.js +79 -0
  11. package/dist/bin/node-version-check.js.map +1 -0
  12. package/dist/bin/specship.d.ts +25 -0
  13. package/dist/bin/specship.d.ts.map +1 -0
  14. package/dist/bin/specship.js +2019 -0
  15. package/dist/bin/specship.js.map +1 -0
  16. package/dist/bin/uninstall.d.ts +13 -0
  17. package/dist/bin/uninstall.d.ts.map +1 -0
  18. package/dist/bin/uninstall.js +35 -0
  19. package/dist/bin/uninstall.js.map +1 -0
  20. package/dist/context/formatter.d.ts +30 -0
  21. package/dist/context/formatter.d.ts.map +1 -0
  22. package/dist/context/formatter.js +263 -0
  23. package/dist/context/formatter.js.map +1 -0
  24. package/dist/context/index.d.ts +119 -0
  25. package/dist/context/index.d.ts.map +1 -0
  26. package/dist/context/index.js +1289 -0
  27. package/dist/context/index.js.map +1 -0
  28. package/dist/context/markers.d.ts +19 -0
  29. package/dist/context/markers.d.ts.map +1 -0
  30. package/dist/context/markers.js +22 -0
  31. package/dist/context/markers.js.map +1 -0
  32. package/dist/db/index.d.ts +103 -0
  33. package/dist/db/index.d.ts.map +1 -0
  34. package/dist/db/index.js +279 -0
  35. package/dist/db/index.js.map +1 -0
  36. package/dist/db/migrations.d.ts +44 -0
  37. package/dist/db/migrations.d.ts.map +1 -0
  38. package/dist/db/migrations.js +462 -0
  39. package/dist/db/migrations.js.map +1 -0
  40. package/dist/db/queries.d.ts +357 -0
  41. package/dist/db/queries.d.ts.map +1 -0
  42. package/dist/db/queries.js +1504 -0
  43. package/dist/db/queries.js.map +1 -0
  44. package/dist/db/schema.sql +419 -0
  45. package/dist/db/spec-queries.d.ts +101 -0
  46. package/dist/db/spec-queries.d.ts.map +1 -0
  47. package/dist/db/spec-queries.js +675 -0
  48. package/dist/db/spec-queries.js.map +1 -0
  49. package/dist/db/sqlite-adapter.d.ts +65 -0
  50. package/dist/db/sqlite-adapter.d.ts.map +1 -0
  51. package/dist/db/sqlite-adapter.js +214 -0
  52. package/dist/db/sqlite-adapter.js.map +1 -0
  53. package/dist/directory.d.ts +67 -0
  54. package/dist/directory.d.ts.map +1 -0
  55. package/dist/directory.js +267 -0
  56. package/dist/directory.js.map +1 -0
  57. package/dist/errors.d.ts +136 -0
  58. package/dist/errors.d.ts.map +1 -0
  59. package/dist/errors.js +219 -0
  60. package/dist/errors.js.map +1 -0
  61. package/dist/extraction/dfm-extractor.d.ts +31 -0
  62. package/dist/extraction/dfm-extractor.d.ts.map +1 -0
  63. package/dist/extraction/dfm-extractor.js +151 -0
  64. package/dist/extraction/dfm-extractor.js.map +1 -0
  65. package/dist/extraction/generated-detection.d.ts +30 -0
  66. package/dist/extraction/generated-detection.d.ts.map +1 -0
  67. package/dist/extraction/generated-detection.js +80 -0
  68. package/dist/extraction/generated-detection.js.map +1 -0
  69. package/dist/extraction/grammars.d.ts +100 -0
  70. package/dist/extraction/grammars.d.ts.map +1 -0
  71. package/dist/extraction/grammars.js +426 -0
  72. package/dist/extraction/grammars.js.map +1 -0
  73. package/dist/extraction/index.d.ts +138 -0
  74. package/dist/extraction/index.d.ts.map +1 -0
  75. package/dist/extraction/index.js +1394 -0
  76. package/dist/extraction/index.js.map +1 -0
  77. package/dist/extraction/languages/c-cpp.d.ts +4 -0
  78. package/dist/extraction/languages/c-cpp.d.ts.map +1 -0
  79. package/dist/extraction/languages/c-cpp.js +171 -0
  80. package/dist/extraction/languages/c-cpp.js.map +1 -0
  81. package/dist/extraction/languages/csharp.d.ts +3 -0
  82. package/dist/extraction/languages/csharp.d.ts.map +1 -0
  83. package/dist/extraction/languages/csharp.js +73 -0
  84. package/dist/extraction/languages/csharp.js.map +1 -0
  85. package/dist/extraction/languages/dart.d.ts +3 -0
  86. package/dist/extraction/languages/dart.d.ts.map +1 -0
  87. package/dist/extraction/languages/dart.js +192 -0
  88. package/dist/extraction/languages/dart.js.map +1 -0
  89. package/dist/extraction/languages/go.d.ts +3 -0
  90. package/dist/extraction/languages/go.d.ts.map +1 -0
  91. package/dist/extraction/languages/go.js +74 -0
  92. package/dist/extraction/languages/go.js.map +1 -0
  93. package/dist/extraction/languages/index.d.ts +10 -0
  94. package/dist/extraction/languages/index.d.ts.map +1 -0
  95. package/dist/extraction/languages/index.js +51 -0
  96. package/dist/extraction/languages/index.js.map +1 -0
  97. package/dist/extraction/languages/java.d.ts +3 -0
  98. package/dist/extraction/languages/java.d.ts.map +1 -0
  99. package/dist/extraction/languages/java.js +70 -0
  100. package/dist/extraction/languages/java.js.map +1 -0
  101. package/dist/extraction/languages/javascript.d.ts +3 -0
  102. package/dist/extraction/languages/javascript.d.ts.map +1 -0
  103. package/dist/extraction/languages/javascript.js +90 -0
  104. package/dist/extraction/languages/javascript.js.map +1 -0
  105. package/dist/extraction/languages/kotlin.d.ts +3 -0
  106. package/dist/extraction/languages/kotlin.d.ts.map +1 -0
  107. package/dist/extraction/languages/kotlin.js +259 -0
  108. package/dist/extraction/languages/kotlin.js.map +1 -0
  109. package/dist/extraction/languages/lua.d.ts +3 -0
  110. package/dist/extraction/languages/lua.d.ts.map +1 -0
  111. package/dist/extraction/languages/lua.js +150 -0
  112. package/dist/extraction/languages/lua.js.map +1 -0
  113. package/dist/extraction/languages/luau.d.ts +3 -0
  114. package/dist/extraction/languages/luau.d.ts.map +1 -0
  115. package/dist/extraction/languages/luau.js +37 -0
  116. package/dist/extraction/languages/luau.js.map +1 -0
  117. package/dist/extraction/languages/objc.d.ts +3 -0
  118. package/dist/extraction/languages/objc.d.ts.map +1 -0
  119. package/dist/extraction/languages/objc.js +133 -0
  120. package/dist/extraction/languages/objc.js.map +1 -0
  121. package/dist/extraction/languages/pascal.d.ts +3 -0
  122. package/dist/extraction/languages/pascal.d.ts.map +1 -0
  123. package/dist/extraction/languages/pascal.js +66 -0
  124. package/dist/extraction/languages/pascal.js.map +1 -0
  125. package/dist/extraction/languages/php.d.ts +3 -0
  126. package/dist/extraction/languages/php.d.ts.map +1 -0
  127. package/dist/extraction/languages/php.js +107 -0
  128. package/dist/extraction/languages/php.js.map +1 -0
  129. package/dist/extraction/languages/python.d.ts +3 -0
  130. package/dist/extraction/languages/python.d.ts.map +1 -0
  131. package/dist/extraction/languages/python.js +56 -0
  132. package/dist/extraction/languages/python.js.map +1 -0
  133. package/dist/extraction/languages/ruby.d.ts +3 -0
  134. package/dist/extraction/languages/ruby.d.ts.map +1 -0
  135. package/dist/extraction/languages/ruby.js +114 -0
  136. package/dist/extraction/languages/ruby.js.map +1 -0
  137. package/dist/extraction/languages/rust.d.ts +3 -0
  138. package/dist/extraction/languages/rust.d.ts.map +1 -0
  139. package/dist/extraction/languages/rust.js +109 -0
  140. package/dist/extraction/languages/rust.js.map +1 -0
  141. package/dist/extraction/languages/scala.d.ts +3 -0
  142. package/dist/extraction/languages/scala.d.ts.map +1 -0
  143. package/dist/extraction/languages/scala.js +139 -0
  144. package/dist/extraction/languages/scala.js.map +1 -0
  145. package/dist/extraction/languages/swift.d.ts +3 -0
  146. package/dist/extraction/languages/swift.d.ts.map +1 -0
  147. package/dist/extraction/languages/swift.js +91 -0
  148. package/dist/extraction/languages/swift.js.map +1 -0
  149. package/dist/extraction/languages/typescript.d.ts +3 -0
  150. package/dist/extraction/languages/typescript.d.ts.map +1 -0
  151. package/dist/extraction/languages/typescript.js +129 -0
  152. package/dist/extraction/languages/typescript.js.map +1 -0
  153. package/dist/extraction/liquid-extractor.d.ts +52 -0
  154. package/dist/extraction/liquid-extractor.d.ts.map +1 -0
  155. package/dist/extraction/liquid-extractor.js +313 -0
  156. package/dist/extraction/liquid-extractor.js.map +1 -0
  157. package/dist/extraction/mybatis-extractor.d.ts +48 -0
  158. package/dist/extraction/mybatis-extractor.d.ts.map +1 -0
  159. package/dist/extraction/mybatis-extractor.js +198 -0
  160. package/dist/extraction/mybatis-extractor.js.map +1 -0
  161. package/dist/extraction/parse-worker.d.ts +8 -0
  162. package/dist/extraction/parse-worker.d.ts.map +1 -0
  163. package/dist/extraction/parse-worker.js +94 -0
  164. package/dist/extraction/parse-worker.js.map +1 -0
  165. package/dist/extraction/specs/markdown-spec-extractor.d.ts +59 -0
  166. package/dist/extraction/specs/markdown-spec-extractor.d.ts.map +1 -0
  167. package/dist/extraction/specs/markdown-spec-extractor.js +327 -0
  168. package/dist/extraction/specs/markdown-spec-extractor.js.map +1 -0
  169. package/dist/extraction/specs/types.d.ts +39 -0
  170. package/dist/extraction/specs/types.d.ts.map +1 -0
  171. package/dist/extraction/specs/types.js +8 -0
  172. package/dist/extraction/specs/types.js.map +1 -0
  173. package/dist/extraction/svelte-extractor.d.ts +56 -0
  174. package/dist/extraction/svelte-extractor.d.ts.map +1 -0
  175. package/dist/extraction/svelte-extractor.js +272 -0
  176. package/dist/extraction/svelte-extractor.js.map +1 -0
  177. package/dist/extraction/tree-sitter-helpers.d.ts +28 -0
  178. package/dist/extraction/tree-sitter-helpers.d.ts.map +1 -0
  179. package/dist/extraction/tree-sitter-helpers.js +103 -0
  180. package/dist/extraction/tree-sitter-helpers.js.map +1 -0
  181. package/dist/extraction/tree-sitter-types.d.ts +193 -0
  182. package/dist/extraction/tree-sitter-types.d.ts.map +1 -0
  183. package/dist/extraction/tree-sitter-types.js +10 -0
  184. package/dist/extraction/tree-sitter-types.js.map +1 -0
  185. package/dist/extraction/tree-sitter.d.ts +317 -0
  186. package/dist/extraction/tree-sitter.d.ts.map +1 -0
  187. package/dist/extraction/tree-sitter.js +3092 -0
  188. package/dist/extraction/tree-sitter.js.map +1 -0
  189. package/dist/extraction/vue-extractor.d.ts +51 -0
  190. package/dist/extraction/vue-extractor.d.ts.map +1 -0
  191. package/dist/extraction/vue-extractor.js +251 -0
  192. package/dist/extraction/vue-extractor.js.map +1 -0
  193. package/dist/extraction/wasm/tree-sitter-lua.wasm +0 -0
  194. package/dist/extraction/wasm/tree-sitter-luau.wasm +0 -0
  195. package/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
  196. package/dist/extraction/wasm/tree-sitter-scala.wasm +0 -0
  197. package/dist/extraction/wasm-runtime-flags.d.ts +38 -0
  198. package/dist/extraction/wasm-runtime-flags.d.ts.map +1 -0
  199. package/dist/extraction/wasm-runtime-flags.js +106 -0
  200. package/dist/extraction/wasm-runtime-flags.js.map +1 -0
  201. package/dist/graph/index.d.ts +8 -0
  202. package/dist/graph/index.d.ts.map +1 -0
  203. package/dist/graph/index.js +13 -0
  204. package/dist/graph/index.js.map +1 -0
  205. package/dist/graph/queries.d.ts +106 -0
  206. package/dist/graph/queries.d.ts.map +1 -0
  207. package/dist/graph/queries.js +366 -0
  208. package/dist/graph/queries.js.map +1 -0
  209. package/dist/graph/traversal.d.ts +127 -0
  210. package/dist/graph/traversal.d.ts.map +1 -0
  211. package/dist/graph/traversal.js +531 -0
  212. package/dist/graph/traversal.js.map +1 -0
  213. package/dist/index.d.ts +551 -0
  214. package/dist/index.d.ts.map +1 -0
  215. package/dist/index.js +1165 -0
  216. package/dist/index.js.map +1 -0
  217. package/dist/installer/config-writer.d.ts +28 -0
  218. package/dist/installer/config-writer.d.ts.map +1 -0
  219. package/dist/installer/config-writer.js +91 -0
  220. package/dist/installer/config-writer.js.map +1 -0
  221. package/dist/installer/index.d.ts +87 -0
  222. package/dist/installer/index.d.ts.map +1 -0
  223. package/dist/installer/index.js +415 -0
  224. package/dist/installer/index.js.map +1 -0
  225. package/dist/installer/instructions-template.d.ts +18 -0
  226. package/dist/installer/instructions-template.d.ts.map +1 -0
  227. package/dist/installer/instructions-template.js +21 -0
  228. package/dist/installer/instructions-template.js.map +1 -0
  229. package/dist/installer/targets/claude.d.ts +98 -0
  230. package/dist/installer/targets/claude.d.ts.map +1 -0
  231. package/dist/installer/targets/claude.js +639 -0
  232. package/dist/installer/targets/claude.js.map +1 -0
  233. package/dist/installer/targets/registry.d.ts +19 -0
  234. package/dist/installer/targets/registry.d.ts.map +1 -0
  235. package/dist/installer/targets/registry.js +31 -0
  236. package/dist/installer/targets/registry.js.map +1 -0
  237. package/dist/installer/targets/shared.d.ts +62 -0
  238. package/dist/installer/targets/shared.d.ts.map +1 -0
  239. package/dist/installer/targets/shared.js +207 -0
  240. package/dist/installer/targets/shared.js.map +1 -0
  241. package/dist/installer/targets/types.d.ts +76 -0
  242. package/dist/installer/targets/types.d.ts.map +1 -0
  243. package/dist/installer/targets/types.js +12 -0
  244. package/dist/installer/targets/types.js.map +1 -0
  245. package/dist/isolation/worktree.d.ts +65 -0
  246. package/dist/isolation/worktree.d.ts.map +1 -0
  247. package/dist/isolation/worktree.js +231 -0
  248. package/dist/isolation/worktree.js.map +1 -0
  249. package/dist/mcp/daemon-paths.d.ts +46 -0
  250. package/dist/mcp/daemon-paths.d.ts.map +1 -0
  251. package/dist/mcp/daemon-paths.js +125 -0
  252. package/dist/mcp/daemon-paths.js.map +1 -0
  253. package/dist/mcp/daemon.d.ts +161 -0
  254. package/dist/mcp/daemon.d.ts.map +1 -0
  255. package/dist/mcp/daemon.js +403 -0
  256. package/dist/mcp/daemon.js.map +1 -0
  257. package/dist/mcp/engine.d.ts +105 -0
  258. package/dist/mcp/engine.d.ts.map +1 -0
  259. package/dist/mcp/engine.js +270 -0
  260. package/dist/mcp/engine.js.map +1 -0
  261. package/dist/mcp/index.d.ts +112 -0
  262. package/dist/mcp/index.d.ts.map +1 -0
  263. package/dist/mcp/index.js +477 -0
  264. package/dist/mcp/index.js.map +1 -0
  265. package/dist/mcp/proxy.d.ts +81 -0
  266. package/dist/mcp/proxy.d.ts.map +1 -0
  267. package/dist/mcp/proxy.js +510 -0
  268. package/dist/mcp/proxy.js.map +1 -0
  269. package/dist/mcp/server-instructions.d.ts +18 -0
  270. package/dist/mcp/server-instructions.d.ts.map +1 -0
  271. package/dist/mcp/server-instructions.js +77 -0
  272. package/dist/mcp/server-instructions.js.map +1 -0
  273. package/dist/mcp/session.d.ts +77 -0
  274. package/dist/mcp/session.d.ts.map +1 -0
  275. package/dist/mcp/session.js +294 -0
  276. package/dist/mcp/session.js.map +1 -0
  277. package/dist/mcp/spec-tools.d.ts +39 -0
  278. package/dist/mcp/spec-tools.d.ts.map +1 -0
  279. package/dist/mcp/spec-tools.js +326 -0
  280. package/dist/mcp/spec-tools.js.map +1 -0
  281. package/dist/mcp/tools.d.ts +404 -0
  282. package/dist/mcp/tools.d.ts.map +1 -0
  283. package/dist/mcp/tools.js +3066 -0
  284. package/dist/mcp/tools.js.map +1 -0
  285. package/dist/mcp/transport.d.ts +188 -0
  286. package/dist/mcp/transport.d.ts.map +1 -0
  287. package/dist/mcp/transport.js +343 -0
  288. package/dist/mcp/transport.js.map +1 -0
  289. package/dist/mcp/version.d.ts +19 -0
  290. package/dist/mcp/version.d.ts.map +1 -0
  291. package/dist/mcp/version.js +71 -0
  292. package/dist/mcp/version.js.map +1 -0
  293. package/dist/resolution/callback-synthesizer.d.ts +10 -0
  294. package/dist/resolution/callback-synthesizer.d.ts.map +1 -0
  295. package/dist/resolution/callback-synthesizer.js +1300 -0
  296. package/dist/resolution/callback-synthesizer.js.map +1 -0
  297. package/dist/resolution/frameworks/cargo-workspace.d.ts +18 -0
  298. package/dist/resolution/frameworks/cargo-workspace.d.ts.map +1 -0
  299. package/dist/resolution/frameworks/cargo-workspace.js +225 -0
  300. package/dist/resolution/frameworks/cargo-workspace.js.map +1 -0
  301. package/dist/resolution/frameworks/csharp.d.ts +8 -0
  302. package/dist/resolution/frameworks/csharp.d.ts.map +1 -0
  303. package/dist/resolution/frameworks/csharp.js +241 -0
  304. package/dist/resolution/frameworks/csharp.js.map +1 -0
  305. package/dist/resolution/frameworks/drupal.d.ts +51 -0
  306. package/dist/resolution/frameworks/drupal.d.ts.map +1 -0
  307. package/dist/resolution/frameworks/drupal.js +367 -0
  308. package/dist/resolution/frameworks/drupal.js.map +1 -0
  309. package/dist/resolution/frameworks/expo-modules.d.ts +3 -0
  310. package/dist/resolution/frameworks/expo-modules.d.ts.map +1 -0
  311. package/dist/resolution/frameworks/expo-modules.js +143 -0
  312. package/dist/resolution/frameworks/expo-modules.js.map +1 -0
  313. package/dist/resolution/frameworks/express.d.ts +8 -0
  314. package/dist/resolution/frameworks/express.d.ts.map +1 -0
  315. package/dist/resolution/frameworks/express.js +308 -0
  316. package/dist/resolution/frameworks/express.js.map +1 -0
  317. package/dist/resolution/frameworks/fabric.d.ts +3 -0
  318. package/dist/resolution/frameworks/fabric.d.ts.map +1 -0
  319. package/dist/resolution/frameworks/fabric.js +354 -0
  320. package/dist/resolution/frameworks/fabric.js.map +1 -0
  321. package/dist/resolution/frameworks/go.d.ts +8 -0
  322. package/dist/resolution/frameworks/go.d.ts.map +1 -0
  323. package/dist/resolution/frameworks/go.js +161 -0
  324. package/dist/resolution/frameworks/go.js.map +1 -0
  325. package/dist/resolution/frameworks/index.d.ts +48 -0
  326. package/dist/resolution/frameworks/index.d.ts.map +1 -0
  327. package/dist/resolution/frameworks/index.js +161 -0
  328. package/dist/resolution/frameworks/index.js.map +1 -0
  329. package/dist/resolution/frameworks/java.d.ts +8 -0
  330. package/dist/resolution/frameworks/java.d.ts.map +1 -0
  331. package/dist/resolution/frameworks/java.js +504 -0
  332. package/dist/resolution/frameworks/java.js.map +1 -0
  333. package/dist/resolution/frameworks/laravel.d.ts +13 -0
  334. package/dist/resolution/frameworks/laravel.d.ts.map +1 -0
  335. package/dist/resolution/frameworks/laravel.js +257 -0
  336. package/dist/resolution/frameworks/laravel.js.map +1 -0
  337. package/dist/resolution/frameworks/nestjs.d.ts +26 -0
  338. package/dist/resolution/frameworks/nestjs.d.ts.map +1 -0
  339. package/dist/resolution/frameworks/nestjs.js +698 -0
  340. package/dist/resolution/frameworks/nestjs.js.map +1 -0
  341. package/dist/resolution/frameworks/play.d.ts +19 -0
  342. package/dist/resolution/frameworks/play.d.ts.map +1 -0
  343. package/dist/resolution/frameworks/play.js +111 -0
  344. package/dist/resolution/frameworks/play.js.map +1 -0
  345. package/dist/resolution/frameworks/python.d.ts +10 -0
  346. package/dist/resolution/frameworks/python.d.ts.map +1 -0
  347. package/dist/resolution/frameworks/python.js +396 -0
  348. package/dist/resolution/frameworks/python.js.map +1 -0
  349. package/dist/resolution/frameworks/react-native.d.ts +3 -0
  350. package/dist/resolution/frameworks/react-native.d.ts.map +1 -0
  351. package/dist/resolution/frameworks/react-native.js +360 -0
  352. package/dist/resolution/frameworks/react-native.js.map +1 -0
  353. package/dist/resolution/frameworks/react.d.ts +8 -0
  354. package/dist/resolution/frameworks/react.d.ts.map +1 -0
  355. package/dist/resolution/frameworks/react.js +365 -0
  356. package/dist/resolution/frameworks/react.js.map +1 -0
  357. package/dist/resolution/frameworks/ruby.d.ts +8 -0
  358. package/dist/resolution/frameworks/ruby.d.ts.map +1 -0
  359. package/dist/resolution/frameworks/ruby.js +302 -0
  360. package/dist/resolution/frameworks/ruby.js.map +1 -0
  361. package/dist/resolution/frameworks/rust.d.ts +8 -0
  362. package/dist/resolution/frameworks/rust.d.ts.map +1 -0
  363. package/dist/resolution/frameworks/rust.js +304 -0
  364. package/dist/resolution/frameworks/rust.js.map +1 -0
  365. package/dist/resolution/frameworks/svelte.d.ts +9 -0
  366. package/dist/resolution/frameworks/svelte.d.ts.map +1 -0
  367. package/dist/resolution/frameworks/svelte.js +249 -0
  368. package/dist/resolution/frameworks/svelte.js.map +1 -0
  369. package/dist/resolution/frameworks/swift-objc.d.ts +37 -0
  370. package/dist/resolution/frameworks/swift-objc.d.ts.map +1 -0
  371. package/dist/resolution/frameworks/swift-objc.js +252 -0
  372. package/dist/resolution/frameworks/swift-objc.js.map +1 -0
  373. package/dist/resolution/frameworks/swift.d.ts +10 -0
  374. package/dist/resolution/frameworks/swift.d.ts.map +1 -0
  375. package/dist/resolution/frameworks/swift.js +400 -0
  376. package/dist/resolution/frameworks/swift.js.map +1 -0
  377. package/dist/resolution/frameworks/vue.d.ts +9 -0
  378. package/dist/resolution/frameworks/vue.d.ts.map +1 -0
  379. package/dist/resolution/frameworks/vue.js +306 -0
  380. package/dist/resolution/frameworks/vue.js.map +1 -0
  381. package/dist/resolution/go-module.d.ts +26 -0
  382. package/dist/resolution/go-module.d.ts.map +1 -0
  383. package/dist/resolution/go-module.js +78 -0
  384. package/dist/resolution/go-module.js.map +1 -0
  385. package/dist/resolution/import-resolver.d.ts +68 -0
  386. package/dist/resolution/import-resolver.d.ts.map +1 -0
  387. package/dist/resolution/import-resolver.js +1275 -0
  388. package/dist/resolution/import-resolver.js.map +1 -0
  389. package/dist/resolution/index.d.ts +117 -0
  390. package/dist/resolution/index.d.ts.map +1 -0
  391. package/dist/resolution/index.js +895 -0
  392. package/dist/resolution/index.js.map +1 -0
  393. package/dist/resolution/lru-cache.d.ts +24 -0
  394. package/dist/resolution/lru-cache.d.ts.map +1 -0
  395. package/dist/resolution/lru-cache.js +62 -0
  396. package/dist/resolution/lru-cache.js.map +1 -0
  397. package/dist/resolution/name-matcher.d.ts +32 -0
  398. package/dist/resolution/name-matcher.d.ts.map +1 -0
  399. package/dist/resolution/name-matcher.js +596 -0
  400. package/dist/resolution/name-matcher.js.map +1 -0
  401. package/dist/resolution/path-aliases.d.ts +68 -0
  402. package/dist/resolution/path-aliases.d.ts.map +1 -0
  403. package/dist/resolution/path-aliases.js +238 -0
  404. package/dist/resolution/path-aliases.js.map +1 -0
  405. package/dist/resolution/spec-link-resolver.d.ts +103 -0
  406. package/dist/resolution/spec-link-resolver.d.ts.map +1 -0
  407. package/dist/resolution/spec-link-resolver.js +259 -0
  408. package/dist/resolution/spec-link-resolver.js.map +1 -0
  409. package/dist/resolution/strip-comments.d.ts +27 -0
  410. package/dist/resolution/strip-comments.d.ts.map +1 -0
  411. package/dist/resolution/strip-comments.js +441 -0
  412. package/dist/resolution/strip-comments.js.map +1 -0
  413. package/dist/resolution/swift-objc-bridge.d.ts +134 -0
  414. package/dist/resolution/swift-objc-bridge.d.ts.map +1 -0
  415. package/dist/resolution/swift-objc-bridge.js +256 -0
  416. package/dist/resolution/swift-objc-bridge.js.map +1 -0
  417. package/dist/resolution/types.d.ts +216 -0
  418. package/dist/resolution/types.d.ts.map +1 -0
  419. package/dist/resolution/types.js +8 -0
  420. package/dist/resolution/types.js.map +1 -0
  421. package/dist/resolution/workspace-packages.d.ts +48 -0
  422. package/dist/resolution/workspace-packages.d.ts.map +1 -0
  423. package/dist/resolution/workspace-packages.js +208 -0
  424. package/dist/resolution/workspace-packages.js.map +1 -0
  425. package/dist/search/query-parser.d.ts +57 -0
  426. package/dist/search/query-parser.d.ts.map +1 -0
  427. package/dist/search/query-parser.js +177 -0
  428. package/dist/search/query-parser.js.map +1 -0
  429. package/dist/search/query-utils.d.ts +71 -0
  430. package/dist/search/query-utils.d.ts.map +1 -0
  431. package/dist/search/query-utils.js +380 -0
  432. package/dist/search/query-utils.js.map +1 -0
  433. package/dist/server/cli.js +152 -0
  434. package/dist/server/index.js +12 -0
  435. package/dist/server/ingest/index.js +18 -0
  436. package/dist/server/ingest/ingestor.js +506 -0
  437. package/dist/server/ingest/parser.js +104 -0
  438. package/dist/server/ingest/pricing.js +78 -0
  439. package/dist/server/ingest/types.js +9 -0
  440. package/dist/server/ingest/watcher.js +77 -0
  441. package/dist/server/package.json +3 -0
  442. package/dist/server/project-registry.js +101 -0
  443. package/dist/server/routes/claude.js +868 -0
  444. package/dist/server/routes/graph.js +211 -0
  445. package/dist/server/routes/memory.js +272 -0
  446. package/dist/server/routes/projects.js +197 -0
  447. package/dist/server/routes/spec.js +265 -0
  448. package/dist/server/routes/status.js +112 -0
  449. package/dist/server/routes/workflow.js +212 -0
  450. package/dist/server/server.js +206 -0
  451. package/dist/server/static-handler.js +87 -0
  452. package/dist/sync/git-hooks.d.ts +45 -0
  453. package/dist/sync/git-hooks.d.ts.map +1 -0
  454. package/dist/sync/git-hooks.js +225 -0
  455. package/dist/sync/git-hooks.js.map +1 -0
  456. package/dist/sync/index.d.ts +19 -0
  457. package/dist/sync/index.d.ts.map +1 -0
  458. package/dist/sync/index.js +35 -0
  459. package/dist/sync/index.js.map +1 -0
  460. package/dist/sync/watch-policy.d.ts +48 -0
  461. package/dist/sync/watch-policy.d.ts.map +1 -0
  462. package/dist/sync/watch-policy.js +124 -0
  463. package/dist/sync/watch-policy.js.map +1 -0
  464. package/dist/sync/watcher.d.ts +283 -0
  465. package/dist/sync/watcher.d.ts.map +1 -0
  466. package/dist/sync/watcher.js +606 -0
  467. package/dist/sync/watcher.js.map +1 -0
  468. package/dist/sync/worktree.d.ts +54 -0
  469. package/dist/sync/worktree.d.ts.map +1 -0
  470. package/dist/sync/worktree.js +137 -0
  471. package/dist/sync/worktree.js.map +1 -0
  472. package/dist/types.d.ts +623 -0
  473. package/dist/types.d.ts.map +1 -0
  474. package/dist/types.js +108 -0
  475. package/dist/types.js.map +1 -0
  476. package/dist/ui/glyphs.d.ts +42 -0
  477. package/dist/ui/glyphs.d.ts.map +1 -0
  478. package/dist/ui/glyphs.js +78 -0
  479. package/dist/ui/glyphs.js.map +1 -0
  480. package/dist/ui/shimmer-progress.d.ts +11 -0
  481. package/dist/ui/shimmer-progress.d.ts.map +1 -0
  482. package/dist/ui/shimmer-progress.js +90 -0
  483. package/dist/ui/shimmer-progress.js.map +1 -0
  484. package/dist/ui/shimmer-worker.d.ts +2 -0
  485. package/dist/ui/shimmer-worker.d.ts.map +1 -0
  486. package/dist/ui/shimmer-worker.js +118 -0
  487. package/dist/ui/shimmer-worker.js.map +1 -0
  488. package/dist/ui/types.d.ts +17 -0
  489. package/dist/ui/types.d.ts.map +1 -0
  490. package/dist/ui/types.js +3 -0
  491. package/dist/ui/types.js.map +1 -0
  492. package/dist/utils.d.ts +205 -0
  493. package/dist/utils.d.ts.map +1 -0
  494. package/dist/utils.js +549 -0
  495. package/dist/utils.js.map +1 -0
  496. package/dist/web/chunk-2AJCHB7P.js +1 -0
  497. package/dist/web/chunk-2CPLUFCH.js +2 -0
  498. package/dist/web/chunk-2DHIGIOI.js +1 -0
  499. package/dist/web/chunk-2GBEK2GM.js +1 -0
  500. package/dist/web/chunk-2I7L37NS.js +1 -0
  501. package/dist/web/chunk-2NAWAJB5.js +1 -0
  502. package/dist/web/chunk-2OJBIPE4.js +1 -0
  503. package/dist/web/chunk-2OKMB4KX.js +2 -0
  504. package/dist/web/chunk-3E2WB6D5.js +1 -0
  505. package/dist/web/chunk-3EBFYSCH.js +2 -0
  506. package/dist/web/chunk-3QCQ4BXS.js +1 -0
  507. package/dist/web/chunk-3SEJX2BK.js +1 -0
  508. package/dist/web/chunk-42XVAQ6I.js +1 -0
  509. package/dist/web/chunk-4IMMPEYM.js +1 -0
  510. package/dist/web/chunk-4N5DWG46.js +1 -0
  511. package/dist/web/chunk-4TJQJPCZ.js +1 -0
  512. package/dist/web/chunk-4WZIHTPC.js +1 -0
  513. package/dist/web/chunk-4YVSYOSD.js +1 -0
  514. package/dist/web/chunk-5BQIOYKW.js +1 -0
  515. package/dist/web/chunk-5HGWHUJA.js +1 -0
  516. package/dist/web/chunk-5Y244R4G.js +1 -0
  517. package/dist/web/chunk-6RRDPT5Z.js +1 -0
  518. package/dist/web/chunk-6VKB2ZWM.js +1 -0
  519. package/dist/web/chunk-7DMFVTU4.js +1 -0
  520. package/dist/web/chunk-7RNS77UP.js +1 -0
  521. package/dist/web/chunk-7SMPKVEP.js +1 -0
  522. package/dist/web/chunk-AZJVTPLU.js +1 -0
  523. package/dist/web/chunk-BCZM5AXU.js +1 -0
  524. package/dist/web/chunk-BLBRMCN2.js +1 -0
  525. package/dist/web/chunk-BMIAXD2V.js +2 -0
  526. package/dist/web/chunk-BPECIDVO.js +1 -0
  527. package/dist/web/chunk-BUXWEHIY.js +1 -0
  528. package/dist/web/chunk-BYZFQSM6.js +1 -0
  529. package/dist/web/chunk-DA6SNNAF.js +1 -0
  530. package/dist/web/chunk-DLQPZWSI.css +1 -0
  531. package/dist/web/chunk-DTRN7FZR.js +1 -0
  532. package/dist/web/chunk-DYRFLPJA.js +1 -0
  533. package/dist/web/chunk-E3J3CXR5.js +1 -0
  534. package/dist/web/chunk-E44X4RH2.js +1 -0
  535. package/dist/web/chunk-E73OX2P7.js +1 -0
  536. package/dist/web/chunk-EAXRKDLV.js +1 -0
  537. package/dist/web/chunk-EBKKDHYI.js +1 -0
  538. package/dist/web/chunk-EE7V7Q5P.js +1 -0
  539. package/dist/web/chunk-EKY2FUHU.js +1 -0
  540. package/dist/web/chunk-EMGMOEVR.js +1 -0
  541. package/dist/web/chunk-EP6XOPXH.js +1 -0
  542. package/dist/web/chunk-ESGDLJOJ.js +1 -0
  543. package/dist/web/chunk-ETJG7NCY.js +1 -0
  544. package/dist/web/chunk-EUUEFEDI.js +1 -0
  545. package/dist/web/chunk-FGNZDHTL.js +11 -0
  546. package/dist/web/chunk-FIJW2UNJ.js +1 -0
  547. package/dist/web/chunk-FMV5PXRC.js +5 -0
  548. package/dist/web/chunk-G7VZT5KB.js +3 -0
  549. package/dist/web/chunk-GRZYXPSO.js +7 -0
  550. package/dist/web/chunk-GYGPS3AN.js +1 -0
  551. package/dist/web/chunk-H7AF7YS4.js +1 -0
  552. package/dist/web/chunk-HDZDQILN.js +1 -0
  553. package/dist/web/chunk-HMK6UO6N.js +1 -0
  554. package/dist/web/chunk-HZA6NEAB.js +1 -0
  555. package/dist/web/chunk-IHEE5NYJ.js +1 -0
  556. package/dist/web/chunk-ISNEBICW.js +1 -0
  557. package/dist/web/chunk-J2GZVLHH.js +1 -0
  558. package/dist/web/chunk-JFYVCXK3.js +1 -0
  559. package/dist/web/chunk-JN6W7HCN.js +17 -0
  560. package/dist/web/chunk-JT7P3DEK.js +6 -0
  561. package/dist/web/chunk-JTFXTIPE.js +903 -0
  562. package/dist/web/chunk-L37MTFSG.js +3 -0
  563. package/dist/web/chunk-LB6JPLX2.js +1 -0
  564. package/dist/web/chunk-LNSVDHCI.js +1 -0
  565. package/dist/web/chunk-LV4G6QFG.js +2 -0
  566. package/dist/web/chunk-LVGIY3SO.js +1 -0
  567. package/dist/web/chunk-LXLHIHEN.js +1 -0
  568. package/dist/web/chunk-MC4DFIHG.js +1 -0
  569. package/dist/web/chunk-MVOMVPYB.js +1 -0
  570. package/dist/web/chunk-N6SS4G6S.js +1 -0
  571. package/dist/web/chunk-NTBJG6SJ.js +1 -0
  572. package/dist/web/chunk-NUDB3Q2Y.js +3 -0
  573. package/dist/web/chunk-OXEF5E3E.js +1 -0
  574. package/dist/web/chunk-PDN6QYGJ.js +4 -0
  575. package/dist/web/chunk-PGGJPDJG.js +1 -0
  576. package/dist/web/chunk-PUYSJNJR.js +1 -0
  577. package/dist/web/chunk-Q2RVFS45.js +1 -0
  578. package/dist/web/chunk-Q7L6LLAK.js +1 -0
  579. package/dist/web/chunk-QCMKJIWY.js +1 -0
  580. package/dist/web/chunk-QH6CF3M3.js +1 -0
  581. package/dist/web/chunk-QQ5LD7PI.js +1 -0
  582. package/dist/web/chunk-QR6L3KAC.js +1 -0
  583. package/dist/web/chunk-R2DLK4HO.js +1 -0
  584. package/dist/web/chunk-R5W2MDZN.js +1 -0
  585. package/dist/web/chunk-RAAMPHPJ.js +1 -0
  586. package/dist/web/chunk-RD6TVPOT.js +1 -0
  587. package/dist/web/chunk-RKY4EJYJ.js +1 -0
  588. package/dist/web/chunk-RONYWVY7.js +1 -0
  589. package/dist/web/chunk-RXKXYF2C.js +1 -0
  590. package/dist/web/chunk-SBWU7JFC.js +1 -0
  591. package/dist/web/chunk-SEXBRGYK.js +1 -0
  592. package/dist/web/chunk-SHPTC4RL.js +1 -0
  593. package/dist/web/chunk-SUZYBYDW.js +1 -0
  594. package/dist/web/chunk-SWKJRNYY.js +1 -0
  595. package/dist/web/chunk-T66XVKGB.js +1 -0
  596. package/dist/web/chunk-T7AZ65JP.js +1 -0
  597. package/dist/web/chunk-TCZDVOHD.js +1 -0
  598. package/dist/web/chunk-TPTITA3V.js +1 -0
  599. package/dist/web/chunk-TR335633.js +1 -0
  600. package/dist/web/chunk-TWXZK6XM.js +1 -0
  601. package/dist/web/chunk-UR5KDXPX.js +1 -0
  602. package/dist/web/chunk-UR6O2GEH.js +1 -0
  603. package/dist/web/chunk-UTNMGWTP.js +1 -0
  604. package/dist/web/chunk-UYC52MBC.js +1 -0
  605. package/dist/web/chunk-VECWMHJP.js +1 -0
  606. package/dist/web/chunk-VUACT35R.js +3 -0
  607. package/dist/web/chunk-VZI7H4SZ.js +1 -0
  608. package/dist/web/chunk-WAI2JMZP.js +1 -0
  609. package/dist/web/chunk-WB6YHOD4.js +1 -0
  610. package/dist/web/chunk-WBT64AWV.js +1 -0
  611. package/dist/web/chunk-WDU3WICG.js +1 -0
  612. package/dist/web/chunk-WFXJIXZE.js +4 -0
  613. package/dist/web/chunk-WTGYRH3Z.js +298 -0
  614. package/dist/web/chunk-WXTCVDTP.js +1 -0
  615. package/dist/web/chunk-X2HTISHL.js +1 -0
  616. package/dist/web/chunk-XCDHWLVH.js +1 -0
  617. package/dist/web/chunk-Y3H6FFUZ.js +1 -0
  618. package/dist/web/chunk-Y4F5ULGJ.js +1 -0
  619. package/dist/web/chunk-YAWCRPHV.js +1 -0
  620. package/dist/web/chunk-YEGKAAEE.js +1 -0
  621. package/dist/web/chunk-YM2KU57F.js +1 -0
  622. package/dist/web/chunk-YRERBP6T.js +1 -0
  623. package/dist/web/chunk-ZLV4VCDG.js +3 -0
  624. package/dist/web/chunk-ZTVI5KFF.js +1 -0
  625. package/dist/web/favicon-16.png +0 -0
  626. package/dist/web/favicon-180.png +0 -0
  627. package/dist/web/favicon-32.png +0 -0
  628. package/dist/web/favicon-512.png +0 -0
  629. package/dist/web/favicon-small.svg +15 -0
  630. package/dist/web/favicon.ico +0 -0
  631. package/dist/web/favicon.svg +20 -0
  632. package/dist/web/index.html +145 -0
  633. package/dist/web/main-ESADRXN2.css +1 -0
  634. package/dist/web/main-WVI3YTDU.js +1 -0
  635. package/dist/web/media/codicon-LN6W7LCM.ttf +0 -0
  636. package/dist/web/styles-KSOPUVDA.css +1 -0
  637. package/dist/workflows/condition-evaluator.d.ts +75 -0
  638. package/dist/workflows/condition-evaluator.d.ts.map +1 -0
  639. package/dist/workflows/condition-evaluator.js +282 -0
  640. package/dist/workflows/condition-evaluator.js.map +1 -0
  641. package/dist/workflows/defaults/claude-design-implement.yaml +247 -0
  642. package/dist/workflows/defaults/index.d.ts +26 -0
  643. package/dist/workflows/defaults/index.d.ts.map +1 -0
  644. package/dist/workflows/defaults/index.js +94 -0
  645. package/dist/workflows/defaults/index.js.map +1 -0
  646. package/dist/workflows/defaults/spec-author.yaml +214 -0
  647. package/dist/workflows/defaults/spec-fix.yaml +110 -0
  648. package/dist/workflows/defaults/spec-implement.yaml +150 -0
  649. package/dist/workflows/defaults/spec-relink.yaml +81 -0
  650. package/dist/workflows/defaults/spec-verify.yaml +51 -0
  651. package/dist/workflows/discovery.d.ts +46 -0
  652. package/dist/workflows/discovery.d.ts.map +1 -0
  653. package/dist/workflows/discovery.js +193 -0
  654. package/dist/workflows/discovery.js.map +1 -0
  655. package/dist/workflows/executor.d.ts +83 -0
  656. package/dist/workflows/executor.d.ts.map +1 -0
  657. package/dist/workflows/executor.js +624 -0
  658. package/dist/workflows/executor.js.map +1 -0
  659. package/dist/workflows/runners/approval.d.ts +18 -0
  660. package/dist/workflows/runners/approval.d.ts.map +1 -0
  661. package/dist/workflows/runners/approval.js +34 -0
  662. package/dist/workflows/runners/approval.js.map +1 -0
  663. package/dist/workflows/runners/bash.d.ts +13 -0
  664. package/dist/workflows/runners/bash.d.ts.map +1 -0
  665. package/dist/workflows/runners/bash.js +143 -0
  666. package/dist/workflows/runners/bash.js.map +1 -0
  667. package/dist/workflows/runners/cancel.d.ts +10 -0
  668. package/dist/workflows/runners/cancel.d.ts.map +1 -0
  669. package/dist/workflows/runners/cancel.js +19 -0
  670. package/dist/workflows/runners/cancel.js.map +1 -0
  671. package/dist/workflows/runners/prompt.d.ts +28 -0
  672. package/dist/workflows/runners/prompt.d.ts.map +1 -0
  673. package/dist/workflows/runners/prompt.js +212 -0
  674. package/dist/workflows/runners/prompt.js.map +1 -0
  675. package/dist/workflows/runners/script.d.ts +17 -0
  676. package/dist/workflows/runners/script.d.ts.map +1 -0
  677. package/dist/workflows/runners/script.js +155 -0
  678. package/dist/workflows/runners/script.js.map +1 -0
  679. package/dist/workflows/runners/types.d.ts +51 -0
  680. package/dist/workflows/runners/types.d.ts.map +1 -0
  681. package/dist/workflows/runners/types.js +13 -0
  682. package/dist/workflows/runners/types.js.map +1 -0
  683. package/dist/workflows/schemas/workflow.d.ts +166 -0
  684. package/dist/workflows/schemas/workflow.d.ts.map +1 -0
  685. package/dist/workflows/schemas/workflow.js +437 -0
  686. package/dist/workflows/schemas/workflow.js.map +1 -0
  687. package/package.json +1 -1
  688. package/scripts/offline-install.sh +19 -6
  689. /package/commands/{cg-explore.md → ss-explore.md} +0 -0
  690. /package/commands/{cg-impact.md → ss-impact.md} +0 -0
  691. /package/commands/{cg-relink.md → ss-relink.md} +0 -0
  692. /package/commands/{cg-spec.md → ss-spec.md} +0 -0
  693. /package/commands/{cg-sync.md → ss-sync.md} +0 -0
  694. /package/commands/{cg-trace.md → ss-trace.md} +0 -0
@@ -0,0 +1,639 @@
1
+ "use strict";
2
+ /**
3
+ * Claude Code target. Writes:
4
+ *
5
+ * - MCP server entry to `~/.claude.json` (global = user scope, loads
6
+ * in every project) or `./.mcp.json` (local = project scope, the
7
+ * file Claude Code actually reads for a single project). See the
8
+ * scope table at https://code.claude.com/docs/en/mcp.
9
+ * - Permissions to `~/.claude/settings.json` (global) or
10
+ * `./.claude/settings.json` (local), gated on `autoAllow`.
11
+ * - Instructions to `~/.claude/CLAUDE.md` (global) or
12
+ * `./.claude/CLAUDE.md` (local).
13
+ *
14
+ * Earlier versions wrote the local MCP entry to `./.claude.json` — a
15
+ * file Claude Code never reads — so the server silently never loaded
16
+ * until the user manually renamed it to `.mcp.json` (issue #207). We
17
+ * now write `./.mcp.json` and migrate any stale `./.claude.json` entry
18
+ * out of the way on install and uninstall.
19
+ */
20
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ var desc = Object.getOwnPropertyDescriptor(m, k);
23
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
24
+ desc = { enumerable: true, get: function() { return m[k]; } };
25
+ }
26
+ Object.defineProperty(o, k2, desc);
27
+ }) : (function(o, m, k, k2) {
28
+ if (k2 === undefined) k2 = k;
29
+ o[k2] = m[k];
30
+ }));
31
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
32
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
33
+ }) : function(o, v) {
34
+ o["default"] = v;
35
+ });
36
+ var __importStar = (this && this.__importStar) || (function () {
37
+ var ownKeys = function(o) {
38
+ ownKeys = Object.getOwnPropertyNames || function (o) {
39
+ var ar = [];
40
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
41
+ return ar;
42
+ };
43
+ return ownKeys(o);
44
+ };
45
+ return function (mod) {
46
+ if (mod && mod.__esModule) return mod;
47
+ var result = {};
48
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
49
+ __setModuleDefault(result, mod);
50
+ return result;
51
+ };
52
+ })();
53
+ Object.defineProperty(exports, "__esModule", { value: true });
54
+ exports.claudeTarget = void 0;
55
+ exports.writeMcpEntry = writeMcpEntry;
56
+ exports.cleanupLegacyHooks = cleanupLegacyHooks;
57
+ exports.cleanupCurrentHooks = cleanupCurrentHooks;
58
+ exports.writePermissionsEntry = writePermissionsEntry;
59
+ exports.removeInstructionsEntry = removeInstructionsEntry;
60
+ exports.writeHooksEntry = writeHooksEntry;
61
+ exports.writeCommandsEntries = writeCommandsEntries;
62
+ exports.cleanupLegacyCommandsEntries = cleanupLegacyCommandsEntries;
63
+ exports.writeAgentsEntries = writeAgentsEntries;
64
+ exports.removeCommandsEntries = removeCommandsEntries;
65
+ exports.removeAgentsEntries = removeAgentsEntries;
66
+ const fs = __importStar(require("fs"));
67
+ const path = __importStar(require("path"));
68
+ const os = __importStar(require("os"));
69
+ const shared_1 = require("./shared");
70
+ const instructions_template_1 = require("../instructions-template");
71
+ function configDir(loc) {
72
+ return loc === 'global'
73
+ ? path.join(os.homedir(), '.claude')
74
+ : path.join(process.cwd(), '.claude');
75
+ }
76
+ function mcpJsonPath(loc) {
77
+ // global → ~/.claude.json (user scope: visible in every project).
78
+ // local → ./.mcp.json (project scope: the ONLY project-level MCP
79
+ // file Claude Code reads — NOT ./.claude.json, which it ignores).
80
+ return loc === 'global'
81
+ ? path.join(os.homedir(), '.claude.json')
82
+ : path.join(process.cwd(), '.mcp.json');
83
+ }
84
+ /**
85
+ * Where pre-#207 installers wrote the local MCP entry. Claude Code
86
+ * never reads a project-level `./.claude.json`, so we migrate the
87
+ * specship entry out of it on install and strip it on uninstall.
88
+ * Only the project-local path is legacy — global `~/.claude.json` is
89
+ * the correct user-scope location and is left untouched.
90
+ */
91
+ function legacyLocalMcpPath() {
92
+ return path.join(process.cwd(), '.claude.json');
93
+ }
94
+ function settingsJsonPath(loc) {
95
+ return path.join(configDir(loc), 'settings.json');
96
+ }
97
+ function instructionsPath(loc) {
98
+ return path.join(configDir(loc), 'CLAUDE.md');
99
+ }
100
+ function commandsDir(loc) {
101
+ return path.join(configDir(loc), 'commands');
102
+ }
103
+ function agentsDir(loc) {
104
+ return path.join(configDir(loc), 'agents');
105
+ }
106
+ /**
107
+ * Plugin-asset source dir at the package root — same `commands/`,
108
+ * `agents/`, `hooks/` directories that ship the plugin manifest path.
109
+ * Resolves identically from `src/installer/targets/claude.ts` (dev /
110
+ * test) and `dist/installer/targets/claude.js` (installed npm package).
111
+ */
112
+ function packageAssetPath(...segments) {
113
+ return path.join(__dirname, '..', '..', '..', ...segments);
114
+ }
115
+ /** Slash commands the installer copies into Claude's commands dir. */
116
+ const SHIPPED_COMMANDS = [
117
+ 'ss-sync.md',
118
+ 'ss-trace.md',
119
+ 'ss-explore.md',
120
+ 'ss-impact.md',
121
+ // Spec-layer commands:
122
+ 'ss-spec.md',
123
+ 'ss-implement.md',
124
+ 'ss-drifted.md',
125
+ 'ss-fix.md',
126
+ 'ss-relink.md',
127
+ // Spec-authoring commands (v0.2):
128
+ 'ss-spec-author.md',
129
+ 'ss-spec-review.md',
130
+ // Design-import workflow (v0.2):
131
+ 'ss-design-implement.md',
132
+ ];
133
+ /**
134
+ * Slash commands the installer used to ship under the legacy `cg-`
135
+ * prefix (historical from when SpecShip was called "code graph").
136
+ * Renamed to `ss-` in v0.2 so the prefix clearly ties to SpecShip.
137
+ *
138
+ * Listed so the installer can self-heal on upgrade: install removes any
139
+ * of these that an earlier installer wrote, so users don't end up with
140
+ * both prefixes side-by-side cluttering their slash-command autocomplete.
141
+ * Uninstall strips them too.
142
+ */
143
+ const LEGACY_SHIPPED_COMMANDS = [
144
+ 'cg-sync.md',
145
+ 'cg-trace.md',
146
+ 'cg-explore.md',
147
+ 'cg-impact.md',
148
+ 'cg-spec.md',
149
+ 'cg-implement.md',
150
+ 'cg-drifted.md',
151
+ 'cg-fix.md',
152
+ 'cg-relink.md',
153
+ 'cg-spec-author.md',
154
+ 'cg-spec-review.md',
155
+ ];
156
+ /** Subagents the installer copies into Claude's agents dir. */
157
+ const SHIPPED_AGENTS = ['specship-explorer.md'];
158
+ /** The PostToolUse + SessionStart hooks the installer writes. */
159
+ const SPECSHIP_HOOKS = [
160
+ {
161
+ event: 'PostToolUse',
162
+ matcher: 'Edit|Write|MultiEdit',
163
+ hook: { type: 'command', command: 'specship sync --quiet', async: true },
164
+ },
165
+ {
166
+ event: 'SessionStart',
167
+ matcher: 'startup|resume',
168
+ hook: { type: 'command', command: 'specship sync --quiet' },
169
+ },
170
+ ];
171
+ class ClaudeCodeTarget {
172
+ id = 'claude';
173
+ displayName = 'Claude Code';
174
+ docsUrl = 'https://docs.claude.com/en/docs/claude-code';
175
+ supportsLocation(_loc) {
176
+ return true;
177
+ }
178
+ detect(loc) {
179
+ const mcpPath = mcpJsonPath(loc);
180
+ const config = (0, shared_1.readJsonFile)(mcpPath);
181
+ const alreadyConfigured = !!config.mcpServers?.specship;
182
+ // For "installed" we infer from the existence of either the dir
183
+ // (global) or the project marker file (local). Cheap and avoids
184
+ // shelling out to `claude --version`.
185
+ const installed = loc === 'global'
186
+ ? fs.existsSync(configDir(loc)) || fs.existsSync(mcpPath)
187
+ : fs.existsSync(mcpPath) || fs.existsSync(configDir(loc));
188
+ return { installed, alreadyConfigured, configPath: mcpPath };
189
+ }
190
+ install(loc, opts) {
191
+ const files = [];
192
+ // 1. MCP server entry
193
+ files.push(writeMcpEntry(loc));
194
+ // 1b. Migrate away any stale ./.claude.json left by a pre-#207
195
+ // local install, so the project isn't left with two competing
196
+ // (one dead) MCP configs.
197
+ if (loc === 'local') {
198
+ const migrated = cleanupLegacyLocalMcp();
199
+ if (migrated)
200
+ files.push(migrated);
201
+ }
202
+ // 2. Permissions (only when autoAllow)
203
+ if (opts.autoAllow) {
204
+ files.push(writePermissionsEntry(loc));
205
+ }
206
+ // 2b. Strip stale auto-sync hooks left by a pre-0.8 install. Those
207
+ // versions wrote `specship mark-dirty` / `sync-if-dirty` hooks to
208
+ // settings.json; both subcommands are gone from the CLI, so the
209
+ // Stop hook now fails every turn with "unknown command
210
+ // 'sync-if-dirty'". Cleaning up on install makes an upgrade
211
+ // self-healing. Only surfaced when something was actually removed.
212
+ const hookCleanup = cleanupLegacyHooks(loc);
213
+ if (hookCleanup.action === 'removed')
214
+ files.push(hookCleanup);
215
+ // 2c. Write the current auto-sync hooks (PostToolUse + SessionStart
216
+ // running `specship sync --quiet`). Gated on autoAllow — same
217
+ // posture as the permissions list since both auto-execute commands
218
+ // without prompting. Idempotent: re-running with identical hooks
219
+ // already in settings.json returns 'unchanged'.
220
+ if (opts.autoAllow) {
221
+ files.push(writeHooksEntry(loc));
222
+ }
223
+ // 3. CLAUDE.md instructions — no longer written. The specship
224
+ // usage guidance now ships solely in the MCP server's `initialize`
225
+ // response (see `mcp/server-instructions.ts`), which Claude Code
226
+ // surfaces in the system prompt automatically. Writing it into
227
+ // CLAUDE.md as well meant the agent read the same playbook twice
228
+ // every turn (issue #529). Strip any block a previous install left
229
+ // behind so an upgrade self-heals — same idiom as the hook cleanup.
230
+ const instrCleanup = removeInstructionsEntry(loc);
231
+ if (instrCleanup.action === 'removed')
232
+ files.push(instrCleanup);
233
+ // 4. Slash commands + the specship-explorer subagent. NOT gated on
234
+ // autoAllow — these only execute when the user / agent invokes them
235
+ // explicitly. Copies the same .md files that ship for the plugin
236
+ // install path, so the two flows can't drift apart.
237
+ //
238
+ // 4a. Strip any legacy `cg-*.md` slash commands the pre-v0.2
239
+ // installer wrote. Self-heals on upgrade so the user's autocomplete
240
+ // doesn't carry both prefixes side-by-side.
241
+ for (const f of cleanupLegacyCommandsEntries(loc))
242
+ files.push(f);
243
+ for (const f of writeCommandsEntries(loc))
244
+ files.push(f);
245
+ for (const f of writeAgentsEntries(loc))
246
+ files.push(f);
247
+ return { files };
248
+ }
249
+ uninstall(loc) {
250
+ const files = [];
251
+ // 1. MCP server entry
252
+ const mcpPath = mcpJsonPath(loc);
253
+ const config = (0, shared_1.readJsonFile)(mcpPath);
254
+ if (config.mcpServers?.specship) {
255
+ delete config.mcpServers.specship;
256
+ if (Object.keys(config.mcpServers).length === 0) {
257
+ delete config.mcpServers;
258
+ }
259
+ (0, shared_1.writeJsonFile)(mcpPath, config);
260
+ files.push({ path: mcpPath, action: 'removed' });
261
+ }
262
+ else {
263
+ files.push({ path: mcpPath, action: 'not-found' });
264
+ }
265
+ // 1b. Also strip the specship entry from a legacy ./.claude.json
266
+ // so uninstall fully reverses a pre-#207 local install.
267
+ if (loc === 'local') {
268
+ const migrated = cleanupLegacyLocalMcp();
269
+ if (migrated)
270
+ files.push(migrated);
271
+ }
272
+ // 2. Permissions
273
+ const settingsPath = settingsJsonPath(loc);
274
+ const settings = (0, shared_1.readJsonFile)(settingsPath);
275
+ if (Array.isArray(settings.permissions?.allow)) {
276
+ const before = settings.permissions.allow.length;
277
+ settings.permissions.allow = settings.permissions.allow.filter((p) => !p.startsWith('mcp__specship__'));
278
+ if (settings.permissions.allow.length !== before) {
279
+ if (settings.permissions.allow.length === 0) {
280
+ delete settings.permissions.allow;
281
+ }
282
+ if (Object.keys(settings.permissions).length === 0) {
283
+ delete settings.permissions;
284
+ }
285
+ (0, shared_1.writeJsonFile)(settingsPath, settings);
286
+ files.push({ path: settingsPath, action: 'removed' });
287
+ }
288
+ else {
289
+ files.push({ path: settingsPath, action: 'not-found' });
290
+ }
291
+ }
292
+ else {
293
+ files.push({ path: settingsPath, action: 'not-found' });
294
+ }
295
+ // 2b. Strip auto-sync hooks the installer wrote — both the
296
+ // current `specship sync --quiet` form (writeHooksEntry) and the
297
+ // legacy `mark-dirty`/`sync-if-dirty` forms (pre-0.8). Two passes
298
+ // so each predicate stays narrow and we never accidentally strip a
299
+ // user-written hook.
300
+ const currentCleanup = cleanupCurrentHooks(loc);
301
+ if (currentCleanup.action === 'removed')
302
+ files.push(currentCleanup);
303
+ const legacyCleanup = cleanupLegacyHooks(loc);
304
+ if (legacyCleanup.action === 'removed')
305
+ files.push(legacyCleanup);
306
+ // 3. Instructions — strip the legacy SpecShip block if present.
307
+ files.push(removeInstructionsEntry(loc));
308
+ // 4. Slash commands + subagent — remove our shipped files; sibling
309
+ // user-written .md files in the same dir are left untouched.
310
+ // Includes legacy `cg-*.md` from pre-v0.2 installers so uninstall
311
+ // leaves the commands dir clean regardless of which prefix was
312
+ // installed.
313
+ for (const f of cleanupLegacyCommandsEntries(loc))
314
+ files.push(f);
315
+ for (const f of removeCommandsEntries(loc))
316
+ files.push(f);
317
+ for (const f of removeAgentsEntries(loc))
318
+ files.push(f);
319
+ return { files };
320
+ }
321
+ printConfig(loc) {
322
+ const target = mcpJsonPath(loc);
323
+ const snippet = JSON.stringify({ mcpServers: { specship: (0, shared_1.getMcpServerConfig)() } }, null, 2);
324
+ return `# Add to ${target}\n\n${snippet}\n`;
325
+ }
326
+ describePaths(loc) {
327
+ return [
328
+ mcpJsonPath(loc),
329
+ settingsJsonPath(loc),
330
+ instructionsPath(loc),
331
+ ...SHIPPED_COMMANDS.map((f) => path.join(commandsDir(loc), f)),
332
+ ...SHIPPED_AGENTS.map((f) => path.join(agentsDir(loc), f)),
333
+ ];
334
+ }
335
+ }
336
+ /**
337
+ * Per-file write helpers, exported so the legacy `config-writer.ts`
338
+ * shim can call only the named operation (writeMcpConfig writes ONLY
339
+ * the MCP entry, etc.) instead of `claudeTarget.install()` which
340
+ * writes all three files. Without this split the shims silently
341
+ * cause side effects callers don't expect.
342
+ */
343
+ function writeMcpEntry(loc) {
344
+ const file = mcpJsonPath(loc);
345
+ const existing = (0, shared_1.readJsonFile)(file);
346
+ const before = existing.mcpServers?.specship;
347
+ const after = (0, shared_1.getMcpServerConfig)();
348
+ if ((0, shared_1.jsonDeepEqual)(before, after)) {
349
+ // Already exactly what we'd write — preserve byte-identical file.
350
+ return { path: file, action: 'unchanged' };
351
+ }
352
+ // 'created' here means: the file itself did not exist before this
353
+ // write. A pre-existing MCP JSON file (`~/.claude.json` globally,
354
+ // `./.mcp.json` locally) containing other MCP servers (no
355
+ // `specship` key) is 'updated', not 'created' — we're adding an
356
+ // entry to a file that was already there. Codex uses a different
357
+ // idiom (empty-content => 'created') because its config.toml is
358
+ // ours alone to manage.
359
+ const action = before ? 'updated' : (fs.existsSync(file) ? 'updated' : 'created');
360
+ if (!existing.mcpServers)
361
+ existing.mcpServers = {};
362
+ existing.mcpServers.specship = after;
363
+ (0, shared_1.writeJsonFile)(file, existing);
364
+ return { path: file, action };
365
+ }
366
+ /**
367
+ * Strip the specship entry from a legacy project-local
368
+ * `./.claude.json` (written by pre-#207 installers, which Claude Code
369
+ * never read). Surgical: only our `specship` key is removed; sibling
370
+ * MCP servers and any unrelated keys are preserved, and the file is
371
+ * deleted only when removal leaves it completely empty. Returns the
372
+ * file action for reporting, or `null` when there's nothing to migrate.
373
+ */
374
+ function cleanupLegacyLocalMcp() {
375
+ const file = legacyLocalMcpPath();
376
+ if (!fs.existsSync(file))
377
+ return null;
378
+ const config = (0, shared_1.readJsonFile)(file);
379
+ if (!config.mcpServers?.specship)
380
+ return null;
381
+ delete config.mcpServers.specship;
382
+ if (Object.keys(config.mcpServers).length === 0)
383
+ delete config.mcpServers;
384
+ if (Object.keys(config).length === 0) {
385
+ try {
386
+ fs.unlinkSync(file);
387
+ }
388
+ catch { /* ignore */ }
389
+ }
390
+ else {
391
+ (0, shared_1.writeJsonFile)(file, config);
392
+ }
393
+ return { path: file, action: 'removed' };
394
+ }
395
+ /**
396
+ * True when a Claude Code hook `command` is one of the **pre-0.8**
397
+ * specship auto-sync hooks: `specship mark-dirty` (PostToolUse) /
398
+ * `specship sync-if-dirty` (Stop). Both subcommands have since been
399
+ * removed from the CLI, so the Stop hook fails every turn with
400
+ * "unknown command 'sync-if-dirty'" — stripping them on install
401
+ * (self-heal on upgrade) is what keeps the upgrade quiet. Local builds
402
+ * also wrote the npx form, which still contains the `specship
403
+ * <subcommand>` substring; the substring match covers both. Sibling
404
+ * user hooks (e.g. GitKraken's `gk ai hook run`) match nothing here.
405
+ *
406
+ * The **current** auto-sync hook form (`specship sync --quiet`) is
407
+ * NOT matched here — install writes those and would re-strip its own
408
+ * work if this predicate covered them. The uninstall flow uses
409
+ * `isCurrentSpecshipHookCommand` for those, on top of this one.
410
+ */
411
+ function isLegacySpecshipHookCommand(command) {
412
+ if (typeof command !== 'string')
413
+ return false;
414
+ return (command.includes('specship mark-dirty') ||
415
+ command.includes('specship sync-if-dirty'));
416
+ }
417
+ /**
418
+ * True when a hook `command` is one of the auto-sync hooks
419
+ * `writeHooksEntry` writes in this release (`specship sync --quiet`).
420
+ * Uninstall-only — install must NOT match these or it would destroy
421
+ * the entries it just wrote.
422
+ */
423
+ function isCurrentSpecshipHookCommand(command) {
424
+ if (typeof command !== 'string')
425
+ return false;
426
+ return SPECSHIP_HOOKS.some(({ hook }) => command === hook.command);
427
+ }
428
+ /**
429
+ * Strip specship hook commands matched by `predicate` from Claude
430
+ * `settings.json`. Surgical at the individual-command level: only
431
+ * matched entries are dropped, so a sibling hook sharing a matcher
432
+ * group (or the Stop event) survives. Matcher groups are pruned only
433
+ * once their `hooks` array is empty, events only once they have no
434
+ * groups left, and `hooks` itself only once every event is gone — and
435
+ * none of that runs unless we actually removed a command, so a
436
+ * settings.json with no matching hooks is left byte-for-byte untouched
437
+ * and reported `unchanged`.
438
+ */
439
+ function stripHooksMatching(loc, predicate) {
440
+ const file = settingsJsonPath(loc);
441
+ if (!fs.existsSync(file))
442
+ return { path: file, action: 'not-found' };
443
+ const settings = (0, shared_1.readJsonFile)(file);
444
+ const hooks = settings.hooks;
445
+ if (!hooks || typeof hooks !== 'object' || Array.isArray(hooks)) {
446
+ return { path: file, action: 'unchanged' };
447
+ }
448
+ let removedAny = false;
449
+ for (const event of Object.keys(hooks)) {
450
+ const groups = hooks[event];
451
+ if (!Array.isArray(groups))
452
+ continue;
453
+ for (const group of groups) {
454
+ if (!group || !Array.isArray(group.hooks))
455
+ continue;
456
+ const before = group.hooks.length;
457
+ group.hooks = group.hooks.filter((h) => !predicate(h?.command));
458
+ if (group.hooks.length !== before)
459
+ removedAny = true;
460
+ }
461
+ }
462
+ if (!removedAny)
463
+ return { path: file, action: 'unchanged' };
464
+ for (const event of Object.keys(hooks)) {
465
+ const groups = hooks[event];
466
+ if (!Array.isArray(groups))
467
+ continue;
468
+ hooks[event] = groups.filter((g) => !(g && Array.isArray(g.hooks) && g.hooks.length === 0));
469
+ if (hooks[event].length === 0)
470
+ delete hooks[event];
471
+ }
472
+ if (Object.keys(hooks).length === 0)
473
+ delete settings.hooks;
474
+ (0, shared_1.writeJsonFile)(file, settings);
475
+ return { path: file, action: 'removed' };
476
+ }
477
+ /**
478
+ * Remove stale **pre-0.8** specship auto-sync hooks
479
+ * (`specship mark-dirty` / `specship sync-if-dirty`) from Claude
480
+ * `settings.json`. Safe to call from both `install` (self-heal on
481
+ * upgrade) and `uninstall`. Exported so it can be unit-tested directly.
482
+ */
483
+ function cleanupLegacyHooks(loc) {
484
+ return stripHooksMatching(loc, isLegacySpecshipHookCommand);
485
+ }
486
+ /**
487
+ * Remove the current-release auto-sync hooks (`specship sync --quiet`)
488
+ * written by `writeHooksEntry`. Uninstall-only — install would
489
+ * destroy its own write if this ran there.
490
+ */
491
+ function cleanupCurrentHooks(loc) {
492
+ return stripHooksMatching(loc, isCurrentSpecshipHookCommand);
493
+ }
494
+ function writePermissionsEntry(loc) {
495
+ const file = settingsJsonPath(loc);
496
+ const settings = (0, shared_1.readJsonFile)(file);
497
+ const created = !fs.existsSync(file);
498
+ if (!settings.permissions)
499
+ settings.permissions = {};
500
+ if (!Array.isArray(settings.permissions.allow))
501
+ settings.permissions.allow = [];
502
+ const want = (0, shared_1.getSpecShipPermissions)();
503
+ const before = [...settings.permissions.allow];
504
+ for (const perm of want) {
505
+ if (!settings.permissions.allow.includes(perm)) {
506
+ settings.permissions.allow.push(perm);
507
+ }
508
+ }
509
+ if ((0, shared_1.jsonDeepEqual)(before, settings.permissions.allow) && !created) {
510
+ return { path: file, action: 'unchanged' };
511
+ }
512
+ (0, shared_1.writeJsonFile)(file, settings);
513
+ return { path: file, action: created ? 'created' : 'updated' };
514
+ }
515
+ /**
516
+ * Strip the marker-delimited SpecShip block from CLAUDE.md if a prior
517
+ * install wrote one. Specship no longer maintains an instructions file
518
+ * (issue #529) — the MCP server's `initialize` instructions are the
519
+ * single source of truth — so both install (self-heal on upgrade) and
520
+ * uninstall call this. `removeMarkedSection` returns `not-found`/`kept`
521
+ * when there's nothing to strip; the install caller drops those from
522
+ * the report so a fresh install stays quiet.
523
+ */
524
+ function removeInstructionsEntry(loc) {
525
+ const file = instructionsPath(loc);
526
+ const action = (0, shared_1.removeMarkedSection)(file, instructions_template_1.SPECSHIP_SECTION_START, instructions_template_1.SPECSHIP_SECTION_END);
527
+ return { path: file, action };
528
+ }
529
+ /**
530
+ * Write specship's auto-sync hooks into Claude `settings.json`. Merges
531
+ * idempotently into any user-defined hooks: a matcher group sharing our
532
+ * exact matcher string is reused; sibling matchers / events / events are
533
+ * untouched. Returns `unchanged` when our two hook commands are already
534
+ * present byte-for-byte in the right places.
535
+ *
536
+ * Gated by `install()` on `autoAllow` — same posture as the permissions
537
+ * list. The matching uninstall lives in `cleanupLegacyHooks` (whose
538
+ * matcher predicate covers BOTH the new `specship sync --quiet` form
539
+ * and the legacy `specship mark-dirty`/`sync-if-dirty` forms).
540
+ */
541
+ function writeHooksEntry(loc) {
542
+ const file = settingsJsonPath(loc);
543
+ const created = !fs.existsSync(file);
544
+ const settings = (0, shared_1.readJsonFile)(file);
545
+ const beforeJson = JSON.stringify(settings);
546
+ if (!settings.hooks || typeof settings.hooks !== 'object' || Array.isArray(settings.hooks)) {
547
+ settings.hooks = {};
548
+ }
549
+ for (const { event, matcher, hook } of SPECSHIP_HOOKS) {
550
+ if (!Array.isArray(settings.hooks[event]))
551
+ settings.hooks[event] = [];
552
+ let group = settings.hooks[event].find((g) => g && g.matcher === matcher);
553
+ if (!group) {
554
+ group = { matcher, hooks: [] };
555
+ settings.hooks[event].push(group);
556
+ }
557
+ if (!Array.isArray(group.hooks))
558
+ group.hooks = [];
559
+ // Idempotent: skip if a command-equal entry is already there.
560
+ if (!group.hooks.some((h) => h && h.command === hook.command)) {
561
+ group.hooks.push({ ...hook });
562
+ }
563
+ }
564
+ const afterJson = JSON.stringify(settings);
565
+ if (beforeJson === afterJson && !created) {
566
+ return { path: file, action: 'unchanged' };
567
+ }
568
+ (0, shared_1.writeJsonFile)(file, settings);
569
+ return { path: file, action: created ? 'created' : 'updated' };
570
+ }
571
+ /**
572
+ * Copy our shipped slash commands (commands/ss-*.md) into the user's
573
+ * commands dir (~/.claude/commands/ globally, ./.claude/commands/
574
+ * locally). Per-file idempotent: a destination with identical bytes is
575
+ * reported `unchanged`. Sibling user-written .md files in the same dir
576
+ * are never touched.
577
+ */
578
+ function writeCommandsEntries(loc) {
579
+ return SHIPPED_COMMANDS.map((name) => copyAsset(packageAssetPath('commands', name), path.join(commandsDir(loc), name)));
580
+ }
581
+ /**
582
+ * Remove legacy `cg-*.md` slash commands left behind by a pre-v0.2
583
+ * installer. Called from `install()` so an upgrade self-heals (the user
584
+ * doesn't end up with both prefixes side-by-side cluttering their
585
+ * autocomplete) and from `uninstall()` so the legacy files don't
586
+ * persist after specship is removed. Sibling user-written .md files
587
+ * in the same dir are never touched — only the exact filenames in
588
+ * LEGACY_SHIPPED_COMMANDS are candidates.
589
+ */
590
+ function cleanupLegacyCommandsEntries(loc) {
591
+ return LEGACY_SHIPPED_COMMANDS
592
+ .map((name) => removeFile(path.join(commandsDir(loc), name)))
593
+ // Only surface files that actually existed and got removed — keeps
594
+ // the install/uninstall log quiet for users who never had the
595
+ // legacy `cg-*` prefix on disk.
596
+ .filter((entry) => entry.action === 'removed');
597
+ }
598
+ /**
599
+ * Copy our shipped subagent (agents/specship-explorer.md) into the
600
+ * user's agents dir. Same idempotency contract as writeCommandsEntries.
601
+ */
602
+ function writeAgentsEntries(loc) {
603
+ return SHIPPED_AGENTS.map((name) => copyAsset(packageAssetPath('agents', name), path.join(agentsDir(loc), name)));
604
+ }
605
+ /**
606
+ * Inverse of writeCommandsEntries: delete each cg-*.md we shipped, if
607
+ * present. A file the user replaced with their own content is still
608
+ * removed — match the existing uninstall posture for files specship
609
+ * owns (the user can re-add their version after).
610
+ */
611
+ function removeCommandsEntries(loc) {
612
+ return SHIPPED_COMMANDS.map((name) => removeFile(path.join(commandsDir(loc), name)));
613
+ }
614
+ /** Inverse of writeAgentsEntries. */
615
+ function removeAgentsEntries(loc) {
616
+ return SHIPPED_AGENTS.map((name) => removeFile(path.join(agentsDir(loc), name)));
617
+ }
618
+ function copyAsset(src, dest) {
619
+ const body = fs.readFileSync(src, 'utf-8');
620
+ if (fs.existsSync(dest)) {
621
+ const existing = fs.readFileSync(dest, 'utf-8');
622
+ if (existing === body)
623
+ return { path: dest, action: 'unchanged' };
624
+ fs.mkdirSync(path.dirname(dest), { recursive: true });
625
+ fs.writeFileSync(dest, body);
626
+ return { path: dest, action: 'updated' };
627
+ }
628
+ fs.mkdirSync(path.dirname(dest), { recursive: true });
629
+ fs.writeFileSync(dest, body);
630
+ return { path: dest, action: 'created' };
631
+ }
632
+ function removeFile(p) {
633
+ if (!fs.existsSync(p))
634
+ return { path: p, action: 'not-found' };
635
+ fs.unlinkSync(p);
636
+ return { path: p, action: 'removed' };
637
+ }
638
+ exports.claudeTarget = new ClaudeCodeTarget();
639
+ //# sourceMappingURL=claude.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../src/installer/targets/claude.ts"],"names":[],"mappings":"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"}