@inharness-ai/claude4spec 1.0.20 → 1.0.22
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 +117 -57
- package/CHANGELOG.md +26 -0
- package/dist/bin/c4s/commands/agent.d.ts +18 -0
- package/dist/bin/c4s/commands/agent.js +102 -0
- package/dist/bin/c4s/commands/agent.js.map +1 -0
- package/dist/bin/c4s/commands/ask.d.ts +9 -8
- package/dist/bin/c4s/commands/ask.js +23 -31
- package/dist/bin/c4s/commands/ask.js.map +1 -1
- package/dist/bin/c4s/commands/catalog.d.ts +1 -1
- package/dist/bin/c4s/commands/catalog.js +2 -2
- package/dist/bin/c4s/commands/catalog.js.map +1 -1
- package/dist/bin/c4s/commands/describe.d.ts +1 -1
- package/dist/bin/c4s/commands/describe.js +2 -2
- package/dist/bin/c4s/commands/describe.js.map +1 -1
- package/dist/bin/c4s/commands/detail.d.ts +1 -1
- package/dist/bin/c4s/commands/detail.js +2 -2
- package/dist/bin/c4s/commands/detail.js.map +1 -1
- package/dist/bin/c4s/commands/element-list.d.ts +1 -1
- package/dist/bin/c4s/commands/element-list.js +2 -2
- package/dist/bin/c4s/commands/element-list.js.map +1 -1
- package/dist/bin/c4s/commands/find-references.js +1 -1
- package/dist/bin/c4s/commands/find-references.js.map +1 -1
- package/dist/bin/c4s/commands/inline-mention.d.ts +1 -1
- package/dist/bin/c4s/commands/inline-mention.js +2 -2
- package/dist/bin/c4s/commands/inline-mention.js.map +1 -1
- package/dist/bin/c4s/commands/list-slugs.d.ts +1 -1
- package/dist/bin/c4s/commands/list-slugs.js +2 -2
- package/dist/bin/c4s/commands/list-slugs.js.map +1 -1
- package/dist/bin/c4s/commands/list-tags.d.ts +1 -1
- package/dist/bin/c4s/commands/list-tags.js +2 -2
- package/dist/bin/c4s/commands/list-tags.js.map +1 -1
- package/dist/bin/c4s/commands/plugins.d.ts +9 -0
- package/dist/bin/c4s/commands/plugins.js +81 -0
- package/dist/bin/c4s/commands/plugins.js.map +1 -0
- package/dist/bin/c4s/commands/resolve.d.ts +1 -1
- package/dist/bin/c4s/commands/resolve.js +2 -2
- package/dist/bin/c4s/commands/resolve.js.map +1 -1
- package/dist/bin/c4s/commands/single-element.d.ts +1 -1
- package/dist/bin/c4s/commands/single-element.js +2 -2
- package/dist/bin/c4s/commands/single-element.js.map +1 -1
- package/dist/bin/c4s/commands/tagged-list-mixed.d.ts +1 -1
- package/dist/bin/c4s/commands/tagged-list-mixed.js +2 -2
- package/dist/bin/c4s/commands/tagged-list-mixed.js.map +1 -1
- package/dist/bin/c4s/commands/tagged-list.d.ts +1 -1
- package/dist/bin/c4s/commands/tagged-list.js +2 -2
- package/dist/bin/c4s/commands/tagged-list.js.map +1 -1
- package/dist/bin/c4s/context.d.ts +3 -3
- package/dist/bin/c4s/context.js +7 -4
- 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-mcp.js +6 -2
- package/dist/bin/c4s-mcp.js.map +1 -1
- package/dist/bin/c4s.js +19 -4
- package/dist/bin/c4s.js.map +1 -1
- package/dist/bin/gitignore.js +7 -11
- package/dist/bin/gitignore.js.map +1 -1
- package/dist/client/assets/{arc-qrIe4IVl.js → arc-C9oTB3b1.js} +1 -1
- package/dist/client/assets/{architectureDiagram-3BPJPVTR-CF6sgG8n.js → architectureDiagram-3BPJPVTR-Bno5ViqK.js} +1 -1
- package/dist/client/assets/{blockDiagram-GPEHLZMM-Cf8Tx0VN.js → blockDiagram-GPEHLZMM-CJYBoeWQ.js} +1 -1
- package/dist/client/assets/{c4Diagram-AAUBKEIU-BDkuMEyf.js → c4Diagram-AAUBKEIU-DaaqWE6s.js} +1 -1
- package/dist/client/assets/channel-Cei_E79M.js +1 -0
- package/dist/client/assets/{chunk-2J33WTMH-ChycTonk.js → chunk-2J33WTMH-P_I0OPMy.js} +1 -1
- package/dist/client/assets/{chunk-4BX2VUAB-BpUgWjxx.js → chunk-4BX2VUAB-CCySMlh5.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-CeHg_yjT.js → chunk-55IACEB6-CEUyqKGF.js} +1 -1
- package/dist/client/assets/{chunk-727SXJPM-BpxYq7ab.js → chunk-727SXJPM-CoTSYOVz.js} +1 -1
- package/dist/client/assets/{chunk-AQP2D5EJ-bghkOtr6.js → chunk-AQP2D5EJ-DB0nMxPr.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-4sXokGgd.js → chunk-FMBD7UC4-PG3m6-_a.js} +1 -1
- package/dist/client/assets/{chunk-ND2GUHAM-DYQOCE5T.js → chunk-ND2GUHAM-CBNk6IaV.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-NkVuDlFD.js → chunk-QZHKN3VN-CLFa0WvN.js} +1 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-DUe_fAto.js +1 -0
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-DUe_fAto.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-1l4P4WRI.js → cose-bilkent-S5V4N54A-BDwDDxHN.js} +1 -1
- package/dist/client/assets/{dagre-BM42HDAG-CSQie-gR.js → dagre-BM42HDAG-DR-1e8N5.js} +1 -1
- package/dist/client/assets/{diagram-2AECGRRQ-DME9ULoN.js → diagram-2AECGRRQ-C-tHgBWt.js} +1 -1
- package/dist/client/assets/{diagram-5GNKFQAL-Dn1Rw5k5.js → diagram-5GNKFQAL-uLmoKaJL.js} +1 -1
- package/dist/client/assets/{diagram-KO2AKTUF-Duh_PNWR.js → diagram-KO2AKTUF-8Fd-xuOy.js} +1 -1
- package/dist/client/assets/{diagram-LMA3HP47-B7Q5pV60.js → diagram-LMA3HP47-C1gniWsn.js} +1 -1
- package/dist/client/assets/{diagram-OG6HWLK6-C0KL_RDd.js → diagram-OG6HWLK6-BMWjZbeC.js} +1 -1
- package/dist/client/assets/{erDiagram-TEJ5UH35-D5elfwSC.js → erDiagram-TEJ5UH35-CIUO8hrR.js} +1 -1
- package/dist/client/assets/{flowDiagram-I6XJVG4X-BHmjX-WI.js → flowDiagram-I6XJVG4X-Ccw5YEf3.js} +1 -1
- package/dist/client/assets/{ganttDiagram-6RSMTGT7-KvoGFbS2.js → ganttDiagram-6RSMTGT7-BAvlf8cY.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-PVQCEYII-DsZL8BfK.js → gitGraphDiagram-PVQCEYII-ChCkdYar.js} +1 -1
- package/dist/client/assets/{index-zzILqHQN.js → index-BotCWOKC.js} +1 -1
- package/dist/client/assets/index-CtdzGyqj.js +805 -0
- package/dist/client/assets/{index-ClaVbrEF.js → index-DtpKHGD1.js} +1 -1
- package/dist/client/assets/{infoDiagram-5YYISTIA-DoQ6iSpJ.js → infoDiagram-5YYISTIA-CZMGwNyB.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-akftyN0J.js → ishikawaDiagram-YF4QCWOH-CubjZGk6.js} +1 -1
- package/dist/client/assets/{journeyDiagram-JHISSGLW-PPex4PiV.js → journeyDiagram-JHISSGLW-DzwOyVzB.js} +1 -1
- package/dist/client/assets/{kanban-definition-UN3LZRKU-D114i3s1.js → kanban-definition-UN3LZRKU-CXznoTY9.js} +1 -1
- package/dist/client/assets/{linear-BuwQPJom.js → linear-EDwTFRrU.js} +1 -1
- package/dist/client/assets/{mermaid.core-CMX3GAvM.js → mermaid.core-Lae2097R.js} +4 -4
- package/dist/client/assets/{mindmap-definition-RKZ34NQL-ClBxWJju.js → mindmap-definition-RKZ34NQL-DFjIW41g.js} +1 -1
- package/dist/client/assets/{pieDiagram-4H26LBE5-hj5zVPj5.js → pieDiagram-4H26LBE5-CZDLR1jd.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-W4KKPZXB-CRbR0G7M.js → quadrantDiagram-W4KKPZXB-CTGDzbqp.js} +1 -1
- package/dist/client/assets/{requirementDiagram-4Y6WPE33-Dto4B70I.js → requirementDiagram-4Y6WPE33-CeH0NbMv.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-5OEKKPKP-DyYP8rwY.js → sankeyDiagram-5OEKKPKP-B6ZTjurV.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-3UESZ5HK-C-mrSLrJ.js → sequenceDiagram-3UESZ5HK-DcTRztVx.js} +1 -1
- package/dist/client/assets/{stateDiagram-AJRCARHV-IoDlhAe6.js → stateDiagram-AJRCARHV-nUgRVZSA.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-D9pJuQbI.js +1 -0
- package/dist/client/assets/{timeline-definition-PNZ67QCA-DEXg3TEw.js → timeline-definition-PNZ67QCA-CXm5n4rV.js} +1 -1
- package/dist/client/assets/{vennDiagram-CIIHVFJN-CNu7LaT1.js → vennDiagram-CIIHVFJN-EmNJBYNd.js} +1 -1
- package/dist/client/assets/{wardley-L42UT6IY-0hGvREmD.js → wardley-L42UT6IY-MLrlp8H-.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-YWT4CUSO-CVLz-xFz.js → wardleyDiagram-YWT4CUSO-5QoES25n.js} +1 -1
- package/dist/client/assets/{xychartDiagram-2RQKCTM6-CFymKAcX.js → xychartDiagram-2RQKCTM6-CbDEQbY0.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/core/agent/run-agent.d.ts +61 -0
- package/dist/core/agent/run-agent.js +212 -0
- package/dist/core/agent/run-agent.js.map +1 -0
- package/dist/core/ask/run-ask.d.ts +1 -1
- package/dist/core/ask/run-ask.js +14 -5
- package/dist/core/ask/run-ask.js.map +1 -1
- package/dist/core/workspace/resolve.d.ts +2 -0
- package/dist/core/workspace/resolve.js +2 -1
- package/dist/core/workspace/resolve.js.map +1 -1
- package/dist/plugin-types/ambient.d.ts +30 -0
- package/dist/plugin-types/plugin-runtime.d.ts +172 -0
- package/dist/plugin-types/ui.d.ts +154 -0
- package/dist/server/config.d.ts +12 -0
- package/dist/server/config.js +26 -0
- package/dist/server/config.js.map +1 -1
- package/dist/server/core/plugin-host/__fixtures__/plugins.d.ts +14 -0
- package/dist/server/core/plugin-host/__fixtures__/plugins.js +56 -0
- package/dist/server/core/plugin-host/__fixtures__/plugins.js.map +1 -0
- package/dist/server/core/plugin-host/base-packages.d.ts +14 -0
- package/dist/server/core/plugin-host/base-packages.js +26 -0
- package/dist/server/core/plugin-host/base-packages.js.map +1 -0
- package/dist/server/core/plugin-host/cache-bust.d.ts +10 -0
- package/dist/server/core/plugin-host/cache-bust.js +21 -0
- package/dist/server/core/plugin-host/cache-bust.js.map +1 -0
- package/dist/server/core/plugin-host/cli-engine.d.ts +7 -2
- package/dist/server/core/plugin-host/cli-engine.js +11 -3
- package/dist/server/core/plugin-host/cli-engine.js.map +1 -1
- package/dist/server/core/plugin-host/cli-plugins.d.ts +23 -0
- package/dist/server/core/plugin-host/cli-plugins.js +49 -0
- package/dist/server/core/plugin-host/cli-plugins.js.map +1 -0
- package/dist/server/core/plugin-host/cross-cutting.d.ts +41 -4
- package/dist/server/core/plugin-host/cross-cutting.js +52 -4
- package/dist/server/core/plugin-host/cross-cutting.js.map +1 -1
- package/dist/server/core/plugin-host/entities-router.d.ts +2 -1
- package/dist/server/core/plugin-host/entities-router.js +16 -1
- package/dist/server/core/plugin-host/entities-router.js.map +1 -1
- package/dist/server/core/plugin-host/frontend-assets.d.ts +100 -0
- package/dist/server/core/plugin-host/frontend-assets.js +262 -0
- package/dist/server/core/plugin-host/frontend-assets.js.map +1 -0
- package/dist/server/core/plugin-host/frontend-manifest.d.ts +33 -0
- package/dist/server/core/plugin-host/frontend-manifest.js +52 -0
- package/dist/server/core/plugin-host/frontend-manifest.js.map +1 -0
- package/dist/server/core/plugin-host/loader.d.ts +107 -0
- package/dist/server/core/plugin-host/loader.js +196 -0
- package/dist/server/core/plugin-host/loader.js.map +1 -0
- package/dist/server/core/plugin-host/manifest-adapter.d.ts +30 -0
- package/dist/server/core/plugin-host/manifest-adapter.js +119 -0
- package/dist/server/core/plugin-host/manifest-adapter.js.map +1 -0
- package/dist/server/core/plugin-host/overlay-loader.d.ts +60 -0
- package/dist/server/core/plugin-host/overlay-loader.js +243 -0
- package/dist/server/core/plugin-host/overlay-loader.js.map +1 -0
- package/dist/server/core/plugin-host/plugin-watcher.d.ts +41 -0
- package/dist/server/core/plugin-host/plugin-watcher.js +95 -0
- package/dist/server/core/plugin-host/plugin-watcher.js.map +1 -0
- package/dist/server/core/plugin-host/project-host.d.ts +8 -2
- package/dist/server/core/plugin-host/project-host.js +56 -6
- package/dist/server/core/plugin-host/project-host.js.map +1 -1
- package/dist/server/core/plugin-host/registry.d.ts +26 -2
- package/dist/server/core/plugin-host/registry.js +107 -2
- package/dist/server/core/plugin-host/registry.js.map +1 -1
- package/dist/server/core/plugin-host/runtime-shims.d.ts +26 -0
- package/dist/server/core/plugin-host/runtime-shims.js +96 -0
- package/dist/server/core/plugin-host/runtime-shims.js.map +1 -0
- package/dist/server/core/plugin-host/types.d.ts +105 -3
- package/dist/server/db/migrations/041_chat_thread_transagent.sql +22 -0
- package/dist/server/db/migrations/042_chat_thread_drop_context_type_check.sql +61 -0
- package/dist/server/external-skills/brief-implementer-template.d.ts +1 -1
- package/dist/server/external-skills/brief-implementer-template.js +5 -2
- package/dist/server/external-skills/brief-implementer-template.js.map +1 -1
- package/dist/server/external-skills/spec-reader-template.d.ts +1 -1
- package/dist/server/external-skills/spec-reader-template.js +14 -0
- package/dist/server/external-skills/spec-reader-template.js.map +1 -1
- package/dist/server/index.js +98 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/mcp/c4s-tools.d.ts +6 -1
- package/dist/server/mcp/c4s-tools.js +18 -13
- package/dist/server/mcp/c4s-tools.js.map +1 -1
- package/dist/server/mcp/release-tools/index.d.ts +11 -0
- package/dist/server/mcp/release-tools/index.js +68 -5
- package/dist/server/mcp/release-tools/index.js.map +1 -1
- package/dist/server/mcp/release-tools/projection.d.ts +11 -2
- package/dist/server/mcp/release-tools/projection.js +36 -7
- package/dist/server/mcp/release-tools/projection.js.map +1 -1
- package/dist/server/mcp/release-tools/types.d.ts +39 -2
- package/dist/server/mcp/transagent-tools.d.ts +26 -0
- package/dist/server/mcp/transagent-tools.js +75 -0
- package/dist/server/mcp/transagent-tools.js.map +1 -0
- package/dist/server/plugin-runtime/index.d.ts +17 -0
- package/dist/server/plugin-runtime/index.js +16 -0
- package/dist/server/plugin-runtime/index.js.map +1 -0
- package/dist/server/plugin-runtime/ui.d.ts +15 -0
- package/dist/server/plugin-runtime/ui.js +15 -0
- package/dist/server/plugin-runtime/ui.js.map +1 -0
- package/dist/server/routes/agent-turn.d.ts +17 -1
- package/dist/server/routes/agent-turn.js +121 -36
- package/dist/server/routes/agent-turn.js.map +1 -1
- package/dist/server/routes/briefs.js +12 -4
- package/dist/server/routes/briefs.js.map +1 -1
- package/dist/server/routes/chat.js +18 -0
- package/dist/server/routes/chat.js.map +1 -1
- package/dist/server/routes/config.d.ts +8 -0
- package/dist/server/routes/config.js +41 -3
- package/dist/server/routes/config.js.map +1 -1
- package/dist/server/routes/plans.js +13 -0
- package/dist/server/routes/plans.js.map +1 -1
- package/dist/server/routes/plugins.d.ts +43 -0
- package/dist/server/routes/plugins.js +93 -0
- package/dist/server/routes/plugins.js.map +1 -0
- package/dist/server/routes/threads.js +30 -5
- package/dist/server/routes/threads.js.map +1 -1
- package/dist/server/serialization/registerAll.d.ts +4 -0
- package/dist/server/serialization/registerAll.js +4 -2
- package/dist/server/serialization/registerAll.js.map +1 -1
- package/dist/server/services/brief.d.ts +30 -8
- package/dist/server/services/brief.js +58 -28
- package/dist/server/services/brief.js.map +1 -1
- package/dist/server/services/chat-context.d.ts +34 -0
- package/dist/server/services/chat-context.js +68 -21
- package/dist/server/services/chat-context.js.map +1 -1
- package/dist/server/services/chat.d.ts +18 -1
- package/dist/server/services/chat.js +74 -23
- package/dist/server/services/chat.js.map +1 -1
- package/dist/server/services/entity-indexer.js +21 -14
- package/dist/server/services/entity-indexer.js.map +1 -1
- package/dist/server/services/entity-writer.d.ts +2 -3
- package/dist/server/services/entity-writer.js.map +1 -1
- package/dist/server/services/plan.d.ts +7 -1
- package/dist/server/services/plan.js +17 -4
- package/dist/server/services/plan.js.map +1 -1
- package/dist/server/services/skill-registry.d.ts +31 -2
- package/dist/server/services/skill-registry.js +73 -1
- package/dist/server/services/skill-registry.js.map +1 -1
- package/dist/server/services/transagent-dispatcher.d.ts +60 -0
- package/dist/server/services/transagent-dispatcher.js +147 -0
- package/dist/server/services/transagent-dispatcher.js.map +1 -0
- package/dist/server/skills/brief-author/SKILL.md +26 -17
- package/dist/server/workspace/context-cache.d.ts +9 -0
- package/dist/server/workspace/context-cache.js +14 -0
- package/dist/server/workspace/context-cache.js.map +1 -1
- package/dist/server/workspace/project-context.d.ts +3 -0
- package/dist/server/workspace/project-context.js +108 -5
- package/dist/server/workspace/project-context.js.map +1 -1
- package/dist/server/workspace/registry.d.ts +28 -1
- package/dist/server/workspace/registry.js +57 -1
- package/dist/server/workspace/registry.js.map +1 -1
- package/dist/server/workspace/types.d.ts +15 -0
- package/dist/shared/entities.d.ts +50 -4
- package/dist/shared/entities.js +1 -0
- package/dist/shared/entities.js.map +1 -1
- package/dist/shared/plugin-host/frontend-manifest.d.ts +56 -0
- package/dist/shared/plugin-host/frontend-manifest.js +89 -0
- package/dist/shared/plugin-host/frontend-manifest.js.map +1 -0
- package/dist/shared/plugin-host/host-api.d.ts +60 -0
- package/dist/shared/plugin-host/host-api.js +67 -0
- package/dist/shared/plugin-host/host-api.js.map +1 -0
- package/dist/shared/plugin-host/manifest.d.ts +194 -0
- package/dist/shared/plugin-host/manifest.js +52 -0
- package/dist/shared/plugin-host/manifest.js.map +1 -0
- package/dist/shared/plugin-host/ui-kit-surface.d.ts +22 -0
- package/dist/shared/plugin-host/ui-kit-surface.js +25 -0
- package/dist/shared/plugin-host/ui-kit-surface.js.map +1 -0
- package/dist/shared/types.d.ts +5 -0
- package/package.json +18 -3
- package/dist/client/assets/channel-CTF_J4I4.js +0 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-Dt9RLC8r.js +0 -1
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-Dt9RLC8r.js +0 -1
- package/dist/client/assets/index-DnLELaLA.js +0 -798
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-BblFLijq.js +0 -1
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { createHash } from 'node:crypto';
|
|
3
|
+
import { resolveWorkspaceProject, WorkspaceResolveError } from '../workspace/resolve.js';
|
|
4
|
+
/** Default model resolved here so every transport shares one source of truth. */
|
|
5
|
+
const DEFAULT_MODEL = 'opus-4.8';
|
|
6
|
+
export class AgentError extends Error {
|
|
7
|
+
code;
|
|
8
|
+
hint;
|
|
9
|
+
constructor(code, message, hint) {
|
|
10
|
+
super(message);
|
|
11
|
+
this.code = code;
|
|
12
|
+
this.hint = hint;
|
|
13
|
+
this.name = 'AgentError';
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export async function runAgent(params) {
|
|
17
|
+
const message = params.message;
|
|
18
|
+
if (!message || !message.trim()) {
|
|
19
|
+
throw new AgentError('INVALID_ARGS', 'message is required');
|
|
20
|
+
}
|
|
21
|
+
const model = params.model ?? DEFAULT_MODEL;
|
|
22
|
+
const output = params.output ?? 'final';
|
|
23
|
+
// --- discovery: adres serwera + project-id ------------------------------
|
|
24
|
+
// M31: discovery przez rejestr workspace'ow (`defaultPort`), nie przez
|
|
25
|
+
// config.json (port wyprowadzil sie z configu w v3). Kazdy URL dostaje
|
|
26
|
+
// prefiks `/api/projects/<id>` — peer servuje N projektow.
|
|
27
|
+
let baseUrl;
|
|
28
|
+
let projectId;
|
|
29
|
+
if (params.server) {
|
|
30
|
+
baseUrl = params.server.replace(/\/+$/, '');
|
|
31
|
+
// `--server` bez resolvable projektu → wymagaj `--project` (id liczy sie
|
|
32
|
+
// z absolutnej sciezki projektu, tak jak rejestruje go peer).
|
|
33
|
+
try {
|
|
34
|
+
const resolved = resolveWorkspaceProject({ project: params.project, workspace: params.workspace });
|
|
35
|
+
projectId = resolved.projectId;
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
if (err instanceof WorkspaceResolveError && params.project) {
|
|
39
|
+
// Sciezka podana wprost, ale nieznana lokalnemu rejestrowi (zdalny
|
|
40
|
+
// peer) — id wyprowadzamy z samej sciezki.
|
|
41
|
+
projectId = projectIdForPath(params.project);
|
|
42
|
+
}
|
|
43
|
+
else if (err instanceof WorkspaceResolveError) {
|
|
44
|
+
throw new AgentError('INVALID_ARGS', '--server requires --project <path> when no local workspace owns the current directory', 'the project id in the URL prefix derives from the project path');
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
throw err;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
let resolved;
|
|
53
|
+
try {
|
|
54
|
+
resolved = resolveWorkspaceProject({ project: params.project, workspace: params.workspace });
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
if (err instanceof WorkspaceResolveError) {
|
|
58
|
+
throw new AgentError(err.code, err.message, err.hint);
|
|
59
|
+
}
|
|
60
|
+
throw err;
|
|
61
|
+
}
|
|
62
|
+
baseUrl = `http://localhost:${resolved.defaultPort}`;
|
|
63
|
+
projectId = resolved.projectId;
|
|
64
|
+
}
|
|
65
|
+
const apiBase = `${baseUrl}/api/projects/${projectId}`;
|
|
66
|
+
// --- health-check tozsamosci --------------------------------------------
|
|
67
|
+
await healthCheck(baseUrl, apiBase);
|
|
68
|
+
// --- create-thread (context-specific) — pomijany dla threadId ----------
|
|
69
|
+
let threadId;
|
|
70
|
+
if (params.threadId) {
|
|
71
|
+
threadId = params.threadId;
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
const ct = params.contextType ?? 'chat';
|
|
75
|
+
if (ct !== 'chat' && ct !== 'brief' && ct !== 'patch' && ct !== 'ask') {
|
|
76
|
+
throw new AgentError('INVALID_ARGS', `contextType must be chat|brief|patch|ask (got '${ct}')`);
|
|
77
|
+
}
|
|
78
|
+
if (ct === 'patch') {
|
|
79
|
+
// Watki patch nie maja route create-thread — tylko kontynuacja.
|
|
80
|
+
throw new AgentError('INVALID_ARGS', 'cannot create a patch thread via agent; pass threadId to continue one');
|
|
81
|
+
}
|
|
82
|
+
if (ct === 'brief') {
|
|
83
|
+
if (!params.briefPath) {
|
|
84
|
+
throw new AgentError('INVALID_ARGS', "contextType='brief' requires briefPath");
|
|
85
|
+
}
|
|
86
|
+
const encoded = params.briefPath.split('/').map(encodeURIComponent).join('/');
|
|
87
|
+
const created = await postJson(`${apiBase}/briefs/${encoded}/threads`, {});
|
|
88
|
+
threadId = pickThreadId(created);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
// 'chat' + 'ask' share the generic create-thread route; the server
|
|
92
|
+
// validates `context_type` (only 'chat'/'ask' accepted on this path).
|
|
93
|
+
const created = await postJson(`${apiBase}/threads`, { context_type: ct });
|
|
94
|
+
threadId = pickThreadId(created);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// --- run-turn (generyczny po context_type) ------------------------------
|
|
98
|
+
const result = await postJson(`${apiBase}/threads/${encodeURIComponent(threadId)}/ask`, {
|
|
99
|
+
message,
|
|
100
|
+
model,
|
|
101
|
+
});
|
|
102
|
+
const answer = typeof result.answer === 'string' ? result.answer : '';
|
|
103
|
+
const outThreadId = typeof result.threadId === 'string' ? result.threadId : threadId;
|
|
104
|
+
const out = { threadId: outThreadId, answer };
|
|
105
|
+
if (output === 'full') {
|
|
106
|
+
out.messages = Array.isArray(result.messages) ? result.messages : [];
|
|
107
|
+
}
|
|
108
|
+
return out;
|
|
109
|
+
}
|
|
110
|
+
/** M31: project id = sha1(abs path).slice(0,12) — same derivation as the registry. */
|
|
111
|
+
function projectIdForPath(project) {
|
|
112
|
+
// Lazy import-free copy of projectIdForCwd to keep run-agent dependency-light:
|
|
113
|
+
// resolveWorkspaceProject already covers the registry path; this branch only
|
|
114
|
+
// serves `--server` + explicit `--project` for a remote peer.
|
|
115
|
+
return createHashHex(path.resolve(process.cwd(), project)).slice(0, 12);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* M31 health-check tozsamosci: `GET /api/projects/<id>/config` musi zwrocic
|
|
119
|
+
* ksztalt configu claude4spec v3. Piec rozlacznych wynikow:
|
|
120
|
+
* connection refused → SERVER_NOT_RUNNING
|
|
121
|
+
* nie-c4s ksztalt → SERVER_NOT_RECOGNIZED
|
|
122
|
+
* 404 z koperta c4s → PROJECT_NOT_IN_WORKSPACE
|
|
123
|
+
* inny nie-2xx z koperta c4s → kod z koperty (np. PROJECT_BUILD_FAILED)
|
|
124
|
+
* 200 config → OK
|
|
125
|
+
*/
|
|
126
|
+
async function healthCheck(baseUrl, apiBase) {
|
|
127
|
+
let res;
|
|
128
|
+
try {
|
|
129
|
+
res = await fetch(`${apiBase}/config`);
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
throw new AgentError('SERVER_NOT_RUNNING', `no claude4spec server responding at ${baseUrl}`, 'start it with `npx @inharness-ai/claude4spec` in the project');
|
|
133
|
+
}
|
|
134
|
+
let body;
|
|
135
|
+
try {
|
|
136
|
+
body = await res.json();
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
throw new AgentError('SERVER_NOT_RECOGNIZED', `process at ${baseUrl} responded but not with a claude4spec config`);
|
|
140
|
+
}
|
|
141
|
+
if (res.status === 404 && isC4sErrorEnvelope(body)) {
|
|
142
|
+
const err = body.error;
|
|
143
|
+
throw new AgentError('PROJECT_NOT_IN_WORKSPACE', err.message ?? `project not registered in the workspace served at ${baseUrl}`, 'register it: POST /api/workspace/projects or run `npx @inharness-ai/claude4spec` in the project');
|
|
144
|
+
}
|
|
145
|
+
// A non-2xx carrying a c4s error envelope means the server IS claude4spec but
|
|
146
|
+
// this project failed to build (e.g. 500 PROJECT_BUILD_FAILED). Surface its own
|
|
147
|
+
// code/message instead of masking it as "not a claude4spec server" — otherwise a
|
|
148
|
+
// bad config.json (e.g. an unselectable writingStyle) looks like a missing server.
|
|
149
|
+
if (!res.ok && isC4sErrorEnvelope(body)) {
|
|
150
|
+
const err = body.error;
|
|
151
|
+
throw new AgentError(err.code ?? 'PROJECT_BUILD_FAILED', err.message ?? `project at ${baseUrl} failed to build`, err.hint);
|
|
152
|
+
}
|
|
153
|
+
if (!res.ok || !isConfigShape(body)) {
|
|
154
|
+
throw new AgentError('SERVER_NOT_RECOGNIZED', `process at ${baseUrl} is not a claude4spec server (unexpected GET ${apiBase}/config shape)`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
function isC4sErrorEnvelope(body) {
|
|
158
|
+
if (!body || typeof body !== 'object')
|
|
159
|
+
return false;
|
|
160
|
+
const e = body.error;
|
|
161
|
+
return !!e && typeof e === 'object' && typeof e.code === 'string';
|
|
162
|
+
}
|
|
163
|
+
/** M31 v3 shape — no port/mode anymore; entitiesDir is required. */
|
|
164
|
+
function isConfigShape(body) {
|
|
165
|
+
if (!body || typeof body !== 'object')
|
|
166
|
+
return false;
|
|
167
|
+
const c = body;
|
|
168
|
+
return (typeof c.name === 'string' &&
|
|
169
|
+
typeof c.pagesDir === 'string' &&
|
|
170
|
+
typeof c.entitiesDir === 'string' &&
|
|
171
|
+
'writingStyle' in c &&
|
|
172
|
+
!!c.onboarding &&
|
|
173
|
+
typeof c.onboarding === 'object');
|
|
174
|
+
}
|
|
175
|
+
/** POST JSON; przy nie-2xx propaguje `{ error: { code, message } }` endpointu. */
|
|
176
|
+
async function postJson(url, payload) {
|
|
177
|
+
let res;
|
|
178
|
+
try {
|
|
179
|
+
res = await fetch(url, {
|
|
180
|
+
method: 'POST',
|
|
181
|
+
headers: { 'content-type': 'application/json' },
|
|
182
|
+
body: JSON.stringify(payload),
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
catch {
|
|
186
|
+
throw new AgentError('SERVER_NOT_RUNNING', `request to ${url} failed (connection refused)`);
|
|
187
|
+
}
|
|
188
|
+
let body = {};
|
|
189
|
+
try {
|
|
190
|
+
body = (await res.json());
|
|
191
|
+
}
|
|
192
|
+
catch {
|
|
193
|
+
/* puste/nie-JSON body — obsluzone nizej przez !res.ok */
|
|
194
|
+
}
|
|
195
|
+
if (!res.ok) {
|
|
196
|
+
const err = (body.error ?? {});
|
|
197
|
+
throw new AgentError(err.code ?? 'AGENT_ERROR', err.message ?? `request to ${url} failed with HTTP ${res.status}`, err.hint);
|
|
198
|
+
}
|
|
199
|
+
return body.data ?? body;
|
|
200
|
+
}
|
|
201
|
+
function pickThreadId(created) {
|
|
202
|
+
// `POST /api/threads` → `{ id }`; `POST /api/briefs/.../threads` → `{ threadId }`.
|
|
203
|
+
const id = created.threadId ?? created.id;
|
|
204
|
+
if (typeof id !== 'string' || !id) {
|
|
205
|
+
throw new AgentError('AGENT_ERROR', 'create-thread response had no thread id');
|
|
206
|
+
}
|
|
207
|
+
return id;
|
|
208
|
+
}
|
|
209
|
+
function createHashHex(input) {
|
|
210
|
+
return createHash('sha1').update(input).digest('hex');
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=run-agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-agent.js","sourceRoot":"","sources":["../../../src/core/agent/run-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,7 +30,7 @@ export interface AskResult {
|
|
|
30
30
|
threadId: string;
|
|
31
31
|
answer: string;
|
|
32
32
|
}
|
|
33
|
-
export type AskErrorCode = 'PROJECT_NOT_FOUND' | 'AMBIGUOUS_WORKSPACE' | 'PROJECT_NOT_IN_WORKSPACE' | 'SERVER_NOT_RUNNING' | 'SERVER_NOT_RECOGNIZED' | 'NOT_FOUND' | 'STREAM_IN_PROGRESS' | 'AGENT_UNAVAILABLE' | 'AGENT_ERROR' | 'TIMEOUT' | 'ABORTED' | 'INVALID_ARGS';
|
|
33
|
+
export type AskErrorCode = 'PROJECT_NOT_FOUND' | 'AMBIGUOUS_WORKSPACE' | 'PROJECT_NOT_IN_WORKSPACE' | 'SERVER_NOT_RUNNING' | 'SERVER_NOT_RECOGNIZED' | 'PROJECT_BUILD_FAILED' | 'NOT_FOUND' | 'STREAM_IN_PROGRESS' | 'AGENT_UNAVAILABLE' | 'AGENT_ERROR' | 'TIMEOUT' | 'ABORTED' | 'INVALID_ARGS';
|
|
34
34
|
export declare class AskError extends Error {
|
|
35
35
|
code: AskErrorCode;
|
|
36
36
|
hint?: string | undefined;
|
package/dist/core/ask/run-ask.js
CHANGED
|
@@ -105,11 +105,12 @@ function projectIdForPath(project) {
|
|
|
105
105
|
}
|
|
106
106
|
/**
|
|
107
107
|
* M31 health-check tozsamosci: `GET /api/projects/<id>/config` musi zwrocic
|
|
108
|
-
* ksztalt configu claude4spec v3.
|
|
109
|
-
* connection refused
|
|
110
|
-
* nie-c4s ksztalt
|
|
111
|
-
* 404 z koperta c4s
|
|
112
|
-
*
|
|
108
|
+
* ksztalt configu claude4spec v3. Piec rozlacznych wynikow:
|
|
109
|
+
* connection refused → SERVER_NOT_RUNNING
|
|
110
|
+
* nie-c4s ksztalt → SERVER_NOT_RECOGNIZED
|
|
111
|
+
* 404 z koperta c4s → PROJECT_NOT_IN_WORKSPACE
|
|
112
|
+
* inny nie-2xx z koperta c4s → kod z koperty (np. PROJECT_BUILD_FAILED)
|
|
113
|
+
* 200 config → OK
|
|
113
114
|
*/
|
|
114
115
|
async function healthCheck(baseUrl, apiBase) {
|
|
115
116
|
let res;
|
|
@@ -130,6 +131,14 @@ async function healthCheck(baseUrl, apiBase) {
|
|
|
130
131
|
const err = body.error;
|
|
131
132
|
throw new AskError('PROJECT_NOT_IN_WORKSPACE', err.message ?? `project not registered in the workspace served at ${baseUrl}`, 'register it: POST /api/workspace/projects or run `npx @inharness-ai/claude4spec` in the project');
|
|
132
133
|
}
|
|
134
|
+
// A non-2xx carrying a c4s error envelope means the server IS claude4spec but
|
|
135
|
+
// this project failed to build (e.g. 500 PROJECT_BUILD_FAILED). Surface its own
|
|
136
|
+
// code/message instead of masking it as "not a claude4spec server" — otherwise a
|
|
137
|
+
// bad config.json (e.g. an unselectable writingStyle) looks like a missing server.
|
|
138
|
+
if (!res.ok && isC4sErrorEnvelope(body)) {
|
|
139
|
+
const err = body.error;
|
|
140
|
+
throw new AskError(err.code ?? 'PROJECT_BUILD_FAILED', err.message ?? `project at ${baseUrl} failed to build`, err.hint);
|
|
141
|
+
}
|
|
133
142
|
if (!res.ok || !isConfigShape(body)) {
|
|
134
143
|
throw new AskError('SERVER_NOT_RECOGNIZED', `process at ${baseUrl} is not a claude4spec server (unexpected GET ${apiBase}/config shape)`);
|
|
135
144
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-ask.js","sourceRoot":"","sources":["../../../src/core/ask/run-ask.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"run-ask.js","sourceRoot":"","sources":["../../../src/core/ask/run-ask.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,8 @@ export interface ResolvedWorkspaceProject {
|
|
|
5
5
|
projectDir: string;
|
|
6
6
|
/** `~/.claude4spec/<ws>/<id>/db.sqlite` — may not exist yet (fresh slot). */
|
|
7
7
|
dbPath: string;
|
|
8
|
+
/** M33: workspace plugin packages (predefined ∪ user-added) for the loader. */
|
|
9
|
+
pluginPackages: string[];
|
|
8
10
|
}
|
|
9
11
|
export type WorkspaceResolveErrorCode = 'PROJECT_NOT_FOUND' | 'AMBIGUOUS_WORKSPACE';
|
|
10
12
|
export declare class WorkspaceResolveError extends Error {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
|
-
import { WorkspaceRegistry } from '../../server/workspace/registry.js';
|
|
2
|
+
import { WorkspaceRegistry, resolvePluginPackages } from '../../server/workspace/registry.js';
|
|
3
3
|
import { projectIdForCwd } from '../../server/workspace/project-id.js';
|
|
4
4
|
export class WorkspaceResolveError extends Error {
|
|
5
5
|
code;
|
|
@@ -75,6 +75,7 @@ export function resolveWorkspaceProject(opts = {}) {
|
|
|
75
75
|
projectId,
|
|
76
76
|
projectDir,
|
|
77
77
|
dbPath: path.join(registry.slotDir(workspace, projectId), 'db.sqlite'),
|
|
78
|
+
pluginPackages: resolvePluginPackages(workspace),
|
|
78
79
|
};
|
|
79
80
|
}
|
|
80
81
|
//# sourceMappingURL=resolve.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/core/workspace/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/core/workspace/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC9F,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAgBvE,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAErC;IAEA;IAHT,YACS,IAA+B,EACtC,OAAe,EACR,IAAa;QAEpB,KAAK,CAAC,OAAO,CAAC,CAAC;QAJR,SAAI,GAAJ,IAAI,CAA2B;QAE/B,SAAI,GAAJ,IAAI,CAAS;QAGpB,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAAiD,EAAE;IAEnD,MAAM,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAEzC,qEAAqE;IACrE,0EAA0E;IAC1E,IAAI,UAAU,GAAkB,IAAI,CAAC;IACrC,IAAI,MAAM,GAAsB,EAAE,CAAC;IACnC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACvD,MAAM,GAAG,QAAQ,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;IACxD,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QACxB,SAAS,CAAC;YACR,MAAM,KAAK,GAAG,QAAQ,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;YACpD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,UAAU,GAAG,GAAG,CAAC;gBACjB,MAAM,GAAG,KAAK,CAAC;gBACf,MAAM;YACR,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,MAAM,KAAK,GAAG;gBAAE,MAAM;YAC1B,GAAG,GAAG,MAAM,CAAC;QACf,CAAC;IACH,CAAC;IAED,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,qBAAqB,CAC7B,mBAAmB,EACnB,IAAI,CAAC,OAAO;YACV,CAAC,CAAC,8CAA8C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;YAC3F,CAAC,CAAC,gFAAgF,EACpF,0FAA0F,CAC3F,CAAC;IACJ,CAAC;IAED,IAAI,SAA0B,CAAC;IAC/B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,qBAAqB,CAC7B,mBAAmB,EACnB,WAAW,UAAU,oCAAoC,IAAI,CAAC,SAAS,GAAG,EAC1E,kBAAkB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACzD,CAAC;QACJ,CAAC;QACD,SAAS,GAAG,KAAK,CAAC;IACpB,CAAC;SAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,SAAS,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,qBAAqB,CAC7B,qBAAqB,EACrB,WAAW,UAAU,qBAAqB,MAAM,CAAC,MAAM,gBAAgB,MAAM;aAC1E,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,WAAW,GAAG,CAAC;aACjD,IAAI,CAAC,IAAI,CAAC,EAAE,EACf,qCAAqC,CACtC,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAC9C,OAAO;QACL,aAAa,EAAE,SAAS,CAAC,IAAI;QAC7B,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,SAAS;QACT,UAAU;QACV,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC;QACtE,cAAc,EAAE,qBAAqB,CAAC,SAAS,CAAC;KACjD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ambient binding for the runtime value specifiers `@c4s/plugin-runtime` and
|
|
3
|
+
* `@c4s/plugin-runtime/ui` (brief 0.1.85→0.1.86, "For implementers" #2).
|
|
4
|
+
*
|
|
5
|
+
* A plugin's source imports those BARE specifiers (resolved at runtime by the
|
|
6
|
+
* M33 import-map shim). This file makes TypeScript resolve their TYPES to the
|
|
7
|
+
* host's published surface, so a plugin can drop its vendored `c4s-runtime.d.ts`
|
|
8
|
+
* and instead reference the host package once:
|
|
9
|
+
*
|
|
10
|
+
* /// <reference types="@inharness-ai/claude4spec/plugin-runtime/ambient" />
|
|
11
|
+
*
|
|
12
|
+
* or via tsconfig `compilerOptions.types`. That single reference types BOTH the
|
|
13
|
+
* value specifier and all the type names (AC1).
|
|
14
|
+
*
|
|
15
|
+
* This is a SCRIPT file (no top-level import/export) so the `declare module`
|
|
16
|
+
* blocks are AMBIENT declarations, not augmentations. The bodies live in the
|
|
17
|
+
* tsc-emitted module surfaces — re-exported here by their official subpaths, so
|
|
18
|
+
* there is a single source and no hand-mirrored copy to drift. It is shipped
|
|
19
|
+
* verbatim (copied into `dist/plugin-types/`), never compiled by the host, so
|
|
20
|
+
* the self-package specifiers resolve on the consumer side (where the package is
|
|
21
|
+
* installed), not during the host's own build.
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
declare module '@c4s/plugin-runtime' {
|
|
25
|
+
export * from '@inharness-ai/claude4spec/plugin-runtime';
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
declare module '@c4s/plugin-runtime/ui' {
|
|
29
|
+
export * from '@inharness-ai/claude4spec/plugin-runtime/ui';
|
|
30
|
+
}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@inharness-ai/claude4spec/plugin-runtime` — the PUBLISHED Host API type
|
|
3
|
+
* surface for plugin authors (brief 0.1.85→0.1.86).
|
|
4
|
+
*
|
|
5
|
+
* This is the official, host-owned mirror of the contract a plugin's code
|
|
6
|
+
* compiles against. It replaces the per-plugin vendored `c4s-runtime.d.ts`
|
|
7
|
+
* ambient fallback: the host now ships these declarations so plugin authors
|
|
8
|
+
* reference them instead of hand-copying. The value transport is unchanged —
|
|
9
|
+
* at runtime a plugin's `import "@c4s/plugin-runtime"` still resolves to the
|
|
10
|
+
* M33 import-map shim; these types are that contract's compile-time mirror.
|
|
11
|
+
*
|
|
12
|
+
* Two channels compose:
|
|
13
|
+
* - top-level exports here type the subpath `@inharness-ai/claude4spec/plugin-runtime`;
|
|
14
|
+
* - the ambient `declare module '@c4s/plugin-runtime'` in `./ambient.d.ts` binds
|
|
15
|
+
* the runtime value specifier to this same surface.
|
|
16
|
+
*
|
|
17
|
+
* SINGLE SOURCE OF TRUTH. The dep-free contract (manifest / EntityModule) is
|
|
18
|
+
* RE-EXPORTED from its canonical host modules, so it cannot drift (a change to
|
|
19
|
+
* the real interface flows through automatically; `published-surface.test.ts`
|
|
20
|
+
* additionally asserts structural parity). The server- and client-coupled slots
|
|
21
|
+
* (mount context, serializer, render props, runtime singletons) are declared
|
|
22
|
+
* here with intentionally-loose external types: their real types pull host
|
|
23
|
+
* internals (express Router, better-sqlite3 Database, the Tiptap registry) that
|
|
24
|
+
* are NOT part of the contract and must not leak into the published surface
|
|
25
|
+
* (AC2). This mirrors how the host itself types them `unknown` and narrows
|
|
26
|
+
* internally.
|
|
27
|
+
*
|
|
28
|
+
* `hostApiVersion` is NOT bumped by publishing these types — `tsc` erases types
|
|
29
|
+
* from emitted JS, so the alias-path argument that blocks publishing runtime
|
|
30
|
+
* VALUES does not apply to declarations (brief "Version semantics").
|
|
31
|
+
*/
|
|
32
|
+
import type { ComponentType } from 'react';
|
|
33
|
+
import type { EntityModuleManifest, SystemPromptContribution } from '../shared/plugin-host/types.js';
|
|
34
|
+
export { HOST_API_VERSION } from '../shared/plugin-host/manifest.js';
|
|
35
|
+
export type { PluginManifest, PluginEngines, EntityContribution, WritingStyleContribution, PluginSettingField, PluginSettingsModule, PluginCommandContribution, } from '../shared/plugin-host/manifest.js';
|
|
36
|
+
export type { EntityModuleManifest, SystemPromptContribution };
|
|
37
|
+
export interface SqlMigration {
|
|
38
|
+
version: number;
|
|
39
|
+
name: string;
|
|
40
|
+
/** Idempotent SQL — must tolerate replay. */
|
|
41
|
+
up: string;
|
|
42
|
+
}
|
|
43
|
+
export interface MountContext {
|
|
44
|
+
app: any;
|
|
45
|
+
db: any;
|
|
46
|
+
host: any;
|
|
47
|
+
cwd: string;
|
|
48
|
+
ws: {
|
|
49
|
+
broadcast(msg: unknown): void;
|
|
50
|
+
};
|
|
51
|
+
tagsService: any;
|
|
52
|
+
versionService: any;
|
|
53
|
+
referencesService: any;
|
|
54
|
+
entityStore: any;
|
|
55
|
+
registerMcpServer(name: string, factory: () => unknown): void;
|
|
56
|
+
registerEntityService(type: string, service: unknown): void;
|
|
57
|
+
}
|
|
58
|
+
export type PluginMountFn = (ctx: MountContext) => void;
|
|
59
|
+
export interface SerializeContext {
|
|
60
|
+
reader: unknown;
|
|
61
|
+
depth: number;
|
|
62
|
+
maxDepth: number;
|
|
63
|
+
}
|
|
64
|
+
export interface RestoreContext {
|
|
65
|
+
reader: unknown;
|
|
66
|
+
writer: unknown;
|
|
67
|
+
releaseId: number | null;
|
|
68
|
+
actor: 'user' | 'agent';
|
|
69
|
+
}
|
|
70
|
+
export interface RestoreResult<T = unknown> {
|
|
71
|
+
op: 'created' | 'updated' | 'deleted' | 'noop';
|
|
72
|
+
entity: T | null;
|
|
73
|
+
warnings?: string[];
|
|
74
|
+
}
|
|
75
|
+
export interface EntityDiff {
|
|
76
|
+
type: string;
|
|
77
|
+
slug: string;
|
|
78
|
+
op: 'created' | 'deleted' | 'modified' | 'noop';
|
|
79
|
+
changes?: Record<string, unknown>;
|
|
80
|
+
}
|
|
81
|
+
export type SnapshotData = unknown;
|
|
82
|
+
export interface EntitySerializer<T = unknown> {
|
|
83
|
+
type: string;
|
|
84
|
+
version: string;
|
|
85
|
+
inlineMention?: (entity: T, ctx: SerializeContext) => unknown;
|
|
86
|
+
singleElement?: (entity: T, ctx: SerializeContext) => unknown;
|
|
87
|
+
elementListItem?: (entity: T, ctx: SerializeContext) => unknown;
|
|
88
|
+
taggedListItem?: (entity: T, ctx: SerializeContext) => unknown;
|
|
89
|
+
detail?: (entity: T, ctx: SerializeContext) => unknown;
|
|
90
|
+
snapshot?: (entity: T, ctx: SerializeContext) => SnapshotData;
|
|
91
|
+
restore?: (data: SnapshotData, ctx: RestoreContext) => RestoreResult;
|
|
92
|
+
diff?: (a: SnapshotData, b: SnapshotData, slug: string) => EntityDiff;
|
|
93
|
+
}
|
|
94
|
+
export interface EntityChipProps<T = unknown> {
|
|
95
|
+
slug: string;
|
|
96
|
+
/** The host injects the resolved entity; `null` ⇒ broken reference. */
|
|
97
|
+
entity: T | null;
|
|
98
|
+
onOpen?: () => void;
|
|
99
|
+
}
|
|
100
|
+
export interface EntityCardProps<T = unknown> extends EntityChipProps<T> {
|
|
101
|
+
}
|
|
102
|
+
export interface EntityRowProps<T = unknown> {
|
|
103
|
+
slug: string;
|
|
104
|
+
entity: T;
|
|
105
|
+
active?: boolean;
|
|
106
|
+
onOpen?: () => void;
|
|
107
|
+
}
|
|
108
|
+
export interface EntityDetailProps {
|
|
109
|
+
slug: string;
|
|
110
|
+
onDeleted: () => void;
|
|
111
|
+
onRenamed: (newSlug: string) => void;
|
|
112
|
+
onBack: () => void;
|
|
113
|
+
}
|
|
114
|
+
export interface SidebarTabSlot {
|
|
115
|
+
icon: ComponentType<{
|
|
116
|
+
className?: string;
|
|
117
|
+
size?: number | string;
|
|
118
|
+
}>;
|
|
119
|
+
label: string;
|
|
120
|
+
order: number;
|
|
121
|
+
emptyState?: ComponentType<unknown>;
|
|
122
|
+
}
|
|
123
|
+
export interface SlashCommand {
|
|
124
|
+
id: string;
|
|
125
|
+
label: string;
|
|
126
|
+
description: string;
|
|
127
|
+
hint: string;
|
|
128
|
+
pluginPopoverKind?: string;
|
|
129
|
+
}
|
|
130
|
+
export interface EditorExtensionRegistration {
|
|
131
|
+
name: string;
|
|
132
|
+
extension?: unknown;
|
|
133
|
+
priority?: number;
|
|
134
|
+
availableIn?: string[];
|
|
135
|
+
slashCommand?: SlashCommand;
|
|
136
|
+
}
|
|
137
|
+
export type AnyRoute = unknown;
|
|
138
|
+
export type RouteTreeFragment = (ctx: {
|
|
139
|
+
rootRoute: AnyRoute;
|
|
140
|
+
}) => AnyRoute[];
|
|
141
|
+
export interface FrontendModule extends EntityModuleManifest {
|
|
142
|
+
renderChip: ComponentType<EntityChipProps<unknown>>;
|
|
143
|
+
renderCard: ComponentType<EntityCardProps<unknown>>;
|
|
144
|
+
renderRow: ComponentType<EntityRowProps<unknown>>;
|
|
145
|
+
detailPanel: ComponentType<EntityDetailProps>;
|
|
146
|
+
useGetBySlug: (slug: string | null) => {
|
|
147
|
+
data: unknown | null | undefined;
|
|
148
|
+
isLoading: boolean;
|
|
149
|
+
};
|
|
150
|
+
listByTags: (args: {
|
|
151
|
+
tags: string[];
|
|
152
|
+
filter: 'and' | 'or';
|
|
153
|
+
}) => Promise<Array<{
|
|
154
|
+
slug: string;
|
|
155
|
+
}>>;
|
|
156
|
+
sidebarTab?: SidebarTabSlot;
|
|
157
|
+
editorExtensions?: EditorExtensionRegistration[];
|
|
158
|
+
/** Phase 3 — page routes this module owns (factory bound to the host root). */
|
|
159
|
+
routes?: RouteTreeFragment;
|
|
160
|
+
}
|
|
161
|
+
export interface EditorBridge {
|
|
162
|
+
openEntity: (type: string, slug: string) => void;
|
|
163
|
+
openSection: (pagePath: string, anchor: string) => void;
|
|
164
|
+
}
|
|
165
|
+
export declare const clientPluginHost: {
|
|
166
|
+
registerFrontendModule(module: FrontendModule): void;
|
|
167
|
+
[key: string]: unknown;
|
|
168
|
+
};
|
|
169
|
+
export declare function registerFrontendModule(module: FrontendModule): void;
|
|
170
|
+
export declare const queryClient: unknown;
|
|
171
|
+
export declare const editorBridge: EditorBridge;
|
|
172
|
+
export declare function registerExtensionReferenceType(...args: unknown[]): void;
|