@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
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server-side plugin manifest. Extends the shared EntityModuleManifest with
|
|
3
|
+
* server-only slots (serializer, services, mcpServer, routes, systemPrompt).
|
|
4
|
+
*
|
|
5
|
+
* `serializer` and `systemPrompt` are required; backend slots
|
|
6
|
+
* (services, mcpServer, routes, migrations) are optional and filled per
|
|
7
|
+
* entity in their vertical slice plugin.ts.
|
|
8
|
+
*/
|
|
9
|
+
import type { Database } from 'better-sqlite3';
|
|
10
|
+
import type { Application, Router } from 'express';
|
|
11
|
+
import type { McpServerInstance } from '@inharness-ai/agent-adapters';
|
|
12
|
+
import type { EntityModuleManifest, PluginActivationState, SystemPromptContribution } from '../../../shared/plugin-host/types.js';
|
|
13
|
+
import type { EntityDiff, EntitySerializer, RestoreContext, RestoreResult, SerializeContext, SnapshotData } from '../../serialization/types.js';
|
|
14
|
+
import type { TagsService } from '../../services/tags.js';
|
|
15
|
+
import type { VersionService } from '../../services/versions.js';
|
|
16
|
+
import type { ReferencesService } from '../../services/references.js';
|
|
17
|
+
import type { WsGateway } from '../../ws/gateway.js';
|
|
18
|
+
export type SqlMigration = {
|
|
19
|
+
/** Per-plugin sequential version. Starts at 1 (post-baseline). */
|
|
20
|
+
version: number;
|
|
21
|
+
/** Short identifier, e.g. "add_summary_column". */
|
|
22
|
+
name: string;
|
|
23
|
+
/** Idempotent SQL — must tolerate replay. */
|
|
24
|
+
up: string;
|
|
25
|
+
};
|
|
26
|
+
export interface RouteRegistration {
|
|
27
|
+
/** Mount prefix, e.g. "/api/endpoints". */
|
|
28
|
+
prefix: string;
|
|
29
|
+
/** Express subrouter — handler chain owned by the plugin. */
|
|
30
|
+
router: Router;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Mount-time context passed to each plugin's `backend.mount(ctx)`. Carries
|
|
34
|
+
* cross-cutting deps + helpers for registering routes / MCP servers / id
|
|
35
|
+
* resolvers without per-plugin special-casing in index.ts.
|
|
36
|
+
*/
|
|
37
|
+
export interface MountContext {
|
|
38
|
+
app: Application;
|
|
39
|
+
db: Database;
|
|
40
|
+
ws: WsGateway;
|
|
41
|
+
tagsService: TagsService;
|
|
42
|
+
versionService: VersionService;
|
|
43
|
+
referencesService: ReferencesService;
|
|
44
|
+
registerMcpServer(name: string, server: McpServerInstance): void;
|
|
45
|
+
setIdResolver(type: string, fn: (slug: string) => number | null): void;
|
|
46
|
+
/**
|
|
47
|
+
* M17: register the entity's L2 service with the host so cross-cutting
|
|
48
|
+
* consumers (release restore) can drive idempotent UPSERT through normal
|
|
49
|
+
* write-API. Stored untyped — callers cast on retrieval.
|
|
50
|
+
*/
|
|
51
|
+
registerEntityService(type: string, service: unknown): void;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Per-plugin mount hook. Constructs the entity service from cross-cutting
|
|
55
|
+
* deps + db, mounts its Express subrouter under `/api${pathPrefix}`, registers
|
|
56
|
+
* the MCP server as `${type}-tools`, and wires the id resolver.
|
|
57
|
+
*/
|
|
58
|
+
export type PluginMountFn = (ctx: MountContext) => void;
|
|
59
|
+
export interface BackendModule extends EntityModuleManifest {
|
|
60
|
+
/** L9 — JSON serialization for external consumers (CLI, MCP, ...). */
|
|
61
|
+
serializer: EntitySerializer<unknown>;
|
|
62
|
+
/** M05 — system prompt contribution composed by buildSystemPrompt. */
|
|
63
|
+
systemPrompt: SystemPromptContribution;
|
|
64
|
+
/**
|
|
65
|
+
* Resolve an entity row id from its slug. Used by section-indexer and
|
|
66
|
+
* reference-tools to translate page-level mentions into FK-eligible ids
|
|
67
|
+
* without knowing the entity table directly.
|
|
68
|
+
*/
|
|
69
|
+
getIdBySlug?: (slug: string) => number | null;
|
|
70
|
+
/**
|
|
71
|
+
* L1–L4 backend slots. The `mount` hook is the single entry point used by
|
|
72
|
+
* `pluginHost.mountBackend(ctx)` — it owns service construction, route
|
|
73
|
+
* mounting, MCP registration, and id resolver wiring.
|
|
74
|
+
*/
|
|
75
|
+
backend?: {
|
|
76
|
+
migrations?: SqlMigration[];
|
|
77
|
+
mount?: PluginMountFn;
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
export interface PluginHost {
|
|
81
|
+
/** Register a plugin manifest. Idempotent on `module.type`. */
|
|
82
|
+
registerBackendModule(module: BackendModule): void;
|
|
83
|
+
/**
|
|
84
|
+
* Apply config.entities whitelist; updates active/inactive/unknown sets.
|
|
85
|
+
* Pass undefined / null = all available are active (v1 backward compat).
|
|
86
|
+
*/
|
|
87
|
+
consolidate(activeWhitelist: string[] | null | undefined): void;
|
|
88
|
+
/** All registered modules, regardless of activation. */
|
|
89
|
+
listAvailable(): BackendModule[];
|
|
90
|
+
/** Active modules only (filtered by `consolidate`). */
|
|
91
|
+
listEntities(): BackendModule[];
|
|
92
|
+
/** Lookup by type — returns null for inactive or unknown. */
|
|
93
|
+
getEntity(type: string): BackendModule | null;
|
|
94
|
+
/** Lookup including inactive — used for broken-chip categorisation. */
|
|
95
|
+
getAvailable(type: string): BackendModule | null;
|
|
96
|
+
isActive(type: string): boolean;
|
|
97
|
+
/** Activation snapshot — input for GET /api/_meta/entities. */
|
|
98
|
+
state(): PluginActivationState;
|
|
99
|
+
/**
|
|
100
|
+
* Mount every active backend module into the supplied Express app + the
|
|
101
|
+
* host-internal MCP registry. Iterates `listEntities()` and invokes each
|
|
102
|
+
* plugin's `backend.mount(ctx)`. Inactive plugins are skipped — no routes,
|
|
103
|
+
* no MCP server, no id resolver registered.
|
|
104
|
+
*/
|
|
105
|
+
mountBackend(ctx: MountContext): void;
|
|
106
|
+
/** Register an MCP server instance under a unique name (e.g. "dto-tools"). */
|
|
107
|
+
registerMcpServer(name: string, server: McpServerInstance): void;
|
|
108
|
+
/** Lookup a previously-registered MCP server by name (e.g. "dto-tools"). */
|
|
109
|
+
getMcpServer(name: string): McpServerInstance | null;
|
|
110
|
+
/** All registered MCP server names — used by chat to wire the adapter. */
|
|
111
|
+
listMcpServers(): Array<{
|
|
112
|
+
name: string;
|
|
113
|
+
server: McpServerInstance;
|
|
114
|
+
}>;
|
|
115
|
+
/**
|
|
116
|
+
* Run each active plugin's `systemPrompt.countStat.sqlQuery` against the db
|
|
117
|
+
* and return the results indexed by `module.type`. Used by the chat handler
|
|
118
|
+
* to populate `SystemPromptInput.entityCounts`.
|
|
119
|
+
*/
|
|
120
|
+
computeEntityCounts(db: Database): Record<string, number>;
|
|
121
|
+
/**
|
|
122
|
+
* Runtime id resolver registry. Populated by index.ts after services are
|
|
123
|
+
* instantiated; consumed by section-indexer and reference-tools to map
|
|
124
|
+
* `(type, slug) → entity_id` without per-type switches.
|
|
125
|
+
*/
|
|
126
|
+
setIdResolver(type: string, fn: (slug: string) => number | null): void;
|
|
127
|
+
resolveEntityId(type: string, slug: string): number | null;
|
|
128
|
+
/** Convenience: true if `(type, slug)` resolves to a row id via setIdResolver. */
|
|
129
|
+
entityExists(type: string, slug: string): boolean;
|
|
130
|
+
/**
|
|
131
|
+
* M17 entity service registry. Plugins register their L2 service during
|
|
132
|
+
* mount; cross-cutting consumers (releaseService restore) retrieve them by
|
|
133
|
+
* type. Untyped surface — caller casts to the concrete service type.
|
|
134
|
+
*/
|
|
135
|
+
registerEntityService(type: string, service: unknown): void;
|
|
136
|
+
getEntityService(type: string): unknown;
|
|
137
|
+
/** Plugin-owned snapshot. Throws SnapshotNotImplementedError if slot absent. */
|
|
138
|
+
snapshot(type: string, entity: unknown, ctx: SerializeContext): SnapshotData;
|
|
139
|
+
/** Plugin-owned restore (UPSERT through normal write-API). */
|
|
140
|
+
restore(type: string, data: SnapshotData, ctx: RestoreContext): RestoreResult;
|
|
141
|
+
/** Plugin-owned diff with default deep-diff fallback. */
|
|
142
|
+
diff(type: string, a: SnapshotData, b: SnapshotData, slug: string): EntityDiff;
|
|
143
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server-side plugin manifest. Extends the shared EntityModuleManifest with
|
|
3
|
+
* server-only slots (serializer, services, mcpServer, routes, systemPrompt).
|
|
4
|
+
*
|
|
5
|
+
* `serializer` and `systemPrompt` are required; backend slots
|
|
6
|
+
* (services, mcpServer, routes, migrations) are optional and filled per
|
|
7
|
+
* entity in their vertical slice plugin.ts.
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/server/core/plugin-host/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const FIRST_H1_RE = /^#\s+(.+?)\s*$/m;
|
|
2
|
+
export function backfillPlanTitles(db) {
|
|
3
|
+
const rows = db
|
|
4
|
+
.prepare(`SELECT id, content FROM plan WHERE title IS NULL`)
|
|
5
|
+
.all();
|
|
6
|
+
if (rows.length === 0)
|
|
7
|
+
return 0;
|
|
8
|
+
const update = db.prepare(`UPDATE plan SET title = ? WHERE id = ?`);
|
|
9
|
+
let updated = 0;
|
|
10
|
+
for (const row of rows) {
|
|
11
|
+
const m = row.content.match(FIRST_H1_RE);
|
|
12
|
+
if (!m)
|
|
13
|
+
continue;
|
|
14
|
+
const title = m[1].trim();
|
|
15
|
+
if (!title)
|
|
16
|
+
continue;
|
|
17
|
+
update.run(title, row.id);
|
|
18
|
+
updated++;
|
|
19
|
+
}
|
|
20
|
+
return updated;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=backfill-plan-titles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backfill-plan-titles.js","sourceRoot":"","sources":["../../../../src/server/db/fixups/backfill-plan-titles.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAEtC,MAAM,UAAU,kBAAkB,CAAC,EAAqB;IACtD,MAAM,IAAI,GAAG,EAAE;SACZ,OAAO,CAAC,kDAAkD,CAAC;SAC3D,GAAG,EAA4C,CAAC;IAEnD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAEhC,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC;IACpE,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACzC,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import Database from 'better-sqlite3';
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { runMigrations } from './migrate.js';
|
|
5
|
+
import { backfillPlanTitles } from './fixups/backfill-plan-titles.js';
|
|
6
|
+
export function openDb(cwd) {
|
|
7
|
+
const dir = path.join(cwd, '.claude4spec');
|
|
8
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
9
|
+
const dbPath = path.join(dir, 'db.sqlite');
|
|
10
|
+
const handle = new Database(dbPath);
|
|
11
|
+
handle.pragma('journal_mode = WAL');
|
|
12
|
+
handle.pragma('foreign_keys = ON');
|
|
13
|
+
const applied = runMigrations(handle);
|
|
14
|
+
if (applied.length) {
|
|
15
|
+
console.log(` migrations applied: ${applied.join(', ')}`);
|
|
16
|
+
}
|
|
17
|
+
const titlesBackfilled = backfillPlanTitles(handle);
|
|
18
|
+
if (titlesBackfilled > 0) {
|
|
19
|
+
console.log(` plan titles backfilled: ${titlesBackfilled}`);
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
handle,
|
|
23
|
+
close: () => handle.close(),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/db/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAOtE,MAAM,UAAU,MAAM,CAAC,GAAW;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC3C,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACpC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAEnC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,yBAAyB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,6BAA6B,gBAAgB,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO;QACL,MAAM;QACN,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE;KAC5B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
5
|
+
const MIGRATIONS_DIR = path.join(__dirname, 'migrations');
|
|
6
|
+
export function runMigrations(db) {
|
|
7
|
+
db.exec(`
|
|
8
|
+
CREATE TABLE IF NOT EXISTS schema_migrations (
|
|
9
|
+
version TEXT PRIMARY KEY,
|
|
10
|
+
applied_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
11
|
+
);
|
|
12
|
+
`);
|
|
13
|
+
const applied = new Set(db.prepare('SELECT version FROM schema_migrations').all().map((r) => r.version));
|
|
14
|
+
const files = fs
|
|
15
|
+
.readdirSync(MIGRATIONS_DIR)
|
|
16
|
+
.filter((f) => f.endsWith('.sql'))
|
|
17
|
+
.sort();
|
|
18
|
+
const newlyApplied = [];
|
|
19
|
+
for (const file of files) {
|
|
20
|
+
const version = file.replace(/\.sql$/, '');
|
|
21
|
+
if (applied.has(version))
|
|
22
|
+
continue;
|
|
23
|
+
const sql = fs.readFileSync(path.join(MIGRATIONS_DIR, file), 'utf-8');
|
|
24
|
+
const tx = db.transaction(() => {
|
|
25
|
+
db.exec(sql);
|
|
26
|
+
db.prepare('INSERT INTO schema_migrations (version) VALUES (?)').run(version);
|
|
27
|
+
});
|
|
28
|
+
tx();
|
|
29
|
+
newlyApplied.push(version);
|
|
30
|
+
}
|
|
31
|
+
return newlyApplied;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=migrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../src/server/db/migrate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AAE1D,MAAM,UAAU,aAAa,CAAC,EAAqB;IACjD,EAAE,CAAC,IAAI,CAAC;;;;;GAKP,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAyB,CAAC,OAAO,CAAC,CACzG,CAAC;IAEF,MAAM,KAAK,GAAG,EAAE;SACb,WAAW,CAAC,cAAc,CAAC;SAC3B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SACjC,IAAI,EAAE,CAAC;IAEV,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC3C,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,SAAS;QACnC,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QACtE,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YAC7B,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACb,EAAE,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChF,CAAC,CAAC,CAAC;QACH,EAAE,EAAE,CAAC;QACL,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
-- Etap 1 base migration. Intentionally empty of entity tables —
|
|
2
|
+
-- schema_migrations row gets created to prove the runner works.
|
|
3
|
+
-- Entity tables (endpoint, dto, ...) land in later migrations.
|
|
4
|
+
|
|
5
|
+
CREATE TABLE IF NOT EXISTS _init_marker (
|
|
6
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
7
|
+
);
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
-- Etap 2: M03 endpoint + versioning + L6 tags core tables.
|
|
2
|
+
-- dto + endpoint_dto tables land with Etap 3 (M04).
|
|
3
|
+
|
|
4
|
+
CREATE TABLE endpoint (
|
|
5
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
6
|
+
slug TEXT UNIQUE NOT NULL,
|
|
7
|
+
method TEXT NOT NULL,
|
|
8
|
+
path TEXT NOT NULL,
|
|
9
|
+
summary TEXT NOT NULL DEFAULT '',
|
|
10
|
+
description TEXT,
|
|
11
|
+
request_body TEXT,
|
|
12
|
+
response_body TEXT,
|
|
13
|
+
status_codes TEXT,
|
|
14
|
+
module TEXT,
|
|
15
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
16
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
17
|
+
);
|
|
18
|
+
CREATE INDEX idx_endpoint_module ON endpoint(module);
|
|
19
|
+
|
|
20
|
+
CREATE TABLE entity_version (
|
|
21
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
22
|
+
entity_type TEXT NOT NULL,
|
|
23
|
+
entity_id INTEGER NOT NULL,
|
|
24
|
+
version INTEGER NOT NULL,
|
|
25
|
+
data TEXT NOT NULL,
|
|
26
|
+
changed_by TEXT NOT NULL,
|
|
27
|
+
change_summary TEXT,
|
|
28
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
29
|
+
UNIQUE(entity_type, entity_id, version)
|
|
30
|
+
);
|
|
31
|
+
CREATE INDEX idx_ev_entity ON entity_version(entity_type, entity_id);
|
|
32
|
+
|
|
33
|
+
CREATE TABLE tag (
|
|
34
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
35
|
+
slug TEXT UNIQUE NOT NULL,
|
|
36
|
+
name TEXT NOT NULL,
|
|
37
|
+
color TEXT,
|
|
38
|
+
description TEXT,
|
|
39
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
40
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
CREATE TABLE entity_tag (
|
|
44
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
45
|
+
entity_type TEXT NOT NULL,
|
|
46
|
+
entity_id INTEGER NOT NULL,
|
|
47
|
+
tag_id INTEGER NOT NULL REFERENCES tag(id) ON DELETE CASCADE,
|
|
48
|
+
UNIQUE(entity_type, entity_id, tag_id)
|
|
49
|
+
);
|
|
50
|
+
CREATE INDEX idx_entity_tag_tag_id ON entity_tag(tag_id);
|
|
51
|
+
CREATE INDEX idx_entity_tag_entity ON entity_tag(entity_type, entity_id);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
-- Etap 3: M04 DTO table + endpoint_dto junction.
|
|
2
|
+
|
|
3
|
+
CREATE TABLE dto (
|
|
4
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
5
|
+
slug TEXT UNIQUE NOT NULL,
|
|
6
|
+
name TEXT NOT NULL,
|
|
7
|
+
description TEXT,
|
|
8
|
+
fields TEXT NOT NULL DEFAULT '[]',
|
|
9
|
+
module TEXT,
|
|
10
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
11
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
12
|
+
);
|
|
13
|
+
CREATE INDEX idx_dto_module ON dto(module);
|
|
14
|
+
|
|
15
|
+
CREATE TABLE endpoint_dto (
|
|
16
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
17
|
+
endpoint_id INTEGER NOT NULL REFERENCES endpoint(id) ON DELETE CASCADE,
|
|
18
|
+
dto_id INTEGER NOT NULL REFERENCES dto(id) ON DELETE CASCADE,
|
|
19
|
+
relation TEXT NOT NULL,
|
|
20
|
+
UNIQUE(endpoint_id, dto_id, relation)
|
|
21
|
+
);
|
|
22
|
+
CREATE INDEX idx_endpoint_dto_endpoint ON endpoint_dto(endpoint_id);
|
|
23
|
+
CREATE INDEX idx_endpoint_dto_dto ON endpoint_dto(dto_id);
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
-- Etap 3 (iteracja 3): klasyfikacja encji wylacznie przez tagi, status HTTP przez endpoint_dto.
|
|
2
|
+
-- Usuwamy kolumny `module` (endpoint, dto) oraz `status_codes` (endpoint).
|
|
3
|
+
-- Dodajemy `status_code INTEGER NULL` do endpoint_dto + odbudowujemy UNIQUE index.
|
|
4
|
+
|
|
5
|
+
DROP INDEX IF EXISTS idx_endpoint_module;
|
|
6
|
+
DROP INDEX IF EXISTS idx_dto_module;
|
|
7
|
+
DROP INDEX IF EXISTS idx_endpoint_dto_endpoint;
|
|
8
|
+
DROP INDEX IF EXISTS idx_endpoint_dto_dto;
|
|
9
|
+
|
|
10
|
+
ALTER TABLE endpoint DROP COLUMN module;
|
|
11
|
+
ALTER TABLE endpoint DROP COLUMN status_codes;
|
|
12
|
+
ALTER TABLE dto DROP COLUMN module;
|
|
13
|
+
|
|
14
|
+
-- SQLite nie wspiera DROP CONSTRAINT; rebuild tabeli endpoint_dto z nowym UNIQUE.
|
|
15
|
+
CREATE TABLE endpoint_dto_new (
|
|
16
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
17
|
+
endpoint_id INTEGER NOT NULL REFERENCES endpoint(id) ON DELETE CASCADE,
|
|
18
|
+
dto_id INTEGER NOT NULL REFERENCES dto(id) ON DELETE CASCADE,
|
|
19
|
+
relation TEXT NOT NULL,
|
|
20
|
+
status_code INTEGER,
|
|
21
|
+
UNIQUE(endpoint_id, dto_id, relation, status_code)
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
INSERT INTO endpoint_dto_new (id, endpoint_id, dto_id, relation, status_code)
|
|
25
|
+
SELECT id, endpoint_id, dto_id, relation, NULL FROM endpoint_dto;
|
|
26
|
+
|
|
27
|
+
DROP TABLE endpoint_dto;
|
|
28
|
+
ALTER TABLE endpoint_dto_new RENAME TO endpoint_dto;
|
|
29
|
+
|
|
30
|
+
CREATE INDEX idx_endpoint_dto_endpoint ON endpoint_dto(endpoint_id);
|
|
31
|
+
CREATE INDEX idx_endpoint_dto_dto ON endpoint_dto(dto_id);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
-- Etap 4: M05 chat & agent — thread persistence.
|
|
2
|
+
-- Spec: .claude/skills/specyfikacja/db/db-m05-chat.md
|
|
3
|
+
|
|
4
|
+
CREATE TABLE chat_thread (
|
|
5
|
+
id TEXT PRIMARY KEY NOT NULL,
|
|
6
|
+
title TEXT,
|
|
7
|
+
last_session_id TEXT,
|
|
8
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
9
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
10
|
+
);
|
|
11
|
+
|
|
12
|
+
CREATE TABLE chat_message (
|
|
13
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
14
|
+
thread_id TEXT NOT NULL REFERENCES chat_thread(id) ON DELETE CASCADE,
|
|
15
|
+
role TEXT NOT NULL,
|
|
16
|
+
content TEXT NOT NULL,
|
|
17
|
+
tool_name TEXT,
|
|
18
|
+
tool_id TEXT,
|
|
19
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
CREATE INDEX idx_cm_thread ON chat_message(thread_id);
|
|
23
|
+
CREATE INDEX idx_cm_tool ON chat_message(tool_id);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
CREATE TABLE database_table (
|
|
2
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
3
|
+
slug TEXT UNIQUE NOT NULL,
|
|
4
|
+
name TEXT NOT NULL,
|
|
5
|
+
description TEXT,
|
|
6
|
+
columns TEXT NOT NULL DEFAULT '[]',
|
|
7
|
+
indexes TEXT NOT NULL DEFAULT '[]',
|
|
8
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
9
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
10
|
+
);
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
CREATE TABLE section_index (
|
|
2
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
3
|
+
anchor TEXT UNIQUE NOT NULL,
|
|
4
|
+
page_path TEXT NOT NULL,
|
|
5
|
+
heading_path TEXT NOT NULL,
|
|
6
|
+
heading_slug TEXT NOT NULL,
|
|
7
|
+
heading_level INTEGER NOT NULL,
|
|
8
|
+
heading_text TEXT NOT NULL,
|
|
9
|
+
content_hash TEXT NOT NULL,
|
|
10
|
+
line_start INTEGER NOT NULL,
|
|
11
|
+
line_end INTEGER NOT NULL,
|
|
12
|
+
paragraph_count INTEGER NOT NULL DEFAULT 0,
|
|
13
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
14
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
CREATE INDEX idx_si_page ON section_index(page_path);
|
|
18
|
+
CREATE INDEX idx_si_hash ON section_index(content_hash);
|
|
19
|
+
|
|
20
|
+
CREATE TABLE section_entity_link (
|
|
21
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
22
|
+
anchor TEXT NOT NULL REFERENCES section_index(anchor) ON DELETE CASCADE,
|
|
23
|
+
entity_type TEXT NOT NULL,
|
|
24
|
+
entity_id INTEGER NOT NULL,
|
|
25
|
+
relation TEXT NOT NULL DEFAULT 'describes',
|
|
26
|
+
UNIQUE(anchor, entity_type, entity_id)
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
CREATE INDEX idx_sel_anchor ON section_entity_link(anchor);
|
|
30
|
+
CREATE INDEX idx_sel_entity ON section_entity_link(entity_type, entity_id);
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
-- M05 extension: subagent task persistence (reconstruction po reload).
|
|
2
|
+
-- Spec: .claude/skills/specyfikacja/db/db-m05-chat.md
|
|
3
|
+
|
|
4
|
+
ALTER TABLE chat_message ADD COLUMN subagent_task_id TEXT;
|
|
5
|
+
|
|
6
|
+
CREATE INDEX idx_cm_subagent_task ON chat_message(subagent_task_id);
|
|
7
|
+
|
|
8
|
+
CREATE TABLE chat_subagent_task (
|
|
9
|
+
thread_id TEXT NOT NULL REFERENCES chat_thread(id) ON DELETE CASCADE,
|
|
10
|
+
task_id TEXT NOT NULL,
|
|
11
|
+
tool_use_id TEXT,
|
|
12
|
+
description TEXT NOT NULL,
|
|
13
|
+
status TEXT NOT NULL DEFAULT 'running',
|
|
14
|
+
summary TEXT,
|
|
15
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
16
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
17
|
+
PRIMARY KEY (thread_id, task_id)
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
CREATE INDEX idx_cst_thread ON chat_subagent_task(thread_id);
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
-- Etap: M05 chat — plan mode per thread + per-message snapshot.
|
|
2
|
+
-- Spec: .claude/skills/specyfikacja/db/db-m05-chat.md
|
|
3
|
+
|
|
4
|
+
ALTER TABLE chat_thread ADD COLUMN plan_mode INTEGER NOT NULL DEFAULT 0;
|
|
5
|
+
ALTER TABLE chat_message ADD COLUMN plan_mode INTEGER NOT NULL DEFAULT 0;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
-- Etap: M05 chat — lifecycle wiersza chat_message (streaming vs complete).
|
|
2
|
+
-- Uzywane do wykrycia orphan tool_use po crashu serwera i auto-resume po F5.
|
|
3
|
+
-- Spec: .claude/skills/specyfikacja/db/db-m05-chat.md (sekcja "Planowane: kolumna chat_message.status")
|
|
4
|
+
|
|
5
|
+
ALTER TABLE chat_message ADD COLUMN status TEXT NOT NULL DEFAULT 'complete';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
-- Etap: M05 chat — snapshot zuzycia tokenow (thread-level + per-turn).
|
|
2
|
+
-- Thread-level: szybka hydracja <UsageBadge /> przy loadThread (bez tego badge pokazuje "—" do nastepnego result).
|
|
3
|
+
-- Per-turn: historia wzrostu kontekstu per tura (debug/wykres).
|
|
4
|
+
-- Spec: .claude/skills/specyfikacja/db/db-m05-chat.md (sekcja "Usage snapshot")
|
|
5
|
+
|
|
6
|
+
ALTER TABLE chat_thread ADD COLUMN last_usage_json TEXT;
|
|
7
|
+
ALTER TABLE chat_message ADD COLUMN usage_json TEXT;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
-- Etap: M10 Plans — plan wdrozenia jako artefakt chatu.
|
|
2
|
+
-- Spec: .claude/skills/specyfikacja/db/db-m10-plans.md
|
|
3
|
+
|
|
4
|
+
CREATE TABLE plan (
|
|
5
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
6
|
+
thread_id TEXT NOT NULL UNIQUE REFERENCES chat_thread(id) ON DELETE CASCADE,
|
|
7
|
+
content TEXT NOT NULL DEFAULT '',
|
|
8
|
+
current_version INTEGER NOT NULL DEFAULT 0,
|
|
9
|
+
status TEXT NOT NULL DEFAULT 'draft',
|
|
10
|
+
accepted_at TEXT,
|
|
11
|
+
accepted_mode TEXT,
|
|
12
|
+
accepted_thread_id TEXT REFERENCES chat_thread(id) ON DELETE SET NULL,
|
|
13
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
14
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
CREATE UNIQUE INDEX idx_plan_thread ON plan(thread_id);
|
|
18
|
+
CREATE INDEX idx_plan_status ON plan(status);
|
|
19
|
+
|
|
20
|
+
CREATE TABLE plan_version (
|
|
21
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
22
|
+
plan_id INTEGER NOT NULL REFERENCES plan(id) ON DELETE CASCADE,
|
|
23
|
+
version INTEGER NOT NULL,
|
|
24
|
+
content TEXT NOT NULL,
|
|
25
|
+
action TEXT NOT NULL,
|
|
26
|
+
action_params TEXT,
|
|
27
|
+
change_summary TEXT,
|
|
28
|
+
changed_by TEXT NOT NULL,
|
|
29
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
CREATE INDEX idx_pv_plan ON plan_version(plan_id);
|
|
33
|
+
CREATE UNIQUE INDEX uq_pv_plan_version ON plan_version(plan_id, version);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
CREATE TABLE ui_view (
|
|
2
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
3
|
+
slug TEXT UNIQUE NOT NULL,
|
|
4
|
+
name TEXT NOT NULL,
|
|
5
|
+
url TEXT,
|
|
6
|
+
description TEXT,
|
|
7
|
+
params TEXT NOT NULL DEFAULT '[]',
|
|
8
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
9
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
10
|
+
);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
-- M17 Spec Snapshots & Releases — Phase 3
|
|
2
|
+
-- Extend entity_version with release_id (FK to spec_release added in 019),
|
|
3
|
+
-- serializer_version (per-type semver), and op (create | update | delete).
|
|
4
|
+
|
|
5
|
+
ALTER TABLE entity_version ADD COLUMN release_id INTEGER NULL;
|
|
6
|
+
ALTER TABLE entity_version ADD COLUMN serializer_version TEXT NULL;
|
|
7
|
+
ALTER TABLE entity_version ADD COLUMN op TEXT NULL;
|
|
8
|
+
|
|
9
|
+
CREATE INDEX IF NOT EXISTS idx_entity_version_release ON entity_version(release_id);
|
|
10
|
+
|
|
11
|
+
-- Best-effort backfill of `op` for existing rows. Heuristic:
|
|
12
|
+
-- data = 'null' -> delete
|
|
13
|
+
-- first version per (entity_type, entity_id) -> create
|
|
14
|
+
-- everything else -> update
|
|
15
|
+
UPDATE entity_version SET op = 'delete' WHERE data = 'null' AND op IS NULL;
|
|
16
|
+
|
|
17
|
+
UPDATE entity_version SET op = 'create' WHERE id IN (
|
|
18
|
+
SELECT MIN(id) FROM entity_version
|
|
19
|
+
WHERE op IS NULL OR op = ''
|
|
20
|
+
GROUP BY entity_type, entity_id
|
|
21
|
+
) AND (op IS NULL OR op = '');
|
|
22
|
+
|
|
23
|
+
UPDATE entity_version SET op = 'update' WHERE op IS NULL;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
-- M17 Spec Snapshots & Releases — Phase 4
|
|
2
|
+
-- Append-only versioning for markdown pages (M02 stays out of L9 plugin host;
|
|
3
|
+
-- decyzja 1 in M17 plan). Parallel to entity_version but for filesystem pages.
|
|
4
|
+
|
|
5
|
+
CREATE TABLE page_version (
|
|
6
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
7
|
+
path TEXT NOT NULL, -- "modules/m01-auth.md"
|
|
8
|
+
version INTEGER NOT NULL, -- 1, 2, 3, ... per path
|
|
9
|
+
data TEXT NOT NULL, -- JSON: PageSnapshotData
|
|
10
|
+
serializer_version TEXT NOT NULL,
|
|
11
|
+
op TEXT NOT NULL CHECK (op IN ('create', 'update', 'delete')),
|
|
12
|
+
release_id INTEGER NULL, -- FK semantics enforced in app layer
|
|
13
|
+
changed_by TEXT NOT NULL CHECK (changed_by IN ('user', 'agent', 'filesystem')),
|
|
14
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
15
|
+
|
|
16
|
+
UNIQUE(path, version)
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
CREATE INDEX idx_page_version_release ON page_version(release_id);
|
|
20
|
+
CREATE INDEX idx_page_version_path ON page_version(path);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
-- M17 Spec Snapshots & Releases — Phase 5
|
|
2
|
+
-- spec_release: meta record per named snapshot. entity_version and page_version
|
|
3
|
+
-- already carry release_id (loose INTEGER NULL — FK enforced in app layer).
|
|
4
|
+
|
|
5
|
+
CREATE TABLE spec_release (
|
|
6
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
7
|
+
name TEXT NOT NULL UNIQUE, -- "v1.0.0", "pre-launch"
|
|
8
|
+
description TEXT NOT NULL CHECK (length(trim(description)) > 0), -- decyzja 5
|
|
9
|
+
created_by TEXT NOT NULL, -- "user" | "agent"
|
|
10
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
11
|
+
);
|
|
12
|
+
|
|
13
|
+
CREATE INDEX idx_spec_release_created_at ON spec_release(created_at DESC);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
-- Etap: M10 — wycofanie statusu planu (spec change).
|
|
2
|
+
-- Spec: .claude/skills/specyfikacja/db/db-m10-plans.md, modules/m10-plans.md
|
|
3
|
+
-- Decyzja: plan_version jest jedynym audit trail; wiersz `plan` nie mutuje przy execute.
|
|
4
|
+
|
|
5
|
+
DROP INDEX IF EXISTS idx_plan_status;
|
|
6
|
+
|
|
7
|
+
ALTER TABLE plan DROP COLUMN status;
|
|
8
|
+
ALTER TABLE plan DROP COLUMN accepted_at;
|
|
9
|
+
ALTER TABLE plan DROP COLUMN accepted_mode;
|
|
10
|
+
ALTER TABLE plan DROP COLUMN accepted_thread_id;
|