@inharness-ai/claude4spec 1.0.13 → 1.0.15

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 (180) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/bin/c4s/commands/find-references.d.ts +13 -0
  3. package/dist/bin/c4s/commands/find-references.js +81 -0
  4. package/dist/bin/c4s/commands/find-references.js.map +1 -0
  5. package/dist/bin/c4s.js +6 -0
  6. package/dist/bin/c4s.js.map +1 -1
  7. package/dist/client/assets/{arc-E0e7X_zn.js → arc-Bm0IE9-2.js} +1 -1
  8. package/dist/client/assets/{architectureDiagram-3BPJPVTR-BzlqOVZv.js → architectureDiagram-3BPJPVTR-GJ4QxX0Q.js} +1 -1
  9. package/dist/client/assets/{blockDiagram-GPEHLZMM-BIQcApN7.js → blockDiagram-GPEHLZMM-C9rZbfxq.js} +1 -1
  10. package/dist/client/assets/{c4Diagram-AAUBKEIU-CDU0V1yk.js → c4Diagram-AAUBKEIU-DyVuHGeV.js} +1 -1
  11. package/dist/client/assets/channel-BGn39mc8.js +1 -0
  12. package/dist/client/assets/{chunk-2J33WTMH-PtDSwC5f.js → chunk-2J33WTMH-DePzEFC8.js} +1 -1
  13. package/dist/client/assets/{chunk-4BX2VUAB-DTUPWrSO.js → chunk-4BX2VUAB-NZkVFx6P.js} +1 -1
  14. package/dist/client/assets/{chunk-55IACEB6-Cpd59xZT.js → chunk-55IACEB6-DSelTsfa.js} +1 -1
  15. package/dist/client/assets/{chunk-727SXJPM-C4DOvpJT.js → chunk-727SXJPM-Vk_bMeuW.js} +1 -1
  16. package/dist/client/assets/{chunk-AQP2D5EJ-CtjeHPBB.js → chunk-AQP2D5EJ-Bv_5j6lW.js} +1 -1
  17. package/dist/client/assets/{chunk-FMBD7UC4-CZA3OvVr.js → chunk-FMBD7UC4-CIwy6WRQ.js} +1 -1
  18. package/dist/client/assets/{chunk-ND2GUHAM-Cbx6nQHm.js → chunk-ND2GUHAM-C-7ZR2Kw.js} +1 -1
  19. package/dist/client/assets/{chunk-QZHKN3VN-3DunELI_.js → chunk-QZHKN3VN-D2pOGWp9.js} +1 -1
  20. package/dist/client/assets/classDiagram-4FO5ZUOK-DZ5eaGnY.js +1 -0
  21. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-DZ5eaGnY.js +1 -0
  22. package/dist/client/assets/{cose-bilkent-S5V4N54A-CKYJnuL7.js → cose-bilkent-S5V4N54A-NgRxSzcd.js} +1 -1
  23. package/dist/client/assets/{dagre-BM42HDAG-BrvRwrr_.js → dagre-BM42HDAG-kwaDBrFq.js} +1 -1
  24. package/dist/client/assets/{diagram-2AECGRRQ-BaVLuzcD.js → diagram-2AECGRRQ-B5OMokEe.js} +1 -1
  25. package/dist/client/assets/{diagram-5GNKFQAL-9Cu7Wa7J.js → diagram-5GNKFQAL-9h9Lsrr_.js} +1 -1
  26. package/dist/client/assets/{diagram-KO2AKTUF-XKiCVdjO.js → diagram-KO2AKTUF-DcNC4jPN.js} +1 -1
  27. package/dist/client/assets/{diagram-LMA3HP47-DerecU5v.js → diagram-LMA3HP47-D41zybvJ.js} +1 -1
  28. package/dist/client/assets/{diagram-OG6HWLK6-BWcREvZ9.js → diagram-OG6HWLK6-D12dQiCG.js} +1 -1
  29. package/dist/client/assets/{erDiagram-TEJ5UH35-DU3BBQJY.js → erDiagram-TEJ5UH35-brqTv2OJ.js} +1 -1
  30. package/dist/client/assets/{flowDiagram-I6XJVG4X-DXO_IJeR.js → flowDiagram-I6XJVG4X-D6q2xyWg.js} +1 -1
  31. package/dist/client/assets/{ganttDiagram-6RSMTGT7-CXiFZEPx.js → ganttDiagram-6RSMTGT7-DlH9o0CJ.js} +1 -1
  32. package/dist/client/assets/{gitGraphDiagram-PVQCEYII-DHewdln-.js → gitGraphDiagram-PVQCEYII-CgNLFhAT.js} +1 -1
  33. package/dist/client/assets/{index-DT5g2AtL.js → index-C-gTQA-n.js} +1 -1
  34. package/dist/client/assets/{index-DD0GkjkG.js → index-DDRzJojo.js} +1 -1
  35. package/dist/client/assets/{index-BTXWIk4x.css → index-DirDnayu.css} +1 -1
  36. package/dist/client/assets/{index-DcIG_8JB.js → index-qO9stCkx.js} +189 -179
  37. package/dist/client/assets/{infoDiagram-5YYISTIA-CN40PAGW.js → infoDiagram-5YYISTIA-ThuQNCvi.js} +1 -1
  38. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-B8KsyuPk.js → ishikawaDiagram-YF4QCWOH-m-2DHbkK.js} +1 -1
  39. package/dist/client/assets/{journeyDiagram-JHISSGLW-BlEb3E_P.js → journeyDiagram-JHISSGLW-CNCSJPeY.js} +1 -1
  40. package/dist/client/assets/{kanban-definition-UN3LZRKU-B080CGS9.js → kanban-definition-UN3LZRKU-CtzjrW3p.js} +1 -1
  41. package/dist/client/assets/{linear-D6Tg-IET.js → linear-BF1Qhpjc.js} +1 -1
  42. package/dist/client/assets/{mermaid.core-DP18nW3T.js → mermaid.core-fKaK1Sz_.js} +4 -4
  43. package/dist/client/assets/{mindmap-definition-RKZ34NQL-bfo7Qm5I.js → mindmap-definition-RKZ34NQL-CXuVRuzz.js} +1 -1
  44. package/dist/client/assets/{pieDiagram-4H26LBE5-ZsPztPu6.js → pieDiagram-4H26LBE5-DdL9uKdO.js} +1 -1
  45. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-DKrTleIL.js → quadrantDiagram-W4KKPZXB-C_0FG9xH.js} +1 -1
  46. package/dist/client/assets/{requirementDiagram-4Y6WPE33-D4YX8ZgG.js → requirementDiagram-4Y6WPE33-Qmg8C7k6.js} +1 -1
  47. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-Bo-xm6Mc.js → sankeyDiagram-5OEKKPKP-DuIvgSjA.js} +1 -1
  48. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-CozgdKp6.js → sequenceDiagram-3UESZ5HK-B4JsFW9i.js} +1 -1
  49. package/dist/client/assets/{stateDiagram-AJRCARHV-CiK61MwV.js → stateDiagram-AJRCARHV-lTFw6Md4.js} +1 -1
  50. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-D2iiMzxh.js +1 -0
  51. package/dist/client/assets/{timeline-definition-PNZ67QCA-CgHoguI7.js → timeline-definition-PNZ67QCA-C7Hc5KbB.js} +1 -1
  52. package/dist/client/assets/{vennDiagram-CIIHVFJN-TY32dxQb.js → vennDiagram-CIIHVFJN-DMyGzBh7.js} +1 -1
  53. package/dist/client/assets/{wardley-L42UT6IY-C6Q7VFwH.js → wardley-L42UT6IY-BjA5T0YY.js} +1 -1
  54. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-nZLnVsQL.js → wardleyDiagram-YWT4CUSO-BhOipIZG.js} +1 -1
  55. package/dist/client/assets/{xychartDiagram-2RQKCTM6-DHdYRHEr.js → xychartDiagram-2RQKCTM6-Czx4--PM.js} +1 -1
  56. package/dist/client/index.html +2 -2
  57. package/dist/core/references/find-references.d.ts +13 -0
  58. package/dist/core/references/find-references.js +41 -0
  59. package/dist/core/references/find-references.js.map +1 -0
  60. package/dist/core/references/index.d.ts +2 -0
  61. package/dist/core/references/index.js +2 -0
  62. package/dist/core/references/index.js.map +1 -0
  63. package/dist/core/references/types.d.ts +45 -0
  64. package/dist/core/references/types.js +9 -0
  65. package/dist/core/references/types.js.map +1 -0
  66. package/dist/server/config.d.ts +9 -0
  67. package/dist/server/config.js +6 -0
  68. package/dist/server/config.js.map +1 -1
  69. package/dist/server/core/plugin-host/entities-router.d.ts +2 -1
  70. package/dist/server/core/plugin-host/entities-router.js +19 -13
  71. package/dist/server/core/plugin-host/entities-router.js.map +1 -1
  72. package/dist/server/core/plugin-host/host.js +4 -9
  73. package/dist/server/core/plugin-host/host.js.map +1 -1
  74. package/dist/server/core/plugin-host/types.d.ts +9 -14
  75. package/dist/server/db/migrations/035_m29_slug_identity.sql +248 -0
  76. package/dist/server/domain/raw-entity-reader.d.ts +3 -5
  77. package/dist/server/domain/raw-entity-reader.js +28 -39
  78. package/dist/server/domain/raw-entity-reader.js.map +1 -1
  79. package/dist/server/entities/ac/ac-analysis.service.d.ts +54 -0
  80. package/dist/server/entities/ac/ac-analysis.service.js +162 -0
  81. package/dist/server/entities/ac/ac-analysis.service.js.map +1 -0
  82. package/dist/server/entities/ac/mcp-server.d.ts +8 -0
  83. package/dist/server/entities/ac/mcp-server.js +30 -2
  84. package/dist/server/entities/ac/mcp-server.js.map +1 -1
  85. package/dist/server/entities/ac/plugin.js +4 -2
  86. package/dist/server/entities/ac/plugin.js.map +1 -1
  87. package/dist/server/entities/ac/serializer.js +1 -1
  88. package/dist/server/entities/ac/serializer.js.map +1 -1
  89. package/dist/server/entities/ac/services.d.ts +19 -7
  90. package/dist/server/entities/ac/services.js +65 -42
  91. package/dist/server/entities/ac/services.js.map +1 -1
  92. package/dist/server/entities/database-table/plugin.js +1 -2
  93. package/dist/server/entities/database-table/plugin.js.map +1 -1
  94. package/dist/server/entities/database-table/serializer.js +1 -1
  95. package/dist/server/entities/database-table/serializer.js.map +1 -1
  96. package/dist/server/entities/database-table/services.d.ts +19 -7
  97. package/dist/server/entities/database-table/services.js +74 -47
  98. package/dist/server/entities/database-table/services.js.map +1 -1
  99. package/dist/server/entities/dto/plugin.js +1 -2
  100. package/dist/server/entities/dto/plugin.js.map +1 -1
  101. package/dist/server/entities/dto/serializer.js +2 -2
  102. package/dist/server/entities/dto/serializer.js.map +1 -1
  103. package/dist/server/entities/dto/services.d.ts +19 -7
  104. package/dist/server/entities/dto/services.js +70 -47
  105. package/dist/server/entities/dto/services.js.map +1 -1
  106. package/dist/server/entities/endpoint/plugin.js +1 -2
  107. package/dist/server/entities/endpoint/plugin.js.map +1 -1
  108. package/dist/server/entities/endpoint/serializer.js +4 -4
  109. package/dist/server/entities/endpoint/serializer.js.map +1 -1
  110. package/dist/server/entities/endpoint/services.d.ts +21 -9
  111. package/dist/server/entities/endpoint/services.js +91 -63
  112. package/dist/server/entities/endpoint/services.js.map +1 -1
  113. package/dist/server/entities/mutate-opts.d.ts +15 -0
  114. package/dist/server/entities/mutate-opts.js +2 -0
  115. package/dist/server/entities/mutate-opts.js.map +1 -0
  116. package/dist/server/entities/ui-view/plugin.js +1 -2
  117. package/dist/server/entities/ui-view/plugin.js.map +1 -1
  118. package/dist/server/entities/ui-view/serializer.js +1 -1
  119. package/dist/server/entities/ui-view/serializer.js.map +1 -1
  120. package/dist/server/entities/ui-view/services.d.ts +19 -7
  121. package/dist/server/entities/ui-view/services.js +65 -42
  122. package/dist/server/entities/ui-view/services.js.map +1 -1
  123. package/dist/server/fs/entities-watcher.d.ts +31 -0
  124. package/dist/server/fs/entities-watcher.js +68 -0
  125. package/dist/server/fs/entities-watcher.js.map +1 -0
  126. package/dist/server/fs/watcher.js +7 -1
  127. package/dist/server/fs/watcher.js.map +1 -1
  128. package/dist/server/index.js +112 -6
  129. package/dist/server/index.js.map +1 -1
  130. package/dist/server/mcp/reference-tools.d.ts +3 -0
  131. package/dist/server/mcp/reference-tools.js +25 -161
  132. package/dist/server/mcp/reference-tools.js.map +1 -1
  133. package/dist/server/routes/static.d.ts +11 -0
  134. package/dist/server/routes/static.js +44 -0
  135. package/dist/server/routes/static.js.map +1 -0
  136. package/dist/server/services/entity-indexer.d.ts +42 -0
  137. package/dist/server/services/entity-indexer.js +179 -0
  138. package/dist/server/services/entity-indexer.js.map +1 -0
  139. package/dist/server/services/entity-store.d.ts +68 -0
  140. package/dist/server/services/entity-store.js +162 -0
  141. package/dist/server/services/entity-store.js.map +1 -0
  142. package/dist/server/services/entity-writer.d.ts +12 -1
  143. package/dist/server/services/entity-writer.js +22 -11
  144. package/dist/server/services/entity-writer.js.map +1 -1
  145. package/dist/server/services/git.js +6 -1
  146. package/dist/server/services/git.js.map +1 -1
  147. package/dist/server/services/pages.js +5 -1
  148. package/dist/server/services/pages.js.map +1 -1
  149. package/dist/server/services/references.d.ts +25 -0
  150. package/dist/server/services/references.js +102 -21
  151. package/dist/server/services/references.js.map +1 -1
  152. package/dist/server/services/release.d.ts +10 -10
  153. package/dist/server/services/release.js +32 -63
  154. package/dist/server/services/release.js.map +1 -1
  155. package/dist/server/services/section-indexer.d.ts +0 -1
  156. package/dist/server/services/section-indexer.js +5 -7
  157. package/dist/server/services/section-indexer.js.map +1 -1
  158. package/dist/server/services/skill-registry.d.ts +28 -1
  159. package/dist/server/services/skill-registry.js +51 -10
  160. package/dist/server/services/skill-registry.js.map +1 -1
  161. package/dist/server/services/static-html.d.ts +24 -0
  162. package/dist/server/services/static-html.js +49 -0
  163. package/dist/server/services/static-html.js.map +1 -0
  164. package/dist/server/services/tags.d.ts +13 -3
  165. package/dist/server/services/tags.js +65 -26
  166. package/dist/server/services/tags.js.map +1 -1
  167. package/dist/server/services/versions.d.ts +7 -7
  168. package/dist/server/services/versions.js +34 -37
  169. package/dist/server/services/versions.js.map +1 -1
  170. package/dist/shared/entities.d.ts +2 -2
  171. package/dist/shared/types.d.ts +9 -0
  172. package/dist/shared/xml-tags.d.ts +8 -0
  173. package/dist/shared/xml-tags.js +24 -0
  174. package/dist/shared/xml-tags.js.map +1 -1
  175. package/package.json +1 -1
  176. package/dist/client/assets/channel-BqjILLUr.js +0 -1
  177. package/dist/client/assets/classDiagram-4FO5ZUOK-LjT84-kK.js +0 -1
  178. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-LjT84-kK.js +0 -1
  179. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-C6-8M5Sb.js +0 -1
  180. package/dist/server/db/migrations/026_ac_seed.sql +0 -75
@@ -19,52 +19,51 @@ export class VersionService {
19
19
  * host.snapshot BEFORE the caller deletes the row — pass `previousSnapshot`
20
20
  * explicitly to capture a tombstone with last-known data.
21
21
  */
22
- captureEntitySnapshot(type, entityId, op, actor, summary, serializerVersion) {
22
+ captureEntitySnapshot(type, entitySlug, op, actor, summary, serializerVersion) {
23
23
  if (!this.snapshotDeps) {
24
24
  // Fallback: deps not yet wired. Store legacy domain object via createVersion.
25
- return this.createVersion(type, entityId, null, actor, summary, op, serializerVersion);
25
+ return this.createVersion(type, entitySlug, null, actor, summary, op, serializerVersion);
26
26
  }
27
27
  // For all ops (including delete), snapshot the entity *as it currently is*
28
28
  // (callers must call this BEFORE the row is deleted from its table).
29
- const rawEntity = this.snapshotDeps.reader.getEntityById(type, entityId);
29
+ const rawEntity = this.snapshotDeps.reader.getEntity(type, entitySlug);
30
30
  if (!rawEntity) {
31
31
  // Entity not found — fall back to last-known snapshot so tombstone has
32
32
  // restorable data. This path is only hit if a caller calls capture
33
33
  // post-delete (anti-pattern but defensive).
34
- const last = this.getLatestVersionForEntity(type, entityId);
35
- return this.createVersion(type, entityId, last?.data ?? null, actor, summary, op, serializerVersion);
34
+ const last = this.getLatestVersionForEntity(type, entitySlug);
35
+ return this.createVersion(type, entitySlug, last?.data ?? null, actor, summary, op, serializerVersion);
36
36
  }
37
37
  const ctx = { reader: this.snapshotDeps.reader, depth: 0, maxDepth: 1 };
38
38
  const snapshot = this.snapshotDeps.host.snapshot(type, rawEntity, ctx);
39
- return this.createVersion(type, entityId, snapshot, actor, summary, op, serializerVersion);
39
+ return this.createVersion(type, entitySlug, snapshot, actor, summary, op, serializerVersion);
40
40
  }
41
41
  /**
42
42
  * Capture a new version. M17 augments the row with `op` and
43
43
  * `serializer_version`; `release_id` always starts NULL and is assigned by
44
44
  * `releaseService.createRelease()`.
45
45
  */
46
- createVersion(entityType, entityId, data, changedBy, changeSummary, op, serializerVersion) {
47
- const next = this.nextVersionNumber(entityType, entityId);
46
+ createVersion(entityType, entitySlug, data, changedBy, changeSummary, op, serializerVersion) {
47
+ const next = this.nextVersionNumber(entityType, entitySlug);
48
48
  const inferredOp = op ?? (data === null ? 'delete' : (next === 1 ? 'create' : 'update'));
49
- const info = this.db
49
+ this.db
50
50
  .prepare(`INSERT INTO entity_version
51
- (entity_type, entity_id, version, data, changed_by, change_summary, op, serializer_version)
51
+ (entity_type, entity_slug, version, data, changed_by, change_summary, op, serializer_version)
52
52
  VALUES (?, ?, ?, ?, ?, ?, ?, ?)`)
53
- .run(entityType, entityId, next, JSON.stringify(data), changedBy, changeSummary ?? null, inferredOp, serializerVersion ?? null);
53
+ .run(entityType, entitySlug, next, JSON.stringify(data), changedBy, changeSummary ?? null, inferredOp, serializerVersion ?? null);
54
54
  const row = this.db
55
- .prepare(`SELECT * FROM entity_version WHERE id = ?`)
56
- .get(info.lastInsertRowid);
55
+ .prepare(`SELECT * FROM entity_version WHERE entity_type = ? AND entity_slug = ? AND version = ?`)
56
+ .get(entityType, entitySlug, next);
57
57
  return this.toListItem(row);
58
58
  }
59
- listVersions(entityType, entityId) {
59
+ listVersions(entityType, entitySlug) {
60
60
  const rows = this.db
61
- .prepare(`SELECT id, version, changed_by, change_summary, created_at, release_id, op
61
+ .prepare(`SELECT version, changed_by, change_summary, created_at, release_id, op
62
62
  FROM entity_version
63
- WHERE entity_type = ? AND entity_id = ?
63
+ WHERE entity_type = ? AND entity_slug = ?
64
64
  ORDER BY version DESC`)
65
- .all(entityType, entityId);
65
+ .all(entityType, entitySlug);
66
66
  return rows.map((r) => ({
67
- id: r.id,
68
67
  version: r.version,
69
68
  changedBy: r.changed_by,
70
69
  changeSummary: r.change_summary,
@@ -73,11 +72,11 @@ export class VersionService {
73
72
  ...(r.op ? { op: r.op } : {}),
74
73
  }));
75
74
  }
76
- getVersion(entityType, entityId, version) {
75
+ getVersion(entityType, entitySlug, version) {
77
76
  const row = this.db
78
77
  .prepare(`SELECT * FROM entity_version
79
- WHERE entity_type = ? AND entity_id = ? AND version = ?`)
80
- .get(entityType, entityId, version);
78
+ WHERE entity_type = ? AND entity_slug = ? AND version = ?`)
79
+ .get(entityType, entitySlug, version);
81
80
  if (!row)
82
81
  return null;
83
82
  return this.toDetail(row);
@@ -87,47 +86,46 @@ export class VersionService {
87
86
  * `releaseId === null` returns the latest unreleased capture (release_id IS NULL).
88
87
  * `releaseId === undefined` returns the latest overall (no release filter).
89
88
  */
90
- getLatestVersionForEntity(entityType, entityId, releaseId) {
89
+ getLatestVersionForEntity(entityType, entitySlug, releaseId) {
91
90
  let row;
92
91
  if (releaseId === undefined) {
93
92
  row = this.db
94
93
  .prepare(`SELECT * FROM entity_version
95
- WHERE entity_type = ? AND entity_id = ?
94
+ WHERE entity_type = ? AND entity_slug = ?
96
95
  ORDER BY version DESC LIMIT 1`)
97
- .get(entityType, entityId);
96
+ .get(entityType, entitySlug);
98
97
  }
99
98
  else if (releaseId === null) {
100
99
  row = this.db
101
100
  .prepare(`SELECT * FROM entity_version
102
- WHERE entity_type = ? AND entity_id = ? AND release_id IS NULL
101
+ WHERE entity_type = ? AND entity_slug = ? AND release_id IS NULL
103
102
  ORDER BY version DESC LIMIT 1`)
104
- .get(entityType, entityId);
103
+ .get(entityType, entitySlug);
105
104
  }
106
105
  else {
107
106
  row = this.db
108
107
  .prepare(`SELECT * FROM entity_version
109
- WHERE entity_type = ? AND entity_id = ? AND release_id IS NOT NULL AND release_id <= ?
108
+ WHERE entity_type = ? AND entity_slug = ? AND release_id IS NOT NULL AND release_id <= ?
110
109
  ORDER BY version DESC LIMIT 1`)
111
- .get(entityType, entityId, releaseId);
110
+ .get(entityType, entitySlug, releaseId);
112
111
  }
113
112
  return row ? this.toDetail(row) : null;
114
113
  }
115
- diff(entityType, entityId, fromVersion, toVersion) {
116
- const from = this.getVersion(entityType, entityId, fromVersion);
117
- const to = this.getVersion(entityType, entityId, toVersion);
114
+ diff(entityType, entitySlug, fromVersion, toVersion) {
115
+ const from = this.getVersion(entityType, entitySlug, fromVersion);
116
+ const to = this.getVersion(entityType, entitySlug, toVersion);
118
117
  if (!from || !to)
119
118
  throw new DomainError('NOT_FOUND', 'version not found');
120
119
  return { from, to, changes: computeDiff(from.data, to.data) };
121
120
  }
122
- nextVersionNumber(entityType, entityId) {
121
+ nextVersionNumber(entityType, entitySlug) {
123
122
  const row = this.db
124
- .prepare(`SELECT MAX(version) AS v FROM entity_version WHERE entity_type = ? AND entity_id = ?`)
125
- .get(entityType, entityId);
123
+ .prepare(`SELECT MAX(version) AS v FROM entity_version WHERE entity_type = ? AND entity_slug = ?`)
124
+ .get(entityType, entitySlug);
126
125
  return (row.v ?? 0) + 1;
127
126
  }
128
127
  toListItem(row) {
129
128
  return {
130
- id: row.id,
131
129
  version: row.version,
132
130
  changedBy: row.changed_by,
133
131
  changeSummary: row.change_summary,
@@ -138,9 +136,8 @@ export class VersionService {
138
136
  }
139
137
  toDetail(row) {
140
138
  return {
141
- id: row.id,
142
139
  entityType: row.entity_type,
143
- entityId: row.entity_id,
140
+ entitySlug: row.entity_slug,
144
141
  version: row.version,
145
142
  data: safeParse(row.data),
146
143
  changedBy: row.changed_by,
@@ -1 +1 @@
1
- {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../../src/server/services/versions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../../src/server/services/versions.ts"],"names":[],"mappings":"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"}
@@ -246,7 +246,6 @@ export interface TagUpdateInput {
246
246
  description?: string | null;
247
247
  }
248
248
  export interface VersionListItem {
249
- id: number;
250
249
  version: number;
251
250
  changedBy: ChangedBy;
252
251
  changeSummary: string | null;
@@ -258,7 +257,8 @@ export interface VersionListItem {
258
257
  }
259
258
  export interface VersionDetail extends VersionListItem {
260
259
  entityType: EntityType;
261
- entityId: number;
260
+ /** M29: slug is the sole entity identity; versions are keyed by (entityType, entitySlug, version). */
261
+ entitySlug: string;
262
262
  data: unknown;
263
263
  }
264
264
  export interface Release {
@@ -1,9 +1,13 @@
1
1
  export type PageNodeType = 'file' | 'folder';
2
+ /** M30: discriminator for a `type='file'` node. Missing ⇒ `'markdown'` (backward compatible). */
3
+ export type PageFileType = 'markdown' | 'html';
2
4
  export interface PageNode {
3
5
  type: PageNodeType;
4
6
  name: string;
5
7
  path: string;
6
8
  children?: PageNode[];
9
+ /** M30: only for `type='file'`. `.html` files are read-only previews, excluded from indexing/versioning. */
10
+ fileType?: PageFileType;
7
11
  }
8
12
  export interface PageContent {
9
13
  path: string;
@@ -29,6 +33,11 @@ export type WsEvent = {
29
33
  kind: 'entity:changed';
30
34
  entityType: string;
31
35
  slug: string;
36
+ } | {
37
+ kind: 'entity:indexed';
38
+ type: string;
39
+ slug: string;
40
+ op?: 'upsert' | 'delete';
32
41
  } | {
33
42
  kind: 'tag:changed';
34
43
  slug: string;
@@ -27,6 +27,14 @@ export declare function parseXmlTagsExcludingCode(md: string): XmlTag[];
27
27
  export declare function serializeXmlTag(kind: XmlTagKind | string, attrs: Record<string, string | null | undefined>): string;
28
28
  export declare function extractSlugs(tag: XmlTag): string[];
29
29
  export declare function extractTags(tag: XmlTag): string[];
30
+ /**
31
+ * True when a static XML tag (inline_mention / single_element / element_list) explicitly
32
+ * references the entity `(entityType, slug)`. tagged_list / tagged_list_mixed never match
33
+ * here — those are dynamic, tag-driven refs resolved via `taggedListVia`.
34
+ * Single source of truth for static reference matching — used by the references core
35
+ * (M19) and ReferencesService.
36
+ */
37
+ export declare function tagMatchesEntity(tag: XmlTag, entityType: string, slug: string): boolean;
30
38
  /**
31
39
  * Matched tag slugs ("via") when a tagged_list / tagged_list_mixed node references an
32
40
  * entity of `entityType` carrying `entityTags`; [] when it does not match.
@@ -118,6 +118,30 @@ export function extractTags(tag) {
118
118
  }
119
119
  return [];
120
120
  }
121
+ /**
122
+ * True when a static XML tag (inline_mention / single_element / element_list) explicitly
123
+ * references the entity `(entityType, slug)`. tagged_list / tagged_list_mixed never match
124
+ * here — those are dynamic, tag-driven refs resolved via `taggedListVia`.
125
+ * Single source of truth for static reference matching — used by the references core
126
+ * (M19) and ReferencesService.
127
+ */
128
+ export function tagMatchesEntity(tag, entityType, slug) {
129
+ if (tag.kind === 'tagged_list_mixed')
130
+ return false;
131
+ if (tag.attrs.type !== entityType)
132
+ return false;
133
+ if (tag.kind === 'inline_mention' || tag.kind === 'single_element') {
134
+ return tag.attrs.slug === slug;
135
+ }
136
+ if (tag.kind === 'element_list') {
137
+ return (tag.attrs.slugs ?? '')
138
+ .split(',')
139
+ .map((s) => s.trim())
140
+ .filter(Boolean)
141
+ .includes(slug);
142
+ }
143
+ return false;
144
+ }
121
145
  /**
122
146
  * Matched tag slugs ("via") when a tagged_list / tagged_list_mixed node references an
123
147
  * entity of `entityType` carrying `entityTags`; [] when it does not match.
@@ -1 +1 @@
1
- {"version":3,"file":"xml-tags.js","sourceRoot":"","sources":["../../src/shared/xml-tags.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"xml-tags.js","sourceRoot":"","sources":["../../src/shared/xml-tags.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inharness-ai/claude4spec",
3
- "version": "1.0.13",
3
+ "version": "1.0.15",
4
4
  "description": "Plan the whole system before your agent writes a line of code. Local-first planning layer with structured entities and typed relations.",
5
5
  "license": "MIT",
6
6
  "author": "Mike Tomala <mike@inharness.ai>",
@@ -1 +0,0 @@
1
- import{ai as o,aj as n}from"./mermaid.core-DP18nW3T.js";const t=(a,r)=>o.lang.round(n.parse(a)[r]);export{t as c};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-727SXJPM-C4DOvpJT.js";import{_ as i}from"./mermaid.core-DP18nW3T.js";import"./chunk-FMBD7UC4-CZA3OvVr.js";import"./chunk-ND2GUHAM-Cbx6nQHm.js";import"./chunk-55IACEB6-Cpd59xZT.js";import"./chunk-2J33WTMH-PtDSwC5f.js";import"./index-DcIG_8JB.js";var n={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{n as diagram};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-727SXJPM-C4DOvpJT.js";import{_ as i}from"./mermaid.core-DP18nW3T.js";import"./chunk-FMBD7UC4-CZA3OvVr.js";import"./chunk-ND2GUHAM-Cbx6nQHm.js";import"./chunk-55IACEB6-Cpd59xZT.js";import"./chunk-2J33WTMH-PtDSwC5f.js";import"./index-DcIG_8JB.js";var n={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{n as diagram};
@@ -1 +0,0 @@
1
- import{s as e,b as r,a,S as s}from"./chunk-AQP2D5EJ-CtjeHPBB.js";import{_ as i}from"./mermaid.core-DP18nW3T.js";import"./chunk-55IACEB6-Cpd59xZT.js";import"./chunk-2J33WTMH-PtDSwC5f.js";import"./index-DcIG_8JB.js";var p={parser:a,get db(){return new s(2)},renderer:r,styles:e,init:i(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")};export{p as diagram};
@@ -1,75 +0,0 @@
1
- -- v0.1.15 — 14 startowych Acceptance Criteria pokrywających M06 / M19 / M20.
2
- -- Każdy AC seedowany pod istniejące moduły: kind='requirement', status='active',
3
- -- plus tag mNN wiążący z modułem.
4
- -- Idempotent — INSERT OR IGNORE na (ac.slug UNIQUE) i (entity_tag UNIQUE).
5
-
6
- INSERT OR IGNORE INTO tag (slug, name) VALUES ('m06', 'm06');
7
- INSERT OR IGNORE INTO tag (slug, name) VALUES ('m19', 'm19');
8
- INSERT OR IGNORE INTO tag (slug, name) VALUES ('m20', 'm20');
9
-
10
- INSERT OR IGNORE INTO ac (slug, text, kind, status, verifies) VALUES
11
- ('m06-anchor-length-contract',
12
- 'Anchory generowane przez section indexer mają dokładnie 8 znaków z alfabetu [a-z0-9]; walidacja/parsing akceptuje 6-12 znaków (manualne semantyczne anchory).',
13
- 'requirement', 'active', '[]'),
14
- ('m06-section-indexer-auto-injection',
15
- 'Section indexer auto-injectuje anchor comments do nagłówków bez anchora; nie modyfikuje nagłówków, które już mają anchor.',
16
- 'requirement', 'active', '[]'),
17
- ('m06-section-ref-chip-rendering',
18
- '<section_ref anchor="X"/> renderuje się jako klikalny chip z heading text i page path; broken anchor (brak w section_index) renderuje broken chip.',
19
- 'requirement', 'active', '[]'),
20
-
21
- ('m19-find-references-include-tag-matches',
22
- 'find_references(type, slug, { includeTagMatches: true }) zwraca dynamic refs ze stron z <tagged_list/> i <tagged_list_mixed/>, których atrybut tags przecina się z tagami encji; pole via[] obecne tylko dla dynamic rows.',
23
- 'requirement', 'active', '[]'),
24
- ('m19-tagged-list-type-mismatch-skipped',
25
- '<tagged_list type="X"/> z type różnym od typu szukanej encji jest pomijany w find_references({includeTagMatches:true}) — embed nie pokazałby tej encji.',
26
- 'requirement', 'active', '[]'),
27
- ('m19-untagged-entity-no-op',
28
- 'Encja bez żadnego tagu w find_references({includeTagMatches:true}) → no-op (intersect zawsze pusty, brak dynamic rows w output).',
29
- 'requirement', 'active', '[]'),
30
-
31
- ('m20-three-editor-contexts',
32
- 'EditorFactory wspiera trzy konteksty edytora: page (pełny markdown), description (markdown bez task lists), plan (markdown + XML chips); każdy z osobnym mention sources rejestrem.',
33
- 'requirement', 'active', '[]'),
34
- ('m20-editor-factory-create',
35
- 'EditorFactory.create(contextId, initial) zwraca tiptap Editor zhydratowany dla danego kontekstu z initial content jako markdown string.',
36
- 'requirement', 'active', '[]'),
37
- ('m20-markdown-it-xml-rules',
38
- 'markdown-it ma custom rules xml_inline, xml_block, xml_block_content rozpoznające 6 nazw XML reference tags (inline_mention, single_element, element_list, tagged_list, tagged_list_mixed, section_ref).',
39
- 'requirement', 'active', '[]'),
40
- ('m20-xml-inline-dispatch-six-tags',
41
- 'xml_inline markdown-it rule dispatcher mapuje wszystkie 6 tag names na odpowiednie tiptap node types (5 z M19 + section_ref jako extension reference).',
42
- 'requirement', 'active', '[]'),
43
- ('m20-gfm-task-lists',
44
- 'Edytor wspiera GFM task lists (- [x] checked / - [ ] unchecked) z renderowaniem checkboxów i toggle przy kliknięciu.',
45
- 'requirement', 'active', '[]'),
46
- ('m20-five-generic-m19-nodes',
47
- 'Pięć generycznych tiptap nodów M19 (InlineMentionNode, SingleElementNode, ElementListNode, TaggedListNode, TaggedListMixedNode) deleguje render do clientPluginHost.getEntity(type).renderChip / renderCard.',
48
- 'requirement', 'active', '[]'),
49
- ('m20-outline-gutter',
50
- 'Outline gutter pokazuje listę sekcji strony z anchor + heading text; klik w pozycji scrolluje edytor do anchor i podświetla wiersz.',
51
- 'requirement', 'active', '[]'),
52
- ('m20-ws-query-keys',
53
- 'WebSocket events broadcastują invalidation keys mapujące na konkretne tanstack-query query keys; useChat / useEntityList nasłuchują i invalidują tylko zmienione zapytania.',
54
- 'requirement', 'active', '[]');
55
-
56
- -- Wiązanie AC z tagami modułów. SELECT-based pattern — działa bez względu na
57
- -- to, czy INSERT OR IGNORE wyżej wstawił nowy wiersz czy ominął istniejący.
58
- INSERT OR IGNORE INTO entity_tag (entity_type, entity_id, tag_id)
59
- SELECT 'ac', a.id, t.id FROM ac a, tag t
60
- WHERE (a.slug, t.slug) IN (
61
- ('m06-anchor-length-contract', 'm06'),
62
- ('m06-section-indexer-auto-injection', 'm06'),
63
- ('m06-section-ref-chip-rendering', 'm06'),
64
- ('m19-find-references-include-tag-matches', 'm19'),
65
- ('m19-tagged-list-type-mismatch-skipped', 'm19'),
66
- ('m19-untagged-entity-no-op', 'm19'),
67
- ('m20-three-editor-contexts', 'm20'),
68
- ('m20-editor-factory-create', 'm20'),
69
- ('m20-markdown-it-xml-rules', 'm20'),
70
- ('m20-xml-inline-dispatch-six-tags', 'm20'),
71
- ('m20-gfm-task-lists', 'm20'),
72
- ('m20-five-generic-m19-nodes', 'm20'),
73
- ('m20-outline-gutter', 'm20'),
74
- ('m20-ws-query-keys', 'm20')
75
- );