@inharness-ai/claude4spec 1.0.18 → 1.0.20

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 (144) hide show
  1. package/.claude/skills/c4s-brief-implementer/SKILL.md +11 -0
  2. package/.claude/skills/c4s-spec-reader/SKILL.md +14 -0
  3. package/CHANGELOG.md +23 -0
  4. package/dist/bin/c4s/commands/find-references.js +2 -1
  5. package/dist/bin/c4s/commands/find-references.js.map +1 -1
  6. package/dist/bin/c4s/commands/tagged-list-mixed.js +2 -0
  7. package/dist/bin/c4s/commands/tagged-list-mixed.js.map +1 -1
  8. package/dist/client/assets/{arc-BoIjQ4Rl.js → arc-qrIe4IVl.js} +1 -1
  9. package/dist/client/assets/{architectureDiagram-3BPJPVTR-BxBVRaEg.js → architectureDiagram-3BPJPVTR-CF6sgG8n.js} +1 -1
  10. package/dist/client/assets/{blockDiagram-GPEHLZMM-CUZNbllz.js → blockDiagram-GPEHLZMM-Cf8Tx0VN.js} +1 -1
  11. package/dist/client/assets/{c4Diagram-AAUBKEIU-CvuTKwEz.js → c4Diagram-AAUBKEIU-BDkuMEyf.js} +1 -1
  12. package/dist/client/assets/channel-CTF_J4I4.js +1 -0
  13. package/dist/client/assets/{chunk-2J33WTMH-CEO4c2pf.js → chunk-2J33WTMH-ChycTonk.js} +1 -1
  14. package/dist/client/assets/{chunk-4BX2VUAB-Bu8DCHu0.js → chunk-4BX2VUAB-BpUgWjxx.js} +1 -1
  15. package/dist/client/assets/{chunk-55IACEB6-DIN8FXXB.js → chunk-55IACEB6-CeHg_yjT.js} +1 -1
  16. package/dist/client/assets/{chunk-727SXJPM-DArSpufF.js → chunk-727SXJPM-BpxYq7ab.js} +1 -1
  17. package/dist/client/assets/{chunk-AQP2D5EJ-DvyQ3boK.js → chunk-AQP2D5EJ-bghkOtr6.js} +1 -1
  18. package/dist/client/assets/{chunk-FMBD7UC4-DzYhHpnC.js → chunk-FMBD7UC4-4sXokGgd.js} +1 -1
  19. package/dist/client/assets/{chunk-ND2GUHAM-DocECmh1.js → chunk-ND2GUHAM-DYQOCE5T.js} +1 -1
  20. package/dist/client/assets/{chunk-QZHKN3VN-cUsgOLYm.js → chunk-QZHKN3VN-NkVuDlFD.js} +1 -1
  21. package/dist/client/assets/classDiagram-4FO5ZUOK-Dt9RLC8r.js +1 -0
  22. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-Dt9RLC8r.js +1 -0
  23. package/dist/client/assets/{cose-bilkent-S5V4N54A-BXlU_dXh.js → cose-bilkent-S5V4N54A-1l4P4WRI.js} +1 -1
  24. package/dist/client/assets/{dagre-BM42HDAG-CmrHrBPK.js → dagre-BM42HDAG-CSQie-gR.js} +1 -1
  25. package/dist/client/assets/{diagram-2AECGRRQ-CV4Tc8wQ.js → diagram-2AECGRRQ-DME9ULoN.js} +1 -1
  26. package/dist/client/assets/{diagram-5GNKFQAL-BiBsPCGc.js → diagram-5GNKFQAL-Dn1Rw5k5.js} +1 -1
  27. package/dist/client/assets/{diagram-KO2AKTUF-DA09S_op.js → diagram-KO2AKTUF-Duh_PNWR.js} +1 -1
  28. package/dist/client/assets/{diagram-LMA3HP47-DBaod99I.js → diagram-LMA3HP47-B7Q5pV60.js} +1 -1
  29. package/dist/client/assets/{diagram-OG6HWLK6-ClJXH4o0.js → diagram-OG6HWLK6-C0KL_RDd.js} +1 -1
  30. package/dist/client/assets/{erDiagram-TEJ5UH35-9ic-AAly.js → erDiagram-TEJ5UH35-D5elfwSC.js} +1 -1
  31. package/dist/client/assets/{flowDiagram-I6XJVG4X-8UWNEpWY.js → flowDiagram-I6XJVG4X-BHmjX-WI.js} +1 -1
  32. package/dist/client/assets/{ganttDiagram-6RSMTGT7-ZMUkzsKr.js → ganttDiagram-6RSMTGT7-KvoGFbS2.js} +1 -1
  33. package/dist/client/assets/{gitGraphDiagram-PVQCEYII-5MgsfBQ-.js → gitGraphDiagram-PVQCEYII-DsZL8BfK.js} +1 -1
  34. package/dist/client/assets/{index-B3XLrPs9.js → index-ClaVbrEF.js} +1 -1
  35. package/dist/client/assets/{index-BSPNo0Xa.js → index-DnLELaLA.js} +219 -216
  36. package/dist/client/assets/index-oh_mP_1v.css +1 -0
  37. package/dist/client/assets/{index-D7DH-SO5.js → index-zzILqHQN.js} +1 -1
  38. package/dist/client/assets/{infoDiagram-5YYISTIA-DnoyGZzF.js → infoDiagram-5YYISTIA-DoQ6iSpJ.js} +1 -1
  39. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-DXzuF94t.js → ishikawaDiagram-YF4QCWOH-akftyN0J.js} +1 -1
  40. package/dist/client/assets/{journeyDiagram-JHISSGLW-AEPglDXi.js → journeyDiagram-JHISSGLW-PPex4PiV.js} +1 -1
  41. package/dist/client/assets/{kanban-definition-UN3LZRKU-D0-kFv2f.js → kanban-definition-UN3LZRKU-D114i3s1.js} +1 -1
  42. package/dist/client/assets/{linear-CZwFXsxu.js → linear-BuwQPJom.js} +1 -1
  43. package/dist/client/assets/{mermaid.core-BikmxM36.js → mermaid.core-CMX3GAvM.js} +4 -4
  44. package/dist/client/assets/{mindmap-definition-RKZ34NQL-C95lTdDB.js → mindmap-definition-RKZ34NQL-ClBxWJju.js} +1 -1
  45. package/dist/client/assets/{pieDiagram-4H26LBE5-CMeXZFX8.js → pieDiagram-4H26LBE5-hj5zVPj5.js} +1 -1
  46. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-D1dG1F2s.js → quadrantDiagram-W4KKPZXB-CRbR0G7M.js} +1 -1
  47. package/dist/client/assets/{requirementDiagram-4Y6WPE33-RPNqJRNK.js → requirementDiagram-4Y6WPE33-Dto4B70I.js} +1 -1
  48. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-DQ4EB8Xb.js → sankeyDiagram-5OEKKPKP-DyYP8rwY.js} +1 -1
  49. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-Dn-VJOlP.js → sequenceDiagram-3UESZ5HK-C-mrSLrJ.js} +1 -1
  50. package/dist/client/assets/{stateDiagram-AJRCARHV-CCpprZJO.js → stateDiagram-AJRCARHV-IoDlhAe6.js} +1 -1
  51. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-BblFLijq.js +1 -0
  52. package/dist/client/assets/{timeline-definition-PNZ67QCA-h0cUr7kp.js → timeline-definition-PNZ67QCA-DEXg3TEw.js} +1 -1
  53. package/dist/client/assets/{vennDiagram-CIIHVFJN-BTZzKsPH.js → vennDiagram-CIIHVFJN-CNu7LaT1.js} +1 -1
  54. package/dist/client/assets/{wardley-L42UT6IY-D1eOaFAH.js → wardley-L42UT6IY-0hGvREmD.js} +1 -1
  55. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-wsnKkjjR.js → wardleyDiagram-YWT4CUSO-CVLz-xFz.js} +1 -1
  56. package/dist/client/assets/{xychartDiagram-2RQKCTM6-BCebuOGO.js → xychartDiagram-2RQKCTM6-CFymKAcX.js} +1 -1
  57. package/dist/client/index.html +2 -2
  58. package/dist/server/config.js +11 -5
  59. package/dist/server/config.js.map +1 -1
  60. package/dist/server/db/migrations/040_diagram.sql +17 -0
  61. package/dist/server/domain/raw-entity-reader.d.ts +1 -1
  62. package/dist/server/domain/raw-entity-reader.js +5 -1
  63. package/dist/server/domain/raw-entity-reader.js.map +1 -1
  64. package/dist/server/entities/diagram/mcp-server.d.ts +10 -0
  65. package/dist/server/entities/diagram/mcp-server.js +141 -0
  66. package/dist/server/entities/diagram/mcp-server.js.map +1 -0
  67. package/dist/server/entities/diagram/plugin.d.ts +3 -0
  68. package/dist/server/entities/diagram/plugin.js +41 -0
  69. package/dist/server/entities/diagram/plugin.js.map +1 -0
  70. package/dist/server/entities/diagram/routes.d.ts +5 -0
  71. package/dist/server/entities/diagram/routes.js +83 -0
  72. package/dist/server/entities/diagram/routes.js.map +1 -0
  73. package/dist/server/entities/diagram/serializer.d.ts +11 -0
  74. package/dist/server/entities/diagram/serializer.js +147 -0
  75. package/dist/server/entities/diagram/serializer.js.map +1 -0
  76. package/dist/server/entities/diagram/services.d.ts +40 -0
  77. package/dist/server/entities/diagram/services.js +202 -0
  78. package/dist/server/entities/diagram/services.js.map +1 -0
  79. package/dist/server/entities/diagram/system-prompt.d.ts +2 -0
  80. package/dist/server/entities/diagram/system-prompt.js +15 -0
  81. package/dist/server/entities/diagram/system-prompt.js.map +1 -0
  82. package/dist/server/entities/diagram/validate.d.ts +9 -0
  83. package/dist/server/entities/diagram/validate.js +35 -0
  84. package/dist/server/entities/diagram/validate.js.map +1 -0
  85. package/dist/server/external-skills/brief-implementer-template.d.ts +1 -1
  86. package/dist/server/external-skills/brief-implementer-template.js +11 -0
  87. package/dist/server/external-skills/brief-implementer-template.js.map +1 -1
  88. package/dist/server/external-skills/spec-reader-template.d.ts +1 -1
  89. package/dist/server/external-skills/spec-reader-template.js +14 -0
  90. package/dist/server/external-skills/spec-reader-template.js.map +1 -1
  91. package/dist/server/fs/watcher.js +4 -2
  92. package/dist/server/fs/watcher.js.map +1 -1
  93. package/dist/server/mcp/c4s-reader.js +2 -0
  94. package/dist/server/mcp/c4s-reader.js.map +1 -1
  95. package/dist/server/routes/agent-turn.js +4 -1
  96. package/dist/server/routes/agent-turn.js.map +1 -1
  97. package/dist/server/serialization/registerAll.js +2 -0
  98. package/dist/server/serialization/registerAll.js.map +1 -1
  99. package/dist/server/serialization/writer.d.ts +2 -1
  100. package/dist/server/services/chat-context.d.ts +7 -0
  101. package/dist/server/services/chat-context.js +104 -15
  102. package/dist/server/services/chat-context.js.map +1 -1
  103. package/dist/server/services/entity-indexer.js +4 -0
  104. package/dist/server/services/entity-indexer.js.map +1 -1
  105. package/dist/server/services/entity-store.js +9 -1
  106. package/dist/server/services/entity-store.js.map +1 -1
  107. package/dist/server/services/entity-writer.d.ts +2 -0
  108. package/dist/server/services/entity-writer.js +12 -0
  109. package/dist/server/services/entity-writer.js.map +1 -1
  110. package/dist/server/services/pages.js +5 -4
  111. package/dist/server/services/pages.js.map +1 -1
  112. package/dist/server/services/references.js +10 -0
  113. package/dist/server/services/references.js.map +1 -1
  114. package/dist/server/services/remote-http-client.d.ts +0 -8
  115. package/dist/server/services/remote-http-client.js +0 -16
  116. package/dist/server/services/remote-http-client.js.map +1 -1
  117. package/dist/server/workspace/project-context.js +14 -7
  118. package/dist/server/workspace/project-context.js.map +1 -1
  119. package/dist/shared/code-ranges.d.ts +13 -0
  120. package/dist/shared/code-ranges.js +20 -0
  121. package/dist/shared/code-ranges.js.map +1 -1
  122. package/dist/shared/entities.d.ts +43 -1
  123. package/dist/shared/entities.js.map +1 -1
  124. package/dist/shared/jsx-passthrough.d.ts +44 -0
  125. package/dist/shared/jsx-passthrough.js +140 -0
  126. package/dist/shared/jsx-passthrough.js.map +1 -0
  127. package/dist/shared/page-files.d.ts +13 -0
  128. package/dist/shared/page-files.js +22 -0
  129. package/dist/shared/page-files.js.map +1 -0
  130. package/dist/shared/raw-jsx-escape.d.ts +15 -0
  131. package/dist/shared/raw-jsx-escape.js +32 -0
  132. package/dist/shared/raw-jsx-escape.js.map +1 -0
  133. package/dist/shared/xml-tag-kinds.d.ts +9 -0
  134. package/dist/shared/xml-tag-kinds.js +16 -0
  135. package/dist/shared/xml-tag-kinds.js.map +1 -0
  136. package/dist/shared/xml-tags.d.ts +5 -5
  137. package/dist/shared/xml-tags.js +18 -14
  138. package/dist/shared/xml-tags.js.map +1 -1
  139. package/package.json +2 -2
  140. package/dist/client/assets/channel-Ba45UACg.js +0 -1
  141. package/dist/client/assets/classDiagram-4FO5ZUOK-DigWu50-.js +0 -1
  142. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-DigWu50-.js +0 -1
  143. package/dist/client/assets/index-BKuHIaMg.css +0 -1
  144. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-DZMO7v7d.js +0 -1
@@ -0,0 +1,202 @@
1
+ import { nanoid } from 'nanoid';
2
+ import { slugify } from '../../services/slug.js';
3
+ import { DomainError } from '../../services/tags.js';
4
+ const SERIALIZER_VERSION = '1.0.0';
5
+ function readFormat(value) {
6
+ return value === 'd2' ? 'd2' : 'mermaid';
7
+ }
8
+ export class DiagramService {
9
+ db;
10
+ tags;
11
+ versions;
12
+ store;
13
+ constructor(db, tags, versions, store) {
14
+ this.db = db;
15
+ this.tags = tags;
16
+ this.versions = versions;
17
+ this.store = store;
18
+ }
19
+ // ─── slug generation (decyzja #1 — explicit | slugify(caption) | diagram-<nanoid(8)>) ─
20
+ /** Resolve a free slug, appending `-2`, `-3`, … on collision. */
21
+ uniqueSlug(base) {
22
+ let candidate = base;
23
+ let n = 2;
24
+ while (this.db.prepare(`SELECT 1 FROM diagram WHERE slug = ?`).get(candidate)) {
25
+ candidate = `${base}-${n}`;
26
+ n += 1;
27
+ }
28
+ return candidate;
29
+ }
30
+ generateSlug(input) {
31
+ const explicit = input.slug?.trim();
32
+ const fromCaption = input.caption ? slugify(input.caption) : '';
33
+ const base = explicit || fromCaption || `diagram-${nanoid(8)}`;
34
+ return this.uniqueSlug(base);
35
+ }
36
+ // ─── CRUD ──────────────────────────────────────────────────────────────────
37
+ create(input, actor, opts = {}) {
38
+ const slug = this.generateSlug(input);
39
+ if (!slug)
40
+ throw new DomainError('VALIDATION', 'slug resolves to empty');
41
+ const format = readFormat(input.format);
42
+ const source = input.source ?? '';
43
+ const tx = this.db.transaction(() => {
44
+ this.db
45
+ .prepare(`INSERT INTO diagram (slug, format, source) VALUES (?, ?, ?)`)
46
+ .run(slug, format, source);
47
+ if (input.tags?.length)
48
+ this.tags.assignTags('diagram', slug, input.tags);
49
+ const created = this.getBySlugInternal(slug);
50
+ if (opts.capture !== false) {
51
+ this.versions.captureEntitySnapshot('diagram', slug, 'create', actor, 'Created', SERIALIZER_VERSION);
52
+ }
53
+ return created;
54
+ });
55
+ const created = tx();
56
+ if (opts.writeFile !== false)
57
+ this.store.persist('diagram', created.slug);
58
+ return created;
59
+ }
60
+ list(query = {}) {
61
+ const { whereSql, params } = buildWhere(query);
62
+ const limit = Math.min(Math.max(query.limit ?? 200, 1), 500);
63
+ const offset = Math.max(query.offset ?? 0, 0);
64
+ const rows = this.db
65
+ .prepare(`SELECT * FROM diagram ${whereSql} ORDER BY slug LIMIT ? OFFSET ?`)
66
+ .all(...params, limit, offset);
67
+ return rows.map((r) => this.hydrate(r));
68
+ }
69
+ count(query = {}) {
70
+ const { whereSql, params } = buildWhere(query);
71
+ return this.db.prepare(`SELECT COUNT(*) AS c FROM diagram ${whereSql}`).get(...params).c;
72
+ }
73
+ getBySlug(slug) {
74
+ const row = this.db.prepare(`SELECT * FROM diagram WHERE slug = ?`).get(slug);
75
+ return row ? this.hydrate(row) : null;
76
+ }
77
+ update(slug, input, actor, opts = {}) {
78
+ const tx = this.db.transaction(() => {
79
+ const current = this.db.prepare(`SELECT * FROM diagram WHERE slug = ?`).get(slug);
80
+ if (!current)
81
+ throw new DomainError('NOT_FOUND', `diagram '${slug}' not found`);
82
+ // Slug stable: rename only via explicit newSlug.
83
+ const nextSlug = input.newSlug?.trim() || current.slug;
84
+ if (nextSlug !== slug) {
85
+ const conflict = this.db.prepare(`SELECT 1 FROM diagram WHERE slug = ?`).get(nextSlug);
86
+ if (conflict)
87
+ throw new DomainError('SLUG_CONFLICT', `diagram slug '${nextSlug}' already exists`);
88
+ }
89
+ const nextFormat = input.format !== undefined ? readFormat(input.format) : current.format;
90
+ const nextSource = input.source !== undefined ? input.source : current.source;
91
+ this.db
92
+ .prepare(`UPDATE diagram SET slug = ?, format = ?, source = ?, updated_at = datetime('now')
93
+ WHERE slug = ?`)
94
+ .run(nextSlug, nextFormat, nextSource, slug);
95
+ // M29: entity_tag is polymorphic (no FK on entity_slug) — follow the rename.
96
+ if (nextSlug !== slug) {
97
+ this.db
98
+ .prepare(`UPDATE entity_tag SET entity_slug = ? WHERE entity_type = 'diagram' AND entity_slug = ?`)
99
+ .run(nextSlug, slug);
100
+ }
101
+ if (input.tags)
102
+ this.tags.assignTags('diagram', nextSlug, input.tags);
103
+ const updated = this.getBySlugInternal(nextSlug);
104
+ const summary = nextSlug !== slug ? `Renamed from '${slug}' to '${nextSlug}'` : 'Updated';
105
+ if (opts.capture !== false) {
106
+ this.versions.captureEntitySnapshot('diagram', nextSlug, 'update', actor, summary, SERIALIZER_VERSION);
107
+ }
108
+ return { diagram: updated, previousSlug: slug };
109
+ });
110
+ const result = tx();
111
+ if (opts.writeFile !== false) {
112
+ const nextSlug = result.diagram.slug;
113
+ if (nextSlug !== slug)
114
+ this.store.remove('diagram', slug);
115
+ this.store.persist('diagram', nextSlug);
116
+ }
117
+ return result;
118
+ }
119
+ /** Idempotent UPSERT for M17 restore. CREATE if missing, UPDATE otherwise; preserves slug. */
120
+ upsert(slug, input, actor, opts = {}) {
121
+ const existing = this.getBySlug(slug);
122
+ if (!existing) {
123
+ const diagram = this.create({ ...input, slug }, actor, opts);
124
+ return { diagram, op: 'created' };
125
+ }
126
+ const result = this.update(slug, { format: input.format, source: input.source, tags: input.tags }, actor, opts);
127
+ return { diagram: result.diagram, op: 'updated' };
128
+ }
129
+ remove(slug, actor, brokenReferences = [], opts = {}) {
130
+ const tx = this.db.transaction(() => {
131
+ const row = this.db.prepare(`SELECT * FROM diagram WHERE slug = ?`).get(slug);
132
+ if (!row)
133
+ throw new DomainError('NOT_FOUND', `diagram '${slug}' not found`);
134
+ if (opts.capture !== false) {
135
+ this.versions.captureEntitySnapshot('diagram', slug, 'delete', actor, 'Deleted', SERIALIZER_VERSION);
136
+ }
137
+ this.db
138
+ .prepare(`DELETE FROM entity_tag WHERE entity_type = 'diagram' AND entity_slug = ?`)
139
+ .run(slug);
140
+ this.db.prepare(`DELETE FROM diagram WHERE slug = ?`).run(slug);
141
+ return { deleted: true, brokenReferences };
142
+ });
143
+ const result = tx();
144
+ if (opts.writeFile !== false)
145
+ this.store.remove('diagram', slug);
146
+ return result;
147
+ }
148
+ // ─── hydration ───────────────────────────────────────────────────────────
149
+ getBySlugInternal(slug) {
150
+ const row = this.db.prepare(`SELECT * FROM diagram WHERE slug = ?`).get(slug);
151
+ if (!row)
152
+ throw new Error(`diagram '${slug}' disappeared mid-tx`);
153
+ return this.hydrate(row);
154
+ }
155
+ hydrate(row) {
156
+ return {
157
+ slug: row.slug,
158
+ format: readFormat(row.format),
159
+ source: row.source,
160
+ tags: this.tags.getEntityTagSlugs('diagram', row.slug),
161
+ createdAt: row.created_at,
162
+ updatedAt: row.updated_at,
163
+ };
164
+ }
165
+ }
166
+ // ─── list helpers ────────────────────────────────────────────────────────────
167
+ function buildWhere(query) {
168
+ const where = [];
169
+ const params = [];
170
+ if (query.search) {
171
+ where.push(`(slug LIKE ? OR source LIKE ?)`);
172
+ const like = `%${query.search}%`;
173
+ params.push(like, like);
174
+ }
175
+ const tagSlugs = query.tags?.filter(Boolean) ?? [];
176
+ if (tagSlugs.length) {
177
+ const placeholders = tagSlugs.map(() => '?').join(',');
178
+ if (query.tagFilter === 'or') {
179
+ where.push(`
180
+ slug IN (
181
+ SELECT et.entity_slug FROM entity_tag et
182
+ WHERE et.entity_type = 'diagram' AND et.tag_slug IN (${placeholders})
183
+ )
184
+ `);
185
+ params.push(...tagSlugs);
186
+ }
187
+ else {
188
+ where.push(`
189
+ slug IN (
190
+ SELECT et.entity_slug
191
+ FROM entity_tag et
192
+ WHERE et.entity_type = 'diagram' AND et.tag_slug IN (${placeholders})
193
+ GROUP BY et.entity_slug
194
+ HAVING COUNT(DISTINCT et.tag_slug) = ?
195
+ )
196
+ `);
197
+ params.push(...tagSlugs, tagSlugs.length);
198
+ }
199
+ }
200
+ return { whereSql: where.length ? `WHERE ${where.join(' AND ')}` : '', params };
201
+ }
202
+ //# sourceMappingURL=services.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.js","sourceRoot":"","sources":["../../../../src/server/entities/diagram/services.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { SystemPromptContribution } from '../../../shared/plugin-host/types.js';
2
+ export declare const diagramSystemPrompt: SystemPromptContribution;
@@ -0,0 +1,15 @@
1
+ export const diagramSystemPrompt = {
2
+ roleNoun: 'Diagrams',
3
+ countStat: {
4
+ placeholder: 'diagramCount',
5
+ sqlQuery: 'SELECT COUNT(*) AS count FROM diagram',
6
+ label: 'diagrams',
7
+ },
8
+ mcpToolsLine: 'diagram-tools: create_diagram, get_diagram, update_diagram, delete_diagram, list_diagrams',
9
+ narrativeBlock: 'Diagrams — reusable diagram entities whose DSL `source` (mermaid; `d2` is a reserved slot) is the source ' +
10
+ 'of truth. A page references a diagram with a self-closing `<diagram slug="…" caption="…"/>` tag; `caption` ' +
11
+ 'is a per-reference attribute (so the same diagram can carry different captions in different places) and is ' +
12
+ 'NOT stored on the entity. Diagram is a graph leaf — no junction tables, references no other entity. `source` ' +
13
+ 'may be empty (placeholder); it is validated with mermaid.parse() producing warnings only (never blocks).',
14
+ };
15
+ //# sourceMappingURL=system-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../../../src/server/entities/diagram/system-prompt.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mBAAmB,GAA6B;IAC3D,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE;QACT,WAAW,EAAE,cAAc;QAC3B,QAAQ,EAAE,uCAAuC;QACjD,KAAK,EAAE,UAAU;KAClB;IACD,YAAY,EACV,2FAA2F;IAC7F,cAAc,EACZ,2GAA2G;QAC3G,6GAA6G;QAC7G,6GAA6G;QAC7G,+GAA+G;QAC/G,0GAA0G;CAC7G,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Best-effort diagram `source` validation (M19 — warnings only, NEVER blocks a
3
+ * write). An empty array means "no complaints", which also covers:
4
+ * - a non-mermaid format (only `mermaid` is implemented),
5
+ * - an empty source (legal placeholder),
6
+ * - any environment where mermaid cannot be loaded server-side (we simply
7
+ * cannot validate — so we stay silent rather than emit a misleading warning).
8
+ */
9
+ export declare function validateDiagramSource(format: string, source: string): Promise<string[]>;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Best-effort diagram `source` validation (M19 — warnings only, NEVER blocks a
3
+ * write). An empty array means "no complaints", which also covers:
4
+ * - a non-mermaid format (only `mermaid` is implemented),
5
+ * - an empty source (legal placeholder),
6
+ * - any environment where mermaid cannot be loaded server-side (we simply
7
+ * cannot validate — so we stay silent rather than emit a misleading warning).
8
+ */
9
+ export async function validateDiagramSource(format, source) {
10
+ if (format !== 'mermaid')
11
+ return [];
12
+ if (!source.trim())
13
+ return [];
14
+ let parse = null;
15
+ try {
16
+ const mod = (await import('mermaid'));
17
+ const mermaid = (mod.default ?? mod);
18
+ if (typeof mermaid.parse === 'function')
19
+ parse = mermaid.parse.bind(mermaid);
20
+ }
21
+ catch {
22
+ return []; // mermaid unavailable in this runtime — cannot validate, never block
23
+ }
24
+ if (!parse)
25
+ return [];
26
+ try {
27
+ await parse(source);
28
+ return [];
29
+ }
30
+ catch (err) {
31
+ const message = err instanceof Error ? err.message : String(err);
32
+ return [`mermaid source may be invalid: ${message.split('\n')[0]}`];
33
+ }
34
+ }
35
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../../src/server/entities/diagram/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,MAAc,EAAE,MAAc;IACxE,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACpC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAE9B,IAAI,KAAK,GAA6C,IAAI,CAAC;IAC3D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,CAA0B,CAAC;QAC/D,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAgD,CAAC;QACpF,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,UAAU;YAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC,CAAC,qEAAqE;IAClF,CAAC;IACD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IAEtB,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;QACpB,OAAO,EAAE,CAAC;IACZ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,CAAC,kCAAkC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;AACH,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.**\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 @inharness-ai/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";
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 @inharness-ai/claude4spec` server. When either is unavailable, skip it.\n\nIf `c4s ask` returns `PROJECT_NOT_FOUND` despite a running server, your cwd is\nprobably reached through a **symlink** (common for `.claude/skills/<name>`\nprojects): `c4s` resolves `process.cwd()` to the real path, which is NOT the one\nregistered in `~/.claude4spec/workspaces.json`. Pass the registered (symlink) path\nexplicitly \u2014 `--project` is run through `path.resolve`, which does NOT canonicalize\nsymlinks, so it matches the registry:\n\n```bash\nc4s ask \"Brief nie precyzuje X \u2014 ...\" --ct brief --brief <brief-slug>.md --project /abs/path/to/registered/skill-dir\n```\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";
@@ -59,6 +59,17 @@ Continue the same thread with \`c4s ask "..." --thread <threadId>\` (the
59
59
  \`threadId\` is printed with the answer). This path requires \`c4s\` installed
60
60
  *and* a running \`npx @inharness-ai/claude4spec\` server. When either is unavailable, skip it.
61
61
 
62
+ If \`c4s ask\` returns \`PROJECT_NOT_FOUND\` despite a running server, your cwd is
63
+ probably reached through a **symlink** (common for \`.claude/skills/<name>\`
64
+ projects): \`c4s\` resolves \`process.cwd()\` to the real path, which is NOT the one
65
+ registered in \`~/.claude4spec/workspaces.json\`. Pass the registered (symlink) path
66
+ explicitly — \`--project\` is run through \`path.resolve\`, which does NOT canonicalize
67
+ symlinks, so it matches the registry:
68
+
69
+ \`\`\`bash
70
+ c4s ask "Brief nie precyzuje X — ..." --ct brief --brief <brief-slug>.md --project /abs/path/to/registered/skill-dir
71
+ \`\`\`
72
+
62
73
  **Asynchronous (always available).** If you cannot ask synchronously, proceed
63
74
  with your best judgement and file a patch afterwards (step 4) so the
64
75
  spec-author can fold the clarification into the next brief.
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsIrC,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiJrC,CAAC"}
@@ -1,2 +1,2 @@
1
1
  export declare const SPEC_READER_FRONTMATTER = "---\nname: c4s-spec-reader\ndescription: Read claude4spec specification entities (endpoints, DTOs, tables, AC, UI views) referenced from markdown pages through XML tags like <inline_mention/>, <single_element/>, <tagged_list/>. Use when working in a repository whose pages/ contain these tags or whose .claude4spec/ directory exists. Resolves entity slugs to full data via c4s CLI or c4s-reader MCP server.\n---\n";
2
- export declare const SPEC_READER_BODY = "# c4s-spec-reader\n\nThis repository contains a claude4spec specification. Pages (`*.md`) reference\nentities stored in `.claude4spec/db.sqlite` through XML tags. This skill teaches\nyou how to resolve them.\n\nAll commands below walk up from the agent's cwd to the nearest `.claude4spec/` \u2014\nno absolute paths are required.\n\n## Resolving a tag\n\nInstall `claude4spec` (Node 20+) and use the `c4s` CLI. Subcommand names match\nXML tag names 1:1.\n\n| XML tag | CLI equivalent |\n|---------|----------------|\n| `<inline_mention type=\"endpoint\" slug=\"X\"/>` | `c4s inline_mention --type endpoint --slug X` |\n| `<single_element type=\"dto\" slug=\"X\"/>` | `c4s single_element --type dto --slug X` |\n| `<element_list type=\"endpoint\" slugs=\"a,b,c\"/>` | `c4s element_list --type endpoint --slugs a,b,c` |\n| `<tagged_list type=\"dto\" tags=\"auth\" filter=\"and\"/>` | `c4s tagged_list --type dto --tags auth --filter and` |\n| `<tagged_list_mixed tags=\"public\"/>` | `c4s tagged_list_mixed --tags public` |\n\n## Expanding a whole page\n\n```sh\nc4s resolve some-page.md # writes markdown with tags expanded inline\nc4s resolve some-page.md --format json # writes { content, resolved: [...] }\n```\n\n## Discovery\n\n- `c4s catalog` \u2014 active entity types with counts + version + description + roleNoun + mcpToolsLine per type (smoke test).\n- `c4s describe --type <t> [--view <v>]` \u2014 JSON Schema per view for one type (on-demand).\n- `c4s list-tags` \u2014 all tags with per-type counts.\n- `c4s list-slugs --type endpoint` \u2014 all slugs for a given type.\n\nAll output is JSON (pretty) by default. Use `--compact` for pipelines and\n`--format text` for terminal-friendly output. Errors go to stderr as JSON with\nan exit code > 0.\n\nThe database is opened **read-only** \u2014 `c4s` never mutates the project.\n\n## Asking the spec agent\n\nWhen a question goes beyond resolving entities or pages, `c4s ask` runs a\nsynchronous agent turn against the specification:\n\n```sh\nc4s ask \"<question>\" --ct chat\n```\n\nUnlike the read-only commands above, `c4s ask` requires a running\n`npx @inharness-ai/claude4spec` server (it delegates the turn to the server's agent).\n";
2
+ export declare const SPEC_READER_BODY = "# c4s-spec-reader\n\nThis repository contains a claude4spec specification. Pages (`*.md`) reference\nentities stored in `.claude4spec/db.sqlite` through XML tags. This skill teaches\nyou how to resolve them.\n\nAll commands below walk up from the agent's cwd to the nearest `.claude4spec/` \u2014\nno absolute paths are required.\n\n## Resolving a tag\n\nInstall `claude4spec` (Node 20+) and use the `c4s` CLI. Subcommand names match\nXML tag names 1:1.\n\n| XML tag | CLI equivalent |\n|---------|----------------|\n| `<inline_mention type=\"endpoint\" slug=\"X\"/>` | `c4s inline_mention --type endpoint --slug X` |\n| `<single_element type=\"dto\" slug=\"X\"/>` | `c4s single_element --type dto --slug X` |\n| `<element_list type=\"endpoint\" slugs=\"a,b,c\"/>` | `c4s element_list --type endpoint --slugs a,b,c` |\n| `<tagged_list type=\"dto\" tags=\"auth\" filter=\"and\"/>` | `c4s tagged_list --type dto --tags auth --filter and` |\n| `<tagged_list_mixed tags=\"public\"/>` | `c4s tagged_list_mixed --tags public` |\n\n## Expanding a whole page\n\n```sh\nc4s resolve some-page.md # writes markdown with tags expanded inline\nc4s resolve some-page.md --format json # writes { content, resolved: [...] }\n```\n\n## Discovery\n\n- `c4s catalog` \u2014 active entity types with counts + version + description + roleNoun + mcpToolsLine per type (smoke test).\n- `c4s describe --type <t> [--view <v>]` \u2014 JSON Schema per view for one type (on-demand).\n- `c4s list-tags` \u2014 all tags with per-type counts.\n- `c4s list-slugs --type endpoint` \u2014 all slugs for a given type.\n\nAll output is JSON (pretty) by default. Use `--compact` for pipelines and\n`--format text` for terminal-friendly output. Errors go to stderr as JSON with\nan exit code > 0.\n\nThe database is opened **read-only** \u2014 `c4s` never mutates the project.\n\n## Asking the spec agent\n\nWhen a question goes beyond resolving entities or pages, `c4s ask` runs a\nsynchronous agent turn against the specification:\n\n```sh\nc4s ask \"<question>\" --ct chat\n```\n\nUnlike the read-only commands above, `c4s ask` requires a running\n`npx @inharness-ai/claude4spec` server (it delegates the turn to the server's agent).\n\n### `PROJECT_NOT_FOUND` when the project dir is a symlink\n\nIf `c4s ask` (or any `c4s` command) returns `PROJECT_NOT_FOUND` even though a\nserver is running, your cwd is most likely reached through a **symlink** (common\nfor `.claude/skills/<name>` that points elsewhere). `c4s` resolves `process.cwd()`\nthrough the symlink to the real path, which is NOT the path registered in\n`~/.claude4spec/workspaces.json`. Pass the registered (symlink) path explicitly \u2014\n`--project` is run through `path.resolve`, which does NOT canonicalize symlinks, so\nit matches the registry exactly:\n\n```sh\nc4s ask \"<question>\" --ct chat --project /abs/path/to/registered/project-dir\n```\n";
@@ -56,5 +56,19 @@ c4s ask "<question>" --ct chat
56
56
 
57
57
  Unlike the read-only commands above, \`c4s ask\` requires a running
58
58
  \`npx @inharness-ai/claude4spec\` server (it delegates the turn to the server's agent).
59
+
60
+ ### \`PROJECT_NOT_FOUND\` when the project dir is a symlink
61
+
62
+ If \`c4s ask\` (or any \`c4s\` command) returns \`PROJECT_NOT_FOUND\` even though a
63
+ server is running, your cwd is most likely reached through a **symlink** (common
64
+ for \`.claude/skills/<name>\` that points elsewhere). \`c4s\` resolves \`process.cwd()\`
65
+ through the symlink to the real path, which is NOT the path registered in
66
+ \`~/.claude4spec/workspaces.json\`. Pass the registered (symlink) path explicitly —
67
+ \`--project\` is run through \`path.resolve\`, which does NOT canonicalize symlinks, so
68
+ it matches the registry exactly:
69
+
70
+ \`\`\`sh
71
+ c4s ask "<question>" --ct chat --project /abs/path/to/registered/project-dir
72
+ \`\`\`
59
73
  `;
60
74
  //# sourceMappingURL=spec-reader-template.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"spec-reader-template.js","sourceRoot":"","sources":["../../../src/server/external-skills/spec-reader-template.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;CAItC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqD/B,CAAC"}
1
+ {"version":3,"file":"spec-reader-template.js","sourceRoot":"","sources":["../../../src/server/external-skills/spec-reader-template.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;CAItC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmE/B,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import chokidar from 'chokidar';
2
2
  import path from 'node:path';
3
+ import { isMarkdownPath } from '../../shared/page-files.js';
3
4
  export class PagesWatcher {
4
5
  pagesRoot;
5
6
  gateway;
@@ -38,8 +39,9 @@ export class PagesWatcher {
38
39
  this.gateway.broadcast({ kind: 'page:changed', event: 'change', path: relPath, origin: 'server' });
39
40
  }
40
41
  emit(kind, absPath) {
41
- const isMd = absPath.endsWith('.md');
42
- // M30: watch .html too (so the preview iframe can refresh), but only .md drives indexing.
42
+ const isMd = isMarkdownPath(absPath);
43
+ // M30: watch .html too (so the preview iframe can refresh), but only markdown
44
+ // (.md / .mdx) drives indexing.
43
45
  const isHtml = absPath.endsWith('.html');
44
46
  if (!isMd && !isHtml)
45
47
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../../src/server/fs/watcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../../src/server/fs/watcher.ts"],"names":[],"mappings":"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"}
@@ -139,6 +139,7 @@ export function createC4sReaderServer(deps) {
139
139
  'ui-views': [],
140
140
  acs: [],
141
141
  'design-systems': [],
142
+ diagrams: [],
142
143
  };
143
144
  const bucket = {
144
145
  endpoint: 'endpoints',
@@ -147,6 +148,7 @@ export function createC4sReaderServer(deps) {
147
148
  'ui-view': 'ui-views',
148
149
  ac: 'acs',
149
150
  'design-system': 'design-systems',
151
+ diagram: 'diagrams',
150
152
  };
151
153
  for (const entity of lookup.value) {
152
154
  const item = {
@@ -1 +1 @@
1
- {"version":3,"file":"c4s-reader.js","sourceRoot":"","sources":["../../../src/server/mcp/c4s-reader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"c4s-reader.js","sourceRoot":"","sources":["../../../src/server/mcp/c4s-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,OAAO,EAA0B,MAAM,8BAA8B,CAAC;AAChG,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,eAAe,GAIhB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAEtE,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAU7B,MAAM,UAAU,GAAG;IACjB,gBAAgB;IAChB,gBAAgB;IAChB,mBAAmB;IACnB,kBAAkB;IAClB,QAAQ;CACA,CAAC;AAEX,MAAM,kBAAkB,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,CAAU,CAAC;AAErF,MAAM,UAAU,qBAAqB,CAAC,IAAmB;IACvD,MAAM,EAAE,GAAG,CAAC,OAAgB,EAAE,EAAE,CAAC,CAAC;QAChC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;KAC7E,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,OAAe,EAAE,IAAa,EAAE,EAAE,CAAC,CAAC;QAC9D,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;aACvF;SACF;QACD,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,GAE8B,EAAE;QACrD,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACjD,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,QAAQ,EAAE,IAAI,CACZ,mBAAmB,EACnB,+BAA+B,EAC/B,6CAA6C,CAC9C;aACF,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;IACrF,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAI,EAAW,EAA6E,EAAE;QAC3G,IAAI,CAAC;YACH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC;QACnC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,MAAM,IAAI,GAAG,+BAA+B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,UAAU,CAAC;YAC/F,MAAM,IAAI,GAAG,IAAI,KAAK,oBAAoB,CAAC,CAAC,CAAC,gDAAgD,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1G,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;QAC5D,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,GAAW,EAAwB,EAAE;QAC1D,MAAM,UAAU,GAAG,GAAG,KAAK,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC;QACrE,OAAO,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;IACzD,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,OAAO,CACvB,YAAY,EACZ,yRAAyR,EACzR;QACE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;QACxD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QACxC,IAAI,EAAE,CAAC;aACJ,IAAI,CAAC,UAAU,CAAC;aAChB,QAAQ,EAAE;aACV,QAAQ,CAAC,yCAAyC,CAAC;KACvD,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,GAAG,CAAC,QAAQ,CAAC;QACjC,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC,cAAc,EAAE,wBAAwB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAC7E,MAAM,IAAI,GAAc,IAAI,CAAC,IAA6B,IAAI,gBAAgB,CAAC;QAC/E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC,QAAQ,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC,kBAAkB,EAAE,GAAG,IAAI,IAAI,IAAI,YAAY,CAAC,CAAC;QAChF,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACvF,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC3D,CAAC,CACF,CAAC;IAEF,MAAM,WAAW,GAAG,OAAO,CACzB,cAAc,EACd,iLAAiL,EACjL;QACE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;QACxD,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QACtE,IAAI,EAAE,CAAC;aACJ,IAAI,CAAC,UAAU,CAAC;aAChB,QAAQ,EAAE;aACV,QAAQ,CAAC,4CAA4C,CAAC;KAC1D,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,GAAG,CAAC,QAAQ,CAAC;QACjC,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC,cAAc,EAAE,wBAAwB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAC7E,MAAM,IAAI,GAAc,IAAI,CAAC,IAA6B,IAAI,mBAAmB,CAAC;QAClF,MAAM,KAAK,GAAI,IAAI,CAAC,KAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC,QAAQ,CAAC;QACvC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAChD,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;SAC3E,CAAC,CAAC,CAAC;QACJ,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAClE,CAAC,CACF,CAAC;IAEF,MAAM,SAAS,GAAG,OAAO,CACvB,aAAa,EACb,2QAA2Q,EAC3Q;QACE,IAAI,EAAE,CAAC;aACJ,IAAI,CAAC,kBAAkB,CAAC;aACxB,QAAQ,EAAE;aACV,QAAQ,CAAC,4DAA4D,CAAC;QACzE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACxD,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QACjF,IAAI,EAAE,CAAC;aACJ,IAAI,CAAC,UAAU,CAAC;aAChB,QAAQ,EAAE;aACV,QAAQ,CAAC,2CAA2C,CAAC;KACzD,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,GAAG,CAAC,QAAQ,CAAC;QACjC,MAAM,IAAI,GAAI,IAAI,CAAC,IAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,CAAE,IAAI,CAAC,MAAmC,IAAI,IAAI,CAAiB,CAAC;QACnF,MAAM,IAAI,GAAc,IAAI,CAAC,IAA6B,IAAI,kBAAkB,CAAC;QACjF,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACpE,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC,cAAc,EAAE,wBAAwB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAE7F,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;YACnF,IAAI,CAAC,MAAM,CAAC,EAAE;gBAAE,OAAO,MAAM,CAAC,QAAQ,CAAC;YACvC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAiB,EAAE,EAAE,CAAC,CAAC;gBACrD,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;aAC9E,CAAC,CAAC,CAAC;YACJ,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC,QAAQ,CAAC;QACvC,MAAM,MAAM,GAA8B;YACxC,SAAS,EAAE,EAAE;YACb,IAAI,EAAE,EAAE;YACR,iBAAiB,EAAE,EAAE;YACrB,UAAU,EAAE,EAAE;YACd,GAAG,EAAE,EAAE;YACP,gBAAgB,EAAE,EAAE;YACpB,QAAQ,EAAE,EAAE;SACb,CAAC;QACF,MAAM,MAAM,GAAkC;YAC5C,QAAQ,EAAE,WAAW;YACrB,GAAG,EAAE,MAAM;YACX,gBAAgB,EAAE,iBAAiB;YACnC,SAAS,EAAE,UAAU;YACrB,EAAE,EAAE,KAAK;YACT,eAAe,EAAE,gBAAgB;YACjC,OAAO,EAAE,UAAU;SACpB,CAAC;QACF,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG;gBACX,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;aAClF,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IAC1D,CAAC,CACF,CAAC;IAEF,MAAM,UAAU,GAAG,OAAO,CACxB,aAAa,EACb,wCAAwC,EACxC;QACE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QACzD,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;KACxF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,GAAG,CAAC,QAAQ,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,IAAI,GAAc,IAAI,CAAC,IAA6B,IAAI,gBAAgB,CAAC;QAC/E,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC,QAAQ,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC,mBAAmB,EAAE,YAAY,MAAM,aAAa,CAAC,CAAC;QACrF,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAClF,OAAO,EAAE,CAAC;YACR,MAAM;YACN,IAAI;YACJ,GAAG,QAAQ,CAAC,UAAU,CAAC;SACxB,CAAC,CAAC;IACL,CAAC,CACF,CAAC;IAEF,MAAM,WAAW,GAAG,OAAO,CACzB,cAAc,EACd,6TAA6T,EAC7T;QACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;QAC/E,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;KACzF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,GAAG,CAAC,QAAQ,CAAC;QACjC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAC3E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC,gBAAgB,EAAE,mBAAmB,GAAG,EAAE,CAAC,CAAC;QACjF,MAAM,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,CACzB,kBAAkB,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CACxE,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC,QAAQ,CAAC;QACvC,MAAM,MAAM,GAAI,IAAI,CAAC,MAAwC,IAAI,QAAQ,CAAC;QAC1E,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YAClF,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;IAChE,CAAC,CACF,CAAC;IAEF,MAAM,OAAO,GAAG,OAAO,CACrB,SAAS,EACT,wUAAwU,EACxU,EAAE,EACF,KAAK,IAAI,EAAE;QACT,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,GAAG,CAAC,QAAQ,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC,QAAQ,CAAC;QACvC,OAAO,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IACnE,CAAC,CACF,CAAC;IAEF,MAAM,QAAQ,GAAG,OAAO,CACtB,UAAU,EACV,8QAA8Q,EAC9Q;QACE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;QACxD,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,oDAAoD,CAAC;KAClE,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,GAAG,CAAC,QAAQ,CAAC;QACjC,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC,cAAc,EAAE,wBAAwB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAC7E,IAAI,IAA0B,CAAC;QAC/B,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAa,CAAC,EAAE,CAAC;gBACxD,OAAO,IAAI,CAAC,cAAc,EAAE,iBAAiB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;YAC7D,CAAC;YACD,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAa,CAAC;QACvC,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACxE,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC,QAAQ,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC,cAAc,EAAE,gBAAgB,IAAI,iBAAiB,CAAC,CAAC;QACtF,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,CACF,CAAC;IAEF,MAAM,QAAQ,GAAG,OAAO,CACtB,WAAW,EACX,0HAA0H,EAC1H,EAAE,EACF,KAAK,IAAI,EAAE;QACT,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,GAAG,CAAC,QAAQ,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC,QAAQ,CAAC;QACvC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACpC,CAAC,CACF,CAAC;IAEF,MAAM,SAAS,GAAG,OAAO,CACvB,YAAY,EACZ,0LAA0L,EAC1L;QACE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;QACxD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;KAC5F,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,GAAG,CAAC,QAAQ,CAAC;QACjC,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC,cAAc,EAAE,wBAAwB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAC7E,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACtE,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YAC9F,IAAI,CAAC,MAAM,CAAC,EAAE;gBAAE,OAAO,MAAM,CAAC,QAAQ,CAAC;YACvC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC,QAAQ,CAAC;QACvC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3C,CAAC,CACF,CAAC;IAEF,OAAO,eAAe,CAAC;QACrB,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,IAAI,CAAC,cAAc;QAC5B,KAAK,EAAE;YACL,SAAS;YACT,WAAW;YACX,SAAS;YACT,UAAU;YACV,WAAW;YACX,OAAO;YACP,QAAQ;YACR,QAAQ;YACR,SAAS;SACV;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,CAAC,MAAuB;IACvC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAC9C,OAAO;YACL,IAAI;YACJ,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9C,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChE,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI;QACJ,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjD,CAAC;AACJ,CAAC"}
@@ -4,7 +4,7 @@ import { architectureCapabilities, createAdapter, observeStream, AdapterAbortErr
4
4
  import { buildPlanToolsServer } from '../mcp/plan-tools.js';
5
5
  import { buildBriefToolsServer } from '../mcp/brief-tools.js';
6
6
  import { buildC4sToolsServer } from '../mcp/c4s-tools.js';
7
- import { buildSystemPrompt } from '../services/chat-context.js';
7
+ import { buildSystemPrompt, subagentsFor } from '../services/chat-context.js';
8
8
  import { readConfig } from '../config.js';
9
9
  /** M21 m05ctxreg: tools whitelist per context_type. Brief threads get only
10
10
  * brief-tools (per-thread, mounted below) + release-tools (read-only).
@@ -311,6 +311,9 @@ export async function runAgentTurn(deps, input) {
311
311
  cwd: deps.cwd,
312
312
  mcpServers,
313
313
  skills: inlineSkills,
314
+ // 0.1.67 m05ctxreg: inject the per-context read-only explorer subagent. Mapped onto the
315
+ // SDK's `options.agents`; does NOT narrow the parent's toolset (no allowedTools).
316
+ subagents: subagentsFor(thread.contextType, deps.pluginHost),
314
317
  architectureConfig: input.architectureConfig,
315
318
  planMode,
316
319
  onUserInput: input.onUserInput,