@pedrocivita/tocket 2.4.0 → 2.6.3
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/README.md +229 -18
- package/dist/commands/agents-md.cmd.d.ts +2 -0
- package/dist/commands/agents-md.cmd.js +166 -0
- package/dist/commands/agents-md.cmd.js.map +1 -0
- package/dist/commands/dashboard.js +2 -0
- package/dist/commands/dashboard.js.map +1 -1
- package/dist/commands/decide.cmd.d.ts +2 -0
- package/dist/commands/decide.cmd.js +70 -0
- package/dist/commands/decide.cmd.js.map +1 -0
- package/dist/commands/diff.cmd.d.ts +15 -0
- package/dist/commands/diff.cmd.js +106 -0
- package/dist/commands/diff.cmd.js.map +1 -0
- package/dist/commands/doctor.cmd.d.ts +13 -0
- package/dist/commands/doctor.cmd.js +159 -11
- package/dist/commands/doctor.cmd.js.map +1 -1
- package/dist/commands/eject.cmd.d.ts +1 -1
- package/dist/commands/eject.cmd.js +3 -1
- package/dist/commands/eject.cmd.js.map +1 -1
- package/dist/commands/generate.cmd.js +7 -1
- package/dist/commands/generate.cmd.js.map +1 -1
- package/dist/commands/handoff.cmd.d.ts +14 -0
- package/dist/commands/handoff.cmd.js +131 -0
- package/dist/commands/handoff.cmd.js.map +1 -0
- package/dist/commands/init.cmd.js +64 -11
- package/dist/commands/init.cmd.js.map +1 -1
- package/dist/commands/scaffold.cmd.d.ts +2 -0
- package/dist/commands/scaffold.cmd.js +118 -0
- package/dist/commands/scaffold.cmd.js.map +1 -0
- package/dist/commands/suite.cmd.d.ts +2 -0
- package/dist/commands/suite.cmd.js +386 -0
- package/dist/commands/suite.cmd.js.map +1 -0
- package/dist/commands/validate.cmd.js +1 -0
- package/dist/commands/validate.cmd.js.map +1 -1
- package/dist/commands/work.cmd.d.ts +2 -0
- package/dist/commands/work.cmd.js +48 -0
- package/dist/commands/work.cmd.js.map +1 -0
- package/dist/eval/decide-eval.d.ts +28 -0
- package/dist/eval/decide-eval.js +34 -0
- package/dist/eval/decide-eval.js.map +1 -0
- package/dist/eval/triage-eval.d.ts +46 -0
- package/dist/eval/triage-eval.js +174 -0
- package/dist/eval/triage-eval.js.map +1 -0
- package/dist/index.js +15 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/index.d.ts +2 -0
- package/dist/mcp/index.js +7 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/server.d.ts +4 -0
- package/dist/mcp/server.js +360 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/templates/memory-bank.d.ts +11 -0
- package/dist/templates/memory-bank.js +456 -329
- package/dist/templates/memory-bank.js.map +1 -1
- package/dist/tests/agents.test.js +59 -1
- package/dist/tests/agents.test.js.map +1 -1
- package/dist/tests/decide.test.d.ts +1 -0
- package/dist/tests/decide.test.js +483 -0
- package/dist/tests/decide.test.js.map +1 -0
- package/dist/tests/diff.test.d.ts +1 -0
- package/dist/tests/diff.test.js +119 -0
- package/dist/tests/diff.test.js.map +1 -0
- package/dist/tests/doctor.test.js +73 -1
- package/dist/tests/doctor.test.js.map +1 -1
- package/dist/tests/eject.test.js +3 -0
- package/dist/tests/eject.test.js.map +1 -1
- package/dist/tests/git.test.js +32 -1
- package/dist/tests/git.test.js.map +1 -1
- package/dist/tests/handoff.test.d.ts +1 -0
- package/dist/tests/handoff.test.js +97 -0
- package/dist/tests/handoff.test.js.map +1 -0
- package/dist/tests/helpers.d.ts +4 -0
- package/dist/tests/helpers.js +9 -0
- package/dist/tests/helpers.js.map +1 -0
- package/dist/tests/helpers.test.d.ts +1 -0
- package/dist/tests/helpers.test.js +16 -0
- package/dist/tests/helpers.test.js.map +1 -0
- package/dist/tests/init.test.js +53 -2
- package/dist/tests/init.test.js.map +1 -1
- package/dist/tests/loop.test.d.ts +1 -0
- package/dist/tests/loop.test.js +153 -0
- package/dist/tests/loop.test.js.map +1 -0
- package/dist/tests/memory-bank.test.js +53 -1
- package/dist/tests/memory-bank.test.js.map +1 -1
- package/dist/tests/suite.test.d.ts +1 -0
- package/dist/tests/suite.test.js +199 -0
- package/dist/tests/suite.test.js.map +1 -0
- package/dist/tests/triage.test.d.ts +1 -0
- package/dist/tests/triage.test.js +152 -0
- package/dist/tests/triage.test.js.map +1 -0
- package/dist/tests/work.test.d.ts +1 -0
- package/dist/tests/work.test.js +276 -0
- package/dist/tests/work.test.js.map +1 -0
- package/dist/tests/xml.test.d.ts +1 -0
- package/dist/tests/xml.test.js +139 -0
- package/dist/tests/xml.test.js.map +1 -0
- package/dist/utils/agents.d.ts +23 -0
- package/dist/utils/agents.js +82 -0
- package/dist/utils/agents.js.map +1 -1
- package/dist/utils/appmaps.d.ts +65 -0
- package/dist/utils/appmaps.js +280 -0
- package/dist/utils/appmaps.js.map +1 -0
- package/dist/utils/decide.d.ts +178 -0
- package/dist/utils/decide.js +623 -0
- package/dist/utils/decide.js.map +1 -0
- package/dist/utils/git.d.ts +2 -0
- package/dist/utils/git.js +35 -1
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/jev.d.ts +83 -0
- package/dist/utils/jev.js +190 -0
- package/dist/utils/jev.js.map +1 -0
- package/dist/utils/triage.d.ts +87 -0
- package/dist/utils/triage.js +241 -0
- package/dist/utils/triage.js.map +1 -0
- package/dist/utils/work.d.ts +72 -0
- package/dist/utils/work.js +225 -0
- package/dist/utils/work.js.map +1 -0
- package/dist/utils/xml.d.ts +22 -0
- package/dist/utils/xml.js +54 -0
- package/dist/utils/xml.js.map +1 -0
- package/package.json +53 -50
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triage.js","sourceRoot":"","sources":["../../src/utils/triage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/** Reference worker: read a decide Choice and stamp a notebook receipt. Never calls Jev. */
|
|
2
|
+
import { type DecideMode, type DecideRecord, type DecideSemantics, type QueueDestination, type ToolGate } from "./decide.js";
|
|
3
|
+
export declare const WORK_APPLIED_SCHEMA = "tocket.work.applied/v0";
|
|
4
|
+
export declare class WorkError extends Error {
|
|
5
|
+
readonly exitCode: 1 | 2;
|
|
6
|
+
constructor(message: string, exitCode?: 1 | 2);
|
|
7
|
+
}
|
|
8
|
+
export interface WorkAppliedRecord {
|
|
9
|
+
schema: typeof WORK_APPLIED_SCHEMA;
|
|
10
|
+
id: string;
|
|
11
|
+
decision_id: string;
|
|
12
|
+
decision_path: string;
|
|
13
|
+
applied_at: string;
|
|
14
|
+
choice: string | null;
|
|
15
|
+
destination: QueueDestination;
|
|
16
|
+
confidence: number;
|
|
17
|
+
gated: boolean;
|
|
18
|
+
tool_gate: ToolGate | null;
|
|
19
|
+
semantics: DecideSemantics;
|
|
20
|
+
mode: DecideMode;
|
|
21
|
+
applied_from_shadow: boolean;
|
|
22
|
+
forced: boolean;
|
|
23
|
+
}
|
|
24
|
+
export interface RunWorkOptions {
|
|
25
|
+
cwd: string;
|
|
26
|
+
fromPath?: string;
|
|
27
|
+
apply?: boolean;
|
|
28
|
+
force?: boolean;
|
|
29
|
+
now?: () => string;
|
|
30
|
+
}
|
|
31
|
+
export interface WorkPlan {
|
|
32
|
+
record: DecideRecord;
|
|
33
|
+
decisionPath: string;
|
|
34
|
+
shadow: boolean;
|
|
35
|
+
toolGate: ToolGate | null;
|
|
36
|
+
wouldRefuse: boolean;
|
|
37
|
+
}
|
|
38
|
+
export interface RunWorkResult {
|
|
39
|
+
plan: WorkPlan;
|
|
40
|
+
applied: boolean;
|
|
41
|
+
receipt?: WorkAppliedRecord;
|
|
42
|
+
receiptPath?: string;
|
|
43
|
+
progressPath?: string;
|
|
44
|
+
summary: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Shadow / log-only / dry-run records are advice, not silent apply.
|
|
48
|
+
* `executes: false` is the decide-record invariant (Tocket never executes)
|
|
49
|
+
* and is not a refuse signal on its own.
|
|
50
|
+
*/
|
|
51
|
+
export declare function isShadowDecision(record: DecideRecord): boolean;
|
|
52
|
+
export declare function isAppliedReceiptName(name: string): boolean;
|
|
53
|
+
export declare function appliedReceiptPath(decisionPath: string): string;
|
|
54
|
+
export declare function findLatestQueueDecision(cwd: string): string | null;
|
|
55
|
+
export declare function loadDecision(cwd: string, fromPath?: string): {
|
|
56
|
+
record: DecideRecord;
|
|
57
|
+
path: string;
|
|
58
|
+
};
|
|
59
|
+
export declare function planWork(options: RunWorkOptions): WorkPlan;
|
|
60
|
+
export declare function formatRefuseApply(plan: WorkPlan): string;
|
|
61
|
+
export declare function formatWorkProgressLine(record: DecideRecord): string;
|
|
62
|
+
export declare function formatWorkPlan(plan: WorkPlan, cwd: string): string;
|
|
63
|
+
export declare function formatWorkApplied(receipt: WorkAppliedRecord, receiptPath: string, cwd: string): string;
|
|
64
|
+
export declare function appendWorkProgress(cwd: string, line: string): string;
|
|
65
|
+
export declare function applyWork(options: RunWorkOptions): {
|
|
66
|
+
plan: WorkPlan;
|
|
67
|
+
receipt: WorkAppliedRecord;
|
|
68
|
+
receiptPath: string;
|
|
69
|
+
progressPath: string;
|
|
70
|
+
};
|
|
71
|
+
/** Plan by default. `--apply` stamps a receipt. Never calls TypeSafe / Jev. */
|
|
72
|
+
export declare function runWork(options: RunWorkOptions): RunWorkResult;
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/** Reference worker: read a decide Choice and stamp a notebook receipt. Never calls Jev. */
|
|
2
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, statSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { isAbsolute, resolve } from "node:path";
|
|
4
|
+
import { DECISIONS_DIR, DecideError, QUEUE_DESTINATIONS, isInsideContext, parseDecideRecord, prettyDecideJson, resolveRecordToolGate, toRepoRelative, toolGateRefusesApply, } from "./decide.js";
|
|
5
|
+
export const WORK_APPLIED_SCHEMA = "tocket.work.applied/v0";
|
|
6
|
+
export class WorkError extends Error {
|
|
7
|
+
exitCode;
|
|
8
|
+
constructor(message, exitCode = 1) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.name = "WorkError";
|
|
11
|
+
this.exitCode = exitCode;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Shadow / log-only / dry-run records are advice, not silent apply.
|
|
16
|
+
* `executes: false` is the decide-record invariant (Tocket never executes)
|
|
17
|
+
* and is not a refuse signal on its own.
|
|
18
|
+
*/
|
|
19
|
+
export function isShadowDecision(record) {
|
|
20
|
+
return (record.semantics === "log-only" ||
|
|
21
|
+
record.mode === "shadow" ||
|
|
22
|
+
record.mode === "dry-run" ||
|
|
23
|
+
record.status === "logged");
|
|
24
|
+
}
|
|
25
|
+
export function isAppliedReceiptName(name) {
|
|
26
|
+
return name.endsWith(".applied.json");
|
|
27
|
+
}
|
|
28
|
+
export function appliedReceiptPath(decisionPath) {
|
|
29
|
+
if (isAppliedReceiptName(decisionPath)) {
|
|
30
|
+
throw new WorkError("Refusing to apply a receipt file. Pass the decision JSON.", 1);
|
|
31
|
+
}
|
|
32
|
+
if (!decisionPath.endsWith(".json")) {
|
|
33
|
+
throw new WorkError("Decision path must be a .json file.", 1);
|
|
34
|
+
}
|
|
35
|
+
return decisionPath.replace(/\.json$/, ".applied.json");
|
|
36
|
+
}
|
|
37
|
+
export function findLatestQueueDecision(cwd) {
|
|
38
|
+
const files = [];
|
|
39
|
+
for (const destination of QUEUE_DESTINATIONS) {
|
|
40
|
+
const dir = resolve(cwd, DECISIONS_DIR, destination);
|
|
41
|
+
if (!existsSync(dir))
|
|
42
|
+
continue;
|
|
43
|
+
for (const name of readdirSync(dir)) {
|
|
44
|
+
if (!name.endsWith(".json") || isAppliedReceiptName(name))
|
|
45
|
+
continue;
|
|
46
|
+
const full = resolve(dir, name);
|
|
47
|
+
if (!isInsideContext(cwd, full))
|
|
48
|
+
continue;
|
|
49
|
+
files.push({ path: full, mtimeMs: statSync(full).mtimeMs, name });
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (files.length === 0)
|
|
53
|
+
return null;
|
|
54
|
+
files.sort((a, b) => {
|
|
55
|
+
if (b.mtimeMs !== a.mtimeMs)
|
|
56
|
+
return b.mtimeMs - a.mtimeMs;
|
|
57
|
+
return b.name.localeCompare(a.name);
|
|
58
|
+
});
|
|
59
|
+
return files[0].path;
|
|
60
|
+
}
|
|
61
|
+
function resolveDecisionPath(cwd, fromPath) {
|
|
62
|
+
if (fromPath) {
|
|
63
|
+
return isAbsolute(fromPath) ? fromPath : resolve(cwd, fromPath);
|
|
64
|
+
}
|
|
65
|
+
const latest = findLatestQueueDecision(cwd);
|
|
66
|
+
if (!latest) {
|
|
67
|
+
throw new WorkError("No decision found. Pass --from <decision.json> or run tocket decide first.", 1);
|
|
68
|
+
}
|
|
69
|
+
return latest;
|
|
70
|
+
}
|
|
71
|
+
export function loadDecision(cwd, fromPath) {
|
|
72
|
+
const path = resolveDecisionPath(cwd, fromPath);
|
|
73
|
+
if (!existsSync(path)) {
|
|
74
|
+
throw new WorkError(`Decision file not found: ${path}`, 1);
|
|
75
|
+
}
|
|
76
|
+
let raw;
|
|
77
|
+
try {
|
|
78
|
+
raw = readFileSync(path, "utf-8");
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
82
|
+
throw new WorkError(`Cannot read decision file: ${message}`, 1);
|
|
83
|
+
}
|
|
84
|
+
try {
|
|
85
|
+
return { record: parseDecideRecord(raw), path };
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
if (err instanceof DecideError) {
|
|
89
|
+
throw new WorkError(err.message, 1);
|
|
90
|
+
}
|
|
91
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
92
|
+
throw new WorkError(`Invalid decision JSON: ${message}`, 1);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
export function planWork(options) {
|
|
96
|
+
const { record, path } = loadDecision(options.cwd, options.fromPath);
|
|
97
|
+
const shadow = isShadowDecision(record);
|
|
98
|
+
const toolGate = resolveRecordToolGate(record);
|
|
99
|
+
const gateRefuse = toolGateRefusesApply(toolGate);
|
|
100
|
+
return {
|
|
101
|
+
record,
|
|
102
|
+
decisionPath: path,
|
|
103
|
+
shadow,
|
|
104
|
+
toolGate,
|
|
105
|
+
wouldRefuse: (shadow || gateRefuse) && options.force !== true,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
export function formatRefuseApply(plan) {
|
|
109
|
+
const gateRefuse = toolGateRefusesApply(plan.toolGate);
|
|
110
|
+
if (!gateRefuse && plan.shadow) {
|
|
111
|
+
return "Refuse apply: shadow/log-only decision. Dry-run is always OK. Pass --force to stamp applied_from_shadow.";
|
|
112
|
+
}
|
|
113
|
+
if (plan.toolGate === "block") {
|
|
114
|
+
const shadow = plan.shadow ? " Shadow/log-only decision." : "";
|
|
115
|
+
return `Refuse apply: tool_gate=block.${shadow} Dry-run is always OK. Pass --force to override the gate.`;
|
|
116
|
+
}
|
|
117
|
+
if (plan.toolGate === "ask") {
|
|
118
|
+
const shadow = plan.shadow ? " Shadow/log-only decision." : "";
|
|
119
|
+
return `Refuse apply: tool_gate=ask. Escalate to a human before irreversible tools.${shadow} Dry-run is always OK. Pass --force to override the gate.`;
|
|
120
|
+
}
|
|
121
|
+
return "Refuse apply: decision is not applyable. Dry-run is always OK. Pass --force to override.";
|
|
122
|
+
}
|
|
123
|
+
export function formatWorkProgressLine(record) {
|
|
124
|
+
const choice = record.choice ?? record.narrow ?? record.id;
|
|
125
|
+
const gate = record.gated ? " gated" : "";
|
|
126
|
+
const toolGate = record.tool_gate ? ` tool_gate=${record.tool_gate}` : "";
|
|
127
|
+
return `- worker applied: next=${choice} dest=${record.destination} confidence=${record.confidence.toFixed(2)}${gate}${toolGate}`;
|
|
128
|
+
}
|
|
129
|
+
function formatApplyHint(plan) {
|
|
130
|
+
if (!plan.wouldRefuse) {
|
|
131
|
+
return "apply=ok (pass --apply to write receipt)";
|
|
132
|
+
}
|
|
133
|
+
if (plan.toolGate === "block") {
|
|
134
|
+
return "apply=refuse (tool_gate=block; pass --apply --force to override)";
|
|
135
|
+
}
|
|
136
|
+
if (plan.toolGate === "ask") {
|
|
137
|
+
return "apply=refuse (tool_gate=ask; escalate/human; pass --apply --force to override)";
|
|
138
|
+
}
|
|
139
|
+
return "apply=refuse (shadow/log-only; pass --apply --force to stamp applied_from_shadow)";
|
|
140
|
+
}
|
|
141
|
+
export function formatWorkPlan(plan, cwd) {
|
|
142
|
+
const { record } = plan;
|
|
143
|
+
const gate = record.gated ? "gated" : "route";
|
|
144
|
+
const from = toRepoRelative(cwd, plan.decisionPath);
|
|
145
|
+
const toolGate = plan.toolGate ?? "none";
|
|
146
|
+
return [
|
|
147
|
+
`work plan choice=${record.choice ?? "null"} dest=${record.destination} confidence=${record.confidence.toFixed(2)} ${gate} tool_gate=${toolGate} semantics=${record.semantics} mode=${record.mode}`,
|
|
148
|
+
` from=${from}`,
|
|
149
|
+
` next=${record.choice ?? record.narrow ?? record.id}`,
|
|
150
|
+
` ${formatApplyHint(plan)}`,
|
|
151
|
+
].join("\n");
|
|
152
|
+
}
|
|
153
|
+
export function formatWorkApplied(receipt, receiptPath, cwd) {
|
|
154
|
+
const rel = toRepoRelative(cwd, receiptPath);
|
|
155
|
+
const shadow = receipt.applied_from_shadow ? " applied_from_shadow" : "";
|
|
156
|
+
return `work applied choice=${receipt.choice ?? "null"} dest=${receipt.destination} confidence=${receipt.confidence.toFixed(2)} ${rel}${shadow}`;
|
|
157
|
+
}
|
|
158
|
+
export function appendWorkProgress(cwd, line) {
|
|
159
|
+
const contextDir = resolve(cwd, ".context");
|
|
160
|
+
const progressPath = resolve(contextDir, "progress.md");
|
|
161
|
+
if (!isInsideContext(cwd, progressPath)) {
|
|
162
|
+
throw new WorkError("work writes only under .context/", 1);
|
|
163
|
+
}
|
|
164
|
+
mkdirSync(contextDir, { recursive: true });
|
|
165
|
+
if (!existsSync(progressPath)) {
|
|
166
|
+
writeFileSync(progressPath, `# Progress Log\n\n${line}\n`, "utf-8");
|
|
167
|
+
return progressPath;
|
|
168
|
+
}
|
|
169
|
+
const current = readFileSync(progressPath, "utf-8");
|
|
170
|
+
const suffix = current.endsWith("\n") ? `${line}\n` : `\n${line}\n`;
|
|
171
|
+
writeFileSync(progressPath, current + suffix, "utf-8");
|
|
172
|
+
return progressPath;
|
|
173
|
+
}
|
|
174
|
+
export function applyWork(options) {
|
|
175
|
+
const plan = planWork(options);
|
|
176
|
+
if (plan.wouldRefuse) {
|
|
177
|
+
throw new WorkError(formatRefuseApply(plan), 2);
|
|
178
|
+
}
|
|
179
|
+
const receiptPath = appliedReceiptPath(plan.decisionPath);
|
|
180
|
+
const contextRoot = resolve(options.cwd, ".context");
|
|
181
|
+
if (plan.decisionPath.startsWith(contextRoot) && !isInsideContext(options.cwd, receiptPath)) {
|
|
182
|
+
throw new WorkError("work writes only under .context/", 1);
|
|
183
|
+
}
|
|
184
|
+
const appliedAt = options.now ? options.now() : new Date().toISOString();
|
|
185
|
+
const receipt = {
|
|
186
|
+
schema: WORK_APPLIED_SCHEMA,
|
|
187
|
+
id: plan.record.id,
|
|
188
|
+
decision_id: plan.record.id,
|
|
189
|
+
decision_path: toRepoRelative(options.cwd, plan.decisionPath),
|
|
190
|
+
applied_at: appliedAt,
|
|
191
|
+
choice: plan.record.choice,
|
|
192
|
+
destination: plan.record.destination,
|
|
193
|
+
confidence: plan.record.confidence,
|
|
194
|
+
gated: plan.record.gated,
|
|
195
|
+
tool_gate: plan.toolGate,
|
|
196
|
+
semantics: plan.record.semantics,
|
|
197
|
+
mode: plan.record.mode,
|
|
198
|
+
applied_from_shadow: plan.shadow,
|
|
199
|
+
forced: options.force === true,
|
|
200
|
+
};
|
|
201
|
+
writeFileSync(receiptPath, prettyDecideJson(receipt), "utf-8");
|
|
202
|
+
const progressPath = appendWorkProgress(options.cwd, formatWorkProgressLine(plan.record));
|
|
203
|
+
return { plan, receipt, receiptPath, progressPath };
|
|
204
|
+
}
|
|
205
|
+
/** Plan by default. `--apply` stamps a receipt. Never calls TypeSafe / Jev. */
|
|
206
|
+
export function runWork(options) {
|
|
207
|
+
if (options.apply === true) {
|
|
208
|
+
const { plan, receipt, receiptPath, progressPath } = applyWork(options);
|
|
209
|
+
return {
|
|
210
|
+
plan,
|
|
211
|
+
applied: true,
|
|
212
|
+
receipt,
|
|
213
|
+
receiptPath,
|
|
214
|
+
progressPath,
|
|
215
|
+
summary: formatWorkApplied(receipt, receiptPath, options.cwd),
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
const plan = planWork(options);
|
|
219
|
+
return {
|
|
220
|
+
plan,
|
|
221
|
+
applied: false,
|
|
222
|
+
summary: formatWorkPlan(plan, options.cwd),
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=work.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work.js","sourceRoot":"","sources":["../../src/utils/work.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** Lightweight parser for Tocket payload XML (self-generated, deterministic structure). */
|
|
2
|
+
export interface ParsedTask {
|
|
3
|
+
id: string;
|
|
4
|
+
type: string;
|
|
5
|
+
target: string;
|
|
6
|
+
action: string;
|
|
7
|
+
spec: string;
|
|
8
|
+
done: string;
|
|
9
|
+
}
|
|
10
|
+
export interface ParsedPayload {
|
|
11
|
+
version: string;
|
|
12
|
+
meta: {
|
|
13
|
+
intent: string;
|
|
14
|
+
scope: string;
|
|
15
|
+
skills: string;
|
|
16
|
+
priority: string;
|
|
17
|
+
};
|
|
18
|
+
tasks: ParsedTask[];
|
|
19
|
+
checks: string[];
|
|
20
|
+
}
|
|
21
|
+
/** Parse a Tocket payload XML string into structured data. */
|
|
22
|
+
export declare function parsePayloadXml(xml: string): ParsedPayload;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/** Lightweight parser for Tocket payload XML (self-generated, deterministic structure). */
|
|
2
|
+
/** Strip XML comment placeholders like <!-- ... --> and trim. */
|
|
3
|
+
function clean(value) {
|
|
4
|
+
if (!value)
|
|
5
|
+
return "";
|
|
6
|
+
return value.replace(/<!--[\s\S]*?-->/g, "").trim();
|
|
7
|
+
}
|
|
8
|
+
/** Extract text content of a single XML tag from a block. */
|
|
9
|
+
function extractTag(block, tag) {
|
|
10
|
+
const re = new RegExp(`<${tag}>([\\s\\S]*?)</${tag}>`);
|
|
11
|
+
const match = block.match(re);
|
|
12
|
+
return clean(match?.[1]);
|
|
13
|
+
}
|
|
14
|
+
/** Parse a Tocket payload XML string into structured data. */
|
|
15
|
+
export function parsePayloadXml(xml) {
|
|
16
|
+
// Version
|
|
17
|
+
const versionMatch = xml.match(/<payload\s+version="([^"]+)">/);
|
|
18
|
+
const version = versionMatch?.[1] ?? "";
|
|
19
|
+
// Meta
|
|
20
|
+
const metaMatch = xml.match(/<meta>([\s\S]*?)<\/meta>/);
|
|
21
|
+
const metaBlock = metaMatch?.[1] ?? "";
|
|
22
|
+
const meta = {
|
|
23
|
+
intent: extractTag(metaBlock, "intent"),
|
|
24
|
+
scope: extractTag(metaBlock, "scope"),
|
|
25
|
+
skills: extractTag(metaBlock, "skills"),
|
|
26
|
+
priority: extractTag(metaBlock, "priority"),
|
|
27
|
+
};
|
|
28
|
+
// Tasks
|
|
29
|
+
const tasks = [];
|
|
30
|
+
const taskRegex = /<task\s+id="([^"]*)"(?:\s+type="([^"]*)")?(?:\s+skill="[^"]*")?>([\s\S]*?)<\/task>/g;
|
|
31
|
+
let taskMatch;
|
|
32
|
+
while ((taskMatch = taskRegex.exec(xml)) !== null) {
|
|
33
|
+
const [, id, type, body] = taskMatch;
|
|
34
|
+
tasks.push({
|
|
35
|
+
id: id ?? "",
|
|
36
|
+
type: clean(type),
|
|
37
|
+
target: extractTag(body, "target"),
|
|
38
|
+
action: extractTag(body, "action"),
|
|
39
|
+
spec: extractTag(body, "spec"),
|
|
40
|
+
done: extractTag(body, "done"),
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
// Validation checks
|
|
44
|
+
const checks = [];
|
|
45
|
+
const checkRegex = /<check>([\s\S]*?)<\/check>/g;
|
|
46
|
+
let checkMatch;
|
|
47
|
+
while ((checkMatch = checkRegex.exec(xml)) !== null) {
|
|
48
|
+
const value = clean(checkMatch[1]);
|
|
49
|
+
if (value)
|
|
50
|
+
checks.push(value);
|
|
51
|
+
}
|
|
52
|
+
return { version, meta, tasks, checks };
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=xml.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xml.js","sourceRoot":"","sources":["../../src/utils/xml.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAuB3F,iEAAiE;AACjE,SAAS,KAAK,CAAC,KAAyB;IACtC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,OAAO,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACtD,CAAC;AAED,6DAA6D;AAC7D,SAAS,UAAU,CAAC,KAAa,EAAE,GAAW;IAC5C,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,kBAAkB,GAAG,GAAG,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC9B,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,UAAU;IACV,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAExC,OAAO;IACP,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAEvC,MAAM,IAAI,GAAG;QACX,MAAM,EAAE,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC;QACvC,KAAK,EAAE,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC;QACrC,MAAM,EAAE,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC;QACvC,QAAQ,EAAE,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC;KAC5C,CAAC;IAEF,QAAQ;IACR,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,qFAAqF,CAAC;IACxG,IAAI,SAAiC,CAAC;IACtC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAClD,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,EAAE,IAAI,EAAE;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;YACjB,MAAM,EAAE,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC;YAClC,MAAM,EAAE,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC;YAClC,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC;YAC9B,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC;SAC/B,CAAC,CAAC;IACL,CAAC;IAED,oBAAoB;IACpB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,UAAU,GAAG,6BAA6B,CAAC;IACjD,IAAI,UAAkC,CAAC;IACvC,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC1C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,50 +1,53 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@pedrocivita/tocket",
|
|
3
|
-
"version": "2.
|
|
4
|
-
"description": "
|
|
5
|
-
"type": "module",
|
|
6
|
-
"main": "dist/index.js",
|
|
7
|
-
"bin": {
|
|
8
|
-
"tocket": "dist/index.js"
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"test
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
"
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
"
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
"
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "@pedrocivita/tocket",
|
|
3
|
+
"version": "2.6.3",
|
|
4
|
+
"description": "Project notebook for multi-agent workspaces. Agents work. Tocket remembers. Jev only chooses the next step.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"tocket": "dist/index.js",
|
|
9
|
+
"tocket-mcp": "dist/mcp/index.js"
|
|
10
|
+
},
|
|
11
|
+
"files": [
|
|
12
|
+
"dist"
|
|
13
|
+
],
|
|
14
|
+
"scripts": {
|
|
15
|
+
"build": "tsc",
|
|
16
|
+
"start": "node dist/index.js",
|
|
17
|
+
"prepublishOnly": "npm run build",
|
|
18
|
+
"test": "npm run build && node --test dist/tests/*.test.js",
|
|
19
|
+
"test:coverage": "npm run build && c8 node --test dist/tests/*.test.js",
|
|
20
|
+
"eval:triage": "npm run build && node dist/eval/triage-eval.js"
|
|
21
|
+
},
|
|
22
|
+
"repository": {
|
|
23
|
+
"type": "git",
|
|
24
|
+
"url": "git+https://github.com/pedrocivita/tocket.git"
|
|
25
|
+
},
|
|
26
|
+
"keywords": [
|
|
27
|
+
"context-engineering",
|
|
28
|
+
"multi-agent",
|
|
29
|
+
"cli"
|
|
30
|
+
],
|
|
31
|
+
"author": "Pedro Civita",
|
|
32
|
+
"license": "MIT",
|
|
33
|
+
"bugs": {
|
|
34
|
+
"url": "https://github.com/pedrocivita/tocket/issues"
|
|
35
|
+
},
|
|
36
|
+
"homepage": "https://tocket.ai",
|
|
37
|
+
"publishConfig": {
|
|
38
|
+
"registry": "https://registry.npmjs.org/",
|
|
39
|
+
"access": "public"
|
|
40
|
+
},
|
|
41
|
+
"dependencies": {
|
|
42
|
+
"@inquirer/prompts": "^8.3.0",
|
|
43
|
+
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
44
|
+
"chalk": "^5.6.2",
|
|
45
|
+
"clipboardy": "^5.3.0",
|
|
46
|
+
"commander": "^14.0.3"
|
|
47
|
+
},
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"@types/node": "^25.3.0",
|
|
50
|
+
"c8": "^11.0.0",
|
|
51
|
+
"typescript": "^5.9.3"
|
|
52
|
+
}
|
|
53
|
+
}
|