@fourshore/graft-core 0.0.8 → 0.0.9
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/agents.d.ts +1 -1
- package/dist/agents.js +6 -3
- package/dist/agents.js.map +1 -1
- package/dist/capture.d.ts +14 -0
- package/dist/capture.js +42 -0
- package/dist/capture.js.map +1 -0
- package/dist/claude-code.d.ts +45 -0
- package/dist/claude-code.js +69 -0
- package/dist/claude-code.js.map +1 -0
- package/dist/context.d.ts +37 -0
- package/dist/context.js +74 -0
- package/dist/context.js.map +1 -0
- package/dist/graft.d.ts +76 -0
- package/dist/graft.js +210 -17
- package/dist/graft.js.map +1 -1
- package/dist/hooks.d.ts +17 -0
- package/dist/hooks.js +81 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.d.ts +6 -2
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/policy.d.ts +33 -0
- package/dist/policy.js +24 -0
- package/dist/policy.js.map +1 -1
- package/dist/record.d.ts +29 -4
- package/dist/record.js +48 -18
- package/dist/record.js.map +1 -1
- package/package.json +1 -1
package/dist/record.d.ts
CHANGED
|
@@ -24,6 +24,13 @@ export interface ChangeRecord {
|
|
|
24
24
|
* original SHA, not the one the note is now attached to.
|
|
25
25
|
*/
|
|
26
26
|
commit?: string;
|
|
27
|
+
/**
|
|
28
|
+
* Set when a capture hook opened the change from the harness's own event
|
|
29
|
+
* (the prompt, or a recorded run with nothing open) rather than an explicit
|
|
30
|
+
* `graft start`. A later `graft start` adopts such a change, naming the
|
|
31
|
+
* task and keeping the evidence, instead of refusing.
|
|
32
|
+
*/
|
|
33
|
+
capturedBy?: string;
|
|
27
34
|
}
|
|
28
35
|
export interface ChangeAuthor {
|
|
29
36
|
/** "agent" or "human". */
|
|
@@ -45,6 +52,18 @@ export interface CommandEvidence {
|
|
|
45
52
|
output: string;
|
|
46
53
|
/** Optional label, e.g. "unit tests". */
|
|
47
54
|
label?: string;
|
|
55
|
+
/**
|
|
56
|
+
* Set when a harness reported the run through a hook ("claude-code")
|
|
57
|
+
* instead of Graft running it. The exit code and output are the harness's
|
|
58
|
+
* own, so this is still a pass or a fail, not a claim.
|
|
59
|
+
*/
|
|
60
|
+
via?: string;
|
|
61
|
+
/**
|
|
62
|
+
* True when the author attached a run they made themselves instead of
|
|
63
|
+
* letting Graft run the command. The exit code and output are their claim;
|
|
64
|
+
* readers show it as "attested", not "pass".
|
|
65
|
+
*/
|
|
66
|
+
attested?: true;
|
|
48
67
|
}
|
|
49
68
|
export interface NoteEvidence {
|
|
50
69
|
kind: "note";
|
|
@@ -82,6 +101,8 @@ export declare const EVIDENCE_HEADER = "Evidence:";
|
|
|
82
101
|
*
|
|
83
102
|
* [pass unit tests] npm test (12.3s)
|
|
84
103
|
* [fail 1] npm run lint (0.4s)
|
|
104
|
+
* [attested go tests] go test ./...
|
|
105
|
+
* [attested fail 2 build] yarn build
|
|
85
106
|
* [note] manually verified in browser
|
|
86
107
|
*/
|
|
87
108
|
export declare function evidenceLines(evidence: Evidence[]): string[];
|
|
@@ -93,9 +114,13 @@ export declare function evidenceLines(evidence: Evidence[]): string[];
|
|
|
93
114
|
*/
|
|
94
115
|
export declare function parseMessageRecord(message: string, authoredAt: string): ChangeRecord | null;
|
|
95
116
|
/**
|
|
96
|
-
* Turn an argv into one
|
|
97
|
-
* unless it is plainly safe, so
|
|
98
|
-
*
|
|
117
|
+
* Turn an argv into one shell command string for the platform's shell.
|
|
118
|
+
* Every element is quoted unless it is plainly safe, so
|
|
119
|
+
* `node -e 'console.log("a b")'` survives the trip through /bin/sh, or
|
|
120
|
+
* through cmd.exe on Windows, where the quoting follows the rules the C
|
|
121
|
+
* runtime uses to split a command line and cmd's own metacharacters are
|
|
122
|
+
* escaped with `^`. A single element is returned as written, so
|
|
99
123
|
* `graft evidence -- "npm test && npm run lint"` still runs through the shell.
|
|
124
|
+
* A redirect or pipe given as its own element is therefore a literal argument.
|
|
100
125
|
*/
|
|
101
|
-
export declare function shellJoin(argv: string[]): string;
|
|
126
|
+
export declare function shellJoin(argv: string[], platform?: NodeJS.Platform): string;
|
package/dist/record.js
CHANGED
|
@@ -74,6 +74,8 @@ const MESSAGE_LINE_CAP = 200;
|
|
|
74
74
|
*
|
|
75
75
|
* [pass unit tests] npm test (12.3s)
|
|
76
76
|
* [fail 1] npm run lint (0.4s)
|
|
77
|
+
* [attested go tests] go test ./...
|
|
78
|
+
* [attested fail 2 build] yarn build
|
|
77
79
|
* [note] manually verified in browser
|
|
78
80
|
*/
|
|
79
81
|
export function evidenceLines(evidence) {
|
|
@@ -81,6 +83,9 @@ export function evidenceLines(evidence) {
|
|
|
81
83
|
const label = ev.label ? ` ${bracketSafe(ev.label)}` : "";
|
|
82
84
|
if (ev.kind === "note")
|
|
83
85
|
return ` [note${label}] ${clip(oneLine(ev.text))}`;
|
|
86
|
+
const failed = ev.exitCode === 0 ? "" : ` fail ${ev.exitCode}`;
|
|
87
|
+
if (ev.attested)
|
|
88
|
+
return ` [attested${failed}${label}] ${clip(oneLine(ev.command))}`;
|
|
84
89
|
const status = ev.exitCode === 0 ? "pass" : `fail ${ev.exitCode}`;
|
|
85
90
|
return ` [${status}${label}] ${clip(oneLine(ev.command))} (${(ev.durationMs / 1000).toFixed(1)}s)`;
|
|
86
91
|
});
|
|
@@ -89,7 +94,7 @@ export function evidenceLines(evidence) {
|
|
|
89
94
|
function bracketSafe(label) {
|
|
90
95
|
return oneLine(label).replace(/[[\]]/g, "").slice(0, 60);
|
|
91
96
|
}
|
|
92
|
-
const EVIDENCE_LINE = /^\s*\[(pass|fail (-?\d+)|note)(?: ([^\]]*))?\] (.*)$/;
|
|
97
|
+
const EVIDENCE_LINE = /^\s*\[(pass|fail (-?\d+)|note|attested(?: fail (-?\d+))?)(?: ([^\]]*))?\] (.*)$/;
|
|
93
98
|
const DURATION = /^(.*) \((\d+(?:\.\d+)?)s\)$/;
|
|
94
99
|
/**
|
|
95
100
|
* Rebuild a record from a commit message alone: trailers, the Plan: block and
|
|
@@ -109,20 +114,25 @@ export function parseMessageRecord(message, authoredAt) {
|
|
|
109
114
|
const m = EVIDENCE_LINE.exec(line);
|
|
110
115
|
if (!m)
|
|
111
116
|
continue;
|
|
112
|
-
const
|
|
113
|
-
|
|
117
|
+
const [, status, failCode, attestedFailCode, rawLabel, tail] = m;
|
|
118
|
+
const label = rawLabel || undefined;
|
|
119
|
+
if (status === "note") {
|
|
120
|
+
evidence.push({ kind: "note", at: authoredAt, text: tail, label });
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
if (status.startsWith("attested")) {
|
|
124
|
+
const exitCode = attestedFailCode ? Number(attestedFailCode) : 0;
|
|
125
|
+
evidence.push({ kind: "command", at: authoredAt, command: tail, exitCode, durationMs: 0, output: "", label, attested: true });
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
let rest = tail;
|
|
114
129
|
let durationMs = 0;
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
durationMs = Math.round(Number(d[2]) * 1000);
|
|
120
|
-
}
|
|
130
|
+
const d = DURATION.exec(rest);
|
|
131
|
+
if (d) {
|
|
132
|
+
rest = d[1];
|
|
133
|
+
durationMs = Math.round(Number(d[2]) * 1000);
|
|
121
134
|
}
|
|
122
|
-
|
|
123
|
-
evidence.push({ kind: "note", at: authoredAt, text: rest, label });
|
|
124
|
-
else
|
|
125
|
-
evidence.push({ kind: "command", at: authoredAt, command: rest, exitCode: m[2] ? Number(m[2]) : 0, durationMs, output: "", label });
|
|
135
|
+
evidence.push({ kind: "command", at: authoredAt, command: rest, exitCode: failCode ? Number(failCode) : 0, durationMs, output: "", label });
|
|
126
136
|
}
|
|
127
137
|
const [kind, ...name] = (trailers[TRAILER_KEYS.author] ?? "human:unknown").split(":");
|
|
128
138
|
return {
|
|
@@ -170,15 +180,35 @@ function clip(s) {
|
|
|
170
180
|
return s.length > MESSAGE_LINE_CAP ? s.slice(0, MESSAGE_LINE_CAP - 1) + "…" : s;
|
|
171
181
|
}
|
|
172
182
|
const SAFE_ARG = /^[A-Za-z0-9_@%+=:,./-]+$/;
|
|
183
|
+
const WIN_SAFE_ARG = /^[A-Za-z0-9_@+=:,./\\-]+$/;
|
|
184
|
+
const WIN_META = /[()%!^"<>&|]/g;
|
|
173
185
|
/**
|
|
174
|
-
* Turn an argv into one
|
|
175
|
-
* unless it is plainly safe, so
|
|
176
|
-
*
|
|
186
|
+
* Turn an argv into one shell command string for the platform's shell.
|
|
187
|
+
* Every element is quoted unless it is plainly safe, so
|
|
188
|
+
* `node -e 'console.log("a b")'` survives the trip through /bin/sh, or
|
|
189
|
+
* through cmd.exe on Windows, where the quoting follows the rules the C
|
|
190
|
+
* runtime uses to split a command line and cmd's own metacharacters are
|
|
191
|
+
* escaped with `^`. A single element is returned as written, so
|
|
177
192
|
* `graft evidence -- "npm test && npm run lint"` still runs through the shell.
|
|
193
|
+
* A redirect or pipe given as its own element is therefore a literal argument.
|
|
178
194
|
*/
|
|
179
|
-
export function shellJoin(argv) {
|
|
195
|
+
export function shellJoin(argv, platform = process.platform) {
|
|
180
196
|
if (argv.length === 1)
|
|
181
197
|
return argv[0];
|
|
182
|
-
|
|
198
|
+
const quote = platform === "win32" ? winQuote : posixQuote;
|
|
199
|
+
return argv.map(quote).join(" ");
|
|
200
|
+
}
|
|
201
|
+
function posixQuote(a) {
|
|
202
|
+
return SAFE_ARG.test(a) ? a : `'${a.replace(/'/g, `'\\''`)}'`;
|
|
203
|
+
}
|
|
204
|
+
function winQuote(a) {
|
|
205
|
+
if (WIN_SAFE_ARG.test(a))
|
|
206
|
+
return a;
|
|
207
|
+
// Backslashes only escape when they precede a quote, so double those runs
|
|
208
|
+
// and the trailing run, then escape quotes, then wrap in double quotes.
|
|
209
|
+
const inner = a.replace(/(\\*)"/g, '$1$1\\"').replace(/(\\*)$/, "$1$1");
|
|
210
|
+
// cmd.exe reads the line before the program does; `^` makes it pass the
|
|
211
|
+
// metacharacters, including the quotes, through untouched.
|
|
212
|
+
return `"${inner}"`.replace(WIN_META, "^$&");
|
|
183
213
|
}
|
|
184
214
|
//# sourceMappingURL=record.js.map
|
package/dist/record.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record.js","sourceRoot":"","sources":["../src/record.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"record.js","sourceRoot":"","sources":["../src/record.ts"],"names":[],"mappings":"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"}
|