@jamesaphoenix/tx-core 0.6.1 → 0.8.0

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 (65) hide show
  1. package/README.md +11 -1
  2. package/dist/errors.d.ts +30 -1
  3. package/dist/errors.d.ts.map +1 -1
  4. package/dist/errors.js +17 -0
  5. package/dist/errors.js.map +1 -1
  6. package/dist/index.d.ts +2 -2
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +6 -2
  9. package/dist/index.js.map +1 -1
  10. package/dist/layer.d.ts +9 -4
  11. package/dist/layer.d.ts.map +1 -1
  12. package/dist/layer.js +27 -5
  13. package/dist/layer.js.map +1 -1
  14. package/dist/migrations-embedded.d.ts.map +1 -1
  15. package/dist/migrations-embedded.js +10 -0
  16. package/dist/migrations-embedded.js.map +1 -1
  17. package/dist/repo/attempt-repo.js +1 -1
  18. package/dist/repo/attempt-repo.js.map +1 -1
  19. package/dist/repo/guard-repo.d.ts +40 -0
  20. package/dist/repo/guard-repo.d.ts.map +1 -0
  21. package/dist/repo/guard-repo.js +98 -0
  22. package/dist/repo/guard-repo.js.map +1 -0
  23. package/dist/repo/index.d.ts +2 -0
  24. package/dist/repo/index.d.ts.map +1 -1
  25. package/dist/repo/index.js +2 -0
  26. package/dist/repo/index.js.map +1 -1
  27. package/dist/repo/label-repo.d.ts +31 -0
  28. package/dist/repo/label-repo.d.ts.map +1 -0
  29. package/dist/repo/label-repo.js +91 -0
  30. package/dist/repo/label-repo.js.map +1 -0
  31. package/dist/repo/task-repo.d.ts +5 -0
  32. package/dist/repo/task-repo.d.ts.map +1 -1
  33. package/dist/repo/task-repo.js +51 -1
  34. package/dist/repo/task-repo.js.map +1 -1
  35. package/dist/services/guard-service.d.ts +24 -0
  36. package/dist/services/guard-service.d.ts.map +1 -0
  37. package/dist/services/guard-service.js +132 -0
  38. package/dist/services/guard-service.js.map +1 -0
  39. package/dist/services/index.d.ts +3 -0
  40. package/dist/services/index.d.ts.map +1 -1
  41. package/dist/services/index.js +3 -0
  42. package/dist/services/index.js.map +1 -1
  43. package/dist/services/ready-service.d.ts +4 -1
  44. package/dist/services/ready-service.d.ts.map +1 -1
  45. package/dist/services/ready-service.js +4 -2
  46. package/dist/services/ready-service.js.map +1 -1
  47. package/dist/services/reflect-service.d.ts +54 -0
  48. package/dist/services/reflect-service.d.ts.map +1 -0
  49. package/dist/services/reflect-service.js +293 -0
  50. package/dist/services/reflect-service.js.map +1 -0
  51. package/dist/services/task-service.d.ts +4 -3
  52. package/dist/services/task-service.d.ts.map +1 -1
  53. package/dist/services/task-service.js +94 -2
  54. package/dist/services/task-service.js.map +1 -1
  55. package/dist/services/verify-service.d.ts +30 -0
  56. package/dist/services/verify-service.d.ts.map +1 -0
  57. package/dist/services/verify-service.js +262 -0
  58. package/dist/services/verify-service.js.map +1 -0
  59. package/dist/utils/toml-config.d.ts +17 -0
  60. package/dist/utils/toml-config.d.ts.map +1 -1
  61. package/dist/utils/toml-config.js +87 -0
  62. package/dist/utils/toml-config.js.map +1 -1
  63. package/migrations/031_task_guards.sql +15 -0
  64. package/migrations/032_verify_cmd.sql +8 -0
  65. package/package.json +1 -1
@@ -0,0 +1,262 @@
1
+ import { Context, Effect, Layer } from "effect";
2
+ import { spawn } from "node:child_process";
3
+ import { readFileSync } from "node:fs";
4
+ import { resolve as resolvePath, relative, isAbsolute } from "node:path";
5
+ import { TaskRepository } from "../repo/task-repo.js";
6
+ import { TaskNotFoundError, VerifyError } from "../errors.js";
7
+ import { readTxConfig } from "../utils/toml-config.js";
8
+ export class VerifyService extends Context.Tag("VerifyService")() {
9
+ }
10
+ export const VerifyServiceLive = Layer.effect(VerifyService, Effect.gen(function* () {
11
+ const taskRepo = yield* TaskRepository;
12
+ const config = readTxConfig();
13
+ // Capture project root at layer construction time, not at command execution time.
14
+ // This prevents cwd drift if process.chdir() is called later (e.g. in tests or MCP server).
15
+ const projectRoot = process.cwd();
16
+ return {
17
+ set: (id, cmd, schema) => Effect.gen(function* () {
18
+ const task = yield* taskRepo.findById(id);
19
+ if (!task) {
20
+ return yield* Effect.fail(new TaskNotFoundError({ id }));
21
+ }
22
+ yield* taskRepo.updateVerifyCmd(id, cmd, schema ?? null);
23
+ }),
24
+ show: (id) => Effect.gen(function* () {
25
+ const task = yield* taskRepo.findById(id);
26
+ if (!task) {
27
+ return yield* Effect.fail(new TaskNotFoundError({ id }));
28
+ }
29
+ const result = yield* taskRepo.getVerifyCmd(id);
30
+ return result;
31
+ }),
32
+ run: (id, options) => Effect.gen(function* () {
33
+ const task = yield* taskRepo.findById(id);
34
+ if (!task) {
35
+ return yield* Effect.fail(new TaskNotFoundError({ id }));
36
+ }
37
+ const verify = yield* taskRepo.getVerifyCmd(id);
38
+ if (!verify.cmd) {
39
+ return yield* Effect.fail(new VerifyError({
40
+ taskId: id,
41
+ reason: "No verify command set. Use `tx verify set <id> <cmd>` first.",
42
+ }));
43
+ }
44
+ const timeout = (options?.timeout ?? config.verify.timeout) * 1000;
45
+ // Execute the command
46
+ const result = yield* Effect.tryPromise({
47
+ try: () => executeCommand(verify.cmd, timeout, projectRoot),
48
+ catch: (cause) => new VerifyError({
49
+ taskId: id,
50
+ reason: `Command execution failed: ${String(cause)}`,
51
+ cause,
52
+ }),
53
+ });
54
+ // If a schema is set, validate the output
55
+ const schemaPath = verify.schema ?? config.verify.defaultSchema;
56
+ let output;
57
+ let schemaValid;
58
+ if (schemaPath) {
59
+ // Guard against path traversal: schema must resolve within project root
60
+ // Uses projectRoot captured at layer construction time to prevent cwd drift
61
+ const resolvedSchema = resolvePath(projectRoot, schemaPath);
62
+ const rel = relative(projectRoot, resolvedSchema);
63
+ if (rel.startsWith("..") || isAbsolute(rel)) {
64
+ return yield* Effect.fail(new VerifyError({
65
+ taskId: id,
66
+ reason: `Schema path "${schemaPath}" escapes project root`,
67
+ }));
68
+ }
69
+ let schemaContent;
70
+ try {
71
+ schemaContent = readFileSync(resolvedSchema, "utf8");
72
+ }
73
+ catch (err) {
74
+ return yield* Effect.fail(new VerifyError({
75
+ taskId: id,
76
+ reason: `Schema file not found or unreadable: ${schemaPath}`,
77
+ cause: err,
78
+ }));
79
+ }
80
+ let schema;
81
+ try {
82
+ schema = JSON.parse(schemaContent);
83
+ }
84
+ catch (err) {
85
+ return yield* Effect.fail(new VerifyError({
86
+ taskId: id,
87
+ reason: `Schema file is not valid JSON: ${schemaPath}`,
88
+ cause: err,
89
+ }));
90
+ }
91
+ try {
92
+ output = JSON.parse(result.stdout);
93
+ schemaValid = validateJsonSchema(output, schema);
94
+ }
95
+ catch {
96
+ schemaValid = false;
97
+ }
98
+ }
99
+ else {
100
+ // Try to parse stdout as JSON for structured output
101
+ try {
102
+ output = JSON.parse(result.stdout);
103
+ }
104
+ catch {
105
+ // Not JSON, that's fine
106
+ }
107
+ }
108
+ const passed = result.exitCode === 0 && (schemaValid === undefined || schemaValid);
109
+ return {
110
+ taskId: id,
111
+ exitCode: result.exitCode,
112
+ passed,
113
+ stdout: result.stdout,
114
+ stderr: result.stderr,
115
+ durationMs: result.durationMs,
116
+ output,
117
+ schemaValid,
118
+ };
119
+ }),
120
+ clear: (id) => Effect.gen(function* () {
121
+ const task = yield* taskRepo.findById(id);
122
+ if (!task) {
123
+ return yield* Effect.fail(new TaskNotFoundError({ id }));
124
+ }
125
+ yield* taskRepo.updateVerifyCmd(id, null, null);
126
+ }),
127
+ };
128
+ }));
129
+ const MAX_OUTPUT_BYTES = 10 * 1024 * 1024; // 10 MB cap per stream
130
+ function executeCommand(cmd, timeoutMs, cwd) {
131
+ return new Promise((resolvePromise, reject) => {
132
+ const start = Date.now();
133
+ let settled = false;
134
+ const settle = (fn) => {
135
+ if (settled)
136
+ return;
137
+ settled = true;
138
+ fn();
139
+ };
140
+ const child = spawn("sh", ["-c", cmd], {
141
+ stdio: ["ignore", "pipe", "pipe"],
142
+ detached: true,
143
+ cwd,
144
+ env: { ...process.env },
145
+ });
146
+ let stdout = "";
147
+ let stderr = "";
148
+ let killed = false;
149
+ let killTimer = null;
150
+ child.stdout.on("data", (data) => {
151
+ if (stdout.length < MAX_OUTPUT_BYTES) {
152
+ const remaining = MAX_OUTPUT_BYTES - stdout.length;
153
+ stdout += data.toString().slice(0, remaining);
154
+ }
155
+ });
156
+ child.stderr.on("data", (data) => {
157
+ if (stderr.length < MAX_OUTPUT_BYTES) {
158
+ const remaining = MAX_OUTPUT_BYTES - stderr.length;
159
+ stderr += data.toString().slice(0, remaining);
160
+ }
161
+ });
162
+ const killProcessGroup = () => {
163
+ if (child.pid) {
164
+ try {
165
+ process.kill(-child.pid, "SIGKILL");
166
+ }
167
+ catch { /* already dead */ }
168
+ }
169
+ };
170
+ const timer = setTimeout(() => {
171
+ killed = true;
172
+ if (child.pid) {
173
+ try {
174
+ process.kill(-child.pid, "SIGTERM");
175
+ }
176
+ catch { /* already dead */ }
177
+ }
178
+ killTimer = setTimeout(() => {
179
+ killProcessGroup();
180
+ // Hard deadline: if close never fires, settle the Promise anyway
181
+ settle(() => reject(new Error(`Command timed out after ${timeoutMs}ms`)));
182
+ }, 5000);
183
+ // Do NOT call killTimer.unref() — this timer must fire unconditionally
184
+ // to guarantee SIGKILL delivery even when the event loop is otherwise idle
185
+ }, timeoutMs);
186
+ timer.unref();
187
+ const cleanup = () => {
188
+ clearTimeout(timer);
189
+ if (killTimer)
190
+ clearTimeout(killTimer);
191
+ };
192
+ const SIGNAL_NUMBERS = {
193
+ SIGHUP: 1, SIGINT: 2, SIGQUIT: 3, SIGILL: 4, SIGTRAP: 5,
194
+ SIGABRT: 6, SIGFPE: 8, SIGKILL: 9, SIGSEGV: 11, SIGPIPE: 13,
195
+ SIGALRM: 14, SIGTERM: 15,
196
+ };
197
+ child.on("close", (code, signal) => {
198
+ cleanup();
199
+ const durationMs = Date.now() - start;
200
+ if (killed) {
201
+ settle(() => reject(new Error(`Command timed out after ${timeoutMs}ms`)));
202
+ return;
203
+ }
204
+ // Derive exit code: numeric code if set, else 128 + signal number, else 1
205
+ const exitCode = code ?? (signal ? 128 + (SIGNAL_NUMBERS[signal] ?? 15) : 1);
206
+ settle(() => resolvePromise({ exitCode, stdout, stderr, durationMs }));
207
+ });
208
+ child.on("error", (err) => {
209
+ cleanup();
210
+ settle(() => reject(err));
211
+ });
212
+ });
213
+ }
214
+ /**
215
+ * Minimal JSON Schema validation for required fields and types.
216
+ * Only validates top-level required + type checks — not a full JSON Schema validator.
217
+ * Validates: top-level type (object vs array), required fields, property type checks.
218
+ */
219
+ function validateJsonSchema(data, schema) {
220
+ if (typeof data !== "object" || data === null)
221
+ return false;
222
+ // Validate top-level type if specified
223
+ if (typeof schema.type === "string") {
224
+ if (schema.type === "object" && Array.isArray(data))
225
+ return false;
226
+ if (schema.type === "array" && !Array.isArray(data))
227
+ return false;
228
+ }
229
+ const obj = data;
230
+ // Check required fields
231
+ const required = schema.required;
232
+ if (Array.isArray(required)) {
233
+ for (const field of required) {
234
+ if (typeof field === "string" && !(field in obj)) {
235
+ return false;
236
+ }
237
+ }
238
+ }
239
+ // Check property types
240
+ const properties = schema.properties;
241
+ if (properties && typeof properties === "object") {
242
+ const props = properties;
243
+ for (const [key, propSchema] of Object.entries(props)) {
244
+ if (key in obj && propSchema.type) {
245
+ const value = obj[key];
246
+ const expectedType = propSchema.type;
247
+ if (expectedType === "number" && typeof value !== "number")
248
+ return false;
249
+ if (expectedType === "string" && typeof value !== "string")
250
+ return false;
251
+ if (expectedType === "boolean" && typeof value !== "boolean")
252
+ return false;
253
+ if (expectedType === "object" && (typeof value !== "object" || value === null || Array.isArray(value)))
254
+ return false;
255
+ if (expectedType === "array" && !Array.isArray(value))
256
+ return false;
257
+ }
258
+ }
259
+ }
260
+ return true;
261
+ }
262
+ //# sourceMappingURL=verify-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify-service.js","sourceRoot":"","sources":["../../src/services/verify-service.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export type DashboardDefaultTaskAssigmentType = "human" | "agent";
2
+ export type GuardMode = "advisory" | "enforce";
2
3
  export interface TxConfig {
3
4
  docs: {
4
5
  path: string;
@@ -17,6 +18,22 @@ export interface TxConfig {
17
18
  pins: {
18
19
  targetFiles: string[];
19
20
  };
21
+ guard: {
22
+ mode: GuardMode;
23
+ maxPending: number | null;
24
+ maxChildren: number | null;
25
+ maxDepth: number | null;
26
+ };
27
+ verify: {
28
+ timeout: number;
29
+ defaultSchema: string | null;
30
+ };
31
+ reflect: {
32
+ provider: string;
33
+ model: string | null;
34
+ defaultSessions: number;
35
+ includeTranscripts: boolean;
36
+ };
20
37
  }
21
38
  export declare const DASHBOARD_DEFAULT_TASK_ASSIGMENT_KEY = "default_task_assigment_type";
22
39
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"toml-config.d.ts","sourceRoot":"","sources":["../../src/utils/toml-config.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,iCAAiC,GAAG,OAAO,GAAG,OAAO,CAAA;AAEjE,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IACtB,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9B,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACpE,SAAS,EAAE;QAAE,wBAAwB,EAAE,iCAAiC,CAAA;KAAE,CAAA;IAC1E,IAAI,EAAE;QAAE,WAAW,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;CAChC;AAED,eAAO,MAAM,oCAAoC,gCAAgC,CAAA;AA0BjF;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,MAAK,MAAsB,KAAG,QA6C1D,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,sCAAsC,GACjD,OAAO,iCAAiC,EACxC,MAAK,MAAsB,KAC1B,QAiBF,CAAA;AAkLD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,MAAK,MAAsB,KAAG,OAShE,CAAA"}
1
+ {"version":3,"file":"toml-config.d.ts","sourceRoot":"","sources":["../../src/utils/toml-config.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,iCAAiC,GAAG,OAAO,GAAG,OAAO,CAAA;AACjE,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,SAAS,CAAA;AAE9C,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IACtB,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9B,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACpE,SAAS,EAAE;QAAE,wBAAwB,EAAE,iCAAiC,CAAA;KAAE,CAAA;IAC1E,IAAI,EAAE;QAAE,WAAW,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;IAC/B,KAAK,EAAE;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;IAC1G,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;IACzD,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,OAAO,CAAA;KAAE,CAAA;CAC1G;AAED,eAAO,MAAM,oCAAoC,gCAAgC,CAAA;AAkCjF;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,MAAK,MAAsB,KAAG,QA8E1D,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,sCAAsC,GACjD,OAAO,iCAAiC,EACxC,MAAK,MAAsB,KAC1B,QAiBF,CAAA;AAqOD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,MAAK,MAAsB,KAAG,OAShE,CAAA"}
@@ -10,12 +10,19 @@ const DOCS_SECTION = "docs";
10
10
  const CYCLES_SECTION = "cycles";
11
11
  const PINS_SECTION = "pins";
12
12
  const MEMORY_SECTION = "memory";
13
+ const GUARD_SECTION = "guard";
14
+ const VERIFY_SECTION = "verify";
15
+ const REFLECT_SECTION = "reflect";
16
+ const isGuardMode = (v) => v === "advisory" || v === "enforce";
13
17
  const DEFAULT_CONFIG = {
14
18
  docs: { path: ".tx/docs" },
15
19
  memory: { defaultDir: "docs" },
16
20
  cycles: { scanPrompt: null, agents: 3, model: "claude-opus-4-6" },
17
21
  dashboard: { defaultTaskAssigmentType: "human" },
18
22
  pins: { targetFiles: ["CLAUDE.md", "AGENTS.md"] },
23
+ guard: { mode: "advisory", maxPending: null, maxChildren: null, maxDepth: null },
24
+ verify: { timeout: 300, defaultSchema: null },
25
+ reflect: { provider: "auto", model: null, defaultSessions: 10, includeTranscripts: false },
19
26
  };
20
27
  const isDashboardDefaultTaskAssigmentType = (value) => value === "human" || value === "agent";
21
28
  const parseTaskAssigmentTypeOrDefault = (value) => isDashboardDefaultTaskAssigmentType(value)
@@ -40,6 +47,19 @@ export const readTxConfig = (cwd = process.cwd()) => {
40
47
  const defaultTaskAssigmentType = extractTomlValue(raw, DASHBOARD_SECTION, DASHBOARD_DEFAULT_TASK_ASSIGMENT_KEY);
41
48
  const memoryDefaultDir = extractTomlValue(raw, MEMORY_SECTION, "default_dir");
42
49
  const pinsTargetFiles = extractTomlValue(raw, PINS_SECTION, "target_files");
50
+ // Guard section
51
+ const guardMode = extractTomlValue(raw, GUARD_SECTION, "mode");
52
+ const guardMaxPending = extractTomlValue(raw, GUARD_SECTION, "max_pending");
53
+ const guardMaxChildren = extractTomlValue(raw, GUARD_SECTION, "max_children");
54
+ const guardMaxDepth = extractTomlValue(raw, GUARD_SECTION, "max_depth");
55
+ // Verify section
56
+ const verifyTimeout = extractTomlValue(raw, VERIFY_SECTION, "timeout");
57
+ const verifyDefaultSchema = extractTomlValue(raw, VERIFY_SECTION, "default_schema");
58
+ // Reflect section
59
+ const reflectProvider = extractTomlValue(raw, REFLECT_SECTION, "provider");
60
+ const reflectModel = extractTomlValue(raw, REFLECT_SECTION, "model");
61
+ const reflectDefaultSessions = extractTomlValue(raw, REFLECT_SECTION, "default_sessions");
62
+ const reflectIncludeTranscripts = extractTomlValue(raw, REFLECT_SECTION, "include_transcripts");
43
63
  return {
44
64
  docs: {
45
65
  path: docsPath ?? DEFAULT_CONFIG.docs.path,
@@ -62,6 +82,22 @@ export const readTxConfig = (cwd = process.cwd()) => {
62
82
  ? pinsTargetFiles.split(",").map(f => f.trim()).filter(Boolean)
63
83
  : DEFAULT_CONFIG.pins.targetFiles,
64
84
  },
85
+ guard: {
86
+ mode: isGuardMode(guardMode) ? guardMode : DEFAULT_CONFIG.guard.mode,
87
+ maxPending: guardMaxPending ? parseInt(guardMaxPending, 10) : DEFAULT_CONFIG.guard.maxPending,
88
+ maxChildren: guardMaxChildren ? parseInt(guardMaxChildren, 10) : DEFAULT_CONFIG.guard.maxChildren,
89
+ maxDepth: guardMaxDepth ? parseInt(guardMaxDepth, 10) : DEFAULT_CONFIG.guard.maxDepth,
90
+ },
91
+ verify: {
92
+ timeout: verifyTimeout ? parseInt(verifyTimeout, 10) : DEFAULT_CONFIG.verify.timeout,
93
+ defaultSchema: verifyDefaultSchema ?? DEFAULT_CONFIG.verify.defaultSchema,
94
+ },
95
+ reflect: {
96
+ provider: reflectProvider ?? DEFAULT_CONFIG.reflect.provider,
97
+ model: reflectModel ?? DEFAULT_CONFIG.reflect.model,
98
+ defaultSessions: reflectDefaultSessions ? parseInt(reflectDefaultSessions, 10) : DEFAULT_CONFIG.reflect.defaultSessions,
99
+ includeTranscripts: reflectIncludeTranscripts === "true" ? true : DEFAULT_CONFIG.reflect.includeTranscripts,
100
+ },
65
101
  };
66
102
  }
67
103
  catch {
@@ -239,6 +275,57 @@ default_task_assigment_type = "human"
239
275
  # Both Claude Code (CLAUDE.md) and Codex (AGENTS.md) are synced by default
240
276
  # so all agents share the same persistent context.
241
277
  target_files = "CLAUDE.md, AGENTS.md"
278
+
279
+ # ─── Guard ─────────────────────────────────────────────────────────
280
+ # Task creation guards — lightweight limits checked at \`tx add\` time.
281
+ # Prevents unbounded task proliferation in agent loops.
282
+ # Commands: tx guard set, tx guard show, tx guard clear
283
+ [guard]
284
+
285
+ # Guard mode: "advisory" (default) or "enforce"
286
+ # Advisory: tasks are created with warning metadata, stderr warning printed
287
+ # Enforce: tx add fails with GuardExceededError when limits are hit
288
+ mode = "advisory"
289
+
290
+ # Default limits (can be overridden per-scope via tx guard set)
291
+ # max_pending = 50
292
+ # max_children = 10
293
+ # max_depth = 4
294
+
295
+ # ─── Verify ────────────────────────────────────────────────────────
296
+ # Machine-checkable done criteria attached to tasks.
297
+ # Attach a shell command to a task; \`tx verify run <id>\` executes it.
298
+ # Exit 0 = pass, non-zero = fail.
299
+ # Commands: tx verify set, tx verify show, tx verify run, tx verify clear
300
+ [verify]
301
+
302
+ # Default timeout in seconds for verification commands.
303
+ timeout = 300
304
+
305
+ # Default JSON schema for structured verification output.
306
+ # Leave commented for exit-code-only mode (default).
307
+ # default_schema = "verify-schema.json"
308
+
309
+ # ─── Reflect ───────────────────────────────────────────────────────
310
+ # Macro-level session retrospective — look at recent sessions,
311
+ # assess what is working, and surface machine-readable signals.
312
+ # Commands: tx reflect
313
+ [reflect]
314
+
315
+ # LLM provider for \`tx reflect --analyze\`
316
+ # "auto" = auto-detect from available env vars (default)
317
+ # "claude" = uses ANTHROPIC_API_KEY
318
+ # "codex" = uses OPENAI_API_KEY
319
+ provider = "auto"
320
+
321
+ # Model for analysis tier
322
+ # model = "claude-opus-4-6"
323
+
324
+ # Default number of sessions to analyze
325
+ default_sessions = 10
326
+
327
+ # Whether to include transcript parsing by default
328
+ include_transcripts = false
242
329
  `;
243
330
  /**
244
331
  * Scaffold .tx/config.toml with annotated defaults.
@@ -1 +1 @@
1
- {"version":3,"file":"toml-config.js","sourceRoot":"","sources":["../../src/utils/toml-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"toml-config.js","sourceRoot":"","sources":["../../src/utils/toml-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ -- Version: 031
2
+ -- Migration: Task creation guards — lightweight limits enforced at create time
3
+
4
+ CREATE TABLE IF NOT EXISTS task_guards (
5
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
6
+ scope TEXT NOT NULL UNIQUE, -- 'global', 'parent:<task_id>'
7
+ max_pending INTEGER, -- max non-done tasks at any time
8
+ max_children INTEGER, -- max direct children per parent
9
+ max_depth INTEGER, -- max hierarchy nesting depth
10
+ enforce INTEGER NOT NULL DEFAULT 0, -- 0=advisory, 1=hard block
11
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
12
+ );
13
+
14
+ -- Record this migration
15
+ INSERT OR IGNORE INTO schema_version (version, applied_at) VALUES (31, datetime('now'));
@@ -0,0 +1,8 @@
1
+ -- Version: 032
2
+ -- Migration: Verification commands — attach machine-checkable done criteria to tasks
3
+
4
+ ALTER TABLE tasks ADD COLUMN verify_cmd TEXT;
5
+ ALTER TABLE tasks ADD COLUMN verify_schema TEXT;
6
+
7
+ -- Record this migration
8
+ INSERT OR IGNORE INTO schema_version (version, applied_at) VALUES (32, datetime('now'));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jamesaphoenix/tx-core",
3
- "version": "0.6.1",
3
+ "version": "0.8.0",
4
4
  "description": "Core business logic for tx - Effect-TS services and repositories",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",