@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.
- package/README.md +2 -2
- package/commands/ss-design-implement.md +84 -0
- package/commands/ss-design-loop.md +125 -0
- package/commands/{cg-drifted.md → ss-drifted.md} +2 -2
- package/commands/{cg-fix.md → ss-fix.md} +1 -1
- package/commands/{cg-implement.md → ss-implement.md} +1 -1
- package/commands/ss-spec-author.md +43 -0
- package/commands/ss-spec-review.md +48 -0
- package/dist/bin/node-version-check.d.ts +37 -0
- package/dist/bin/node-version-check.d.ts.map +1 -0
- package/dist/bin/node-version-check.js +79 -0
- package/dist/bin/node-version-check.js.map +1 -0
- package/dist/bin/specship.d.ts +25 -0
- package/dist/bin/specship.d.ts.map +1 -0
- package/dist/bin/specship.js +2085 -0
- package/dist/bin/specship.js.map +1 -0
- package/dist/bin/uninstall.d.ts +13 -0
- package/dist/bin/uninstall.d.ts.map +1 -0
- package/dist/bin/uninstall.js +35 -0
- package/dist/bin/uninstall.js.map +1 -0
- package/dist/context/formatter.d.ts +30 -0
- package/dist/context/formatter.d.ts.map +1 -0
- package/dist/context/formatter.js +263 -0
- package/dist/context/formatter.js.map +1 -0
- package/dist/context/index.d.ts +119 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +1289 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/markers.d.ts +19 -0
- package/dist/context/markers.d.ts.map +1 -0
- package/dist/context/markers.js +22 -0
- package/dist/context/markers.js.map +1 -0
- package/dist/db/index.d.ts +103 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +279 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/migrations.d.ts +44 -0
- package/dist/db/migrations.d.ts.map +1 -0
- package/dist/db/migrations.js +462 -0
- package/dist/db/migrations.js.map +1 -0
- package/dist/db/queries.d.ts +357 -0
- package/dist/db/queries.d.ts.map +1 -0
- package/dist/db/queries.js +1504 -0
- package/dist/db/queries.js.map +1 -0
- package/dist/db/schema.sql +419 -0
- package/dist/db/spec-queries.d.ts +101 -0
- package/dist/db/spec-queries.d.ts.map +1 -0
- package/dist/db/spec-queries.js +675 -0
- package/dist/db/spec-queries.js.map +1 -0
- package/dist/db/sqlite-adapter.d.ts +65 -0
- package/dist/db/sqlite-adapter.d.ts.map +1 -0
- package/dist/db/sqlite-adapter.js +214 -0
- package/dist/db/sqlite-adapter.js.map +1 -0
- package/dist/designer/artifact-store.js +54 -0
- package/dist/designer/browser.js +141 -0
- package/dist/designer/cdp-ensure.js +60 -0
- package/dist/designer/cdp-env.js +18 -0
- package/dist/designer/cdp-trace.js +599 -0
- package/dist/designer/cross-platform.js +74 -0
- package/dist/designer/designer-controller.js +1413 -0
- package/dist/designer/file-panel.js +39 -0
- package/dist/designer/interstitials.js +97 -0
- package/dist/designer/oopif-reader.js +176 -0
- package/dist/designer/package-meta.js +18 -0
- package/dist/designer/preview-host.js +50 -0
- package/dist/designer/repo-root.js +31 -0
- package/dist/designer/run-state.js +353 -0
- package/dist/designer/session-store.js +59 -0
- package/dist/designer/ui-anchors.js +651 -0
- package/dist/directory.d.ts +67 -0
- package/dist/directory.d.ts.map +1 -0
- package/dist/directory.js +267 -0
- package/dist/directory.js.map +1 -0
- package/dist/errors.d.ts +136 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +219 -0
- package/dist/errors.js.map +1 -0
- package/dist/extraction/dfm-extractor.d.ts +31 -0
- package/dist/extraction/dfm-extractor.d.ts.map +1 -0
- package/dist/extraction/dfm-extractor.js +151 -0
- package/dist/extraction/dfm-extractor.js.map +1 -0
- package/dist/extraction/generated-detection.d.ts +30 -0
- package/dist/extraction/generated-detection.d.ts.map +1 -0
- package/dist/extraction/generated-detection.js +80 -0
- package/dist/extraction/generated-detection.js.map +1 -0
- package/dist/extraction/grammars.d.ts +100 -0
- package/dist/extraction/grammars.d.ts.map +1 -0
- package/dist/extraction/grammars.js +426 -0
- package/dist/extraction/grammars.js.map +1 -0
- package/dist/extraction/index.d.ts +138 -0
- package/dist/extraction/index.d.ts.map +1 -0
- package/dist/extraction/index.js +1394 -0
- package/dist/extraction/index.js.map +1 -0
- package/dist/extraction/languages/c-cpp.d.ts +4 -0
- package/dist/extraction/languages/c-cpp.d.ts.map +1 -0
- package/dist/extraction/languages/c-cpp.js +171 -0
- package/dist/extraction/languages/c-cpp.js.map +1 -0
- package/dist/extraction/languages/csharp.d.ts +3 -0
- package/dist/extraction/languages/csharp.d.ts.map +1 -0
- package/dist/extraction/languages/csharp.js +73 -0
- package/dist/extraction/languages/csharp.js.map +1 -0
- package/dist/extraction/languages/dart.d.ts +3 -0
- package/dist/extraction/languages/dart.d.ts.map +1 -0
- package/dist/extraction/languages/dart.js +192 -0
- package/dist/extraction/languages/dart.js.map +1 -0
- package/dist/extraction/languages/go.d.ts +3 -0
- package/dist/extraction/languages/go.d.ts.map +1 -0
- package/dist/extraction/languages/go.js +74 -0
- package/dist/extraction/languages/go.js.map +1 -0
- package/dist/extraction/languages/index.d.ts +10 -0
- package/dist/extraction/languages/index.d.ts.map +1 -0
- package/dist/extraction/languages/index.js +51 -0
- package/dist/extraction/languages/index.js.map +1 -0
- package/dist/extraction/languages/java.d.ts +3 -0
- package/dist/extraction/languages/java.d.ts.map +1 -0
- package/dist/extraction/languages/java.js +70 -0
- package/dist/extraction/languages/java.js.map +1 -0
- package/dist/extraction/languages/javascript.d.ts +3 -0
- package/dist/extraction/languages/javascript.d.ts.map +1 -0
- package/dist/extraction/languages/javascript.js +90 -0
- package/dist/extraction/languages/javascript.js.map +1 -0
- package/dist/extraction/languages/kotlin.d.ts +3 -0
- package/dist/extraction/languages/kotlin.d.ts.map +1 -0
- package/dist/extraction/languages/kotlin.js +259 -0
- package/dist/extraction/languages/kotlin.js.map +1 -0
- package/dist/extraction/languages/lua.d.ts +3 -0
- package/dist/extraction/languages/lua.d.ts.map +1 -0
- package/dist/extraction/languages/lua.js +150 -0
- package/dist/extraction/languages/lua.js.map +1 -0
- package/dist/extraction/languages/luau.d.ts +3 -0
- package/dist/extraction/languages/luau.d.ts.map +1 -0
- package/dist/extraction/languages/luau.js +37 -0
- package/dist/extraction/languages/luau.js.map +1 -0
- package/dist/extraction/languages/objc.d.ts +3 -0
- package/dist/extraction/languages/objc.d.ts.map +1 -0
- package/dist/extraction/languages/objc.js +133 -0
- package/dist/extraction/languages/objc.js.map +1 -0
- package/dist/extraction/languages/pascal.d.ts +3 -0
- package/dist/extraction/languages/pascal.d.ts.map +1 -0
- package/dist/extraction/languages/pascal.js +66 -0
- package/dist/extraction/languages/pascal.js.map +1 -0
- package/dist/extraction/languages/php.d.ts +3 -0
- package/dist/extraction/languages/php.d.ts.map +1 -0
- package/dist/extraction/languages/php.js +107 -0
- package/dist/extraction/languages/php.js.map +1 -0
- package/dist/extraction/languages/python.d.ts +3 -0
- package/dist/extraction/languages/python.d.ts.map +1 -0
- package/dist/extraction/languages/python.js +56 -0
- package/dist/extraction/languages/python.js.map +1 -0
- package/dist/extraction/languages/ruby.d.ts +3 -0
- package/dist/extraction/languages/ruby.d.ts.map +1 -0
- package/dist/extraction/languages/ruby.js +114 -0
- package/dist/extraction/languages/ruby.js.map +1 -0
- package/dist/extraction/languages/rust.d.ts +3 -0
- package/dist/extraction/languages/rust.d.ts.map +1 -0
- package/dist/extraction/languages/rust.js +109 -0
- package/dist/extraction/languages/rust.js.map +1 -0
- package/dist/extraction/languages/scala.d.ts +3 -0
- package/dist/extraction/languages/scala.d.ts.map +1 -0
- package/dist/extraction/languages/scala.js +139 -0
- package/dist/extraction/languages/scala.js.map +1 -0
- package/dist/extraction/languages/swift.d.ts +3 -0
- package/dist/extraction/languages/swift.d.ts.map +1 -0
- package/dist/extraction/languages/swift.js +91 -0
- package/dist/extraction/languages/swift.js.map +1 -0
- package/dist/extraction/languages/typescript.d.ts +3 -0
- package/dist/extraction/languages/typescript.d.ts.map +1 -0
- package/dist/extraction/languages/typescript.js +129 -0
- package/dist/extraction/languages/typescript.js.map +1 -0
- package/dist/extraction/liquid-extractor.d.ts +52 -0
- package/dist/extraction/liquid-extractor.d.ts.map +1 -0
- package/dist/extraction/liquid-extractor.js +313 -0
- package/dist/extraction/liquid-extractor.js.map +1 -0
- package/dist/extraction/mybatis-extractor.d.ts +48 -0
- package/dist/extraction/mybatis-extractor.d.ts.map +1 -0
- package/dist/extraction/mybatis-extractor.js +198 -0
- package/dist/extraction/mybatis-extractor.js.map +1 -0
- package/dist/extraction/parse-worker.d.ts +8 -0
- package/dist/extraction/parse-worker.d.ts.map +1 -0
- package/dist/extraction/parse-worker.js +94 -0
- package/dist/extraction/parse-worker.js.map +1 -0
- package/dist/extraction/specs/markdown-spec-extractor.d.ts +59 -0
- package/dist/extraction/specs/markdown-spec-extractor.d.ts.map +1 -0
- package/dist/extraction/specs/markdown-spec-extractor.js +327 -0
- package/dist/extraction/specs/markdown-spec-extractor.js.map +1 -0
- package/dist/extraction/specs/types.d.ts +39 -0
- package/dist/extraction/specs/types.d.ts.map +1 -0
- package/dist/extraction/specs/types.js +8 -0
- package/dist/extraction/specs/types.js.map +1 -0
- package/dist/extraction/svelte-extractor.d.ts +56 -0
- package/dist/extraction/svelte-extractor.d.ts.map +1 -0
- package/dist/extraction/svelte-extractor.js +272 -0
- package/dist/extraction/svelte-extractor.js.map +1 -0
- package/dist/extraction/tree-sitter-helpers.d.ts +28 -0
- package/dist/extraction/tree-sitter-helpers.d.ts.map +1 -0
- package/dist/extraction/tree-sitter-helpers.js +103 -0
- package/dist/extraction/tree-sitter-helpers.js.map +1 -0
- package/dist/extraction/tree-sitter-types.d.ts +193 -0
- package/dist/extraction/tree-sitter-types.d.ts.map +1 -0
- package/dist/extraction/tree-sitter-types.js +10 -0
- package/dist/extraction/tree-sitter-types.js.map +1 -0
- package/dist/extraction/tree-sitter.d.ts +317 -0
- package/dist/extraction/tree-sitter.d.ts.map +1 -0
- package/dist/extraction/tree-sitter.js +3092 -0
- package/dist/extraction/tree-sitter.js.map +1 -0
- package/dist/extraction/vue-extractor.d.ts +51 -0
- package/dist/extraction/vue-extractor.d.ts.map +1 -0
- package/dist/extraction/vue-extractor.js +251 -0
- package/dist/extraction/vue-extractor.js.map +1 -0
- package/dist/extraction/wasm/tree-sitter-lua.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-luau.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-scala.wasm +0 -0
- package/dist/extraction/wasm-runtime-flags.d.ts +38 -0
- package/dist/extraction/wasm-runtime-flags.d.ts.map +1 -0
- package/dist/extraction/wasm-runtime-flags.js +106 -0
- package/dist/extraction/wasm-runtime-flags.js.map +1 -0
- package/dist/graph/index.d.ts +8 -0
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +13 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/graph/queries.d.ts +106 -0
- package/dist/graph/queries.d.ts.map +1 -0
- package/dist/graph/queries.js +366 -0
- package/dist/graph/queries.js.map +1 -0
- package/dist/graph/traversal.d.ts +127 -0
- package/dist/graph/traversal.d.ts.map +1 -0
- package/dist/graph/traversal.js +531 -0
- package/dist/graph/traversal.js.map +1 -0
- package/dist/index.d.ts +551 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1165 -0
- package/dist/index.js.map +1 -0
- package/dist/installer/config-writer.d.ts +28 -0
- package/dist/installer/config-writer.d.ts.map +1 -0
- package/dist/installer/config-writer.js +91 -0
- package/dist/installer/config-writer.js.map +1 -0
- package/dist/installer/index.d.ts +92 -0
- package/dist/installer/index.d.ts.map +1 -0
- package/dist/installer/index.js +416 -0
- package/dist/installer/index.js.map +1 -0
- package/dist/installer/instructions-template.d.ts +35 -0
- package/dist/installer/instructions-template.d.ts.map +1 -0
- package/dist/installer/instructions-template.js +51 -0
- package/dist/installer/instructions-template.js.map +1 -0
- package/dist/installer/targets/claude.d.ts +117 -0
- package/dist/installer/targets/claude.d.ts.map +1 -0
- package/dist/installer/targets/claude.js +736 -0
- package/dist/installer/targets/claude.js.map +1 -0
- package/dist/installer/targets/registry.d.ts +19 -0
- package/dist/installer/targets/registry.d.ts.map +1 -0
- package/dist/installer/targets/registry.js +31 -0
- package/dist/installer/targets/registry.js.map +1 -0
- package/dist/installer/targets/shared.d.ts +76 -0
- package/dist/installer/targets/shared.d.ts.map +1 -0
- package/dist/installer/targets/shared.js +256 -0
- package/dist/installer/targets/shared.js.map +1 -0
- package/dist/installer/targets/types.d.ts +84 -0
- package/dist/installer/targets/types.d.ts.map +1 -0
- package/dist/installer/targets/types.js +12 -0
- package/dist/installer/targets/types.js.map +1 -0
- package/dist/isolation/worktree.d.ts +65 -0
- package/dist/isolation/worktree.d.ts.map +1 -0
- package/dist/isolation/worktree.js +231 -0
- package/dist/isolation/worktree.js.map +1 -0
- package/dist/mcp/daemon-paths.d.ts +46 -0
- package/dist/mcp/daemon-paths.d.ts.map +1 -0
- package/dist/mcp/daemon-paths.js +125 -0
- package/dist/mcp/daemon-paths.js.map +1 -0
- package/dist/mcp/daemon.d.ts +161 -0
- package/dist/mcp/daemon.d.ts.map +1 -0
- package/dist/mcp/daemon.js +403 -0
- package/dist/mcp/daemon.js.map +1 -0
- package/dist/mcp/designer-tools.d.ts +33 -0
- package/dist/mcp/designer-tools.d.ts.map +1 -0
- package/dist/mcp/designer-tools.js +313 -0
- package/dist/mcp/designer-tools.js.map +1 -0
- package/dist/mcp/engine.d.ts +105 -0
- package/dist/mcp/engine.d.ts.map +1 -0
- package/dist/mcp/engine.js +270 -0
- package/dist/mcp/engine.js.map +1 -0
- package/dist/mcp/index.d.ts +112 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +477 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/proxy.d.ts +81 -0
- package/dist/mcp/proxy.d.ts.map +1 -0
- package/dist/mcp/proxy.js +510 -0
- package/dist/mcp/proxy.js.map +1 -0
- package/dist/mcp/server-instructions.d.ts +18 -0
- package/dist/mcp/server-instructions.d.ts.map +1 -0
- package/dist/mcp/server-instructions.js +77 -0
- package/dist/mcp/server-instructions.js.map +1 -0
- package/dist/mcp/session.d.ts +77 -0
- package/dist/mcp/session.d.ts.map +1 -0
- package/dist/mcp/session.js +294 -0
- package/dist/mcp/session.js.map +1 -0
- package/dist/mcp/spec-tools.d.ts +39 -0
- package/dist/mcp/spec-tools.d.ts.map +1 -0
- package/dist/mcp/spec-tools.js +326 -0
- package/dist/mcp/spec-tools.js.map +1 -0
- package/dist/mcp/tools.d.ts +404 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +3087 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/mcp/transport.d.ts +188 -0
- package/dist/mcp/transport.d.ts.map +1 -0
- package/dist/mcp/transport.js +343 -0
- package/dist/mcp/transport.js.map +1 -0
- package/dist/mcp/version.d.ts +19 -0
- package/dist/mcp/version.d.ts.map +1 -0
- package/dist/mcp/version.js +71 -0
- package/dist/mcp/version.js.map +1 -0
- package/dist/resolution/callback-synthesizer.d.ts +10 -0
- package/dist/resolution/callback-synthesizer.d.ts.map +1 -0
- package/dist/resolution/callback-synthesizer.js +1300 -0
- package/dist/resolution/callback-synthesizer.js.map +1 -0
- package/dist/resolution/frameworks/cargo-workspace.d.ts +18 -0
- package/dist/resolution/frameworks/cargo-workspace.d.ts.map +1 -0
- package/dist/resolution/frameworks/cargo-workspace.js +225 -0
- package/dist/resolution/frameworks/cargo-workspace.js.map +1 -0
- package/dist/resolution/frameworks/csharp.d.ts +8 -0
- package/dist/resolution/frameworks/csharp.d.ts.map +1 -0
- package/dist/resolution/frameworks/csharp.js +241 -0
- package/dist/resolution/frameworks/csharp.js.map +1 -0
- package/dist/resolution/frameworks/drupal.d.ts +51 -0
- package/dist/resolution/frameworks/drupal.d.ts.map +1 -0
- package/dist/resolution/frameworks/drupal.js +367 -0
- package/dist/resolution/frameworks/drupal.js.map +1 -0
- package/dist/resolution/frameworks/expo-modules.d.ts +3 -0
- package/dist/resolution/frameworks/expo-modules.d.ts.map +1 -0
- package/dist/resolution/frameworks/expo-modules.js +143 -0
- package/dist/resolution/frameworks/expo-modules.js.map +1 -0
- package/dist/resolution/frameworks/express.d.ts +8 -0
- package/dist/resolution/frameworks/express.d.ts.map +1 -0
- package/dist/resolution/frameworks/express.js +308 -0
- package/dist/resolution/frameworks/express.js.map +1 -0
- package/dist/resolution/frameworks/fabric.d.ts +3 -0
- package/dist/resolution/frameworks/fabric.d.ts.map +1 -0
- package/dist/resolution/frameworks/fabric.js +354 -0
- package/dist/resolution/frameworks/fabric.js.map +1 -0
- package/dist/resolution/frameworks/go.d.ts +8 -0
- package/dist/resolution/frameworks/go.d.ts.map +1 -0
- package/dist/resolution/frameworks/go.js +161 -0
- package/dist/resolution/frameworks/go.js.map +1 -0
- package/dist/resolution/frameworks/index.d.ts +48 -0
- package/dist/resolution/frameworks/index.d.ts.map +1 -0
- package/dist/resolution/frameworks/index.js +161 -0
- package/dist/resolution/frameworks/index.js.map +1 -0
- package/dist/resolution/frameworks/java.d.ts +8 -0
- package/dist/resolution/frameworks/java.d.ts.map +1 -0
- package/dist/resolution/frameworks/java.js +504 -0
- package/dist/resolution/frameworks/java.js.map +1 -0
- package/dist/resolution/frameworks/laravel.d.ts +13 -0
- package/dist/resolution/frameworks/laravel.d.ts.map +1 -0
- package/dist/resolution/frameworks/laravel.js +257 -0
- package/dist/resolution/frameworks/laravel.js.map +1 -0
- package/dist/resolution/frameworks/nestjs.d.ts +26 -0
- package/dist/resolution/frameworks/nestjs.d.ts.map +1 -0
- package/dist/resolution/frameworks/nestjs.js +698 -0
- package/dist/resolution/frameworks/nestjs.js.map +1 -0
- package/dist/resolution/frameworks/play.d.ts +19 -0
- package/dist/resolution/frameworks/play.d.ts.map +1 -0
- package/dist/resolution/frameworks/play.js +111 -0
- package/dist/resolution/frameworks/play.js.map +1 -0
- package/dist/resolution/frameworks/python.d.ts +10 -0
- package/dist/resolution/frameworks/python.d.ts.map +1 -0
- package/dist/resolution/frameworks/python.js +396 -0
- package/dist/resolution/frameworks/python.js.map +1 -0
- package/dist/resolution/frameworks/react-native.d.ts +3 -0
- package/dist/resolution/frameworks/react-native.d.ts.map +1 -0
- package/dist/resolution/frameworks/react-native.js +360 -0
- package/dist/resolution/frameworks/react-native.js.map +1 -0
- package/dist/resolution/frameworks/react.d.ts +8 -0
- package/dist/resolution/frameworks/react.d.ts.map +1 -0
- package/dist/resolution/frameworks/react.js +365 -0
- package/dist/resolution/frameworks/react.js.map +1 -0
- package/dist/resolution/frameworks/ruby.d.ts +8 -0
- package/dist/resolution/frameworks/ruby.d.ts.map +1 -0
- package/dist/resolution/frameworks/ruby.js +302 -0
- package/dist/resolution/frameworks/ruby.js.map +1 -0
- package/dist/resolution/frameworks/rust.d.ts +8 -0
- package/dist/resolution/frameworks/rust.d.ts.map +1 -0
- package/dist/resolution/frameworks/rust.js +304 -0
- package/dist/resolution/frameworks/rust.js.map +1 -0
- package/dist/resolution/frameworks/svelte.d.ts +9 -0
- package/dist/resolution/frameworks/svelte.d.ts.map +1 -0
- package/dist/resolution/frameworks/svelte.js +249 -0
- package/dist/resolution/frameworks/svelte.js.map +1 -0
- package/dist/resolution/frameworks/swift-objc.d.ts +37 -0
- package/dist/resolution/frameworks/swift-objc.d.ts.map +1 -0
- package/dist/resolution/frameworks/swift-objc.js +252 -0
- package/dist/resolution/frameworks/swift-objc.js.map +1 -0
- package/dist/resolution/frameworks/swift.d.ts +10 -0
- package/dist/resolution/frameworks/swift.d.ts.map +1 -0
- package/dist/resolution/frameworks/swift.js +400 -0
- package/dist/resolution/frameworks/swift.js.map +1 -0
- package/dist/resolution/frameworks/vue.d.ts +9 -0
- package/dist/resolution/frameworks/vue.d.ts.map +1 -0
- package/dist/resolution/frameworks/vue.js +306 -0
- package/dist/resolution/frameworks/vue.js.map +1 -0
- package/dist/resolution/go-module.d.ts +26 -0
- package/dist/resolution/go-module.d.ts.map +1 -0
- package/dist/resolution/go-module.js +78 -0
- package/dist/resolution/go-module.js.map +1 -0
- package/dist/resolution/import-resolver.d.ts +68 -0
- package/dist/resolution/import-resolver.d.ts.map +1 -0
- package/dist/resolution/import-resolver.js +1275 -0
- package/dist/resolution/import-resolver.js.map +1 -0
- package/dist/resolution/index.d.ts +117 -0
- package/dist/resolution/index.d.ts.map +1 -0
- package/dist/resolution/index.js +895 -0
- package/dist/resolution/index.js.map +1 -0
- package/dist/resolution/lru-cache.d.ts +24 -0
- package/dist/resolution/lru-cache.d.ts.map +1 -0
- package/dist/resolution/lru-cache.js +62 -0
- package/dist/resolution/lru-cache.js.map +1 -0
- package/dist/resolution/name-matcher.d.ts +32 -0
- package/dist/resolution/name-matcher.d.ts.map +1 -0
- package/dist/resolution/name-matcher.js +596 -0
- package/dist/resolution/name-matcher.js.map +1 -0
- package/dist/resolution/path-aliases.d.ts +68 -0
- package/dist/resolution/path-aliases.d.ts.map +1 -0
- package/dist/resolution/path-aliases.js +238 -0
- package/dist/resolution/path-aliases.js.map +1 -0
- package/dist/resolution/spec-link-resolver.d.ts +103 -0
- package/dist/resolution/spec-link-resolver.d.ts.map +1 -0
- package/dist/resolution/spec-link-resolver.js +259 -0
- package/dist/resolution/spec-link-resolver.js.map +1 -0
- package/dist/resolution/strip-comments.d.ts +27 -0
- package/dist/resolution/strip-comments.d.ts.map +1 -0
- package/dist/resolution/strip-comments.js +441 -0
- package/dist/resolution/strip-comments.js.map +1 -0
- package/dist/resolution/swift-objc-bridge.d.ts +134 -0
- package/dist/resolution/swift-objc-bridge.d.ts.map +1 -0
- package/dist/resolution/swift-objc-bridge.js +256 -0
- package/dist/resolution/swift-objc-bridge.js.map +1 -0
- package/dist/resolution/types.d.ts +216 -0
- package/dist/resolution/types.d.ts.map +1 -0
- package/dist/resolution/types.js +8 -0
- package/dist/resolution/types.js.map +1 -0
- package/dist/resolution/workspace-packages.d.ts +48 -0
- package/dist/resolution/workspace-packages.d.ts.map +1 -0
- package/dist/resolution/workspace-packages.js +208 -0
- package/dist/resolution/workspace-packages.js.map +1 -0
- package/dist/search/query-parser.d.ts +57 -0
- package/dist/search/query-parser.d.ts.map +1 -0
- package/dist/search/query-parser.js +177 -0
- package/dist/search/query-parser.js.map +1 -0
- package/dist/search/query-utils.d.ts +71 -0
- package/dist/search/query-utils.d.ts.map +1 -0
- package/dist/search/query-utils.js +380 -0
- package/dist/search/query-utils.js.map +1 -0
- package/dist/server/cli.js +152 -0
- package/dist/server/index.js +12 -0
- package/dist/server/ingest/index.js +18 -0
- package/dist/server/ingest/ingestor.js +506 -0
- package/dist/server/ingest/parser.js +104 -0
- package/dist/server/ingest/pricing.js +78 -0
- package/dist/server/ingest/types.js +9 -0
- package/dist/server/ingest/watcher.js +77 -0
- package/dist/server/package.json +3 -0
- package/dist/server/project-registry.js +101 -0
- package/dist/server/routes/claude.js +868 -0
- package/dist/server/routes/graph.js +211 -0
- package/dist/server/routes/memory.js +272 -0
- package/dist/server/routes/projects.js +197 -0
- package/dist/server/routes/spec.js +265 -0
- package/dist/server/routes/status.js +112 -0
- package/dist/server/routes/workflow.js +212 -0
- package/dist/server/server.js +206 -0
- package/dist/server/static-handler.js +87 -0
- package/dist/sync/git-hooks.d.ts +45 -0
- package/dist/sync/git-hooks.d.ts.map +1 -0
- package/dist/sync/git-hooks.js +225 -0
- package/dist/sync/git-hooks.js.map +1 -0
- package/dist/sync/index.d.ts +19 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +35 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/watch-policy.d.ts +48 -0
- package/dist/sync/watch-policy.d.ts.map +1 -0
- package/dist/sync/watch-policy.js +124 -0
- package/dist/sync/watch-policy.js.map +1 -0
- package/dist/sync/watcher.d.ts +283 -0
- package/dist/sync/watcher.d.ts.map +1 -0
- package/dist/sync/watcher.js +606 -0
- package/dist/sync/watcher.js.map +1 -0
- package/dist/sync/worktree.d.ts +54 -0
- package/dist/sync/worktree.d.ts.map +1 -0
- package/dist/sync/worktree.js +137 -0
- package/dist/sync/worktree.js.map +1 -0
- package/dist/types.d.ts +623 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +108 -0
- package/dist/types.js.map +1 -0
- package/dist/ui/glyphs.d.ts +42 -0
- package/dist/ui/glyphs.d.ts.map +1 -0
- package/dist/ui/glyphs.js +78 -0
- package/dist/ui/glyphs.js.map +1 -0
- package/dist/ui/shimmer-progress.d.ts +11 -0
- package/dist/ui/shimmer-progress.d.ts.map +1 -0
- package/dist/ui/shimmer-progress.js +90 -0
- package/dist/ui/shimmer-progress.js.map +1 -0
- package/dist/ui/shimmer-worker.d.ts +2 -0
- package/dist/ui/shimmer-worker.d.ts.map +1 -0
- package/dist/ui/shimmer-worker.js +118 -0
- package/dist/ui/shimmer-worker.js.map +1 -0
- package/dist/ui/types.d.ts +17 -0
- package/dist/ui/types.d.ts.map +1 -0
- package/dist/ui/types.js +3 -0
- package/dist/ui/types.js.map +1 -0
- package/dist/utils.d.ts +205 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +549 -0
- package/dist/utils.js.map +1 -0
- package/dist/web/chunk-2AJCHB7P.js +1 -0
- package/dist/web/chunk-2CPLUFCH.js +2 -0
- package/dist/web/chunk-2GBEK2GM.js +1 -0
- package/dist/web/chunk-2I7L37NS.js +1 -0
- package/dist/web/chunk-2NAWAJB5.js +1 -0
- package/dist/web/chunk-2OJBIPE4.js +1 -0
- package/dist/web/chunk-2YUJNZ2Y.js +6 -0
- package/dist/web/chunk-3E2WB6D5.js +1 -0
- package/dist/web/chunk-3EBFYSCH.js +2 -0
- package/dist/web/chunk-3QCQ4BXS.js +1 -0
- package/dist/web/chunk-42XVAQ6I.js +1 -0
- package/dist/web/chunk-45QHGCB4.js +17 -0
- package/dist/web/chunk-4IMMPEYM.js +1 -0
- package/dist/web/chunk-4TJQJPCZ.js +1 -0
- package/dist/web/chunk-4WZIHTPC.js +1 -0
- package/dist/web/chunk-4YVSYOSD.js +1 -0
- package/dist/web/chunk-5BQIOYKW.js +1 -0
- package/dist/web/chunk-5HGWHUJA.js +1 -0
- package/dist/web/chunk-5Y244R4G.js +1 -0
- package/dist/web/chunk-6RRDPT5Z.js +1 -0
- package/dist/web/chunk-6VKB2ZWM.js +1 -0
- package/dist/web/chunk-7DMFVTU4.js +1 -0
- package/dist/web/chunk-7RNS77UP.js +1 -0
- package/dist/web/chunk-7SMPKVEP.js +1 -0
- package/dist/web/chunk-A5R3MJMO.js +1 -0
- package/dist/web/chunk-ASZ77FMZ.js +1 -0
- package/dist/web/chunk-AZJVTPLU.js +1 -0
- package/dist/web/chunk-B3YPFY6A.js +1 -0
- package/dist/web/chunk-BLBRMCN2.js +1 -0
- package/dist/web/chunk-BMIAXD2V.js +2 -0
- package/dist/web/chunk-BUXWEHIY.js +1 -0
- package/dist/web/chunk-BYZFQSM6.js +1 -0
- package/dist/web/chunk-D5OCNEJA.js +2 -0
- package/dist/web/chunk-DLQPZWSI.css +1 -0
- package/dist/web/chunk-DTRN7FZR.js +1 -0
- package/dist/web/chunk-DYRFLPJA.js +1 -0
- package/dist/web/chunk-E3J3CXR5.js +1 -0
- package/dist/web/chunk-E44X4RH2.js +1 -0
- package/dist/web/chunk-E73OX2P7.js +1 -0
- package/dist/web/chunk-EAXRKDLV.js +1 -0
- package/dist/web/chunk-EBKKDHYI.js +1 -0
- package/dist/web/chunk-EE7V7Q5P.js +1 -0
- package/dist/web/chunk-EKY2FUHU.js +1 -0
- package/dist/web/chunk-EMGMOEVR.js +1 -0
- package/dist/web/chunk-EP6XOPXH.js +1 -0
- package/dist/web/chunk-ESGDLJOJ.js +1 -0
- package/dist/web/chunk-ETJG7NCY.js +1 -0
- package/dist/web/chunk-EUUEFEDI.js +1 -0
- package/dist/web/chunk-FGNZDHTL.js +11 -0
- package/dist/web/chunk-FHZHD2ZG.js +1 -0
- package/dist/web/chunk-FIJW2UNJ.js +1 -0
- package/dist/web/chunk-FMV5PXRC.js +5 -0
- package/dist/web/chunk-G7VZT5KB.js +3 -0
- package/dist/web/chunk-GR72OOCN.js +1 -0
- package/dist/web/chunk-GRZYXPSO.js +7 -0
- package/dist/web/chunk-GWPVKJIY.js +1 -0
- package/dist/web/chunk-GYGPS3AN.js +1 -0
- package/dist/web/chunk-H7AF7YS4.js +1 -0
- package/dist/web/chunk-HDZDQILN.js +1 -0
- package/dist/web/chunk-HMK6UO6N.js +1 -0
- package/dist/web/chunk-HZA6NEAB.js +1 -0
- package/dist/web/chunk-IHEE5NYJ.js +1 -0
- package/dist/web/chunk-ISNEBICW.js +1 -0
- package/dist/web/chunk-J2GZVLHH.js +1 -0
- package/dist/web/chunk-JTFXTIPE.js +903 -0
- package/dist/web/chunk-L37MTFSG.js +3 -0
- package/dist/web/chunk-LB6JPLX2.js +1 -0
- package/dist/web/chunk-LNSVDHCI.js +1 -0
- package/dist/web/chunk-LVGIY3SO.js +1 -0
- package/dist/web/chunk-LXLHIHEN.js +1 -0
- package/dist/web/chunk-MC4DFIHG.js +1 -0
- package/dist/web/chunk-MVOMVPYB.js +1 -0
- package/dist/web/chunk-N6SS4G6S.js +1 -0
- package/dist/web/chunk-NTBJG6SJ.js +1 -0
- package/dist/web/chunk-NUDB3Q2Y.js +3 -0
- package/dist/web/chunk-NZEZCT65.js +1 -0
- package/dist/web/chunk-OXEF5E3E.js +1 -0
- package/dist/web/chunk-PDN6QYGJ.js +4 -0
- package/dist/web/chunk-PGGJPDJG.js +1 -0
- package/dist/web/chunk-PUYSJNJR.js +1 -0
- package/dist/web/chunk-Q2RVFS45.js +1 -0
- package/dist/web/chunk-Q7L6LLAK.js +1 -0
- package/dist/web/chunk-QCMKJIWY.js +1 -0
- package/dist/web/chunk-QH6CF3M3.js +1 -0
- package/dist/web/chunk-QQ5LD7PI.js +1 -0
- package/dist/web/chunk-QR6L3KAC.js +1 -0
- package/dist/web/chunk-R2DLK4HO.js +1 -0
- package/dist/web/chunk-R5W2MDZN.js +1 -0
- package/dist/web/chunk-RD6TVPOT.js +1 -0
- package/dist/web/chunk-RKY4EJYJ.js +1 -0
- package/dist/web/chunk-RONYWVY7.js +1 -0
- package/dist/web/chunk-RXKXYF2C.js +1 -0
- package/dist/web/chunk-SBWU7JFC.js +1 -0
- package/dist/web/chunk-SEXBRGYK.js +1 -0
- package/dist/web/chunk-SHPTC4RL.js +1 -0
- package/dist/web/chunk-SUZYBYDW.js +1 -0
- package/dist/web/chunk-SWKJRNYY.js +1 -0
- package/dist/web/chunk-T66XVKGB.js +1 -0
- package/dist/web/chunk-T7AZ65JP.js +1 -0
- package/dist/web/chunk-TCZDVOHD.js +1 -0
- package/dist/web/chunk-TPTITA3V.js +1 -0
- package/dist/web/chunk-TR335633.js +1 -0
- package/dist/web/chunk-UBOZGQNK.js +1 -0
- package/dist/web/chunk-UR5KDXPX.js +1 -0
- package/dist/web/chunk-UR6O2GEH.js +1 -0
- package/dist/web/chunk-UTNMGWTP.js +1 -0
- package/dist/web/chunk-UYC52MBC.js +1 -0
- package/dist/web/chunk-VECWMHJP.js +1 -0
- package/dist/web/chunk-VUACT35R.js +3 -0
- package/dist/web/chunk-VZI7H4SZ.js +1 -0
- package/dist/web/chunk-WAI2JMZP.js +1 -0
- package/dist/web/chunk-WB6YHOD4.js +1 -0
- package/dist/web/chunk-WBT64AWV.js +1 -0
- package/dist/web/chunk-WCKHQIYN.js +1 -0
- package/dist/web/chunk-WDU3WICG.js +1 -0
- package/dist/web/chunk-WFXJIXZE.js +4 -0
- package/dist/web/chunk-WLIMNDS3.js +1 -0
- package/dist/web/chunk-WTGYRH3Z.js +298 -0
- package/dist/web/chunk-WXTCVDTP.js +1 -0
- package/dist/web/chunk-X2HTISHL.js +1 -0
- package/dist/web/chunk-XCDHWLVH.js +1 -0
- package/dist/web/chunk-Y3H6FFUZ.js +1 -0
- package/dist/web/chunk-Y4F5ULGJ.js +1 -0
- package/dist/web/chunk-YAMRN47K.js +2 -0
- package/dist/web/chunk-YEGKAAEE.js +1 -0
- package/dist/web/chunk-YM2KU57F.js +1 -0
- package/dist/web/chunk-YRERBP6T.js +1 -0
- package/dist/web/chunk-ZLV4VCDG.js +3 -0
- package/dist/web/chunk-ZTVI5KFF.js +1 -0
- package/dist/web/favicon-16.png +0 -0
- package/dist/web/favicon-180.png +0 -0
- package/dist/web/favicon-32.png +0 -0
- package/dist/web/favicon-512.png +0 -0
- package/dist/web/favicon-small.svg +15 -0
- package/dist/web/favicon.ico +0 -0
- package/dist/web/favicon.svg +20 -0
- package/dist/web/index.html +145 -0
- package/dist/web/main-ESADRXN2.css +1 -0
- package/dist/web/main-R53HA54V.js +1 -0
- package/dist/web/media/codicon-LN6W7LCM.ttf +0 -0
- package/dist/web/styles-KSOPUVDA.css +1 -0
- package/dist/web/sw.js +69 -0
- package/dist/workflows/condition-evaluator.d.ts +75 -0
- package/dist/workflows/condition-evaluator.d.ts.map +1 -0
- package/dist/workflows/condition-evaluator.js +282 -0
- package/dist/workflows/condition-evaluator.js.map +1 -0
- package/dist/workflows/defaults/claude-design-implement.yaml +336 -0
- package/dist/workflows/defaults/index.d.ts +26 -0
- package/dist/workflows/defaults/index.d.ts.map +1 -0
- package/dist/workflows/defaults/index.js +94 -0
- package/dist/workflows/defaults/index.js.map +1 -0
- package/dist/workflows/defaults/spec-author.yaml +214 -0
- package/dist/workflows/defaults/spec-fix.yaml +110 -0
- package/dist/workflows/defaults/spec-implement.yaml +150 -0
- package/dist/workflows/defaults/spec-relink.yaml +81 -0
- package/dist/workflows/defaults/spec-verify.yaml +51 -0
- package/dist/workflows/discovery.d.ts +46 -0
- package/dist/workflows/discovery.d.ts.map +1 -0
- package/dist/workflows/discovery.js +193 -0
- package/dist/workflows/discovery.js.map +1 -0
- package/dist/workflows/executor.d.ts +83 -0
- package/dist/workflows/executor.d.ts.map +1 -0
- package/dist/workflows/executor.js +624 -0
- package/dist/workflows/executor.js.map +1 -0
- package/dist/workflows/runners/approval.d.ts +18 -0
- package/dist/workflows/runners/approval.d.ts.map +1 -0
- package/dist/workflows/runners/approval.js +34 -0
- package/dist/workflows/runners/approval.js.map +1 -0
- package/dist/workflows/runners/bash.d.ts +13 -0
- package/dist/workflows/runners/bash.d.ts.map +1 -0
- package/dist/workflows/runners/bash.js +143 -0
- package/dist/workflows/runners/bash.js.map +1 -0
- package/dist/workflows/runners/cancel.d.ts +10 -0
- package/dist/workflows/runners/cancel.d.ts.map +1 -0
- package/dist/workflows/runners/cancel.js +19 -0
- package/dist/workflows/runners/cancel.js.map +1 -0
- package/dist/workflows/runners/prompt.d.ts +28 -0
- package/dist/workflows/runners/prompt.d.ts.map +1 -0
- package/dist/workflows/runners/prompt.js +212 -0
- package/dist/workflows/runners/prompt.js.map +1 -0
- package/dist/workflows/runners/script.d.ts +17 -0
- package/dist/workflows/runners/script.d.ts.map +1 -0
- package/dist/workflows/runners/script.js +155 -0
- package/dist/workflows/runners/script.js.map +1 -0
- package/dist/workflows/runners/types.d.ts +51 -0
- package/dist/workflows/runners/types.d.ts.map +1 -0
- package/dist/workflows/runners/types.js +13 -0
- package/dist/workflows/runners/types.js.map +1 -0
- package/dist/workflows/schemas/workflow.d.ts +166 -0
- package/dist/workflows/schemas/workflow.d.ts.map +1 -0
- package/dist/workflows/schemas/workflow.js +437 -0
- package/dist/workflows/schemas/workflow.js.map +1 -0
- package/hooks/hooks.json +11 -0
- package/package.json +7 -3
- package/scripts/offline-install.sh +19 -6
- package/selectors.json +41 -0
- /package/commands/{cg-explore.md → ss-explore.md} +0 -0
- /package/commands/{cg-impact.md → ss-impact.md} +0 -0
- /package/commands/{cg-relink.md → ss-relink.md} +0 -0
- /package/commands/{cg-spec.md → ss-spec.md} +0 -0
- /package/commands/{cg-sync.md → ss-sync.md} +0 -0
- /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":";AAAA;;;;;;;;;GASG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuEH,oCAEC;AAED,0DAqHC;AAsCD,4CA2BC;AASD,wCAmEC;AAwED,gDA4DC;AA/cD,iDAAyC;AACzC,2CAA6B;AAC7B,uCAAyB;AACzB,6CAAgD;AAEhD,yCAAyC;AACzC,4EAA4E;AAC5E,4EAA4E;AAC5E,uEAAuE;AACvE,uDAA2D;AAC3D,iDAAuF;AAEvF,mEAAmE;AACnE,qEAAqE;AACrE,YAAY;AACZ,iDAKyB;AAJvB,+GAAA,cAAc,OAAA;AACd,iHAAA,gBAAgB,OAAA;AAChB,6GAAA,YAAY,OAAA;AACZ,+GAAA,cAAc,OAAA;AAIhB,0EAA0E;AAC1E,uEAAuE;AACvE,8DAA8D;AAC9D,MAAM,SAAS,GAAG,IAAI,QAAQ,CAAC,WAAW,EAAE,0BAA0B,CACL,CAAC;AAElE,SAAS,YAAY,CAAC,CAAS;IAC7B,OAAO,CAAC,CAAC,cAAc,EAAE,CAAC;AAC5B,CAAC;AAED,SAAS,UAAU;IACjB,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QACzE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1E,OAAO,WAAW,CAAC,OAAO,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAyBD;;GAEG;AACI,KAAK,UAAU,YAAY;IAChC,OAAO,uBAAuB,CAAC,EAAE,CAAC,CAAC;AACrC,CAAC;AAEM,KAAK,UAAU,uBAAuB,CAAC,IAAyB;IACrE,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAEhD,KAAK,CAAC,KAAK,CAAC,aAAa,UAAU,EAAE,EAAE,CAAC,CAAC;IAEzC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC;IAEtC,oEAAoE;IACpE,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC3B,KAAK,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IACD,oEAAoE;IACpE,iCAAiC;IACjC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;WACtB,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CACb,2BAA2B,IAAI,CAAC,MAAM,gCAAgC;YACtE,mEAAmE,CACpE,CAAC;IACJ,CAAC;IAED,oEAAoE;IACpE,2CAA2C;IAC3C,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,qBAAqB,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC;YAChD,OAAO,EAAE,4FAA4F;YACrG,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QACH,IAAI,KAAK,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;YAC1C,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,qBAAqB,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;YAC1B,CAAC,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;YACtC,IAAI,CAAC;gBACH,IAAA,wBAAQ,EAAC,yCAAyC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC1F,CAAC,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;YAC3C,CAAC;YAAC,MAAM,CAAC;gBACP,CAAC,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;gBAChD,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,wFAAwF,CAAC,CAAC;QAC3G,CAAC;IACH,CAAC;IAED,oEAAoE;IACpE,kEAAkE;IAClE,qEAAqE;IACrE,sEAAsE;IACtE,yDAAyD;IACzD,IAAI,QAAkB,CAAC;IACvB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC3B,CAAC;SAAM,IAAI,WAAW,EAAE,CAAC;QACvB,QAAQ,GAAG,OAAO,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;YAC7B,OAAO,EAAE,gEAAgE;YACzE,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,OAAiB,EAAE,KAAK,EAAE,iCAAiC,EAAE,IAAI,EAAE,uCAAuC,EAAE;gBACrH,EAAE,KAAK,EAAE,QAAiB,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,0CAA0C,EAAE;aACtG;YACD,YAAY,EAAE,OAAgB;SAC/B,CAAC,CAAC;QACH,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,QAAQ,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,kCAAkC;IAClC,IAAI,SAAkB,CAAC;IACvB,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACjC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IAC7B,CAAC;SAAM,IAAI,WAAW,EAAE,CAAC;QACvB,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC;YAC9B,OAAO,EAAE,yEAAyE;YAClF,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QACH,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,SAAS,GAAG,GAAG,CAAC;IAClB,CAAC;IAED,sEAAsE;IACtE,4DAA4D;IAC5D,MAAM,MAAM,GAAG,qBAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5E,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,KAAK,WAAW;YACtC,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS;gBACrC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS;oBACrC,CAAC,CAAC,SAAS,CAAC;QAClB,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;QACtC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,qDAAqD;IACrD,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,MAAM,sBAAsB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,mCAAmC,EAAE,aAAa,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;AAC5D,CAAC;AAgCD;;;;;GAKG;AACH,SAAgB,gBAAgB,CAC9B,OAA+B,EAC/B,QAAkB;IAElB,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAC5B,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,GAAa,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;YACjE,OAAO;gBACL,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,MAAM,EAAE,aAAsB;gBAC9B,YAAY,EAAE,EAAE;gBAChB,KAAK,EAAE,CAAC,MAAM,QAAQ,2BAA2B,IAAI,OAAO,CAAC;aAC9D,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK;aAC9B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC;aACrC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO;YACL,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,MAAM,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAE,SAAmB,CAAC,CAAC,CAAE,gBAA0B;YACpF,YAAY;YACZ,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;SAC1B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,cAAc,CAAC,IAA2B;IAC9D,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAEhD,KAAK,CAAC,KAAK,CAAC,aAAa,UAAU,EAAE,cAAc,CAAC,CAAC;IAErD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC;IAEtC,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC3B,KAAK,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAC/C,OAAO;IACT,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;WACtB,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CACb,2BAA2B,IAAI,CAAC,MAAM,gCAAgC;YACtE,mEAAmE,CACpE,CAAC;IACJ,CAAC;IAED,kEAAkE;IAClE,kEAAkE;IAClE,wCAAwC;IACxC,IAAI,QAAkB,CAAC;IACvB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC3B,CAAC;SAAM,IAAI,WAAW,EAAE,CAAC;QACvB,QAAQ,GAAG,OAAO,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;YAC7B,OAAO,EAAE,yDAAyD;YAClE,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,OAAiB,EAAE,KAAK,EAAE,2BAA2B,EAAE,IAAI,EAAE,uCAAuC,EAAE;gBAC/G,EAAE,KAAK,EAAE,QAAiB,EAAE,KAAK,EAAE,uBAAuB,EAAE,IAAI,EAAE,0CAA0C,EAAE;aAC/G;YACD,YAAY,EAAE,OAAgB;SAC/B,CAAC,CAAC;QACH,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,QAAQ,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,gEAAgE;IAChE,4DAA4D;IAC5D,MAAM,MAAM,GAAG,gBAAgB,CAAC,CAAC,qBAAY,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAE,CAAC;IAC9D,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACpC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,wBAAwB,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;SAAM,IAAI,MAAM,CAAC,MAAM,KAAK,gBAAgB,EAAE,CAAC;QAC9C,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IACpE,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,0BAA0B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,sBAAsB,EAAE,CAAC,CAAC;IACxF,CAAC;IAED,0DAA0D;IAC1D,IAAI,QAAQ,KAAK,OAAO,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;QACjF,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,0FAA0F,CAAC,CAAC;IAC7G,CAAC;IAED,mBAAmB;IACnB,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,KAAK,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;IACzE,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,KAAK,CAAC,qDAAqD,QAAQ,gCAAgC,CAAC,CAAC;IAC7G,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,OAAO,CAAC,CAAS;IACxB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;IACrC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzE,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,sBAAsB,CACnC,KAAsC,EACtC,WAAW,GAAG,KAAK;IAEnB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAElC,IAAI,QAA2C,CAAC;IAChD,IAAI,CAAC;QACH,QAAQ,GAAG,CAAC,wDAAa,UAAU,GAAC,CAAC,CAAC,OAAO,CAAC;IAChD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,kCAAkC,GAAG,EAAE,CAAC,CAAC;QACzD,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;QACjF,OAAO;IACT,CAAC;IAED,+BAA+B;IAC/B,IAAI,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;QACxC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QAC/D,MAAM,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;QACnE,OAAO;IACT,CAAC;IAED,aAAa;IACb,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5C,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAElD,+EAA+E;IAC/E,MAAM,EAAE,qBAAqB,EAAE,GAAG,wDAAa,wBAAwB,GAAC,CAAC;IACzE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,IAAA,kBAAS,GAAE,CAAC,IAAI,WAAW,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,qBAAqB,EAAE,CAAC;IAEzC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC;QAC/B,UAAU,EAAE,QAAQ,CAAC,UAAU;KAChC,CAAC,CAAC;IAEH,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEtB,IAAI,MAAM,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IACtK,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IACzH,CAAC;IAED,EAAE,CAAC,KAAK,EAAE,CAAC;IAEX,MAAM,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;AACrE,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,kBAAkB,CACtC,KAAsC,EACtC,WAAmB,EACnB,OAA0B,EAAE;IAE5B,MAAM,MAAM,GAAG,IAAA,kCAAmB,EAAC,WAAW,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,6CAA6C;IAElE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,yCAAyC,MAAM,GAAG,CAAC,CAAC;IACnE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,4FAA4F,CAAC,CAAC;IAE7G,0EAA0E;IAC1E,IAAI,CAAC,IAAA,qBAAS,EAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;QACjF,OAAO;IACT,CAAC;IAED,4EAA4E;IAC5E,IAAI,IAAA,+BAAmB,EAAC,WAAW,CAAC,EAAE,CAAC;QACrC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,4FAA4F,CAAC,CAAC;QAC7G,OAAO;IACT,CAAC;IAED,IAAI,MAAyB,CAAC;IAC9B,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,MAAM,CAAC;IAClB,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;YAC7B,OAAO,EAAE,2CAA2C;YACpD,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,MAAe,EAAE,KAAK,EAAE,sCAAsC,EAAE,IAAI,EAAE,kCAAkC,EAAE;gBACnH,EAAE,KAAK,EAAE,QAAiB,EAAE,KAAK,EAAE,kCAAkC,EAAE,IAAI,EAAE,cAAc,EAAE;aAC9F;YACD,YAAY,EAAE,MAAe;SAC9B,CAAC,CAAC;QACH,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;YACpF,OAAO;QACT,CAAC;QACD,MAAM,GAAG,GAAG,CAAC;IACf,CAAC;IAED,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;QACjF,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,8BAAkB,EAAC,WAAW,CAAC,CAAC;IAC/C,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,KAAK,CAAC,GAAG,CAAC,OAAO,CACf,iBAAiB,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK;YAC/F,mDAAmD,CACpD,CAAC;QACF,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;IACxE,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,GAAG,CAAC,IAAI,CACZ,8BAA8B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI;YAC9E,4CAA4C,CAC7C,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -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"}
|