@lannguyensi/harness 0.38.0 → 0.40.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/CHANGELOG.md +49 -0
- package/dist/cli/add/index.js +10 -2
- package/dist/cli/add/index.js.map +1 -1
- package/dist/cli/add/mutate.d.ts +2 -0
- package/dist/cli/add/mutate.js.map +1 -1
- package/dist/cli/adopt/derive.d.ts +11 -1
- package/dist/cli/adopt/derive.js +28 -2
- package/dist/cli/adopt/derive.js.map +1 -1
- package/dist/cli/adopt/index.js +21 -13
- package/dist/cli/adopt/index.js.map +1 -1
- package/dist/cli/apply/apply.js +31 -3
- package/dist/cli/apply/apply.js.map +1 -1
- package/dist/cli/apply/generate-settings.d.ts +43 -0
- package/dist/cli/apply/generate-settings.js +53 -0
- package/dist/cli/apply/generate-settings.js.map +1 -1
- package/dist/cli/approve/stdin-report.d.ts +42 -0
- package/dist/cli/approve/stdin-report.js +143 -0
- package/dist/cli/approve/stdin-report.js.map +1 -0
- package/dist/cli/approve/understanding.d.ts +20 -0
- package/dist/cli/approve/understanding.js +16 -0
- package/dist/cli/approve/understanding.js.map +1 -1
- package/dist/cli/diff/git.d.ts +18 -0
- package/dist/cli/diff/git.js +49 -2
- package/dist/cli/diff/git.js.map +1 -1
- package/dist/cli/diff/index.d.ts +7 -0
- package/dist/cli/diff/index.js +82 -7
- package/dist/cli/diff/index.js.map +1 -1
- package/dist/cli/doctor/format.js +21 -0
- package/dist/cli/doctor/format.js.map +1 -1
- package/dist/cli/doctor/index.d.ts +33 -0
- package/dist/cli/doctor/index.js +94 -4
- package/dist/cli/doctor/index.js.map +1 -1
- package/dist/cli/doctor/types.d.ts +23 -0
- package/dist/cli/index.js +38 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/composer.js +1 -1
- package/dist/cli/init/composer.js.map +1 -1
- package/dist/cli/init/profiles.d.ts +2 -2
- package/dist/cli/init/profiles.js +11 -2
- package/dist/cli/init/profiles.js.map +1 -1
- package/dist/cli/init/templates.d.ts +1 -1
- package/dist/cli/init/templates.js +40 -1
- package/dist/cli/init/templates.js.map +1 -1
- package/dist/cli/loader.js +9 -1
- package/dist/cli/loader.js.map +1 -1
- package/dist/cli/pack/approve-escape.d.ts +19 -0
- package/dist/cli/pack/approve-escape.js +120 -0
- package/dist/cli/pack/approve-escape.js.map +1 -0
- package/dist/cli/pack/hook-bootstrap.d.ts +14 -1
- package/dist/cli/pack/hook-bootstrap.js +32 -2
- package/dist/cli/pack/hook-bootstrap.js.map +1 -1
- package/dist/cli/pack/hook-branch-protection.js +2 -18
- package/dist/cli/pack/hook-branch-protection.js.map +1 -1
- package/dist/cli/pack/hook-codex-pre-tool-use.js +17 -19
- package/dist/cli/pack/hook-codex-pre-tool-use.js.map +1 -1
- package/dist/cli/pack/hook-pre-tool-use.js +39 -79
- package/dist/cli/pack/hook-pre-tool-use.js.map +1 -1
- package/dist/cli/pack/hook-solution-acceptance.js +2 -15
- package/dist/cli/pack/hook-solution-acceptance.js.map +1 -1
- package/dist/cli/pack/understanding-report-schema-hint.js +12 -1
- package/dist/cli/pack/understanding-report-schema-hint.js.map +1 -1
- package/dist/cli/policy/intercept.d.ts +10 -0
- package/dist/cli/policy/intercept.js +60 -24
- package/dist/cli/policy/intercept.js.map +1 -1
- package/dist/cli/validate/checks.d.ts +23 -0
- package/dist/cli/validate/checks.js +101 -0
- package/dist/cli/validate/checks.js.map +1 -1
- package/dist/io/merge-settings.d.ts +23 -1
- package/dist/io/merge-settings.js +120 -10
- package/dist/io/merge-settings.js.map +1 -1
- package/dist/io/read-regular-file.d.ts +32 -0
- package/dist/io/read-regular-file.js +34 -0
- package/dist/io/read-regular-file.js.map +1 -0
- package/dist/policies/index.d.ts +1 -1
- package/dist/policies/index.js +1 -1
- package/dist/policies/index.js.map +1 -1
- package/dist/policies/ledger-client.d.ts +41 -0
- package/dist/policies/ledger-client.js +199 -94
- package/dist/policies/ledger-client.js.map +1 -1
- package/dist/policy-packs/builtin/solution-acceptance-runtime.d.ts +4 -3
- package/dist/policy-packs/builtin/solution-acceptance-runtime.js +11 -20
- package/dist/policy-packs/builtin/solution-acceptance-runtime.js.map +1 -1
- package/dist/policy-packs/builtin/understanding-before-execution-runtime.d.ts +21 -0
- package/dist/policy-packs/builtin/understanding-before-execution-runtime.js +44 -20
- package/dist/policy-packs/builtin/understanding-before-execution-runtime.js.map +1 -1
- package/dist/policy-packs/builtin/understanding-before-execution.d.ts +2 -2
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.js +1 -1
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/intercept.d.ts +8 -0
- package/dist/runtime/intercept.js.map +1 -1
- package/dist/runtime/ledger-add.js +5 -1
- package/dist/runtime/ledger-add.js.map +1 -1
- package/dist/runtime/ledger-record.d.ts +18 -0
- package/dist/runtime/ledger-record.js +43 -0
- package/dist/runtime/ledger-record.js.map +1 -1
- package/dist/schema/grounding.js +22 -0
- package/dist/schema/grounding.js.map +1 -1
- package/dist/schema/index.js +41 -4
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/memory.js +9 -0
- package/dist/schema/memory.js.map +1 -1
- package/dist/schema/risk.js +10 -6
- package/dist/schema/risk.js.map +1 -1
- package/package.json +6 -1
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import type { Hook, Manifest, McpServer } from "../../schema/index.js";
|
|
2
2
|
export declare const DEFAULT_BUDGET_MS = 30000;
|
|
3
|
+
/** The manifest `tools.mcp[]` entry name that grounding enforcement keys off. */
|
|
4
|
+
export declare const GROUNDING_MCP_SERVER_NAME = "grounding-mcp";
|
|
5
|
+
/** The env var grounding-mcp's ledger-bridge reads for the evidence-ledger DB path. */
|
|
6
|
+
export declare const EVIDENCE_LEDGER_DB_ENV = "EVIDENCE_LEDGER_DB";
|
|
3
7
|
export interface SettingsHookCommand {
|
|
4
8
|
type: "command";
|
|
5
9
|
command: string;
|
|
@@ -35,8 +39,47 @@ export interface GenerateSettingsExtras {
|
|
|
35
39
|
* the output so a no-op contribution doesn't pollute the JSON.
|
|
36
40
|
*/
|
|
37
41
|
packPermissions?: SettingsPermissions;
|
|
42
|
+
/**
|
|
43
|
+
* Home directory used to expand `~/` in projected values (the
|
|
44
|
+
* grounding evidence-ledger path). Defaults to `os.homedir()`;
|
|
45
|
+
* injected by tests for determinism.
|
|
46
|
+
*/
|
|
47
|
+
homeDir?: string;
|
|
38
48
|
}
|
|
39
49
|
export declare function generateSettings(manifest: Manifest): SettingsRoot;
|
|
40
50
|
export declare function generateSettingsWithWarnings(manifest: Manifest, extras?: GenerateSettingsExtras): GenerateSettingsResult;
|
|
41
51
|
export declare function buildMcpServers(entries: McpServer[], warnings: string[]): Record<string, SettingsMcpServer>;
|
|
52
|
+
/**
|
|
53
|
+
* Wire the manifest's `grounding:` section into the grounding-mcp server
|
|
54
|
+
* entry (task 129e1b94, harness-review-2026-07-01/grounding-decorative).
|
|
55
|
+
*
|
|
56
|
+
* `grounding.evidence_ledger.path` becomes the `EVIDENCE_LEDGER_DB` env on
|
|
57
|
+
* the `tools.mcp[grounding-mcp]` entry — the exact variable grounding-mcp's
|
|
58
|
+
* ledger-bridge reads (agent-grounding
|
|
59
|
+
* packages/grounding-mcp/src/ledger-bridge.ts). This makes `grounding:` the
|
|
60
|
+
* section that CONFIGURES the grounding-mcp entry instead of a decorative
|
|
61
|
+
* namesake, resolving the naming collision the 2026-07-01 review flagged.
|
|
62
|
+
*
|
|
63
|
+
* Rules:
|
|
64
|
+
* - Projection only fires when a grounding-mcp entry exists; without one
|
|
65
|
+
* there is no consumer (doctor surfaces that inertness separately).
|
|
66
|
+
* - An operator-declared `env.EVIDENCE_LEDGER_DB` on the entry wins — an
|
|
67
|
+
* explicit override is never clobbered (doctor warns when it diverges
|
|
68
|
+
* from `grounding.evidence_ledger.path`).
|
|
69
|
+
* - The projected value is `~`-expanded to an absolute path, so the
|
|
70
|
+
* literal-tilde child-process footgun (agent-tasks/42d224a6, the very
|
|
71
|
+
* warning above in buildMcpServers) cannot re-enter via this path.
|
|
72
|
+
* - `retention_days`, `policies_source`, and `session.*` stay RESERVED:
|
|
73
|
+
* nothing consumes them yet (evidence-ledger has no retention pruning),
|
|
74
|
+
* and projecting an env no server reads would be decorative again. See
|
|
75
|
+
* the status comments in src/schema/grounding.ts.
|
|
76
|
+
*/
|
|
77
|
+
export declare function projectGroundingEnv(manifest: Manifest, mcp: Record<string, SettingsMcpServer>, homeDir?: string): void;
|
|
78
|
+
/**
|
|
79
|
+
* The value apply projects for `EVIDENCE_LEDGER_DB`: the manifest's
|
|
80
|
+
* `grounding.evidence_ledger.path`, `~`-expanded to an absolute path.
|
|
81
|
+
* Shared with adopt's manifest→settings projection so the apply→adopt
|
|
82
|
+
* round-trip stays drift-free by construction.
|
|
83
|
+
*/
|
|
84
|
+
export declare function groundingLedgerEnvValue(manifest: Manifest, homeDir?: string): string;
|
|
42
85
|
export declare function buildMemoryRouterHook(manifest: Manifest): Hook | null;
|
|
@@ -43,7 +43,12 @@
|
|
|
43
43
|
// - Within an event, groups sorted by (matcher, command).
|
|
44
44
|
// - Within a group, the inner hooks[] preserves matcher-grouping order
|
|
45
45
|
// and is sorted by command for the same reason.
|
|
46
|
+
import { expandHome } from "../../runtime/expand-home.js";
|
|
46
47
|
export const DEFAULT_BUDGET_MS = 30_000;
|
|
48
|
+
/** The manifest `tools.mcp[]` entry name that grounding enforcement keys off. */
|
|
49
|
+
export const GROUNDING_MCP_SERVER_NAME = "grounding-mcp";
|
|
50
|
+
/** The env var grounding-mcp's ledger-bridge reads for the evidence-ledger DB path. */
|
|
51
|
+
export const EVIDENCE_LEDGER_DB_ENV = "EVIDENCE_LEDGER_DB";
|
|
47
52
|
export function generateSettings(manifest) {
|
|
48
53
|
return generateSettingsWithWarnings(manifest).root;
|
|
49
54
|
}
|
|
@@ -74,6 +79,7 @@ export function generateSettingsWithWarnings(manifest, extras = {}) {
|
|
|
74
79
|
out.hooks[event] = buildGroups(hooks);
|
|
75
80
|
}
|
|
76
81
|
const mcp = buildMcpServers(manifest.tools.mcp, warnings);
|
|
82
|
+
projectGroundingEnv(manifest, mcp, extras.homeDir);
|
|
77
83
|
if (Object.keys(mcp).length > 0)
|
|
78
84
|
out.mcpServers = mcp;
|
|
79
85
|
const permissions = compactPermissions(extras.packPermissions);
|
|
@@ -147,6 +153,53 @@ export function buildMcpServers(entries, warnings) {
|
|
|
147
153
|
}
|
|
148
154
|
return out;
|
|
149
155
|
}
|
|
156
|
+
/**
|
|
157
|
+
* Wire the manifest's `grounding:` section into the grounding-mcp server
|
|
158
|
+
* entry (task 129e1b94, harness-review-2026-07-01/grounding-decorative).
|
|
159
|
+
*
|
|
160
|
+
* `grounding.evidence_ledger.path` becomes the `EVIDENCE_LEDGER_DB` env on
|
|
161
|
+
* the `tools.mcp[grounding-mcp]` entry — the exact variable grounding-mcp's
|
|
162
|
+
* ledger-bridge reads (agent-grounding
|
|
163
|
+
* packages/grounding-mcp/src/ledger-bridge.ts). This makes `grounding:` the
|
|
164
|
+
* section that CONFIGURES the grounding-mcp entry instead of a decorative
|
|
165
|
+
* namesake, resolving the naming collision the 2026-07-01 review flagged.
|
|
166
|
+
*
|
|
167
|
+
* Rules:
|
|
168
|
+
* - Projection only fires when a grounding-mcp entry exists; without one
|
|
169
|
+
* there is no consumer (doctor surfaces that inertness separately).
|
|
170
|
+
* - An operator-declared `env.EVIDENCE_LEDGER_DB` on the entry wins — an
|
|
171
|
+
* explicit override is never clobbered (doctor warns when it diverges
|
|
172
|
+
* from `grounding.evidence_ledger.path`).
|
|
173
|
+
* - The projected value is `~`-expanded to an absolute path, so the
|
|
174
|
+
* literal-tilde child-process footgun (agent-tasks/42d224a6, the very
|
|
175
|
+
* warning above in buildMcpServers) cannot re-enter via this path.
|
|
176
|
+
* - `retention_days`, `policies_source`, and `session.*` stay RESERVED:
|
|
177
|
+
* nothing consumes them yet (evidence-ledger has no retention pruning),
|
|
178
|
+
* and projecting an env no server reads would be decorative again. See
|
|
179
|
+
* the status comments in src/schema/grounding.ts.
|
|
180
|
+
*/
|
|
181
|
+
export function projectGroundingEnv(manifest, mcp, homeDir) {
|
|
182
|
+
const server = mcp[GROUNDING_MCP_SERVER_NAME];
|
|
183
|
+
if (!server)
|
|
184
|
+
return;
|
|
185
|
+
const env = server.env ?? {};
|
|
186
|
+
// Truthiness (not `=== undefined`) on purpose: an empty-string operator
|
|
187
|
+
// "override" would project an empty ledger path, which guarantees a
|
|
188
|
+
// broken ledger — treat it as absent and let the manifest value apply.
|
|
189
|
+
if (!env[EVIDENCE_LEDGER_DB_ENV]) {
|
|
190
|
+
env[EVIDENCE_LEDGER_DB_ENV] = groundingLedgerEnvValue(manifest, homeDir);
|
|
191
|
+
server.env = env;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* The value apply projects for `EVIDENCE_LEDGER_DB`: the manifest's
|
|
196
|
+
* `grounding.evidence_ledger.path`, `~`-expanded to an absolute path.
|
|
197
|
+
* Shared with adopt's manifest→settings projection so the apply→adopt
|
|
198
|
+
* round-trip stays drift-free by construction.
|
|
199
|
+
*/
|
|
200
|
+
export function groundingLedgerEnvValue(manifest, homeDir) {
|
|
201
|
+
return expandHome(manifest.grounding.evidence_ledger.path, homeDir);
|
|
202
|
+
}
|
|
150
203
|
// Translate manifest `memory.router` into a synthetic UserPromptSubmit
|
|
151
204
|
// hook so per-prompt context augmentation actually fires alongside the
|
|
152
205
|
// understanding-gate hook. Returns null when memory.router is absent or
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-settings.js","sourceRoot":"","sources":["../../../src/cli/apply/generate-settings.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,iFAAiF;AACjF,sEAAsE;AACtE,EAAE;AACF,sEAAsE;AACtE,EAAE;AACF,uFAAuF;AACvF,EAAE;AACF,wEAAwE;AACxE,0EAA0E;AAC1E,2EAA2E;AAC3E,kCAAkC;AAClC,6EAA6E;AAC7E,0EAA0E;AAC1E,mDAAmD;AACnD,4EAA4E;AAC5E,uEAAuE;AACvE,wEAAwE;AACxE,yEAAyE;AACzE,qEAAqE;AACrE,yEAAyE;AACzE,0EAA0E;AAC1E,sEAAsE;AACtE,yEAAyE;AACzE,2EAA2E;AAC3E,yEAAyE;AACzE,0EAA0E;AAC1E,uEAAuE;AACvE,sEAAsE;AACtE,yEAAyE;AACzE,uEAAuE;AACvE,oEAAoE;AACpE,0EAA0E;AAC1E,qEAAqE;AACrE,uEAAuE;AACvE,wEAAwE;AACxE,0CAA0C;AAC1C,EAAE;AACF,0EAA0E;AAC1E,gBAAgB;AAChB,uEAAuE;AACvE,0DAA0D;AAC1D,4DAA4D;AAC5D,yEAAyE;AACzE,oDAAoD;
|
|
1
|
+
{"version":3,"file":"generate-settings.js","sourceRoot":"","sources":["../../../src/cli/apply/generate-settings.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,iFAAiF;AACjF,sEAAsE;AACtE,EAAE;AACF,sEAAsE;AACtE,EAAE;AACF,uFAAuF;AACvF,EAAE;AACF,wEAAwE;AACxE,0EAA0E;AAC1E,2EAA2E;AAC3E,kCAAkC;AAClC,6EAA6E;AAC7E,0EAA0E;AAC1E,mDAAmD;AACnD,4EAA4E;AAC5E,uEAAuE;AACvE,wEAAwE;AACxE,yEAAyE;AACzE,qEAAqE;AACrE,yEAAyE;AACzE,0EAA0E;AAC1E,sEAAsE;AACtE,yEAAyE;AACzE,2EAA2E;AAC3E,yEAAyE;AACzE,0EAA0E;AAC1E,uEAAuE;AACvE,sEAAsE;AACtE,yEAAyE;AACzE,uEAAuE;AACvE,oEAAoE;AACpE,0EAA0E;AAC1E,qEAAqE;AACrE,uEAAuE;AACvE,wEAAwE;AACxE,0CAA0C;AAC1C,EAAE;AACF,0EAA0E;AAC1E,gBAAgB;AAChB,uEAAuE;AACvE,0DAA0D;AAC1D,4DAA4D;AAC5D,yEAAyE;AACzE,oDAAoD;AAGpD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAExC,iFAAiF;AACjF,MAAM,CAAC,MAAM,yBAAyB,GAAG,eAAe,CAAC;AACzD,uFAAuF;AACvF,MAAM,CAAC,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;AAuD3D,MAAM,UAAU,gBAAgB,CAAC,QAAkB;IACjD,OAAO,4BAA4B,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,QAAkB,EAClB,SAAiC,EAAE;IAEnC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,oEAAoE;IACpE,sEAAsE;IACtE,oEAAoE;IACpE,iEAAiE;IACjE,6DAA6D;IAC7D,gEAAgE;IAChE,MAAM,UAAU,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,GAAG,GAAiB,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACxC,MAAM,UAAU,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAE9C,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACvC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,GAAG,GAAG,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC1D,mBAAmB,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACnD,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;IAEtD,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAC/D,IAAI,WAAW;QAAE,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC;IAE/C,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AACjC,CAAC;AAED,SAAS,kBAAkB,CAAC,CAAkC;IAC5D,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,MAAM,GAAG,GAAwB,EAAE,CAAC;IACpC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACnE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3D,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/D,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC;AAED,wEAAwE;AACxE,0EAA0E;AAC1E,wEAAwE;AACxE,0BAA0B;AAC1B,0EAA0E;AAC1E,0EAA0E;AAC1E,sEAAsE;AACtE,uEAAuE;AACvE,uEAAuE;AACvE,sBAAsB;AACtB,+DAA+D;AAC/D,uEAAuE;AACvE,4DAA4D;AAC5D,yEAAyE;AACzE,qEAAqE;AACrE,+DAA+D;AAC/D,MAAM,UAAU,eAAe,CAC7B,OAAoB,EACpB,QAAkB;IAElB,MAAM,GAAG,GAAsC,EAAE,CAAC;IAClD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACxC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC/C,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;YACrC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC9D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,2BAA2B,CAAC,CAAC;YAC9D,SAAS;QACX,CAAC;QACD,0DAA0D;QAC1D,MAAM,IAAI,GAAsB,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAE,EAAE,CAAC;QACxD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3C,mEAAmE;YACnE,qEAAqE;YACrE,qEAAqE;YACrE,+DAA+D;YAC/D,8DAA8D;YAC9D,qEAAqE;YACrE,gEAAgE;YAChE,4DAA4D;YAC5D,iEAAiE;YACjE,qDAAqD;YACrD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBACxD,QAAQ,CAAC,IAAI,CACX,aAAa,CAAC,CAAC,IAAI,QAAQ,GAAG,YAAY,KAAK,uLAAuL,CACvO,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QAC1B,CAAC;QACD,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACrB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAkB,EAClB,GAAsC,EACtC,OAAgB;IAEhB,MAAM,MAAM,GAAG,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAC9C,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;IAC7B,wEAAwE;IACxE,oEAAoE;IACpE,uEAAuE;IACvE,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,CAAC;QACjC,GAAG,CAAC,sBAAsB,CAAC,GAAG,uBAAuB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACzE,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,QAAkB,EAClB,OAAgB;IAEhB,OAAO,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC;AAED,uEAAuE;AACvE,uEAAuE;AACvE,wEAAwE;AACxE,mEAAmE;AACnE,EAAE;AACF,uEAAuE;AACvE,uEAAuE;AACvE,uEAAuE;AACvE,qEAAqE;AACrE,mEAAmE;AACnE,wEAAwE;AACxE,sEAAsE;AACtE,oEAAoE;AACpE,0CAA0C;AAC1C,EAAE;AACF,wEAAwE;AACxE,qEAAqE;AACrE,uEAAuE;AACvE,+DAA+D;AAC/D,oBAAoB;AACpB,MAAM,UAAU,qBAAqB,CAAC,QAAkB;IACtD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACtC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC1D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,IAAI,GAAS;QACjB,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,kBAAkB;QACzB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QACzB,QAAQ,EAAE,KAAK;QACf,SAAS,EAAE,IAAI;KAChB,CAAC;IACF,kEAAkE;IAClE,gEAAgE;IAChE,mEAAmE;IACnE,kEAAkE;IAClE,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QAC7E,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;IAChD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,uEAAuE;IACvE,qDAAqD;IACrD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,WAAW,GAAG,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC5C,gEAAgE;QAChE,iEAAiE;QACjE,oEAAoE;QACpE,iEAAiE;QACjE,sEAAsE;QACtE,iEAAiE;QACjE,0DAA0D;QAC1D,oEAAoE;QACpE,aAAa;QACb,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,MAAM,KAAK,GAA0B,EAAE,CAAC;QACxC,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC5C,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC3D,EAAE,CAAC;YACF,MAAM,GAAG,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,WAAW,GAAG,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YAC1D,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;gBAAE,SAAS;YACpC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,KAAK,GACT,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QACjE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CAAC,CAAO;IAChC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;AACvE,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export type StdinReportOutcome = {
|
|
2
|
+
ok: true;
|
|
3
|
+
filePath: string;
|
|
4
|
+
} | {
|
|
5
|
+
ok: false;
|
|
6
|
+
reason: string;
|
|
7
|
+
parseErrorLogPath?: string;
|
|
8
|
+
};
|
|
9
|
+
export interface PersistStdinReportArgs {
|
|
10
|
+
/** The heredoc body: Understanding Report markdown. */
|
|
11
|
+
markdown: string;
|
|
12
|
+
/** Directory the approve flow lists reports from. */
|
|
13
|
+
reportsDir: string;
|
|
14
|
+
/** Resolved session id; stamped onto the persisted JSON. */
|
|
15
|
+
sessionId: string;
|
|
16
|
+
/** Clock injection for deterministic tests. */
|
|
17
|
+
now: Date;
|
|
18
|
+
}
|
|
19
|
+
/** Reports are a few KB; anything beyond this is not a report. */
|
|
20
|
+
export declare const STDIN_REPORT_MAX_BYTES: number;
|
|
21
|
+
export interface PipedStdinResult {
|
|
22
|
+
text: string;
|
|
23
|
+
/**
|
|
24
|
+
* True only when the stream ended cleanly within the size cap. A
|
|
25
|
+
* timeout with partial data, a stream error, or a size-cap hit all
|
|
26
|
+
* yield `complete: false` — the caller must NOT feed such text into
|
|
27
|
+
* the capture path, or a truncated-but-still-parseable report could
|
|
28
|
+
* be persisted and approved as if it were whole (review 2026-07-10).
|
|
29
|
+
*/
|
|
30
|
+
complete: boolean;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Read piped stdin fully, with a hang guard. The caller must already
|
|
34
|
+
* have established that stdin is NOT a TTY. The timeout exists because
|
|
35
|
+
* this read sits on the operator-approval path: if some harness wires
|
|
36
|
+
* the CLI to an open-but-idle pipe, a blocked read here would brick
|
|
37
|
+
* approvals — after `timeoutMs` we proceed with whatever arrived
|
|
38
|
+
* (a real heredoc is delivered immediately by the shell), flagged
|
|
39
|
+
* `complete: false`.
|
|
40
|
+
*/
|
|
41
|
+
export declare function readPipedStdin(stream: NodeJS.ReadableStream, maxBytes?: number, timeoutMs?: number): Promise<PipedStdinResult>;
|
|
42
|
+
export declare function persistStdinReport(args: PersistStdinReportArgs): StdinReportOutcome;
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
// Report capture for `harness approve understanding` (task 61fd36db).
|
|
2
|
+
//
|
|
3
|
+
// The Understanding Report arrives as a heredoc on the approve command's
|
|
4
|
+
// stdin (see src/cli/pack/approve-escape.ts for why this is the only
|
|
5
|
+
// channel that reliably carries it: the Stop-hook producer fires after
|
|
6
|
+
// approve already ran, and current Claude Code builds do not reliably
|
|
7
|
+
// persist mid-turn assistant text to the transcript JSONL). This module
|
|
8
|
+
// parses the markdown with the canonical parser from
|
|
9
|
+
// `@lannguyensi/understanding-gate` and persists it — session-bound and
|
|
10
|
+
// `pending` — into the same reports directory the Stop hook targets, so
|
|
11
|
+
// the approve flow's existing selection / validation / flip path picks
|
|
12
|
+
// it up via a strict sessionId match.
|
|
13
|
+
//
|
|
14
|
+
// On parse failure it writes a parse-error log in the exact format the
|
|
15
|
+
// standalone Stop hook uses (JSON header incl. sessionId, `--- raw ---`
|
|
16
|
+
// separator, raw markdown), so `findLatestParseError` in
|
|
17
|
+
// approve/understanding.ts surfaces the reason on the `report:` line
|
|
18
|
+
// instead of a silent dead end.
|
|
19
|
+
import * as path from "node:path";
|
|
20
|
+
import { createHash } from "node:crypto";
|
|
21
|
+
import { parseReport } from "@lannguyensi/understanding-gate";
|
|
22
|
+
import { atomicWriteFile } from "../../io/atomic-write.js";
|
|
23
|
+
/** Mirror of the standalone package's slug rule (persistence.ts). */
|
|
24
|
+
function sanitizeSlug(raw) {
|
|
25
|
+
const cleaned = raw.replace(/[^a-zA-Z0-9_-]+/g, "-").replace(/^-+|-+$/g, "");
|
|
26
|
+
return cleaned.slice(0, 40);
|
|
27
|
+
}
|
|
28
|
+
function summarizeParseError(error) {
|
|
29
|
+
if (error.message.length > 0)
|
|
30
|
+
return error.message;
|
|
31
|
+
const missing = error.missing.length > 0 ? ` (missing: ${error.missing.join(", ")})` : "";
|
|
32
|
+
return `${error.reason}${missing}`;
|
|
33
|
+
}
|
|
34
|
+
/** Reports are a few KB; anything beyond this is not a report. */
|
|
35
|
+
export const STDIN_REPORT_MAX_BYTES = 512 * 1024;
|
|
36
|
+
/**
|
|
37
|
+
* Read piped stdin fully, with a hang guard. The caller must already
|
|
38
|
+
* have established that stdin is NOT a TTY. The timeout exists because
|
|
39
|
+
* this read sits on the operator-approval path: if some harness wires
|
|
40
|
+
* the CLI to an open-but-idle pipe, a blocked read here would brick
|
|
41
|
+
* approvals — after `timeoutMs` we proceed with whatever arrived
|
|
42
|
+
* (a real heredoc is delivered immediately by the shell), flagged
|
|
43
|
+
* `complete: false`.
|
|
44
|
+
*/
|
|
45
|
+
export function readPipedStdin(stream, maxBytes = STDIN_REPORT_MAX_BYTES, timeoutMs = 2_000) {
|
|
46
|
+
return new Promise((resolve) => {
|
|
47
|
+
const chunks = [];
|
|
48
|
+
let length = 0;
|
|
49
|
+
let done = false;
|
|
50
|
+
const finish = (complete) => {
|
|
51
|
+
if (done)
|
|
52
|
+
return;
|
|
53
|
+
done = true;
|
|
54
|
+
clearTimeout(timer);
|
|
55
|
+
resolve({
|
|
56
|
+
text: Buffer.concat(chunks).toString("utf8"),
|
|
57
|
+
complete: complete && length <= maxBytes,
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
const timer = setTimeout(() => finish(false), timeoutMs);
|
|
61
|
+
// Let a finished CLI exit even if the timer is still pending.
|
|
62
|
+
timer.unref?.();
|
|
63
|
+
stream.on("data", (chunk) => {
|
|
64
|
+
if (done)
|
|
65
|
+
return;
|
|
66
|
+
if (length < maxBytes) {
|
|
67
|
+
const remaining = maxBytes - length;
|
|
68
|
+
chunks.push(chunk.length > remaining ? chunk.subarray(0, remaining) : chunk);
|
|
69
|
+
}
|
|
70
|
+
length += chunk.length;
|
|
71
|
+
});
|
|
72
|
+
stream.on("end", () => finish(true));
|
|
73
|
+
stream.on("error", () => finish(false));
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
export function persistStdinReport(args) {
|
|
77
|
+
// Defaults mirror the standalone Stop hook (handle-stop.ts): the
|
|
78
|
+
// report's own `**Metadata**` block wins for any field it declares;
|
|
79
|
+
// these only fill gaps. approvalStatus is forced to "pending" by
|
|
80
|
+
// parseReport regardless of input.
|
|
81
|
+
const result = parseReport(args.markdown, {
|
|
82
|
+
taskId: args.sessionId,
|
|
83
|
+
createdAt: args.now.toISOString(),
|
|
84
|
+
mode: "fast_confirm",
|
|
85
|
+
riskLevel: "medium",
|
|
86
|
+
});
|
|
87
|
+
const stamp = args.now.toISOString().replace(/[:.]/g, "-");
|
|
88
|
+
if (!result.ok) {
|
|
89
|
+
const summary = summarizeParseError(result.error);
|
|
90
|
+
// Same side-channel location + format as the standalone Stop hook:
|
|
91
|
+
// <reportsDir>/../parse-errors/<stamp>.log with a JSON header that
|
|
92
|
+
// carries sessionId (findLatestParseError skips logs it cannot
|
|
93
|
+
// attribute to the approving session).
|
|
94
|
+
const parseErrorDir = path.join(path.dirname(args.reportsDir), "parse-errors");
|
|
95
|
+
const payload = `${JSON.stringify({
|
|
96
|
+
reason: result.error.reason,
|
|
97
|
+
missing: result.error.missing,
|
|
98
|
+
schemaErrors: result.error.schemaErrors,
|
|
99
|
+
message: result.error.message,
|
|
100
|
+
stamp,
|
|
101
|
+
sessionId: args.sessionId,
|
|
102
|
+
source: "harness-approve-stdin",
|
|
103
|
+
}, null, 2)}\n\n--- raw ---\n${args.markdown}\n`;
|
|
104
|
+
let parseErrorLogPath;
|
|
105
|
+
try {
|
|
106
|
+
parseErrorLogPath = path.join(parseErrorDir, `${stamp}.log`);
|
|
107
|
+
atomicWriteFile(parseErrorLogPath, payload);
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
// Best-effort side channel; the loud `stdin:` line still names the
|
|
111
|
+
// parse failure even when the log write itself fails.
|
|
112
|
+
parseErrorLogPath = undefined;
|
|
113
|
+
}
|
|
114
|
+
return {
|
|
115
|
+
ok: false,
|
|
116
|
+
reason: `report on stdin did not parse: ${summary}`,
|
|
117
|
+
...(parseErrorLogPath !== undefined ? { parseErrorLogPath } : {}),
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
// The standalone package's saveReport cannot be used here: its
|
|
121
|
+
// canonical serializer whitelists the schema keys and would strip the
|
|
122
|
+
// sessionId binding, which is exactly what makes the approve flow's
|
|
123
|
+
// strict match (and the tier-6 session-id fallback) work. Persist the
|
|
124
|
+
// same JSON shape plus `sessionId`, with the package's filename
|
|
125
|
+
// convention (<isoStamp>-<slug>-<hash8>.json) so directory listings
|
|
126
|
+
// read uniformly.
|
|
127
|
+
const persisted = { ...result.report, sessionId: args.sessionId };
|
|
128
|
+
const json = `${JSON.stringify(persisted, null, 2)}\n`;
|
|
129
|
+
const hash = createHash("sha256").update(json).digest("hex").slice(0, 8);
|
|
130
|
+
const slug = sanitizeSlug(result.report.taskId) || "report";
|
|
131
|
+
const filePath = path.join(args.reportsDir, `${stamp}-${slug}-${hash}.json`);
|
|
132
|
+
try {
|
|
133
|
+
atomicWriteFile(filePath, json);
|
|
134
|
+
}
|
|
135
|
+
catch (err) {
|
|
136
|
+
return {
|
|
137
|
+
ok: false,
|
|
138
|
+
reason: `report parsed but could not be persisted to ${filePath}: ${err.message}`,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
return { ok: true, filePath };
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=stdin-report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdin-report.js","sourceRoot":"","sources":["../../../src/cli/approve/stdin-report.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Manifest } from "../../schema/index.js";
|
|
2
2
|
import { type LoaderOptions } from "../loader.js";
|
|
3
|
+
import { type StdinReportOutcome } from "./stdin-report.js";
|
|
3
4
|
export interface ApproveUnderstandingOptions extends LoaderOptions {
|
|
4
5
|
/** Explicit session id (overrides $CLAUDE_CODE_SESSION_ID / $CLAUDE_SESSION_ID / $CODEX_SESSION_ID). */
|
|
5
6
|
session?: string;
|
|
@@ -44,6 +45,16 @@ export interface ApproveUnderstandingOptions extends LoaderOptions {
|
|
|
44
45
|
* entries are dropped and duplicates de-duplicated.
|
|
45
46
|
*/
|
|
46
47
|
tasks?: string[];
|
|
48
|
+
/**
|
|
49
|
+
* Understanding Report markdown captured from the command's stdin
|
|
50
|
+
* (the report-heredoc shape, task 61fd36db). When set and non-blank,
|
|
51
|
+
* it is parsed and persisted as a pending, session-bound report BEFORE
|
|
52
|
+
* the report lookup below, so this very approve run validates and
|
|
53
|
+
* flips it. A parse failure degrades loudly (parse-error log + reason
|
|
54
|
+
* on the result) but does not abort the approval — the operator just
|
|
55
|
+
* approved interactively; a formatting nit must not brick that.
|
|
56
|
+
*/
|
|
57
|
+
reportMarkdown?: string;
|
|
47
58
|
/** Override the reports directory (test injection). */
|
|
48
59
|
reportsDir?: string;
|
|
49
60
|
/** Override the harness.generated/ directory (test injection). */
|
|
@@ -118,6 +129,15 @@ export interface ApproveUnderstandingResult {
|
|
|
118
129
|
* a wrong claim file can be spotted before it lands in the marker.
|
|
119
130
|
*/
|
|
120
131
|
taskMarkers: TaskMarkerOutcome[];
|
|
132
|
+
/**
|
|
133
|
+
* Outcome of capturing a report passed on stdin (`reportMarkdown`).
|
|
134
|
+
* Absent when no report was supplied. `ok: true` means the markdown
|
|
135
|
+
* parsed and was persisted pending + session-bound; the
|
|
136
|
+
* `persistedReport` result below then reports the flip of that same
|
|
137
|
+
* file. `ok: false` carries the parse/persist failure reason (and the
|
|
138
|
+
* parse-error log path when one was written).
|
|
139
|
+
*/
|
|
140
|
+
stdinReport?: StdinReportOutcome;
|
|
121
141
|
ledger: {
|
|
122
142
|
ok: boolean;
|
|
123
143
|
tag: string;
|
|
@@ -23,6 +23,7 @@ import { clearPendingApproval, resolveGeneratedDir, } from "../../runtime/pendin
|
|
|
23
23
|
import { resolveApprovalSessionId } from "../../runtime/session-id.js";
|
|
24
24
|
import { EX_FAIL, HarnessExitError } from "../exit-codes.js";
|
|
25
25
|
import { loadManifest, resolvePaths } from "../loader.js";
|
|
26
|
+
import { persistStdinReport } from "./stdin-report.js";
|
|
26
27
|
/**
|
|
27
28
|
* Human-scale age for operator messages: minutes up to two hours,
|
|
28
29
|
* hours up to two days, then days. A 17-day-old report should read
|
|
@@ -358,6 +359,19 @@ export async function approveUnderstanding(opts = {}) {
|
|
|
358
359
|
// operator with a bare `ledger: ok false` (no-silent-errors, M8).
|
|
359
360
|
manifestLoadError = err instanceof Error ? err.message : String(err);
|
|
360
361
|
}
|
|
362
|
+
// Report capture from stdin (task 61fd36db): persist BEFORE the
|
|
363
|
+
// lookup below so this very approve run selects, validates, and flips
|
|
364
|
+
// the report the agent just attached. Session-bound via the resolved
|
|
365
|
+
// sessionId, so the strict match wins over any stale leftovers.
|
|
366
|
+
let stdinReport;
|
|
367
|
+
if (typeof opts.reportMarkdown === "string" && opts.reportMarkdown.trim().length > 0) {
|
|
368
|
+
stdinReport = persistStdinReport({
|
|
369
|
+
markdown: opts.reportMarkdown,
|
|
370
|
+
reportsDir,
|
|
371
|
+
sessionId,
|
|
372
|
+
now: opts.now ?? new Date(),
|
|
373
|
+
});
|
|
374
|
+
}
|
|
361
375
|
// Approve-time validation. Resolve the report we would flip BEFORE
|
|
362
376
|
// writing the marker, so a validation failure can short-circuit every
|
|
363
377
|
// downstream write. The `latest` + `reports` values are reused later;
|
|
@@ -413,6 +427,7 @@ export async function approveUnderstanding(opts = {}) {
|
|
|
413
427
|
reason: `validation failed (${validation.field}): ${validation.reason}`,
|
|
414
428
|
},
|
|
415
429
|
taskMarkers: [],
|
|
430
|
+
...(stdinReport !== undefined ? { stdinReport } : {}),
|
|
416
431
|
ledger: {
|
|
417
432
|
ok: false,
|
|
418
433
|
tag: approvedLedgerTagFor(sessionId),
|
|
@@ -598,6 +613,7 @@ export async function approveUnderstanding(opts = {}) {
|
|
|
598
613
|
...(newestReportPath !== undefined ? { newestReportPath } : {}),
|
|
599
614
|
marker: markerResult,
|
|
600
615
|
taskMarkers,
|
|
616
|
+
...(stdinReport !== undefined ? { stdinReport } : {}),
|
|
601
617
|
ledger: ledgerResult.ok
|
|
602
618
|
? { ok: true, tag }
|
|
603
619
|
: { ok: false, tag, reason: ledgerResult.reason },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"understanding.js","sourceRoot":"","sources":["../../../src/cli/approve/understanding.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,EAAE;AACF,4CAA4C;AAC5C,yCAAyC;AACzC,EAAE;AACF,6EAA6E;AAC7E,wEAAwE;AACxE,mDAAmD;AACnD,uEAAuE;AACvE,oEAAoE;AACpE,EAAE;AACF,uEAAuE;AACvE,uEAAuE;AACvE,qEAAqE;AACrE,oEAAoE;AAEpE,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,sBAAsB,EACtB,4BAA4B,EAC5B,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,sEAAsE,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EACL,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAsB,MAAM,cAAc,CAAC;AAiE9E;;;;GAIG;AACH,SAAS,SAAS,CAAC,EAAU;IAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;IACpC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG;QAAE,OAAO,GAAG,GAAG,GAAG,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;IACnC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE;QAAE,OAAO,GAAG,KAAK,GAAG,CAAC;IAC7C,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC;AACtC,CAAC;AAsFD,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AAElD,SAAS,gBAAgB,CAAC,QAAkB;IAC1C,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,IAAI,IAAI,CAAC;AAC5E,CAAC;AAED,SAAS,cAAc,CAAC,CAAS;IAC/B,IAAI,CAAC,KAAK,GAAG;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IACvD,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACvF,OAAO,CAAC,CAAC;AACX,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,QAAkB,EAClB,SAAiB,EACjB,OAAe,EACf,IAAiC;IAEjC,IAAI,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,wCAAwC,EAAE,CAAC;IACzE,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;QAC3C,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QACpC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC3D,OAAO,aAAa,CAAC;QACnB,UAAU,EAAE,OAAO;QACnB,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;QACzC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,IAAI,KAAK;QAC7C,SAAS;QACT,OAAO;QACP,MAAM,EAAE,+BAA+B;KACxC,CAAC,CAAC;AACL,CAAC;AAQD;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAS,oBAAoB,CAAC,GAAW,EAAE,SAAiB;IAC1D,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,UAAU,GAA4C,EAAE,CAAC;IAC/D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,SAAS;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,IAAc,CAAC;QACnB,IAAI,CAAC;YACH,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAAE,SAAS;QAC7B,UAAU,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IACjD,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,GAAW,CAAC;QAChB,IAAI,CAAC;YACH,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,wEAAwE;QACxE,oEAAoE;QACpE,mEAAmE;QACnE,gEAAgE;QAChE,wCAAwC;QACxC,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;QACpD,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACnD,IAAI,eAAe,GAAkB,IAAI,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAA4B,CAAC;YAC7D,IAAI,OAAO,MAAM,CAAC,WAAW,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC5C,eAAe,GAAG,MAAM,CAAC,WAAW,CAAW,CAAC;YAClD,CAAC;YACD,IAAI,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1E,OAAO,GAAG,MAAM,CAAC,SAAS,CAAW,CAAC;YACxC,CAAC;iBAAM,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAChD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;oBAC9C,CAAC,CAAC,cAAe,MAAM,CAAC,SAAS,CAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;oBACnG,CAAC,CAAC,EAAE,CAAC;gBACP,OAAO,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAW,GAAG,OAAO,EAAE,CAAC;YACtD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,8DAA8D;QAChE,CAAC;QACD,IAAI,eAAe,KAAK,SAAS;YAAE,SAAS;QAC5C,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;IAC9C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AA6BD,SAAS,uBAAuB,CAAC,MAA+B;IAC9D,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,MAAM,CAAC,MAAM,CAAY,CAAC,CAAC,CAAC,IAAI,CAAC;IACpF,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAEnD,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtD,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,UAAU;YACjB,MAAM,EACJ,8DAA8D;gBAC9D,oEAAoE;gBACpE,oCAAoC;SACvC,CAAC;IACJ,CAAC;IAED,iEAAiE;IACjE,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzD,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,UAAU;gBACjB,MAAM,EACJ,kEAAkE;oBAClE,yCAAyC;aAC5C,CAAC;QACJ,CAAC;IACH,CAAC;IAED,sEAAsE;IACtE,sEAAsE;IACtE,mEAAmE;IACnE,qEAAqE;IACrE,4BAA4B;IAC5B,MAAM,MAAM,GAAG,CAAC,CAAU,EAAW,EAAE,CACrC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/E,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,UAAU;YACjB,MAAM,EACJ,oEAAoE;gBACpE,kEAAkE;gBAClE,0EAA0E;SAC7E,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,SAAS,qBAAqB,CAC5B,QAAgB,EAChB,UAAkB,EAClB,UAAkB,EAClB,SAAiB;IAEjB,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;IAC1D,MAAM,cAAc,GAClB,OAAO,MAAM,CAAC,gBAAgB,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,MAAM,CAAC,gBAAgB,CAAY,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7F,MAAM,CAAC,gBAAgB,CAAC,GAAG,UAAU,CAAC;IACtC,MAAM,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC;IAClC,MAAM,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC;IAClC,kEAAkE;IAClE,oEAAoE;IACpE,mEAAmE;IACnE,oEAAoE;IACpE,kEAAkE;IAClE,kEAAkE;IAClE,kEAAkE;IAClE,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IACrC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1D,MAAM,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;QAChC,gBAAgB,GAAG,IAAI,CAAC;IAC1B,CAAC;IACD,eAAe,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAClE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,CAAC;AAC9C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,GAAa;IACzC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;QACxB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACvB,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,SAAS;YAC9C,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAoC,EAAE;IAEtC,qEAAqE;IACrE,wEAAwE;IACxE,uEAAuE;IACvE,qEAAqE;IACrE,gDAAgD;IAChD,MAAM,YAAY,GAChB,IAAI,CAAC,YAAY;QACjB,mBAAmB,CAAC;YAClB,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI;SACtC,CAAC,CAAC;IAEL,8CAA8C;IAC9C,+BAA+B;IAC/B,oEAAoE;IACpE,sEAAsE;IACtE,sEAAsE;IACtE,8CAA8C;IAC9C,kEAAkE;IAClE,sEAAsE;IACtE,sDAAsD;IACtD,sEAAsE;IACtE,6DAA6D;IAC7D,qEAAqE;IACrE,qEAAqE;IACrE,yEAAyE;IACzE,sEAAsE;IACtE,iEAAiE;IACjE,iEAAiE;IACjE,wEAAwE;IACxE,wEAAwE;IACxE,EAAE;IACF,uEAAuE;IACvE,6DAA6D;IAC7D,qEAAqE;IACrE,oEAAoE;IACpE,mEAAmE;IACnE,wDAAwD;IACxD,iDAAiD;IACjD,MAAM,UAAU,GACd,IAAI,CAAC,UAAU;QACf,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,wBAAwB,CAAC;QACxC,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,YAAY;QACZ,gEAAgE;QAChE,6DAA6D;QAC7D,6DAA6D;QAC7D,iEAAiE;QACjE,mDAAmD;QACnD,8DAA8D;QAC9D,gEAAgE;QAChE,4DAA4D;QAC5D,gEAAgE;QAChE,6DAA6D;QAC7D,gEAAgE;QAChE,wEAAwE;QACxE,8DAA8D;QAC9D,oBAAoB,EAAE,GAAG,EAAE;YACzB,MAAM,MAAM,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC,IAAI,CAClD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,IAAI,IAAI,CAAC,CAAC,cAAc,KAAK,SAAS,CAC9D,CAAC;YACF,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;gBACxC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpE,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;IACrC,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;IAC7C,MAAM,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC;IAEnD,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;QACrB,qEAAqE;QACrE,0DAA0D;QAC1D,gEAAgE;QAChE,kEAAkE;QAClE,qEAAqE;QACrE,yDAAyD;QACzD,gEAAgE;QAChE,iEAAiE;QACjE,oBAAoB;QACpB,MAAM,IAAI,gBAAgB,CACxB;YACE,6DAA6D;YAC7D,uEAAuE;YACvE,4BAA4B;YAC5B,EAAE;YACF,qFAAqF;YACrF,yBAAyB;YACzB,KAAK,YAAY,oBAAoB;YACrC,0EAA0E;YAC1E,iFAAiF;YACjF,0FAA0F;YAC1F,EAAE;YACF,yEAAyE;YACzE,yEAAyE;YACzE,EAAE;YACF,uCAAuC;YACvC,oEAAoE;YACpE,SAAS,UAAU,EAAE;YACrB,uEAAuE;YACvE,qEAAqE;YACrE,2CAA2C;YAC3C,mEAAmE;YACnE,iEAAiE;YACjE,qEAAqE;YACrE,EAAE;YACF,kEAAkE;YAClE,qEAAqE;YACrE,gEAAgE;YAChE,gCAAgC;SACjC,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,OAAO,CACR,CAAC;IACJ,CAAC;IAED,oEAAoE;IACpE,qEAAqE;IACrE,IAAI,QAAQ,GAAoB,IAAI,CAAC;IACrC,IAAI,iBAAiB,GAAkB,IAAI,CAAC;IAC5C,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;IAC1D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,sEAAsE;QACtE,kEAAkE;QAClE,uEAAuE;QACvE,kEAAkE;QAClE,iBAAiB,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACvE,CAAC;IAED,mEAAmE;IACnE,sEAAsE;IACtE,sEAAsE;IACtE,sEAAsE;IACtE,mEAAmE;IACnE,+DAA+D;IAC/D,6DAA6D;IAC7D,MAAM,OAAO,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,sBAAsB,CAAC,OAAO,EAAE,SAAS,EAAE;QAC3D,gBAAgB,EAAE,aAAa;QAC/B,gBAAgB,EAAE,4BAA4B;QAC9C,GAAG,EAAE,IAAI,CAAC,GAAG;KACd,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IAChC,IAAI,UAAoD,CAAC;IACzD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,UAAU,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACjC,CAAC;SAAM,CAAC;QACN,IAAI,MAAM,GAAmC,IAAI,CAAC;QAClD,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAG3D,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,UAAU,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;YAC1C,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,qEAAqE;IACrE,8DAA8D;IAC9D,oEAAoE;IACpE,mDAAmD;IACnD,IAAI,IAAI,IAAI,UAAU,IAAI,UAAU,CAAC,EAAE,KAAK,KAAK,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;QACzE,kEAAkE;QAClE,oEAAoE;QACpE,oEAAoE;QACpE,mEAAmE;QACnE,mEAAmE;QACnE,0CAA0C;QAC1C,OAAO;YACL,SAAS;YACT,aAAa;YACb,GAAG,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,MAAM,EAAE;gBACN,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,sBAAsB,UAAU,CAAC,KAAK,MAAM,UAAU,CAAC,MAAM,EAAE;aACxE;YACD,WAAW,EAAE,EAAE;YACf,MAAM,EAAE;gBACN,EAAE,EAAE,KAAK;gBACT,GAAG,EAAE,oBAAoB,CAAC,SAAS,CAAC;gBACpC,MAAM,EAAE,YAAY,UAAU,CAAC,KAAK,oBAAoB;aACzD;YACD,eAAe,EAAE;gBACf,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,YAAY,UAAU,CAAC,KAAK,oBAAoB;aACzD;YACD,UAAU;SACX,CAAC;IACJ,CAAC;IAED,oEAAoE;IACpE,oEAAoE;IACpE,oEAAoE;IACpE,wDAAwD;IACxD,MAAM,gBAAgB,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAChE,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,IAAI,mBAAmB,CAAC;IAChE,IAAI,YAAkD,CAAC;IACvD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,mBAAmB,CAAC,YAAY,EAAE,SAAS,EAAE;YAC5D,UAAU,EAAE,gBAAgB;YAC5B,UAAU,EAAE,gBAAgB;SAC7B,CAAC,CAAC;QACH,YAAY,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC;IACtE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,YAAY,GAAG;YACb,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,oCAAqC,GAAa,CAAC,OAAO,EAAE;SACrE,CAAC;IACJ,CAAC;IAED,6DAA6D;IAC7D,oEAAoE;IACpE,uDAAuD;IACvD,mEAAmE;IACnE,oDAAoD;IACpD,sDAAsD;IACtD,oEAAoE;IACpE,iEAAiE;IACjE,uDAAuD;IACvD,IAAI,eAAe,GAAa,EAAE,CAAC;IACnC,IAAI,UAAU,GAA4B,MAAM,CAAC;IACjD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,eAAe,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,UAAU,GAAG,MAAM,CAAC;IACtB,CAAC;SAAM,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjE,eAAe,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,UAAU,GAAG,MAAM,CAAC;IACtB,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;QAC/C,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,eAAe,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC7B,UAAU,GAAG,cAAc,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,MAAM,WAAW,GAAwB,EAAE,CAAC;IAC5C,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,uBAAuB,CAAC,YAAY,EAAE,MAAM,EAAE;gBAC7D,UAAU,EAAE,gBAAgB;gBAC5B,UAAU,EAAE,gBAAgB;aAC7B,CAAC,CAAC;YACH,WAAW,CAAC,IAAI,CAAC;gBACf,EAAE,EAAE,IAAI;gBACR,MAAM;gBACN,QAAQ;gBACR,UAAU,EAAE,gBAAgB;gBAC5B,MAAM,EAAE,UAAU;aACnB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,IAAI,CAAC;gBACf,EAAE,EAAE,KAAK;gBACT,MAAM;gBACN,MAAM,EAAE,gCAAiC,GAAa,CAAC,OAAO,EAAE;gBAChE,MAAM,EAAE,UAAU;aACnB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,iEAAiE;IACjE,kEAAkE;IAClE,kEAAkE;IAClE,sEAAsE;IACtE,+DAA+D;IAC/D,qBAAqB;IACrB,MAAM,GAAG,GACP,IAAI,IAAI,UAAU,IAAI,UAAU,CAAC,EAAE,KAAK,KAAK;QAC3C,CAAC,CAAC,GAAG,oBAAoB,CAAC,SAAS,CAAC,WAAW,UAAU,CAAC,KAAK,EAAE;QACjE,CAAC,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,YAAY,GAAG,QAAQ;QAC3B,CAAC,CAAC,MAAM,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC;QACtD,CAAC,CAAC;YACE,EAAE,EAAE,KAAc;YAClB,MAAM,EAAE,iBAAiB;gBACvB,CAAC,CAAC,wBAAwB,iBAAiB,yBAAyB;gBACpE,CAAC,CAAC,2CAA2C;SAChD,CAAC;IAEN,uEAAuE;IACvE,oEAAoE;IACpE,wBAAwB;IAExB,IAAI,eAA8D,CAAC;IACnE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,mEAAmE;QACnE,+DAA+D;QAC/D,iEAAiE;QACjE,iEAAiE;QACjE,gEAAgE;QAChE,kEAAkE;QAClE,0BAA0B;QAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC,CAAC;QAC3E,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QACzE,IAAI,MAAc,CAAC;QACnB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,GAAG,uBAAuB,UAAU,EAAE,CAAC;YAC7C,IAAI,gBAAgB,EAAE,CAAC;gBACrB,MAAM,IAAI,2BAA2B,gBAAgB,CAAC,QAAQ,KAAK,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAChG,CAAC;QACH,CAAC;aAAM,IAAI,SAAS,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,2DAA2D;YAC3D,kEAAkE;YAClE,8DAA8D;YAC9D,+DAA+D;YAC/D,uDAAuD;YACvD,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC,CAAE,CAAC;YAC3C,MAAM,GAAG,GAAG,SAAS,CACnB,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,WAAW,CACxD,CAAC;YACF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,4BAA4B,GAAG,MAAM,CAAC,CAAC;YACjE,MAAM;gBACJ,gCAAgC,SAAS,cAAc,SAAS,CAAC,aAAa,CAAC,MAAM,GAAG;oBACxF,sDAAsD,MAAM,CAAC,QAAQ,IAAI;oBACzE,WAAW,MAAM,CAAC,SAAS,IAAI,WAAW,SAAS,GAAG,UAAU,MAAM,MAAM;oBAC5E,kFAAkF;oBAClF,qBAAqB,cAAc,EAAE,CAAC;YACxC,IAAI,gBAAgB,EAAE,CAAC;gBACrB,MAAM,IAAI,2BAA2B,gBAAgB,CAAC,QAAQ,KAAK,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAChG,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,gCAAgC,SAAS,KAAK,OAAO,CAAC,MAAM,gCAAgC,CAAC;QACxG,CAAC;QACD,eAAe,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC1C,CAAC;SAAM,CAAC;QACN,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,mBAAmB,CAAC;QAC1D,IAAI,CAAC;YACH,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,GAAG,qBAAqB,CAChE,MAAM,CAAC,QAAQ,EACf,UAAU,EACV,UAAU,EACV,SAAS,CACV,CAAC;YACF,eAAe,GAAG;gBAChB,EAAE,EAAE,IAAI;gBACR,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,cAAc;gBACd,UAAU;gBACV,gBAAgB;gBAChB,GAAG,CAAC,SAAS,CAAC,eAAe;oBAC3B,CAAC,CAAC;wBACE,eAAe,EAAE;4BACf,SAAS,EAAE,MAAM,CAAC,SAAS;4BAC3B,UAAU,EAAE,IAAI,CAAC,KAAK,CACpB,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,CACnE;yBACF;qBACF;oBACH,CAAC,CAAC,EAAE,CAAC;aACR,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,eAAe,GAAG;gBAChB,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,qBAAqB,MAAM,CAAC,QAAQ,KAAM,GAAa,CAAC,OAAO,EAAE;aAC1E,CAAC;QACJ,CAAC;IACH,CAAC;IAED,mEAAmE;IACnE,sEAAsE;IACtE,uEAAuE;IACvE,sEAAsE;IACtE,IAAI,aAAa,KAAK,kBAAkB,IAAI,YAAY,CAAC,EAAE,EAAE,CAAC;QAC5D,oBAAoB,CAAC,YAAY,CAAC,CAAC;IACrC,CAAC;IAED,OAAO;QACL,SAAS;QACT,aAAa;QACb,GAAG,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,MAAM,EAAE,YAAY;QACpB,WAAW;QACX,MAAM,EAAE,YAAY,CAAC,EAAE;YACrB,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE;YACnB,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE;QACnD,eAAe;QACf,UAAU;KACX,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"understanding.js","sourceRoot":"","sources":["../../../src/cli/approve/understanding.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/diff/git.d.ts
CHANGED
|
@@ -4,3 +4,21 @@ export interface GitContext {
|
|
|
4
4
|
}
|
|
5
5
|
export declare function locateGitContext(manifestPath: string): GitContext;
|
|
6
6
|
export declare function readManifestAtRef(ctx: GitContext, ref: string): string;
|
|
7
|
+
/**
|
|
8
|
+
* Repo-relative path for `absPath` in git's forward-slash form, or null
|
|
9
|
+
* when the file lives outside the repo work tree (e.g. an override layer
|
|
10
|
+
* under a ~/.harness home that is not the manifest's repo).
|
|
11
|
+
*
|
|
12
|
+
* Callers pass paths that exist on disk (layers are existsSync-gated at
|
|
13
|
+
* resolve time). A nonexistent path under a symlinked parent would skip
|
|
14
|
+
* realpath resolution and could misreport as outside-repo (null) — null
|
|
15
|
+
* stays the safe, non-crashing failure mode either way.
|
|
16
|
+
*/
|
|
17
|
+
export declare function repoRelativePath(ctx: GitContext, absPath: string): string | null;
|
|
18
|
+
/**
|
|
19
|
+
* Read a repo file at a git ref, or null when it does not exist at that
|
|
20
|
+
* ref. Callers must have validated the ref itself first (the base-manifest
|
|
21
|
+
* read via {@link readManifestAtRef} hard-errors on a bad ref), so a null
|
|
22
|
+
* here means "file absent at ref", not "bad ref".
|
|
23
|
+
*/
|
|
24
|
+
export declare function readFileAtRefOrNull(ctx: GitContext, ref: string, relPath: string): string | null;
|
package/dist/cli/diff/git.js
CHANGED
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
import { execFileSync } from "node:child_process";
|
|
2
|
+
import * as fs from "node:fs";
|
|
2
3
|
import * as path from "node:path";
|
|
3
4
|
import { EX_UNAVAILABLE, EX_USAGE, HarnessExitError } from "../exit-codes.js";
|
|
5
|
+
// `git rev-parse --show-toplevel` reports the PHYSICAL work-tree path
|
|
6
|
+
// (symlinks resolved), so every path we relativize against that root must
|
|
7
|
+
// be resolved the same way, or `path.relative` climbs out of the repo.
|
|
8
|
+
// Bites on macOS out of the box: os.tmpdir() is /var/folders/…, a symlink
|
|
9
|
+
// to /private/var/folders/…. Nonexistent paths stay merely resolved; the
|
|
10
|
+
// callers' existing not-found error paths own that case.
|
|
11
|
+
function toPhysicalPath(p) {
|
|
12
|
+
const resolved = path.resolve(p);
|
|
13
|
+
try {
|
|
14
|
+
return fs.realpathSync(resolved);
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return resolved;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
4
20
|
function runGit(args, cwd) {
|
|
5
21
|
return execFileSync("git", args, {
|
|
6
22
|
cwd,
|
|
@@ -9,7 +25,8 @@ function runGit(args, cwd) {
|
|
|
9
25
|
});
|
|
10
26
|
}
|
|
11
27
|
export function locateGitContext(manifestPath) {
|
|
12
|
-
const
|
|
28
|
+
const physicalManifestPath = toPhysicalPath(manifestPath);
|
|
29
|
+
const dir = path.dirname(physicalManifestPath);
|
|
13
30
|
let root;
|
|
14
31
|
try {
|
|
15
32
|
root = runGit(["rev-parse", "--show-toplevel"], dir).trim();
|
|
@@ -17,7 +34,7 @@ export function locateGitContext(manifestPath) {
|
|
|
17
34
|
catch (err) {
|
|
18
35
|
throw new HarnessExitError(`git is not available or ${dir} is not inside a git work tree: ${err.message.trim()}`, EX_UNAVAILABLE);
|
|
19
36
|
}
|
|
20
|
-
const relPath = path.relative(root,
|
|
37
|
+
const relPath = path.relative(root, physicalManifestPath);
|
|
21
38
|
return { root, manifestRelPath: relPath };
|
|
22
39
|
}
|
|
23
40
|
export function readManifestAtRef(ctx, ref) {
|
|
@@ -29,4 +46,34 @@ export function readManifestAtRef(ctx, ref) {
|
|
|
29
46
|
throw new HarnessExitError(`cannot read ${ctx.manifestRelPath} at git ref "${ref}": ${message}`, EX_USAGE);
|
|
30
47
|
}
|
|
31
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* Repo-relative path for `absPath` in git's forward-slash form, or null
|
|
51
|
+
* when the file lives outside the repo work tree (e.g. an override layer
|
|
52
|
+
* under a ~/.harness home that is not the manifest's repo).
|
|
53
|
+
*
|
|
54
|
+
* Callers pass paths that exist on disk (layers are existsSync-gated at
|
|
55
|
+
* resolve time). A nonexistent path under a symlinked parent would skip
|
|
56
|
+
* realpath resolution and could misreport as outside-repo (null) — null
|
|
57
|
+
* stays the safe, non-crashing failure mode either way.
|
|
58
|
+
*/
|
|
59
|
+
export function repoRelativePath(ctx, absPath) {
|
|
60
|
+
const rel = path.relative(ctx.root, toPhysicalPath(absPath));
|
|
61
|
+
if (rel.startsWith("..") || path.isAbsolute(rel))
|
|
62
|
+
return null;
|
|
63
|
+
return rel.split(path.sep).join("/");
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Read a repo file at a git ref, or null when it does not exist at that
|
|
67
|
+
* ref. Callers must have validated the ref itself first (the base-manifest
|
|
68
|
+
* read via {@link readManifestAtRef} hard-errors on a bad ref), so a null
|
|
69
|
+
* here means "file absent at ref", not "bad ref".
|
|
70
|
+
*/
|
|
71
|
+
export function readFileAtRefOrNull(ctx, ref, relPath) {
|
|
72
|
+
try {
|
|
73
|
+
return runGit(["show", `${ref}:${relPath}`], ctx.root);
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
32
79
|
//# sourceMappingURL=git.js.map
|
package/dist/cli/diff/git.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/cli/diff/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAO9E,SAAS,MAAM,CAAC,IAAc,EAAE,GAAW;IACzC,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE;QAC/B,GAAG;QACH,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;KAClC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,YAAoB;IACnD,MAAM,
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/cli/diff/git.ts"],"names":[],"mappings":"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"}
|