@pedrocivita/tocket 2.5.0 → 2.6.4

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 (102) hide show
  1. package/README.md +233 -18
  2. package/dist/commands/agents-md.cmd.d.ts +2 -0
  3. package/dist/commands/agents-md.cmd.js +166 -0
  4. package/dist/commands/agents-md.cmd.js.map +1 -0
  5. package/dist/commands/decide.cmd.d.ts +2 -0
  6. package/dist/commands/decide.cmd.js +70 -0
  7. package/dist/commands/decide.cmd.js.map +1 -0
  8. package/dist/commands/doctor.cmd.d.ts +13 -0
  9. package/dist/commands/doctor.cmd.js +135 -11
  10. package/dist/commands/doctor.cmd.js.map +1 -1
  11. package/dist/commands/eject.cmd.d.ts +1 -1
  12. package/dist/commands/eject.cmd.js +3 -1
  13. package/dist/commands/eject.cmd.js.map +1 -1
  14. package/dist/commands/init.cmd.js +67 -13
  15. package/dist/commands/init.cmd.js.map +1 -1
  16. package/dist/commands/scaffold.cmd.d.ts +2 -0
  17. package/dist/commands/scaffold.cmd.js +118 -0
  18. package/dist/commands/scaffold.cmd.js.map +1 -0
  19. package/dist/commands/suite.cmd.d.ts +2 -0
  20. package/dist/commands/suite.cmd.js +387 -0
  21. package/dist/commands/suite.cmd.js.map +1 -0
  22. package/dist/commands/validate.cmd.js +1 -0
  23. package/dist/commands/validate.cmd.js.map +1 -1
  24. package/dist/commands/work.cmd.d.ts +2 -0
  25. package/dist/commands/work.cmd.js +48 -0
  26. package/dist/commands/work.cmd.js.map +1 -0
  27. package/dist/eval/decide-eval.d.ts +28 -0
  28. package/dist/eval/decide-eval.js +34 -0
  29. package/dist/eval/decide-eval.js.map +1 -0
  30. package/dist/eval/triage-eval.d.ts +46 -0
  31. package/dist/eval/triage-eval.js +175 -0
  32. package/dist/eval/triage-eval.js.map +1 -0
  33. package/dist/index.js +11 -1
  34. package/dist/index.js.map +1 -1
  35. package/dist/mcp/index.d.ts +2 -0
  36. package/dist/mcp/index.js +7 -0
  37. package/dist/mcp/index.js.map +1 -0
  38. package/dist/mcp/server.d.ts +4 -0
  39. package/dist/mcp/server.js +360 -0
  40. package/dist/mcp/server.js.map +1 -0
  41. package/dist/templates/memory-bank.d.ts +11 -0
  42. package/dist/templates/memory-bank.js +456 -329
  43. package/dist/templates/memory-bank.js.map +1 -1
  44. package/dist/tests/agents.test.js +73 -1
  45. package/dist/tests/agents.test.js.map +1 -1
  46. package/dist/tests/context.test.js +10 -1
  47. package/dist/tests/context.test.js.map +1 -1
  48. package/dist/tests/decide.test.d.ts +1 -0
  49. package/dist/tests/decide.test.js +483 -0
  50. package/dist/tests/decide.test.js.map +1 -0
  51. package/dist/tests/doctor.test.js +74 -1
  52. package/dist/tests/doctor.test.js.map +1 -1
  53. package/dist/tests/eject.test.js +3 -0
  54. package/dist/tests/eject.test.js.map +1 -1
  55. package/dist/tests/git.test.js +17 -0
  56. package/dist/tests/git.test.js.map +1 -1
  57. package/dist/tests/helpers.d.ts +6 -0
  58. package/dist/tests/helpers.js +13 -0
  59. package/dist/tests/helpers.js.map +1 -0
  60. package/dist/tests/helpers.test.d.ts +1 -0
  61. package/dist/tests/helpers.test.js +23 -0
  62. package/dist/tests/helpers.test.js.map +1 -0
  63. package/dist/tests/init.test.js +85 -5
  64. package/dist/tests/init.test.js.map +1 -1
  65. package/dist/tests/loop.test.d.ts +1 -0
  66. package/dist/tests/loop.test.js +153 -0
  67. package/dist/tests/loop.test.js.map +1 -0
  68. package/dist/tests/memory-bank.test.js +53 -1
  69. package/dist/tests/memory-bank.test.js.map +1 -1
  70. package/dist/tests/suite.test.d.ts +1 -0
  71. package/dist/tests/suite.test.js +199 -0
  72. package/dist/tests/suite.test.js.map +1 -0
  73. package/dist/tests/triage.test.d.ts +1 -0
  74. package/dist/tests/triage.test.js +152 -0
  75. package/dist/tests/triage.test.js.map +1 -0
  76. package/dist/tests/work.test.d.ts +1 -0
  77. package/dist/tests/work.test.js +276 -0
  78. package/dist/tests/work.test.js.map +1 -0
  79. package/dist/utils/agents.d.ts +25 -0
  80. package/dist/utils/agents.js +92 -0
  81. package/dist/utils/agents.js.map +1 -1
  82. package/dist/utils/appmaps.d.ts +65 -0
  83. package/dist/utils/appmaps.js +280 -0
  84. package/dist/utils/appmaps.js.map +1 -0
  85. package/dist/utils/context.d.ts +2 -0
  86. package/dist/utils/context.js +21 -0
  87. package/dist/utils/context.js.map +1 -1
  88. package/dist/utils/decide.d.ts +178 -0
  89. package/dist/utils/decide.js +614 -0
  90. package/dist/utils/decide.js.map +1 -0
  91. package/dist/utils/git.js +8 -1
  92. package/dist/utils/git.js.map +1 -1
  93. package/dist/utils/jev.d.ts +83 -0
  94. package/dist/utils/jev.js +190 -0
  95. package/dist/utils/jev.js.map +1 -0
  96. package/dist/utils/triage.d.ts +87 -0
  97. package/dist/utils/triage.js +241 -0
  98. package/dist/utils/triage.js.map +1 -0
  99. package/dist/utils/work.d.ts +72 -0
  100. package/dist/utils/work.js +225 -0
  101. package/dist/utils/work.js.map +1 -0
  102. package/package.json +53 -50
@@ -0,0 +1,387 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { isAbsolute, join, resolve } from "node:path";
3
+ import { toRepoRelative } from "../utils/context.js";
4
+ import { APPMAPS_DIR, APPMAPS_GOALS, APPMAPS_README, LAST_RUN_JSON, LAST_RUN_MD, LAST_RUN_SCHEMA, LastRunValidationError, AppmapDiscoveryError, appmapBankFile, appmapBankRel, appmapsGoalsStub, appmapsReadmeStub, discoverAppmapJson, emptyLastRun, normalizeLastRunRaw, parseAppmapJson, parseLastRun, prettyLastRunJson, validateLastRun, writeLastRunMd, } from "../utils/appmaps.js";
5
+ import { TRIAGE_SCHEMA, runTriage } from "../utils/triage.js";
6
+ import { dim, error as themeError, heading, info, success, warn, } from "../utils/theme.js";
7
+ function appmapsDir(cwd) {
8
+ return join(cwd, APPMAPS_DIR);
9
+ }
10
+ function lastRunJsonPath(cwd) {
11
+ return join(appmapsDir(cwd), LAST_RUN_JSON);
12
+ }
13
+ function lastRunMdPath(cwd) {
14
+ return join(appmapsDir(cwd), LAST_RUN_MD);
15
+ }
16
+ function resolveFromPath(cwd, from) {
17
+ return isAbsolute(from) ? from : resolve(cwd, from);
18
+ }
19
+ function ensureAppmapsDir(cwd) {
20
+ const dir = appmapsDir(cwd);
21
+ mkdirSync(dir, { recursive: true });
22
+ return dir;
23
+ }
24
+ function ensureReadmeStub(dir) {
25
+ const readmePath = join(dir, APPMAPS_README);
26
+ if (!existsSync(readmePath)) {
27
+ writeFileSync(readmePath, appmapsReadmeStub(), "utf-8");
28
+ }
29
+ }
30
+ function writeLastRunFiles(cwd, raw, run) {
31
+ const dir = ensureAppmapsDir(cwd);
32
+ ensureReadmeStub(dir);
33
+ writeFileSync(lastRunJsonPath(cwd), prettyLastRunJson(raw), "utf-8");
34
+ writeFileSync(lastRunMdPath(cwd), writeLastRunMd(run), "utf-8");
35
+ }
36
+ function writeMapFile(cwd, app, sourcePath) {
37
+ const dir = ensureAppmapsDir(cwd);
38
+ ensureReadmeStub(dir);
39
+ const dest = join(dir, appmapBankFile(app));
40
+ const parsed = parseAppmapJson(readFileSync(sourcePath, "utf-8"));
41
+ writeFileSync(dest, prettyLastRunJson(parsed), "utf-8");
42
+ return dest;
43
+ }
44
+ function resolveMapSource(cwd, options) {
45
+ if (options.map) {
46
+ const path = resolveFromPath(cwd, options.map);
47
+ if (!existsSync(path)) {
48
+ throw new AppmapDiscoveryError(`AppMap not found: ${options.map}`);
49
+ }
50
+ return path;
51
+ }
52
+ if (options.mapperOut) {
53
+ return discoverAppmapJson(resolveFromPath(cwd, options.mapperOut), options.app);
54
+ }
55
+ throw new AppmapDiscoveryError("Pass --map <appmap.json> or --mapper-out <dir>");
56
+ }
57
+ function triageChoiceCounts(report) {
58
+ const counts = {
59
+ retry: 0,
60
+ escalate: 0,
61
+ ignore: 0,
62
+ "rewrite-locator": 0,
63
+ };
64
+ for (const item of report.cases) {
65
+ counts[item.choice] = (counts[item.choice] ?? 0) + 1;
66
+ }
67
+ return `${report.cases.length} cases retry=${counts.retry} escalate=${counts.escalate} ignore=${counts.ignore} rewrite-locator=${counts["rewrite-locator"]}`;
68
+ }
69
+ async function runLoop(cwd, options) {
70
+ const app = options.app.trim() || "tempestivita";
71
+ const triageEnabled = options.triage !== false;
72
+ const written = [];
73
+ let mapSource;
74
+ try {
75
+ mapSource = resolveMapSource(cwd, { map: options.map, mapperOut: options.mapperOut, app });
76
+ }
77
+ catch (err) {
78
+ const message = err instanceof Error ? err.message : String(err);
79
+ console.error(themeError(message));
80
+ process.exitCode = 2;
81
+ return;
82
+ }
83
+ let mapDest;
84
+ try {
85
+ mapDest = writeMapFile(cwd, app, mapSource);
86
+ written.push(`${APPMAPS_DIR}/${appmapBankFile(app)}`);
87
+ }
88
+ catch (err) {
89
+ const message = err instanceof Error ? err.message : String(err);
90
+ console.error(themeError(`Invalid AppMap: ${message}`));
91
+ process.exitCode = 1;
92
+ return;
93
+ }
94
+ let run;
95
+ if (options.lastRun) {
96
+ const sourcePath = resolveFromPath(cwd, options.lastRun);
97
+ if (!existsSync(sourcePath)) {
98
+ console.error(themeError(`Incoming last-run.json not found: ${options.lastRun}`));
99
+ process.exitCode = 1;
100
+ return;
101
+ }
102
+ try {
103
+ const text = readFileSync(sourcePath, "utf-8");
104
+ const raw = JSON.parse(text);
105
+ const normalized = normalizeLastRunRaw(raw, appmapBankRel(app), app);
106
+ run = validateLastRun(normalized);
107
+ writeLastRunFiles(cwd, normalized, run);
108
+ written.push(`${APPMAPS_DIR}/${LAST_RUN_JSON}`);
109
+ written.push(`${APPMAPS_DIR}/${LAST_RUN_MD}`);
110
+ }
111
+ catch (err) {
112
+ if (err instanceof LastRunValidationError || err instanceof SyntaxError) {
113
+ const message = err instanceof Error ? err.message : String(err);
114
+ console.error(themeError(`Invalid last-run.json: ${message}`));
115
+ process.exitCode = 1;
116
+ return;
117
+ }
118
+ throw err;
119
+ }
120
+ }
121
+ let report;
122
+ let triageRel;
123
+ if (run && triageEnabled) {
124
+ try {
125
+ const result = await runTriage({
126
+ fromPath: lastRunJsonPath(cwd),
127
+ cwd,
128
+ mapPath: mapDest,
129
+ includeLowConfidence: true,
130
+ dryRun: options.dryRun === true,
131
+ });
132
+ report = result.report;
133
+ triageRel = toRepoRelative(cwd, result.outPath);
134
+ written.push(triageRel);
135
+ }
136
+ catch (err) {
137
+ const message = err instanceof Error ? err.message : String(err);
138
+ console.error(themeError(`Triage failed: ${message}`));
139
+ process.exitCode = 1;
140
+ return;
141
+ }
142
+ }
143
+ console.log(heading("\n AppMap loop\n"));
144
+ console.log(" " + info(`app: ${app}`));
145
+ console.log(" " + info(`map source: ${toRepoRelative(cwd, mapSource) || mapSource}`));
146
+ for (const path of written) {
147
+ console.log(success(` wrote ${toRepoRelative(cwd, path)}`));
148
+ }
149
+ if (run) {
150
+ console.log(info(` last-run: ${run.passed}/${run.total} passed all_ok: ${run.all_ok}`));
151
+ }
152
+ else {
153
+ console.log(dim(" last-run: (not provided)"));
154
+ }
155
+ if (report) {
156
+ console.log(info(` triage: ${triageChoiceCounts(report)} mode: ${report.mode}`));
157
+ }
158
+ else if (!options.lastRun) {
159
+ console.log(dim(" triage: skipped (no --last-run)"));
160
+ }
161
+ else if (!triageEnabled) {
162
+ console.log(dim(" triage: skipped (--no-triage)"));
163
+ }
164
+ console.log();
165
+ }
166
+ function printStatus(run) {
167
+ const verdict = run.all_ok ? success : warn;
168
+ console.log(heading("\n AppMap last run\n"));
169
+ console.log(" " + info(`app: ${run.app || "(empty)"}`));
170
+ console.log(" " + info(`map: ${run.map || "(empty)"}`));
171
+ console.log(" " + dim(` runner: ${run.runner || "-"} model: ${run.model || "-"} mode: ${run.mode || "-"}`));
172
+ console.log(" " + dim(` finished: ${run.finished_at || "-"}`));
173
+ console.log(" " + verdict(`result: ${run.passed}/${run.total} passed`));
174
+ console.log(" " + verdict(`all_ok: ${run.all_ok}`));
175
+ console.log();
176
+ if (run.results.length === 0) {
177
+ console.log(" " + dim(" (no results)"));
178
+ console.log();
179
+ return;
180
+ }
181
+ console.log(" " + dim(" id name ok ms error"));
182
+ for (const result of run.results) {
183
+ const line = `${result.id} ${result.name} ${result.ok ? "pass" : "fail"} ${result.ms}ms${result.error ? ` ${result.error}` : ""}`;
184
+ console.log(" " + (result.ok ? success(line) : themeError(line)));
185
+ }
186
+ console.log();
187
+ }
188
+ function runStatus(cwd) {
189
+ const path = lastRunJsonPath(cwd);
190
+ if (!existsSync(path)) {
191
+ console.error(themeError(`No AppMap last-run found at ${APPMAPS_DIR}/${LAST_RUN_JSON}. Run 'tocket suite sync --from <path.json>' or 'tocket suite init'.`));
192
+ process.exitCode = 2;
193
+ return;
194
+ }
195
+ let run;
196
+ try {
197
+ run = parseLastRun(readFileSync(path, "utf-8"));
198
+ }
199
+ catch (err) {
200
+ const message = err instanceof Error ? err.message : String(err);
201
+ console.error(themeError(`Invalid ${APPMAPS_DIR}/${LAST_RUN_JSON}: ${message}`));
202
+ process.exitCode = 1;
203
+ return;
204
+ }
205
+ printStatus(run);
206
+ if (!run.all_ok) {
207
+ process.exitCode = 1;
208
+ }
209
+ }
210
+ function runSync(cwd, from) {
211
+ const sourcePath = resolveFromPath(cwd, from);
212
+ if (!existsSync(sourcePath)) {
213
+ console.error(themeError(`Incoming last-run.json not found: ${from}`));
214
+ process.exitCode = 1;
215
+ return;
216
+ }
217
+ let raw;
218
+ let run;
219
+ try {
220
+ const text = readFileSync(sourcePath, "utf-8");
221
+ raw = JSON.parse(text);
222
+ run = parseLastRun(text);
223
+ }
224
+ catch (err) {
225
+ if (err instanceof LastRunValidationError || err instanceof SyntaxError) {
226
+ const message = err instanceof Error ? err.message : String(err);
227
+ console.error(themeError(`Invalid last-run.json: ${message}`));
228
+ process.exitCode = 1;
229
+ return;
230
+ }
231
+ throw err;
232
+ }
233
+ writeLastRunFiles(cwd, raw, run);
234
+ console.log(heading("\n AppMap last-run synced\n"));
235
+ console.log(success(`Wrote ${APPMAPS_DIR}/${LAST_RUN_JSON}`));
236
+ console.log(success(`Wrote ${APPMAPS_DIR}/${LAST_RUN_MD}`));
237
+ console.log(info(`schema: ${LAST_RUN_SCHEMA}`));
238
+ console.log(info(`result: ${run.passed}/${run.total} passed all_ok: ${run.all_ok}\n`));
239
+ }
240
+ function writeIfMissing(path, contents) {
241
+ if (existsSync(path))
242
+ return false;
243
+ writeFileSync(path, contents, "utf-8");
244
+ return true;
245
+ }
246
+ function runInit(cwd) {
247
+ const dir = ensureAppmapsDir(cwd);
248
+ const empty = emptyLastRun();
249
+ const created = [];
250
+ const skipped = [];
251
+ const files = [
252
+ [join(dir, APPMAPS_README), appmapsReadmeStub()],
253
+ [join(dir, APPMAPS_GOALS), appmapsGoalsStub()],
254
+ [join(dir, LAST_RUN_JSON), prettyLastRunJson(empty)],
255
+ [join(dir, LAST_RUN_MD), writeLastRunMd(empty)],
256
+ ];
257
+ // ensureAppmapsDir may have already created the README stub
258
+ for (const [path, contents] of files) {
259
+ const rel = toRepoRelative(cwd, path);
260
+ if (writeIfMissing(path, contents)) {
261
+ created.push(rel);
262
+ }
263
+ else {
264
+ skipped.push(rel);
265
+ }
266
+ }
267
+ console.log(heading("\n AppMap Memory Bank\n"));
268
+ if (created.length === 0) {
269
+ console.log(info("Already initialized. Existing files were left unchanged.\n"));
270
+ return;
271
+ }
272
+ for (const file of created) {
273
+ console.log(success(`Created ${file}`));
274
+ }
275
+ for (const file of skipped) {
276
+ console.log(dim(` skipped ${file} (exists)`));
277
+ }
278
+ console.log();
279
+ }
280
+ function defaultLastRunPath(cwd) {
281
+ return lastRunJsonPath(cwd);
282
+ }
283
+ function printTriage(report, outPath, cwd) {
284
+ const rel = toRepoRelative(cwd, outPath);
285
+ console.log(heading("\n AppMap triage\n"));
286
+ console.log(" " + info(`app: ${report.app || "(empty)"}`));
287
+ console.log(" " + info(`mode: ${report.mode} model: ${report.model}`));
288
+ console.log(" " + dim(` schema: ${TRIAGE_SCHEMA}`));
289
+ console.log(" " + dim(` source: ${report.source}`));
290
+ console.log(" " + success(`wrote ${rel}`));
291
+ console.log();
292
+ if (report.cases.length === 0) {
293
+ console.log(" " + dim(" (no failed or low-confidence goals)"));
294
+ console.log();
295
+ return;
296
+ }
297
+ for (const item of report.cases) {
298
+ const line = `${item.id} ${item.name} ${item.choice} conf=${item.confidence.toFixed(2)} loc=${item.locator_drift.toFixed(2)}`;
299
+ const paint = item.choice === "escalate"
300
+ ? themeError
301
+ : item.choice === "rewrite-locator"
302
+ ? warn
303
+ : item.choice === "retry"
304
+ ? info
305
+ : success;
306
+ console.log(" " + paint(line));
307
+ console.log(" " + dim(` ${item.rationale}`));
308
+ }
309
+ console.log();
310
+ }
311
+ async function runTriageCommand(cwd, options) {
312
+ const fromPath = options.from
313
+ ? resolveFromPath(cwd, options.from)
314
+ : defaultLastRunPath(cwd);
315
+ if (!existsSync(fromPath)) {
316
+ console.error(themeError(`last-run.json not found: ${options.from ?? `${APPMAPS_DIR}/${LAST_RUN_JSON}`}. Pass --from <path.json>.`));
317
+ process.exitCode = 2;
318
+ return;
319
+ }
320
+ try {
321
+ const { report, outPath } = await runTriage({
322
+ fromPath,
323
+ cwd,
324
+ mapPath: options.map ? resolveFromPath(cwd, options.map) : undefined,
325
+ notes: options.notes,
326
+ includeLowConfidence: options.includeLowConfidence === true,
327
+ dryRun: options.dryRun === true,
328
+ outPath: options.out ? resolveFromPath(cwd, options.out) : undefined,
329
+ });
330
+ printTriage(report, outPath, cwd);
331
+ }
332
+ catch (err) {
333
+ const message = err instanceof Error ? err.message : String(err);
334
+ console.error(themeError(`Triage failed: ${message}`));
335
+ process.exitCode = 1;
336
+ }
337
+ }
338
+ export function registerSuiteCommand(program) {
339
+ const suite = program
340
+ .command("suite")
341
+ .description("AppMap Memory Bank — file-first run history (does not execute maps)");
342
+ suite
343
+ .command("status")
344
+ .description("Print the last AppMap run from .context/appmaps/last-run.json")
345
+ .action(() => {
346
+ runStatus(process.cwd());
347
+ });
348
+ suite
349
+ .command("sync")
350
+ .description("Copy a last-run.json into .context/appmaps/ and regenerate last-run.md")
351
+ .requiredOption("--from <path.json>", "Incoming last-run.json to validate and copy")
352
+ .action((options) => {
353
+ runSync(process.cwd(), options.from);
354
+ });
355
+ suite
356
+ .command("init")
357
+ .description("Scaffold empty .context/appmaps/ index templates")
358
+ .action(() => {
359
+ runInit(process.cwd());
360
+ });
361
+ suite
362
+ .command("triage")
363
+ .description("Triage failed AppMap goals (Jev Choice, or heuristic without TYPESAFE_API_KEY)")
364
+ .option("--from <path.json>", "last-run.json to triage (default .context/appmaps/last-run.json)")
365
+ .option("--map <path>", "Optional map file excerpt included in the Jev state")
366
+ .option("--notes <text>", "Optional failure notes included in the judge state")
367
+ .option("--include-low-confidence", "Also triage passing goals with jev_confidence < 0.6")
368
+ .option("--dry-run", "Force the deterministic heuristic stub and still write output")
369
+ .option("--out <path.json>", "Override output path (default .context/appmaps/<app>.triage.json)")
370
+ .action(async (options) => {
371
+ await runTriageCommand(process.cwd(), options);
372
+ });
373
+ suite
374
+ .command("loop")
375
+ .alias("refresh")
376
+ .description("Copy mapper AppMap + optional last-run into .context/appmaps/ and triage")
377
+ .option("--app <name>", "App slug for the bank map filename", "tempestivita")
378
+ .option("--map <appmap.json>", "AppMap JSON to copy into the Memory Bank")
379
+ .option("--mapper-out <dir>", "Directory to discover *.appmap.json from")
380
+ .option("--last-run <json>", "Optional last-run.json to sync (same schema as suite sync)")
381
+ .option("--no-triage", "Skip triage even when last-run is present")
382
+ .option("--dry-run", "Force heuristic triage (no API key) and still write output")
383
+ .action(async (options) => {
384
+ await runLoop(process.cwd(), options);
385
+ });
386
+ }
387
+ //# sourceMappingURL=suite.cmd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suite.cmd.js","sourceRoot":"","sources":["../../src/commands/suite.cmd.ts"],"names":[],"mappings":"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"}
@@ -31,6 +31,7 @@ export function checkStale(basePath, relativePath) {
31
31
  }
32
32
  export function checkAgentFile(basePath) {
33
33
  const agentFiles = [
34
+ "AGENTS.md",
34
35
  "CLAUDE.md",
35
36
  "GEMINI.md",
36
37
  "EXECUTOR.md",
@@ -1 +1 @@
1
- {"version":3,"file":"validate.cmd.js","sourceRoot":"","sources":["../../src/commands/validate.cmd.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.cmd.js","sourceRoot":"","sources":["../../src/commands/validate.cmd.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,IAAI,IAAI,SAAS,EAAE,KAAK,IAAI,SAAS,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACzG,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AAC3B,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AAC3B,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AAO3B,MAAM,UAAU,SAAS,CACvB,QAAgB,EAChB,YAAoB,EACpB,QAAiB;IAEjB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC9C,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,YAAY,QAAQ,EAAE,CAAC;IAC1D,CAAC;IACD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,YAAY,qBAAqB,EAAE,CAAC;IACvE,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,YAAY,qBAAqB,EAAE,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,QAAgB,EAAE,YAAoB;IAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvC,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACjC,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAClC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CACrD,CAAC;IAEF,IAAI,iBAAiB,GAAG,wBAAwB,EAAE,CAAC;QACjD,OAAO;YACL,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,GAAG,YAAY,kBAAkB,iBAAiB,0BAA0B;SACtF,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,MAAM,UAAU,GAAG;QACjB,WAAW;QACX,WAAW;QACX,WAAW;QACX,aAAa;QACb,cAAc;QACd,cAAc;KACf,CAAC;IACF,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEtE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO;YACL,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,uBAAuB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SACnD,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,yDAAyD;KACnE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,wCAAwC,CAAC;SACrD,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAkB,EAAE,CAAC;QAClC,IAAI,UAAU,GAAG,KAAK,CAAC;QAEvB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAE3D,iBAAiB;QACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CACV,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,EAAE,IAAI,CAAC,CAC3D,CAAC;QACF,OAAO,CAAC,IAAI,CACV,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,mBAAmB,CAAC,EAAE,IAAI,CAAC,CAC5D,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;QAEhD,iBAAiB;QACjB,OAAO,CAAC,IAAI,CACV,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,EAAE,KAAK,CAAC,CAC1D,CAAC;QACF,OAAO,CAAC,IAAI,CACV,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,mBAAmB,CAAC,EAAE,KAAK,CAAC,CAC7D,CAAC;QACF,OAAO,CAAC,IAAI,CACV,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,EAAE,KAAK,CAAC,CACvD,CAAC;QAEF,eAAe;QACf,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;QAElC,kBAAkB;QAClB,MAAM,UAAU,GAAG,UAAU,CAC3B,GAAG,EACH,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CACrC,CAAC;QACF,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3B,CAAC;QAED,gBAAgB;QAChB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACxC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI;gBAAE,UAAU,GAAG,IAAI,CAAC;QACzC,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,uBAAuB,CAAC,GAAG,6CAA6C,CAAC,CAAC;YAChG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerWorkCommand(program: Command): void;
@@ -0,0 +1,48 @@
1
+ import { isAbsolute, resolve } from "node:path";
2
+ import { error as themeError, success } from "../utils/theme.js";
3
+ import { WorkError, runWork } from "../utils/work.js";
4
+ function resolveFromPath(cwd, from) {
5
+ return isAbsolute(from) ? from : resolve(cwd, from);
6
+ }
7
+ export function registerWorkCommand(program) {
8
+ program
9
+ .command("work")
10
+ .description("Read a Choice from .context/decisions/ and plan or apply it. Never calls Jev.")
11
+ .addHelpText("after", `
12
+ tocket decide writes the next move. tocket work is the first-party reference worker:
13
+ it reads that Choice and stamps a notebook receipt. It does not re-decide, call
14
+ TypeSafe/Jev, open a browser, or edit application code.
15
+
16
+ Default is dry-run / plan (exit 0): print choice, destination, confidence, gated, tool_gate.
17
+ --apply write <id>.applied.json next to the decision and a progress line
18
+ --from <json> decision file (default: newest under .context/decisions/{research,write,review}/)
19
+ --force required to --apply a shadow / log-only / dry-run decision, or to override tool_gate=block|ask
20
+
21
+ A tool_gate / action_gate Choice (allow|block|ask) is the file-first risk gate.
22
+ block → exit 2; ask → exit 2 (escalate/human); allow or no gate field → apply as usual.
23
+ Shadow / log-only apply still needs --force even when tool_gate=allow.
24
+
25
+ Exit codes: 0 ok, 1 missing/invalid decision, 2 refuse (shadow or tool_gate block/ask without --force).
26
+ `)
27
+ .option("--from <decision.json>", "Decision JSON (default: newest queue decision)")
28
+ .option("--apply", "Stamp an execution receipt and a progress line (default is dry-run/plan)")
29
+ .option("--force", "Allow --apply on shadow/log-only decisions or tool_gate=block|ask")
30
+ .action(async (options) => {
31
+ const cwd = process.cwd();
32
+ try {
33
+ const result = runWork({
34
+ cwd,
35
+ fromPath: options.from ? resolveFromPath(cwd, options.from) : undefined,
36
+ apply: options.apply === true,
37
+ force: options.force === true,
38
+ });
39
+ console.log(success(result.summary));
40
+ }
41
+ catch (err) {
42
+ const message = err instanceof Error ? err.message : String(err);
43
+ console.error(themeError(message));
44
+ process.exitCode = err instanceof WorkError ? err.exitCode : 1;
45
+ }
46
+ });
47
+ }
48
+ //# sourceMappingURL=work.cmd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work.cmd.js","sourceRoot":"","sources":["../../src/commands/work.cmd.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEtD,SAAS,eAAe,CAAC,GAAW,EAAE,IAAY;IAChD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,+EAA+E,CAAC;SAC5F,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;;;CAeL,CACI;SACA,MAAM,CAAC,wBAAwB,EAAE,gDAAgD,CAAC;SAClF,MAAM,CAAC,SAAS,EAAE,0EAA0E,CAAC;SAC7F,MAAM,CAAC,SAAS,EAAE,mEAAmE,CAAC;SACtF,MAAM,CACL,KAAK,EAAE,OAIN,EAAE,EAAE;QACH,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,OAAO,CAAC;gBACrB,GAAG;gBACH,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;gBACvE,KAAK,EAAE,OAAO,CAAC,KAAK,KAAK,IAAI;gBAC7B,KAAK,EAAE,OAAO,CAAC,KAAK,KAAK,IAAI;aAC9B,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;YACnC,OAAO,CAAC,QAAQ,GAAG,GAAG,YAAY,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,CAAC;IACH,CAAC,CACF,CAAC;AACN,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Optional stub eval for `tocket decide` vs a fixture label.
3
+ *
4
+ * Used by src/tests/decide.test.ts (no live Jev).
5
+ */
6
+ export interface DecideExpectedFile {
7
+ schema: string;
8
+ source: string;
9
+ choice: {
10
+ spec: string;
11
+ expected: string;
12
+ };
13
+ noul: {
14
+ name: string;
15
+ expected_max: number;
16
+ };
17
+ }
18
+ export interface DecideEvalResult {
19
+ choice: string;
20
+ expectedChoice: string;
21
+ choiceOk: boolean;
22
+ noul: number;
23
+ expectedMax: number;
24
+ noulOk: boolean;
25
+ ok: boolean;
26
+ }
27
+ export declare function loadDecideExpected(path: string): DecideExpectedFile;
28
+ export declare function evaluateDecideStub(statePath: string, expectedPath: string): DecideEvalResult;
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Optional stub eval for `tocket decide` vs a fixture label.
3
+ *
4
+ * Used by src/tests/decide.test.ts (no live Jev).
5
+ */
6
+ import { readFileSync } from "node:fs";
7
+ import { stubChoice, stubNoul, parseStateInput } from "../utils/decide.js";
8
+ export function loadDecideExpected(path) {
9
+ return JSON.parse(readFileSync(path, "utf-8"));
10
+ }
11
+ export function evaluateDecideStub(statePath, expectedPath) {
12
+ const expected = loadDecideExpected(expectedPath);
13
+ const state = parseStateInput(readFileSync(statePath, "utf-8"));
14
+ const colon = expected.choice.spec.indexOf(":");
15
+ const name = expected.choice.spec.slice(0, colon);
16
+ const options = expected.choice.spec
17
+ .slice(colon + 1)
18
+ .split(",")
19
+ .map((item) => item.trim());
20
+ const choice = stubChoice(name, options, state);
21
+ const noul = stubNoul(expected.noul.name, state);
22
+ const choiceOk = choice.choice === expected.choice.expected;
23
+ const noulOk = noul.noul <= expected.noul.expected_max;
24
+ return {
25
+ choice: choice.choice,
26
+ expectedChoice: expected.choice.expected,
27
+ choiceOk,
28
+ noul: noul.noul,
29
+ expectedMax: expected.noul.expected_max,
30
+ noulOk,
31
+ ok: choiceOk && noulOk,
32
+ };
33
+ }
34
+ //# sourceMappingURL=decide-eval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decide-eval.js","sourceRoot":"","sources":["../../src/eval/decide-eval.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAyB3E,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAuB,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,SAAiB,EAAE,YAAoB;IACxE,MAAM,QAAQ,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,eAAe,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI;SACjC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;SAChB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;IACvD,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ;QACxC,QAAQ;QACR,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,YAAY;QACvC,MAAM;QACN,EAAE,EAAE,QAAQ,IAAI,MAAM;KACvB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * POC C eval: heuristic/Jev triage vs human labels + stability + naive baseline.
4
+ *
5
+ * npm run eval:triage
6
+ */
7
+ import { type TriageChoice } from "../utils/triage.js";
8
+ export declare const AGREEMENT_HYPOTHESIS = 0.8;
9
+ export declare const STABILITY_KILL = 0.3;
10
+ export declare const CHANCE_BASELINE = 0.25;
11
+ export interface ExpectedCase {
12
+ id: string;
13
+ expected: TriageChoice;
14
+ flavor: string;
15
+ why: string;
16
+ }
17
+ export interface ExpectedFile {
18
+ schema: string;
19
+ notes: string;
20
+ include_low_confidence: boolean;
21
+ source: string;
22
+ cases: ExpectedCase[];
23
+ }
24
+ export interface EvalDisagreement {
25
+ id: string;
26
+ expected: TriageChoice;
27
+ got: TriageChoice;
28
+ flavor: string;
29
+ }
30
+ export interface EvalResult {
31
+ total: number;
32
+ agreed: number;
33
+ agreement: number;
34
+ naiveAgreed: number;
35
+ naiveAgreement: number;
36
+ chance: number;
37
+ unstable: number;
38
+ unstableRate: number;
39
+ disagreements: EvalDisagreement[];
40
+ verdict: "PASS" | "FAIL" | "GRAY";
41
+ reasons: string[];
42
+ }
43
+ export declare function loadExpected(path: string): ExpectedFile;
44
+ export declare function evaluateTriage(lastRunPath: string, expectedPath: string): EvalResult;
45
+ export declare function pct(value: number): string;
46
+ export declare function renderResultsMd(result: EvalResult): string;