@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
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { projectIdForCwd } from './project-id.js';
|
|
4
|
+
import { slotDirFor } from './registry.js';
|
|
5
|
+
function moveFile(src, dest) {
|
|
6
|
+
try {
|
|
7
|
+
fs.renameSync(src, dest);
|
|
8
|
+
}
|
|
9
|
+
catch (err) {
|
|
10
|
+
// EXDEV: project dir and ~/.claude4spec on different volumes — copy+unlink.
|
|
11
|
+
if (err.code !== 'EXDEV')
|
|
12
|
+
throw err;
|
|
13
|
+
fs.copyFileSync(src, dest);
|
|
14
|
+
fs.unlinkSync(src);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* M31 first-registration hook: a pre-workspace project keeps its derived index
|
|
19
|
+
* at `<cwd>/.claude4spec/db.sqlite`. If NO workspace anywhere owns a populated
|
|
20
|
+
* slot for this project-id yet, the legacy DB (+ WAL sidecars) moves to
|
|
21
|
+
* `~/.claude4spec/<ws>/<id>/db.sqlite`. A second workspace registering the
|
|
22
|
+
* same cwd later starts with an empty slot (the index is derived — it rebuilds
|
|
23
|
+
* from the committed entity files at boot).
|
|
24
|
+
*/
|
|
25
|
+
export function migrateLegacyDbIfNeeded(registry, ws, cwd) {
|
|
26
|
+
const legacyDb = path.join(cwd, '.claude4spec', 'db.sqlite');
|
|
27
|
+
if (!fs.existsSync(legacyDb))
|
|
28
|
+
return false;
|
|
29
|
+
const id = projectIdForCwd(cwd);
|
|
30
|
+
for (const w of registry.listWorkspaces()) {
|
|
31
|
+
if (fs.existsSync(path.join(slotDirFor(w.name, id), 'db.sqlite')))
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
const dest = registry.slotDir(ws, id);
|
|
35
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
36
|
+
for (const suffix of ['', '-wal', '-shm']) {
|
|
37
|
+
const src = legacyDb + suffix;
|
|
38
|
+
if (fs.existsSync(src))
|
|
39
|
+
moveFile(src, path.join(dest, 'db.sqlite' + suffix));
|
|
40
|
+
}
|
|
41
|
+
console.log(`[workspace] db migrated: ${legacyDb} → ${path.join(dest, 'db.sqlite')}`);
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=db-migration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db-migration.js","sourceRoot":"","sources":["../../../src/server/workspace/db-migration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,UAAU,EAA0B,MAAM,eAAe,CAAC;AAGnE,SAAS,QAAQ,CAAC,GAAW,EAAE,IAAY;IACzC,IAAI,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,4EAA4E;QAC5E,IAAK,GAA6B,CAAC,IAAI,KAAK,OAAO;YAAE,MAAM,GAAG,CAAC;QAC/D,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC3B,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CACrC,QAA2B,EAC3B,EAAmB,EACnB,GAAW;IAEX,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;IAC7D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAE3C,MAAM,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAChC,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC;QAC1C,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IAClF,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACtC,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,KAAK,MAAM,MAAM,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,QAAQ,GAAG,MAAM,CAAC;QAC9B,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,4BAA4B,QAAQ,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;IACtF,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { RequestHandler } from 'express';
|
|
2
|
+
import { type ProjectContextCache } from './context-cache.js';
|
|
3
|
+
import type { WorkspaceRegistry } from './registry.js';
|
|
4
|
+
import type { WorkspaceRecord } from './types.js';
|
|
5
|
+
/**
|
|
6
|
+
* M31 transport middleware — mounted at `/api/projects/:id`. Resolves the
|
|
7
|
+
* project from the URL prefix, lazily builds/fetches its context, and
|
|
8
|
+
* dispatches into the per-context router (Express strips the mount path, so
|
|
9
|
+
* ctx routers are mounted `/api`-less).
|
|
10
|
+
*
|
|
11
|
+
* - unknown id → 404 PROJECT_NOT_IN_WORKSPACE, before any handler
|
|
12
|
+
* - build failure → 500 PROJECT_BUILD_FAILED for that project only;
|
|
13
|
+
* the process keeps serving the rest
|
|
14
|
+
*/
|
|
15
|
+
export declare function projectDispatchMiddleware(registry: WorkspaceRegistry, workspace: WorkspaceRecord, cache: ProjectContextCache): RequestHandler;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ProjectBuildFailedError } from './context-cache.js';
|
|
2
|
+
/**
|
|
3
|
+
* M31 transport middleware — mounted at `/api/projects/:id`. Resolves the
|
|
4
|
+
* project from the URL prefix, lazily builds/fetches its context, and
|
|
5
|
+
* dispatches into the per-context router (Express strips the mount path, so
|
|
6
|
+
* ctx routers are mounted `/api`-less).
|
|
7
|
+
*
|
|
8
|
+
* - unknown id → 404 PROJECT_NOT_IN_WORKSPACE, before any handler
|
|
9
|
+
* - build failure → 500 PROJECT_BUILD_FAILED for that project only;
|
|
10
|
+
* the process keeps serving the rest
|
|
11
|
+
*/
|
|
12
|
+
export function projectDispatchMiddleware(registry, workspace, cache) {
|
|
13
|
+
return async (req, res, next) => {
|
|
14
|
+
const id = req.params.id ?? '';
|
|
15
|
+
const project = registry.getProject(workspace, id);
|
|
16
|
+
if (!project) {
|
|
17
|
+
return res.status(404).json({
|
|
18
|
+
error: {
|
|
19
|
+
code: 'PROJECT_NOT_IN_WORKSPACE',
|
|
20
|
+
message: `project '${id}' is not registered in workspace '${workspace.name}'`,
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
try {
|
|
25
|
+
const ctx = await cache.get(project);
|
|
26
|
+
ctx.router(req, res, next);
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
const message = err instanceof ProjectBuildFailedError ? err.message : err instanceof Error ? err.message : String(err);
|
|
30
|
+
res.status(500).json({
|
|
31
|
+
error: { code: 'PROJECT_BUILD_FAILED', message },
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../src/server/workspace/middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAA4B,MAAM,oBAAoB,CAAC;AAIvF;;;;;;;;;GASG;AACH,MAAM,UAAU,yBAAyB,CACvC,QAA2B,EAC3B,SAA0B,EAC1B,KAA0B;IAE1B,OAAO,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC9B,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC1B,KAAK,EAAE;oBACL,IAAI,EAAE,0BAA0B;oBAChC,OAAO,EAAE,YAAY,EAAE,qCAAqC,SAAS,CAAC,IAAI,GAAG;iBAC9E;aACF,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACrC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GACX,GAAG,YAAY,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1G,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,KAAK,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE;aACjD,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Router } from 'express';
|
|
2
|
+
import { type Db } from '../db/index.js';
|
|
3
|
+
import type { WsGateway } from '../ws/gateway.js';
|
|
4
|
+
import type { PluginRegistry, ProjectPluginHost } from '../core/plugin-host/types.js';
|
|
5
|
+
import { SerializationEngine } from '../core/plugin-host/serialization-engine.js';
|
|
6
|
+
import type { ActiveAdapter, PendingInput } from '../routes/agent-turn.js';
|
|
7
|
+
import { ProjectWsEmitter } from '../ws/project-emitter.js';
|
|
8
|
+
import type { WorkspaceRegistry } from './registry.js';
|
|
9
|
+
import type { WorkspaceRecord } from './types.js';
|
|
10
|
+
export interface ProjectContextDeps {
|
|
11
|
+
registry: WorkspaceRegistry;
|
|
12
|
+
/** Process-immutable plugin catalog — consolidated per context. */
|
|
13
|
+
pluginRegistry: PluginRegistry;
|
|
14
|
+
workspace: WorkspaceRecord;
|
|
15
|
+
cwd: string;
|
|
16
|
+
gateway: WsGateway;
|
|
17
|
+
mode: 'dev' | 'prod';
|
|
18
|
+
/** Resolved `--remote-url` value (flag > config.json); null/absent ⇒ prod constant. */
|
|
19
|
+
remoteApiUrl?: string | null;
|
|
20
|
+
/** CLI `--pages` override — effective only for the CLI-started project. */
|
|
21
|
+
pagesDirOverride?: string;
|
|
22
|
+
/** M31: pinged when an agent turn finishes — context-cache idle-retry hook. */
|
|
23
|
+
onTurnFinished?: () => void;
|
|
24
|
+
/** M31: PATCH /config touched a context-defining field → cache.invalidate(projectId). */
|
|
25
|
+
onContextConfigChanged?: () => void;
|
|
26
|
+
/** M27: bootstrap-time clone — runs inside build, before watchers start. */
|
|
27
|
+
clone?: {
|
|
28
|
+
slug: string;
|
|
29
|
+
nameOverride?: string;
|
|
30
|
+
configCreated: boolean;
|
|
31
|
+
claudeDirCreated: boolean;
|
|
32
|
+
gitignoreCreated: boolean;
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export interface ProjectContext {
|
|
36
|
+
projectId: string;
|
|
37
|
+
cwd: string;
|
|
38
|
+
workspace: WorkspaceRecord;
|
|
39
|
+
/** Per-context Express Router — dispatch middleware mounts it under /api/projects/:id. */
|
|
40
|
+
router: Router;
|
|
41
|
+
db: Db;
|
|
42
|
+
pluginHost: ProjectPluginHost;
|
|
43
|
+
/** L9 dispatch bound to this context's host. */
|
|
44
|
+
serialization: SerializationEngine;
|
|
45
|
+
/** Per-project room emitter (all services broadcast through it). */
|
|
46
|
+
ws: ProjectWsEmitter;
|
|
47
|
+
/** M31: per-project agent-turn registries (chat/threads routers + cache guard). */
|
|
48
|
+
activeAdapters: Map<string, ActiveAdapter>;
|
|
49
|
+
pendingInputs: Map<string, PendingInput>;
|
|
50
|
+
writingStyle: {
|
|
51
|
+
slug: string;
|
|
52
|
+
title: string;
|
|
53
|
+
} | null;
|
|
54
|
+
/** True while any agent turn runs in this project (LRU dispose guard). */
|
|
55
|
+
hasInFlightTurn: () => boolean;
|
|
56
|
+
dispose: () => Promise<void>;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* M31: builds one fully-wired project — DB, services, watchers, indexers and
|
|
60
|
+
* the per-context router. Mechanical carve of the former startServer body;
|
|
61
|
+
* handlers are byte-identical, only the mount prefixes lost their `/api`.
|
|
62
|
+
* Await cost ≈ entityIndexer.indexAll() (<1s budget); section/todos/link
|
|
63
|
+
* indexers stay fire-and-forget.
|
|
64
|
+
*/
|
|
65
|
+
export declare function buildProjectContext(deps: ProjectContextDeps): Promise<ProjectContext>;
|