@inharness-ai/claude4spec 1.0.21 → 1.0.23
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 +120 -53
- package/CHANGELOG.md +20 -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-Coa9fbDO.js → arc-C9oTB3b1.js} +1 -1
- package/dist/client/assets/{architectureDiagram-3BPJPVTR-VJZcRMEN.js → architectureDiagram-3BPJPVTR-Bno5ViqK.js} +1 -1
- package/dist/client/assets/{blockDiagram-GPEHLZMM-C7dU2lW1.js → blockDiagram-GPEHLZMM-CJYBoeWQ.js} +1 -1
- package/dist/client/assets/{c4Diagram-AAUBKEIU-CG_BBm_5.js → c4Diagram-AAUBKEIU-DaaqWE6s.js} +1 -1
- package/dist/client/assets/channel-Cei_E79M.js +1 -0
- package/dist/client/assets/{chunk-2J33WTMH-BnS95YpK.js → chunk-2J33WTMH-P_I0OPMy.js} +1 -1
- package/dist/client/assets/{chunk-4BX2VUAB-COr8w3X3.js → chunk-4BX2VUAB-CCySMlh5.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-CxrIbZhB.js → chunk-55IACEB6-CEUyqKGF.js} +1 -1
- package/dist/client/assets/{chunk-727SXJPM-DRchPPRe.js → chunk-727SXJPM-CoTSYOVz.js} +1 -1
- package/dist/client/assets/{chunk-AQP2D5EJ-_SfN7mED.js → chunk-AQP2D5EJ-DB0nMxPr.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-p2tIiP1D.js → chunk-FMBD7UC4-PG3m6-_a.js} +1 -1
- package/dist/client/assets/{chunk-ND2GUHAM-B1mbl2hP.js → chunk-ND2GUHAM-CBNk6IaV.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-DBUpeqvS.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-BBsY5aKD.js → cose-bilkent-S5V4N54A-BDwDDxHN.js} +1 -1
- package/dist/client/assets/{dagre-BM42HDAG-b-vu4RC9.js → dagre-BM42HDAG-DR-1e8N5.js} +1 -1
- package/dist/client/assets/{diagram-2AECGRRQ-j-DW9qSf.js → diagram-2AECGRRQ-C-tHgBWt.js} +1 -1
- package/dist/client/assets/{diagram-5GNKFQAL-DHX_WYWQ.js → diagram-5GNKFQAL-uLmoKaJL.js} +1 -1
- package/dist/client/assets/{diagram-KO2AKTUF-DxdQok_M.js → diagram-KO2AKTUF-8Fd-xuOy.js} +1 -1
- package/dist/client/assets/{diagram-LMA3HP47-BbTIX5c1.js → diagram-LMA3HP47-C1gniWsn.js} +1 -1
- package/dist/client/assets/{diagram-OG6HWLK6-BQ9ODAlH.js → diagram-OG6HWLK6-BMWjZbeC.js} +1 -1
- package/dist/client/assets/{erDiagram-TEJ5UH35-6lwAL1y9.js → erDiagram-TEJ5UH35-CIUO8hrR.js} +1 -1
- package/dist/client/assets/{flowDiagram-I6XJVG4X-ioSHb5-t.js → flowDiagram-I6XJVG4X-Ccw5YEf3.js} +1 -1
- package/dist/client/assets/{ganttDiagram-6RSMTGT7-CXFQp9Nj.js → ganttDiagram-6RSMTGT7-BAvlf8cY.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-PVQCEYII-C1pVD_NQ.js → gitGraphDiagram-PVQCEYII-ChCkdYar.js} +1 -1
- package/dist/client/assets/{index-JaAxQJXh.js → index-BotCWOKC.js} +1 -1
- package/dist/client/assets/index-CtdzGyqj.js +805 -0
- package/dist/client/assets/{index-hz5T_W2e.js → index-DtpKHGD1.js} +1 -1
- package/dist/client/assets/{infoDiagram-5YYISTIA-C2Guev-g.js → infoDiagram-5YYISTIA-CZMGwNyB.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-D3v8VBb2.js → ishikawaDiagram-YF4QCWOH-CubjZGk6.js} +1 -1
- package/dist/client/assets/{journeyDiagram-JHISSGLW-DX1AW_Ap.js → journeyDiagram-JHISSGLW-DzwOyVzB.js} +1 -1
- package/dist/client/assets/{kanban-definition-UN3LZRKU-CzXThvq2.js → kanban-definition-UN3LZRKU-CXznoTY9.js} +1 -1
- package/dist/client/assets/{linear-CVw4gl5i.js → linear-EDwTFRrU.js} +1 -1
- package/dist/client/assets/{mermaid.core-C29eoXRj.js → mermaid.core-Lae2097R.js} +4 -4
- package/dist/client/assets/{mindmap-definition-RKZ34NQL-DEEGVQVA.js → mindmap-definition-RKZ34NQL-DFjIW41g.js} +1 -1
- package/dist/client/assets/{pieDiagram-4H26LBE5-Dme-VM6m.js → pieDiagram-4H26LBE5-CZDLR1jd.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-W4KKPZXB-CURFNo24.js → quadrantDiagram-W4KKPZXB-CTGDzbqp.js} +1 -1
- package/dist/client/assets/{requirementDiagram-4Y6WPE33-DxMZWXME.js → requirementDiagram-4Y6WPE33-CeH0NbMv.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-5OEKKPKP-BW64D4_P.js → sankeyDiagram-5OEKKPKP-B6ZTjurV.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-3UESZ5HK-BATRPm8Q.js → sequenceDiagram-3UESZ5HK-DcTRztVx.js} +1 -1
- package/dist/client/assets/{stateDiagram-AJRCARHV-pgHVMnO3.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-qBxJZPWd.js → timeline-definition-PNZ67QCA-CXm5n4rV.js} +1 -1
- package/dist/client/assets/{vennDiagram-CIIHVFJN-BZJK9hqJ.js → vennDiagram-CIIHVFJN-EmNJBYNd.js} +1 -1
- package/dist/client/assets/{wardley-L42UT6IY-BobtgEXg.js → wardley-L42UT6IY-MLrlp8H-.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-YWT4CUSO-DuWfX_-P.js → wardleyDiagram-YWT4CUSO-5QoES25n.js} +1 -1
- package/dist/client/assets/{xychartDiagram-2RQKCTM6-DCw1iURo.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/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 +60 -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/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 +82 -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/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 +8 -1
- package/dist/server/routes/agent-turn.js +67 -39
- package/dist/server/routes/agent-turn.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/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 +21 -3
- 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/chat-context.d.ts +34 -0
- package/dist/server/services/chat-context.js +58 -15
- package/dist/server/services/chat-context.js.map +1 -1
- package/dist/server/services/chat.d.ts +6 -0
- package/dist/server/services/chat.js +18 -2
- package/dist/server/services/chat.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/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/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 +106 -4
- 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 +4 -1
- 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-D5gzBvo7.js +0 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-CT-amIxa.js +0 -1
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-CT-amIxa.js +0 -1
- package/dist/client/assets/index-DyAnw7YN.js +0 -798
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-szm_LIuD.js +0 -1
package/dist/server/index.js
CHANGED
|
@@ -14,6 +14,12 @@ import { projectDispatchMiddleware } from './workspace/middleware.js';
|
|
|
14
14
|
import { workspaceRouter } from './workspace/routes.js';
|
|
15
15
|
import { PluginRegistryImpl } from './core/plugin-host/registry.js';
|
|
16
16
|
import { registerAllPlugins } from './serialization/registerAll.js';
|
|
17
|
+
import { loadWorkspacePlugins, reloadPlugin } from './core/plugin-host/loader.js';
|
|
18
|
+
import { PluginWatcher } from './core/plugin-host/plugin-watcher.js';
|
|
19
|
+
import { createRequire } from 'node:module';
|
|
20
|
+
import { resolvePluginPackages } from './workspace/registry.js';
|
|
21
|
+
import { pluginsRouter } from './routes/plugins.js';
|
|
22
|
+
import { buildImportMap } from './core/plugin-host/runtime-shims.js';
|
|
17
23
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
18
24
|
const DEFAULT_PORT = 3000;
|
|
19
25
|
// M01: deterministyczny port. Przy zajetym porcie serwer NIE wskakuje juz na
|
|
@@ -54,6 +60,15 @@ function injectProjectGlobal(html, cwd, name) {
|
|
|
54
60
|
const payload = JSON.stringify({ id, name }).replace(/</g, '\\u003c');
|
|
55
61
|
return html.replace('<head>', `<head><script>window.__C4S_PROJECT__=${payload};</script>`);
|
|
56
62
|
}
|
|
63
|
+
// M33 "Option B": inject the plugin import map into <head> statically (before any
|
|
64
|
+
// module script resolves), so a runtime plugin's bare imports (`react`, …) resolve
|
|
65
|
+
// to the host's singleton shims. Applied to every SPA page (welcome + project).
|
|
66
|
+
const IMPORT_MAP_SCRIPT = `<script type="importmap">${JSON.stringify({
|
|
67
|
+
imports: buildImportMap(),
|
|
68
|
+
}).replace(/</g, '\\u003c')}</script>`;
|
|
69
|
+
function injectImportMap(html) {
|
|
70
|
+
return html.replace('<head>', `<head>${IMPORT_MAP_SCRIPT}`);
|
|
71
|
+
}
|
|
57
72
|
const PROJECT_ROUTE_RE = /^\/p\/([0-9a-f]{12})(\/|$)/;
|
|
58
73
|
/**
|
|
59
74
|
* M31 route scheme `/p/<project-id>/…` (assets stay at root — no Vite
|
|
@@ -102,6 +117,7 @@ async function mountDevVite(app, deps) {
|
|
|
102
117
|
const htmlPath = path.join(repoRoot, 'src/client/index.html');
|
|
103
118
|
let html = await fs.promises.readFile(htmlPath, 'utf-8');
|
|
104
119
|
html = await vite.transformIndexHtml(req.originalUrl, html);
|
|
120
|
+
html = injectImportMap(html);
|
|
105
121
|
// `/welcome` runs the SPA project-less: no `window.__C4S_PROJECT__`, so the
|
|
106
122
|
// client computes PROJECT_ID='' → API_BASE='/api' → router basepath '/'.
|
|
107
123
|
if (resolution.kind === 'welcome') {
|
|
@@ -132,7 +148,7 @@ function mountProd(app, deps) {
|
|
|
132
148
|
const resolution = resolveSpaRoute(deps.registry, deps.workspace, urlPath);
|
|
133
149
|
if (resolution.kind === 'redirect')
|
|
134
150
|
return res.redirect(302, resolution.to);
|
|
135
|
-
const raw = fs.readFileSync(path.join(clientDist, 'index.html'), 'utf-8');
|
|
151
|
+
const raw = injectImportMap(fs.readFileSync(path.join(clientDist, 'index.html'), 'utf-8'));
|
|
136
152
|
// `/welcome` runs the SPA project-less (no `window.__C4S_PROJECT__`).
|
|
137
153
|
if (resolution.kind === 'welcome') {
|
|
138
154
|
return res.status(200).set({ 'Content-Type': 'text/html' }).end(raw);
|
|
@@ -194,6 +210,10 @@ export async function startServer(opts) {
|
|
|
194
210
|
// M31: process-immutable plugin catalog, populated exactly once.
|
|
195
211
|
const pluginRegistry = new PluginRegistryImpl();
|
|
196
212
|
registerAllPlugins(pluginRegistry);
|
|
213
|
+
// M33: load workspace-declared npm plugin packages onto the same catalog,
|
|
214
|
+
// before any ProjectContext consolidates against it. Per-package failures are
|
|
215
|
+
// isolated (skipped/failed records) — one bad plugin never crashes bootstrap.
|
|
216
|
+
const pluginLoad = await loadWorkspacePlugins(pluginRegistry, resolvePluginPackages(workspace));
|
|
197
217
|
const httpServer = createHttpServer(app);
|
|
198
218
|
const gateway = new WsGateway(httpServer);
|
|
199
219
|
// M27 clone runs only on the FIRST build of the CLI-started project —
|
|
@@ -217,6 +237,7 @@ export async function startServer(opts) {
|
|
|
217
237
|
return buildProjectContext({
|
|
218
238
|
registry,
|
|
219
239
|
pluginRegistry,
|
|
240
|
+
pluginRecords: pluginLoad.records,
|
|
220
241
|
workspace,
|
|
221
242
|
cwd: project.cwd,
|
|
222
243
|
gateway,
|
|
@@ -228,12 +249,71 @@ export async function startServer(opts) {
|
|
|
228
249
|
onContextConfigChanged: () => cache.invalidate(project.id),
|
|
229
250
|
});
|
|
230
251
|
});
|
|
252
|
+
// M33 phase 3: process-global base (workspace/npm) plugin hot-reload watcher.
|
|
253
|
+
// The base catalog is shared across projects, so a reload mutates the shared
|
|
254
|
+
// `pluginRegistry` (unregister old → register new) and invalidates ALL cached
|
|
255
|
+
// contexts; each live project room is told to remount. Resolves each package
|
|
256
|
+
// to its install dir; an unresolvable package is simply not watched.
|
|
257
|
+
const baseDirByPkg = new Map();
|
|
258
|
+
for (const pkg of resolvePluginPackages(workspace)) {
|
|
259
|
+
try {
|
|
260
|
+
baseDirByPkg.set(pkg, path.dirname(createRequire(import.meta.url).resolve(pkg)));
|
|
261
|
+
}
|
|
262
|
+
catch {
|
|
263
|
+
/* unresolvable (not installed) — nothing to watch */
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
// Serialize reload runs so overlapping watcher flushes never interleave
|
|
267
|
+
// unregister/register on the shared registry.
|
|
268
|
+
let baseReloadChain = Promise.resolve();
|
|
269
|
+
const basePluginWatcher = new PluginWatcher([...baseDirByPkg.values()], (changedPaths) => {
|
|
270
|
+
const affected = [...baseDirByPkg.entries()]
|
|
271
|
+
.filter(([, dir]) => changedPaths.some((p) => p === dir || p.startsWith(dir + path.sep)))
|
|
272
|
+
.map(([pkg]) => pkg);
|
|
273
|
+
if (affected.length === 0)
|
|
274
|
+
return;
|
|
275
|
+
baseReloadChain = baseReloadChain
|
|
276
|
+
.then(async () => {
|
|
277
|
+
const reloaded = [];
|
|
278
|
+
for (const pkg of affected) {
|
|
279
|
+
const rec = await reloadPlugin(pluginRegistry, pkg);
|
|
280
|
+
reloaded.push({ name: rec.manifestName ?? pkg, version: rec.manifestVersion ?? '' });
|
|
281
|
+
}
|
|
282
|
+
// Snapshot the rooms BEFORE invalidating: invalidateAll() empties the
|
|
283
|
+
// cache, after which liveProjectIds() would return [] and no client
|
|
284
|
+
// would ever be told to remount. Then invalidate once (not per-package).
|
|
285
|
+
const rooms = cache.liveProjectIds();
|
|
286
|
+
cache.invalidateAll();
|
|
287
|
+
for (const id of rooms) {
|
|
288
|
+
for (const r of reloaded) {
|
|
289
|
+
gateway.broadcast(id, { kind: 'plugin:reloaded', name: r.name, version: r.version, tier: 'base' });
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
})
|
|
293
|
+
.catch((err) => console.warn('[plugin-loader] base reload failed:', err));
|
|
294
|
+
});
|
|
295
|
+
basePluginWatcher.start();
|
|
231
296
|
// Per-project activation — POST /api/workspace/projects runs the SAME full
|
|
232
297
|
// bootstrap as a CLI start (M01/M12/M22 hooks + registration + db migration).
|
|
233
298
|
const activateProject = async (projectCwd) => {
|
|
234
299
|
return bootstrapProject(registry, workspace, projectCwd).project;
|
|
235
300
|
};
|
|
236
301
|
app.use('/api', workspaceRouter({ registry, workspace, cache, mode, activateProject }));
|
|
302
|
+
// M33: process-level plugin endpoints (frontend manifest, runtime shims,
|
|
303
|
+
// loader diagnostics) — before the project dispatch so they stay prefix-free.
|
|
304
|
+
// Phase 2: project-local frontend serving binds to the process's primary
|
|
305
|
+
// project (the `--cwd`); `isTrusted` is read live so a trust flip applies
|
|
306
|
+
// without a restart. Workspace-only starts register nothing ⇒ serving disabled.
|
|
307
|
+
app.use('/api', pluginsRouter({
|
|
308
|
+
pluginRegistry,
|
|
309
|
+
pluginRecords: pluginLoad.records,
|
|
310
|
+
frontendServing: initialProject
|
|
311
|
+
? { cwd, isTrusted: () => registry.getProjectTrust(workspace, initialProject.id) === true }
|
|
312
|
+
: undefined,
|
|
313
|
+
// M33 phase 3: workspace/npm plugin frontends are served ungated for every
|
|
314
|
+
// project — the same resolved package list `loadWorkspacePlugins` consumed.
|
|
315
|
+
workspacePackages: resolvePluginPackages(workspace),
|
|
316
|
+
}));
|
|
237
317
|
app.use('/api/projects/:id', projectDispatchMiddleware(registry, workspace, cache));
|
|
238
318
|
// Eager warm of the CLI-started project: clone executes before listen and a
|
|
239
319
|
// broken initial config still fails the boot fast (parity with pre-M31). A
|
|
@@ -251,6 +331,7 @@ export async function startServer(opts) {
|
|
|
251
331
|
port,
|
|
252
332
|
writingStyle: initialCtx?.writingStyle ?? null,
|
|
253
333
|
shutdown: async () => {
|
|
334
|
+
await basePluginWatcher.close();
|
|
254
335
|
await cache.disposeAll();
|
|
255
336
|
await gateway.close();
|
|
256
337
|
await closeAssets();
|
package/dist/server/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAyB,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAA6B,MAAM,WAAW,CAAC;AACxF,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAErE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AA0C/D,MAAM,YAAY,GAAG,IAAI,CAAC;AAE1B,6EAA6E;AAC7E,6EAA6E;AAC7E,qEAAqE;AACrE,KAAK,UAAU,YAAY,CAAC,MAAkB,EAAE,IAAY;IAC1D,IAAI,CAAC;QACH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,OAAO,GAAG,CAAC,GAA0B,EAAE,EAAE;gBAC7C,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;gBACrC,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC,CAAC;YACF,MAAM,WAAW,GAAG,GAAG,EAAE;gBACvB,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC7B,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACzD,OAAO,CAAC,KAAK,CACX,QAAQ,IAAI,iFAAiF,CAC9F,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,mFAAmF;AACnF,kFAAkF;AAClF,uFAAuF;AACvF,sFAAsF;AACtF,8EAA8E;AAC9E,SAAS,mBAAmB,CAAC,IAAY,EAAE,GAAW,EAAE,IAAY;IAClE,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACrE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACtE,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,wCAAwC,OAAO,YAAY,CAAC,CAAC;AAC7F,CAAC;AAED,kFAAkF;AAClF,mFAAmF;AACnF,gFAAgF;AAChF,MAAM,iBAAiB,GAAG,4BAA4B,IAAI,CAAC,SAAS,CAAC;IACnE,OAAO,EAAE,cAAc,EAAE;CAC1B,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC;AACvC,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;AAOtD;;;;;;GAMG;AACH,SAAS,eAAe,CACtB,QAA2B,EAC3B,SAA0B,EAC1B,OAAe;IAEf,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC1C,IAAI,CAAC,EAAE,CAAC;QACN,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;QACtD,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;IAChF,CAAC;IACD,IAAI,OAAO,KAAK,UAAU;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACvD,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC;QACjE,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;QAC7E,MAAM,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAClD,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,OAAO,CAAC,CACrE,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC,CAAC,CAAE,CAAC,EAAE,GAAG,EAAE,CAAC;IAC7D,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;AACvC,CAAC;AASD,KAAK,UAAU,YAAY,CAAC,GAAY,EAAE,IAAa;IACrD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC;QAC9B,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;QACjD,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;QACvC,MAAM,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE;QAChC,OAAO,EAAE,QAAQ;KAClB,CAAC,CAAC;IACH,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1B,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACpC,IAAI,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,EAAE,CAAC;QAC3F,IAAI,CAAC;YACH,sEAAsE;YACtE,8BAA8B;YAC9B,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;YACxD,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC3E,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU;gBAAE,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;YAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;YAC9D,IAAI,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACzD,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAC5D,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;YAC7B,4EAA4E;YAC5E,yEAAyE;YACzE,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAClC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACxE,CAAC;YACD,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YAC/D,IAAI,GAAG,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,gBAAgB,CAAC,GAAY,CAAC,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,SAAS,CAAC,GAAY,EAAE,IAAa;IAC5C,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACtD,yGAAyG;IACzG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACtD,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC9B,IAAI,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,EAAE,CAAC;QAC3F,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;YACxD,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC3E,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU;gBAAE,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;YAC5E,MAAM,GAAG,GAAG,eAAe,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;YAC3F,sEAAsE;YACtE,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAClC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACvE,CAAC;YACD,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YAC/D,GAAG;iBACA,MAAM,CAAC,GAAG,CAAC;iBACX,GAAG,CAAC,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC;iBACpC,GAAG,CAAC,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,YAAY,CAAC,SAAiB;IACrC,IAAI,GAAG,GAAG,SAAS,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YAAE,OAAO,GAAG,CAAC;QAC9D,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAkB;IAClD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACrB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACnF,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,IAAI,YAAY,EAAE,CAAC;IAEvD,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAExC,gFAAgF;IAChF,6EAA6E;IAC7E,4EAA4E;IAC5E,8EAA8E;IAC9E,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;QACnC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACzB,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC;gBAAE,OAAO,IAAI,EAAE,CAAC;YACvD,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YACpC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;gBACpB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;gBACrD,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,UAAU,IAAI,EAAE,IAAI,CAAC,CAAC;YACrF,CAAC,CAAC,CAAC;YACH,IAAI,EAAE,CAAC;QACT,CAAC,CAAC,CAAC;IACL,CAAC;IAED,iFAAiF;IACjF,MAAM,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAC;IACzC,MAAM,SAAS,GACb,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAClF,6EAA6E;IAC7E,8EAA8E;IAC9E,0EAA0E;IAC1E,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC;IACjD,MAAM,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvF,IAAI,aAAa;QAAE,uBAAuB,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;IAErE,iEAAiE;IACjE,MAAM,cAAc,GAAG,IAAI,kBAAkB,EAAE,CAAC;IAChD,kBAAkB,CAAC,cAAc,CAAC,CAAC;IACnC,0EAA0E;IAC1E,8EAA8E;IAC9E,8EAA8E;IAC9E,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,cAAc,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhG,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC;IAE1C,sEAAsE;IACtE,0DAA0D;IAC1D,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK;QAC3B,CAAC,CAAC;YACE,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,YAAY,EAAE,IAAI,CAAC,IAAI;YACvB,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,KAAK;YAC1C,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAAI,KAAK;YAChD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAAI,KAAK;SACjD;QACH,CAAC,CAAC,SAAS,CAAC;IAEd,yEAAyE;IACzE,4EAA4E;IAC5E,MAAM,KAAK,GAAwB,IAAI,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QAC3E,MAAM,SAAS,GAAG,cAAc,IAAI,IAAI,IAAI,OAAO,CAAC,EAAE,KAAK,cAAc,CAAC,EAAE,CAAC;QAC7E,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;QACnD,IAAI,KAAK;YAAE,YAAY,GAAG,SAAS,CAAC;QACpC,OAAO,mBAAmB,CAAC;YACzB,QAAQ;YACR,cAAc;YACd,aAAa,EAAE,UAAU,CAAC,OAAO;YACjC,SAAS;YACT,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,OAAO;YACP,IAAI;YACJ,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;YACvD,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YACvD,KAAK;YACL,cAAc,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE;YACtC,sBAAsB,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;SAC3D,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,8EAA8E;IAC9E,6EAA6E;IAC7E,8EAA8E;IAC9E,6EAA6E;IAC7E,qEAAqE;IACrE,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC/C,KAAK,MAAM,GAAG,IAAI,qBAAqB,CAAC,SAAS,CAAC,EAAE,CAAC;QACnD,IAAI,CAAC;YACH,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACnF,CAAC;QAAC,MAAM,CAAC;YACP,qDAAqD;QACvD,CAAC;IACH,CAAC;IACD,wEAAwE;IACxE,8CAA8C;IAC9C,IAAI,eAAe,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IACvD,MAAM,iBAAiB,GAAG,IAAI,aAAa,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,EAAE;QACvF,MAAM,QAAQ,GAAG,CAAC,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC;aACzC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;aACxF,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAClC,eAAe,GAAG,eAAe;aAC9B,IAAI,CAAC,KAAK,IAAI,EAAE;YACf,MAAM,QAAQ,GAAG,EAAE,CAAC;YACpB,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC3B,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;gBACpD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,YAAY,IAAI,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,eAAe,IAAI,EAAE,EAAE,CAAC,CAAC;YACvF,CAAC;YACD,sEAAsE;YACtE,oEAAoE;YACpE,yEAAyE;YACzE,MAAM,KAAK,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;YACrC,KAAK,CAAC,aAAa,EAAE,CAAC;YACtB,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;gBACvB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;oBACzB,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;gBACrG,CAAC;YACH,CAAC;QACH,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,qCAAqC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IACH,iBAAiB,CAAC,KAAK,EAAE,CAAC;IAE1B,2EAA2E;IAC3E,8EAA8E;IAC9E,MAAM,eAAe,GAAG,KAAK,EAAE,UAAkB,EAAE,EAAE;QACnD,OAAO,gBAAgB,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC;IACnE,CAAC,CAAC;IAEF,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;IACxF,yEAAyE;IACzE,8EAA8E;IAC9E,yEAAyE;IACzE,0EAA0E;IAC1E,gFAAgF;IAChF,GAAG,CAAC,GAAG,CACL,MAAM,EACN,aAAa,CAAC;QACZ,cAAc;QACd,aAAa,EAAE,UAAU,CAAC,OAAO;QACjC,eAAe,EAAE,cAAc;YAC7B,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE;YAC3F,CAAC,CAAC,SAAS;QACb,2EAA2E;QAC3E,4EAA4E;QAC5E,iBAAiB,EAAE,qBAAqB,CAAC,SAAS,CAAC;KACpD,CAAC,CACH,CAAC;IACF,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,yBAAyB,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAEpF,4EAA4E;IAC5E,2EAA2E;IAC3E,uDAAuD;IACvD,MAAM,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE3E,MAAM,OAAO,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IACvD,MAAM,WAAW,GAAG,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAEhG,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IACvB,IAAI,cAAc;QAAE,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;IAChF,MAAM,GAAG,GAAG,oBAAoB,IAAI,EAAE,CAAC;IAEvC,OAAO;QACL,GAAG;QACH,IAAI;QACJ,YAAY,EAAE,UAAU,EAAE,YAAY,IAAI,IAAI;QAC9C,QAAQ,EAAE,KAAK,IAAI,EAAE;YACnB,MAAM,iBAAiB,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC;YACzB,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YACtB,MAAM,WAAW,EAAE,CAAC;YACpB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC1E,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type McpServerInstance } from '@inharness-ai/agent-adapters';
|
|
2
2
|
/**
|
|
3
|
-
* `c4s-tools` — cross-cutting in-process MCP server expozujacy
|
|
3
|
+
* `c4s-tools` — cross-cutting in-process MCP server expozujacy peer-consult
|
|
4
4
|
* jako narzedzie MCP. Jeden tool `ask`, mountowany per request (jak `plan-tools`).
|
|
5
5
|
*
|
|
6
6
|
* Motywacja: w `plan_mode=true` agent ma `disallowedTools = MUTATING_BUILTINS`
|
|
@@ -11,5 +11,10 @@ import { type McpServerInstance } from '@inharness-ai/agent-adapters';
|
|
|
11
11
|
* Stateless — w odroznieniu od `plan-tools` (gdzie `threadId` jest ambient
|
|
12
12
|
* z closure), `c4s-tools.ask` celuje w **innego** peera, wszystkie parametry
|
|
13
13
|
* przychodza jako input. Brak `ctx` w fabryce.
|
|
14
|
+
*
|
|
15
|
+
* 0.1.79: tool zablokowany do READ-ONLY. `contextType='ask'` jest zahardkodowany
|
|
16
|
+
* wewnatrz (caller nie moze wybrac mutujacego kontekstu), a `output: 'final'`
|
|
17
|
+
* zwraca terse `{ threadId, answer }`. Parametry `contextType` i `brief` usuniete
|
|
18
|
+
* z wejscia.
|
|
14
19
|
*/
|
|
15
20
|
export declare function buildC4sToolsServer(): McpServerInstance;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createMcpServer, mcpTool } from '@inharness-ai/agent-adapters';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import {
|
|
3
|
+
import { runAgent, AgentError } from '../../core/agent/run-agent.js';
|
|
4
4
|
/**
|
|
5
|
-
* `c4s-tools` — cross-cutting in-process MCP server expozujacy
|
|
5
|
+
* `c4s-tools` — cross-cutting in-process MCP server expozujacy peer-consult
|
|
6
6
|
* jako narzedzie MCP. Jeden tool `ask`, mountowany per request (jak `plan-tools`).
|
|
7
7
|
*
|
|
8
8
|
* Motywacja: w `plan_mode=true` agent ma `disallowedTools = MUTATING_BUILTINS`
|
|
@@ -13,43 +13,48 @@ import { runAsk, AskError } from '../../core/ask/run-ask.js';
|
|
|
13
13
|
* Stateless — w odroznieniu od `plan-tools` (gdzie `threadId` jest ambient
|
|
14
14
|
* z closure), `c4s-tools.ask` celuje w **innego** peera, wszystkie parametry
|
|
15
15
|
* przychodza jako input. Brak `ctx` w fabryce.
|
|
16
|
+
*
|
|
17
|
+
* 0.1.79: tool zablokowany do READ-ONLY. `contextType='ask'` jest zahardkodowany
|
|
18
|
+
* wewnatrz (caller nie moze wybrac mutujacego kontekstu), a `output: 'final'`
|
|
19
|
+
* zwraca terse `{ threadId, answer }`. Parametry `contextType` i `brief` usuniete
|
|
20
|
+
* z wejscia.
|
|
16
21
|
*/
|
|
17
22
|
export function buildC4sToolsServer() {
|
|
18
23
|
const ask = mcpTool('ask', [
|
|
19
24
|
'Consult another claude4spec specification synchronously. Returns { threadId, answer }.',
|
|
25
|
+
'The peer is READ-ONLY: it does not mutate its spec (Write/Edit/Bash banned; entity/page edits soft-blocked at prompt level).',
|
|
20
26
|
'Use `project` (local path to peer .claude4spec/) OR `server` (URL override); if both, `server` wins.',
|
|
21
|
-
'Continue an existing peer thread by passing its `threadId
|
|
27
|
+
'Continue an existing peer thread by passing its `threadId`.',
|
|
22
28
|
'Works in plan_mode — MCP is not filtered by READONLY_BUILTINS, so this works where Bash-shelled `c4s ask` does not.',
|
|
23
|
-
'Same contract as the `c4s` CLI: same discovery, same errors.',
|
|
29
|
+
'Same contract as the `c4s ask` CLI shorthand: same discovery, same errors.',
|
|
24
30
|
].join('\n'), {
|
|
25
31
|
message: z.string(),
|
|
26
32
|
project: z.string().optional(),
|
|
27
33
|
workspace: z.string().optional(),
|
|
28
34
|
server: z.string().optional(),
|
|
29
|
-
contextType: z.enum(['chat', 'brief', 'patch']).optional(),
|
|
30
35
|
threadId: z.string().optional(),
|
|
31
|
-
|
|
36
|
+
model: z.string().optional(),
|
|
32
37
|
}, async (input) => {
|
|
33
38
|
try {
|
|
34
|
-
const result = await
|
|
39
|
+
const result = await runAgent({
|
|
35
40
|
message: String(input.message ?? ''),
|
|
36
41
|
project: typeof input.project === 'string' ? input.project : undefined,
|
|
37
42
|
workspace: typeof input.workspace === 'string' ? input.workspace : undefined,
|
|
38
43
|
server: typeof input.server === 'string' ? input.server : undefined,
|
|
39
|
-
contextType: typeof input.contextType === 'string'
|
|
40
|
-
? input.contextType
|
|
41
|
-
: undefined,
|
|
42
44
|
threadId: typeof input.threadId === 'string' ? input.threadId : undefined,
|
|
43
|
-
|
|
45
|
+
model: typeof input.model === 'string' ? input.model : undefined,
|
|
46
|
+
// Locked: a consulted peer always runs read-only, terse output.
|
|
47
|
+
contextType: 'ask',
|
|
48
|
+
output: 'final',
|
|
44
49
|
});
|
|
45
50
|
return {
|
|
46
51
|
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
47
52
|
};
|
|
48
53
|
}
|
|
49
54
|
catch (err) {
|
|
50
|
-
const code = err instanceof
|
|
55
|
+
const code = err instanceof AgentError ? err.code : 'AGENT_ERROR';
|
|
51
56
|
const message = err instanceof Error ? err.message : String(err);
|
|
52
|
-
const hint = err instanceof
|
|
57
|
+
const hint = err instanceof AgentError ? err.hint : undefined;
|
|
53
58
|
return {
|
|
54
59
|
content: [
|
|
55
60
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c4s-tools.js","sourceRoot":"","sources":["../../../src/server/mcp/c4s-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,OAAO,EAA0B,MAAM,8BAA8B,CAAC;AAChG,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"c4s-tools.js","sourceRoot":"","sources":["../../../src/server/mcp/c4s-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@c4s/plugin-runtime` — backend half.
|
|
3
|
+
*
|
|
4
|
+
* The single, versioned surface a runtime plugin's server code (its
|
|
5
|
+
* `backend.mount(ctx)`) compiles against, instead of reaching into deep host
|
|
6
|
+
* paths. On the backend the host singletons are shared in-process; this module
|
|
7
|
+
* re-exports the stable contract pieces.
|
|
8
|
+
*
|
|
9
|
+
* Phase 1 has no plugin packages, so nothing imports this yet — it exists so the
|
|
10
|
+
* contract surface is in place and stable for phase 2 (when project-local
|
|
11
|
+
* plugins under `.claude4spec/plugins/` link against it). The frontend half of
|
|
12
|
+
* `@c4s/plugin-runtime` lives in `src/client/runtime/plugin-runtime.ts` and is
|
|
13
|
+
* delivered to plugins through the import-map shim.
|
|
14
|
+
*/
|
|
15
|
+
export { HOST_API_VERSION } from '../../shared/plugin-host/manifest.js';
|
|
16
|
+
export type { PluginManifest, EntityContribution, PluginEngines, } from '../../shared/plugin-host/manifest.js';
|
|
17
|
+
export type { PluginRegistry, ProjectPluginHost, BackendModule, MountContext, PluginMountFn, } from '../core/plugin-host/types.js';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@c4s/plugin-runtime` — backend half.
|
|
3
|
+
*
|
|
4
|
+
* The single, versioned surface a runtime plugin's server code (its
|
|
5
|
+
* `backend.mount(ctx)`) compiles against, instead of reaching into deep host
|
|
6
|
+
* paths. On the backend the host singletons are shared in-process; this module
|
|
7
|
+
* re-exports the stable contract pieces.
|
|
8
|
+
*
|
|
9
|
+
* Phase 1 has no plugin packages, so nothing imports this yet — it exists so the
|
|
10
|
+
* contract surface is in place and stable for phase 2 (when project-local
|
|
11
|
+
* plugins under `.claude4spec/plugins/` link against it). The frontend half of
|
|
12
|
+
* `@c4s/plugin-runtime` lives in `src/client/runtime/plugin-runtime.ts` and is
|
|
13
|
+
* delivered to plugins through the import-map shim.
|
|
14
|
+
*/
|
|
15
|
+
export { HOST_API_VERSION } from '../../shared/plugin-host/manifest.js';
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/plugin-runtime/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@c4s/plugin-runtime/ui` — backend half.
|
|
3
|
+
*
|
|
4
|
+
* The Host UI Kit is a FRONTEND surface (React components delivered via the M33
|
|
5
|
+
* import-map shim — see `client/runtime/plugin-runtime-ui.ts`). On the backend
|
|
6
|
+
* there are no components to share; this module exists only so server-side
|
|
7
|
+
* plugin code can reference the versioned contract — the React-free set of
|
|
8
|
+
* `stable` component names and the `Stability` type — without reaching into the
|
|
9
|
+
* client catalog (which imports React).
|
|
10
|
+
*
|
|
11
|
+
* Phase 1 ships no plugin packages, so nothing imports this yet; it keeps the
|
|
12
|
+
* contract surface stable for phase 2.
|
|
13
|
+
*/
|
|
14
|
+
export { UI_KIT_STABLE_COMPONENTS } from '../../shared/plugin-host/ui-kit-surface.js';
|
|
15
|
+
export type { Stability, StableUiKitComponent } from '../../shared/plugin-host/ui-kit-surface.js';
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@c4s/plugin-runtime/ui` — backend half.
|
|
3
|
+
*
|
|
4
|
+
* The Host UI Kit is a FRONTEND surface (React components delivered via the M33
|
|
5
|
+
* import-map shim — see `client/runtime/plugin-runtime-ui.ts`). On the backend
|
|
6
|
+
* there are no components to share; this module exists only so server-side
|
|
7
|
+
* plugin code can reference the versioned contract — the React-free set of
|
|
8
|
+
* `stable` component names and the `Stability` type — without reaching into the
|
|
9
|
+
* client catalog (which imports React).
|
|
10
|
+
*
|
|
11
|
+
* Phase 1 ships no plugin packages, so nothing imports this yet; it keeps the
|
|
12
|
+
* contract surface stable for phase 2.
|
|
13
|
+
*/
|
|
14
|
+
export { UI_KIT_STABLE_COMPONENTS } from '../../shared/plugin-host/ui-kit-surface.js';
|
|
15
|
+
//# sourceMappingURL=ui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../src/server/plugin-runtime/ui.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC"}
|
|
@@ -12,7 +12,7 @@ import type { PatchService } from '../services/patch.js';
|
|
|
12
12
|
import type { ReleaseService } from '../services/release.js';
|
|
13
13
|
import type { PageVersionService } from '../services/page-version.js';
|
|
14
14
|
import type { SkillResolver, SkillRegistry } from '../services/skill-registry.js';
|
|
15
|
-
import type { Annotation, ChatThread } from '../../shared/entities.js';
|
|
15
|
+
import type { Annotation, ChatMessage, ChatThread } from '../../shared/entities.js';
|
|
16
16
|
import type { WsEmitter } from '../ws/project-emitter.js';
|
|
17
17
|
import type { Db } from '../db/index.js';
|
|
18
18
|
import type { ProjectPluginHost } from '../core/plugin-host/types.js';
|
|
@@ -126,6 +126,13 @@ export interface AgentTurnInput {
|
|
|
126
126
|
export interface AgentTurnResult {
|
|
127
127
|
threadId: string;
|
|
128
128
|
answer: string;
|
|
129
|
+
/**
|
|
130
|
+
* 0.1.79: every chat_message persisted during THIS turn (user + assistant +
|
|
131
|
+
* reasoning + tool rows), in id order. Sliced from `chat_message`, returned in
|
|
132
|
+
* one batch after the turn. Feeds `runAgent({ output: 'full' })` / `c4s agent`;
|
|
133
|
+
* `output: 'final'` callers ignore it.
|
|
134
|
+
*/
|
|
135
|
+
messages: ChatMessage[];
|
|
129
136
|
}
|
|
130
137
|
/**
|
|
131
138
|
* Uruchamia jedna ture agenta dla istniejacego watku: wstawia wiadomosc user,
|
|
@@ -4,7 +4,7 @@ import { architectureCapabilities, createAdapter, observeStream, AdapterAbortErr
|
|
|
4
4
|
import { buildPlanToolsServer } from '../mcp/plan-tools.js';
|
|
5
5
|
import { buildBriefToolsServer } from '../mcp/brief-tools.js';
|
|
6
6
|
import { buildC4sToolsServer } from '../mcp/c4s-tools.js';
|
|
7
|
-
import { buildSystemPrompt, subagentsFor } from '../services/chat-context.js';
|
|
7
|
+
import { buildSystemPrompt, subagentsFor, CONTEXT_TYPE_REGISTRY, } from '../services/chat-context.js';
|
|
8
8
|
import { readConfig } from '../config.js';
|
|
9
9
|
import { TransagentDispatcher } from '../services/transagent-dispatcher.js';
|
|
10
10
|
import { buildTransagentToolsServer, TRANSAGENT_TOOL_FULL_NAME } from '../mcp/transagent-tools.js';
|
|
@@ -51,7 +51,17 @@ export async function runAgentTurn(deps, input) {
|
|
|
51
51
|
const { thread, prompt, requestId } = input;
|
|
52
52
|
const annotations = input.annotations ?? [];
|
|
53
53
|
const currentPage = input.currentPage ?? null;
|
|
54
|
-
|
|
54
|
+
// 0.1.79: snapshot the highest message id BEFORE this turn inserts anything, so
|
|
55
|
+
// we can slice exactly this turn's messages at the end (for `output: 'full'`).
|
|
56
|
+
const turnStartMessageId = deps.chatService.latestMessageId(thread.id);
|
|
57
|
+
// M05 m05ctxreg: the context-type registry is the single source of truth for this
|
|
58
|
+
// thread's five dispatch dimensions (skill / MCP set / chrome / subagent / posture).
|
|
59
|
+
const ctx = CONTEXT_TYPE_REGISTRY[thread.contextType];
|
|
60
|
+
// Builtin posture (dim 5): `force-plan` pins read-only plan-mode EVERY turn regardless
|
|
61
|
+
// of the thread's stored plan_mode flag (→ READONLY_BUILTINS + disallowedTools =
|
|
62
|
+
// MUTATING_BUILTINS). One site, so it covers both POST /api/threads/:id/ask and
|
|
63
|
+
// POST /api/chat. (Today only `ask` forces; the rest follow the thread flag.)
|
|
64
|
+
const planMode = ctx.builtinPosture === 'force-plan' ? true : thread.planMode;
|
|
55
65
|
const adapter = createAdapter('claude-code');
|
|
56
66
|
const emitter = new EventEmitter();
|
|
57
67
|
// `turn_start` jest syntetyzowany serwerowo wyłącznie dla wznawiających klientów
|
|
@@ -194,14 +204,15 @@ export async function runAgentTurn(deps, input) {
|
|
|
194
204
|
const title = prompt.slice(0, 60) + (prompt.length > 60 ? '...' : '');
|
|
195
205
|
deps.chatService.updateTitle(thread.id, title || '(annotations only)');
|
|
196
206
|
}
|
|
197
|
-
|
|
198
|
-
//
|
|
199
|
-
//
|
|
200
|
-
const
|
|
207
|
+
// M05 m05ctxreg: the brief frame (uiChrome='brief-detail') is the only one with a
|
|
208
|
+
// narrow toolset + reduced prompt — it skips entity counters, plan tools, pages, and
|
|
209
|
+
// the current-page block. Every brief-frame cheap-skip below reads this one flag.
|
|
210
|
+
const isBriefFrame = ctx.uiChrome === 'brief-detail';
|
|
201
211
|
// M21: dla brief context czytamy aktualny snapshot brief'u (frontmatter+body+hash)
|
|
202
212
|
// i wkladamy do system promptu. Skip kosztownych obliczen pageCount/entityCounts.
|
|
213
|
+
// Gated on the registry's brief-tools dimension (brief is the only briefTools row).
|
|
203
214
|
let briefSnapshot = null;
|
|
204
|
-
if (
|
|
215
|
+
if (ctx.mcp.briefTools && thread.briefPath) {
|
|
205
216
|
try {
|
|
206
217
|
briefSnapshot = await deps.briefService.getBrief(thread.briefPath);
|
|
207
218
|
}
|
|
@@ -209,9 +220,11 @@ export async function runAgentTurn(deps, input) {
|
|
|
209
220
|
console.warn(`[chat] brief read failed for ${thread.briefPath}:`, err.message);
|
|
210
221
|
}
|
|
211
222
|
}
|
|
212
|
-
// M23:
|
|
223
|
+
// M23: patch threads keep the FULL spec-editing toolset — their job is to edit the
|
|
224
|
+
// spec; only the system prompt differs (the patch snapshot is injected). `patch_path`
|
|
225
|
+
// is set iff context_type='patch' (chat.ts invariant), so its presence IS the gate.
|
|
213
226
|
let patchSnapshot = null;
|
|
214
|
-
if (
|
|
227
|
+
if (thread.patchPath) {
|
|
215
228
|
try {
|
|
216
229
|
patchSnapshot = await deps.patchService.getPatch(thread.patchPath);
|
|
217
230
|
}
|
|
@@ -220,7 +233,7 @@ export async function runAgentTurn(deps, input) {
|
|
|
220
233
|
}
|
|
221
234
|
}
|
|
222
235
|
let currentPageBody = null;
|
|
223
|
-
if (!
|
|
236
|
+
if (!isBriefFrame && currentPage) {
|
|
224
237
|
try {
|
|
225
238
|
const page = await deps.pagesService.read(currentPage);
|
|
226
239
|
currentPageBody = page.body;
|
|
@@ -232,8 +245,8 @@ export async function runAgentTurn(deps, input) {
|
|
|
232
245
|
// Stale-plan reminder MUSI byc sprawdzony PRZED markPlanSeenByThread —
|
|
233
246
|
// ten ostatni bumpuje last_seen_plan_version i zapodaje sygnal "synced".
|
|
234
247
|
const isFirstTurn = !thread.hasSystemPrompt;
|
|
235
|
-
const stalePlanReminder =
|
|
236
|
-
const currentPlan =
|
|
248
|
+
const stalePlanReminder = isBriefFrame ? null : deps.planService.getStalePlanReminder(thread.id);
|
|
249
|
+
const currentPlan = isBriefFrame ? null : deps.planService.getByThread(thread.id);
|
|
237
250
|
// Skill resolution: writing-style (config.writingStyle, M15) ladowany
|
|
238
251
|
// niezaleznie od kontekstu. Dla brief context dokladamy bundled `brief-author`.
|
|
239
252
|
const writingStyleSkills = deps.skillResolver.resolve();
|
|
@@ -243,8 +256,10 @@ export async function runAgentTurn(deps, input) {
|
|
|
243
256
|
title: String(writingStyleSkills[0].metadata?.title ?? writingStyleSkills[0].name),
|
|
244
257
|
}
|
|
245
258
|
: null;
|
|
259
|
+
// M05 m05ctxreg dim 1: the registry's bundled skill (beyond config.writingStyle).
|
|
260
|
+
// Only the brief row carries `brief-author`; chat/patch/ask carry null.
|
|
246
261
|
const inlineSkills = [...writingStyleSkills];
|
|
247
|
-
if (
|
|
262
|
+
if (ctx.bundledSkill === 'brief-author' && deps.skillRegistry.has('brief-author')) {
|
|
248
263
|
const skill = deps.skillRegistry.resolve('brief-author');
|
|
249
264
|
inlineSkills.push({
|
|
250
265
|
name: skill.metadata.slug,
|
|
@@ -258,7 +273,7 @@ export async function runAgentTurn(deps, input) {
|
|
|
258
273
|
},
|
|
259
274
|
});
|
|
260
275
|
}
|
|
261
|
-
const pageCount =
|
|
276
|
+
const pageCount = isBriefFrame ? 0 : countPages(await deps.pagesService.listTree());
|
|
262
277
|
// 0.1.51: language directives travel the same path as writingStyle — read from
|
|
263
278
|
// config per-turn here, NOT via architectureConfig. Effective only from the first
|
|
264
279
|
// turn of a new thread (the prompt is persisted once by setInitialSystemPrompt).
|
|
@@ -271,17 +286,22 @@ export async function runAgentTurn(deps, input) {
|
|
|
271
286
|
currentPagePath: currentPage,
|
|
272
287
|
currentPageBody,
|
|
273
288
|
pageCount,
|
|
274
|
-
entityCounts:
|
|
275
|
-
tagCount:
|
|
276
|
-
sectionCount:
|
|
289
|
+
entityCounts: isBriefFrame ? {} : deps.pluginHost.computeEntityCounts(deps.db.handle),
|
|
290
|
+
tagCount: isBriefFrame ? 0 : deps.tagsService.list().length,
|
|
291
|
+
sectionCount: isBriefFrame ? 0 : deps.sectionsService.count(),
|
|
277
292
|
annotations,
|
|
278
293
|
planMode,
|
|
279
294
|
currentPlan,
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
//
|
|
284
|
-
|
|
295
|
+
// M05 m05ctxreg dim 2: prompt-side tooling flags mirror the registry's MCP set
|
|
296
|
+
// (the <tooling>/usage blocks must match what is actually mounted below).
|
|
297
|
+
planToolsAvailable: ctx.mcp.planTools,
|
|
298
|
+
// c4s-tools excluded for brief (narrow toolset) and `ask` (recursion guard) — the
|
|
299
|
+
// registry encodes this; dropping it also drops the <c4s_tools_usage> +
|
|
300
|
+
// peer-discovery prompt blocks.
|
|
301
|
+
c4sToolsAvailable: ctx.mcp.c4sTools,
|
|
302
|
+
// 0.1.58: peer-discovery block. Gated on the same c4s-tools dimension; skip the
|
|
303
|
+
// disk reads when c4s-tools is absent (the block would be gated out anyway).
|
|
304
|
+
workspaceProjects: ctx.mcp.c4sTools ? (deps.listWorkspacePeers?.() ?? []) : [],
|
|
285
305
|
workspaceName: deps.workspaceName,
|
|
286
306
|
writingStyle,
|
|
287
307
|
specLanguage: cfg.language ?? undefined,
|
|
@@ -306,30 +326,32 @@ export async function runAgentTurn(deps, input) {
|
|
|
306
326
|
if (isFirstTurn && currentPlan) {
|
|
307
327
|
deps.planService.markPlanSeenByThread(thread.id);
|
|
308
328
|
}
|
|
309
|
-
//
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
329
|
+
// M05 m05ctxreg dim 2: per-thread MCP servers are dispatched from the registry's
|
|
330
|
+
// `mcp` descriptor — each server mounts iff its registry flag is set.
|
|
331
|
+
const planTools = ctx.mcp.planTools
|
|
332
|
+
? buildPlanToolsServer({
|
|
313
333
|
threadId: thread.id,
|
|
314
334
|
planService: deps.planService,
|
|
315
|
-
})
|
|
316
|
-
|
|
335
|
+
})
|
|
336
|
+
: null;
|
|
337
|
+
const briefTools = ctx.mcp.briefTools && thread.briefPath
|
|
317
338
|
? buildBriefToolsServer({
|
|
318
339
|
threadId: thread.id,
|
|
319
340
|
briefPath: thread.briefPath,
|
|
320
341
|
briefService: deps.briefService,
|
|
321
342
|
})
|
|
322
343
|
: null;
|
|
323
|
-
// M24 c4s-tools: cross-cutting MCP exposing
|
|
324
|
-
// fresh factory per request.
|
|
325
|
-
// intentionally narrow
|
|
326
|
-
const c4sTools =
|
|
344
|
+
// M24 c4s-tools: cross-cutting MCP exposing the peer-consult flow. Stateless,
|
|
345
|
+
// fresh factory per request. Registry-gated: chat + patch only (brief is
|
|
346
|
+
// intentionally narrow; `ask` is excluded — a consulted peer cannot consult another).
|
|
347
|
+
const c4sTools = ctx.mcp.c4sTools ? buildC4sToolsServer() : null;
|
|
327
348
|
// 0.1.69 transagent-tools: delegate work to a hidden child banka. Two guards:
|
|
328
|
-
// -
|
|
329
|
-
// - recursion depth 1: never inside a child banka (parentThreadId != null),
|
|
330
|
-
//
|
|
349
|
+
// - registry dimension `transagentTools` (chat + patch only — never brief/`ask`).
|
|
350
|
+
// - recursion depth 1: never inside a child banka (parentThreadId != null), so a
|
|
351
|
+
// banka cannot spawn a banka. This guard is orthogonal to the registry (it depends
|
|
352
|
+
// on the thread's lineage, not its context_type), so it stays at the call site.
|
|
331
353
|
const isChildBanka = thread.parentThreadId != null;
|
|
332
|
-
const transagentTools =
|
|
354
|
+
const transagentTools = ctx.mcp.transagentTools && !isChildBanka
|
|
333
355
|
? buildTransagentToolsServer({
|
|
334
356
|
parentThreadId: thread.id,
|
|
335
357
|
dispatcher: new TransagentDispatcher(deps, {
|
|
@@ -340,9 +362,11 @@ export async function runAgentTurn(deps, input) {
|
|
|
340
362
|
}),
|
|
341
363
|
})
|
|
342
364
|
: null;
|
|
365
|
+
// Registry `pluginServers`: 'all' mounts every entity-plugin server; 'release-only'
|
|
366
|
+
// narrows to the BRIEF_ALLOWED_PLUGIN_MCP whitelist (read-only release-tools).
|
|
343
367
|
const pluginMcpEntries = deps.pluginHost
|
|
344
368
|
.buildMcpServers()
|
|
345
|
-
.filter(({ name }) =>
|
|
369
|
+
.filter(({ name }) => ctx.mcp.pluginServers === 'release-only' ? BRIEF_ALLOWED_PLUGIN_MCP.has(name) : true)
|
|
346
370
|
.map(({ name, server }) => [name, server.config]);
|
|
347
371
|
const mcpServers = Object.fromEntries(pluginMcpEntries);
|
|
348
372
|
if (planTools)
|
|
@@ -521,7 +545,7 @@ export async function runAgentTurn(deps, input) {
|
|
|
521
545
|
replay.events = [];
|
|
522
546
|
emit(mergedTurnStart);
|
|
523
547
|
// Stale-plan reminder is applied at DISPATCH (here), not at enqueue.
|
|
524
|
-
const mergedReminder =
|
|
548
|
+
const mergedReminder = isBriefFrame ? null : deps.planService.getStalePlanReminder(thread.id);
|
|
525
549
|
await consume(mergedReminder ? `${mergedReminder}\n\n${merged}` : merged);
|
|
526
550
|
batch = deps.chatService.popAllQueued(thread.id);
|
|
527
551
|
}
|
|
@@ -570,7 +594,11 @@ export async function runAgentTurn(deps, input) {
|
|
|
570
594
|
cancelPendingForRequest(deps.pendingInputs, requestId);
|
|
571
595
|
deps.onTurnFinished?.();
|
|
572
596
|
}
|
|
573
|
-
|
|
597
|
+
// 0.1.79: slice the messages this turn persisted (id > pre-turn snapshot).
|
|
598
|
+
const messages = deps.chatService
|
|
599
|
+
.getMessages(thread.id)
|
|
600
|
+
.filter((m) => m.id > turnStartMessageId);
|
|
601
|
+
return { threadId: thread.id, answer: lastAssistantText.trim(), messages };
|
|
574
602
|
}
|
|
575
603
|
export function countPages(tree) {
|
|
576
604
|
let n = 0;
|