@inharness-ai/claude4spec 1.0.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/.claude/skills/c4s-brief-implementer/SKILL.md +105 -0
- package/.claude/skills/c4s-spec-reader/SKILL.md +46 -0
- package/CHANGELOG.md +19 -0
- package/LICENSE +21 -0
- package/README.md +50 -0
- package/dist/bin/agent-md-template.d.ts +1 -0
- package/dist/bin/agent-md-template.js +76 -0
- package/dist/bin/agent-md-template.js.map +1 -0
- package/dist/bin/bootstrap-template.d.ts +1 -0
- package/dist/bin/bootstrap-template.js +12 -0
- package/dist/bin/bootstrap-template.js.map +1 -0
- package/dist/bin/c4s/args.d.ts +13 -0
- package/dist/bin/c4s/args.js +82 -0
- package/dist/bin/c4s/args.js.map +1 -0
- package/dist/bin/c4s/commands/_meta.d.ts +2 -0
- package/dist/bin/c4s/commands/_meta.js +13 -0
- package/dist/bin/c4s/commands/_meta.js.map +1 -0
- package/dist/bin/c4s/commands/catalog.d.ts +2 -0
- package/dist/bin/c4s/commands/catalog.js +38 -0
- package/dist/bin/c4s/commands/catalog.js.map +1 -0
- package/dist/bin/c4s/commands/detail.d.ts +2 -0
- package/dist/bin/c4s/commands/detail.js +22 -0
- package/dist/bin/c4s/commands/detail.js.map +1 -0
- package/dist/bin/c4s/commands/element-list.d.ts +2 -0
- package/dist/bin/c4s/commands/element-list.js +23 -0
- package/dist/bin/c4s/commands/element-list.js.map +1 -0
- package/dist/bin/c4s/commands/inline-mention.d.ts +2 -0
- package/dist/bin/c4s/commands/inline-mention.js +22 -0
- package/dist/bin/c4s/commands/inline-mention.js.map +1 -0
- package/dist/bin/c4s/commands/list-slugs.d.ts +2 -0
- package/dist/bin/c4s/commands/list-slugs.js +16 -0
- package/dist/bin/c4s/commands/list-slugs.js.map +1 -0
- package/dist/bin/c4s/commands/list-tags.d.ts +2 -0
- package/dist/bin/c4s/commands/list-tags.js +13 -0
- package/dist/bin/c4s/commands/list-tags.js.map +1 -0
- package/dist/bin/c4s/commands/resolve.d.ts +2 -0
- package/dist/bin/c4s/commands/resolve.js +40 -0
- package/dist/bin/c4s/commands/resolve.js.map +1 -0
- package/dist/bin/c4s/commands/section-ref.d.ts +2 -0
- package/dist/bin/c4s/commands/section-ref.js +25 -0
- package/dist/bin/c4s/commands/section-ref.js.map +1 -0
- package/dist/bin/c4s/commands/single-element.d.ts +2 -0
- package/dist/bin/c4s/commands/single-element.js +22 -0
- package/dist/bin/c4s/commands/single-element.js.map +1 -0
- package/dist/bin/c4s/commands/tagged-list-mixed.d.ts +2 -0
- package/dist/bin/c4s/commands/tagged-list-mixed.js +39 -0
- package/dist/bin/c4s/commands/tagged-list-mixed.js.map +1 -0
- package/dist/bin/c4s/commands/tagged-list.d.ts +2 -0
- package/dist/bin/c4s/commands/tagged-list.js +24 -0
- package/dist/bin/c4s/commands/tagged-list.js.map +1 -0
- package/dist/bin/c4s/context.d.ts +12 -0
- package/dist/bin/c4s/context.js +27 -0
- package/dist/bin/c4s/context.js.map +1 -0
- package/dist/bin/c4s/errors.d.ts +6 -0
- package/dist/bin/c4s/errors.js +11 -0
- package/dist/bin/c4s/errors.js.map +1 -0
- package/dist/bin/c4s/output.d.ts +4 -0
- package/dist/bin/c4s/output.js +57 -0
- package/dist/bin/c4s/output.js.map +1 -0
- package/dist/bin/c4s/project.d.ts +1 -0
- package/dist/bin/c4s/project.js +23 -0
- package/dist/bin/c4s/project.js.map +1 -0
- package/dist/bin/c4s/type-validation.d.ts +3 -0
- package/dist/bin/c4s/type-validation.js +11 -0
- package/dist/bin/c4s/type-validation.js.map +1 -0
- package/dist/bin/c4s-mcp.d.ts +2 -0
- package/dist/bin/c4s-mcp.js +118 -0
- package/dist/bin/c4s-mcp.js.map +1 -0
- package/dist/bin/c4s.d.ts +2 -0
- package/dist/bin/c4s.js +134 -0
- package/dist/bin/c4s.js.map +1 -0
- package/dist/bin/claude4spec.d.ts +2 -0
- package/dist/bin/claude4spec.js +132 -0
- package/dist/bin/claude4spec.js.map +1 -0
- package/dist/bin/gitignore.d.ts +1 -0
- package/dist/bin/gitignore.js +44 -0
- package/dist/bin/gitignore.js.map +1 -0
- package/dist/client/assets/arc-D8brDDag.js +1 -0
- package/dist/client/assets/architectureDiagram-3BPJPVTR-Bmh1uTQZ.js +36 -0
- package/dist/client/assets/blockDiagram-GPEHLZMM-55jaVWwd.js +132 -0
- package/dist/client/assets/c4Diagram-AAUBKEIU-Dxm0tLsZ.js +10 -0
- package/dist/client/assets/channel-ArVcv4Yl.js +1 -0
- package/dist/client/assets/chunk-2J33WTMH-vDJ1slcJ.js +1 -0
- package/dist/client/assets/chunk-4BX2VUAB-DP6CC-Qn.js +1 -0
- package/dist/client/assets/chunk-55IACEB6-SgOSJYkL.js +1 -0
- package/dist/client/assets/chunk-727SXJPM-BtRfbjBO.js +206 -0
- package/dist/client/assets/chunk-AQP2D5EJ-yIRaTgFg.js +231 -0
- package/dist/client/assets/chunk-FMBD7UC4-B_VD4t8N.js +15 -0
- package/dist/client/assets/chunk-ND2GUHAM-BvJdtX82.js +1 -0
- package/dist/client/assets/chunk-QZHKN3VN-BLNWKymD.js +1 -0
- package/dist/client/assets/classDiagram-4FO5ZUOK-B3nmPR7w.js +1 -0
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-B3nmPR7w.js +1 -0
- package/dist/client/assets/cose-bilkent-S5V4N54A-BQyA-r-y.js +1 -0
- package/dist/client/assets/cytoscape.esm-D_LviqZs.js +331 -0
- package/dist/client/assets/dagre-BM42HDAG-CAh0mTzA.js +4 -0
- package/dist/client/assets/defaultLocale-DX6XiGOO.js +1 -0
- package/dist/client/assets/diagram-2AECGRRQ-C83TGK4o.js +43 -0
- package/dist/client/assets/diagram-5GNKFQAL-2L6uowvf.js +10 -0
- package/dist/client/assets/diagram-KO2AKTUF-Cj5n4jdq.js +3 -0
- package/dist/client/assets/diagram-LMA3HP47-Bp5SDMjg.js +24 -0
- package/dist/client/assets/diagram-OG6HWLK6-cFsDQ8Qk.js +24 -0
- package/dist/client/assets/erDiagram-TEJ5UH35-D8G5xpg3.js +85 -0
- package/dist/client/assets/flowDiagram-I6XJVG4X-CuNudlCD.js +162 -0
- package/dist/client/assets/ganttDiagram-6RSMTGT7-CtFlsB15.js +292 -0
- package/dist/client/assets/gitGraphDiagram-PVQCEYII-h66Tso4O.js +106 -0
- package/dist/client/assets/graph-CAnANduQ.js +1 -0
- package/dist/client/assets/index-CZOpb3O7.css +1 -0
- package/dist/client/assets/index-D5ljIkCJ.js +727 -0
- package/dist/client/assets/index-aJE-l7h7.js +11 -0
- package/dist/client/assets/index-aPVup1Re.js +51 -0
- package/dist/client/assets/infoDiagram-5YYISTIA-CO_BLfuW.js +2 -0
- package/dist/client/assets/init-Gi6I4Gst.js +1 -0
- package/dist/client/assets/ishikawaDiagram-YF4QCWOH-D4rSRnQA.js +70 -0
- package/dist/client/assets/journeyDiagram-JHISSGLW-GyHI6dB8.js +139 -0
- package/dist/client/assets/kanban-definition-UN3LZRKU-CrH33WLe.js +89 -0
- package/dist/client/assets/katex-CQk2-UhE.js +257 -0
- package/dist/client/assets/layout-DGIYPm2g.js +1 -0
- package/dist/client/assets/linear-Dh1OyvSm.js +1 -0
- package/dist/client/assets/mermaid.core-C45sMDhS.js +309 -0
- package/dist/client/assets/mindmap-definition-RKZ34NQL-Bgwb0vwA.js +96 -0
- package/dist/client/assets/ordinal-Cboi1Yqb.js +1 -0
- package/dist/client/assets/pieDiagram-4H26LBE5-l9cCpVfG.js +30 -0
- package/dist/client/assets/quadrantDiagram-W4KKPZXB-BCPSUbC3.js +7 -0
- package/dist/client/assets/requirementDiagram-4Y6WPE33-TEGOe-vV.js +84 -0
- package/dist/client/assets/sankeyDiagram-5OEKKPKP-C69pv_7D.js +40 -0
- package/dist/client/assets/sequenceDiagram-3UESZ5HK-arinzeCk.js +162 -0
- package/dist/client/assets/stateDiagram-AJRCARHV-C2YENpmw.js +1 -0
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-CS6ocDH6.js +1 -0
- package/dist/client/assets/timeline-definition-PNZ67QCA-h5qtI99f.js +120 -0
- package/dist/client/assets/vennDiagram-CIIHVFJN-CnuK75Ut.js +34 -0
- package/dist/client/assets/wardley-L42UT6IY-B4bQ0Xyy.js +173 -0
- package/dist/client/assets/wardleyDiagram-YWT4CUSO-apV8olQc.js +78 -0
- package/dist/client/assets/xychartDiagram-2RQKCTM6-OTP6zeEy.js +7 -0
- package/dist/client/index.html +19 -0
- package/dist/server/config.d.ts +59 -0
- package/dist/server/config.js +211 -0
- package/dist/server/config.js.map +1 -0
- package/dist/server/core/plugin-host/cross-cutting.d.ts +8 -0
- package/dist/server/core/plugin-host/cross-cutting.js +14 -0
- package/dist/server/core/plugin-host/cross-cutting.js.map +1 -0
- package/dist/server/core/plugin-host/entities-router.d.ts +11 -0
- package/dist/server/core/plugin-host/entities-router.js +77 -0
- package/dist/server/core/plugin-host/entities-router.js.map +1 -0
- package/dist/server/core/plugin-host/host.d.ts +11 -0
- package/dist/server/core/plugin-host/host.js +128 -0
- package/dist/server/core/plugin-host/host.js.map +1 -0
- package/dist/server/core/plugin-host/legacy-adapter.d.ts +31 -0
- package/dist/server/core/plugin-host/legacy-adapter.js +88 -0
- package/dist/server/core/plugin-host/legacy-adapter.js.map +1 -0
- package/dist/server/core/plugin-host/serialization-engine.d.ts +35 -0
- package/dist/server/core/plugin-host/serialization-engine.js +132 -0
- package/dist/server/core/plugin-host/serialization-engine.js.map +1 -0
- package/dist/server/core/plugin-host/types.d.ts +143 -0
- package/dist/server/core/plugin-host/types.js +10 -0
- package/dist/server/core/plugin-host/types.js.map +1 -0
- package/dist/server/db/fixups/backfill-plan-titles.d.ts +2 -0
- package/dist/server/db/fixups/backfill-plan-titles.js +22 -0
- package/dist/server/db/fixups/backfill-plan-titles.js.map +1 -0
- package/dist/server/db/index.d.ts +6 -0
- package/dist/server/db/index.js +26 -0
- package/dist/server/db/index.js.map +1 -0
- package/dist/server/db/migrate.d.ts +2 -0
- package/dist/server/db/migrate.js +33 -0
- package/dist/server/db/migrate.js.map +1 -0
- package/dist/server/db/migrations/000_init.sql +7 -0
- package/dist/server/db/migrations/001_endpoint.sql +51 -0
- package/dist/server/db/migrations/002_dto.sql +23 -0
- package/dist/server/db/migrations/003_drop_endpoint_body.sql +5 -0
- package/dist/server/db/migrations/004_drop_module_and_status.sql +31 -0
- package/dist/server/db/migrations/005_chat.sql +23 -0
- package/dist/server/db/migrations/006_database_table.sql +10 -0
- package/dist/server/db/migrations/007_sections.sql +30 -0
- package/dist/server/db/migrations/008_subagent_task.sql +20 -0
- package/dist/server/db/migrations/009_chat_todo_snapshot.sql +4 -0
- package/dist/server/db/migrations/010_chat_plan_mode.sql +5 -0
- package/dist/server/db/migrations/011_chat_initial_system_prompt.sql +4 -0
- package/dist/server/db/migrations/012_chat_message_status.sql +5 -0
- package/dist/server/db/migrations/013_chat_usage_snapshot.sql +7 -0
- package/dist/server/db/migrations/014_plans.sql +33 -0
- package/dist/server/db/migrations/015_dto_examples.sql +4 -0
- package/dist/server/db/migrations/016_ui_view.sql +10 -0
- package/dist/server/db/migrations/017_entity_version_m17.sql +23 -0
- package/dist/server/db/migrations/018_page_version.sql +20 -0
- package/dist/server/db/migrations/019_spec_release.sql +13 -0
- package/dist/server/db/migrations/020_drop_plan_status.sql +10 -0
- package/dist/server/db/migrations/021_plans_n1.sql +36 -0
- package/dist/server/db/migrations/022_brief_chat_columns.sql +23 -0
- package/dist/server/db/migrations/023_page_version_kind.sql +26 -0
- package/dist/server/db/migrations/024_chat_context_size.sql +10 -0
- package/dist/server/db/migrations/025_ac.sql +19 -0
- package/dist/server/db/migrations/026_ac_seed.sql +75 -0
- package/dist/server/db/migrations/027_page_version_change_summary.sql +10 -0
- package/dist/server/db/readonly.d.ts +12 -0
- package/dist/server/db/readonly.js +32 -0
- package/dist/server/db/readonly.js.map +1 -0
- package/dist/server/domain/raw-entity-reader.d.ts +76 -0
- package/dist/server/domain/raw-entity-reader.js +240 -0
- package/dist/server/domain/raw-entity-reader.js.map +1 -0
- package/dist/server/entities/ac/mcp-server.d.ts +10 -0
- package/dist/server/entities/ac/mcp-server.js +154 -0
- package/dist/server/entities/ac/mcp-server.js.map +1 -0
- package/dist/server/entities/ac/plugin.d.ts +2 -0
- package/dist/server/entities/ac/plugin.js +33 -0
- package/dist/server/entities/ac/plugin.js.map +1 -0
- package/dist/server/entities/ac/routes.d.ts +4 -0
- package/dist/server/entities/ac/routes.js +92 -0
- package/dist/server/entities/ac/routes.js.map +1 -0
- package/dist/server/entities/ac/serializer.d.ts +13 -0
- package/dist/server/entities/ac/serializer.js +124 -0
- package/dist/server/entities/ac/serializer.js.map +1 -0
- package/dist/server/entities/ac/services.d.ts +35 -0
- package/dist/server/entities/ac/services.js +261 -0
- package/dist/server/entities/ac/services.js.map +1 -0
- package/dist/server/entities/ac/system-prompt.d.ts +2 -0
- package/dist/server/entities/ac/system-prompt.js +18 -0
- package/dist/server/entities/ac/system-prompt.js.map +1 -0
- package/dist/server/entities/database-table/mcp-server.d.ts +10 -0
- package/dist/server/entities/database-table/mcp-server.js +184 -0
- package/dist/server/entities/database-table/mcp-server.js.map +1 -0
- package/dist/server/entities/database-table/plugin.d.ts +2 -0
- package/dist/server/entities/database-table/plugin.js +33 -0
- package/dist/server/entities/database-table/plugin.js.map +1 -0
- package/dist/server/entities/database-table/routes.d.ts +5 -0
- package/dist/server/entities/database-table/routes.js +86 -0
- package/dist/server/entities/database-table/routes.js.map +1 -0
- package/dist/server/entities/database-table/serializer.d.ts +12 -0
- package/dist/server/entities/database-table/serializer.js +192 -0
- package/dist/server/entities/database-table/serializer.js.map +1 -0
- package/dist/server/entities/database-table/services.d.ts +45 -0
- package/dist/server/entities/database-table/services.js +323 -0
- package/dist/server/entities/database-table/services.js.map +1 -0
- package/dist/server/entities/database-table/system-prompt.d.ts +2 -0
- package/dist/server/entities/database-table/system-prompt.js +11 -0
- package/dist/server/entities/database-table/system-prompt.js.map +1 -0
- package/dist/server/entities/dto/mcp-server.d.ts +10 -0
- package/dist/server/entities/dto/mcp-server.js +141 -0
- package/dist/server/entities/dto/mcp-server.js.map +1 -0
- package/dist/server/entities/dto/plugin.d.ts +2 -0
- package/dist/server/entities/dto/plugin.js +33 -0
- package/dist/server/entities/dto/plugin.js.map +1 -0
- package/dist/server/entities/dto/routes.d.ts +4 -0
- package/dist/server/entities/dto/routes.js +74 -0
- package/dist/server/entities/dto/routes.js.map +1 -0
- package/dist/server/entities/dto/serializer.d.ts +12 -0
- package/dist/server/entities/dto/serializer.js +184 -0
- package/dist/server/entities/dto/serializer.js.map +1 -0
- package/dist/server/entities/dto/services.d.ts +30 -0
- package/dist/server/entities/dto/services.js +242 -0
- package/dist/server/entities/dto/services.js.map +1 -0
- package/dist/server/entities/dto/system-prompt.d.ts +2 -0
- package/dist/server/entities/dto/system-prompt.js +11 -0
- package/dist/server/entities/dto/system-prompt.js.map +1 -0
- package/dist/server/entities/endpoint/mcp-server.d.ts +10 -0
- package/dist/server/entities/endpoint/mcp-server.js +156 -0
- package/dist/server/entities/endpoint/mcp-server.js.map +1 -0
- package/dist/server/entities/endpoint/plugin.d.ts +2 -0
- package/dist/server/entities/endpoint/plugin.js +36 -0
- package/dist/server/entities/endpoint/plugin.js.map +1 -0
- package/dist/server/entities/endpoint/routes.d.ts +4 -0
- package/dist/server/entities/endpoint/routes.js +107 -0
- package/dist/server/entities/endpoint/routes.js.map +1 -0
- package/dist/server/entities/endpoint/serializer.d.ts +17 -0
- package/dist/server/entities/endpoint/serializer.js +217 -0
- package/dist/server/entities/endpoint/serializer.js.map +1 -0
- package/dist/server/entities/endpoint/services.d.ts +30 -0
- package/dist/server/entities/endpoint/services.js +260 -0
- package/dist/server/entities/endpoint/services.js.map +1 -0
- package/dist/server/entities/endpoint/system-prompt.d.ts +2 -0
- package/dist/server/entities/endpoint/system-prompt.js +11 -0
- package/dist/server/entities/endpoint/system-prompt.js.map +1 -0
- package/dist/server/entities/ui-view/mcp-server.d.ts +10 -0
- package/dist/server/entities/ui-view/mcp-server.js +161 -0
- package/dist/server/entities/ui-view/mcp-server.js.map +1 -0
- package/dist/server/entities/ui-view/plugin.d.ts +2 -0
- package/dist/server/entities/ui-view/plugin.js +33 -0
- package/dist/server/entities/ui-view/plugin.js.map +1 -0
- package/dist/server/entities/ui-view/routes.d.ts +5 -0
- package/dist/server/entities/ui-view/routes.js +82 -0
- package/dist/server/entities/ui-view/routes.js.map +1 -0
- package/dist/server/entities/ui-view/serializer.d.ts +12 -0
- package/dist/server/entities/ui-view/serializer.js +262 -0
- package/dist/server/entities/ui-view/serializer.js.map +1 -0
- package/dist/server/entities/ui-view/services.d.ts +35 -0
- package/dist/server/entities/ui-view/services.js +255 -0
- package/dist/server/entities/ui-view/services.js.map +1 -0
- package/dist/server/entities/ui-view/system-prompt.d.ts +7 -0
- package/dist/server/entities/ui-view/system-prompt.js +15 -0
- package/dist/server/entities/ui-view/system-prompt.js.map +1 -0
- package/dist/server/external-skills/brief-implementer-template.d.ts +2 -0
- package/dist/server/external-skills/brief-implementer-template.js +123 -0
- package/dist/server/external-skills/brief-implementer-template.js.map +1 -0
- package/dist/server/external-skills/external-skills-service.d.ts +3 -0
- package/dist/server/external-skills/external-skills-service.js +47 -0
- package/dist/server/external-skills/external-skills-service.js.map +1 -0
- package/dist/server/external-skills/spec-reader-template.d.ts +2 -0
- package/dist/server/external-skills/spec-reader-template.js +47 -0
- package/dist/server/external-skills/spec-reader-template.js.map +1 -0
- package/dist/server/fs/watcher.d.ts +26 -0
- package/dist/server/fs/watcher.js +64 -0
- package/dist/server/fs/watcher.js.map +1 -0
- package/dist/server/index.d.ts +18 -0
- package/dist/server/index.js +474 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/mcp/brief-tools.d.ts +19 -0
- package/dist/server/mcp/brief-tools.js +189 -0
- package/dist/server/mcp/brief-tools.js.map +1 -0
- package/dist/server/mcp/c4s-reader.d.ts +12 -0
- package/dist/server/mcp/c4s-reader.js +263 -0
- package/dist/server/mcp/c4s-reader.js.map +1 -0
- package/dist/server/mcp/database-tools.d.ts +10 -0
- package/dist/server/mcp/database-tools.js +184 -0
- package/dist/server/mcp/database-tools.js.map +1 -0
- package/dist/server/mcp/dependency-tools.d.ts +12 -0
- package/dist/server/mcp/dependency-tools.js +205 -0
- package/dist/server/mcp/dependency-tools.js.map +1 -0
- package/dist/server/mcp/dto-tools.d.ts +10 -0
- package/dist/server/mcp/dto-tools.js +141 -0
- package/dist/server/mcp/dto-tools.js.map +1 -0
- package/dist/server/mcp/endpoint-tools.d.ts +10 -0
- package/dist/server/mcp/endpoint-tools.js +156 -0
- package/dist/server/mcp/endpoint-tools.js.map +1 -0
- package/dist/server/mcp/ensure-mcp-json.d.ts +6 -0
- package/dist/server/mcp/ensure-mcp-json.js +30 -0
- package/dist/server/mcp/ensure-mcp-json.js.map +1 -0
- package/dist/server/mcp/index.d.ts +29 -0
- package/dist/server/mcp/index.js +40 -0
- package/dist/server/mcp/index.js.map +1 -0
- package/dist/server/mcp/plan-tools.d.ts +7 -0
- package/dist/server/mcp/plan-tools.js +105 -0
- package/dist/server/mcp/plan-tools.js.map +1 -0
- package/dist/server/mcp/reference-tools.d.ts +17 -0
- package/dist/server/mcp/reference-tools.js +630 -0
- package/dist/server/mcp/reference-tools.js.map +1 -0
- package/dist/server/mcp/release-tools/index.d.ts +21 -0
- package/dist/server/mcp/release-tools/index.js +140 -0
- package/dist/server/mcp/release-tools/index.js.map +1 -0
- package/dist/server/mcp/release-tools/projection.d.ts +32 -0
- package/dist/server/mcp/release-tools/projection.js +278 -0
- package/dist/server/mcp/release-tools/projection.js.map +1 -0
- package/dist/server/mcp/release-tools/types.d.ts +91 -0
- package/dist/server/mcp/release-tools/types.js +11 -0
- package/dist/server/mcp/release-tools/types.js.map +1 -0
- package/dist/server/mcp/release-tools.d.ts +14 -0
- package/dist/server/mcp/release-tools.js +83 -0
- package/dist/server/mcp/release-tools.js.map +1 -0
- package/dist/server/mcp/ui-view-tools.d.ts +10 -0
- package/dist/server/mcp/ui-view-tools.js +161 -0
- package/dist/server/mcp/ui-view-tools.js.map +1 -0
- package/dist/server/routes/briefs.d.ts +8 -0
- package/dist/server/routes/briefs.js +178 -0
- package/dist/server/routes/briefs.js.map +1 -0
- package/dist/server/routes/chat.d.ts +29 -0
- package/dist/server/routes/chat.js +604 -0
- package/dist/server/routes/chat.js.map +1 -0
- package/dist/server/routes/database-tables.d.ts +5 -0
- package/dist/server/routes/database-tables.js +86 -0
- package/dist/server/routes/database-tables.js.map +1 -0
- package/dist/server/routes/dependencies.d.ts +6 -0
- package/dist/server/routes/dependencies.js +164 -0
- package/dist/server/routes/dependencies.js.map +1 -0
- package/dist/server/routes/dtos.d.ts +4 -0
- package/dist/server/routes/dtos.js +74 -0
- package/dist/server/routes/dtos.js.map +1 -0
- package/dist/server/routes/endpoints.d.ts +4 -0
- package/dist/server/routes/endpoints.js +107 -0
- package/dist/server/routes/endpoints.js.map +1 -0
- package/dist/server/routes/entities.d.ts +8 -0
- package/dist/server/routes/entities.js +84 -0
- package/dist/server/routes/entities.js.map +1 -0
- package/dist/server/routes/errors.d.ts +2 -0
- package/dist/server/routes/errors.js +37 -0
- package/dist/server/routes/errors.js.map +1 -0
- package/dist/server/routes/page-links.d.ts +3 -0
- package/dist/server/routes/page-links.js +40 -0
- package/dist/server/routes/page-links.js.map +1 -0
- package/dist/server/routes/pages.d.ts +5 -0
- package/dist/server/routes/pages.js +142 -0
- package/dist/server/routes/pages.js.map +1 -0
- package/dist/server/routes/plans.d.ts +3 -0
- package/dist/server/routes/plans.js +192 -0
- package/dist/server/routes/plans.js.map +1 -0
- package/dist/server/routes/references.d.ts +3 -0
- package/dist/server/routes/references.js +34 -0
- package/dist/server/routes/references.js.map +1 -0
- package/dist/server/routes/releases.d.ts +4 -0
- package/dist/server/routes/releases.js +122 -0
- package/dist/server/routes/releases.js.map +1 -0
- package/dist/server/routes/sections.d.ts +3 -0
- package/dist/server/routes/sections.js +32 -0
- package/dist/server/routes/sections.js.map +1 -0
- package/dist/server/routes/tags.d.ts +4 -0
- package/dist/server/routes/tags.js +56 -0
- package/dist/server/routes/tags.js.map +1 -0
- package/dist/server/routes/threads.d.ts +3 -0
- package/dist/server/routes/threads.js +78 -0
- package/dist/server/routes/threads.js.map +1 -0
- package/dist/server/routes/todos.d.ts +3 -0
- package/dist/server/routes/todos.js +28 -0
- package/dist/server/routes/todos.js.map +1 -0
- package/dist/server/routes/ui-views.d.ts +5 -0
- package/dist/server/routes/ui-views.js +82 -0
- package/dist/server/routes/ui-views.js.map +1 -0
- package/dist/server/serialization/auto-schema.d.ts +3 -0
- package/dist/server/serialization/auto-schema.js +55 -0
- package/dist/server/serialization/auto-schema.js.map +1 -0
- package/dist/server/serialization/fallback.d.ts +4 -0
- package/dist/server/serialization/fallback.js +27 -0
- package/dist/server/serialization/fallback.js.map +1 -0
- package/dist/server/serialization/inline-renderer.d.ts +4 -0
- package/dist/server/serialization/inline-renderer.js +151 -0
- package/dist/server/serialization/inline-renderer.js.map +1 -0
- package/dist/server/serialization/registerAll.d.ts +6 -0
- package/dist/server/serialization/registerAll.js +7 -0
- package/dist/server/serialization/registerAll.js.map +1 -0
- package/dist/server/serialization/registry.d.ts +26 -0
- package/dist/server/serialization/registry.js +121 -0
- package/dist/server/serialization/registry.js.map +1 -0
- package/dist/server/serialization/resolve-page.d.ts +24 -0
- package/dist/server/serialization/resolve-page.js +192 -0
- package/dist/server/serialization/resolve-page.js.map +1 -0
- package/dist/server/serialization/serializers/database-table.d.ts +1 -0
- package/dist/server/serialization/serializers/database-table.js +46 -0
- package/dist/server/serialization/serializers/database-table.js.map +1 -0
- package/dist/server/serialization/serializers/dto.d.ts +1 -0
- package/dist/server/serialization/serializers/dto.js +48 -0
- package/dist/server/serialization/serializers/dto.js.map +1 -0
- package/dist/server/serialization/serializers/endpoint.d.ts +1 -0
- package/dist/server/serialization/serializers/endpoint.js +93 -0
- package/dist/server/serialization/serializers/endpoint.js.map +1 -0
- package/dist/server/serialization/serializers/section.d.ts +1 -0
- package/dist/server/serialization/serializers/section.js +24 -0
- package/dist/server/serialization/serializers/section.js.map +1 -0
- package/dist/server/serialization/serializers/ui-view.d.ts +1 -0
- package/dist/server/serialization/serializers/ui-view.js +124 -0
- package/dist/server/serialization/serializers/ui-view.js.map +1 -0
- package/dist/server/serialization/snapshot.d.ts +22 -0
- package/dist/server/serialization/snapshot.js +102 -0
- package/dist/server/serialization/snapshot.js.map +1 -0
- package/dist/server/serialization/types.d.ts +70 -0
- package/dist/server/serialization/types.js +7 -0
- package/dist/server/serialization/types.js.map +1 -0
- package/dist/server/serialization/writer.d.ts +41 -0
- package/dist/server/serialization/writer.js +13 -0
- package/dist/server/serialization/writer.js.map +1 -0
- package/dist/server/services/brief.d.ts +86 -0
- package/dist/server/services/brief.js +218 -0
- package/dist/server/services/brief.js.map +1 -0
- package/dist/server/services/chat-context.d.ts +26 -0
- package/dist/server/services/chat-context.js +434 -0
- package/dist/server/services/chat-context.js.map +1 -0
- package/dist/server/services/chat.d.ts +50 -0
- package/dist/server/services/chat.js +309 -0
- package/dist/server/services/chat.js.map +1 -0
- package/dist/server/services/database-table.d.ts +36 -0
- package/dist/server/services/database-table.js +303 -0
- package/dist/server/services/database-table.js.map +1 -0
- package/dist/server/services/dependencies.d.ts +45 -0
- package/dist/server/services/dependencies.js +302 -0
- package/dist/server/services/dependencies.js.map +1 -0
- package/dist/server/services/dto.d.ts +22 -0
- package/dist/server/services/dto.js +222 -0
- package/dist/server/services/dto.js.map +1 -0
- package/dist/server/services/endpoint.d.ts +22 -0
- package/dist/server/services/endpoint.js +239 -0
- package/dist/server/services/endpoint.js.map +1 -0
- package/dist/server/services/entity-writer.d.ts +46 -0
- package/dist/server/services/entity-writer.js +137 -0
- package/dist/server/services/entity-writer.js.map +1 -0
- package/dist/server/services/page-serializer.d.ts +109 -0
- package/dist/server/services/page-serializer.js +359 -0
- package/dist/server/services/page-serializer.js.map +1 -0
- package/dist/server/services/page-version.d.ts +75 -0
- package/dist/server/services/page-version.js +159 -0
- package/dist/server/services/page-version.js.map +1 -0
- package/dist/server/services/pages-frontmatter-indexer.d.ts +51 -0
- package/dist/server/services/pages-frontmatter-indexer.js +138 -0
- package/dist/server/services/pages-frontmatter-indexer.js.map +1 -0
- package/dist/server/services/pages-link-indexer.d.ts +36 -0
- package/dist/server/services/pages-link-indexer.js +474 -0
- package/dist/server/services/pages-link-indexer.js.map +1 -0
- package/dist/server/services/pages.d.ts +16 -0
- package/dist/server/services/pages.js +149 -0
- package/dist/server/services/pages.js.map +1 -0
- package/dist/server/services/plan.d.ts +59 -0
- package/dist/server/services/plan.js +459 -0
- package/dist/server/services/plan.js.map +1 -0
- package/dist/server/services/references.d.ts +17 -0
- package/dist/server/services/references.js +175 -0
- package/dist/server/services/references.js.map +1 -0
- package/dist/server/services/release.d.ts +146 -0
- package/dist/server/services/release.js +602 -0
- package/dist/server/services/release.js.map +1 -0
- package/dist/server/services/section-indexer.d.ts +20 -0
- package/dist/server/services/section-indexer.js +276 -0
- package/dist/server/services/section-indexer.js.map +1 -0
- package/dist/server/services/sections.d.ts +34 -0
- package/dist/server/services/sections.js +136 -0
- package/dist/server/services/sections.js.map +1 -0
- package/dist/server/services/skill-registry.d.ts +38 -0
- package/dist/server/services/skill-registry.js +171 -0
- package/dist/server/services/skill-registry.js.map +1 -0
- package/dist/server/services/slug.d.ts +7 -0
- package/dist/server/services/slug.js +41 -0
- package/dist/server/services/slug.js.map +1 -0
- package/dist/server/services/tags.d.ts +27 -0
- package/dist/server/services/tags.js +153 -0
- package/dist/server/services/tags.js.map +1 -0
- package/dist/server/services/todos-indexer.d.ts +21 -0
- package/dist/server/services/todos-indexer.js +123 -0
- package/dist/server/services/todos-indexer.js.map +1 -0
- package/dist/server/services/ui-view.d.ts +26 -0
- package/dist/server/services/ui-view.js +235 -0
- package/dist/server/services/ui-view.js.map +1 -0
- package/dist/server/services/versions.d.ts +59 -0
- package/dist/server/services/versions.js +181 -0
- package/dist/server/services/versions.js.map +1 -0
- package/dist/server/skills/brief-author/SKILL.md +117 -0
- package/dist/server/skills/layered-vertical-slices/SKILL.md +135 -0
- package/dist/server/skills/layered-vertical-slices/templates/index.md +97 -0
- package/dist/server/skills/layered-vertical-slices/templates/layer.md +42 -0
- package/dist/server/skills/layered-vertical-slices/templates/module.md +52 -0
- package/dist/server/skills/layered-vertical-slices/workflows/bootstrap.md +116 -0
- package/dist/server/skills/layered-vertical-slices/workflows/brief.md +154 -0
- package/dist/server/skills/layered-vertical-slices/workflows/daily.md +77 -0
- package/dist/server/ws/gateway.d.ts +10 -0
- package/dist/server/ws/gateway.js +35 -0
- package/dist/server/ws/gateway.js.map +1 -0
- package/dist/shared/anchor-pattern.d.ts +15 -0
- package/dist/shared/anchor-pattern.js +16 -0
- package/dist/shared/anchor-pattern.js.map +1 -0
- package/dist/shared/diagram-source-escape.d.ts +2 -0
- package/dist/shared/diagram-source-escape.js +19 -0
- package/dist/shared/diagram-source-escape.js.map +1 -0
- package/dist/shared/entities.d.ts +622 -0
- package/dist/shared/entities.js +9 -0
- package/dist/shared/entities.js.map +1 -0
- package/dist/shared/page-links.d.ts +40 -0
- package/dist/shared/page-links.js +2 -0
- package/dist/shared/page-links.js.map +1 -0
- package/dist/shared/plugin-host/types.d.ts +66 -0
- package/dist/shared/plugin-host/types.js +11 -0
- package/dist/shared/plugin-host/types.js.map +1 -0
- package/dist/shared/reference-extensions.d.ts +13 -0
- package/dist/shared/reference-extensions.js +17 -0
- package/dist/shared/reference-extensions.js.map +1 -0
- package/dist/shared/types.d.ts +86 -0
- package/dist/shared/types.js +2 -0
- package/dist/shared/types.js.map +1 -0
- package/dist/shared/xml-tags.d.ts +16 -0
- package/dist/shared/xml-tags.js +101 -0
- package/dist/shared/xml-tags.js.map +1 -0
- package/package.json +110 -0
package/dist/bin/c4s.js
ADDED
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
import { parseArgs } from './c4s/args.js';
|
|
6
|
+
import { CliError } from './c4s/errors.js';
|
|
7
|
+
import { writeError } from './c4s/output.js';
|
|
8
|
+
import { runInlineMention } from './c4s/commands/inline-mention.js';
|
|
9
|
+
import { runSingleElement } from './c4s/commands/single-element.js';
|
|
10
|
+
import { runElementList } from './c4s/commands/element-list.js';
|
|
11
|
+
import { runTaggedList } from './c4s/commands/tagged-list.js';
|
|
12
|
+
import { runTaggedListMixed } from './c4s/commands/tagged-list-mixed.js';
|
|
13
|
+
import { runDetail } from './c4s/commands/detail.js';
|
|
14
|
+
import { runCatalog } from './c4s/commands/catalog.js';
|
|
15
|
+
import { runListTags } from './c4s/commands/list-tags.js';
|
|
16
|
+
import { runListSlugs } from './c4s/commands/list-slugs.js';
|
|
17
|
+
import { runResolve } from './c4s/commands/resolve.js';
|
|
18
|
+
const HELP = `Usage: c4s <command> [options]
|
|
19
|
+
|
|
20
|
+
Tag commands (1:1 with XML tag names):
|
|
21
|
+
inline_mention --type <t> --slug <s>
|
|
22
|
+
single_element --type <t> --slug <s>
|
|
23
|
+
element_list --type <t> --slugs <s1,s2,...>
|
|
24
|
+
tagged_list --type <t> --tags <t1,t2,...> [--filter and|or]
|
|
25
|
+
tagged_list_mixed --tags <t1,t2,...> [--filter and|or]
|
|
26
|
+
|
|
27
|
+
Detail view (no XML counterpart):
|
|
28
|
+
detail --type <t> --slug <s>
|
|
29
|
+
|
|
30
|
+
Utility:
|
|
31
|
+
resolve <file.md> [--format inline|json]
|
|
32
|
+
|
|
33
|
+
Discovery:
|
|
34
|
+
catalog
|
|
35
|
+
list-tags
|
|
36
|
+
list-slugs --type <t>
|
|
37
|
+
|
|
38
|
+
Global flags:
|
|
39
|
+
--project <path> override project dir (default: walk-up to .claude4spec/)
|
|
40
|
+
--format json|text output format (default: json; resolve default: inline)
|
|
41
|
+
--compact minified JSON (for pipelines)
|
|
42
|
+
--sort-keys deterministic key order in JSON
|
|
43
|
+
--version print c4s version
|
|
44
|
+
--help show this help
|
|
45
|
+
`;
|
|
46
|
+
function main() {
|
|
47
|
+
const argv = process.argv.slice(2);
|
|
48
|
+
if (argv.length === 0 || argv[0] === '--help' || argv[0] === '-h') {
|
|
49
|
+
process.stdout.write(HELP);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
if (argv[0] === '--version' || argv[0] === '-v') {
|
|
53
|
+
process.stdout.write(`c4s ${readPackageVersion()}\n`);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const args = parseArgs(argv);
|
|
57
|
+
if (!args.command) {
|
|
58
|
+
throw new CliError('UNKNOWN_COMMAND', 'no command given', 'run `c4s --help`');
|
|
59
|
+
}
|
|
60
|
+
switch (args.command) {
|
|
61
|
+
case 'inline_mention':
|
|
62
|
+
return runInlineMention(args);
|
|
63
|
+
case 'single_element':
|
|
64
|
+
return runSingleElement(args);
|
|
65
|
+
case 'element_list':
|
|
66
|
+
return runElementList(args);
|
|
67
|
+
case 'tagged_list':
|
|
68
|
+
return runTaggedList(args);
|
|
69
|
+
case 'tagged_list_mixed':
|
|
70
|
+
return runTaggedListMixed(args);
|
|
71
|
+
case 'detail':
|
|
72
|
+
return runDetail(args);
|
|
73
|
+
case 'resolve':
|
|
74
|
+
return runResolve(args);
|
|
75
|
+
case 'catalog':
|
|
76
|
+
return runCatalog(args);
|
|
77
|
+
case 'list-tags':
|
|
78
|
+
return runListTags(args);
|
|
79
|
+
case 'list-slugs':
|
|
80
|
+
return runListSlugs(args);
|
|
81
|
+
default:
|
|
82
|
+
throw new CliError('UNKNOWN_COMMAND', `unknown command '${args.command}'`, 'run `c4s --help`');
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function readPackageVersion() {
|
|
86
|
+
try {
|
|
87
|
+
const here = path.dirname(fileURLToPath(import.meta.url));
|
|
88
|
+
const candidates = [
|
|
89
|
+
path.resolve(here, '..', 'package.json'),
|
|
90
|
+
path.resolve(here, '..', '..', 'package.json'),
|
|
91
|
+
];
|
|
92
|
+
for (const pkgPath of candidates) {
|
|
93
|
+
if (fs.existsSync(pkgPath)) {
|
|
94
|
+
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
|
|
95
|
+
if (pkg.version)
|
|
96
|
+
return pkg.version;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
/* ignore */
|
|
102
|
+
}
|
|
103
|
+
return 'unknown';
|
|
104
|
+
}
|
|
105
|
+
try {
|
|
106
|
+
main();
|
|
107
|
+
}
|
|
108
|
+
catch (err) {
|
|
109
|
+
if (err instanceof CliError) {
|
|
110
|
+
writeError(err);
|
|
111
|
+
process.exit(codeToExit(err.code));
|
|
112
|
+
}
|
|
113
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
114
|
+
writeError(new CliError('UNKNOWN_COMMAND', message));
|
|
115
|
+
process.exit(1);
|
|
116
|
+
}
|
|
117
|
+
function codeToExit(code) {
|
|
118
|
+
switch (code) {
|
|
119
|
+
case 'PROJECT_NOT_FOUND':
|
|
120
|
+
return 2;
|
|
121
|
+
case 'ENTITY_NOT_FOUND':
|
|
122
|
+
return 3;
|
|
123
|
+
case 'INVALID_TYPE':
|
|
124
|
+
case 'INVALID_ARGS':
|
|
125
|
+
return 4;
|
|
126
|
+
case 'FILE_NOT_FOUND':
|
|
127
|
+
return 5;
|
|
128
|
+
case 'SCHEMA_OUT_OF_DATE':
|
|
129
|
+
return 6;
|
|
130
|
+
default:
|
|
131
|
+
return 1;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=c4s.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"c4s.js","sourceRoot":"","sources":["../../src/bin/c4s.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import fs from 'node:fs';
|
|
4
|
+
import { spawn } from 'node:child_process';
|
|
5
|
+
import { startServer } from '../server/index.js';
|
|
6
|
+
import { BOOTSTRAP_TEMPLATE } from './bootstrap-template.js';
|
|
7
|
+
import { ensureExternalSkills } from '../server/external-skills/external-skills-service.js';
|
|
8
|
+
import { ensureMcpJson } from '../server/mcp/ensure-mcp-json.js';
|
|
9
|
+
import { loadOrCreateConfig } from '../server/config.js';
|
|
10
|
+
import { ensureGitignore } from './gitignore.js';
|
|
11
|
+
function parseArgs(argv) {
|
|
12
|
+
const args = {
|
|
13
|
+
port: undefined,
|
|
14
|
+
cwd: process.cwd(),
|
|
15
|
+
pagesDir: undefined,
|
|
16
|
+
mode: undefined,
|
|
17
|
+
name: undefined,
|
|
18
|
+
noOpen: false,
|
|
19
|
+
};
|
|
20
|
+
const resolveCwd = (raw) => path.resolve(process.cwd(), raw);
|
|
21
|
+
const parseMode = (raw) => {
|
|
22
|
+
if (raw !== 'dev' && raw !== 'prod')
|
|
23
|
+
throw new Error(`--mode must be 'dev' or 'prod', got '${raw}'`);
|
|
24
|
+
return raw;
|
|
25
|
+
};
|
|
26
|
+
for (let i = 0; i < argv.length; i++) {
|
|
27
|
+
const a = argv[i];
|
|
28
|
+
if (a === '--port' && argv[i + 1]) {
|
|
29
|
+
args.port = Number(argv[++i]);
|
|
30
|
+
}
|
|
31
|
+
else if (a?.startsWith('--port=')) {
|
|
32
|
+
args.port = Number(a.split('=')[1]);
|
|
33
|
+
}
|
|
34
|
+
else if (a === '--cwd' && argv[i + 1]) {
|
|
35
|
+
args.cwd = resolveCwd(argv[++i]);
|
|
36
|
+
}
|
|
37
|
+
else if (a?.startsWith('--cwd=')) {
|
|
38
|
+
args.cwd = resolveCwd(a.split('=')[1]);
|
|
39
|
+
}
|
|
40
|
+
else if (a === '--pages' && argv[i + 1]) {
|
|
41
|
+
args.pagesDir = argv[++i];
|
|
42
|
+
}
|
|
43
|
+
else if (a?.startsWith('--pages=')) {
|
|
44
|
+
args.pagesDir = a.split('=')[1];
|
|
45
|
+
}
|
|
46
|
+
else if (a === '--mode' && argv[i + 1]) {
|
|
47
|
+
args.mode = parseMode(argv[++i]);
|
|
48
|
+
}
|
|
49
|
+
else if (a?.startsWith('--mode=')) {
|
|
50
|
+
args.mode = parseMode(a.split('=')[1]);
|
|
51
|
+
}
|
|
52
|
+
else if (a === '--name' && argv[i + 1]) {
|
|
53
|
+
args.name = argv[++i];
|
|
54
|
+
}
|
|
55
|
+
else if (a?.startsWith('--name=')) {
|
|
56
|
+
args.name = a.split('=')[1];
|
|
57
|
+
}
|
|
58
|
+
else if (a === '--no-open') {
|
|
59
|
+
args.noOpen = true;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return args;
|
|
63
|
+
}
|
|
64
|
+
function ensureBootstrap(cwd, pagesDir) {
|
|
65
|
+
const pagesPath = path.join(cwd, pagesDir ?? 'pages');
|
|
66
|
+
fs.mkdirSync(pagesPath, { recursive: true });
|
|
67
|
+
const indexPath = path.join(pagesPath, 'index.md');
|
|
68
|
+
if (fs.existsSync(indexPath))
|
|
69
|
+
return;
|
|
70
|
+
const existing = fs.readdirSync(pagesPath).filter((name) => !name.startsWith('.'));
|
|
71
|
+
if (existing.length > 0)
|
|
72
|
+
return;
|
|
73
|
+
fs.writeFileSync(indexPath, BOOTSTRAP_TEMPLATE, 'utf8');
|
|
74
|
+
}
|
|
75
|
+
function openBrowser(url) {
|
|
76
|
+
const { platform } = process;
|
|
77
|
+
const [cmd, ...rest] = platform === 'darwin'
|
|
78
|
+
? ['open', url]
|
|
79
|
+
: platform === 'win32'
|
|
80
|
+
? ['cmd', '/c', 'start', '""', url]
|
|
81
|
+
: ['xdg-open', url];
|
|
82
|
+
try {
|
|
83
|
+
const child = spawn(cmd, rest, { stdio: 'ignore', detached: true });
|
|
84
|
+
child.on('error', () => {
|
|
85
|
+
/* ignore — terminal link still works */
|
|
86
|
+
});
|
|
87
|
+
child.unref();
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
/* ignore */
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const { port, cwd, pagesDir, mode, name, noOpen } = parseArgs(process.argv.slice(2));
|
|
94
|
+
fs.mkdirSync(cwd, { recursive: true });
|
|
95
|
+
const { config: effective, created: configCreated, path: configFilePath } = loadOrCreateConfig(cwd, {
|
|
96
|
+
name,
|
|
97
|
+
port,
|
|
98
|
+
pagesDir,
|
|
99
|
+
mode,
|
|
100
|
+
});
|
|
101
|
+
ensureGitignore(cwd);
|
|
102
|
+
ensureBootstrap(cwd, effective.pagesDir);
|
|
103
|
+
ensureExternalSkills(cwd);
|
|
104
|
+
ensureMcpJson({ projectAbsPath: cwd });
|
|
105
|
+
startServer({
|
|
106
|
+
cwd,
|
|
107
|
+
port: effective.port,
|
|
108
|
+
pagesDir: effective.pagesDir,
|
|
109
|
+
mode: effective.mode,
|
|
110
|
+
name: effective.name,
|
|
111
|
+
})
|
|
112
|
+
.then((handle) => {
|
|
113
|
+
console.log(`\x1b[32m claude4spec\x1b[0m ready at \x1b[36m${handle.url}\x1b[0m`);
|
|
114
|
+
console.log(` cwd: ${cwd}`);
|
|
115
|
+
console.log(` pages: ${effective.pagesDir}`);
|
|
116
|
+
console.log(` config: ${configFilePath}${configCreated ? ' (created)' : ''}`);
|
|
117
|
+
console.log(` writing style: ${handle.writingStyle ? `${handle.writingStyle.title} (${handle.writingStyle.slug})` : 'none'}`);
|
|
118
|
+
if (!noOpen && effective.mode === 'prod')
|
|
119
|
+
openBrowser(handle.url);
|
|
120
|
+
const close = async () => {
|
|
121
|
+
console.log('\n shutting down…');
|
|
122
|
+
await handle.shutdown();
|
|
123
|
+
process.exit(0);
|
|
124
|
+
};
|
|
125
|
+
process.on('SIGINT', close);
|
|
126
|
+
process.on('SIGTERM', close);
|
|
127
|
+
})
|
|
128
|
+
.catch((err) => {
|
|
129
|
+
console.error('failed to start:', err);
|
|
130
|
+
process.exit(1);
|
|
131
|
+
});
|
|
132
|
+
//# sourceMappingURL=claude4spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude4spec.js","sourceRoot":"","sources":["../../src/bin/claude4spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function ensureGitignore(cwd: string): void;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
const PATTERNS = [
|
|
4
|
+
{
|
|
5
|
+
canonical: '.claude4spec/db.sqlite*',
|
|
6
|
+
equivalents: [
|
|
7
|
+
'.claude4spec/db.sqlite*',
|
|
8
|
+
'.claude4spec/db.sqlite',
|
|
9
|
+
'.claude4spec/db.sqlite-wal',
|
|
10
|
+
'.claude4spec/db.sqlite-shm',
|
|
11
|
+
'.claude4spec/',
|
|
12
|
+
'.claude4spec',
|
|
13
|
+
],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
canonical: '.claude4spec/mcp.json',
|
|
17
|
+
equivalents: ['.claude4spec/mcp.json', '.claude4spec/', '.claude4spec'],
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
canonical: '*.deprecated',
|
|
21
|
+
equivalents: ['*.deprecated', '*.deprecated/'],
|
|
22
|
+
},
|
|
23
|
+
];
|
|
24
|
+
export function ensureGitignore(cwd) {
|
|
25
|
+
const file = path.join(cwd, '.gitignore');
|
|
26
|
+
const existing = fs.existsSync(file) ? fs.readFileSync(file, 'utf8') : '';
|
|
27
|
+
const lines = new Set(existing.split('\n').map((l) => l.trim()));
|
|
28
|
+
const missing = [];
|
|
29
|
+
for (const spec of PATTERNS) {
|
|
30
|
+
if (!spec.equivalents.some((p) => lines.has(p))) {
|
|
31
|
+
missing.push(spec.canonical);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
if (missing.length === 0)
|
|
35
|
+
return;
|
|
36
|
+
const needsLeadingNewline = existing.length > 0 && !existing.endsWith('\n');
|
|
37
|
+
const addition = (needsLeadingNewline ? '\n' : '') +
|
|
38
|
+
(existing.length > 0 ? '\n' : '') +
|
|
39
|
+
'# claude4spec (auto-added)\n' +
|
|
40
|
+
missing.join('\n') +
|
|
41
|
+
'\n';
|
|
42
|
+
fs.writeFileSync(file, existing + addition, 'utf8');
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=gitignore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitignore.js","sourceRoot":"","sources":["../../src/bin/gitignore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAO7B,MAAM,QAAQ,GAA2B;IACvC;QACE,SAAS,EAAE,yBAAyB;QACpC,WAAW,EAAE;YACX,yBAAyB;YACzB,wBAAwB;YACxB,4BAA4B;YAC5B,4BAA4B;YAC5B,eAAe;YACf,cAAc;SACf;KACF;IACD;QACE,SAAS,EAAE,uBAAuB;QAClC,WAAW,EAAE,CAAC,uBAAuB,EAAE,eAAe,EAAE,cAAc,CAAC;KACxE;IACD;QACE,SAAS,EAAE,cAAc;QACzB,WAAW,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;KAC/C;CACF,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1E,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAEjE,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEjC,MAAM,mBAAmB,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5E,MAAM,QAAQ,GACZ,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,8BAA8B;QAC9B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAClB,IAAI,CAAC;IACP,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a0 as ln,a1 as an,a2 as H,a3 as q,a4 as B,a5 as un,a6 as y,a7 as tn,a8 as L,a9 as _,aa as rn,ab as o,ac as on,ad as sn,ae as fn}from"./mermaid.core-C45sMDhS.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,C,a){var O=I-l,i=D-h,n=C-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function W(l,h,I,D,v,A,C){var a=l-I,O=h-D,i=(C?A:-A)/L(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,F=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*L(on(0,T*T*R-P*P)),j=(P*g-m*S)/R,z=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=j-F,e=z-t,r=w-F,G=p-t;return x*x+e*e>r*r+G*G&&(j=w,z=p),{cx:j,cy:z,x01:-n,y01:-d,x11:j*(v/T-1),y11:z*(v/T-1)}}function hn(){var l=cn,h=yn,I=B(0),D=null,v=gn,A=dn,C=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-un,c=A.apply(this,arguments)-un,F=rn(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(F>tn-y)a.moveTo(s*H(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*H(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=F,S=F,j=C.apply(this,arguments)/2,z=j>y&&(D?+D.apply(this,arguments):L(u*u+s*s)),w=_(rn(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if(z>y){var G=sn(z/u*q(j)),M=sn(z/s*q(j));(P-=G*2)>y?(G*=t?1:-1,R+=G,T-=G):(P=0,R=T=(f+c)/2),(S-=M*2)>y?(M*=t?1:-1,m+=M,g-=M):(S=0,m=g=(f+c)/2)}var J=s*H(m),K=s*q(m),N=u*H(T),Q=u*q(T);if(w>y){var U=s*H(g),V=s*q(g),X=u*H(R),Y=u*q(R),E;if(F<an)if(E=pn(J,K,X,Y,U,V,N,Q)){var Z=J-E[0],$=K-E[1],b=U-E[0],k=V-E[1],nn=1/q(fn((Z*b+$*k)/(L(Z*Z+$*$)*L(b*b+k*k)))/2),en=L(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=W(X,Y,J,K,s,x,t),r=W(U,V,N,Q,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(J,K),a.arc(0,0,s,m,g,!t)):a.moveTo(J,K),!(u>y)||!(P>y)?a.lineTo(N,Q):p>y?(e=W(N,Q,U,V,u,-p,t),r=W(J,K,X,Y,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-an/2;return[H(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:B(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:B(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:B(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:B(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:B(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:B(+n),i):A},i.padAngle=function(n){return arguments.length?(C=typeof n=="function"?n:B(+n),i):C},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
|