@inharness-ai/claude4spec 1.0.14 → 1.0.16
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/CHANGELOG.md +31 -0
- package/dist/bin/c4s/args.d.ts +2 -0
- package/dist/bin/c4s/args.js +3 -0
- package/dist/bin/c4s/args.js.map +1 -1
- package/dist/bin/c4s/commands/ask.js +2 -0
- package/dist/bin/c4s/commands/ask.js.map +1 -1
- package/dist/bin/c4s/commands/catalog.js +1 -1
- package/dist/bin/c4s/commands/catalog.js.map +1 -1
- package/dist/bin/c4s/commands/describe.d.ts +2 -0
- package/dist/bin/c4s/commands/describe.js +22 -0
- package/dist/bin/c4s/commands/describe.js.map +1 -0
- package/dist/bin/c4s/commands/find-references.d.ts +13 -0
- package/dist/bin/c4s/commands/find-references.js +81 -0
- package/dist/bin/c4s/commands/find-references.js.map +1 -0
- package/dist/bin/c4s/context.d.ts +4 -3
- package/dist/bin/c4s/context.js +17 -6
- package/dist/bin/c4s/context.js.map +1 -1
- package/dist/bin/c4s/errors.d.ts +1 -1
- package/dist/bin/c4s/errors.js.map +1 -1
- package/dist/bin/c4s/type-validation.d.ts +3 -0
- package/dist/bin/c4s/type-validation.js +14 -0
- package/dist/bin/c4s/type-validation.js.map +1 -1
- package/dist/bin/c4s-mcp.d.ts +1 -1
- package/dist/bin/c4s-mcp.js +23 -12
- package/dist/bin/c4s-mcp.js.map +1 -1
- package/dist/bin/c4s.js +20 -3
- package/dist/bin/c4s.js.map +1 -1
- package/dist/bin/claude4spec.js +122 -74
- package/dist/bin/claude4spec.js.map +1 -1
- package/dist/client/assets/{arc-E0e7X_zn.js → arc-DrA6qHTw.js} +1 -1
- package/dist/client/assets/{architectureDiagram-3BPJPVTR-BzlqOVZv.js → architectureDiagram-3BPJPVTR-TEnwTtVX.js} +1 -1
- package/dist/client/assets/{blockDiagram-GPEHLZMM-BIQcApN7.js → blockDiagram-GPEHLZMM-txRnQm5w.js} +1 -1
- package/dist/client/assets/{c4Diagram-AAUBKEIU-CDU0V1yk.js → c4Diagram-AAUBKEIU-ad8X3Q8n.js} +1 -1
- package/dist/client/assets/channel-zmRfuI3H.js +1 -0
- package/dist/client/assets/{chunk-2J33WTMH-PtDSwC5f.js → chunk-2J33WTMH-Cp08Xa7f.js} +1 -1
- package/dist/client/assets/{chunk-4BX2VUAB-DTUPWrSO.js → chunk-4BX2VUAB-Dc_0On6j.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-Cpd59xZT.js → chunk-55IACEB6-8d1qQ5z6.js} +1 -1
- package/dist/client/assets/{chunk-727SXJPM-C4DOvpJT.js → chunk-727SXJPM-TZenviWx.js} +1 -1
- package/dist/client/assets/{chunk-AQP2D5EJ-CtjeHPBB.js → chunk-AQP2D5EJ-DKRRWy-J.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-CZA3OvVr.js → chunk-FMBD7UC4-DLEErJWK.js} +1 -1
- package/dist/client/assets/{chunk-ND2GUHAM-Cbx6nQHm.js → chunk-ND2GUHAM-pKGgwz_0.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-3DunELI_.js → chunk-QZHKN3VN-DVcNz8ng.js} +1 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-B9RFgPu-.js +1 -0
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-B9RFgPu-.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-CKYJnuL7.js → cose-bilkent-S5V4N54A-DZejbxEG.js} +1 -1
- package/dist/client/assets/{dagre-BM42HDAG-BrvRwrr_.js → dagre-BM42HDAG-DrPrkFcW.js} +1 -1
- package/dist/client/assets/{diagram-2AECGRRQ-BaVLuzcD.js → diagram-2AECGRRQ-Dpn8TJa2.js} +1 -1
- package/dist/client/assets/{diagram-5GNKFQAL-9Cu7Wa7J.js → diagram-5GNKFQAL-BxkzEc_t.js} +1 -1
- package/dist/client/assets/{diagram-KO2AKTUF-XKiCVdjO.js → diagram-KO2AKTUF-KG0o4LQ7.js} +1 -1
- package/dist/client/assets/{diagram-LMA3HP47-DerecU5v.js → diagram-LMA3HP47-CJ-AjQPt.js} +1 -1
- package/dist/client/assets/{diagram-OG6HWLK6-BWcREvZ9.js → diagram-OG6HWLK6-D_FG9cDJ.js} +1 -1
- package/dist/client/assets/{erDiagram-TEJ5UH35-DU3BBQJY.js → erDiagram-TEJ5UH35-DllhUlzY.js} +1 -1
- package/dist/client/assets/{flowDiagram-I6XJVG4X-DXO_IJeR.js → flowDiagram-I6XJVG4X-Bg3OotXu.js} +1 -1
- package/dist/client/assets/{ganttDiagram-6RSMTGT7-CXiFZEPx.js → ganttDiagram-6RSMTGT7-BUpUL2Cj.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-PVQCEYII-DHewdln-.js → gitGraphDiagram-PVQCEYII-DMRhyWth.js} +1 -1
- package/dist/client/assets/{index-DT5g2AtL.js → index-BB2RmhGR.js} +1 -1
- package/dist/client/assets/index-BXzOTCgN.css +1 -0
- package/dist/client/assets/index-DRFbyGvK.js +788 -0
- package/dist/client/assets/{index-DD0GkjkG.js → index-Daewu-VD.js} +1 -1
- package/dist/client/assets/{infoDiagram-5YYISTIA-CN40PAGW.js → infoDiagram-5YYISTIA-Bq9D64Ar.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-B8KsyuPk.js → ishikawaDiagram-YF4QCWOH-DIaKHHF-.js} +1 -1
- package/dist/client/assets/{journeyDiagram-JHISSGLW-BlEb3E_P.js → journeyDiagram-JHISSGLW-gQWGLTeZ.js} +1 -1
- package/dist/client/assets/{kanban-definition-UN3LZRKU-B080CGS9.js → kanban-definition-UN3LZRKU-vRgZ5RjE.js} +1 -1
- package/dist/client/assets/{linear-D6Tg-IET.js → linear-B4a11szP.js} +1 -1
- package/dist/client/assets/{mermaid.core-DP18nW3T.js → mermaid.core-JhUbsJFB.js} +4 -4
- package/dist/client/assets/{mindmap-definition-RKZ34NQL-bfo7Qm5I.js → mindmap-definition-RKZ34NQL-ZH-Oz_D-.js} +1 -1
- package/dist/client/assets/{pieDiagram-4H26LBE5-ZsPztPu6.js → pieDiagram-4H26LBE5-6rpNrJR6.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-W4KKPZXB-DKrTleIL.js → quadrantDiagram-W4KKPZXB-DpTKtxEM.js} +1 -1
- package/dist/client/assets/{requirementDiagram-4Y6WPE33-D4YX8ZgG.js → requirementDiagram-4Y6WPE33-DpDvZkrK.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-5OEKKPKP-Bo-xm6Mc.js → sankeyDiagram-5OEKKPKP-KKjWCTYP.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-3UESZ5HK-CozgdKp6.js → sequenceDiagram-3UESZ5HK-BCmXos1U.js} +1 -1
- package/dist/client/assets/{stateDiagram-AJRCARHV-CiK61MwV.js → stateDiagram-AJRCARHV-Xq7jqpMj.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-C3mDHsxD.js +1 -0
- package/dist/client/assets/{timeline-definition-PNZ67QCA-CgHoguI7.js → timeline-definition-PNZ67QCA-CMmq8p5q.js} +1 -1
- package/dist/client/assets/{vennDiagram-CIIHVFJN-TY32dxQb.js → vennDiagram-CIIHVFJN-DgK-w2Jv.js} +1 -1
- package/dist/client/assets/{wardley-L42UT6IY-C6Q7VFwH.js → wardley-L42UT6IY-C5CwlFHh.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-YWT4CUSO-nZLnVsQL.js → wardleyDiagram-YWT4CUSO-D47CtDSc.js} +1 -1
- package/dist/client/assets/{xychartDiagram-2RQKCTM6-DHdYRHEr.js → xychartDiagram-2RQKCTM6-C1M_xTVv.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/core/ask/run-ask.d.ts +3 -1
- package/dist/core/ask/run-ask.js +75 -54
- package/dist/core/ask/run-ask.js.map +1 -1
- package/dist/core/references/find-references.d.ts +13 -0
- package/dist/core/references/find-references.js +41 -0
- package/dist/core/references/find-references.js.map +1 -0
- package/dist/core/references/index.d.ts +2 -0
- package/dist/core/references/index.js +2 -0
- package/dist/core/references/index.js.map +1 -0
- package/dist/core/references/types.d.ts +45 -0
- package/dist/core/references/types.js +9 -0
- package/dist/core/references/types.js.map +1 -0
- package/dist/core/workspace/resolve.d.ts +29 -0
- package/dist/core/workspace/resolve.js +80 -0
- package/dist/core/workspace/resolve.js.map +1 -0
- package/dist/server/config.d.ts +58 -6
- package/dist/server/config.js +94 -19
- package/dist/server/config.js.map +1 -1
- package/dist/server/core/plugin-host/cli-engine.d.ts +8 -0
- package/dist/server/core/plugin-host/cli-engine.js +16 -0
- package/dist/server/core/plugin-host/cli-engine.js.map +1 -0
- package/dist/server/core/plugin-host/cross-cutting.js +1 -1
- package/dist/server/core/plugin-host/cross-cutting.js.map +1 -1
- package/dist/server/core/plugin-host/entities-router.d.ts +3 -1
- package/dist/server/core/plugin-host/entities-router.js +24 -19
- package/dist/server/core/plugin-host/entities-router.js.map +1 -1
- package/dist/server/core/plugin-host/host.js +4 -9
- package/dist/server/core/plugin-host/host.js.map +1 -1
- package/dist/server/core/plugin-host/project-host.d.ts +38 -0
- package/dist/server/core/plugin-host/project-host.js +118 -0
- package/dist/server/core/plugin-host/project-host.js.map +1 -0
- package/dist/server/core/plugin-host/registry.d.ts +14 -0
- package/dist/server/core/plugin-host/registry.js +26 -0
- package/dist/server/core/plugin-host/registry.js.map +1 -0
- package/dist/server/core/plugin-host/serialization-engine.d.ts +38 -8
- package/dist/server/core/plugin-host/serialization-engine.js +63 -39
- package/dist/server/core/plugin-host/serialization-engine.js.map +1 -1
- package/dist/server/core/plugin-host/types.d.ts +49 -27
- package/dist/server/db/index.d.ts +8 -1
- package/dist/server/db/index.js +12 -3
- package/dist/server/db/index.js.map +1 -1
- package/dist/server/db/migrations/035_m29_slug_identity.sql +248 -0
- package/dist/server/db/readonly.d.ts +8 -3
- package/dist/server/db/readonly.js +7 -4
- package/dist/server/db/readonly.js.map +1 -1
- package/dist/server/domain/raw-entity-reader.d.ts +5 -5
- package/dist/server/domain/raw-entity-reader.js +34 -39
- package/dist/server/domain/raw-entity-reader.js.map +1 -1
- package/dist/server/entities/ac/ac-analysis.service.d.ts +54 -0
- package/dist/server/entities/ac/ac-analysis.service.js +162 -0
- package/dist/server/entities/ac/ac-analysis.service.js.map +1 -0
- package/dist/server/entities/ac/mcp-server.d.ts +10 -2
- package/dist/server/entities/ac/mcp-server.js +34 -3
- package/dist/server/entities/ac/mcp-server.js.map +1 -1
- package/dist/server/entities/ac/plugin.d.ts +3 -1
- package/dist/server/entities/ac/plugin.js +9 -5
- package/dist/server/entities/ac/plugin.js.map +1 -1
- package/dist/server/entities/ac/serializer.js +1 -1
- package/dist/server/entities/ac/serializer.js.map +1 -1
- package/dist/server/entities/ac/services.d.ts +19 -7
- package/dist/server/entities/ac/services.js +65 -42
- package/dist/server/entities/ac/services.js.map +1 -1
- package/dist/server/entities/ac/system-prompt.js +1 -8
- package/dist/server/entities/ac/system-prompt.js.map +1 -1
- package/dist/server/entities/database-table/mcp-server.d.ts +2 -2
- package/dist/server/entities/database-table/mcp-server.js +5 -2
- package/dist/server/entities/database-table/mcp-server.js.map +1 -1
- package/dist/server/entities/database-table/plugin.d.ts +3 -1
- package/dist/server/entities/database-table/plugin.js +6 -5
- package/dist/server/entities/database-table/plugin.js.map +1 -1
- package/dist/server/entities/database-table/routes.d.ts +2 -2
- package/dist/server/entities/database-table/serializer.js +1 -1
- package/dist/server/entities/database-table/serializer.js.map +1 -1
- package/dist/server/entities/database-table/services.d.ts +19 -7
- package/dist/server/entities/database-table/services.js +77 -49
- package/dist/server/entities/database-table/services.js.map +1 -1
- package/dist/server/entities/database-table/system-prompt.js +1 -1
- package/dist/server/entities/database-table/system-prompt.js.map +1 -1
- package/dist/server/entities/dto/mcp-server.d.ts +2 -2
- package/dist/server/entities/dto/mcp-server.js +5 -2
- package/dist/server/entities/dto/mcp-server.js.map +1 -1
- package/dist/server/entities/dto/plugin.d.ts +3 -1
- package/dist/server/entities/dto/plugin.js +6 -5
- package/dist/server/entities/dto/plugin.js.map +1 -1
- package/dist/server/entities/dto/serializer.js +2 -2
- package/dist/server/entities/dto/serializer.js.map +1 -1
- package/dist/server/entities/dto/services.d.ts +19 -7
- package/dist/server/entities/dto/services.js +73 -49
- package/dist/server/entities/dto/services.js.map +1 -1
- package/dist/server/entities/dto/system-prompt.js +1 -1
- package/dist/server/entities/dto/system-prompt.js.map +1 -1
- package/dist/server/entities/endpoint/mcp-server.d.ts +2 -2
- package/dist/server/entities/endpoint/mcp-server.js +5 -2
- package/dist/server/entities/endpoint/mcp-server.js.map +1 -1
- package/dist/server/entities/endpoint/plugin.d.ts +3 -1
- package/dist/server/entities/endpoint/plugin.js +6 -5
- package/dist/server/entities/endpoint/plugin.js.map +1 -1
- package/dist/server/entities/endpoint/serializer.js +4 -4
- package/dist/server/entities/endpoint/serializer.js.map +1 -1
- package/dist/server/entities/endpoint/services.d.ts +21 -9
- package/dist/server/entities/endpoint/services.js +94 -65
- package/dist/server/entities/endpoint/services.js.map +1 -1
- package/dist/server/entities/endpoint/system-prompt.js +1 -1
- package/dist/server/entities/endpoint/system-prompt.js.map +1 -1
- package/dist/server/entities/mutate-opts.d.ts +15 -0
- package/dist/server/entities/mutate-opts.js +2 -0
- package/dist/server/entities/mutate-opts.js.map +1 -0
- package/dist/server/entities/ui-view/mcp-server.d.ts +2 -2
- package/dist/server/entities/ui-view/mcp-server.js +5 -2
- package/dist/server/entities/ui-view/mcp-server.js.map +1 -1
- package/dist/server/entities/ui-view/plugin.d.ts +3 -1
- package/dist/server/entities/ui-view/plugin.js +6 -5
- package/dist/server/entities/ui-view/plugin.js.map +1 -1
- package/dist/server/entities/ui-view/routes.d.ts +2 -2
- package/dist/server/entities/ui-view/serializer.js +1 -1
- package/dist/server/entities/ui-view/serializer.js.map +1 -1
- package/dist/server/entities/ui-view/services.d.ts +19 -7
- package/dist/server/entities/ui-view/services.js +68 -44
- package/dist/server/entities/ui-view/services.js.map +1 -1
- package/dist/server/entities/ui-view/system-prompt.d.ts +0 -5
- package/dist/server/entities/ui-view/system-prompt.js +3 -7
- package/dist/server/entities/ui-view/system-prompt.js.map +1 -1
- package/dist/server/external-skills/brief-implementer-template.d.ts +1 -1
- package/dist/server/external-skills/brief-implementer-template.js +1 -1
- package/dist/server/external-skills/spec-reader-template.d.ts +1 -1
- package/dist/server/external-skills/spec-reader-template.js +3 -2
- package/dist/server/external-skills/spec-reader-template.js.map +1 -1
- package/dist/server/fs/entities-watcher.d.ts +31 -0
- package/dist/server/fs/entities-watcher.js +68 -0
- package/dist/server/fs/entities-watcher.js.map +1 -0
- package/dist/server/fs/watcher.d.ts +2 -2
- package/dist/server/fs/watcher.js +7 -1
- package/dist/server/fs/watcher.js.map +1 -1
- package/dist/server/index.d.ts +11 -1
- package/dist/server/index.js +134 -639
- package/dist/server/index.js.map +1 -1
- package/dist/server/mcp/c4s-reader.d.ts +2 -2
- package/dist/server/mcp/c4s-reader.js +41 -4
- package/dist/server/mcp/c4s-reader.js.map +1 -1
- package/dist/server/mcp/c4s-tools.js +2 -0
- package/dist/server/mcp/c4s-tools.js.map +1 -1
- package/dist/server/mcp/ensure-mcp-json.d.ts +9 -2
- package/dist/server/mcp/ensure-mcp-json.js +18 -4
- package/dist/server/mcp/ensure-mcp-json.js.map +1 -1
- package/dist/server/mcp/reference-tools.d.ts +8 -2
- package/dist/server/mcp/reference-tools.js +52 -179
- package/dist/server/mcp/reference-tools.js.map +1 -1
- package/dist/server/mcp/release-tools/index.d.ts +2 -2
- package/dist/server/routes/agent-turn.d.ts +41 -7
- package/dist/server/routes/agent-turn.js +84 -20
- package/dist/server/routes/agent-turn.js.map +1 -1
- package/dist/server/routes/chat.js +47 -15
- package/dist/server/routes/chat.js.map +1 -1
- package/dist/server/routes/config.d.ts +24 -0
- package/dist/server/routes/config.js +231 -0
- package/dist/server/routes/config.js.map +1 -0
- package/dist/server/routes/references.d.ts +2 -1
- package/dist/server/routes/references.js +4 -5
- package/dist/server/routes/references.js.map +1 -1
- package/dist/server/routes/releases.d.ts +2 -2
- package/dist/server/routes/static.d.ts +11 -0
- package/dist/server/routes/static.js +44 -0
- package/dist/server/routes/static.js.map +1 -0
- package/dist/server/routes/threads.js +14 -2
- package/dist/server/routes/threads.js.map +1 -1
- package/dist/server/serialization/auto-schema.d.ts +2 -1
- package/dist/server/serialization/auto-schema.js +5 -6
- package/dist/server/serialization/auto-schema.js.map +1 -1
- package/dist/server/serialization/registerAll.d.ts +7 -6
- package/dist/server/serialization/registerAll.js +17 -6
- package/dist/server/serialization/registerAll.js.map +1 -1
- package/dist/server/serialization/resolve-page.d.ts +2 -2
- package/dist/server/serialization/serializers/section.d.ts +6 -1
- package/dist/server/serialization/serializers/section.js +6 -3
- package/dist/server/serialization/serializers/section.js.map +1 -1
- package/dist/server/services/brief.d.ts +2 -2
- package/dist/server/services/chat-context.d.ts +24 -0
- package/dist/server/services/chat-context.js +70 -13
- package/dist/server/services/chat-context.js.map +1 -1
- package/dist/server/services/entity-indexer.d.ts +42 -0
- package/dist/server/services/entity-indexer.js +179 -0
- package/dist/server/services/entity-indexer.js.map +1 -0
- package/dist/server/services/entity-store.d.ts +68 -0
- package/dist/server/services/entity-store.js +162 -0
- package/dist/server/services/entity-store.js.map +1 -0
- package/dist/server/services/entity-writer.d.ts +12 -1
- package/dist/server/services/entity-writer.js +22 -11
- package/dist/server/services/entity-writer.js.map +1 -1
- package/dist/server/services/git.js +6 -1
- package/dist/server/services/git.js.map +1 -1
- package/dist/server/services/pages-frontmatter-indexer.d.ts +2 -2
- package/dist/server/services/pages-link-indexer.d.ts +2 -2
- package/dist/server/services/pages.d.ts +2 -0
- package/dist/server/services/pages.js +24 -9
- package/dist/server/services/pages.js.map +1 -1
- package/dist/server/services/plan.d.ts +2 -2
- package/dist/server/services/references.d.ts +25 -0
- package/dist/server/services/references.js +102 -21
- package/dist/server/services/references.js.map +1 -1
- package/dist/server/services/release-bundle.d.ts +0 -1
- package/dist/server/services/release-bundle.js +0 -1
- package/dist/server/services/release-bundle.js.map +1 -1
- package/dist/server/services/release-import.d.ts +2 -0
- package/dist/server/services/release-import.js +6 -4
- package/dist/server/services/release-import.js.map +1 -1
- package/dist/server/services/release.d.ts +10 -10
- package/dist/server/services/release.js +32 -63
- package/dist/server/services/release.js.map +1 -1
- package/dist/server/services/section-indexer.d.ts +4 -3
- package/dist/server/services/section-indexer.js +8 -9
- package/dist/server/services/section-indexer.js.map +1 -1
- package/dist/server/services/skill-registry.d.ts +28 -1
- package/dist/server/services/skill-registry.js +51 -10
- package/dist/server/services/skill-registry.js.map +1 -1
- package/dist/server/services/slug.js +6 -0
- package/dist/server/services/slug.js.map +1 -1
- package/dist/server/services/static-html.d.ts +24 -0
- package/dist/server/services/static-html.js +49 -0
- package/dist/server/services/static-html.js.map +1 -0
- package/dist/server/services/tags.d.ts +13 -3
- package/dist/server/services/tags.js +65 -26
- package/dist/server/services/tags.js.map +1 -1
- package/dist/server/services/todos-indexer.d.ts +2 -2
- package/dist/server/services/versions.d.ts +7 -7
- package/dist/server/services/versions.js +34 -37
- package/dist/server/services/versions.js.map +1 -1
- package/dist/server/workspace/bootstrap.d.ts +42 -0
- package/dist/server/workspace/bootstrap.js +73 -0
- package/dist/server/workspace/bootstrap.js.map +1 -0
- package/dist/server/workspace/context-cache.d.ts +48 -0
- package/dist/server/workspace/context-cache.js +147 -0
- package/dist/server/workspace/context-cache.js.map +1 -0
- package/dist/server/workspace/db-migration.d.ts +11 -0
- package/dist/server/workspace/db-migration.js +44 -0
- package/dist/server/workspace/db-migration.js.map +1 -0
- package/dist/server/workspace/middleware.d.ts +15 -0
- package/dist/server/workspace/middleware.js +36 -0
- package/dist/server/workspace/middleware.js.map +1 -0
- package/dist/server/workspace/project-context.d.ts +65 -0
- package/dist/server/workspace/project-context.js +655 -0
- package/dist/server/workspace/project-context.js.map +1 -0
- package/dist/server/workspace/project-id.d.ts +7 -0
- package/dist/server/workspace/project-id.js +11 -0
- package/dist/server/workspace/project-id.js.map +1 -0
- package/dist/server/workspace/registry.d.ts +58 -0
- package/dist/server/workspace/registry.js +264 -0
- package/dist/server/workspace/registry.js.map +1 -0
- package/dist/server/workspace/routes.d.ts +21 -0
- package/dist/server/workspace/routes.js +181 -0
- package/dist/server/workspace/routes.js.map +1 -0
- package/dist/server/workspace/types.d.ts +30 -0
- package/dist/server/workspace/types.js +6 -0
- package/dist/server/workspace/types.js.map +1 -0
- package/dist/server/ws/gateway.d.ts +12 -2
- package/dist/server/ws/gateway.js +51 -9
- package/dist/server/ws/gateway.js.map +1 -1
- package/dist/server/ws/project-emitter.d.ts +17 -0
- package/dist/server/ws/project-emitter.js +12 -0
- package/dist/server/ws/project-emitter.js.map +1 -0
- package/dist/shared/entities.d.ts +2 -2
- package/dist/shared/languages.d.ts +17 -0
- package/dist/shared/languages.js +31 -0
- package/dist/shared/languages.js.map +1 -0
- package/dist/shared/types.d.ts +11 -0
- package/dist/shared/xml-tags.d.ts +8 -0
- package/dist/shared/xml-tags.js +24 -0
- package/dist/shared/xml-tags.js.map +1 -1
- package/package.json +10 -3
- package/dist/client/assets/channel-BqjILLUr.js +0 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-LjT84-kK.js +0 -1
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-LjT84-kK.js +0 -1
- package/dist/client/assets/index-BTXWIk4x.css +0 -1
- package/dist/client/assets/index-DcIG_8JB.js +0 -760
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-C6-8M5Sb.js +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,35 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.0.16] - 2026-06-11
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- Project-less welcome page — a new `/welcome` route serves as an entry point when no project is active, letting users view and add projects to their workspace before selecting one. `WelcomePage` pairs with a server-side directory browser in `AddProjectDialog` for picking project directories.
|
|
12
|
+
- Multi-workspace support — projects can now belong to multiple workspaces, resolved through a new workspace registry. A `--workspace` CLI option disambiguates a project registered in more than one workspace, and a `ProjectSwitcher` UI plus `/api/workspace` routes manage workspace membership and project context.
|
|
13
|
+
- `describe` CLI command — returns on-demand JSON Schema for a given entity type or view, with error handling for invalid views, improving schema discovery for agents.
|
|
14
|
+
- Vitest testing framework — test infrastructure (`tsconfig.test.json`, `vitest.config.ts`, `tests/` helpers) plus an AC-coverage script (`scripts/ac-coverage.mjs`) and a broad initial suite of unit and integration tests across CLI, serialization, references, and DB migrations.
|
|
15
|
+
- `fable-5` chat model with adaptive thinking, surfaced across `ChatOverlay`, `UsageBadge`, and chat state.
|
|
16
|
+
- Onboarding configuration fields — a `DirectoriesSection` for specifying directory paths, `LanguageFields` (backed by `shared/languages.ts`), and a local "elevator pitch" project description field.
|
|
17
|
+
- Danger Zone settings section for destructive project actions.
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
- Major server refactor — `src/server/index.ts` (~1000 lines) decomposed into dedicated `server/workspace/` modules (registry, bootstrap, project-context, context-cache, middleware, db-migration) with project-scoped DB access and a per-project plugin host (`host.ts` → `project-host.ts`).
|
|
21
|
+
- `useEntityDraftEditor` hook standardizes draft management and autosave across all entity detail panels (AC, DTO, endpoint, table, UI view); `CreateBriefDialog` simplified by removing the extra prompt input.
|
|
22
|
+
- `catalog` command enriched with row counts, descriptions, `roleNoun`, and `mcpToolsLine` for better smoke-test output; entity system prompts clarified.
|
|
23
|
+
- `ChatOverlay` now prioritizes a one-shot seed prompt over draft input via a new `seedPrompt` store state, ensuring fresh context when starting seeded threads.
|
|
24
|
+
- Bumped `@inharness-ai/agent-adapters` to 0.6.4.
|
|
25
|
+
|
|
26
|
+
## [1.0.15] - 2026-06-09
|
|
27
|
+
|
|
28
|
+
### Added
|
|
29
|
+
- M30 Static HTML preview — new `HtmlViewer` component renders read-only previews of `.html` files, backed by a static file server (`static.ts` / `static-html.ts`) with secure access and proper MIME-type handling. `router.tsx` routes `.html` files to the viewer, the `Sidebar` shows distinct icons for `.html` vs `.md`, and `PagesService` plus the file watcher now recognize HTML files.
|
|
30
|
+
- Chat orchestration for seeded threads — `startSeededThread` seeds new chat threads with a prompt for immediate agent interaction, paired with a sticky `ActionBar` UI and a new AC analysis service (`ac-analysis.service.ts`). `StyleOption` / `WritingStyleList` / `ProjectSection` now badge user-defined writing styles.
|
|
31
|
+
- `find-references` CLI command and core reference-search logic (`core/references`) supporting static and dynamic references, with `ReferencesService` delegating to the shared core and extended XML-tag matching.
|
|
32
|
+
|
|
33
|
+
### Changed
|
|
34
|
+
- M29 Slug-Based Entity Identity — entities are now identified solely by slug, replacing the previous integer-ID system. Adds an `entitiesDir` config option for committed entity JSON files, an `EntityStore` / `EntityIndexer` / `EntitiesWatcher`, a `MutateOpts` interface for granular control over file persistence, and migration `035_m29_slug_identity` for the ID→slug transition.
|
|
35
|
+
- `UsageBadge` context-window occupancy now uses the sum of input and output tokens for accurate context-utilization display.
|
|
36
|
+
|
|
8
37
|
## [1.0.14] - 2026-06-03
|
|
9
38
|
|
|
10
39
|
### Removed
|
|
@@ -150,6 +179,8 @@ Initial public release.
|
|
|
150
179
|
- Acceptance Criteria entity and tooling.
|
|
151
180
|
- Briefs and patches workflow for spec-driven implementation.
|
|
152
181
|
|
|
182
|
+
[1.0.16]: https://github.com/InHarness/claude4spec/compare/v1.0.15...v1.0.16
|
|
183
|
+
[1.0.15]: https://github.com/InHarness/claude4spec/compare/v1.0.14...v1.0.15
|
|
153
184
|
[1.0.14]: https://github.com/InHarness/claude4spec/compare/v1.0.13...v1.0.14
|
|
154
185
|
[1.0.13]: https://github.com/InHarness/claude4spec/compare/v1.0.12...v1.0.13
|
|
155
186
|
[1.0.12]: https://github.com/InHarness/claude4spec/compare/v1.0.11...v1.0.12
|
package/dist/bin/c4s/args.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ export interface ParsedArgs {
|
|
|
3
3
|
positional: string[];
|
|
4
4
|
flags: Map<string, string | boolean>;
|
|
5
5
|
project?: string;
|
|
6
|
+
/** M31: workspace selector — disambiguates a cwd registered in N workspaces. */
|
|
7
|
+
workspace?: string;
|
|
6
8
|
format: 'json' | 'text';
|
|
7
9
|
compact: boolean;
|
|
8
10
|
sortKeys: boolean;
|
package/dist/bin/c4s/args.js
CHANGED
|
@@ -57,6 +57,9 @@ export function parseArgs(argv) {
|
|
|
57
57
|
const project = result.flags.get('project');
|
|
58
58
|
if (typeof project === 'string')
|
|
59
59
|
result.project = project;
|
|
60
|
+
const workspace = result.flags.get('workspace');
|
|
61
|
+
if (typeof workspace === 'string')
|
|
62
|
+
result.workspace = workspace;
|
|
60
63
|
return result;
|
|
61
64
|
}
|
|
62
65
|
export function requireString(args, flag) {
|
package/dist/bin/c4s/args.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../../src/bin/c4s/args.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../../src/bin/c4s/args.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,7 @@ export async function runAsk_cli(args) {
|
|
|
23
23
|
const briefPath = optionalString(args, 'brief');
|
|
24
24
|
const server = optionalString(args, 'server');
|
|
25
25
|
const project = args.project;
|
|
26
|
+
const workspace = args.workspace;
|
|
26
27
|
if (project && server) {
|
|
27
28
|
// Mutex `project` vs `server` — gdy oba podane, `server` wygrywa; CLI
|
|
28
29
|
// dopisuje warning na stderr (dla MCP analogicznie, ale przez tool_result).
|
|
@@ -46,6 +47,7 @@ export async function runAsk_cli(args) {
|
|
|
46
47
|
result = await runAsk({
|
|
47
48
|
message,
|
|
48
49
|
project,
|
|
50
|
+
workspace,
|
|
49
51
|
server,
|
|
50
52
|
contextType: ct,
|
|
51
53
|
threadId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask.js","sourceRoot":"","sources":["../../../../src/bin/c4s/commands/ask.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAqB,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAuB,MAAM,8BAA8B,CAAC;AAErF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAgB;IAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QAChC,MAAM,IAAI,QAAQ,CAAC,cAAc,EAAE,gDAAgD,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAChD,MAAM,EAAE,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ask.js","sourceRoot":"","sources":["../../../../src/bin/c4s/commands/ask.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import { writeOutput } from '../output.js';
|
|
|
6
6
|
export function runCatalog(args) {
|
|
7
7
|
const ctx = createContext(args);
|
|
8
8
|
try {
|
|
9
|
-
const catalog = ctx.registry.catalog(ctx.reader
|
|
9
|
+
const catalog = ctx.registry.catalog(ctx.reader);
|
|
10
10
|
writeOutput({ ...catalog, claude4spec: readPackageVersion() }, args);
|
|
11
11
|
}
|
|
12
12
|
finally {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../../src/bin/c4s/commands/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,UAAU,UAAU,CAAC,IAAgB;IACzC,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../../src/bin/c4s/commands/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,UAAU,UAAU,CAAC,IAAgB;IACzC,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjD,WAAW,CAAC,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IACvE,CAAC;YAAS,CAAC;QACT,GAAG,CAAC,KAAK,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB;IACzB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1D,6EAA6E;QAC7E,MAAM,KAAK,GAAG;YACZ,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YAC1C,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;SACrC,CAAC;QACF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YAChD,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAyB,CAAC;gBACjF,IAAI,GAAG,CAAC,OAAO;oBAAE,OAAO,GAAG,CAAC,OAAO,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,YAAY;IACd,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { optionalString, requireString } from '../args.js';
|
|
2
|
+
import { createContext } from '../context.js';
|
|
3
|
+
import { CliError } from '../errors.js';
|
|
4
|
+
import { writeOutput } from '../output.js';
|
|
5
|
+
import { normalizeEntityType, normalizeViewKind } from '../type-validation.js';
|
|
6
|
+
export function runDescribe(args) {
|
|
7
|
+
const type = normalizeEntityType(requireString(args, 'type'));
|
|
8
|
+
const viewFlag = optionalString(args, 'view');
|
|
9
|
+
const view = viewFlag ? normalizeViewKind(viewFlag) : undefined;
|
|
10
|
+
const ctx = createContext(args);
|
|
11
|
+
try {
|
|
12
|
+
const result = ctx.registry.describe(type, view, ctx.db);
|
|
13
|
+
if (!result) {
|
|
14
|
+
throw new CliError('INVALID_TYPE', `entity type '${type}' is not active`, 'run `c4s catalog` for the list of active types');
|
|
15
|
+
}
|
|
16
|
+
writeOutput(result, args);
|
|
17
|
+
}
|
|
18
|
+
finally {
|
|
19
|
+
ctx.close();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=describe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"describe.js","sourceRoot":"","sources":["../../../../src/bin/c4s/commands/describe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAmB,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/E,MAAM,UAAU,WAAW,CAAC,IAAgB;IAC1C,MAAM,IAAI,GAAG,mBAAmB,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChE,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,QAAQ,CAChB,cAAc,EACd,gBAAgB,IAAI,iBAAiB,EACrC,gDAAgD,CACjD,CAAC;QACJ,CAAC;QACD,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;YAAS,CAAC;QACT,GAAG,CAAC,KAAK,EAAE,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ParsedArgs } from '../args.js';
|
|
2
|
+
/**
|
|
3
|
+
* Graph reader (M11 owns the command, M19 owns the logic). Readonly: opens
|
|
4
|
+
* SQLite `readonly: true, fileMustExist: true` and walks `pages/` directly — no
|
|
5
|
+
* running `npx @inharness-ai/claude4spec` server required. Delegates to the references core;
|
|
6
|
+
* no L9 serializers.
|
|
7
|
+
*
|
|
8
|
+
* c4s find-references --type <t> --slug <s> [--include-tag-matches] [--format json|text]
|
|
9
|
+
*
|
|
10
|
+
* Output: array of refs. Direct rows carry no extra field; with
|
|
11
|
+
* `--include-tag-matches`, dynamic rows add `via: [tag, ...]` — parity with MCP.
|
|
12
|
+
*/
|
|
13
|
+
export declare function runFindReferences(args: ParsedArgs): Promise<void>;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import fs from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import matter from 'gray-matter';
|
|
4
|
+
import { requireString, optionalString } from '../args.js';
|
|
5
|
+
import { createContext } from '../context.js';
|
|
6
|
+
import { writeOutput } from '../output.js';
|
|
7
|
+
import { normalizeEntityType } from '../type-validation.js';
|
|
8
|
+
import { findReferences } from '../../../core/references/index.js';
|
|
9
|
+
import { TagsService } from '../../../server/services/tags.js';
|
|
10
|
+
import { readConfig } from '../../../server/config.js';
|
|
11
|
+
/**
|
|
12
|
+
* Graph reader (M11 owns the command, M19 owns the logic). Readonly: opens
|
|
13
|
+
* SQLite `readonly: true, fileMustExist: true` and walks `pages/` directly — no
|
|
14
|
+
* running `npx @inharness-ai/claude4spec` server required. Delegates to the references core;
|
|
15
|
+
* no L9 serializers.
|
|
16
|
+
*
|
|
17
|
+
* c4s find-references --type <t> --slug <s> [--include-tag-matches] [--format json|text]
|
|
18
|
+
*
|
|
19
|
+
* Output: array of refs. Direct rows carry no extra field; with
|
|
20
|
+
* `--include-tag-matches`, dynamic rows add `via: [tag, ...]` — parity with MCP.
|
|
21
|
+
*/
|
|
22
|
+
export async function runFindReferences(args) {
|
|
23
|
+
const type = normalizeEntityType(requireString(args, 'type'));
|
|
24
|
+
const slug = requireString(args, 'slug');
|
|
25
|
+
const itm = args.flags.get('include-tag-matches');
|
|
26
|
+
const includeTagMatches = itm === true || itm === 'true';
|
|
27
|
+
const ctx = createContext(args);
|
|
28
|
+
try {
|
|
29
|
+
const tags = new TagsService(ctx.db);
|
|
30
|
+
// Honor the project's configured pagesDir (CLI flag > config.json > 'pages');
|
|
31
|
+
// for projects with pagesDir: '.' the walk roots at the project dir and the
|
|
32
|
+
// dotfile skip below excludes .claude4spec/.git (parity with PagesService).
|
|
33
|
+
const pagesDir = optionalString(args, 'pages') ?? readConfig(ctx.projectDir).pagesDir;
|
|
34
|
+
const pagesRoot = path.join(ctx.projectDir, pagesDir);
|
|
35
|
+
const hits = await findReferences({
|
|
36
|
+
pages: { listPages: () => collectPages(pagesRoot) },
|
|
37
|
+
host: { entityExists: (t, s) => ctx.reader.getEntity(t, s) != null },
|
|
38
|
+
getEntityTagSlugs: (t, s) => tags.getEntityTagSlugs(t, s),
|
|
39
|
+
}, type, slug, { includeTagMatches });
|
|
40
|
+
const refs = hits.map((h) => h.via
|
|
41
|
+
? { pagePath: h.pagePath, tagType: h.tagType, line: h.line, via: h.via }
|
|
42
|
+
: { pagePath: h.pagePath, tagType: h.tagType, line: h.line });
|
|
43
|
+
writeOutput(refs, args);
|
|
44
|
+
}
|
|
45
|
+
finally {
|
|
46
|
+
ctx.close();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Recursively collect `.md` pages under `pagesDir`, returning frontmatter-stripped
|
|
51
|
+
* bodies with project-relative posix paths (parity with PagesService). A missing
|
|
52
|
+
* `pages/` dir yields no refs.
|
|
53
|
+
*/
|
|
54
|
+
async function collectPages(pagesDir) {
|
|
55
|
+
const out = [];
|
|
56
|
+
async function walk(absDir, rel) {
|
|
57
|
+
let entries;
|
|
58
|
+
try {
|
|
59
|
+
entries = await fs.readdir(absDir, { withFileTypes: true });
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
for (const e of entries) {
|
|
65
|
+
if (e.name.startsWith('.'))
|
|
66
|
+
continue; // skip .claude4spec/.git/... — parity with PagesService
|
|
67
|
+
const childRel = rel ? `${rel}/${e.name}` : e.name;
|
|
68
|
+
const childAbs = path.join(absDir, e.name);
|
|
69
|
+
if (e.isDirectory()) {
|
|
70
|
+
await walk(childAbs, childRel);
|
|
71
|
+
}
|
|
72
|
+
else if (e.isFile() && e.name.endsWith('.md')) {
|
|
73
|
+
const raw = await fs.readFile(childAbs, 'utf-8');
|
|
74
|
+
out.push({ path: childRel, body: matter(raw).content });
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
await walk(pagesDir, '');
|
|
79
|
+
return out;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=find-references.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-references.js","sourceRoot":"","sources":["../../../../src/bin/c4s/commands/find-references.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { RawEntityReader } from '../../server/domain/raw-entity-reader.js';
|
|
2
|
-
import {
|
|
3
|
-
import '../../server/
|
|
2
|
+
import type { SerializationEngine } from '../../server/core/plugin-host/serialization-engine.js';
|
|
3
|
+
import { buildCliSerializationEngine } from '../../server/core/plugin-host/cli-engine.js';
|
|
4
4
|
import type { ParsedArgs } from './args.js';
|
|
5
5
|
export interface CliContext {
|
|
6
6
|
projectDir: string;
|
|
7
7
|
reader: RawEntityReader;
|
|
8
|
-
registry:
|
|
8
|
+
registry: SerializationEngine;
|
|
9
9
|
db: import('better-sqlite3').Database;
|
|
10
10
|
close: () => void;
|
|
11
11
|
}
|
|
12
|
+
export { buildCliSerializationEngine };
|
|
12
13
|
export declare function createContext(args: ParsedArgs): CliContext;
|
package/dist/bin/c4s/context.js
CHANGED
|
@@ -1,18 +1,29 @@
|
|
|
1
1
|
import { openDbReadonly, ReadonlyDbError } from '../../server/db/readonly.js';
|
|
2
2
|
import { RawEntityReader } from '../../server/domain/raw-entity-reader.js';
|
|
3
|
-
import {
|
|
4
|
-
import '../../
|
|
3
|
+
import { buildCliSerializationEngine } from '../../server/core/plugin-host/cli-engine.js';
|
|
4
|
+
import { resolveWorkspaceProject, WorkspaceResolveError } from '../../core/workspace/resolve.js';
|
|
5
5
|
import { CliError } from './errors.js';
|
|
6
|
-
|
|
6
|
+
export { buildCliSerializationEngine };
|
|
7
7
|
export function createContext(args) {
|
|
8
|
-
|
|
8
|
+
let resolved;
|
|
9
9
|
try {
|
|
10
|
-
|
|
10
|
+
// M31: 0/1/N registry resolution BEFORE any db access.
|
|
11
|
+
resolved = resolveWorkspaceProject({ project: args.project, workspace: args.workspace });
|
|
12
|
+
}
|
|
13
|
+
catch (err) {
|
|
14
|
+
if (err instanceof WorkspaceResolveError) {
|
|
15
|
+
throw new CliError(err.code, err.message, err.hint);
|
|
16
|
+
}
|
|
17
|
+
throw err;
|
|
18
|
+
}
|
|
19
|
+
const projectDir = resolved.projectDir;
|
|
20
|
+
try {
|
|
21
|
+
const { handle, close } = openDbReadonly(resolved.dbPath);
|
|
11
22
|
const reader = new RawEntityReader(handle);
|
|
12
23
|
return {
|
|
13
24
|
projectDir,
|
|
14
25
|
reader,
|
|
15
|
-
registry:
|
|
26
|
+
registry: buildCliSerializationEngine(),
|
|
16
27
|
db: handle,
|
|
17
28
|
close,
|
|
18
29
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/bin/c4s/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/bin/c4s/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAE3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAC;AAC1F,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACjG,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAWvC,OAAO,EAAE,2BAA2B,EAAE,CAAC;AAEvC,MAAM,UAAU,aAAa,CAAC,IAAgB;IAC5C,IAAI,QAAQ,CAAC;IACb,IAAI,CAAC;QACH,uDAAuD;QACvD,QAAQ,GAAG,uBAAuB,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC3F,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,qBAAqB,EAAE,CAAC;YACzC,MAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;IACvC,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;QAC3C,OAAO;YACL,UAAU;YACV,MAAM;YACN,QAAQ,EAAE,2BAA2B,EAAE;YACvC,EAAE,EAAE,MAAM;YACV,KAAK;SACN,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,eAAe,EAAE,CAAC;YACnC,MAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
|
package/dist/bin/c4s/errors.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type CliErrorCode = 'PROJECT_NOT_FOUND' | 'ENTITY_NOT_FOUND' | 'SECTION_NOT_FOUND' | 'INVALID_TYPE' | 'INVALID_ARGS' | 'AMBIGUOUS_SLUGS' | 'SCHEMA_OUT_OF_DATE' | 'FILE_NOT_FOUND' | 'UNKNOWN_COMMAND' | 'SERVER_NOT_RUNNING' | 'SERVER_NOT_RECOGNIZED' | 'NOT_FOUND' | 'STREAM_IN_PROGRESS' | 'AGENT_UNAVAILABLE' | 'AGENT_ERROR' | 'TIMEOUT' | 'ABORTED';
|
|
1
|
+
export type CliErrorCode = 'PROJECT_NOT_FOUND' | 'ENTITY_NOT_FOUND' | 'SECTION_NOT_FOUND' | 'INVALID_TYPE' | 'INVALID_VIEW' | 'INVALID_ARGS' | 'AMBIGUOUS_SLUGS' | 'SCHEMA_OUT_OF_DATE' | 'FILE_NOT_FOUND' | 'UNKNOWN_COMMAND' | 'SERVER_NOT_RUNNING' | 'SERVER_NOT_RECOGNIZED' | 'NOT_FOUND' | 'STREAM_IN_PROGRESS' | 'AGENT_UNAVAILABLE' | 'AGENT_ERROR' | 'TIMEOUT' | 'ABORTED' | 'AMBIGUOUS_WORKSPACE' | 'INDEX_NOT_MATERIALIZED' | 'PROJECT_NOT_IN_WORKSPACE';
|
|
2
2
|
export declare class CliError extends Error {
|
|
3
3
|
code: CliErrorCode;
|
|
4
4
|
hint?: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/bin/c4s/errors.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/bin/c4s/errors.ts"],"names":[],"mappings":"AAyBA,MAAM,OAAO,QAAS,SAAQ,KAAK;IACd;IAA4C;IAA/D,YAAmB,IAAkB,EAAE,OAAe,EAAS,IAAa;QAC1E,KAAK,CAAC,OAAO,CAAC,CAAC;QADE,SAAI,GAAJ,IAAI,CAAc;QAA0B,SAAI,GAAJ,IAAI,CAAS;QAE1E,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
import { type RawEntityType } from '../../server/domain/raw-entity-reader.js';
|
|
2
|
+
import type { ViewKind } from '../../server/serialization/types.js';
|
|
2
3
|
/** Accepts both 'database-table' (canonical) and 'database_table' (spec-alias). */
|
|
3
4
|
export declare function normalizeEntityType(raw: string): RawEntityType;
|
|
5
|
+
/** Validates a view kind, throwing INVALID_VIEW when outside the ViewKind enum. */
|
|
6
|
+
export declare function normalizeViewKind(raw: string): ViewKind;
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import { isRawEntityType } from '../../server/domain/raw-entity-reader.js';
|
|
2
2
|
import { CliError } from './errors.js';
|
|
3
|
+
const VIEW_KINDS = [
|
|
4
|
+
'inline_mention',
|
|
5
|
+
'single_element',
|
|
6
|
+
'element_list_item',
|
|
7
|
+
'tagged_list_item',
|
|
8
|
+
'detail',
|
|
9
|
+
];
|
|
3
10
|
/** Accepts both 'database-table' (canonical) and 'database_table' (spec-alias). */
|
|
4
11
|
export function normalizeEntityType(raw) {
|
|
5
12
|
const normalized = raw === 'database_table' ? 'database-table' : raw;
|
|
@@ -8,4 +15,11 @@ export function normalizeEntityType(raw) {
|
|
|
8
15
|
}
|
|
9
16
|
return normalized;
|
|
10
17
|
}
|
|
18
|
+
/** Validates a view kind, throwing INVALID_VIEW when outside the ViewKind enum. */
|
|
19
|
+
export function normalizeViewKind(raw) {
|
|
20
|
+
if (!VIEW_KINDS.includes(raw)) {
|
|
21
|
+
throw new CliError('INVALID_VIEW', `unknown view '${raw}'`, `allowed: ${VIEW_KINDS.join(', ')}`);
|
|
22
|
+
}
|
|
23
|
+
return raw;
|
|
24
|
+
}
|
|
11
25
|
//# sourceMappingURL=type-validation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-validation.js","sourceRoot":"","sources":["../../../src/bin/c4s/type-validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAsB,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"type-validation.js","sourceRoot":"","sources":["../../../src/bin/c4s/type-validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAsB,MAAM,0CAA0C,CAAC;AAE/F,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,UAAU,GAAwB;IACtC,gBAAgB;IAChB,gBAAgB;IAChB,mBAAmB;IACnB,kBAAkB;IAClB,QAAQ;CACT,CAAC;AAEF,mFAAmF;AACnF,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,MAAM,UAAU,GAAG,GAAG,KAAK,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC;IACrE,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,QAAQ,CAChB,cAAc,EACd,wBAAwB,GAAG,GAAG,EAC9B,+FAA+F,CAChG,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAe,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,QAAQ,CAChB,cAAc,EACd,iBAAiB,GAAG,GAAG,EACvB,YAAY,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACpC,CAAC;IACJ,CAAC;IACD,OAAO,GAAe,CAAC;AACzB,CAAC"}
|
package/dist/bin/c4s-mcp.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
2
|
+
export {};
|
package/dist/bin/c4s-mcp.js
CHANGED
|
@@ -4,20 +4,21 @@ import path from 'node:path';
|
|
|
4
4
|
import { fileURLToPath } from 'node:url';
|
|
5
5
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
6
6
|
import { openDbReadonly, ReadonlyDbError } from '../server/db/readonly.js';
|
|
7
|
+
import { resolveWorkspaceProject, WorkspaceResolveError } from '../core/workspace/resolve.js';
|
|
7
8
|
import { RawEntityReader } from '../server/domain/raw-entity-reader.js';
|
|
8
|
-
import {
|
|
9
|
-
import '../server/serialization/registerAll.js';
|
|
9
|
+
import { buildCliSerializationEngine } from './c4s/context.js';
|
|
10
10
|
import { createC4sReaderServer } from '../server/mcp/c4s-reader.js';
|
|
11
|
-
import { resolveProject } from './c4s/project.js';
|
|
12
11
|
import { CliError } from './c4s/errors.js';
|
|
13
12
|
const HELP = `Usage: c4s-mcp [options]
|
|
14
13
|
|
|
15
14
|
Standalone stdio MCP server exposing readonly access to a claude4spec project.
|
|
16
15
|
|
|
17
16
|
Options:
|
|
18
|
-
--project <path>
|
|
19
|
-
--
|
|
20
|
-
|
|
17
|
+
--project <path> Path to the claude4spec project (default: walk-up from cwd)
|
|
18
|
+
--workspace <name> Workspace to resolve the project's DB slot in (required
|
|
19
|
+
when the project is registered in more than one)
|
|
20
|
+
--help Show this help
|
|
21
|
+
--version Print version
|
|
21
22
|
|
|
22
23
|
Register in your editor's MCP config (e.g. .mcp.json):
|
|
23
24
|
|
|
@@ -25,7 +26,7 @@ Register in your editor's MCP config (e.g. .mcp.json):
|
|
|
25
26
|
"mcpServers": {
|
|
26
27
|
"c4s-reader": {
|
|
27
28
|
"command": "c4s-mcp",
|
|
28
|
-
"args": ["--project", "/path/to/spec"]
|
|
29
|
+
"args": ["--project", "/path/to/spec", "--workspace", "default"]
|
|
29
30
|
}
|
|
30
31
|
}
|
|
31
32
|
}
|
|
@@ -42,6 +43,10 @@ function parseArgs(argv) {
|
|
|
42
43
|
args.project = argv[++i];
|
|
43
44
|
else if (a?.startsWith('--project='))
|
|
44
45
|
args.project = a.split('=')[1];
|
|
46
|
+
else if (a === '--workspace' && argv[i + 1])
|
|
47
|
+
args.workspace = argv[++i];
|
|
48
|
+
else if (a?.startsWith('--workspace='))
|
|
49
|
+
args.workspace = a.split('=')[1];
|
|
45
50
|
}
|
|
46
51
|
return args;
|
|
47
52
|
}
|
|
@@ -81,22 +86,28 @@ async function main() {
|
|
|
81
86
|
let db = null;
|
|
82
87
|
let close = null;
|
|
83
88
|
try {
|
|
84
|
-
|
|
85
|
-
|
|
89
|
+
// M31: registry-based resolution → workspace DB slot. The degraded-start
|
|
90
|
+
// pattern keeps AMBIGUOUS_WORKSPACE / INDEX_NOT_MATERIALIZED as tool-level
|
|
91
|
+
// errors instead of failing the MCP handshake.
|
|
92
|
+
const resolved = resolveWorkspaceProject({ project: args.project, workspace: args.workspace });
|
|
93
|
+
projectDir = resolved.projectDir;
|
|
94
|
+
const opened = openDbReadonly(resolved.dbPath);
|
|
86
95
|
db = opened.handle;
|
|
87
96
|
close = opened.close;
|
|
88
97
|
reader = new RawEntityReader(db);
|
|
89
|
-
process.stderr.write(`c4s-mcp ${version} ready (project: ${projectDir})\n`);
|
|
98
|
+
process.stderr.write(`c4s-mcp ${version} ready (project: ${projectDir}, workspace: ${resolved.workspaceName})\n`);
|
|
90
99
|
}
|
|
91
100
|
catch (err) {
|
|
92
|
-
const code = err instanceof CliError || err instanceof ReadonlyDbError
|
|
101
|
+
const code = err instanceof CliError || err instanceof ReadonlyDbError || err instanceof WorkspaceResolveError
|
|
102
|
+
? err.code
|
|
103
|
+
: 'PROJECT_NOT_FOUND';
|
|
93
104
|
const message = err instanceof Error ? err.message : String(err);
|
|
94
105
|
process.stderr.write(`c4s-mcp ${version} started without a project (${code}: ${message})\n` +
|
|
95
106
|
`tools will return errors until --project is provided\n`);
|
|
96
107
|
}
|
|
97
108
|
const { server } = createC4sReaderServer({
|
|
98
109
|
reader,
|
|
99
|
-
registry:
|
|
110
|
+
registry: buildCliSerializationEngine(),
|
|
100
111
|
db,
|
|
101
112
|
projectDir,
|
|
102
113
|
packageVersion: version,
|
package/dist/bin/c4s-mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c4s-mcp.js","sourceRoot":"","sources":["../../src/bin/c4s-mcp.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"c4s-mcp.js","sourceRoot":"","sources":["../../src/bin/c4s-mcp.ts"],"names":[],"mappings":"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"}
|
package/dist/bin/c4s.js
CHANGED
|
@@ -12,8 +12,10 @@ import { runTaggedList } from './c4s/commands/tagged-list.js';
|
|
|
12
12
|
import { runTaggedListMixed } from './c4s/commands/tagged-list-mixed.js';
|
|
13
13
|
import { runDetail } from './c4s/commands/detail.js';
|
|
14
14
|
import { runCatalog } from './c4s/commands/catalog.js';
|
|
15
|
+
import { runDescribe } from './c4s/commands/describe.js';
|
|
15
16
|
import { runListTags } from './c4s/commands/list-tags.js';
|
|
16
17
|
import { runListSlugs } from './c4s/commands/list-slugs.js';
|
|
18
|
+
import { runFindReferences } from './c4s/commands/find-references.js';
|
|
17
19
|
import { runResolve } from './c4s/commands/resolve.js';
|
|
18
20
|
import { runAsk } from './c4s/commands/ask.js';
|
|
19
21
|
const HELP = `Usage: c4s <command> [options]
|
|
@@ -28,22 +30,27 @@ Tag commands (1:1 with XML tag names):
|
|
|
28
30
|
Detail view (no XML counterpart):
|
|
29
31
|
detail --type <t> --slug <s>
|
|
30
32
|
|
|
33
|
+
Graph reader (no XML counterpart):
|
|
34
|
+
find-references --type <t> --slug <s> [--include-tag-matches]
|
|
35
|
+
|
|
31
36
|
Utility:
|
|
32
37
|
resolve <file.md> [--format inline|json]
|
|
33
38
|
|
|
34
|
-
Agent Q&A (requires a running \`npx claude4spec\` server):
|
|
39
|
+
Agent Q&A (requires a running \`npx @inharness-ai/claude4spec\` server):
|
|
35
40
|
ask "<msg>" --ct chat
|
|
36
41
|
ask "<msg>" --ct brief --brief <path>
|
|
37
42
|
ask "<msg>" --thread <id>
|
|
38
43
|
--server <url> override server discovery (remote / one-off --port)
|
|
39
44
|
|
|
40
45
|
Discovery:
|
|
41
|
-
catalog
|
|
46
|
+
catalog counts + version + description + roleNoun + mcpToolsLine per type (smoke test)
|
|
47
|
+
describe --type <t> [--view <v>] JSON Schema per view for one type (on-demand)
|
|
42
48
|
list-tags
|
|
43
49
|
list-slugs --type <t>
|
|
44
50
|
|
|
45
51
|
Global flags:
|
|
46
|
-
--project <path> override project dir (default: walk-up
|
|
52
|
+
--project <path> override project dir (default: walk-up against the workspace registry)
|
|
53
|
+
--workspace <name> pick the workspace when the project is registered in more than one
|
|
47
54
|
--format json|text output format (default: json; resolve default: inline)
|
|
48
55
|
--compact minified JSON (for pipelines)
|
|
49
56
|
--sort-keys deterministic key order in JSON
|
|
@@ -81,10 +88,14 @@ async function main() {
|
|
|
81
88
|
return runResolve(args);
|
|
82
89
|
case 'catalog':
|
|
83
90
|
return runCatalog(args);
|
|
91
|
+
case 'describe':
|
|
92
|
+
return runDescribe(args);
|
|
84
93
|
case 'list-tags':
|
|
85
94
|
return runListTags(args);
|
|
86
95
|
case 'list-slugs':
|
|
87
96
|
return runListSlugs(args);
|
|
97
|
+
case 'find-references':
|
|
98
|
+
return runFindReferences(args);
|
|
88
99
|
case 'ask':
|
|
89
100
|
return runAsk(args);
|
|
90
101
|
default:
|
|
@@ -127,12 +138,18 @@ function codeToExit(code) {
|
|
|
127
138
|
case 'ENTITY_NOT_FOUND':
|
|
128
139
|
return 3;
|
|
129
140
|
case 'INVALID_TYPE':
|
|
141
|
+
case 'INVALID_VIEW':
|
|
130
142
|
case 'INVALID_ARGS':
|
|
131
143
|
return 4;
|
|
132
144
|
case 'FILE_NOT_FOUND':
|
|
133
145
|
return 5;
|
|
134
146
|
case 'SCHEMA_OUT_OF_DATE':
|
|
135
147
|
return 6;
|
|
148
|
+
case 'AMBIGUOUS_WORKSPACE':
|
|
149
|
+
return 7;
|
|
150
|
+
case 'INDEX_NOT_MATERIALIZED':
|
|
151
|
+
return 8;
|
|
152
|
+
// PROJECT_NOT_IN_WORKSPACE → 1 (ask-group, like other server-side ask errors)
|
|
136
153
|
default:
|
|
137
154
|
return 1;
|
|
138
155
|
}
|
package/dist/bin/c4s.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c4s.js","sourceRoot":"","sources":["../../src/bin/c4s.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,MAAM,IAAI,GAAG
|
|
1
|
+
{"version":3,"file":"c4s.js","sourceRoot":"","sources":["../../src/bin/c4s.ts"],"names":[],"mappings":"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"}
|