@jamesaphoenix/tx-core 0.7.0 → 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.
- package/dist/errors.d.ts +30 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +17 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/layer.d.ts +9 -4
- package/dist/layer.d.ts.map +1 -1
- package/dist/layer.js +27 -5
- package/dist/layer.js.map +1 -1
- package/dist/migrations-embedded.d.ts.map +1 -1
- package/dist/migrations-embedded.js +10 -0
- package/dist/migrations-embedded.js.map +1 -1
- package/dist/repo/attempt-repo.js +1 -1
- package/dist/repo/attempt-repo.js.map +1 -1
- package/dist/repo/guard-repo.d.ts +40 -0
- package/dist/repo/guard-repo.d.ts.map +1 -0
- package/dist/repo/guard-repo.js +98 -0
- package/dist/repo/guard-repo.js.map +1 -0
- package/dist/repo/index.d.ts +2 -0
- package/dist/repo/index.d.ts.map +1 -1
- package/dist/repo/index.js +2 -0
- package/dist/repo/index.js.map +1 -1
- package/dist/repo/label-repo.d.ts +31 -0
- package/dist/repo/label-repo.d.ts.map +1 -0
- package/dist/repo/label-repo.js +91 -0
- package/dist/repo/label-repo.js.map +1 -0
- package/dist/repo/task-repo.d.ts +5 -0
- package/dist/repo/task-repo.d.ts.map +1 -1
- package/dist/repo/task-repo.js +51 -1
- package/dist/repo/task-repo.js.map +1 -1
- package/dist/services/guard-service.d.ts +24 -0
- package/dist/services/guard-service.d.ts.map +1 -0
- package/dist/services/guard-service.js +132 -0
- package/dist/services/guard-service.js.map +1 -0
- package/dist/services/index.d.ts +3 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +3 -0
- package/dist/services/index.js.map +1 -1
- package/dist/services/ready-service.d.ts +4 -1
- package/dist/services/ready-service.d.ts.map +1 -1
- package/dist/services/ready-service.js +4 -2
- package/dist/services/ready-service.js.map +1 -1
- package/dist/services/reflect-service.d.ts +54 -0
- package/dist/services/reflect-service.d.ts.map +1 -0
- package/dist/services/reflect-service.js +293 -0
- package/dist/services/reflect-service.js.map +1 -0
- package/dist/services/task-service.d.ts +4 -3
- package/dist/services/task-service.d.ts.map +1 -1
- package/dist/services/task-service.js +94 -2
- package/dist/services/task-service.js.map +1 -1
- package/dist/services/verify-service.d.ts +30 -0
- package/dist/services/verify-service.d.ts.map +1 -0
- package/dist/services/verify-service.js +262 -0
- package/dist/services/verify-service.js.map +1 -0
- package/dist/utils/toml-config.d.ts +17 -0
- package/dist/utils/toml-config.d.ts.map +1 -1
- package/dist/utils/toml-config.js +87 -0
- package/dist/utils/toml-config.js.map +1 -1
- package/migrations/031_task_guards.sql +15 -0
- package/migrations/032_verify_cmd.sql +8 -0
- package/package.json +1 -1
|
@@ -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;
|
|
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":"AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
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'));
|