@inharness-ai/claude4spec 1.0.5 → 1.0.7

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 (117) hide show
  1. package/.claude/skills/c4s-brief-implementer/SKILL.md +37 -3
  2. package/.claude/skills/c4s-spec-reader/SKILL.md +11 -0
  3. package/CHANGELOG.md +32 -0
  4. package/dist/bin/c4s/commands/ask.d.ts +6 -4
  5. package/dist/bin/c4s/commands/ask.js +41 -135
  6. package/dist/bin/c4s/commands/ask.js.map +1 -1
  7. package/dist/client/assets/{arc-grMo2vzL.js → arc-BaZhf2Hh.js} +1 -1
  8. package/dist/client/assets/{architectureDiagram-3BPJPVTR-Fp_VHONq.js → architectureDiagram-3BPJPVTR-CSSQUdKD.js} +1 -1
  9. package/dist/client/assets/{blockDiagram-GPEHLZMM-CIwVG0sx.js → blockDiagram-GPEHLZMM-BlmKwjoI.js} +1 -1
  10. package/dist/client/assets/{c4Diagram-AAUBKEIU-tysuJyz0.js → c4Diagram-AAUBKEIU-C7helt0Z.js} +1 -1
  11. package/dist/client/assets/channel-CHGfOh3d.js +1 -0
  12. package/dist/client/assets/{chunk-2J33WTMH-DZFNNwID.js → chunk-2J33WTMH-CC-e13sC.js} +1 -1
  13. package/dist/client/assets/{chunk-4BX2VUAB-CsnJG7Pv.js → chunk-4BX2VUAB-D-HpWY8q.js} +1 -1
  14. package/dist/client/assets/{chunk-55IACEB6-MhREYXzo.js → chunk-55IACEB6-BSPwaiEp.js} +1 -1
  15. package/dist/client/assets/{chunk-727SXJPM-BjvyGtK3.js → chunk-727SXJPM-CQbEHPPO.js} +1 -1
  16. package/dist/client/assets/{chunk-AQP2D5EJ-zfcfKNbO.js → chunk-AQP2D5EJ-BpSrKpmB.js} +1 -1
  17. package/dist/client/assets/{chunk-FMBD7UC4-Ckx-Hc8U.js → chunk-FMBD7UC4-zE1R3SR8.js} +1 -1
  18. package/dist/client/assets/{chunk-ND2GUHAM-DSIVVmYM.js → chunk-ND2GUHAM-CqN17qqH.js} +1 -1
  19. package/dist/client/assets/{chunk-QZHKN3VN-EcIM6ZdS.js → chunk-QZHKN3VN-13BvG3Jp.js} +1 -1
  20. package/dist/client/assets/classDiagram-4FO5ZUOK-DxbfnZUt.js +1 -0
  21. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-DxbfnZUt.js +1 -0
  22. package/dist/client/assets/{cose-bilkent-S5V4N54A-DC8DVe0z.js → cose-bilkent-S5V4N54A-CO574VR8.js} +1 -1
  23. package/dist/client/assets/{dagre-BM42HDAG-BQjcdXnw.js → dagre-BM42HDAG-BEVJuqdY.js} +1 -1
  24. package/dist/client/assets/{diagram-2AECGRRQ-BUPeBMwt.js → diagram-2AECGRRQ-CGCBS-dy.js} +1 -1
  25. package/dist/client/assets/{diagram-5GNKFQAL-I_Q-Pnp6.js → diagram-5GNKFQAL-Dyq0_Rlp.js} +1 -1
  26. package/dist/client/assets/{diagram-KO2AKTUF-B8WbbWJu.js → diagram-KO2AKTUF-BpiCh3Ed.js} +1 -1
  27. package/dist/client/assets/{diagram-LMA3HP47-CsACxgW7.js → diagram-LMA3HP47-XJeaihzL.js} +1 -1
  28. package/dist/client/assets/{diagram-OG6HWLK6-lPuJxQED.js → diagram-OG6HWLK6-Bb_LX7wz.js} +1 -1
  29. package/dist/client/assets/{erDiagram-TEJ5UH35-cU5ZGREz.js → erDiagram-TEJ5UH35-D-slZ-dN.js} +1 -1
  30. package/dist/client/assets/{flowDiagram-I6XJVG4X-Dr-vZTBV.js → flowDiagram-I6XJVG4X-B_SOoctl.js} +1 -1
  31. package/dist/client/assets/{ganttDiagram-6RSMTGT7-CXiWZ0R8.js → ganttDiagram-6RSMTGT7-B3UsanUx.js} +1 -1
  32. package/dist/client/assets/{gitGraphDiagram-PVQCEYII-PDvLBbvz.js → gitGraphDiagram-PVQCEYII-C9RzuImP.js} +1 -1
  33. package/dist/client/assets/{index-BQltseJ-.js → index-BnYPnnod.js} +1 -1
  34. package/dist/client/assets/{index-RMlMPKY7.js → index-CQBB3Uf4.js} +1 -1
  35. package/dist/client/assets/index-DamovIDe.js +752 -0
  36. package/dist/client/assets/{index-zpHL2aYW.css → index-yeyi8oQf.css} +1 -1
  37. package/dist/client/assets/{infoDiagram-5YYISTIA-Re9fOUPS.js → infoDiagram-5YYISTIA-CcaL3dnH.js} +1 -1
  38. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-BTazB_7p.js → ishikawaDiagram-YF4QCWOH-Drl0TLDq.js} +1 -1
  39. package/dist/client/assets/{journeyDiagram-JHISSGLW-pGUoqxHl.js → journeyDiagram-JHISSGLW-Ia46_5df.js} +1 -1
  40. package/dist/client/assets/{kanban-definition-UN3LZRKU-C2RzCJrM.js → kanban-definition-UN3LZRKU-CkDPRy8x.js} +1 -1
  41. package/dist/client/assets/{linear-Be3WPYKf.js → linear-BJ5HYD7N.js} +1 -1
  42. package/dist/client/assets/{mermaid.core-GdPXct3q.js → mermaid.core-DohfSRYI.js} +4 -4
  43. package/dist/client/assets/{mindmap-definition-RKZ34NQL-DvktVTUU.js → mindmap-definition-RKZ34NQL-CN1i3cXM.js} +1 -1
  44. package/dist/client/assets/{pieDiagram-4H26LBE5-DvC_m4m5.js → pieDiagram-4H26LBE5-Boz7UISz.js} +1 -1
  45. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-SWtidcZL.js → quadrantDiagram-W4KKPZXB-DOBPTFZq.js} +1 -1
  46. package/dist/client/assets/{requirementDiagram-4Y6WPE33-CQEHDx1W.js → requirementDiagram-4Y6WPE33-c0jMOQGX.js} +1 -1
  47. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-C0PTA3gP.js → sankeyDiagram-5OEKKPKP-D-AwIne0.js} +1 -1
  48. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-D-x7SXoo.js → sequenceDiagram-3UESZ5HK-BgMjP-Q1.js} +1 -1
  49. package/dist/client/assets/{stateDiagram-AJRCARHV-BhcGVfs1.js → stateDiagram-AJRCARHV-8qvFMuv5.js} +1 -1
  50. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-Doe04F42.js +1 -0
  51. package/dist/client/assets/{timeline-definition-PNZ67QCA-JYTlKPB-.js → timeline-definition-PNZ67QCA-Q1t7Xr5L.js} +1 -1
  52. package/dist/client/assets/{vennDiagram-CIIHVFJN-KjNL1Qpz.js → vennDiagram-CIIHVFJN-atIUY_uM.js} +1 -1
  53. package/dist/client/assets/{wardley-L42UT6IY-DcljmmEY.js → wardley-L42UT6IY-Dg8nGqpF.js} +1 -1
  54. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-Pbq6ALgg.js → wardleyDiagram-YWT4CUSO-B26t7Hde.js} +1 -1
  55. package/dist/client/assets/{xychartDiagram-2RQKCTM6-G_r_2Cvk.js → xychartDiagram-2RQKCTM6-uz4jM4Hi.js} +1 -1
  56. package/dist/client/index.html +2 -2
  57. package/dist/core/ask/run-ask.d.ts +37 -0
  58. package/dist/core/ask/run-ask.js +171 -0
  59. package/dist/core/ask/run-ask.js.map +1 -0
  60. package/dist/server/config.d.ts +6 -0
  61. package/dist/server/config.js +19 -0
  62. package/dist/server/config.js.map +1 -1
  63. package/dist/server/core/plugin-host/host.js +8 -8
  64. package/dist/server/core/plugin-host/host.js.map +1 -1
  65. package/dist/server/core/plugin-host/types.d.ts +22 -7
  66. package/dist/server/db/migrations/030_remote_session.sql +29 -0
  67. package/dist/server/entities/ac/plugin.js +1 -1
  68. package/dist/server/entities/ac/plugin.js.map +1 -1
  69. package/dist/server/entities/ac/system-prompt.js +6 -6
  70. package/dist/server/entities/ac/system-prompt.js.map +1 -1
  71. package/dist/server/entities/database-table/plugin.js +1 -1
  72. package/dist/server/entities/database-table/plugin.js.map +1 -1
  73. package/dist/server/entities/dto/plugin.js +1 -1
  74. package/dist/server/entities/dto/plugin.js.map +1 -1
  75. package/dist/server/entities/endpoint/plugin.js +1 -1
  76. package/dist/server/entities/endpoint/plugin.js.map +1 -1
  77. package/dist/server/entities/ui-view/plugin.js +1 -1
  78. package/dist/server/entities/ui-view/plugin.js.map +1 -1
  79. package/dist/server/external-skills/brief-implementer-template.d.ts +1 -1
  80. package/dist/server/external-skills/brief-implementer-template.js +18 -14
  81. package/dist/server/external-skills/brief-implementer-template.js.map +1 -1
  82. package/dist/server/index.js +19 -6
  83. package/dist/server/index.js.map +1 -1
  84. package/dist/server/mcp/brief-tools.d.ts +2 -4
  85. package/dist/server/mcp/brief-tools.js +4 -25
  86. package/dist/server/mcp/brief-tools.js.map +1 -1
  87. package/dist/server/mcp/c4s-tools.d.ts +15 -0
  88. package/dist/server/mcp/c4s-tools.js +67 -0
  89. package/dist/server/mcp/c4s-tools.js.map +1 -0
  90. package/dist/server/routes/agent-turn.js +9 -2
  91. package/dist/server/routes/agent-turn.js.map +1 -1
  92. package/dist/server/routes/errors.js +3 -0
  93. package/dist/server/routes/errors.js.map +1 -1
  94. package/dist/server/routes/remote-account.d.ts +8 -0
  95. package/dist/server/routes/remote-account.js +49 -0
  96. package/dist/server/routes/remote-account.js.map +1 -0
  97. package/dist/server/services/chat-context.d.ts +4 -0
  98. package/dist/server/services/chat-context.js +24 -6
  99. package/dist/server/services/chat-context.js.map +1 -1
  100. package/dist/server/services/plan.js +6 -6
  101. package/dist/server/services/plan.js.map +1 -1
  102. package/dist/server/services/remote-auth.d.ts +31 -0
  103. package/dist/server/services/remote-auth.js +124 -0
  104. package/dist/server/services/remote-auth.js.map +1 -0
  105. package/dist/server/services/remote-http-client.d.ts +85 -0
  106. package/dist/server/services/remote-http-client.js +107 -0
  107. package/dist/server/services/remote-http-client.js.map +1 -0
  108. package/dist/server/skills/brief-author/SKILL.md +0 -1
  109. package/dist/shared/remote-account.d.ts +58 -0
  110. package/dist/shared/remote-account.js +8 -0
  111. package/dist/shared/remote-account.js.map +1 -0
  112. package/package.json +1 -1
  113. package/dist/client/assets/channel-B30S19wt.js +0 -1
  114. package/dist/client/assets/classDiagram-4FO5ZUOK-Bm4SZLsb.js +0 -1
  115. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-Bm4SZLsb.js +0 -1
  116. package/dist/client/assets/index-YFPhJxE5.js +0 -737
  117. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-2vcyLY1V.js +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-ask.js","sourceRoot":"","sources":["../../../src/core/ask/run-ask.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,12 @@ export interface Config {
26
26
  entities?: string[];
27
27
  consistency?: ConsistencyConfig;
28
28
  agent?: AgentConfig;
29
+ /**
30
+ * M24: base URL of the remote claude4spec-API (dev/staging override).
31
+ * `null`/absent = the hardcoded production constant in M24. Additive — no
32
+ * `$schemaVersion` bump; projects from before M24 keep production behaviour.
33
+ */
34
+ remoteApiUrl?: string | null;
29
35
  }
30
36
  export type ConsistencySeverity = 'off' | 'warn' | 'error';
31
37
  export interface ConsistencyConfig {
@@ -18,6 +18,8 @@ export function defaults(cwd) {
18
18
  // traktowany jako ukonczony onboarding (zaden retroaktywny redirect).
19
19
  // Swiezy bootstrap nadpisuje to na false w loadOrCreateConfig.
20
20
  onboardingCompleted: true,
21
+ // M24: null = use the hardcoded production remote in M24.
22
+ remoteApiUrl: null,
21
23
  };
22
24
  }
23
25
  function pickDefined(obj) {
@@ -133,6 +135,23 @@ function validate(raw) {
133
135
  }
134
136
  out.agent = agent;
135
137
  }
138
+ if ('remoteApiUrl' in r) {
139
+ if (r.remoteApiUrl !== null && typeof r.remoteApiUrl !== 'string') {
140
+ throw typeError('remoteApiUrl', 'string | null', r.remoteApiUrl);
141
+ }
142
+ // Syntactic URL check here (sync). Reachability (HEAD ping) is enforced at
143
+ // server boot in startServer() — both failures share the same message:
144
+ // `config.json: field 'remoteApiUrl': invalid URL or unreachable host`.
145
+ if (typeof r.remoteApiUrl === 'string' && r.remoteApiUrl.trim() !== '') {
146
+ try {
147
+ void new URL(r.remoteApiUrl);
148
+ }
149
+ catch {
150
+ throw new Error(`config.json: field 'remoteApiUrl': invalid URL or unreachable host`);
151
+ }
152
+ }
153
+ out.remoteApiUrl = r.remoteApiUrl;
154
+ }
136
155
  return out;
137
156
  }
138
157
  function atomicWrite(filePath, data) {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/server/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/server/config.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@ class PluginHostImpl {
13
13
  activeTypes = null; // null = all active
14
14
  unknownTypes = [];
15
15
  idResolvers = new Map();
16
- mcpServers = new Map();
16
+ mcpServerFactories = new Map();
17
17
  entityServices = new Map();
18
18
  registerBackendModule(module) {
19
19
  if (!module.type) {
@@ -71,14 +71,14 @@ class PluginHostImpl {
71
71
  m.backend?.mount?.(ctx);
72
72
  }
73
73
  }
74
- registerMcpServer(name, server) {
75
- this.mcpServers.set(name, server);
74
+ registerMcpServer(name, factory) {
75
+ this.mcpServerFactories.set(name, factory);
76
76
  }
77
- getMcpServer(name) {
78
- return this.mcpServers.get(name) ?? null;
79
- }
80
- listMcpServers() {
81
- return Array.from(this.mcpServers.entries()).map(([name, server]) => ({ name, server }));
77
+ buildMcpServers() {
78
+ return Array.from(this.mcpServerFactories.entries()).map(([name, factory]) => ({
79
+ name,
80
+ server: factory(),
81
+ }));
82
82
  }
83
83
  setIdResolver(type, fn) {
84
84
  this.idResolvers.set(type, fn);
@@ -1 +1 @@
1
- {"version":3,"file":"host.js","sourceRoot":"","sources":["../../../../src/server/core/plugin-host/host.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"host.js","sourceRoot":"","sources":["../../../../src/server/core/plugin-host/host.ts"],"names":[],"mappings":"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"}
@@ -41,7 +41,14 @@ export interface MountContext {
41
41
  tagsService: TagsService;
42
42
  versionService: VersionService;
43
43
  referencesService: ReferencesService;
44
- registerMcpServer(name: string, server: McpServerInstance): void;
44
+ /**
45
+ * Register a *factory* that builds a fresh MCP server instance. The host
46
+ * invokes it once per agent turn (see `buildMcpServers`) so each
47
+ * `adapter.execute()` gets its own `McpServer` — sharing one instance across
48
+ * concurrent turns breaks, because MCP `Protocol.connect` throws once an
49
+ * instance already holds a transport.
50
+ */
51
+ registerMcpServer(name: string, factory: () => McpServerInstance): void;
45
52
  setIdResolver(type: string, fn: (slug: string) => number | null): void;
46
53
  /**
47
54
  * M17: register the entity's L2 service with the host so cross-cutting
@@ -103,12 +110,20 @@ export interface PluginHost {
103
110
  * no MCP server, no id resolver registered.
104
111
  */
105
112
  mountBackend(ctx: MountContext): void;
106
- /** Register an MCP server instance under a unique name (e.g. "dto-tools"). */
107
- registerMcpServer(name: string, server: McpServerInstance): void;
108
- /** Lookup a previously-registered MCP server by name (e.g. "dto-tools"). */
109
- getMcpServer(name: string): McpServerInstance | null;
110
- /** All registered MCP server names used by chat to wire the adapter. */
111
- listMcpServers(): Array<{
113
+ /**
114
+ * Register an MCP server *factory* under a unique name (e.g. "dto-tools").
115
+ * Stored as a thunk, not an instance: `buildMcpServers` calls it per turn so
116
+ * each agent run gets a fresh `McpServer` (concurrent turns must not share
117
+ * one instancesee the MountContext note).
118
+ */
119
+ registerMcpServer(name: string, factory: () => McpServerInstance): void;
120
+ /**
121
+ * Build a fresh MCP server instance from every registered factory. Called
122
+ * once per agent turn by the chat handler to wire the adapter. Each call
123
+ * produces brand-new instances, so concurrent turns never collide on a
124
+ * shared transport.
125
+ */
126
+ buildMcpServers(): Array<{
112
127
  name: string;
113
128
  server: McpServerInstance;
114
129
  }>;
@@ -0,0 +1,29 @@
1
+ -- M24 Remote Account (v0.1.27) — local cache of the remote-API identity obtained
2
+ -- via OAuth 2.0 Device Authorization Grant (RFC 8628). The remote server is the
3
+ -- identity provider; c4s stays local + single-user. This is a single-row store:
4
+ -- login is an atomic DELETE + INSERT in one transaction, logout is a DELETE.
5
+ --
6
+ -- access_token is an opaque Bearer injected into outbound calls — it is NEVER
7
+ -- logged and NEVER returned by GET /api/remote-account. account_status is an
8
+ -- enum ('active'|'deactivated') validated in application code (L1 convention —
9
+ -- no CHECK). connected_at is a local timestamp (independent of the remote-side
10
+ -- issued_at) used for "connected N days ago" in the UI.
11
+ -- Spec: db/db-m24-remote-session.md, modules/m24-remote-account.md.
12
+
13
+ CREATE TABLE remote_session (
14
+ id INTEGER PRIMARY KEY,
15
+ access_token TEXT NOT NULL,
16
+ token_id TEXT NOT NULL,
17
+ issued_at TEXT NOT NULL,
18
+ remote_account_id TEXT NOT NULL,
19
+ account_email TEXT NOT NULL,
20
+ account_status TEXT NOT NULL,
21
+ connected_at TEXT NOT NULL DEFAULT (datetime('now')),
22
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
23
+ updated_at TEXT NOT NULL DEFAULT (datetime('now'))
24
+ );
25
+
26
+ -- Safety net at the schema level plus L2 discipline (single-row store, but the
27
+ -- surrogate PK keeps the L1 convention).
28
+ CREATE UNIQUE INDEX uq_remote_session_remote_account_id
29
+ ON remote_session(remote_account_id);
@@ -19,7 +19,7 @@ export const acBackendModule = {
19
19
  mount(ctx) {
20
20
  const service = new AcService(ctx.db, ctx.tagsService, ctx.versionService, pluginHost);
21
21
  ctx.app.use(`/api${acBackendModule.pathPrefix}`, acsRouter(service, ctx.referencesService));
22
- ctx.registerMcpServer(`${acBackendModule.type}-tools`, createAcToolsServer({
22
+ ctx.registerMcpServer(`${acBackendModule.type}-tools`, () => createAcToolsServer({
23
23
  acService: service,
24
24
  referencesService: ctx.referencesService,
25
25
  ws: ctx.ws,
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../../src/server/entities/ac/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,MAAM,CAAC,MAAM,eAAe,GAAkB;IAC5C,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,sBAAsB;IAC7B,WAAW,EAAE,qBAAqB;IAClC,YAAY,EAAE,EAAE;IAChB,UAAU,EAAE,MAAM;IAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAE,IAA0B,CAAC,IAAI,IAAI,EAAE,CAAC;IAClE,UAAU,EAAE,YAAyC;IACrD,YAAY,EAAE,cAAc;IAC5B,OAAO,EAAE;QACP,KAAK,CAAC,GAAG;YACP,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;YACvF,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,eAAe,CAAC,UAAU,EAAE,EAAE,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAC5F,GAAG,CAAC,iBAAiB,CACnB,GAAG,eAAe,CAAC,IAAI,QAAQ,EAC/B,mBAAmB,CAAC;gBAClB,SAAS,EAAE,OAAO;gBAClB,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;gBACxC,EAAE,EAAE,GAAG,CAAC,EAAE;aACX,CAAC,CACH,CAAC;YACF,GAAG,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7E,GAAG,CAAC,qBAAqB,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3D,CAAC;KACF;CACF,CAAC;AAEF,UAAU,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../../src/server/entities/ac/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,MAAM,CAAC,MAAM,eAAe,GAAkB;IAC5C,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,sBAAsB;IAC7B,WAAW,EAAE,qBAAqB;IAClC,YAAY,EAAE,EAAE;IAChB,UAAU,EAAE,MAAM;IAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAE,IAA0B,CAAC,IAAI,IAAI,EAAE,CAAC;IAClE,UAAU,EAAE,YAAyC;IACrD,YAAY,EAAE,cAAc;IAC5B,OAAO,EAAE;QACP,KAAK,CAAC,GAAG;YACP,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;YACvF,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,eAAe,CAAC,UAAU,EAAE,EAAE,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAC5F,GAAG,CAAC,iBAAiB,CACnB,GAAG,eAAe,CAAC,IAAI,QAAQ,EAC/B,GAAG,EAAE,CAAC,mBAAmB,CAAC;gBACxB,SAAS,EAAE,OAAO;gBAClB,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;gBACxC,EAAE,EAAE,GAAG,CAAC,EAAE;aACX,CAAC,CACH,CAAC;YACF,GAAG,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7E,GAAG,CAAC,qBAAqB,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3D,CAAC;KACF;CACF,CAAC;AAEF,UAAU,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC"}
@@ -7,12 +7,12 @@ export const acSystemPrompt = {
7
7
  },
8
8
  mcpToolsLine: 'ac-tools: create_ac, get_ac, update_ac, delete_ac, list_acs',
9
9
  narrativeBlock: [
10
- 'Twórz AC gdy moduł lub feature ma observable behavior do sprawdzenia.',
11
- 'Konwencja tagowania: AC modułu MNN → tag "mNN"; AC encji X → tag "entity-X";',
12
- 'project-level AC → brak module/entity tagu, tylko klasyfikacyjne.',
13
- 'Jeśli AC dotyczy konkretnego endpointa/DTO/UI view, wypełnij pole verifies —',
14
- 'M19 sprawdzi referential integrity. kind="edge-case" dla warunków brzegowych.',
15
- 'Preferuj status="deprecated" nad hard delete — zachowuje historię i referencje.',
10
+ 'Create AC when a module or feature has observable behavior to verify.',
11
+ 'Tagging convention: module MNN AC → tag "mNN"; entity X AC → tag "entity-X";',
12
+ 'project-level AC → no module/entity tag, classification tags only.',
13
+ 'If an AC concerns a specific endpoint/DTO/UI view, fill the verifies field —',
14
+ 'M19 checks referential integrity. kind="edge-case" for boundary conditions.',
15
+ 'Prefer status="deprecated" over hard delete — it preserves history and references.',
16
16
  ].join(' '),
17
17
  };
18
18
  //# sourceMappingURL=system-prompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../../../src/server/entities/ac/system-prompt.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAA6B;IACtD,QAAQ,EAAE,qBAAqB;IAC/B,SAAS,EAAE;QACT,WAAW,EAAE,SAAS;QACtB,QAAQ,EAAE,wDAAwD;QAClE,KAAK,EAAE,aAAa;KACrB;IACD,YAAY,EACV,6DAA6D;IAC/D,cAAc,EAAE;QACd,uEAAuE;QACvE,8EAA8E;QAC9E,mEAAmE;QACnE,8EAA8E;QAC9E,+EAA+E;QAC/E,iFAAiF;KAClF,CAAC,IAAI,CAAC,GAAG,CAAC;CACZ,CAAC"}
1
+ {"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../../../src/server/entities/ac/system-prompt.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAA6B;IACtD,QAAQ,EAAE,qBAAqB;IAC/B,SAAS,EAAE;QACT,WAAW,EAAE,SAAS;QACtB,QAAQ,EAAE,wDAAwD;QAClE,KAAK,EAAE,aAAa;KACrB;IACD,YAAY,EACV,6DAA6D;IAC/D,cAAc,EAAE;QACd,uEAAuE;QACvE,8EAA8E;QAC9E,oEAAoE;QACpE,8EAA8E;QAC9E,6EAA6E;QAC7E,oFAAoF;KACrF,CAAC,IAAI,CAAC,GAAG,CAAC;CACZ,CAAC"}
@@ -19,7 +19,7 @@ export const databaseTableBackendModule = {
19
19
  mount(ctx) {
20
20
  const service = new DatabaseTableService(ctx.db, ctx.tagsService, ctx.versionService);
21
21
  ctx.app.use(`/api${databaseTableBackendModule.pathPrefix}`, databaseTablesRouter(service, ctx.referencesService, ctx.ws));
22
- ctx.registerMcpServer(`${databaseTableBackendModule.type}-tools`, createDatabaseToolsServer({
22
+ ctx.registerMcpServer(`${databaseTableBackendModule.type}-tools`, () => createDatabaseToolsServer({
23
23
  databaseTableService: service,
24
24
  referencesService: ctx.referencesService,
25
25
  ws: ctx.ws,
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../../src/server/entities/database-table/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAG5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAE5D,MAAM,CAAC,MAAM,0BAA0B,GAAkB;IACvD,IAAI,EAAE,gBAAgB;IACtB,KAAK,EAAE,gBAAgB;IACvB,KAAK,EAAE,gBAAgB;IACvB,WAAW,EAAE,iBAAiB;IAC9B,YAAY,EAAE,EAAE;IAChB,UAAU,EAAE,kBAAkB;IAC9B,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAE,IAAyB,CAAC,IAAI,CAAC;IACtE,UAAU,EAAE,uBAAoD;IAChE,YAAY,EAAE,yBAAyB;IACvC,OAAO,EAAE;QACP,KAAK,CAAC,GAAG;YACP,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;YACtF,GAAG,CAAC,GAAG,CAAC,GAAG,CACT,OAAO,0BAA0B,CAAC,UAAU,EAAE,EAC9C,oBAAoB,CAAC,OAAO,EAAE,GAAG,CAAC,iBAAiB,EAAE,GAAG,CAAC,EAAE,CAAC,CAC7D,CAAC;YACF,GAAG,CAAC,iBAAiB,CACnB,GAAG,0BAA0B,CAAC,IAAI,QAAQ,EAC1C,yBAAyB,CAAC;gBACxB,oBAAoB,EAAE,OAAO;gBAC7B,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;gBACxC,EAAE,EAAE,GAAG,CAAC,EAAE;aACX,CAAC,CACH,CAAC;YACF,GAAG,CAAC,aAAa,CAAC,0BAA0B,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YACxF,GAAG,CAAC,qBAAqB,CAAC,0BAA0B,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACtE,CAAC;KACF;CACF,CAAC;AAEF,UAAU,CAAC,qBAAqB,CAAC,0BAA0B,CAAC,CAAC"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../../src/server/entities/database-table/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAG5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAE5D,MAAM,CAAC,MAAM,0BAA0B,GAAkB;IACvD,IAAI,EAAE,gBAAgB;IACtB,KAAK,EAAE,gBAAgB;IACvB,KAAK,EAAE,gBAAgB;IACvB,WAAW,EAAE,iBAAiB;IAC9B,YAAY,EAAE,EAAE;IAChB,UAAU,EAAE,kBAAkB;IAC9B,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAE,IAAyB,CAAC,IAAI,CAAC;IACtE,UAAU,EAAE,uBAAoD;IAChE,YAAY,EAAE,yBAAyB;IACvC,OAAO,EAAE;QACP,KAAK,CAAC,GAAG;YACP,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;YACtF,GAAG,CAAC,GAAG,CAAC,GAAG,CACT,OAAO,0BAA0B,CAAC,UAAU,EAAE,EAC9C,oBAAoB,CAAC,OAAO,EAAE,GAAG,CAAC,iBAAiB,EAAE,GAAG,CAAC,EAAE,CAAC,CAC7D,CAAC;YACF,GAAG,CAAC,iBAAiB,CACnB,GAAG,0BAA0B,CAAC,IAAI,QAAQ,EAC1C,GAAG,EAAE,CAAC,yBAAyB,CAAC;gBAC9B,oBAAoB,EAAE,OAAO;gBAC7B,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;gBACxC,EAAE,EAAE,GAAG,CAAC,EAAE;aACX,CAAC,CACH,CAAC;YACF,GAAG,CAAC,aAAa,CAAC,0BAA0B,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YACxF,GAAG,CAAC,qBAAqB,CAAC,0BAA0B,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACtE,CAAC;KACF;CACF,CAAC;AAEF,UAAU,CAAC,qBAAqB,CAAC,0BAA0B,CAAC,CAAC"}
@@ -19,7 +19,7 @@ export const dtoBackendModule = {
19
19
  mount(ctx) {
20
20
  const service = new DtoService(ctx.db, ctx.tagsService, ctx.versionService);
21
21
  ctx.app.use(`/api${dtoBackendModule.pathPrefix}`, dtosRouter(service, ctx.referencesService));
22
- ctx.registerMcpServer(`${dtoBackendModule.type}-tools`, createDtoToolsServer({
22
+ ctx.registerMcpServer(`${dtoBackendModule.type}-tools`, () => createDtoToolsServer({
23
23
  dtoService: service,
24
24
  referencesService: ctx.referencesService,
25
25
  ws: ctx.ws,
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../../src/server/entities/dto/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,CAAC,MAAM,gBAAgB,GAAkB;IAC7C,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,WAAW,EAAE,MAAM;IACnB,YAAY,EAAE,EAAE;IAChB,UAAU,EAAE,OAAO;IACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAE,IAAyB,CAAC,IAAI,CAAC;IAC5D,UAAU,EAAE,aAA0C;IACtD,YAAY,EAAE,eAAe;IAC7B,OAAO,EAAE;QACP,KAAK,CAAC,GAAG;YACP,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;YAC5E,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,gBAAgB,CAAC,UAAU,EAAE,EAAE,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAC9F,GAAG,CAAC,iBAAiB,CACnB,GAAG,gBAAgB,CAAC,IAAI,QAAQ,EAChC,oBAAoB,CAAC;gBACnB,UAAU,EAAE,OAAO;gBACnB,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;gBACxC,EAAE,EAAE,GAAG,CAAC,EAAE;aACX,CAAC,CACH,CAAC;YACF,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9E,GAAG,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5D,CAAC;KACF;CACF,CAAC;AAEF,UAAU,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../../src/server/entities/dto/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,CAAC,MAAM,gBAAgB,GAAkB;IAC7C,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,WAAW,EAAE,MAAM;IACnB,YAAY,EAAE,EAAE;IAChB,UAAU,EAAE,OAAO;IACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAE,IAAyB,CAAC,IAAI,CAAC;IAC5D,UAAU,EAAE,aAA0C;IACtD,YAAY,EAAE,eAAe;IAC7B,OAAO,EAAE;QACP,KAAK,CAAC,GAAG;YACP,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;YAC5E,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,gBAAgB,CAAC,UAAU,EAAE,EAAE,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAC9F,GAAG,CAAC,iBAAiB,CACnB,GAAG,gBAAgB,CAAC,IAAI,QAAQ,EAChC,GAAG,EAAE,CAAC,oBAAoB,CAAC;gBACzB,UAAU,EAAE,OAAO;gBACnB,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;gBACxC,EAAE,EAAE,GAAG,CAAC,EAAE;aACX,CAAC,CACH,CAAC;YACF,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9E,GAAG,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5D,CAAC;KACF;CACF,CAAC;AAEF,UAAU,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC"}
@@ -22,7 +22,7 @@ export const endpointBackendModule = {
22
22
  mount(ctx) {
23
23
  const service = new EndpointService(ctx.db, ctx.tagsService, ctx.versionService);
24
24
  ctx.app.use(`/api${endpointBackendModule.pathPrefix}`, endpointsRouter(service, ctx.referencesService));
25
- ctx.registerMcpServer(`${endpointBackendModule.type}-tools`, createEndpointToolsServer({
25
+ ctx.registerMcpServer(`${endpointBackendModule.type}-tools`, () => createEndpointToolsServer({
26
26
  endpointService: service,
27
27
  referencesService: ctx.referencesService,
28
28
  ws: ctx.ws,
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../../src/server/entities/endpoint/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAG5D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAE5D,MAAM,CAAC,MAAM,qBAAqB,GAAkB;IAClD,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,UAAU;IACjB,WAAW,EAAE,WAAW;IACxB,YAAY,EAAE,EAAE;IAChB,UAAU,EAAE,YAAY;IACxB,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;QACjB,MAAM,CAAC,GAAG,IAA0C,CAAC;QACrD,OAAO,YAAY,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,UAAU,EAAE,kBAA+C;IAC3D,YAAY,EAAE,oBAAoB;IAClC,OAAO,EAAE;QACP,KAAK,CAAC,GAAG;YACP,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;YACjF,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,qBAAqB,CAAC,UAAU,EAAE,EAAE,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACxG,GAAG,CAAC,iBAAiB,CACnB,GAAG,qBAAqB,CAAC,IAAI,QAAQ,EACrC,yBAAyB,CAAC;gBACxB,eAAe,EAAE,OAAO;gBACxB,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;gBACxC,EAAE,EAAE,GAAG,CAAC,EAAE;aACX,CAAC,CACH,CAAC;YACF,GAAG,CAAC,aAAa,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YACnF,GAAG,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACjE,CAAC;KACF;CACF,CAAC;AAEF,UAAU,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,CAAC"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../../src/server/entities/endpoint/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAG5D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAE5D,MAAM,CAAC,MAAM,qBAAqB,GAAkB;IAClD,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,UAAU;IACjB,WAAW,EAAE,WAAW;IACxB,YAAY,EAAE,EAAE;IAChB,UAAU,EAAE,YAAY;IACxB,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;QACjB,MAAM,CAAC,GAAG,IAA0C,CAAC;QACrD,OAAO,YAAY,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,UAAU,EAAE,kBAA+C;IAC3D,YAAY,EAAE,oBAAoB;IAClC,OAAO,EAAE;QACP,KAAK,CAAC,GAAG;YACP,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;YACjF,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,qBAAqB,CAAC,UAAU,EAAE,EAAE,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACxG,GAAG,CAAC,iBAAiB,CACnB,GAAG,qBAAqB,CAAC,IAAI,QAAQ,EACrC,GAAG,EAAE,CAAC,yBAAyB,CAAC;gBAC9B,eAAe,EAAE,OAAO;gBACxB,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;gBACxC,EAAE,EAAE,GAAG,CAAC,EAAE;aACX,CAAC,CACH,CAAC;YACF,GAAG,CAAC,aAAa,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YACnF,GAAG,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACjE,CAAC;KACF;CACF,CAAC;AAEF,UAAU,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,CAAC"}
@@ -19,7 +19,7 @@ export const uiViewBackendModule = {
19
19
  mount(ctx) {
20
20
  const service = new UiViewService(ctx.db, ctx.tagsService, ctx.versionService);
21
21
  ctx.app.use(`/api${uiViewBackendModule.pathPrefix}`, uiViewsRouter(service, ctx.referencesService, ctx.ws));
22
- ctx.registerMcpServer(`${uiViewBackendModule.type}-tools`, createUiViewToolsServer({
22
+ ctx.registerMcpServer(`${uiViewBackendModule.type}-tools`, () => createUiViewToolsServer({
23
23
  uiViewService: service,
24
24
  referencesService: ctx.referencesService,
25
25
  ws: ctx.ws,
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../../src/server/entities/ui-view/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAG5D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,MAAM,CAAC,MAAM,mBAAmB,GAAkB;IAChD,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,WAAW,EAAE,UAAU;IACvB,YAAY,EAAE,EAAE;IAChB,UAAU,EAAE,WAAW;IACvB,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAE,IAAyB,CAAC,IAAI,CAAC;IAC/D,UAAU,EAAE,gBAA6C;IACzD,YAAY,EAAE,kBAAkB;IAChC,OAAO,EAAE;QACP,KAAK,CAAC,GAAG;YACP,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;YAC/E,GAAG,CAAC,GAAG,CAAC,GAAG,CACT,OAAO,mBAAmB,CAAC,UAAU,EAAE,EACvC,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,iBAAiB,EAAE,GAAG,CAAC,EAAE,CAAC,CACtD,CAAC;YACF,GAAG,CAAC,iBAAiB,CACnB,GAAG,mBAAmB,CAAC,IAAI,QAAQ,EACnC,uBAAuB,CAAC;gBACtB,aAAa,EAAE,OAAO;gBACtB,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;gBACxC,EAAE,EAAE,GAAG,CAAC,EAAE;aACX,CAAC,CACH,CAAC;YACF,GAAG,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YACjF,GAAG,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC/D,CAAC;KACF;CACF,CAAC;AAEF,UAAU,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,CAAC"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../../src/server/entities/ui-view/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAG5D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,MAAM,CAAC,MAAM,mBAAmB,GAAkB;IAChD,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,WAAW,EAAE,UAAU;IACvB,YAAY,EAAE,EAAE;IAChB,UAAU,EAAE,WAAW;IACvB,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAE,IAAyB,CAAC,IAAI,CAAC;IAC/D,UAAU,EAAE,gBAA6C;IACzD,YAAY,EAAE,kBAAkB;IAChC,OAAO,EAAE;QACP,KAAK,CAAC,GAAG;YACP,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;YAC/E,GAAG,CAAC,GAAG,CAAC,GAAG,CACT,OAAO,mBAAmB,CAAC,UAAU,EAAE,EACvC,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,iBAAiB,EAAE,GAAG,CAAC,EAAE,CAAC,CACtD,CAAC;YACF,GAAG,CAAC,iBAAiB,CACnB,GAAG,mBAAmB,CAAC,IAAI,QAAQ,EACnC,GAAG,EAAE,CAAC,uBAAuB,CAAC;gBAC5B,aAAa,EAAE,OAAO;gBACtB,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;gBACxC,EAAE,EAAE,GAAG,CAAC,EAAE;aACX,CAAC,CACH,CAAC;YACF,GAAG,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YACjF,GAAG,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC/D,CAAC;KACF;CACF,CAAC;AAEF,UAAU,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,CAAC"}
@@ -1,2 +1,2 @@
1
1
  export declare const BRIEF_IMPLEMENTER_FRONTMATTER = "---\nname: c4s-brief-implementer\ndescription: Implement features described in claude4spec briefs (markdown files in .claude4spec/briefs/). Briefs are self-contained \u2014 they include all context needed for implementation (entity snapshots, section diffs, narrative). After implementation, if you discover drift between the brief and reality (missing details, incorrect assumptions, edge cases not covered), generate a patch file in .claude4spec/patches/ as feedback for the specification author. Use when implementing changes in a code repository that has a .claude4spec/briefs/ directory.\n---\n";
2
- export declare const BRIEF_IMPLEMENTER_BODY = "# c4s-brief-implementer\n\nThis skill describes how to implement a release brief in **your code repository**\n(not the spec repo). A brief is a self-contained markdown file under\n`.claude4spec/briefs/` that captures everything you need to ship the change:\nentity snapshots, section diffs, narrative, acceptance criteria.\n\n**This skill does NOT assume the `c4s` CLI is installed.** Briefs are designed\nto be self-contained \u2014 you do not need to read the main specification or query\nthe entity database. If the brief references something you cannot find in its\nbody, treat that as drift and file a patch (step 4 below).\n\n## Workflow\n\n### 1. Discover\n\n```sh\nls .claude4spec/briefs/ # list available briefs\ncat .claude4spec/briefs/<slug>.md\n```\n\nIf `.claude4spec/` is not in your current directory, walk up the directory tree\nuntil you find it (similar to how git finds `.git/`).\n\n### 2. Read the brief as self-contained input\n\nEvery brief has YAML frontmatter:\n\n```yaml\n---\ntype: brief\nfrom_release: v0.1.16\nto_release: v0.1.17\ngenerator_version: brief-author@0.1\nimplemented: false\n---\n```\n\nThe body contains everything you need \u2014 entity snapshots, section diffs, the\nnarrative of what changes, and acceptance criteria. **Do not read the main\nspecification.** If the brief omits something, that is drift (see step 4).\n\n### 3. Implement\n\nStandard code flow in your target repository: read existing code, plan, edit,\ntest. Stay focused on what the brief specifies.\n\n### 4. Feedback loop (patches)\n\n**Optional \u2014 ask the spec agent first.** When the brief is unclear, you can \u2014\n*before* guessing or writing a speculative patch \u2014 ask the specification agent\nsynchronously and get an answer back in the same terminal:\n\n```bash\nc4s ask \"Brief nie precyzuje X \u2014 czy chodzi o A czy B?\" --ct brief --brief <brief-slug>.md\n```\n\nContinue the same thread with `c4s ask \"...\" --thread <threadId>` (the\n`threadId` is printed with the answer). This escalation path is **optional**:\nit requires `c4s` installed *and* a running `npx claude4spec` server. When\neither is unavailable, skip it \u2014 the async patch loop below still works, and\nthe core workflow never assumes `c4s` is present.\n\nWhen you discover that the brief diverges from reality \u2014 a missing detail, an\nincorrect assumption, an edge case not covered, or anything else the\nspec-author should know \u2014 write a patch file:\n\n```sh\nmkdir -p .claude4spec/patches\n```\n\nCreate `.claude4spec/patches/<brief-slug>-<short-desc>.md` with this format:\n\n```markdown\n---\ntype: patch\nbrief: v0-1-16-to-v0-1-17.md # path relative to briefs/\npatch_kind: drift # drift | missing | incorrect | clarification\ncreated_at: 2026-05-11T17:32:00Z\ncreated_by: claude-code # or \"cursor\", \"aider\", ...\n---\n\n# Patch \u2014 short title\n\n## What I found\n\n\u2026description of the drift / missing detail / incorrect assumption\u2026\n\n## Suggestion\n\n\u2026what the spec-author should consider in a follow-up brief or entity edits\u2026\n```\n\nPatch-kind values:\n\n- `drift` \u2014 the brief described behavior X, but the codebase already does Y.\n- `missing` \u2014 the brief is silent on a detail you had to decide yourself.\n- `incorrect` \u2014 the brief is factually wrong about existing code.\n- `clarification` \u2014 the brief is ambiguous; you guessed but it should be made\n explicit for next time.\n\nThe `.claude4spec/patches/` directory is created **lazily** \u2014 only when you\nfile your first patch. The claude4spec server does NOT create it.\n\n### 5. Mark brief as implemented\n\nWhen the implementation is genuinely finished \u2014 code committed, tests green,\nmerged to main / accepted by the user \u2014 flip the brief's frontmatter to\n`implemented: true`:\n\n```bash\n# Option A \u2014 Edit tool: change the line `implemented: false` \u2192 `implemented: true`.\n# Option B \u2014 yq (idempotent; adds the field to legacy briefs that never had it):\nyq -i '.implemented = true' .claude4spec/briefs/<brief-slug>.md\n```\n\n`implemented: true` is a **declaration**, not a computed fact derived from git.\nA revert on main does NOT roll the flag back. Set it ONLY when implementation\nis realistically done \u2014 never proactively or \"just in case\".\n\n### 6. Hand-off\n\nThe spec-author reads patches manually (`ls .claude4spec/patches/`, `cat`)\nand folds them into the next brief or entity edits. There is no UI listing in\nthis release \u2014 patches are raw markdown.\n\n## Notes\n\nThis file is **fully managed** by claude4spec \u2014 it is overwritten on every\nserver start when its rendered content changes. Do not edit it by hand.\n";
2
+ export declare const BRIEF_IMPLEMENTER_BODY = "# c4s-brief-implementer\n\nThis skill describes how to implement a release brief in **your code repository**\n(not the spec repo). A brief is a self-contained markdown file under\n`.claude4spec/briefs/` that captures everything you need to ship the change:\nentity snapshots, section diffs, narrative, acceptance criteria.\n\n**This skill does NOT assume the `c4s` CLI is installed.** Briefs are designed\nto be self-contained \u2014 you do not need to read the main specification or query\nthe entity database. If the brief references something you cannot find in its\nbody, treat that as drift and file a patch (step 4 below).\n\n## Workflow\n\n### 1. Discover\n\n```sh\nls .claude4spec/briefs/ # list available briefs\ncat .claude4spec/briefs/<slug>.md\n```\n\nIf `.claude4spec/` is not in your current directory, walk up the directory tree\nuntil you find it (similar to how git finds `.git/`).\n\n### 2. Read the brief as self-contained input\n\nEvery brief has YAML frontmatter:\n\n```yaml\n---\ntype: brief\nfrom_release: v0.1.16\nto_release: v0.1.17\ngenerator_version: brief-author@0.1\nimplemented: false\n---\n```\n\nThe body contains everything you need \u2014 entity snapshots, section diffs, the\nnarrative of what changes, and acceptance criteria. **Do not read the main\nspecification.**\n\nIf the brief is unclear \u2014 a missing detail, an ambiguous wording, a decision\nyou'd otherwise have to guess \u2014 you have two paths:\n\n**Synchronous (preferred when available).** Ask the specification agent in the\nsame terminal and continue once you have an answer:\n\n```bash\nc4s ask \"Brief nie precyzuje X \u2014 czy chodzi o A czy B?\" --ct brief --brief <brief-slug>.md\n```\n\nContinue the same thread with `c4s ask \"...\" --thread <threadId>` (the\n`threadId` is printed with the answer). This path requires `c4s` installed\n*and* a running `npx claude4spec` server. When either is unavailable, skip it.\n\n**Asynchronous (always available).** If you cannot ask synchronously, proceed\nwith your best judgement and file a patch afterwards (step 4) so the\nspec-author can fold the clarification into the next brief.\n\n### 3. Implement\n\nStandard code flow in your target repository: read existing code, plan, edit,\ntest. Stay focused on what the brief specifies.\n\n### 4. Feedback loop (patches)\n\nWhen you discover that the brief diverges from reality \u2014 a missing detail, an\nincorrect assumption, an edge case not covered, or anything else the\nspec-author should know \u2014 write a patch file:\n\n```sh\nmkdir -p .claude4spec/patches\n```\n\nCreate `.claude4spec/patches/<brief-slug>-<short-desc>.md` with this format:\n\n```markdown\n---\ntype: patch\nbrief: v0-1-16-to-v0-1-17.md # path relative to briefs/\npatch_kind: drift # drift | missing | incorrect | clarification\ncreated_at: 2026-05-11T17:32:00Z\ncreated_by: claude-code # or \"cursor\", \"aider\", ...\n---\n\n# Patch \u2014 short title\n\n## What I found\n\n\u2026description of the drift / missing detail / incorrect assumption\u2026\n\n## Suggestion\n\n\u2026what the spec-author should consider in a follow-up brief or entity edits\u2026\n```\n\nPatch-kind values:\n\n- `drift` \u2014 the brief described behavior X, but the codebase already does Y.\n- `missing` \u2014 the brief is silent on a detail you had to decide yourself.\n- `incorrect` \u2014 the brief is factually wrong about existing code.\n- `clarification` \u2014 the brief is ambiguous; you guessed but it should be made\n explicit for next time.\n\nThe `.claude4spec/patches/` directory is created **lazily** \u2014 only when you\nfile your first patch. The claude4spec server does NOT create it.\n\n### 5. Mark brief as implemented\n\nWhen the implementation is genuinely finished \u2014 code committed, tests green,\nmerged to main / accepted by the user \u2014 flip the brief's frontmatter to\n`implemented: true`:\n\n```bash\n# Option A \u2014 Edit tool: change the line `implemented: false` \u2192 `implemented: true`.\n# Option B \u2014 yq (idempotent; adds the field to legacy briefs that never had it):\nyq -i '.implemented = true' .claude4spec/briefs/<brief-slug>.md\n```\n\n`implemented: true` is a **declaration**, not a computed fact derived from git.\nA revert on main does NOT roll the flag back. Set it ONLY when implementation\nis realistically done \u2014 never proactively or \"just in case\".\n\n### 6. Hand-off\n\nThe spec-author reads patches manually (`ls .claude4spec/patches/`, `cat`)\nand folds them into the next brief or entity edits. There is no UI listing in\nthis release \u2014 patches are raw markdown.\n\n## Notes\n\nThis file is **fully managed** by claude4spec \u2014 it is overwritten on every\nserver start when its rendered content changes. Do not edit it by hand.\n";
@@ -43,28 +43,32 @@ implemented: false
43
43
 
44
44
  The body contains everything you need — entity snapshots, section diffs, the
45
45
  narrative of what changes, and acceptance criteria. **Do not read the main
46
- specification.** If the brief omits something, that is drift (see step 4).
46
+ specification.**
47
47
 
48
- ### 3. Implement
48
+ If the brief is unclear — a missing detail, an ambiguous wording, a decision
49
+ you'd otherwise have to guess — you have two paths:
49
50
 
50
- Standard code flow in your target repository: read existing code, plan, edit,
51
- test. Stay focused on what the brief specifies.
52
-
53
- ### 4. Feedback loop (patches)
54
-
55
- **Optional — ask the spec agent first.** When the brief is unclear, you can —
56
- *before* guessing or writing a speculative patch — ask the specification agent
57
- synchronously and get an answer back in the same terminal:
51
+ **Synchronous (preferred when available).** Ask the specification agent in the
52
+ same terminal and continue once you have an answer:
58
53
 
59
54
  \`\`\`bash
60
55
  c4s ask "Brief nie precyzuje X — czy chodzi o A czy B?" --ct brief --brief <brief-slug>.md
61
56
  \`\`\`
62
57
 
63
58
  Continue the same thread with \`c4s ask "..." --thread <threadId>\` (the
64
- \`threadId\` is printed with the answer). This escalation path is **optional**:
65
- it requires \`c4s\` installed *and* a running \`npx claude4spec\` server. When
66
- either is unavailable, skip it — the async patch loop below still works, and
67
- the core workflow never assumes \`c4s\` is present.
59
+ \`threadId\` is printed with the answer). This path requires \`c4s\` installed
60
+ *and* a running \`npx claude4spec\` server. When either is unavailable, skip it.
61
+
62
+ **Asynchronous (always available).** If you cannot ask synchronously, proceed
63
+ with your best judgement and file a patch afterwards (step 4) so the
64
+ spec-author can fold the clarification into the next brief.
65
+
66
+ ### 3. Implement
67
+
68
+ Standard code flow in your target repository: read existing code, plan, edit,
69
+ test. Stay focused on what the brief specifies.
70
+
71
+ ### 4. Feedback loop (patches)
68
72
 
69
73
  When you discover that the brief diverges from reality — a missing detail, an
70
74
  incorrect assumption, an edge case not covered, or anything else the
@@ -1 +1 @@
1
- {"version":3,"file":"brief-implementer-template.js","sourceRoot":"","sources":["../../../src/server/external-skills/brief-implementer-template.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,6BAA6B,GAAG;;;;CAI5C,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkIrC,CAAC"}
1
+ {"version":3,"file":"brief-implementer-template.js","sourceRoot":"","sources":["../../../src/server/external-skills/brief-implementer-template.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,6BAA6B,GAAG;;;;CAI5C,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsIrC,CAAC"}
@@ -22,6 +22,9 @@ import { BriefService } from './services/brief.js';
22
22
  import { briefsRouter } from './routes/briefs.js';
23
23
  import { PatchService } from './services/patch.js';
24
24
  import { patchesRouter } from './routes/patches.js';
25
+ import { RemoteAuthService } from './services/remote-auth.js';
26
+ import { RemoteHttpClient, assertRemoteApiReachable } from './services/remote-http-client.js';
27
+ import { remoteAccountRouter } from './routes/remote-account.js';
25
28
  import { PagesFrontmatterIndexer } from './services/pages-frontmatter-indexer.js';
26
29
  import { SectionIndexerService } from './services/section-indexer.js';
27
30
  import { TodosIndexerService } from './services/todos-indexer.js';
@@ -70,7 +73,7 @@ async function listenOrExit(server, port) {
70
73
  }
71
74
  catch (err) {
72
75
  if (err.code === 'EADDRINUSE') {
73
- console.error(`port ${port} zajętyzatrzymaj drugą instancję lub zmień port w config.json / przekaż --port`);
76
+ console.error(`port ${port} is in use stop the other instance or change the port in config.json / pass --port`);
74
77
  process.exit(1);
75
78
  }
76
79
  throw err;
@@ -161,6 +164,11 @@ export async function startServer(opts) {
161
164
  if (patchesDir === pagesDir || patchesDir === briefsDir) {
162
165
  console.warn(`[config] patchesDir collides with pagesDir/briefsDir ("${patchesDir}") — patch files will be visible in multiple indexers`);
163
166
  }
167
+ // M24: an explicit config.remoteApiUrl override must be a valid, reachable
168
+ // host — hard error at boot, no fallback to the production constant.
169
+ if (bootConfig.remoteApiUrl != null && bootConfig.remoteApiUrl.trim() !== '') {
170
+ await assertRemoteApiReachable(bootConfig.remoteApiUrl);
171
+ }
164
172
  pluginHost.consolidate(bootConfig.entities);
165
173
  const hostState = pluginHost.state();
166
174
  console.log(`[plugin-host] active: [${hostState.active.join(', ') || '∅'}]` +
@@ -190,6 +198,10 @@ export async function startServer(opts) {
190
198
  // M17: wire snapshot capture deps. After this, every entity service
191
199
  // mutation captures a deterministic snapshot via host.snapshot(...).
192
200
  versionService.configureSnapshot(rawReader, pluginHost);
201
+ // M24: remote-account identity (device flow + local session). Single HTTP
202
+ // client per process; base URL from config.remoteApiUrl (or the prod constant).
203
+ const remoteHttpClient = new RemoteHttpClient(bootConfig.remoteApiUrl);
204
+ const remoteAuthService = new RemoteAuthService(db.handle, remoteHttpClient);
193
205
  const chatService = new ChatService(db.handle);
194
206
  // Orphan cleanup: rowsy chat_message.status='streaming' pozostale po crashu poprzedniego
195
207
  // procesu (SIGKILL/OOM) — brak aktywnego adaptera po starcie, flipujemy wszystkie na 'complete'.
@@ -326,7 +338,9 @@ export async function startServer(opts) {
326
338
  registerEntityService: (type, service) => pluginHost.registerEntityService(type, service),
327
339
  });
328
340
  // Cross-cutting MCP server — owned by the host, not a plugin (M13).
329
- const referenceToolsServer = createReferenceToolsServer({
341
+ // Registered as a factory: a fresh instance is built per agent turn so
342
+ // concurrent turns never share one MCP transport.
343
+ pluginHost.registerMcpServer('reference-tools', () => createReferenceToolsServer({
330
344
  tagsService,
331
345
  referencesService,
332
346
  pagesService: pages,
@@ -334,14 +348,12 @@ export async function startServer(opts) {
334
348
  ws: gateway,
335
349
  db: db.handle,
336
350
  cwd,
337
- });
338
- pluginHost.registerMcpServer('reference-tools', referenceToolsServer);
351
+ }));
339
352
  // M17: ReleaseService + cross-cutting `release-tools` MCP. Like
340
353
  // reference-tools, owned by the host (not a plugin) — release semantics
341
354
  // are dual-track (entities + pages), neither side is a plugin owner.
342
355
  const releaseService = new ReleaseService(db.handle, pluginHost, versionService, pageVersions, pageSerializer, rawReader, tagsService, pages, watcher);
343
- const releaseToolsServer = createReleaseToolsServer({ releaseService, ws: gateway });
344
- pluginHost.registerMcpServer('release-tools', releaseToolsServer);
356
+ pluginHost.registerMcpServer('release-tools', () => createReleaseToolsServer({ releaseService, ws: gateway }));
345
357
  // M21: BriefService — top-level (nie plugin), wzorzec analogiczny do
346
358
  // PlanService. Mountowany router /api/briefs poniżej.
347
359
  const briefService = new BriefService({
@@ -395,6 +407,7 @@ export async function startServer(opts) {
395
407
  app.use('/api/releases', releasesRouter(releaseService, gateway));
396
408
  app.use('/api/briefs', briefsRouter(briefService, pageVersions));
397
409
  app.use('/api/patches', patchesRouter(patchService));
410
+ app.use('/api/remote-account', remoteAccountRouter(remoteAuthService));
398
411
  app.use('/api/chat', chatRouter(agentDeps));
399
412
  app.use(errorHandler);
400
413
  watcher.onChange((relPath, kind) => {