@jamesaphoenix/tx-core 0.5.5 → 0.5.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/README.md +4 -4
  2. package/dist/errors.d.ts +2 -0
  3. package/dist/errors.d.ts.map +1 -1
  4. package/dist/errors.js.map +1 -1
  5. package/dist/index.d.ts +2 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +2 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/repo/attempt-repo.d.ts.map +1 -1
  10. package/dist/repo/attempt-repo.js +19 -6
  11. package/dist/repo/attempt-repo.js.map +1 -1
  12. package/dist/repo/dep-repo.d.ts.map +1 -1
  13. package/dist/repo/dep-repo.js +37 -20
  14. package/dist/repo/dep-repo.js.map +1 -1
  15. package/dist/repo/learning-repo.d.ts.map +1 -1
  16. package/dist/repo/learning-repo.js +15 -2
  17. package/dist/repo/learning-repo.js.map +1 -1
  18. package/dist/repo/task-repo.d.ts +8 -0
  19. package/dist/repo/task-repo.d.ts.map +1 -1
  20. package/dist/repo/task-repo.js +137 -9
  21. package/dist/repo/task-repo.js.map +1 -1
  22. package/dist/services/doc-service.d.ts.map +1 -1
  23. package/dist/services/doc-service.js +193 -33
  24. package/dist/services/doc-service.js.map +1 -1
  25. package/dist/services/embedding-service.d.ts +1 -1
  26. package/dist/services/embedding-service.d.ts.map +1 -1
  27. package/dist/services/embedding-service.js +46 -6
  28. package/dist/services/embedding-service.js.map +1 -1
  29. package/dist/services/learning-service.d.ts.map +1 -1
  30. package/dist/services/learning-service.js +91 -3
  31. package/dist/services/learning-service.js.map +1 -1
  32. package/dist/services/ready-service.d.ts.map +1 -1
  33. package/dist/services/ready-service.js +76 -41
  34. package/dist/services/ready-service.js.map +1 -1
  35. package/dist/services/task-service.d.ts +2 -0
  36. package/dist/services/task-service.d.ts.map +1 -1
  37. package/dist/services/task-service.js +43 -2
  38. package/dist/services/task-service.js.map +1 -1
  39. package/dist/services/tracing-service.js +1 -1
  40. package/dist/services/tracing-service.js.map +1 -1
  41. package/dist/utils/doc-renderer.d.ts +3 -1
  42. package/dist/utils/doc-renderer.d.ts.map +1 -1
  43. package/dist/utils/doc-renderer.js +95 -0
  44. package/dist/utils/doc-renderer.js.map +1 -1
  45. package/dist/utils/ears-validator.d.ts +10 -0
  46. package/dist/utils/ears-validator.d.ts.map +1 -0
  47. package/dist/utils/ears-validator.js +170 -0
  48. package/dist/utils/ears-validator.js.map +1 -0
  49. package/package.json +1 -1
@@ -3,6 +3,17 @@ import { SqliteClient } from "../db.js";
3
3
  import { DatabaseError, TaskNotFoundError, UnexpectedRowCountError, StaleDataError } from "../errors.js";
4
4
  import { rowToTask } from "../mappers/task.js";
5
5
  import { escapeLikePattern } from "../utils/sql.js";
6
+ const MAX_SQL_VARIABLES = 900;
7
+ const chunkBySqlLimit = (values, chunkSize = MAX_SQL_VARIABLES) => {
8
+ if (values.length === 0) {
9
+ return [];
10
+ }
11
+ const chunks = [];
12
+ for (let i = 0; i < values.length; i += chunkSize) {
13
+ chunks.push(values.slice(i, i + chunkSize));
14
+ }
15
+ return chunks;
16
+ };
6
17
  export class TaskRepository extends Context.Tag("TaskRepository")() {
7
18
  }
8
19
  export const TaskRepositoryLive = Layer.effect(TaskRepository, Effect.gen(function* () {
@@ -19,8 +30,12 @@ export const TaskRepositoryLive = Layer.effect(TaskRepository, Effect.gen(functi
19
30
  try: () => {
20
31
  if (ids.length === 0)
21
32
  return [];
22
- const placeholders = ids.map(() => "?").join(",");
23
- const rows = db.prepare(`SELECT * FROM tasks WHERE id IN (${placeholders})`).all(...ids);
33
+ const rows = [];
34
+ for (const chunk of chunkBySqlLimit(ids)) {
35
+ const placeholders = chunk.map(() => "?").join(",");
36
+ const chunkRows = db.prepare(`SELECT * FROM tasks WHERE id IN (${placeholders})`).all(...chunk);
37
+ rows.push(...chunkRows);
38
+ }
24
39
  return rows.map(rowToTask);
25
40
  },
26
41
  catch: (cause) => new DatabaseError({ cause })
@@ -101,17 +116,19 @@ export const TaskRepositoryLive = Layer.effect(TaskRepository, Effect.gen(functi
101
116
  const result = new Map();
102
117
  if (ids.length === 0)
103
118
  return result;
104
- const placeholders = ids.map(() => "?").join(",");
105
- const rows = db.prepare(`SELECT id, parent_id FROM tasks WHERE parent_id IN (${placeholders})`).all(...ids);
106
119
  // Initialize all requested IDs with empty arrays
107
120
  for (const id of ids) {
108
121
  result.set(id, []);
109
122
  }
110
- // Group by parent_id - use push() for O(1) insertion instead of spread for O(n)
111
- for (const row of rows) {
112
- const existing = result.get(row.parent_id);
113
- if (existing) {
114
- existing.push(row.id);
123
+ for (const chunk of chunkBySqlLimit(ids)) {
124
+ const placeholders = chunk.map(() => "?").join(",");
125
+ const rows = db.prepare(`SELECT id, parent_id FROM tasks WHERE parent_id IN (${placeholders})`).all(...chunk);
126
+ // Group by parent_id - use push() for O(1) insertion instead of spread for O(n)
127
+ for (const row of rows) {
128
+ const existing = result.get(row.parent_id);
129
+ if (existing) {
130
+ existing.push(row.id);
131
+ }
115
132
  }
116
133
  }
117
134
  return result;
@@ -155,6 +172,93 @@ export const TaskRepositoryLive = Layer.effect(TaskRepository, Effect.gen(functi
155
172
  },
156
173
  catch: (cause) => new DatabaseError({ cause })
157
174
  }),
175
+ getGroupContextForMany: (ids) => Effect.try({
176
+ try: () => {
177
+ const result = new Map();
178
+ if (ids.length === 0)
179
+ return result;
180
+ for (const chunk of chunkBySqlLimit(ids)) {
181
+ const placeholders = chunk.map(() => "?").join(",");
182
+ const rows = db.prepare(`SELECT id, group_context
183
+ FROM tasks
184
+ WHERE id IN (${placeholders})
185
+ AND group_context IS NOT NULL
186
+ AND length(trim(group_context)) > 0`).all(...chunk);
187
+ for (const row of rows) {
188
+ if (row.group_context != null) {
189
+ result.set(row.id, row.group_context);
190
+ }
191
+ }
192
+ }
193
+ return result;
194
+ },
195
+ catch: (cause) => new DatabaseError({ cause })
196
+ }),
197
+ resolveEffectiveGroupContextForMany: (ids) => Effect.try({
198
+ try: () => {
199
+ const result = new Map();
200
+ if (ids.length === 0)
201
+ return result;
202
+ for (const chunk of chunkBySqlLimit(ids)) {
203
+ const valuesClause = chunk.map(() => "(?)").join(", ");
204
+ const rows = db.prepare(`WITH RECURSIVE
205
+ targets(target_id) AS (
206
+ VALUES ${valuesClause}
207
+ ),
208
+ ancestors(target_id, node_id, distance, path) AS (
209
+ SELECT t.target_id, t.target_id, 0, ',' || t.target_id || ','
210
+ FROM targets t
211
+ UNION ALL
212
+ SELECT a.target_id, parent.id, a.distance + 1, a.path || parent.id || ','
213
+ FROM ancestors a
214
+ JOIN tasks current ON current.id = a.node_id
215
+ JOIN tasks parent ON parent.id = current.parent_id
216
+ WHERE a.distance < 1000
217
+ AND instr(a.path, ',' || parent.id || ',') = 0
218
+ ),
219
+ descendants(target_id, node_id, distance, path) AS (
220
+ SELECT t.target_id, t.target_id, 0, ',' || t.target_id || ','
221
+ FROM targets t
222
+ UNION ALL
223
+ SELECT d.target_id, child.id, d.distance + 1, d.path || child.id || ','
224
+ FROM descendants d
225
+ JOIN tasks child ON child.parent_id = d.node_id
226
+ WHERE d.distance < 1000
227
+ AND instr(d.path, ',' || child.id || ',') = 0
228
+ ),
229
+ lineage(target_id, node_id, distance) AS (
230
+ SELECT target_id, node_id, distance FROM ancestors
231
+ UNION
232
+ SELECT target_id, node_id, distance FROM descendants
233
+ ),
234
+ ranked_sources AS (
235
+ SELECT l.target_id,
236
+ source.id AS source_id,
237
+ source.group_context,
238
+ ROW_NUMBER() OVER (
239
+ PARTITION BY l.target_id
240
+ ORDER BY l.distance ASC, source.updated_at DESC, source.id ASC
241
+ ) AS rn
242
+ FROM lineage l
243
+ JOIN tasks source ON source.id = l.node_id
244
+ WHERE source.group_context IS NOT NULL
245
+ AND length(trim(source.group_context)) > 0
246
+ )
247
+ SELECT target_id, source_id, group_context
248
+ FROM ranked_sources
249
+ WHERE rn = 1
250
+ ORDER BY target_id ASC`).all(...chunk);
251
+ for (const row of rows) {
252
+ result.set(row.target_id, {
253
+ sourceTaskId: row.source_id,
254
+ context: row.group_context
255
+ });
256
+ }
257
+ }
258
+ return result;
259
+ },
260
+ catch: (cause) => new DatabaseError({ cause })
261
+ }),
158
262
  insert: (task) => Effect.try({
159
263
  try: () => {
160
264
  const result = db.prepare(`INSERT INTO tasks (id, title, description, status, parent_id, score, created_at, updated_at, completed_at,
@@ -279,6 +383,30 @@ export const TaskRepositoryLive = Layer.effect(TaskRepository, Effect.gen(functi
279
383
  }
280
384
  }
281
385
  }),
386
+ setGroupContext: (taskId, context) => Effect.gen(function* () {
387
+ const now = new Date().toISOString();
388
+ const result = yield* Effect.try({
389
+ try: () => db.prepare(`UPDATE tasks
390
+ SET group_context = ?, updated_at = ?
391
+ WHERE id = ?`).run(context, now, taskId),
392
+ catch: (cause) => new DatabaseError({ cause })
393
+ });
394
+ if (result.changes === 0) {
395
+ yield* Effect.fail(new TaskNotFoundError({ id: taskId }));
396
+ }
397
+ }),
398
+ clearGroupContext: (taskId) => Effect.gen(function* () {
399
+ const now = new Date().toISOString();
400
+ const result = yield* Effect.try({
401
+ try: () => db.prepare(`UPDATE tasks
402
+ SET group_context = NULL, updated_at = ?
403
+ WHERE id = ?`).run(now, taskId),
404
+ catch: (cause) => new DatabaseError({ cause })
405
+ });
406
+ if (result.changes === 0) {
407
+ yield* Effect.fail(new TaskNotFoundError({ id: taskId }));
408
+ }
409
+ }),
282
410
  remove: (id) => Effect.gen(function* () {
283
411
  const result = yield* Effect.try({
284
412
  try: () => db.prepare("DELETE FROM tasks WHERE id = ?").run(id),
@@ -1 +1 @@
1
- {"version":3,"file":"task-repo.js","sourceRoot":"","sources":["../../src/repo/task-repo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task-repo.js","sourceRoot":"","sources":["../../src/repo/task-repo.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"doc-service.d.ts","sourceRoot":"","sources":["../../src/services/doc-service.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,cAAc,CAAA;AACrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAWjD,OAAO,KAAK,EACV,GAAG,EACH,OAAO,EACP,SAAS,EACT,cAAc,EACd,OAAO,EACP,WAAW,EACX,eAAe,EACf,QAAQ,EAGT,MAAM,yBAAyB,CAAA;;YAyFpB,CAAC,KAAK,EAAE;QACd,IAAI,EAAE,OAAO,CAAA;QACb,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,MAAM,CAAA;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACnC,KAAK,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,eAAe,GAAG,mBAAmB,GAAG,aAAa,CAAC;SAC1E,CACH,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,KACb,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,gBAAgB,GAAG,aAAa,CAAC;YACjD,CACN,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,KAChB,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,gBAAgB,GAAG,cAAc,GAAG,mBAAmB,GAAG,aAAa,CAAC;UAC1F,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,gBAAgB,GAAG,aAAa,CAAC;UACtE,CAAC,MAAM,CAAC,EAAE;QACd,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,KAAK,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC;YACjC,CACN,IAAI,EAAE,MAAM,KACT,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,GAAG,cAAc,GAAG,aAAa,CAAC;YACnE,CACN,IAAI,CAAC,EAAE,MAAM,KACV,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,gBAAgB,GAAG,aAAa,CAAC;mBAC/C,CACb,IAAI,EAAE,MAAM,KACT,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,gBAAgB,GAAG,eAAe,GAAG,aAAa,CAAC;cACjE,CACR,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,WAAW,KACnB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,GAAG,aAAa,CAAC;gBACnE,CACV,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,eAAe,KACvB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,GAAG,aAAa,CAAC;iBAC7C,CACX,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,KACf,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,gBAAgB,GAAG,eAAe,GAAG,aAAa,CAAC;cACjE,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC;iBACzC,CACX,IAAI,EAAE,MAAM,KACT,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,gBAAgB,GAAG,aAAa,CAAC;mBAC/C,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC;oBACvC,CACd,OAAO,CAAC,EAAE,MAAM,KACb,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,gBAAgB,GAAG,aAAa,CAAC;oBACjD,CAAC,MAAM,CAAC,EAAE;QACxB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,WAAW,CAAC,EAAE,MAAM,CAAA;KACrB,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,aAAa,CAAC;0BACzB,CACpB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,EACvB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,KACvB,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,sBAAsB,GAAG,aAAa,CAAC;iBAC7D,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC;;AAjE7D,qBAAa,UAAW,SAAQ,eAmE7B;CAAG;AAEN,eAAO,MAAM,cAAc,+CA6oB1B,CAAA"}
1
+ {"version":3,"file":"doc-service.d.ts","sourceRoot":"","sources":["../../src/services/doc-service.ts"],"names":[],"mappings":"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"}
@@ -8,12 +8,13 @@
8
8
  */
9
9
  import { readFileSync, writeFileSync, mkdirSync, existsSync, unlinkSync, } from "node:fs";
10
10
  import { resolve, dirname, join } from "node:path";
11
- import { Context, Effect, Layer } from "effect";
11
+ import { Cause, Context, Effect, Layer, Option } from "effect";
12
12
  import { parse as parseYaml, stringify as stringifyYaml } from "yaml";
13
13
  import { DocRepository } from "../repo/doc-repo.js";
14
14
  import { ValidationError, DocNotFoundError, DocLockedError, InvalidDocYamlError, InvariantNotFoundError, } from "../errors.js";
15
15
  import { computeDocHash } from "../utils/doc-hash.js";
16
16
  import { renderDocToMarkdown, renderIndexToMarkdown, } from "../utils/doc-renderer.js";
17
+ import { formatEarsValidationErrors, validateEarsRequirements, } from "../utils/ears-validator.js";
17
18
  import { readTxConfig } from "../utils/toml-config.js";
18
19
  import { DOC_KINDS, INVARIANT_ENFORCEMENT_TYPES, } from "@jamesaphoenix/tx-types";
19
20
  // Local string arrays for .includes() (avoids readonly cast)
@@ -50,7 +51,7 @@ const resolveMdPath = (docsPath, kind, name) => {
50
51
  : resolve(docsPath, `${name}.md`);
51
52
  };
52
53
  /** Validate YAML content and return parsed object. */
53
- const validateYaml = (name, content) => {
54
+ const validateYaml = (name, content, expectedKind) => {
54
55
  let parsed;
55
56
  try {
56
57
  parsed = parseYaml(content);
@@ -67,7 +68,28 @@ const validateYaml = (name, content) => {
67
68
  reason: "YAML must be an object (not array or scalar)",
68
69
  });
69
70
  }
70
- return parsed;
71
+ const parsedObject = parsed;
72
+ const yamlKind = typeof parsedObject.kind === "string" && docKindStrings.includes(parsedObject.kind)
73
+ ? parsedObject.kind
74
+ : null;
75
+ const effectiveKind = expectedKind ?? yamlKind;
76
+ if (effectiveKind === "prd" && parsedObject.ears_requirements !== undefined) {
77
+ if (!Array.isArray(parsedObject.ears_requirements)) {
78
+ throw new InvalidDocYamlError({
79
+ name,
80
+ reason: "EARS: 'ears_requirements' must be an array",
81
+ });
82
+ }
83
+ const errors = validateEarsRequirements(parsedObject.ears_requirements);
84
+ if (errors.length > 0) {
85
+ throw new InvalidDocYamlError({
86
+ name,
87
+ reason: `EARS: ${formatEarsValidationErrors(errors)}`,
88
+ earsErrors: errors,
89
+ });
90
+ }
91
+ }
92
+ return parsedObject;
71
93
  };
72
94
  /** Validate doc kind from YAML. */
73
95
  const validateKind = (name, parsed, expectedKind) => {
@@ -79,6 +101,136 @@ const validateKind = (name, parsed, expectedKind) => {
79
101
  });
80
102
  }
81
103
  };
104
+ const normalizeInvariantSegment = (value) => {
105
+ const normalized = value
106
+ .toUpperCase()
107
+ .replace(/[^A-Z0-9]+/g, "-")
108
+ .replace(/^-+|-+$/g, "")
109
+ .replace(/-+/g, "-");
110
+ return normalized.length > 0 ? normalized : "DOC";
111
+ };
112
+ const collectStringList = (value) => {
113
+ const normalize = (item) => {
114
+ const stripped = item
115
+ .trim()
116
+ .replace(/^[-*]\s+/, "")
117
+ .replace(/^\d+\.\s+/, "")
118
+ .trim();
119
+ return stripped.length > 0 ? stripped : null;
120
+ };
121
+ if (Array.isArray(value)) {
122
+ const out = [];
123
+ for (const item of value) {
124
+ if (typeof item !== "string")
125
+ continue;
126
+ const normalized = normalize(item);
127
+ if (!normalized)
128
+ continue;
129
+ out.push(normalized);
130
+ }
131
+ return out;
132
+ }
133
+ if (typeof value === "string") {
134
+ const out = [];
135
+ for (const line of value.split(/\r?\n/)) {
136
+ const normalized = normalize(line);
137
+ if (!normalized)
138
+ continue;
139
+ out.push(normalized);
140
+ }
141
+ return out;
142
+ }
143
+ return [];
144
+ };
145
+ const extractSubsystemFromEarsId = (id) => {
146
+ const match = /^EARS-([A-Z0-9]+)-\d{3}$/.exec(id);
147
+ return match?.[1]?.toLowerCase();
148
+ };
149
+ const extractExplicitInvariants = (raw) => {
150
+ if (!Array.isArray(raw))
151
+ return [];
152
+ const candidates = [];
153
+ for (const item of raw) {
154
+ if (typeof item !== "object" || item === null)
155
+ continue;
156
+ const inv = item;
157
+ const id = typeof inv.id === "string" ? inv.id : null;
158
+ const rule = typeof inv.rule === "string" ? inv.rule : null;
159
+ const enforcement = typeof inv.enforcement === "string" ? inv.enforcement : null;
160
+ if (!id || !rule || !enforcement)
161
+ continue;
162
+ if (!enforcementStrings.includes(enforcement))
163
+ continue;
164
+ candidates.push({
165
+ id,
166
+ rule,
167
+ enforcement,
168
+ subsystem: typeof inv.subsystem === "string"
169
+ ? inv.subsystem
170
+ : inv.subsystem === null
171
+ ? null
172
+ : undefined,
173
+ testRef: typeof inv.test_ref === "string" ? inv.test_ref : undefined,
174
+ lintRule: typeof inv.lint_rule === "string" ? inv.lint_rule : undefined,
175
+ promptRef: typeof inv.prompt_ref === "string" ? inv.prompt_ref : undefined,
176
+ });
177
+ }
178
+ return candidates;
179
+ };
180
+ const deriveEarsInvariants = (doc, parsed) => {
181
+ if (doc.kind !== "prd")
182
+ return [];
183
+ const raw = parsed.ears_requirements;
184
+ if (!Array.isArray(raw))
185
+ return [];
186
+ const candidates = [];
187
+ for (const item of raw) {
188
+ if (typeof item !== "object" || item === null)
189
+ continue;
190
+ const req = item;
191
+ const earsId = typeof req.id === "string" ? req.id : null;
192
+ const system = typeof req.system === "string" ? req.system.trim() : "";
193
+ const response = typeof req.response === "string" ? req.response.trim() : "";
194
+ if (!earsId || !system || !response)
195
+ continue;
196
+ candidates.push({
197
+ id: `INV-${earsId}`,
198
+ rule: `${system} shall ${response}`,
199
+ enforcement: "integration_test",
200
+ subsystem: extractSubsystemFromEarsId(earsId),
201
+ testRef: typeof req.test_hint === "string" ? req.test_hint : undefined,
202
+ });
203
+ }
204
+ return candidates;
205
+ };
206
+ const derivePrdRequirementInvariants = (doc, parsed) => {
207
+ if (doc.kind !== "prd")
208
+ return [];
209
+ const requirements = collectStringList(parsed.requirements);
210
+ if (requirements.length === 0)
211
+ return [];
212
+ const docSegment = normalizeInvariantSegment(doc.name);
213
+ return requirements.map((rule, index) => ({
214
+ id: `INV-PRD-${docSegment}-REQ-${String(index + 1).padStart(3, "0")}`,
215
+ rule,
216
+ enforcement: "integration_test",
217
+ subsystem: "prd",
218
+ }));
219
+ };
220
+ const deriveDesignGoalInvariants = (doc, parsed) => {
221
+ if (doc.kind !== "design")
222
+ return [];
223
+ const goals = collectStringList(parsed.goals);
224
+ if (goals.length === 0)
225
+ return [];
226
+ const docSegment = normalizeInvariantSegment(doc.name);
227
+ return goals.map((rule, index) => ({
228
+ id: `INV-DESIGN-${docSegment}-GOAL-${String(index + 1).padStart(3, "0")}`,
229
+ rule,
230
+ enforcement: "integration_test",
231
+ subsystem: "design",
232
+ }));
233
+ };
82
234
  export class DocService extends Context.Tag("DocService")() {
83
235
  }
84
236
  export const DocServiceLive = Layer.effect(DocService, Effect.gen(function* () {
@@ -100,7 +252,7 @@ export const DocServiceLive = Layer.effect(DocService, Effect.gen(function* () {
100
252
  throw new DocNotFoundError({ name: doc.name });
101
253
  }
102
254
  const yamlContent = readFileSync(yamlPath, "utf8");
103
- const parsed = validateYaml(doc.name, yamlContent);
255
+ const parsed = validateYaml(doc.name, yamlContent, doc.kind);
104
256
  const md = renderDocToMarkdown(parsed, doc.kind);
105
257
  const mdPath = resolveMdPath(docsPath, doc.kind, doc.name);
106
258
  ensureDir(mdPath);
@@ -208,42 +360,41 @@ export const DocServiceLive = Layer.effect(DocService, Effect.gen(function* () {
208
360
  return [];
209
361
  }
210
362
  const yamlContent = readFileSync(yamlPath, "utf8");
211
- const parsed = validateYaml(doc.name, yamlContent);
212
- const invariantsRaw = parsed.invariants;
213
- if (!Array.isArray(invariantsRaw) || invariantsRaw.length === 0) {
363
+ const parsed = validateYaml(doc.name, yamlContent, doc.kind);
364
+ const explicit = extractExplicitInvariants(parsed.invariants);
365
+ const derived = [
366
+ ...deriveEarsInvariants(doc, parsed),
367
+ ...derivePrdRequirementInvariants(doc, parsed),
368
+ ...deriveDesignGoalInvariants(doc, parsed),
369
+ ];
370
+ const candidates = [];
371
+ const seen = new Set();
372
+ for (const candidate of [...explicit, ...derived]) {
373
+ if (seen.has(candidate.id))
374
+ continue;
375
+ candidates.push(candidate);
376
+ seen.add(candidate.id);
377
+ }
378
+ if (candidates.length === 0) {
214
379
  yield* docRepo.deprecateInvariantsNotIn(doc.id, []);
215
380
  return [];
216
381
  }
217
382
  const synced = [];
218
383
  const activeIds = [];
219
- for (const raw of invariantsRaw) {
220
- if (typeof raw !== "object" || raw === null)
221
- continue;
222
- const inv = raw;
223
- const id = typeof inv.id === "string" ? inv.id : null;
224
- const rule = typeof inv.rule === "string" ? inv.rule : null;
225
- const enforcement = typeof inv.enforcement === "string" ? inv.enforcement : null;
226
- if (!id || !rule || !enforcement)
227
- continue;
228
- if (!enforcementStrings.includes(enforcement))
229
- continue;
384
+ for (const candidate of candidates) {
230
385
  const input = {
231
- id,
232
- rule,
233
- enforcement,
386
+ id: candidate.id,
387
+ rule: candidate.rule,
388
+ enforcement: candidate.enforcement,
234
389
  docId: doc.id,
235
- subsystem: typeof inv.subsystem === "string"
236
- ? inv.subsystem
237
- : inv.subsystem === null
238
- ? null
239
- : undefined,
240
- testRef: typeof inv.test_ref === "string" ? inv.test_ref : undefined,
241
- lintRule: typeof inv.lint_rule === "string" ? inv.lint_rule : undefined,
242
- promptRef: typeof inv.prompt_ref === "string" ? inv.prompt_ref : undefined,
390
+ subsystem: candidate.subsystem,
391
+ testRef: candidate.testRef,
392
+ lintRule: candidate.lintRule,
393
+ promptRef: candidate.promptRef,
243
394
  };
244
395
  const result = yield* docRepo.upsertInvariant(input);
245
396
  synced.push(result);
246
- activeIds.push(id);
397
+ activeIds.push(candidate.id);
247
398
  }
248
399
  yield* docRepo.deprecateInvariantsNotIn(doc.id, activeIds);
249
400
  return synced;
@@ -260,7 +411,7 @@ export const DocServiceLive = Layer.effect(DocService, Effect.gen(function* () {
260
411
  reason: `Invalid doc name: ${name}. Use alphanumeric with dashes/dots.`,
261
412
  }));
262
413
  }
263
- const parsed = validateYaml(name, yamlContent);
414
+ const parsed = validateYaml(name, yamlContent, kind);
264
415
  validateKind(name, parsed, kind);
265
416
  const existing = yield* docRepo.findByName(name);
266
417
  if (existing) {
@@ -308,7 +459,7 @@ export const DocServiceLive = Layer.effect(DocService, Effect.gen(function* () {
308
459
  if (doc.status === "locked") {
309
460
  return yield* Effect.fail(new DocLockedError({ name, version: doc.version }));
310
461
  }
311
- const parsed = validateYaml(name, yamlContent);
462
+ const parsed = validateYaml(name, yamlContent, doc.kind);
312
463
  validateKind(name, parsed, doc.kind);
313
464
  const hash = computeDocHash(yamlContent);
314
465
  const docsPath = getDocsPath();
@@ -562,7 +713,16 @@ export const DocServiceLive = Layer.effect(DocService, Effect.gen(function* () {
562
713
  else {
563
714
  const allDocs = yield* docRepo.findAll();
564
715
  for (const doc of allDocs) {
565
- const result = yield* syncInvariantsForDoc(doc);
716
+ // Keep whole-repo sync resilient: one malformed YAML file should not
717
+ // prevent invariants from being refreshed for every other doc.
718
+ const result = yield* syncInvariantsForDoc(doc).pipe(Effect.catchAllCause((cause) => {
719
+ const defect = Cause.dieOption(cause);
720
+ if (Option.isSome(defect) &&
721
+ defect.value instanceof InvalidDocYamlError) {
722
+ return Effect.succeed([]);
723
+ }
724
+ return Effect.failCause(cause);
725
+ }));
566
726
  synced.push(...result);
567
727
  }
568
728
  }