@selvakumaresra/specship 0.1.3 → 0.4.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 (718) hide show
  1. package/README.md +2 -2
  2. package/commands/ss-design-implement.md +84 -0
  3. package/commands/ss-design-loop.md +125 -0
  4. package/commands/{cg-drifted.md → ss-drifted.md} +2 -2
  5. package/commands/{cg-fix.md → ss-fix.md} +1 -1
  6. package/commands/{cg-implement.md → ss-implement.md} +1 -1
  7. package/commands/ss-spec-author.md +43 -0
  8. package/commands/ss-spec-review.md +48 -0
  9. package/dist/bin/node-version-check.d.ts +37 -0
  10. package/dist/bin/node-version-check.d.ts.map +1 -0
  11. package/dist/bin/node-version-check.js +79 -0
  12. package/dist/bin/node-version-check.js.map +1 -0
  13. package/dist/bin/specship.d.ts +25 -0
  14. package/dist/bin/specship.d.ts.map +1 -0
  15. package/dist/bin/specship.js +2085 -0
  16. package/dist/bin/specship.js.map +1 -0
  17. package/dist/bin/uninstall.d.ts +13 -0
  18. package/dist/bin/uninstall.d.ts.map +1 -0
  19. package/dist/bin/uninstall.js +35 -0
  20. package/dist/bin/uninstall.js.map +1 -0
  21. package/dist/context/formatter.d.ts +30 -0
  22. package/dist/context/formatter.d.ts.map +1 -0
  23. package/dist/context/formatter.js +263 -0
  24. package/dist/context/formatter.js.map +1 -0
  25. package/dist/context/index.d.ts +119 -0
  26. package/dist/context/index.d.ts.map +1 -0
  27. package/dist/context/index.js +1289 -0
  28. package/dist/context/index.js.map +1 -0
  29. package/dist/context/markers.d.ts +19 -0
  30. package/dist/context/markers.d.ts.map +1 -0
  31. package/dist/context/markers.js +22 -0
  32. package/dist/context/markers.js.map +1 -0
  33. package/dist/db/index.d.ts +103 -0
  34. package/dist/db/index.d.ts.map +1 -0
  35. package/dist/db/index.js +279 -0
  36. package/dist/db/index.js.map +1 -0
  37. package/dist/db/migrations.d.ts +44 -0
  38. package/dist/db/migrations.d.ts.map +1 -0
  39. package/dist/db/migrations.js +462 -0
  40. package/dist/db/migrations.js.map +1 -0
  41. package/dist/db/queries.d.ts +357 -0
  42. package/dist/db/queries.d.ts.map +1 -0
  43. package/dist/db/queries.js +1504 -0
  44. package/dist/db/queries.js.map +1 -0
  45. package/dist/db/schema.sql +419 -0
  46. package/dist/db/spec-queries.d.ts +101 -0
  47. package/dist/db/spec-queries.d.ts.map +1 -0
  48. package/dist/db/spec-queries.js +675 -0
  49. package/dist/db/spec-queries.js.map +1 -0
  50. package/dist/db/sqlite-adapter.d.ts +65 -0
  51. package/dist/db/sqlite-adapter.d.ts.map +1 -0
  52. package/dist/db/sqlite-adapter.js +214 -0
  53. package/dist/db/sqlite-adapter.js.map +1 -0
  54. package/dist/designer/artifact-store.js +54 -0
  55. package/dist/designer/browser.js +141 -0
  56. package/dist/designer/cdp-ensure.js +60 -0
  57. package/dist/designer/cdp-env.js +18 -0
  58. package/dist/designer/cdp-trace.js +599 -0
  59. package/dist/designer/cross-platform.js +74 -0
  60. package/dist/designer/designer-controller.js +1413 -0
  61. package/dist/designer/file-panel.js +39 -0
  62. package/dist/designer/interstitials.js +97 -0
  63. package/dist/designer/oopif-reader.js +176 -0
  64. package/dist/designer/package-meta.js +18 -0
  65. package/dist/designer/preview-host.js +50 -0
  66. package/dist/designer/repo-root.js +31 -0
  67. package/dist/designer/run-state.js +353 -0
  68. package/dist/designer/session-store.js +59 -0
  69. package/dist/designer/ui-anchors.js +651 -0
  70. package/dist/directory.d.ts +67 -0
  71. package/dist/directory.d.ts.map +1 -0
  72. package/dist/directory.js +267 -0
  73. package/dist/directory.js.map +1 -0
  74. package/dist/errors.d.ts +136 -0
  75. package/dist/errors.d.ts.map +1 -0
  76. package/dist/errors.js +219 -0
  77. package/dist/errors.js.map +1 -0
  78. package/dist/extraction/dfm-extractor.d.ts +31 -0
  79. package/dist/extraction/dfm-extractor.d.ts.map +1 -0
  80. package/dist/extraction/dfm-extractor.js +151 -0
  81. package/dist/extraction/dfm-extractor.js.map +1 -0
  82. package/dist/extraction/generated-detection.d.ts +30 -0
  83. package/dist/extraction/generated-detection.d.ts.map +1 -0
  84. package/dist/extraction/generated-detection.js +80 -0
  85. package/dist/extraction/generated-detection.js.map +1 -0
  86. package/dist/extraction/grammars.d.ts +100 -0
  87. package/dist/extraction/grammars.d.ts.map +1 -0
  88. package/dist/extraction/grammars.js +426 -0
  89. package/dist/extraction/grammars.js.map +1 -0
  90. package/dist/extraction/index.d.ts +138 -0
  91. package/dist/extraction/index.d.ts.map +1 -0
  92. package/dist/extraction/index.js +1394 -0
  93. package/dist/extraction/index.js.map +1 -0
  94. package/dist/extraction/languages/c-cpp.d.ts +4 -0
  95. package/dist/extraction/languages/c-cpp.d.ts.map +1 -0
  96. package/dist/extraction/languages/c-cpp.js +171 -0
  97. package/dist/extraction/languages/c-cpp.js.map +1 -0
  98. package/dist/extraction/languages/csharp.d.ts +3 -0
  99. package/dist/extraction/languages/csharp.d.ts.map +1 -0
  100. package/dist/extraction/languages/csharp.js +73 -0
  101. package/dist/extraction/languages/csharp.js.map +1 -0
  102. package/dist/extraction/languages/dart.d.ts +3 -0
  103. package/dist/extraction/languages/dart.d.ts.map +1 -0
  104. package/dist/extraction/languages/dart.js +192 -0
  105. package/dist/extraction/languages/dart.js.map +1 -0
  106. package/dist/extraction/languages/go.d.ts +3 -0
  107. package/dist/extraction/languages/go.d.ts.map +1 -0
  108. package/dist/extraction/languages/go.js +74 -0
  109. package/dist/extraction/languages/go.js.map +1 -0
  110. package/dist/extraction/languages/index.d.ts +10 -0
  111. package/dist/extraction/languages/index.d.ts.map +1 -0
  112. package/dist/extraction/languages/index.js +51 -0
  113. package/dist/extraction/languages/index.js.map +1 -0
  114. package/dist/extraction/languages/java.d.ts +3 -0
  115. package/dist/extraction/languages/java.d.ts.map +1 -0
  116. package/dist/extraction/languages/java.js +70 -0
  117. package/dist/extraction/languages/java.js.map +1 -0
  118. package/dist/extraction/languages/javascript.d.ts +3 -0
  119. package/dist/extraction/languages/javascript.d.ts.map +1 -0
  120. package/dist/extraction/languages/javascript.js +90 -0
  121. package/dist/extraction/languages/javascript.js.map +1 -0
  122. package/dist/extraction/languages/kotlin.d.ts +3 -0
  123. package/dist/extraction/languages/kotlin.d.ts.map +1 -0
  124. package/dist/extraction/languages/kotlin.js +259 -0
  125. package/dist/extraction/languages/kotlin.js.map +1 -0
  126. package/dist/extraction/languages/lua.d.ts +3 -0
  127. package/dist/extraction/languages/lua.d.ts.map +1 -0
  128. package/dist/extraction/languages/lua.js +150 -0
  129. package/dist/extraction/languages/lua.js.map +1 -0
  130. package/dist/extraction/languages/luau.d.ts +3 -0
  131. package/dist/extraction/languages/luau.d.ts.map +1 -0
  132. package/dist/extraction/languages/luau.js +37 -0
  133. package/dist/extraction/languages/luau.js.map +1 -0
  134. package/dist/extraction/languages/objc.d.ts +3 -0
  135. package/dist/extraction/languages/objc.d.ts.map +1 -0
  136. package/dist/extraction/languages/objc.js +133 -0
  137. package/dist/extraction/languages/objc.js.map +1 -0
  138. package/dist/extraction/languages/pascal.d.ts +3 -0
  139. package/dist/extraction/languages/pascal.d.ts.map +1 -0
  140. package/dist/extraction/languages/pascal.js +66 -0
  141. package/dist/extraction/languages/pascal.js.map +1 -0
  142. package/dist/extraction/languages/php.d.ts +3 -0
  143. package/dist/extraction/languages/php.d.ts.map +1 -0
  144. package/dist/extraction/languages/php.js +107 -0
  145. package/dist/extraction/languages/php.js.map +1 -0
  146. package/dist/extraction/languages/python.d.ts +3 -0
  147. package/dist/extraction/languages/python.d.ts.map +1 -0
  148. package/dist/extraction/languages/python.js +56 -0
  149. package/dist/extraction/languages/python.js.map +1 -0
  150. package/dist/extraction/languages/ruby.d.ts +3 -0
  151. package/dist/extraction/languages/ruby.d.ts.map +1 -0
  152. package/dist/extraction/languages/ruby.js +114 -0
  153. package/dist/extraction/languages/ruby.js.map +1 -0
  154. package/dist/extraction/languages/rust.d.ts +3 -0
  155. package/dist/extraction/languages/rust.d.ts.map +1 -0
  156. package/dist/extraction/languages/rust.js +109 -0
  157. package/dist/extraction/languages/rust.js.map +1 -0
  158. package/dist/extraction/languages/scala.d.ts +3 -0
  159. package/dist/extraction/languages/scala.d.ts.map +1 -0
  160. package/dist/extraction/languages/scala.js +139 -0
  161. package/dist/extraction/languages/scala.js.map +1 -0
  162. package/dist/extraction/languages/swift.d.ts +3 -0
  163. package/dist/extraction/languages/swift.d.ts.map +1 -0
  164. package/dist/extraction/languages/swift.js +91 -0
  165. package/dist/extraction/languages/swift.js.map +1 -0
  166. package/dist/extraction/languages/typescript.d.ts +3 -0
  167. package/dist/extraction/languages/typescript.d.ts.map +1 -0
  168. package/dist/extraction/languages/typescript.js +129 -0
  169. package/dist/extraction/languages/typescript.js.map +1 -0
  170. package/dist/extraction/liquid-extractor.d.ts +52 -0
  171. package/dist/extraction/liquid-extractor.d.ts.map +1 -0
  172. package/dist/extraction/liquid-extractor.js +313 -0
  173. package/dist/extraction/liquid-extractor.js.map +1 -0
  174. package/dist/extraction/mybatis-extractor.d.ts +48 -0
  175. package/dist/extraction/mybatis-extractor.d.ts.map +1 -0
  176. package/dist/extraction/mybatis-extractor.js +198 -0
  177. package/dist/extraction/mybatis-extractor.js.map +1 -0
  178. package/dist/extraction/parse-worker.d.ts +8 -0
  179. package/dist/extraction/parse-worker.d.ts.map +1 -0
  180. package/dist/extraction/parse-worker.js +94 -0
  181. package/dist/extraction/parse-worker.js.map +1 -0
  182. package/dist/extraction/specs/markdown-spec-extractor.d.ts +59 -0
  183. package/dist/extraction/specs/markdown-spec-extractor.d.ts.map +1 -0
  184. package/dist/extraction/specs/markdown-spec-extractor.js +327 -0
  185. package/dist/extraction/specs/markdown-spec-extractor.js.map +1 -0
  186. package/dist/extraction/specs/types.d.ts +39 -0
  187. package/dist/extraction/specs/types.d.ts.map +1 -0
  188. package/dist/extraction/specs/types.js +8 -0
  189. package/dist/extraction/specs/types.js.map +1 -0
  190. package/dist/extraction/svelte-extractor.d.ts +56 -0
  191. package/dist/extraction/svelte-extractor.d.ts.map +1 -0
  192. package/dist/extraction/svelte-extractor.js +272 -0
  193. package/dist/extraction/svelte-extractor.js.map +1 -0
  194. package/dist/extraction/tree-sitter-helpers.d.ts +28 -0
  195. package/dist/extraction/tree-sitter-helpers.d.ts.map +1 -0
  196. package/dist/extraction/tree-sitter-helpers.js +103 -0
  197. package/dist/extraction/tree-sitter-helpers.js.map +1 -0
  198. package/dist/extraction/tree-sitter-types.d.ts +193 -0
  199. package/dist/extraction/tree-sitter-types.d.ts.map +1 -0
  200. package/dist/extraction/tree-sitter-types.js +10 -0
  201. package/dist/extraction/tree-sitter-types.js.map +1 -0
  202. package/dist/extraction/tree-sitter.d.ts +317 -0
  203. package/dist/extraction/tree-sitter.d.ts.map +1 -0
  204. package/dist/extraction/tree-sitter.js +3092 -0
  205. package/dist/extraction/tree-sitter.js.map +1 -0
  206. package/dist/extraction/vue-extractor.d.ts +51 -0
  207. package/dist/extraction/vue-extractor.d.ts.map +1 -0
  208. package/dist/extraction/vue-extractor.js +251 -0
  209. package/dist/extraction/vue-extractor.js.map +1 -0
  210. package/dist/extraction/wasm/tree-sitter-lua.wasm +0 -0
  211. package/dist/extraction/wasm/tree-sitter-luau.wasm +0 -0
  212. package/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
  213. package/dist/extraction/wasm/tree-sitter-scala.wasm +0 -0
  214. package/dist/extraction/wasm-runtime-flags.d.ts +38 -0
  215. package/dist/extraction/wasm-runtime-flags.d.ts.map +1 -0
  216. package/dist/extraction/wasm-runtime-flags.js +106 -0
  217. package/dist/extraction/wasm-runtime-flags.js.map +1 -0
  218. package/dist/graph/index.d.ts +8 -0
  219. package/dist/graph/index.d.ts.map +1 -0
  220. package/dist/graph/index.js +13 -0
  221. package/dist/graph/index.js.map +1 -0
  222. package/dist/graph/queries.d.ts +106 -0
  223. package/dist/graph/queries.d.ts.map +1 -0
  224. package/dist/graph/queries.js +366 -0
  225. package/dist/graph/queries.js.map +1 -0
  226. package/dist/graph/traversal.d.ts +127 -0
  227. package/dist/graph/traversal.d.ts.map +1 -0
  228. package/dist/graph/traversal.js +531 -0
  229. package/dist/graph/traversal.js.map +1 -0
  230. package/dist/index.d.ts +551 -0
  231. package/dist/index.d.ts.map +1 -0
  232. package/dist/index.js +1165 -0
  233. package/dist/index.js.map +1 -0
  234. package/dist/installer/config-writer.d.ts +28 -0
  235. package/dist/installer/config-writer.d.ts.map +1 -0
  236. package/dist/installer/config-writer.js +91 -0
  237. package/dist/installer/config-writer.js.map +1 -0
  238. package/dist/installer/index.d.ts +92 -0
  239. package/dist/installer/index.d.ts.map +1 -0
  240. package/dist/installer/index.js +416 -0
  241. package/dist/installer/index.js.map +1 -0
  242. package/dist/installer/instructions-template.d.ts +35 -0
  243. package/dist/installer/instructions-template.d.ts.map +1 -0
  244. package/dist/installer/instructions-template.js +51 -0
  245. package/dist/installer/instructions-template.js.map +1 -0
  246. package/dist/installer/targets/claude.d.ts +117 -0
  247. package/dist/installer/targets/claude.d.ts.map +1 -0
  248. package/dist/installer/targets/claude.js +736 -0
  249. package/dist/installer/targets/claude.js.map +1 -0
  250. package/dist/installer/targets/registry.d.ts +19 -0
  251. package/dist/installer/targets/registry.d.ts.map +1 -0
  252. package/dist/installer/targets/registry.js +31 -0
  253. package/dist/installer/targets/registry.js.map +1 -0
  254. package/dist/installer/targets/shared.d.ts +76 -0
  255. package/dist/installer/targets/shared.d.ts.map +1 -0
  256. package/dist/installer/targets/shared.js +256 -0
  257. package/dist/installer/targets/shared.js.map +1 -0
  258. package/dist/installer/targets/types.d.ts +84 -0
  259. package/dist/installer/targets/types.d.ts.map +1 -0
  260. package/dist/installer/targets/types.js +12 -0
  261. package/dist/installer/targets/types.js.map +1 -0
  262. package/dist/isolation/worktree.d.ts +65 -0
  263. package/dist/isolation/worktree.d.ts.map +1 -0
  264. package/dist/isolation/worktree.js +231 -0
  265. package/dist/isolation/worktree.js.map +1 -0
  266. package/dist/mcp/daemon-paths.d.ts +46 -0
  267. package/dist/mcp/daemon-paths.d.ts.map +1 -0
  268. package/dist/mcp/daemon-paths.js +125 -0
  269. package/dist/mcp/daemon-paths.js.map +1 -0
  270. package/dist/mcp/daemon.d.ts +161 -0
  271. package/dist/mcp/daemon.d.ts.map +1 -0
  272. package/dist/mcp/daemon.js +403 -0
  273. package/dist/mcp/daemon.js.map +1 -0
  274. package/dist/mcp/designer-tools.d.ts +33 -0
  275. package/dist/mcp/designer-tools.d.ts.map +1 -0
  276. package/dist/mcp/designer-tools.js +313 -0
  277. package/dist/mcp/designer-tools.js.map +1 -0
  278. package/dist/mcp/engine.d.ts +105 -0
  279. package/dist/mcp/engine.d.ts.map +1 -0
  280. package/dist/mcp/engine.js +270 -0
  281. package/dist/mcp/engine.js.map +1 -0
  282. package/dist/mcp/index.d.ts +112 -0
  283. package/dist/mcp/index.d.ts.map +1 -0
  284. package/dist/mcp/index.js +477 -0
  285. package/dist/mcp/index.js.map +1 -0
  286. package/dist/mcp/proxy.d.ts +81 -0
  287. package/dist/mcp/proxy.d.ts.map +1 -0
  288. package/dist/mcp/proxy.js +510 -0
  289. package/dist/mcp/proxy.js.map +1 -0
  290. package/dist/mcp/server-instructions.d.ts +18 -0
  291. package/dist/mcp/server-instructions.d.ts.map +1 -0
  292. package/dist/mcp/server-instructions.js +77 -0
  293. package/dist/mcp/server-instructions.js.map +1 -0
  294. package/dist/mcp/session.d.ts +77 -0
  295. package/dist/mcp/session.d.ts.map +1 -0
  296. package/dist/mcp/session.js +294 -0
  297. package/dist/mcp/session.js.map +1 -0
  298. package/dist/mcp/spec-tools.d.ts +39 -0
  299. package/dist/mcp/spec-tools.d.ts.map +1 -0
  300. package/dist/mcp/spec-tools.js +326 -0
  301. package/dist/mcp/spec-tools.js.map +1 -0
  302. package/dist/mcp/tools.d.ts +404 -0
  303. package/dist/mcp/tools.d.ts.map +1 -0
  304. package/dist/mcp/tools.js +3087 -0
  305. package/dist/mcp/tools.js.map +1 -0
  306. package/dist/mcp/transport.d.ts +188 -0
  307. package/dist/mcp/transport.d.ts.map +1 -0
  308. package/dist/mcp/transport.js +343 -0
  309. package/dist/mcp/transport.js.map +1 -0
  310. package/dist/mcp/version.d.ts +19 -0
  311. package/dist/mcp/version.d.ts.map +1 -0
  312. package/dist/mcp/version.js +71 -0
  313. package/dist/mcp/version.js.map +1 -0
  314. package/dist/resolution/callback-synthesizer.d.ts +10 -0
  315. package/dist/resolution/callback-synthesizer.d.ts.map +1 -0
  316. package/dist/resolution/callback-synthesizer.js +1300 -0
  317. package/dist/resolution/callback-synthesizer.js.map +1 -0
  318. package/dist/resolution/frameworks/cargo-workspace.d.ts +18 -0
  319. package/dist/resolution/frameworks/cargo-workspace.d.ts.map +1 -0
  320. package/dist/resolution/frameworks/cargo-workspace.js +225 -0
  321. package/dist/resolution/frameworks/cargo-workspace.js.map +1 -0
  322. package/dist/resolution/frameworks/csharp.d.ts +8 -0
  323. package/dist/resolution/frameworks/csharp.d.ts.map +1 -0
  324. package/dist/resolution/frameworks/csharp.js +241 -0
  325. package/dist/resolution/frameworks/csharp.js.map +1 -0
  326. package/dist/resolution/frameworks/drupal.d.ts +51 -0
  327. package/dist/resolution/frameworks/drupal.d.ts.map +1 -0
  328. package/dist/resolution/frameworks/drupal.js +367 -0
  329. package/dist/resolution/frameworks/drupal.js.map +1 -0
  330. package/dist/resolution/frameworks/expo-modules.d.ts +3 -0
  331. package/dist/resolution/frameworks/expo-modules.d.ts.map +1 -0
  332. package/dist/resolution/frameworks/expo-modules.js +143 -0
  333. package/dist/resolution/frameworks/expo-modules.js.map +1 -0
  334. package/dist/resolution/frameworks/express.d.ts +8 -0
  335. package/dist/resolution/frameworks/express.d.ts.map +1 -0
  336. package/dist/resolution/frameworks/express.js +308 -0
  337. package/dist/resolution/frameworks/express.js.map +1 -0
  338. package/dist/resolution/frameworks/fabric.d.ts +3 -0
  339. package/dist/resolution/frameworks/fabric.d.ts.map +1 -0
  340. package/dist/resolution/frameworks/fabric.js +354 -0
  341. package/dist/resolution/frameworks/fabric.js.map +1 -0
  342. package/dist/resolution/frameworks/go.d.ts +8 -0
  343. package/dist/resolution/frameworks/go.d.ts.map +1 -0
  344. package/dist/resolution/frameworks/go.js +161 -0
  345. package/dist/resolution/frameworks/go.js.map +1 -0
  346. package/dist/resolution/frameworks/index.d.ts +48 -0
  347. package/dist/resolution/frameworks/index.d.ts.map +1 -0
  348. package/dist/resolution/frameworks/index.js +161 -0
  349. package/dist/resolution/frameworks/index.js.map +1 -0
  350. package/dist/resolution/frameworks/java.d.ts +8 -0
  351. package/dist/resolution/frameworks/java.d.ts.map +1 -0
  352. package/dist/resolution/frameworks/java.js +504 -0
  353. package/dist/resolution/frameworks/java.js.map +1 -0
  354. package/dist/resolution/frameworks/laravel.d.ts +13 -0
  355. package/dist/resolution/frameworks/laravel.d.ts.map +1 -0
  356. package/dist/resolution/frameworks/laravel.js +257 -0
  357. package/dist/resolution/frameworks/laravel.js.map +1 -0
  358. package/dist/resolution/frameworks/nestjs.d.ts +26 -0
  359. package/dist/resolution/frameworks/nestjs.d.ts.map +1 -0
  360. package/dist/resolution/frameworks/nestjs.js +698 -0
  361. package/dist/resolution/frameworks/nestjs.js.map +1 -0
  362. package/dist/resolution/frameworks/play.d.ts +19 -0
  363. package/dist/resolution/frameworks/play.d.ts.map +1 -0
  364. package/dist/resolution/frameworks/play.js +111 -0
  365. package/dist/resolution/frameworks/play.js.map +1 -0
  366. package/dist/resolution/frameworks/python.d.ts +10 -0
  367. package/dist/resolution/frameworks/python.d.ts.map +1 -0
  368. package/dist/resolution/frameworks/python.js +396 -0
  369. package/dist/resolution/frameworks/python.js.map +1 -0
  370. package/dist/resolution/frameworks/react-native.d.ts +3 -0
  371. package/dist/resolution/frameworks/react-native.d.ts.map +1 -0
  372. package/dist/resolution/frameworks/react-native.js +360 -0
  373. package/dist/resolution/frameworks/react-native.js.map +1 -0
  374. package/dist/resolution/frameworks/react.d.ts +8 -0
  375. package/dist/resolution/frameworks/react.d.ts.map +1 -0
  376. package/dist/resolution/frameworks/react.js +365 -0
  377. package/dist/resolution/frameworks/react.js.map +1 -0
  378. package/dist/resolution/frameworks/ruby.d.ts +8 -0
  379. package/dist/resolution/frameworks/ruby.d.ts.map +1 -0
  380. package/dist/resolution/frameworks/ruby.js +302 -0
  381. package/dist/resolution/frameworks/ruby.js.map +1 -0
  382. package/dist/resolution/frameworks/rust.d.ts +8 -0
  383. package/dist/resolution/frameworks/rust.d.ts.map +1 -0
  384. package/dist/resolution/frameworks/rust.js +304 -0
  385. package/dist/resolution/frameworks/rust.js.map +1 -0
  386. package/dist/resolution/frameworks/svelte.d.ts +9 -0
  387. package/dist/resolution/frameworks/svelte.d.ts.map +1 -0
  388. package/dist/resolution/frameworks/svelte.js +249 -0
  389. package/dist/resolution/frameworks/svelte.js.map +1 -0
  390. package/dist/resolution/frameworks/swift-objc.d.ts +37 -0
  391. package/dist/resolution/frameworks/swift-objc.d.ts.map +1 -0
  392. package/dist/resolution/frameworks/swift-objc.js +252 -0
  393. package/dist/resolution/frameworks/swift-objc.js.map +1 -0
  394. package/dist/resolution/frameworks/swift.d.ts +10 -0
  395. package/dist/resolution/frameworks/swift.d.ts.map +1 -0
  396. package/dist/resolution/frameworks/swift.js +400 -0
  397. package/dist/resolution/frameworks/swift.js.map +1 -0
  398. package/dist/resolution/frameworks/vue.d.ts +9 -0
  399. package/dist/resolution/frameworks/vue.d.ts.map +1 -0
  400. package/dist/resolution/frameworks/vue.js +306 -0
  401. package/dist/resolution/frameworks/vue.js.map +1 -0
  402. package/dist/resolution/go-module.d.ts +26 -0
  403. package/dist/resolution/go-module.d.ts.map +1 -0
  404. package/dist/resolution/go-module.js +78 -0
  405. package/dist/resolution/go-module.js.map +1 -0
  406. package/dist/resolution/import-resolver.d.ts +68 -0
  407. package/dist/resolution/import-resolver.d.ts.map +1 -0
  408. package/dist/resolution/import-resolver.js +1275 -0
  409. package/dist/resolution/import-resolver.js.map +1 -0
  410. package/dist/resolution/index.d.ts +117 -0
  411. package/dist/resolution/index.d.ts.map +1 -0
  412. package/dist/resolution/index.js +895 -0
  413. package/dist/resolution/index.js.map +1 -0
  414. package/dist/resolution/lru-cache.d.ts +24 -0
  415. package/dist/resolution/lru-cache.d.ts.map +1 -0
  416. package/dist/resolution/lru-cache.js +62 -0
  417. package/dist/resolution/lru-cache.js.map +1 -0
  418. package/dist/resolution/name-matcher.d.ts +32 -0
  419. package/dist/resolution/name-matcher.d.ts.map +1 -0
  420. package/dist/resolution/name-matcher.js +596 -0
  421. package/dist/resolution/name-matcher.js.map +1 -0
  422. package/dist/resolution/path-aliases.d.ts +68 -0
  423. package/dist/resolution/path-aliases.d.ts.map +1 -0
  424. package/dist/resolution/path-aliases.js +238 -0
  425. package/dist/resolution/path-aliases.js.map +1 -0
  426. package/dist/resolution/spec-link-resolver.d.ts +103 -0
  427. package/dist/resolution/spec-link-resolver.d.ts.map +1 -0
  428. package/dist/resolution/spec-link-resolver.js +259 -0
  429. package/dist/resolution/spec-link-resolver.js.map +1 -0
  430. package/dist/resolution/strip-comments.d.ts +27 -0
  431. package/dist/resolution/strip-comments.d.ts.map +1 -0
  432. package/dist/resolution/strip-comments.js +441 -0
  433. package/dist/resolution/strip-comments.js.map +1 -0
  434. package/dist/resolution/swift-objc-bridge.d.ts +134 -0
  435. package/dist/resolution/swift-objc-bridge.d.ts.map +1 -0
  436. package/dist/resolution/swift-objc-bridge.js +256 -0
  437. package/dist/resolution/swift-objc-bridge.js.map +1 -0
  438. package/dist/resolution/types.d.ts +216 -0
  439. package/dist/resolution/types.d.ts.map +1 -0
  440. package/dist/resolution/types.js +8 -0
  441. package/dist/resolution/types.js.map +1 -0
  442. package/dist/resolution/workspace-packages.d.ts +48 -0
  443. package/dist/resolution/workspace-packages.d.ts.map +1 -0
  444. package/dist/resolution/workspace-packages.js +208 -0
  445. package/dist/resolution/workspace-packages.js.map +1 -0
  446. package/dist/search/query-parser.d.ts +57 -0
  447. package/dist/search/query-parser.d.ts.map +1 -0
  448. package/dist/search/query-parser.js +177 -0
  449. package/dist/search/query-parser.js.map +1 -0
  450. package/dist/search/query-utils.d.ts +71 -0
  451. package/dist/search/query-utils.d.ts.map +1 -0
  452. package/dist/search/query-utils.js +380 -0
  453. package/dist/search/query-utils.js.map +1 -0
  454. package/dist/server/cli.js +152 -0
  455. package/dist/server/index.js +12 -0
  456. package/dist/server/ingest/index.js +18 -0
  457. package/dist/server/ingest/ingestor.js +506 -0
  458. package/dist/server/ingest/parser.js +104 -0
  459. package/dist/server/ingest/pricing.js +78 -0
  460. package/dist/server/ingest/types.js +9 -0
  461. package/dist/server/ingest/watcher.js +77 -0
  462. package/dist/server/package.json +3 -0
  463. package/dist/server/project-registry.js +101 -0
  464. package/dist/server/routes/claude.js +868 -0
  465. package/dist/server/routes/graph.js +211 -0
  466. package/dist/server/routes/memory.js +272 -0
  467. package/dist/server/routes/projects.js +197 -0
  468. package/dist/server/routes/spec.js +265 -0
  469. package/dist/server/routes/status.js +112 -0
  470. package/dist/server/routes/workflow.js +212 -0
  471. package/dist/server/server.js +206 -0
  472. package/dist/server/static-handler.js +87 -0
  473. package/dist/sync/git-hooks.d.ts +45 -0
  474. package/dist/sync/git-hooks.d.ts.map +1 -0
  475. package/dist/sync/git-hooks.js +225 -0
  476. package/dist/sync/git-hooks.js.map +1 -0
  477. package/dist/sync/index.d.ts +19 -0
  478. package/dist/sync/index.d.ts.map +1 -0
  479. package/dist/sync/index.js +35 -0
  480. package/dist/sync/index.js.map +1 -0
  481. package/dist/sync/watch-policy.d.ts +48 -0
  482. package/dist/sync/watch-policy.d.ts.map +1 -0
  483. package/dist/sync/watch-policy.js +124 -0
  484. package/dist/sync/watch-policy.js.map +1 -0
  485. package/dist/sync/watcher.d.ts +283 -0
  486. package/dist/sync/watcher.d.ts.map +1 -0
  487. package/dist/sync/watcher.js +606 -0
  488. package/dist/sync/watcher.js.map +1 -0
  489. package/dist/sync/worktree.d.ts +54 -0
  490. package/dist/sync/worktree.d.ts.map +1 -0
  491. package/dist/sync/worktree.js +137 -0
  492. package/dist/sync/worktree.js.map +1 -0
  493. package/dist/types.d.ts +623 -0
  494. package/dist/types.d.ts.map +1 -0
  495. package/dist/types.js +108 -0
  496. package/dist/types.js.map +1 -0
  497. package/dist/ui/glyphs.d.ts +42 -0
  498. package/dist/ui/glyphs.d.ts.map +1 -0
  499. package/dist/ui/glyphs.js +78 -0
  500. package/dist/ui/glyphs.js.map +1 -0
  501. package/dist/ui/shimmer-progress.d.ts +11 -0
  502. package/dist/ui/shimmer-progress.d.ts.map +1 -0
  503. package/dist/ui/shimmer-progress.js +90 -0
  504. package/dist/ui/shimmer-progress.js.map +1 -0
  505. package/dist/ui/shimmer-worker.d.ts +2 -0
  506. package/dist/ui/shimmer-worker.d.ts.map +1 -0
  507. package/dist/ui/shimmer-worker.js +118 -0
  508. package/dist/ui/shimmer-worker.js.map +1 -0
  509. package/dist/ui/types.d.ts +17 -0
  510. package/dist/ui/types.d.ts.map +1 -0
  511. package/dist/ui/types.js +3 -0
  512. package/dist/ui/types.js.map +1 -0
  513. package/dist/utils.d.ts +205 -0
  514. package/dist/utils.d.ts.map +1 -0
  515. package/dist/utils.js +549 -0
  516. package/dist/utils.js.map +1 -0
  517. package/dist/web/chunk-2AJCHB7P.js +1 -0
  518. package/dist/web/chunk-2CPLUFCH.js +2 -0
  519. package/dist/web/chunk-2GBEK2GM.js +1 -0
  520. package/dist/web/chunk-2I7L37NS.js +1 -0
  521. package/dist/web/chunk-2NAWAJB5.js +1 -0
  522. package/dist/web/chunk-2OJBIPE4.js +1 -0
  523. package/dist/web/chunk-2YUJNZ2Y.js +6 -0
  524. package/dist/web/chunk-3E2WB6D5.js +1 -0
  525. package/dist/web/chunk-3EBFYSCH.js +2 -0
  526. package/dist/web/chunk-3QCQ4BXS.js +1 -0
  527. package/dist/web/chunk-42XVAQ6I.js +1 -0
  528. package/dist/web/chunk-45QHGCB4.js +17 -0
  529. package/dist/web/chunk-4IMMPEYM.js +1 -0
  530. package/dist/web/chunk-4TJQJPCZ.js +1 -0
  531. package/dist/web/chunk-4WZIHTPC.js +1 -0
  532. package/dist/web/chunk-4YVSYOSD.js +1 -0
  533. package/dist/web/chunk-5BQIOYKW.js +1 -0
  534. package/dist/web/chunk-5HGWHUJA.js +1 -0
  535. package/dist/web/chunk-5Y244R4G.js +1 -0
  536. package/dist/web/chunk-6RRDPT5Z.js +1 -0
  537. package/dist/web/chunk-6VKB2ZWM.js +1 -0
  538. package/dist/web/chunk-7DMFVTU4.js +1 -0
  539. package/dist/web/chunk-7RNS77UP.js +1 -0
  540. package/dist/web/chunk-7SMPKVEP.js +1 -0
  541. package/dist/web/chunk-A5R3MJMO.js +1 -0
  542. package/dist/web/chunk-ASZ77FMZ.js +1 -0
  543. package/dist/web/chunk-AZJVTPLU.js +1 -0
  544. package/dist/web/chunk-B3YPFY6A.js +1 -0
  545. package/dist/web/chunk-BLBRMCN2.js +1 -0
  546. package/dist/web/chunk-BMIAXD2V.js +2 -0
  547. package/dist/web/chunk-BUXWEHIY.js +1 -0
  548. package/dist/web/chunk-BYZFQSM6.js +1 -0
  549. package/dist/web/chunk-D5OCNEJA.js +2 -0
  550. package/dist/web/chunk-DLQPZWSI.css +1 -0
  551. package/dist/web/chunk-DTRN7FZR.js +1 -0
  552. package/dist/web/chunk-DYRFLPJA.js +1 -0
  553. package/dist/web/chunk-E3J3CXR5.js +1 -0
  554. package/dist/web/chunk-E44X4RH2.js +1 -0
  555. package/dist/web/chunk-E73OX2P7.js +1 -0
  556. package/dist/web/chunk-EAXRKDLV.js +1 -0
  557. package/dist/web/chunk-EBKKDHYI.js +1 -0
  558. package/dist/web/chunk-EE7V7Q5P.js +1 -0
  559. package/dist/web/chunk-EKY2FUHU.js +1 -0
  560. package/dist/web/chunk-EMGMOEVR.js +1 -0
  561. package/dist/web/chunk-EP6XOPXH.js +1 -0
  562. package/dist/web/chunk-ESGDLJOJ.js +1 -0
  563. package/dist/web/chunk-ETJG7NCY.js +1 -0
  564. package/dist/web/chunk-EUUEFEDI.js +1 -0
  565. package/dist/web/chunk-FGNZDHTL.js +11 -0
  566. package/dist/web/chunk-FHZHD2ZG.js +1 -0
  567. package/dist/web/chunk-FIJW2UNJ.js +1 -0
  568. package/dist/web/chunk-FMV5PXRC.js +5 -0
  569. package/dist/web/chunk-G7VZT5KB.js +3 -0
  570. package/dist/web/chunk-GR72OOCN.js +1 -0
  571. package/dist/web/chunk-GRZYXPSO.js +7 -0
  572. package/dist/web/chunk-GWPVKJIY.js +1 -0
  573. package/dist/web/chunk-GYGPS3AN.js +1 -0
  574. package/dist/web/chunk-H7AF7YS4.js +1 -0
  575. package/dist/web/chunk-HDZDQILN.js +1 -0
  576. package/dist/web/chunk-HMK6UO6N.js +1 -0
  577. package/dist/web/chunk-HZA6NEAB.js +1 -0
  578. package/dist/web/chunk-IHEE5NYJ.js +1 -0
  579. package/dist/web/chunk-ISNEBICW.js +1 -0
  580. package/dist/web/chunk-J2GZVLHH.js +1 -0
  581. package/dist/web/chunk-JTFXTIPE.js +903 -0
  582. package/dist/web/chunk-L37MTFSG.js +3 -0
  583. package/dist/web/chunk-LB6JPLX2.js +1 -0
  584. package/dist/web/chunk-LNSVDHCI.js +1 -0
  585. package/dist/web/chunk-LVGIY3SO.js +1 -0
  586. package/dist/web/chunk-LXLHIHEN.js +1 -0
  587. package/dist/web/chunk-MC4DFIHG.js +1 -0
  588. package/dist/web/chunk-MVOMVPYB.js +1 -0
  589. package/dist/web/chunk-N6SS4G6S.js +1 -0
  590. package/dist/web/chunk-NTBJG6SJ.js +1 -0
  591. package/dist/web/chunk-NUDB3Q2Y.js +3 -0
  592. package/dist/web/chunk-NZEZCT65.js +1 -0
  593. package/dist/web/chunk-OXEF5E3E.js +1 -0
  594. package/dist/web/chunk-PDN6QYGJ.js +4 -0
  595. package/dist/web/chunk-PGGJPDJG.js +1 -0
  596. package/dist/web/chunk-PUYSJNJR.js +1 -0
  597. package/dist/web/chunk-Q2RVFS45.js +1 -0
  598. package/dist/web/chunk-Q7L6LLAK.js +1 -0
  599. package/dist/web/chunk-QCMKJIWY.js +1 -0
  600. package/dist/web/chunk-QH6CF3M3.js +1 -0
  601. package/dist/web/chunk-QQ5LD7PI.js +1 -0
  602. package/dist/web/chunk-QR6L3KAC.js +1 -0
  603. package/dist/web/chunk-R2DLK4HO.js +1 -0
  604. package/dist/web/chunk-R5W2MDZN.js +1 -0
  605. package/dist/web/chunk-RD6TVPOT.js +1 -0
  606. package/dist/web/chunk-RKY4EJYJ.js +1 -0
  607. package/dist/web/chunk-RONYWVY7.js +1 -0
  608. package/dist/web/chunk-RXKXYF2C.js +1 -0
  609. package/dist/web/chunk-SBWU7JFC.js +1 -0
  610. package/dist/web/chunk-SEXBRGYK.js +1 -0
  611. package/dist/web/chunk-SHPTC4RL.js +1 -0
  612. package/dist/web/chunk-SUZYBYDW.js +1 -0
  613. package/dist/web/chunk-SWKJRNYY.js +1 -0
  614. package/dist/web/chunk-T66XVKGB.js +1 -0
  615. package/dist/web/chunk-T7AZ65JP.js +1 -0
  616. package/dist/web/chunk-TCZDVOHD.js +1 -0
  617. package/dist/web/chunk-TPTITA3V.js +1 -0
  618. package/dist/web/chunk-TR335633.js +1 -0
  619. package/dist/web/chunk-UBOZGQNK.js +1 -0
  620. package/dist/web/chunk-UR5KDXPX.js +1 -0
  621. package/dist/web/chunk-UR6O2GEH.js +1 -0
  622. package/dist/web/chunk-UTNMGWTP.js +1 -0
  623. package/dist/web/chunk-UYC52MBC.js +1 -0
  624. package/dist/web/chunk-VECWMHJP.js +1 -0
  625. package/dist/web/chunk-VUACT35R.js +3 -0
  626. package/dist/web/chunk-VZI7H4SZ.js +1 -0
  627. package/dist/web/chunk-WAI2JMZP.js +1 -0
  628. package/dist/web/chunk-WB6YHOD4.js +1 -0
  629. package/dist/web/chunk-WBT64AWV.js +1 -0
  630. package/dist/web/chunk-WCKHQIYN.js +1 -0
  631. package/dist/web/chunk-WDU3WICG.js +1 -0
  632. package/dist/web/chunk-WFXJIXZE.js +4 -0
  633. package/dist/web/chunk-WLIMNDS3.js +1 -0
  634. package/dist/web/chunk-WTGYRH3Z.js +298 -0
  635. package/dist/web/chunk-WXTCVDTP.js +1 -0
  636. package/dist/web/chunk-X2HTISHL.js +1 -0
  637. package/dist/web/chunk-XCDHWLVH.js +1 -0
  638. package/dist/web/chunk-Y3H6FFUZ.js +1 -0
  639. package/dist/web/chunk-Y4F5ULGJ.js +1 -0
  640. package/dist/web/chunk-YAMRN47K.js +2 -0
  641. package/dist/web/chunk-YEGKAAEE.js +1 -0
  642. package/dist/web/chunk-YM2KU57F.js +1 -0
  643. package/dist/web/chunk-YRERBP6T.js +1 -0
  644. package/dist/web/chunk-ZLV4VCDG.js +3 -0
  645. package/dist/web/chunk-ZTVI5KFF.js +1 -0
  646. package/dist/web/favicon-16.png +0 -0
  647. package/dist/web/favicon-180.png +0 -0
  648. package/dist/web/favicon-32.png +0 -0
  649. package/dist/web/favicon-512.png +0 -0
  650. package/dist/web/favicon-small.svg +15 -0
  651. package/dist/web/favicon.ico +0 -0
  652. package/dist/web/favicon.svg +20 -0
  653. package/dist/web/index.html +145 -0
  654. package/dist/web/main-ESADRXN2.css +1 -0
  655. package/dist/web/main-R53HA54V.js +1 -0
  656. package/dist/web/media/codicon-LN6W7LCM.ttf +0 -0
  657. package/dist/web/styles-KSOPUVDA.css +1 -0
  658. package/dist/web/sw.js +69 -0
  659. package/dist/workflows/condition-evaluator.d.ts +75 -0
  660. package/dist/workflows/condition-evaluator.d.ts.map +1 -0
  661. package/dist/workflows/condition-evaluator.js +282 -0
  662. package/dist/workflows/condition-evaluator.js.map +1 -0
  663. package/dist/workflows/defaults/claude-design-implement.yaml +336 -0
  664. package/dist/workflows/defaults/index.d.ts +26 -0
  665. package/dist/workflows/defaults/index.d.ts.map +1 -0
  666. package/dist/workflows/defaults/index.js +94 -0
  667. package/dist/workflows/defaults/index.js.map +1 -0
  668. package/dist/workflows/defaults/spec-author.yaml +214 -0
  669. package/dist/workflows/defaults/spec-fix.yaml +110 -0
  670. package/dist/workflows/defaults/spec-implement.yaml +150 -0
  671. package/dist/workflows/defaults/spec-relink.yaml +81 -0
  672. package/dist/workflows/defaults/spec-verify.yaml +51 -0
  673. package/dist/workflows/discovery.d.ts +46 -0
  674. package/dist/workflows/discovery.d.ts.map +1 -0
  675. package/dist/workflows/discovery.js +193 -0
  676. package/dist/workflows/discovery.js.map +1 -0
  677. package/dist/workflows/executor.d.ts +83 -0
  678. package/dist/workflows/executor.d.ts.map +1 -0
  679. package/dist/workflows/executor.js +624 -0
  680. package/dist/workflows/executor.js.map +1 -0
  681. package/dist/workflows/runners/approval.d.ts +18 -0
  682. package/dist/workflows/runners/approval.d.ts.map +1 -0
  683. package/dist/workflows/runners/approval.js +34 -0
  684. package/dist/workflows/runners/approval.js.map +1 -0
  685. package/dist/workflows/runners/bash.d.ts +13 -0
  686. package/dist/workflows/runners/bash.d.ts.map +1 -0
  687. package/dist/workflows/runners/bash.js +143 -0
  688. package/dist/workflows/runners/bash.js.map +1 -0
  689. package/dist/workflows/runners/cancel.d.ts +10 -0
  690. package/dist/workflows/runners/cancel.d.ts.map +1 -0
  691. package/dist/workflows/runners/cancel.js +19 -0
  692. package/dist/workflows/runners/cancel.js.map +1 -0
  693. package/dist/workflows/runners/prompt.d.ts +28 -0
  694. package/dist/workflows/runners/prompt.d.ts.map +1 -0
  695. package/dist/workflows/runners/prompt.js +212 -0
  696. package/dist/workflows/runners/prompt.js.map +1 -0
  697. package/dist/workflows/runners/script.d.ts +17 -0
  698. package/dist/workflows/runners/script.d.ts.map +1 -0
  699. package/dist/workflows/runners/script.js +155 -0
  700. package/dist/workflows/runners/script.js.map +1 -0
  701. package/dist/workflows/runners/types.d.ts +51 -0
  702. package/dist/workflows/runners/types.d.ts.map +1 -0
  703. package/dist/workflows/runners/types.js +13 -0
  704. package/dist/workflows/runners/types.js.map +1 -0
  705. package/dist/workflows/schemas/workflow.d.ts +166 -0
  706. package/dist/workflows/schemas/workflow.d.ts.map +1 -0
  707. package/dist/workflows/schemas/workflow.js +437 -0
  708. package/dist/workflows/schemas/workflow.js.map +1 -0
  709. package/hooks/hooks.json +11 -0
  710. package/package.json +7 -3
  711. package/scripts/offline-install.sh +19 -6
  712. package/selectors.json +41 -0
  713. /package/commands/{cg-explore.md → ss-explore.md} +0 -0
  714. /package/commands/{cg-impact.md → ss-impact.md} +0 -0
  715. /package/commands/{cg-relink.md → ss-relink.md} +0 -0
  716. /package/commands/{cg-spec.md → ss-spec.md} +0 -0
  717. /package/commands/{cg-sync.md → ss-sync.md} +0 -0
  718. /package/commands/{cg-trace.md → ss-trace.md} +0 -0
@@ -0,0 +1,416 @@
1
+ "use strict";
2
+ /**
3
+ * SpecShip Installer (Claude Code only).
4
+ *
5
+ * Writes the specship MCP server config + auto-allow permissions into
6
+ * Claude Code at the chosen location (global / local). Uses
7
+ * @clack/prompts for the interactive UI; `runInstallerWithOptions` is
8
+ * the non-interactive entry called from the `--target` / `--yes` CLI
9
+ * flags. (The `--target` flag is preserved for backwards compatibility
10
+ * but only accepts `claude` / `auto` / `all` / `none`.)
11
+ */
12
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ var desc = Object.getOwnPropertyDescriptor(m, k);
15
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
16
+ desc = { enumerable: true, get: function() { return m[k]; } };
17
+ }
18
+ Object.defineProperty(o, k2, desc);
19
+ }) : (function(o, m, k, k2) {
20
+ if (k2 === undefined) k2 = k;
21
+ o[k2] = m[k];
22
+ }));
23
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
24
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
25
+ }) : function(o, v) {
26
+ o["default"] = v;
27
+ });
28
+ var __importStar = (this && this.__importStar) || (function () {
29
+ var ownKeys = function(o) {
30
+ ownKeys = Object.getOwnPropertyNames || function (o) {
31
+ var ar = [];
32
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
33
+ return ar;
34
+ };
35
+ return ownKeys(o);
36
+ };
37
+ return function (mod) {
38
+ if (mod && mod.__esModule) return mod;
39
+ var result = {};
40
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
41
+ __setModuleDefault(result, mod);
42
+ return result;
43
+ };
44
+ })();
45
+ Object.defineProperty(exports, "__esModule", { value: true });
46
+ exports.hasPermissions = exports.hasMcpConfig = exports.writePermissions = exports.writeMcpConfig = void 0;
47
+ exports.runInstaller = runInstaller;
48
+ exports.runInstallerWithOptions = runInstallerWithOptions;
49
+ exports.uninstallTargets = uninstallTargets;
50
+ exports.runUninstaller = runUninstaller;
51
+ exports.offerWatchFallback = offerWatchFallback;
52
+ const child_process_1 = require("child_process");
53
+ const path = __importStar(require("path"));
54
+ const fs = __importStar(require("fs"));
55
+ const claude_1 = require("./targets/claude");
56
+ const glyphs_1 = require("../ui/glyphs");
57
+ // Import the lightweight submodules directly (not the ../sync barrel, which
58
+ // re-exports FileWatcher and would transitively pull in ../extraction — the
59
+ // installer must stay importable even when native modules can't load).
60
+ const watch_policy_1 = require("../sync/watch-policy");
61
+ const git_hooks_1 = require("../sync/git-hooks");
62
+ // Backwards-compat: keep these named exports — downstream code may
63
+ // import them. The shim in `config-writer.ts` continues to re-export
64
+ // them too.
65
+ var config_writer_1 = require("./config-writer");
66
+ Object.defineProperty(exports, "writeMcpConfig", { enumerable: true, get: function () { return config_writer_1.writeMcpConfig; } });
67
+ Object.defineProperty(exports, "writePermissions", { enumerable: true, get: function () { return config_writer_1.writePermissions; } });
68
+ Object.defineProperty(exports, "hasMcpConfig", { enumerable: true, get: function () { return config_writer_1.hasMcpConfig; } });
69
+ Object.defineProperty(exports, "hasPermissions", { enumerable: true, get: function () { return config_writer_1.hasPermissions; } });
70
+ // Dynamic import helper — tsc compiles import() to require() in CJS mode,
71
+ // which fails for ESM-only packages. This bypasses the transformation.
72
+ // eslint-disable-next-line @typescript-eslint/no-implied-eval
73
+ const importESM = new Function('specifier', 'return import(specifier)');
74
+ function formatNumber(n) {
75
+ return n.toLocaleString();
76
+ }
77
+ function getVersion() {
78
+ try {
79
+ const packageJsonPath = path.join(__dirname, '..', '..', 'package.json');
80
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
81
+ return packageJson.version;
82
+ }
83
+ catch {
84
+ return '0.0.0';
85
+ }
86
+ }
87
+ /**
88
+ * Interactive entry — `specship install` with no args runs this.
89
+ */
90
+ async function runInstaller() {
91
+ return runInstallerWithOptions({});
92
+ }
93
+ async function runInstallerWithOptions(opts) {
94
+ const clack = await importESM('@clack/prompts');
95
+ clack.intro(`SpecShip v${getVersion()}`);
96
+ const useDefaults = opts.yes === true;
97
+ // `--target=none` — explicit skip, matches the historical contract.
98
+ if (opts.target === 'none') {
99
+ clack.outro('Skipped — no agent configured.');
100
+ return;
101
+ }
102
+ // Any other value is accepted (claude / auto / all / undefined); we
103
+ // only have one target to write.
104
+ if (opts.target !== undefined
105
+ && !['claude', 'auto', 'all'].includes(opts.target)) {
106
+ throw new Error(`Unknown --target value "${opts.target}". This build is Claude-only; ` +
107
+ `accepted values are 'claude' (default), 'auto', 'all', or 'none'.`);
108
+ }
109
+ // Step 1: install the specship CLI on PATH (always offered; skipped
110
+ // with --yes since CI assumes it's there).
111
+ if (!useDefaults) {
112
+ const shouldInstallGlobally = await clack.confirm({
113
+ message: 'Install the specship CLI on your PATH? (Required so Claude Code can launch the MCP server)',
114
+ initialValue: true,
115
+ });
116
+ if (clack.isCancel(shouldInstallGlobally)) {
117
+ clack.cancel('Installation cancelled.');
118
+ process.exit(0);
119
+ }
120
+ if (shouldInstallGlobally) {
121
+ const s = clack.spinner();
122
+ s.start('Installing specship CLI...');
123
+ try {
124
+ (0, child_process_1.execSync)('npm install -g @selvakumaresra/specship', { stdio: 'pipe', windowsHide: true });
125
+ s.stop('Installed specship CLI on PATH');
126
+ }
127
+ catch {
128
+ s.stop('Could not install (permission denied)');
129
+ clack.log.warn('Try: sudo npm install -g @selvakumaresra/specship');
130
+ }
131
+ }
132
+ else {
133
+ clack.log.info('Skipped CLI install — Claude Code will not be able to launch the MCP server without it');
134
+ }
135
+ }
136
+ // Step 2: global vs local. Default is **local** so the SpecShip MCP
137
+ // surface (tool list, server instructions) only appears in Claude
138
+ // Code sessions opened against projects that have actually opted in.
139
+ // Global is still supported via `--location global`; pick it when you
140
+ // want the tools advertised in every project regardless.
141
+ let location;
142
+ if (opts.location) {
143
+ location = opts.location;
144
+ }
145
+ else if (useDefaults) {
146
+ location = 'local';
147
+ }
148
+ else {
149
+ const sel = await clack.select({
150
+ message: 'Apply Claude Code config to just this project, or all of them?',
151
+ options: [
152
+ { value: 'local', label: 'Just this project (recommended)', hint: './.mcp.json + ./.claude/settings.json' },
153
+ { value: 'global', label: 'All projects', hint: '~/.claude.json + ~/.claude/settings.json' },
154
+ ],
155
+ initialValue: 'local',
156
+ });
157
+ if (clack.isCancel(sel)) {
158
+ clack.cancel('Installation cancelled.');
159
+ process.exit(0);
160
+ }
161
+ location = sel;
162
+ }
163
+ // Step 3: auto-allow permissions.
164
+ let autoAllow;
165
+ if (opts.autoAllow !== undefined) {
166
+ autoAllow = opts.autoAllow;
167
+ }
168
+ else if (useDefaults) {
169
+ autoAllow = true;
170
+ }
171
+ else {
172
+ const ans = await clack.confirm({
173
+ message: 'Auto-allow SpecShip commands? (Skips permission prompts in Claude Code)',
174
+ initialValue: true,
175
+ });
176
+ if (clack.isCancel(ans)) {
177
+ clack.cancel('Installation cancelled.');
178
+ process.exit(0);
179
+ }
180
+ autoAllow = ans;
181
+ }
182
+ // Step 4: write Claude config. Spec-driven steering is on by default;
183
+ // only an explicit `sdd: false` (from `--no-sdd`) skips it.
184
+ const result = claude_1.claudeTarget.install(location, { autoAllow, sdd: opts.sdd });
185
+ for (const file of result.files) {
186
+ const verb = file.action === 'unchanged'
187
+ ? 'Unchanged'
188
+ : file.action === 'created' ? 'Created'
189
+ : file.action === 'removed' ? 'Removed'
190
+ : 'Updated';
191
+ clack.log.success(`Claude Code: ${verb} ${tildify(file.path)}`);
192
+ }
193
+ for (const note of result.notes ?? []) {
194
+ clack.log.info(`Claude Code: ${note}`);
195
+ }
196
+ // Step 5: for local install, initialize the project.
197
+ if (location === 'local') {
198
+ await initializeLocalProject(clack, useDefaults);
199
+ }
200
+ if (location === 'global') {
201
+ clack.note('cd your-project\nspecship init -i', 'Quick start');
202
+ }
203
+ clack.outro('Done! Restart Claude Code to use SpecShip.');
204
+ }
205
+ /**
206
+ * Pure uninstall sweep — no prompts. Exposed (and unit-tested)
207
+ * separately from the clack UI so the aggregation logic can be
208
+ * asserted directly. Safe to call when nothing was installed (target
209
+ * uninstall returns `not-found` actions).
210
+ */
211
+ function uninstallTargets(targets, location) {
212
+ return targets.map((target) => {
213
+ if (!target.supportsLocation(location)) {
214
+ const only = location === 'local' ? 'global' : 'local';
215
+ return {
216
+ id: target.id,
217
+ displayName: target.displayName,
218
+ status: 'unsupported',
219
+ removedPaths: [],
220
+ notes: [`no ${location} config — this agent is ${only}-only`],
221
+ };
222
+ }
223
+ const result = target.uninstall(location);
224
+ const removedPaths = result.files
225
+ .filter((f) => f.action === 'removed')
226
+ .map((f) => f.path);
227
+ return {
228
+ id: target.id,
229
+ displayName: target.displayName,
230
+ status: removedPaths.length > 0 ? 'removed' : 'not-configured',
231
+ removedPaths,
232
+ notes: result.notes ?? [],
233
+ };
234
+ });
235
+ }
236
+ /**
237
+ * Interactive uninstaller — the inverse of `runInstallerWithOptions`.
238
+ * Asks global-vs-local, then sweeps Claude Code's config at that
239
+ * location. Removes only what install wrote (MCP server entry,
240
+ * permissions) — never the `.specship/` index, which `specship
241
+ * uninit` owns.
242
+ */
243
+ async function runUninstaller(opts) {
244
+ const clack = await importESM('@clack/prompts');
245
+ clack.intro(`SpecShip v${getVersion()} — uninstall`);
246
+ const useDefaults = opts.yes === true;
247
+ if (opts.target === 'none') {
248
+ clack.outro('Skipped — nothing to uninstall.');
249
+ return;
250
+ }
251
+ if (opts.target !== undefined
252
+ && !['claude', 'auto', 'all'].includes(opts.target)) {
253
+ throw new Error(`Unknown --target value "${opts.target}". This build is Claude-only; ` +
254
+ `accepted values are 'claude' (default), 'auto', 'all', or 'none'.`);
255
+ }
256
+ // Step 1: location. Default tracks install (now local), so a user
257
+ // who ran `specship install --yes` and `specship uninstall --yes`
258
+ // touches the same files on both sides.
259
+ let location;
260
+ if (opts.location) {
261
+ location = opts.location;
262
+ }
263
+ else if (useDefaults) {
264
+ location = 'local';
265
+ }
266
+ else {
267
+ const sel = await clack.select({
268
+ message: 'Remove SpecShip from just this project, or all of them?',
269
+ options: [
270
+ { value: 'local', label: 'Just this project (local)', hint: './.mcp.json + ./.claude/settings.json' },
271
+ { value: 'global', label: 'All projects (global)', hint: '~/.claude.json + ~/.claude/settings.json' },
272
+ ],
273
+ initialValue: 'local',
274
+ });
275
+ if (clack.isCancel(sel)) {
276
+ clack.cancel('Uninstall cancelled.');
277
+ process.exit(0);
278
+ }
279
+ location = sel;
280
+ }
281
+ // Step 2: sweep + feedback. uninstallTargets always returns one
282
+ // report per input target — the non-null assertion is safe.
283
+ const report = uninstallTargets([claude_1.claudeTarget], location)[0];
284
+ if (report.status === 'removed') {
285
+ for (const p of report.removedPaths) {
286
+ clack.log.success(`Claude Code: removed ${tildify(p)}`);
287
+ }
288
+ }
289
+ else if (report.status === 'not-configured') {
290
+ clack.log.info(`Claude Code: not configured — nothing to remove`);
291
+ }
292
+ else {
293
+ clack.log.info(`Claude Code: skipped — ${report.notes[0] ?? 'unsupported location'}`);
294
+ }
295
+ // Step 3: for local uninstall, the index dir is separate.
296
+ if (location === 'local' && fs.existsSync(path.join(process.cwd(), '.specship'))) {
297
+ clack.log.info('The .specship/ index for this project is still here. Run `specship uninit` to delete it.');
298
+ }
299
+ // Step 4: summary.
300
+ if (report.status === 'removed') {
301
+ clack.outro('Removed SpecShip from Claude Code. Restart it to apply.');
302
+ }
303
+ else {
304
+ clack.outro(`SpecShip was not configured in Claude Code at the ${location} location — nothing to remove.`);
305
+ }
306
+ }
307
+ /**
308
+ * Replace home-directory prefix in a path with `~/` for cleaner log
309
+ * lines. Pure cosmetic.
310
+ */
311
+ function tildify(p) {
312
+ const home = require('os').homedir();
313
+ if (p.startsWith(home + path.sep))
314
+ return '~' + p.substring(home.length);
315
+ return p;
316
+ }
317
+ /**
318
+ * Initialize SpecShip in the current project (for local installs), then
319
+ * offer the watch fallback when the live watcher won't run here (see
320
+ * offerWatchFallback).
321
+ */
322
+ async function initializeLocalProject(clack, useDefaults = false) {
323
+ const projectPath = process.cwd();
324
+ let SpecShip;
325
+ try {
326
+ SpecShip = (await Promise.resolve().then(() => __importStar(require('../index')))).default;
327
+ }
328
+ catch (err) {
329
+ const msg = err instanceof Error ? err.message : String(err);
330
+ clack.log.error(`Could not load native modules: ${msg}`);
331
+ clack.log.info('Skipping project initialization. Run "specship init -i" later.');
332
+ return;
333
+ }
334
+ // Check if already initialized
335
+ if (SpecShip.isInitialized(projectPath)) {
336
+ clack.log.info('SpecShip already initialized in this project');
337
+ await offerWatchFallback(clack, projectPath, { yes: useDefaults });
338
+ return;
339
+ }
340
+ // Initialize
341
+ const cg = await SpecShip.init(projectPath);
342
+ clack.log.success('Created .specship/ directory');
343
+ // Index the project with shimmer progress (worker thread for smooth animation)
344
+ const { createShimmerProgress } = await Promise.resolve().then(() => __importStar(require('../ui/shimmer-progress')));
345
+ process.stdout.write(`\x1b[2m${(0, glyphs_1.getGlyphs)().rail}\x1b[0m\n`);
346
+ const progress = createShimmerProgress();
347
+ const result = await cg.indexAll({
348
+ onProgress: progress.onProgress,
349
+ });
350
+ await progress.stop();
351
+ if (result.filesErrored > 0) {
352
+ clack.log.success(`Indexed ${formatNumber(result.filesIndexed)} files (${formatNumber(result.filesErrored)} failed, ${formatNumber(result.nodesCreated)} symbols)`);
353
+ }
354
+ else {
355
+ clack.log.success(`Indexed ${formatNumber(result.filesIndexed)} files (${formatNumber(result.nodesCreated)} symbols)`);
356
+ }
357
+ cg.close();
358
+ await offerWatchFallback(clack, projectPath, { yes: useDefaults });
359
+ }
360
+ /**
361
+ * When the live file watcher will be disabled for this project (e.g. WSL2
362
+ * /mnt drives, or SPECSHIP_NO_WATCH), the index would silently go stale.
363
+ * Offer to keep it fresh automatically via git hooks instead of manual
364
+ * `specship sync`. No-op on environments where the watcher runs normally.
365
+ */
366
+ async function offerWatchFallback(clack, projectPath, opts = {}) {
367
+ const reason = (0, watch_policy_1.watchDisabledReason)(projectPath);
368
+ if (!reason)
369
+ return; // Watcher runs normally — nothing to set up.
370
+ clack.log.warn(`Live file watching is disabled here — ${reason}.`);
371
+ clack.log.info('Until you re-sync, the SpecShip index stays frozen — it will not pick up edits on its own.');
372
+ // No git repo → the commit-hook path doesn't apply; point at manual sync.
373
+ if (!(0, git_hooks_1.isGitRepo)(projectPath)) {
374
+ clack.log.info('Run `specship sync` after changing files to refresh the index.');
375
+ return;
376
+ }
377
+ // Already wired up on a previous run — confirm and move on without nagging.
378
+ if ((0, git_hooks_1.isSyncHookInstalled)(projectPath)) {
379
+ clack.log.info('Git sync hooks are already installed — the index refreshes after commit / pull / checkout.');
380
+ return;
381
+ }
382
+ let choice;
383
+ if (opts.yes) {
384
+ choice = 'hook';
385
+ }
386
+ else {
387
+ const sel = await clack.select({
388
+ message: 'How should SpecShip keep its index fresh?',
389
+ options: [
390
+ { value: 'hook', label: 'Sync on git commit / pull / checkout', hint: 'installs git hooks (recommended)' },
391
+ { value: 'manual', label: 'I\'ll run `specship sync` myself', hint: 'fully manual' },
392
+ ],
393
+ initialValue: 'hook',
394
+ });
395
+ if (clack.isCancel(sel)) {
396
+ clack.log.info('Skipped — run `specship sync` after changes to refresh the index.');
397
+ return;
398
+ }
399
+ choice = sel;
400
+ }
401
+ if (choice === 'manual') {
402
+ clack.log.info('Run `specship sync` after changing files to refresh the index.');
403
+ return;
404
+ }
405
+ const result = (0, git_hooks_1.installGitSyncHook)(projectPath);
406
+ if (result.installed.length > 0) {
407
+ clack.log.success(`Installed git ${result.installed.join(', ')} hook${result.installed.length > 1 ? 's' : ''} — ` +
408
+ 'the index refreshes in the background after each.');
409
+ clack.log.info('Run `specship sync` anytime to refresh immediately.');
410
+ }
411
+ else {
412
+ clack.log.warn(`Could not install git hooks${result.skipped ? ` (${result.skipped})` : ''}. ` +
413
+ 'Run `specship sync` after changes instead.');
414
+ }
415
+ }
416
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/installer/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Marker constants for the legacy agent-instructions block.
3
+ *
4
+ * Specship used to write a `## SpecShip` usage guide into each
5
+ * agent's instructions file (CLAUDE.md / AGENTS.md / GEMINI.md /
6
+ * specship.mdc / Kiro steering doc). That duplicated the guidance the
7
+ * MCP server already emits in its `initialize` response — every agent
8
+ * read the same playbook twice each turn (issue #529). The installer no
9
+ * longer writes an instructions file; the MCP server instructions in
10
+ * `mcp/server-instructions.ts` are the single source of truth.
11
+ *
12
+ * These markers are retained so install (self-heal on upgrade) and
13
+ * uninstall can find and strip the block a previous install wrote.
14
+ */
15
+ /** Markers used by the marker-based section removal. */
16
+ export declare const SPECSHIP_SECTION_START = "<!-- SPECSHIP_START -->";
17
+ export declare const SPECSHIP_SECTION_END = "<!-- SPECSHIP_END -->";
18
+ /**
19
+ * Markers for the spec-driven-development steering block (SDD-INSTALL-DOC).
20
+ *
21
+ * DISTINCT from the legacy `SPECSHIP_START/END` pair on purpose: this block is
22
+ * a tiny ordering RULE, not the MCP tool playbook that #529 removed. Keeping
23
+ * its own markers lets install/uninstall manage it independently and never
24
+ * resurrects the duplicated-instructions problem.
25
+ */
26
+ export declare const SPECSHIP_SDD_SECTION_START = "<!-- SPECSHIP_SDD_START -->";
27
+ export declare const SPECSHIP_SDD_SECTION_END = "<!-- SPECSHIP_SDD_END -->";
28
+ /**
29
+ * The spec-driven-development steering rule written into the project CLAUDE.md.
30
+ * A repo's CLAUDE.md takes precedence over a skill's own description, so this
31
+ * deterministically flips feature/bug work to spec-author-first. Kept to the
32
+ * ordering rule only — it MUST NOT duplicate the MCP server instructions.
33
+ */
34
+ export declare function getSddRuleBlock(): string;
35
+ //# sourceMappingURL=instructions-template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instructions-template.d.ts","sourceRoot":"","sources":["../../src/installer/instructions-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,wDAAwD;AACxD,eAAO,MAAM,sBAAsB,4BAA4B,CAAC;AAChE,eAAO,MAAM,oBAAoB,0BAA0B,CAAC;AAE5D;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,gCAAgC,CAAC;AACxE,eAAO,MAAM,wBAAwB,8BAA8B,CAAC;AAEpE;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAYxC"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ /**
3
+ * Marker constants for the legacy agent-instructions block.
4
+ *
5
+ * Specship used to write a `## SpecShip` usage guide into each
6
+ * agent's instructions file (CLAUDE.md / AGENTS.md / GEMINI.md /
7
+ * specship.mdc / Kiro steering doc). That duplicated the guidance the
8
+ * MCP server already emits in its `initialize` response — every agent
9
+ * read the same playbook twice each turn (issue #529). The installer no
10
+ * longer writes an instructions file; the MCP server instructions in
11
+ * `mcp/server-instructions.ts` are the single source of truth.
12
+ *
13
+ * These markers are retained so install (self-heal on upgrade) and
14
+ * uninstall can find and strip the block a previous install wrote.
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.SPECSHIP_SDD_SECTION_END = exports.SPECSHIP_SDD_SECTION_START = exports.SPECSHIP_SECTION_END = exports.SPECSHIP_SECTION_START = void 0;
18
+ exports.getSddRuleBlock = getSddRuleBlock;
19
+ /** Markers used by the marker-based section removal. */
20
+ exports.SPECSHIP_SECTION_START = '<!-- SPECSHIP_START -->';
21
+ exports.SPECSHIP_SECTION_END = '<!-- SPECSHIP_END -->';
22
+ /**
23
+ * Markers for the spec-driven-development steering block (SDD-INSTALL-DOC).
24
+ *
25
+ * DISTINCT from the legacy `SPECSHIP_START/END` pair on purpose: this block is
26
+ * a tiny ordering RULE, not the MCP tool playbook that #529 removed. Keeping
27
+ * its own markers lets install/uninstall manage it independently and never
28
+ * resurrects the duplicated-instructions problem.
29
+ */
30
+ exports.SPECSHIP_SDD_SECTION_START = '<!-- SPECSHIP_SDD_START -->';
31
+ exports.SPECSHIP_SDD_SECTION_END = '<!-- SPECSHIP_SDD_END -->';
32
+ /**
33
+ * The spec-driven-development steering rule written into the project CLAUDE.md.
34
+ * A repo's CLAUDE.md takes precedence over a skill's own description, so this
35
+ * deterministically flips feature/bug work to spec-author-first. Kept to the
36
+ * ordering rule only — it MUST NOT duplicate the MCP server instructions.
37
+ */
38
+ function getSddRuleBlock() {
39
+ return [
40
+ exports.SPECSHIP_SDD_SECTION_START,
41
+ '## Spec-driven development (SpecShip)',
42
+ '',
43
+ "For feature or bug work in this repo, FIRST invoke SpecShip's **spec-author**",
44
+ 'to author the spec under `specs/` — before any brainstorming or planning skill.',
45
+ 'Spec-driven development is canonical here: the spec is the contract, and the',
46
+ 'implementation follows from it (`/ss-implement`). This rule intentionally takes',
47
+ "precedence over a skill's own \"use me first\" guidance.",
48
+ exports.SPECSHIP_SDD_SECTION_END,
49
+ ].join('\n');
50
+ }
51
+ //# sourceMappingURL=instructions-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instructions-template.js","sourceRoot":"","sources":["../../src/installer/instructions-template.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAuBH,0CAYC;AAjCD,wDAAwD;AAC3C,QAAA,sBAAsB,GAAG,yBAAyB,CAAC;AACnD,QAAA,oBAAoB,GAAG,uBAAuB,CAAC;AAE5D;;;;;;;GAOG;AACU,QAAA,0BAA0B,GAAG,6BAA6B,CAAC;AAC3D,QAAA,wBAAwB,GAAG,2BAA2B,CAAC;AAEpE;;;;;GAKG;AACH,SAAgB,eAAe;IAC7B,OAAO;QACL,kCAA0B;QAC1B,uCAAuC;QACvC,EAAE;QACF,+EAA+E;QAC/E,iFAAiF;QACjF,8EAA8E;QAC9E,iFAAiF;QACjF,0DAA0D;QAC1D,gCAAwB;KACzB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Claude Code target. Writes:
3
+ *
4
+ * - MCP server entry to `~/.claude.json` (global = user scope, loads
5
+ * in every project) or `./.mcp.json` (local = project scope, the
6
+ * file Claude Code actually reads for a single project). See the
7
+ * scope table at https://code.claude.com/docs/en/mcp.
8
+ * - Permissions to `~/.claude/settings.json` (global) or
9
+ * `./.claude/settings.json` (local), gated on `autoAllow`.
10
+ * - Instructions to `~/.claude/CLAUDE.md` (global) or
11
+ * `./.claude/CLAUDE.md` (local).
12
+ *
13
+ * Earlier versions wrote the local MCP entry to `./.claude.json` — a
14
+ * file Claude Code never reads — so the server silently never loaded
15
+ * until the user manually renamed it to `.mcp.json` (issue #207). We
16
+ * now write `./.mcp.json` and migrate any stale `./.claude.json` entry
17
+ * out of the way on install and uninstall.
18
+ */
19
+ import { AgentTarget, Location, WriteResult } from './types';
20
+ /**
21
+ * Per-file write helpers, exported so the legacy `config-writer.ts`
22
+ * shim can call only the named operation (writeMcpConfig writes ONLY
23
+ * the MCP entry, etc.) instead of `claudeTarget.install()` which
24
+ * writes all three files. Without this split the shims silently
25
+ * cause side effects callers don't expect.
26
+ */
27
+ export declare function writeMcpEntry(loc: Location): WriteResult['files'][number];
28
+ /**
29
+ * Remove stale **pre-0.8** specship auto-sync hooks
30
+ * (`specship mark-dirty` / `specship sync-if-dirty`) from Claude
31
+ * `settings.json`. Safe to call from both `install` (self-heal on
32
+ * upgrade) and `uninstall`. Exported so it can be unit-tested directly.
33
+ */
34
+ export declare function cleanupLegacyHooks(loc: Location): WriteResult['files'][number];
35
+ /**
36
+ * Remove the current-release auto-sync hooks (`specship sync --quiet`)
37
+ * written by `writeHooksEntry`. Uninstall-only — install would
38
+ * destroy its own write if this ran there.
39
+ */
40
+ export declare function cleanupCurrentHooks(loc: Location): WriteResult['files'][number];
41
+ export declare function writePermissionsEntry(loc: Location): WriteResult['files'][number];
42
+ /**
43
+ * Strip the marker-delimited SpecShip block from CLAUDE.md if a prior
44
+ * install wrote one. Specship no longer maintains an instructions file
45
+ * (issue #529) — the MCP server's `initialize` instructions are the
46
+ * single source of truth — so both install (self-heal on upgrade) and
47
+ * uninstall call this. `removeMarkedSection` returns `not-found`/`kept`
48
+ * when there's nothing to strip; the install caller drops those from
49
+ * the report so a fresh install stays quiet.
50
+ */
51
+ export declare function removeInstructionsEntry(loc: Location): WriteResult['files'][number];
52
+ /**
53
+ * Write specship's auto-sync hooks into Claude `settings.json`. Merges
54
+ * idempotently into any user-defined hooks: a matcher group sharing our
55
+ * exact matcher string is reused; sibling matchers / events / events are
56
+ * untouched. Returns `unchanged` when our two hook commands are already
57
+ * present byte-for-byte in the right places.
58
+ *
59
+ * Gated by `install()` on `autoAllow` — same posture as the permissions
60
+ * list. The matching uninstall lives in `cleanupLegacyHooks` (whose
61
+ * matcher predicate covers BOTH the new `specship sync --quiet` form
62
+ * and the legacy `specship mark-dirty`/`sync-if-dirty` forms).
63
+ */
64
+ export declare function writeHooksEntry(loc: Location): WriteResult['files'][number];
65
+ /**
66
+ * Write the spec-driven-development UserPromptSubmit nudge hook into
67
+ * `settings.json` (SDD-INSTALL-DOC, REQ-SDD-002). Same idempotent merge as
68
+ * the auto-sync hooks; gated by `install()` on `opts.sdd` rather than
69
+ * `autoAllow`, since it's part of the SDD steering feature.
70
+ */
71
+ export declare function writeSddHookEntry(loc: Location): WriteResult['files'][number];
72
+ /** Remove the SDD nudge hook written by `writeSddHookEntry`. Uninstall-only. */
73
+ export declare function cleanupSddHooks(loc: Location): WriteResult['files'][number];
74
+ /**
75
+ * Write the spec-driven-development steering rule into the project CLAUDE.md
76
+ * (SDD-INSTALL-DOC, REQ-SDD-001). Idempotent + marker-delimited so the user's
77
+ * surrounding content is untouched and a re-run reports `unchanged`. Distinct
78
+ * markers from the legacy #529 block — this is the ordering rule, not the MCP
79
+ * playbook.
80
+ */
81
+ export declare function writeSddInstructionsEntry(loc: Location): WriteResult['files'][number];
82
+ /** Inverse of `writeSddInstructionsEntry`: strip the SDD rule block. */
83
+ export declare function removeSddInstructionsEntry(loc: Location): WriteResult['files'][number];
84
+ /**
85
+ * Copy our shipped slash commands (commands/ss-*.md) into the user's
86
+ * commands dir (~/.claude/commands/ globally, ./.claude/commands/
87
+ * locally). Per-file idempotent: a destination with identical bytes is
88
+ * reported `unchanged`. Sibling user-written .md files in the same dir
89
+ * are never touched.
90
+ */
91
+ export declare function writeCommandsEntries(loc: Location): WriteResult['files'];
92
+ /**
93
+ * Remove legacy `cg-*.md` slash commands left behind by a pre-v0.2
94
+ * installer. Called from `install()` so an upgrade self-heals (the user
95
+ * doesn't end up with both prefixes side-by-side cluttering their
96
+ * autocomplete) and from `uninstall()` so the legacy files don't
97
+ * persist after specship is removed. Sibling user-written .md files
98
+ * in the same dir are never touched — only the exact filenames in
99
+ * LEGACY_SHIPPED_COMMANDS are candidates.
100
+ */
101
+ export declare function cleanupLegacyCommandsEntries(loc: Location): WriteResult['files'];
102
+ /**
103
+ * Copy our shipped subagent (agents/specship-explorer.md) into the
104
+ * user's agents dir. Same idempotency contract as writeCommandsEntries.
105
+ */
106
+ export declare function writeAgentsEntries(loc: Location): WriteResult['files'];
107
+ /**
108
+ * Inverse of writeCommandsEntries: delete each cg-*.md we shipped, if
109
+ * present. A file the user replaced with their own content is still
110
+ * removed — match the existing uninstall posture for files specship
111
+ * owns (the user can re-add their version after).
112
+ */
113
+ export declare function removeCommandsEntries(loc: Location): WriteResult['files'];
114
+ /** Inverse of writeAgentsEntries. */
115
+ export declare function removeAgentsEntries(loc: Location): WriteResult['files'];
116
+ export declare const claudeTarget: AgentTarget;
117
+ //# sourceMappingURL=claude.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../../src/installer/targets/claude.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,EACL,WAAW,EAGX,QAAQ,EACR,WAAW,EACZ,MAAM,SAAS,CAAC;AA2VjB;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAsBzE;AAgHD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAE9E;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAE/E;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAoBjF;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAInF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAE3E;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAE7E;AAqDD,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,GAAG,EAAE,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAE3E;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAIrF;AAED,wEAAwE;AACxE,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAItF;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAExE;AAED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAOhF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAEtE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAEzE;AAED,qCAAqC;AACrC,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAEvE;AAsBD,eAAO,MAAM,YAAY,EAAE,WAAoC,CAAC"}