@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.
Files changed (241) hide show
  1. package/.claude/skills/c4s-brief-implementer/SKILL.md +120 -53
  2. package/CHANGELOG.md +20 -0
  3. package/dist/bin/c4s/commands/agent.d.ts +18 -0
  4. package/dist/bin/c4s/commands/agent.js +102 -0
  5. package/dist/bin/c4s/commands/agent.js.map +1 -0
  6. package/dist/bin/c4s/commands/ask.d.ts +9 -8
  7. package/dist/bin/c4s/commands/ask.js +23 -31
  8. package/dist/bin/c4s/commands/ask.js.map +1 -1
  9. package/dist/bin/c4s/commands/catalog.d.ts +1 -1
  10. package/dist/bin/c4s/commands/catalog.js +2 -2
  11. package/dist/bin/c4s/commands/catalog.js.map +1 -1
  12. package/dist/bin/c4s/commands/describe.d.ts +1 -1
  13. package/dist/bin/c4s/commands/describe.js +2 -2
  14. package/dist/bin/c4s/commands/describe.js.map +1 -1
  15. package/dist/bin/c4s/commands/detail.d.ts +1 -1
  16. package/dist/bin/c4s/commands/detail.js +2 -2
  17. package/dist/bin/c4s/commands/detail.js.map +1 -1
  18. package/dist/bin/c4s/commands/element-list.d.ts +1 -1
  19. package/dist/bin/c4s/commands/element-list.js +2 -2
  20. package/dist/bin/c4s/commands/element-list.js.map +1 -1
  21. package/dist/bin/c4s/commands/find-references.js +1 -1
  22. package/dist/bin/c4s/commands/find-references.js.map +1 -1
  23. package/dist/bin/c4s/commands/inline-mention.d.ts +1 -1
  24. package/dist/bin/c4s/commands/inline-mention.js +2 -2
  25. package/dist/bin/c4s/commands/inline-mention.js.map +1 -1
  26. package/dist/bin/c4s/commands/list-slugs.d.ts +1 -1
  27. package/dist/bin/c4s/commands/list-slugs.js +2 -2
  28. package/dist/bin/c4s/commands/list-slugs.js.map +1 -1
  29. package/dist/bin/c4s/commands/list-tags.d.ts +1 -1
  30. package/dist/bin/c4s/commands/list-tags.js +2 -2
  31. package/dist/bin/c4s/commands/list-tags.js.map +1 -1
  32. package/dist/bin/c4s/commands/plugins.d.ts +9 -0
  33. package/dist/bin/c4s/commands/plugins.js +81 -0
  34. package/dist/bin/c4s/commands/plugins.js.map +1 -0
  35. package/dist/bin/c4s/commands/resolve.d.ts +1 -1
  36. package/dist/bin/c4s/commands/resolve.js +2 -2
  37. package/dist/bin/c4s/commands/resolve.js.map +1 -1
  38. package/dist/bin/c4s/commands/single-element.d.ts +1 -1
  39. package/dist/bin/c4s/commands/single-element.js +2 -2
  40. package/dist/bin/c4s/commands/single-element.js.map +1 -1
  41. package/dist/bin/c4s/commands/tagged-list-mixed.d.ts +1 -1
  42. package/dist/bin/c4s/commands/tagged-list-mixed.js +2 -2
  43. package/dist/bin/c4s/commands/tagged-list-mixed.js.map +1 -1
  44. package/dist/bin/c4s/commands/tagged-list.d.ts +1 -1
  45. package/dist/bin/c4s/commands/tagged-list.js +2 -2
  46. package/dist/bin/c4s/commands/tagged-list.js.map +1 -1
  47. package/dist/bin/c4s/context.d.ts +3 -3
  48. package/dist/bin/c4s/context.js +7 -4
  49. package/dist/bin/c4s/context.js.map +1 -1
  50. package/dist/bin/c4s/errors.d.ts +1 -1
  51. package/dist/bin/c4s/errors.js.map +1 -1
  52. package/dist/bin/c4s-mcp.js +6 -2
  53. package/dist/bin/c4s-mcp.js.map +1 -1
  54. package/dist/bin/c4s.js +19 -4
  55. package/dist/bin/c4s.js.map +1 -1
  56. package/dist/bin/gitignore.js +7 -11
  57. package/dist/bin/gitignore.js.map +1 -1
  58. package/dist/client/assets/{arc-Coa9fbDO.js → arc-C9oTB3b1.js} +1 -1
  59. package/dist/client/assets/{architectureDiagram-3BPJPVTR-VJZcRMEN.js → architectureDiagram-3BPJPVTR-Bno5ViqK.js} +1 -1
  60. package/dist/client/assets/{blockDiagram-GPEHLZMM-C7dU2lW1.js → blockDiagram-GPEHLZMM-CJYBoeWQ.js} +1 -1
  61. package/dist/client/assets/{c4Diagram-AAUBKEIU-CG_BBm_5.js → c4Diagram-AAUBKEIU-DaaqWE6s.js} +1 -1
  62. package/dist/client/assets/channel-Cei_E79M.js +1 -0
  63. package/dist/client/assets/{chunk-2J33WTMH-BnS95YpK.js → chunk-2J33WTMH-P_I0OPMy.js} +1 -1
  64. package/dist/client/assets/{chunk-4BX2VUAB-COr8w3X3.js → chunk-4BX2VUAB-CCySMlh5.js} +1 -1
  65. package/dist/client/assets/{chunk-55IACEB6-CxrIbZhB.js → chunk-55IACEB6-CEUyqKGF.js} +1 -1
  66. package/dist/client/assets/{chunk-727SXJPM-DRchPPRe.js → chunk-727SXJPM-CoTSYOVz.js} +1 -1
  67. package/dist/client/assets/{chunk-AQP2D5EJ-_SfN7mED.js → chunk-AQP2D5EJ-DB0nMxPr.js} +1 -1
  68. package/dist/client/assets/{chunk-FMBD7UC4-p2tIiP1D.js → chunk-FMBD7UC4-PG3m6-_a.js} +1 -1
  69. package/dist/client/assets/{chunk-ND2GUHAM-B1mbl2hP.js → chunk-ND2GUHAM-CBNk6IaV.js} +1 -1
  70. package/dist/client/assets/{chunk-QZHKN3VN-DBUpeqvS.js → chunk-QZHKN3VN-CLFa0WvN.js} +1 -1
  71. package/dist/client/assets/classDiagram-4FO5ZUOK-DUe_fAto.js +1 -0
  72. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-DUe_fAto.js +1 -0
  73. package/dist/client/assets/{cose-bilkent-S5V4N54A-BBsY5aKD.js → cose-bilkent-S5V4N54A-BDwDDxHN.js} +1 -1
  74. package/dist/client/assets/{dagre-BM42HDAG-b-vu4RC9.js → dagre-BM42HDAG-DR-1e8N5.js} +1 -1
  75. package/dist/client/assets/{diagram-2AECGRRQ-j-DW9qSf.js → diagram-2AECGRRQ-C-tHgBWt.js} +1 -1
  76. package/dist/client/assets/{diagram-5GNKFQAL-DHX_WYWQ.js → diagram-5GNKFQAL-uLmoKaJL.js} +1 -1
  77. package/dist/client/assets/{diagram-KO2AKTUF-DxdQok_M.js → diagram-KO2AKTUF-8Fd-xuOy.js} +1 -1
  78. package/dist/client/assets/{diagram-LMA3HP47-BbTIX5c1.js → diagram-LMA3HP47-C1gniWsn.js} +1 -1
  79. package/dist/client/assets/{diagram-OG6HWLK6-BQ9ODAlH.js → diagram-OG6HWLK6-BMWjZbeC.js} +1 -1
  80. package/dist/client/assets/{erDiagram-TEJ5UH35-6lwAL1y9.js → erDiagram-TEJ5UH35-CIUO8hrR.js} +1 -1
  81. package/dist/client/assets/{flowDiagram-I6XJVG4X-ioSHb5-t.js → flowDiagram-I6XJVG4X-Ccw5YEf3.js} +1 -1
  82. package/dist/client/assets/{ganttDiagram-6RSMTGT7-CXFQp9Nj.js → ganttDiagram-6RSMTGT7-BAvlf8cY.js} +1 -1
  83. package/dist/client/assets/{gitGraphDiagram-PVQCEYII-C1pVD_NQ.js → gitGraphDiagram-PVQCEYII-ChCkdYar.js} +1 -1
  84. package/dist/client/assets/{index-JaAxQJXh.js → index-BotCWOKC.js} +1 -1
  85. package/dist/client/assets/index-CtdzGyqj.js +805 -0
  86. package/dist/client/assets/{index-hz5T_W2e.js → index-DtpKHGD1.js} +1 -1
  87. package/dist/client/assets/{infoDiagram-5YYISTIA-C2Guev-g.js → infoDiagram-5YYISTIA-CZMGwNyB.js} +1 -1
  88. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-D3v8VBb2.js → ishikawaDiagram-YF4QCWOH-CubjZGk6.js} +1 -1
  89. package/dist/client/assets/{journeyDiagram-JHISSGLW-DX1AW_Ap.js → journeyDiagram-JHISSGLW-DzwOyVzB.js} +1 -1
  90. package/dist/client/assets/{kanban-definition-UN3LZRKU-CzXThvq2.js → kanban-definition-UN3LZRKU-CXznoTY9.js} +1 -1
  91. package/dist/client/assets/{linear-CVw4gl5i.js → linear-EDwTFRrU.js} +1 -1
  92. package/dist/client/assets/{mermaid.core-C29eoXRj.js → mermaid.core-Lae2097R.js} +4 -4
  93. package/dist/client/assets/{mindmap-definition-RKZ34NQL-DEEGVQVA.js → mindmap-definition-RKZ34NQL-DFjIW41g.js} +1 -1
  94. package/dist/client/assets/{pieDiagram-4H26LBE5-Dme-VM6m.js → pieDiagram-4H26LBE5-CZDLR1jd.js} +1 -1
  95. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-CURFNo24.js → quadrantDiagram-W4KKPZXB-CTGDzbqp.js} +1 -1
  96. package/dist/client/assets/{requirementDiagram-4Y6WPE33-DxMZWXME.js → requirementDiagram-4Y6WPE33-CeH0NbMv.js} +1 -1
  97. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-BW64D4_P.js → sankeyDiagram-5OEKKPKP-B6ZTjurV.js} +1 -1
  98. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-BATRPm8Q.js → sequenceDiagram-3UESZ5HK-DcTRztVx.js} +1 -1
  99. package/dist/client/assets/{stateDiagram-AJRCARHV-pgHVMnO3.js → stateDiagram-AJRCARHV-nUgRVZSA.js} +1 -1
  100. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-D9pJuQbI.js +1 -0
  101. package/dist/client/assets/{timeline-definition-PNZ67QCA-qBxJZPWd.js → timeline-definition-PNZ67QCA-CXm5n4rV.js} +1 -1
  102. package/dist/client/assets/{vennDiagram-CIIHVFJN-BZJK9hqJ.js → vennDiagram-CIIHVFJN-EmNJBYNd.js} +1 -1
  103. package/dist/client/assets/{wardley-L42UT6IY-BobtgEXg.js → wardley-L42UT6IY-MLrlp8H-.js} +1 -1
  104. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-DuWfX_-P.js → wardleyDiagram-YWT4CUSO-5QoES25n.js} +1 -1
  105. package/dist/client/assets/{xychartDiagram-2RQKCTM6-DCw1iURo.js → xychartDiagram-2RQKCTM6-CbDEQbY0.js} +1 -1
  106. package/dist/client/index.html +1 -1
  107. package/dist/core/agent/run-agent.d.ts +61 -0
  108. package/dist/core/agent/run-agent.js +212 -0
  109. package/dist/core/agent/run-agent.js.map +1 -0
  110. package/dist/core/ask/run-ask.d.ts +1 -1
  111. package/dist/core/ask/run-ask.js +14 -5
  112. package/dist/core/ask/run-ask.js.map +1 -1
  113. package/dist/core/workspace/resolve.d.ts +2 -0
  114. package/dist/core/workspace/resolve.js +2 -1
  115. package/dist/core/workspace/resolve.js.map +1 -1
  116. package/dist/plugin-types/ambient.d.ts +30 -0
  117. package/dist/plugin-types/plugin-runtime.d.ts +172 -0
  118. package/dist/plugin-types/ui.d.ts +154 -0
  119. package/dist/server/config.d.ts +12 -0
  120. package/dist/server/config.js +26 -0
  121. package/dist/server/config.js.map +1 -1
  122. package/dist/server/core/plugin-host/__fixtures__/plugins.d.ts +14 -0
  123. package/dist/server/core/plugin-host/__fixtures__/plugins.js +56 -0
  124. package/dist/server/core/plugin-host/__fixtures__/plugins.js.map +1 -0
  125. package/dist/server/core/plugin-host/base-packages.d.ts +14 -0
  126. package/dist/server/core/plugin-host/base-packages.js +26 -0
  127. package/dist/server/core/plugin-host/base-packages.js.map +1 -0
  128. package/dist/server/core/plugin-host/cache-bust.d.ts +10 -0
  129. package/dist/server/core/plugin-host/cache-bust.js +21 -0
  130. package/dist/server/core/plugin-host/cache-bust.js.map +1 -0
  131. package/dist/server/core/plugin-host/cli-engine.d.ts +7 -2
  132. package/dist/server/core/plugin-host/cli-engine.js +11 -3
  133. package/dist/server/core/plugin-host/cli-engine.js.map +1 -1
  134. package/dist/server/core/plugin-host/cli-plugins.d.ts +23 -0
  135. package/dist/server/core/plugin-host/cli-plugins.js +49 -0
  136. package/dist/server/core/plugin-host/cli-plugins.js.map +1 -0
  137. package/dist/server/core/plugin-host/cross-cutting.d.ts +41 -4
  138. package/dist/server/core/plugin-host/cross-cutting.js +52 -4
  139. package/dist/server/core/plugin-host/cross-cutting.js.map +1 -1
  140. package/dist/server/core/plugin-host/frontend-assets.d.ts +100 -0
  141. package/dist/server/core/plugin-host/frontend-assets.js +262 -0
  142. package/dist/server/core/plugin-host/frontend-assets.js.map +1 -0
  143. package/dist/server/core/plugin-host/frontend-manifest.d.ts +33 -0
  144. package/dist/server/core/plugin-host/frontend-manifest.js +60 -0
  145. package/dist/server/core/plugin-host/frontend-manifest.js.map +1 -0
  146. package/dist/server/core/plugin-host/loader.d.ts +107 -0
  147. package/dist/server/core/plugin-host/loader.js +196 -0
  148. package/dist/server/core/plugin-host/loader.js.map +1 -0
  149. package/dist/server/core/plugin-host/manifest-adapter.d.ts +30 -0
  150. package/dist/server/core/plugin-host/manifest-adapter.js +119 -0
  151. package/dist/server/core/plugin-host/manifest-adapter.js.map +1 -0
  152. package/dist/server/core/plugin-host/overlay-loader.d.ts +60 -0
  153. package/dist/server/core/plugin-host/overlay-loader.js +243 -0
  154. package/dist/server/core/plugin-host/overlay-loader.js.map +1 -0
  155. package/dist/server/core/plugin-host/plugin-watcher.d.ts +41 -0
  156. package/dist/server/core/plugin-host/plugin-watcher.js +95 -0
  157. package/dist/server/core/plugin-host/plugin-watcher.js.map +1 -0
  158. package/dist/server/core/plugin-host/project-host.d.ts +8 -2
  159. package/dist/server/core/plugin-host/project-host.js +56 -6
  160. package/dist/server/core/plugin-host/project-host.js.map +1 -1
  161. package/dist/server/core/plugin-host/registry.d.ts +26 -2
  162. package/dist/server/core/plugin-host/registry.js +107 -2
  163. package/dist/server/core/plugin-host/registry.js.map +1 -1
  164. package/dist/server/core/plugin-host/runtime-shims.d.ts +26 -0
  165. package/dist/server/core/plugin-host/runtime-shims.js +96 -0
  166. package/dist/server/core/plugin-host/runtime-shims.js.map +1 -0
  167. package/dist/server/core/plugin-host/types.d.ts +105 -3
  168. package/dist/server/db/migrations/042_chat_thread_drop_context_type_check.sql +61 -0
  169. package/dist/server/external-skills/brief-implementer-template.d.ts +1 -1
  170. package/dist/server/external-skills/brief-implementer-template.js +5 -2
  171. package/dist/server/external-skills/brief-implementer-template.js.map +1 -1
  172. package/dist/server/external-skills/spec-reader-template.d.ts +1 -1
  173. package/dist/server/external-skills/spec-reader-template.js +14 -0
  174. package/dist/server/external-skills/spec-reader-template.js.map +1 -1
  175. package/dist/server/index.js +82 -1
  176. package/dist/server/index.js.map +1 -1
  177. package/dist/server/mcp/c4s-tools.d.ts +6 -1
  178. package/dist/server/mcp/c4s-tools.js +18 -13
  179. package/dist/server/mcp/c4s-tools.js.map +1 -1
  180. package/dist/server/plugin-runtime/index.d.ts +17 -0
  181. package/dist/server/plugin-runtime/index.js +16 -0
  182. package/dist/server/plugin-runtime/index.js.map +1 -0
  183. package/dist/server/plugin-runtime/ui.d.ts +15 -0
  184. package/dist/server/plugin-runtime/ui.js +15 -0
  185. package/dist/server/plugin-runtime/ui.js.map +1 -0
  186. package/dist/server/routes/agent-turn.d.ts +8 -1
  187. package/dist/server/routes/agent-turn.js +67 -39
  188. package/dist/server/routes/agent-turn.js.map +1 -1
  189. package/dist/server/routes/config.d.ts +8 -0
  190. package/dist/server/routes/config.js +41 -3
  191. package/dist/server/routes/config.js.map +1 -1
  192. package/dist/server/routes/plugins.d.ts +43 -0
  193. package/dist/server/routes/plugins.js +93 -0
  194. package/dist/server/routes/plugins.js.map +1 -0
  195. package/dist/server/routes/threads.js +21 -3
  196. package/dist/server/routes/threads.js.map +1 -1
  197. package/dist/server/serialization/registerAll.d.ts +4 -0
  198. package/dist/server/serialization/registerAll.js +4 -2
  199. package/dist/server/serialization/registerAll.js.map +1 -1
  200. package/dist/server/services/chat-context.d.ts +34 -0
  201. package/dist/server/services/chat-context.js +58 -15
  202. package/dist/server/services/chat-context.js.map +1 -1
  203. package/dist/server/services/chat.d.ts +6 -0
  204. package/dist/server/services/chat.js +18 -2
  205. package/dist/server/services/chat.js.map +1 -1
  206. package/dist/server/services/entity-writer.d.ts +2 -3
  207. package/dist/server/services/entity-writer.js.map +1 -1
  208. package/dist/server/services/skill-registry.d.ts +31 -2
  209. package/dist/server/services/skill-registry.js +73 -1
  210. package/dist/server/services/skill-registry.js.map +1 -1
  211. package/dist/server/workspace/context-cache.d.ts +9 -0
  212. package/dist/server/workspace/context-cache.js +14 -0
  213. package/dist/server/workspace/context-cache.js.map +1 -1
  214. package/dist/server/workspace/project-context.d.ts +3 -0
  215. package/dist/server/workspace/project-context.js +106 -4
  216. package/dist/server/workspace/project-context.js.map +1 -1
  217. package/dist/server/workspace/registry.d.ts +28 -1
  218. package/dist/server/workspace/registry.js +57 -1
  219. package/dist/server/workspace/registry.js.map +1 -1
  220. package/dist/server/workspace/types.d.ts +15 -0
  221. package/dist/shared/entities.d.ts +4 -1
  222. package/dist/shared/entities.js.map +1 -1
  223. package/dist/shared/plugin-host/frontend-manifest.d.ts +56 -0
  224. package/dist/shared/plugin-host/frontend-manifest.js +89 -0
  225. package/dist/shared/plugin-host/frontend-manifest.js.map +1 -0
  226. package/dist/shared/plugin-host/host-api.d.ts +60 -0
  227. package/dist/shared/plugin-host/host-api.js +67 -0
  228. package/dist/shared/plugin-host/host-api.js.map +1 -0
  229. package/dist/shared/plugin-host/manifest.d.ts +194 -0
  230. package/dist/shared/plugin-host/manifest.js +52 -0
  231. package/dist/shared/plugin-host/manifest.js.map +1 -0
  232. package/dist/shared/plugin-host/ui-kit-surface.d.ts +22 -0
  233. package/dist/shared/plugin-host/ui-kit-surface.js +25 -0
  234. package/dist/shared/plugin-host/ui-kit-surface.js.map +1 -0
  235. package/dist/shared/types.d.ts +5 -0
  236. package/package.json +18 -3
  237. package/dist/client/assets/channel-D5gzBvo7.js +0 -1
  238. package/dist/client/assets/classDiagram-4FO5ZUOK-CT-amIxa.js +0 -1
  239. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-CT-amIxa.js +0 -1
  240. package/dist/client/assets/index-DyAnw7YN.js +0 -798
  241. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-szm_LIuD.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;
@@ -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. Cztery rozlaczne wyniki:
109
- * connection refused → SERVER_NOT_RUNNING
110
- * nie-c4s ksztalt → SERVER_NOT_RECOGNIZED
111
- * 404 z koperta c4s → PROJECT_NOT_IN_WORKSPACE
112
- * 200 config OK
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":"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"}
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":"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"}
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/core/workspace/resolve.ts"],"names":[],"mappings":"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"}
@@ -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;