@lannguyensi/harness 0.40.0 → 0.41.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 +37 -0
- package/dist/cli/approve/understanding.js +28 -0
- package/dist/cli/approve/understanding.js.map +1 -1
- package/dist/cli/doctor/codex.d.ts +8 -0
- package/dist/cli/doctor/codex.js +8 -1
- package/dist/cli/doctor/codex.js.map +1 -1
- package/dist/cli/doctor/format.js +23 -11
- package/dist/cli/doctor/format.js.map +1 -1
- package/dist/cli/doctor/index.d.ts +36 -0
- package/dist/cli/doctor/index.js +131 -29
- package/dist/cli/doctor/index.js.map +1 -1
- package/dist/cli/doctor/types.d.ts +26 -0
- package/dist/cli/dry-run.js +5 -0
- package/dist/cli/dry-run.js.map +1 -1
- package/dist/cli/explain.js +16 -3
- package/dist/cli/explain.js.map +1 -1
- package/dist/cli/index.js +75 -6
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/composer.js +10 -31
- package/dist/cli/init/composer.js.map +1 -1
- package/dist/cli/init/index.d.ts +18 -0
- package/dist/cli/init/index.js +28 -2
- package/dist/cli/init/index.js.map +1 -1
- package/dist/cli/init/interactive.d.ts +8 -0
- package/dist/cli/init/interactive.js +22 -1
- package/dist/cli/init/interactive.js.map +1 -1
- package/dist/cli/init/profiles.d.ts +2 -2
- package/dist/cli/init/profiles.js +9 -0
- package/dist/cli/init/profiles.js.map +1 -1
- package/dist/cli/init/templates.d.ts +1 -1
- package/dist/cli/init/templates.js +153 -3
- package/dist/cli/init/templates.js.map +1 -1
- package/dist/cli/list.js +3 -1
- package/dist/cli/list.js.map +1 -1
- package/dist/cli/pack/hook-bootstrap.d.ts +24 -0
- package/dist/cli/pack/hook-bootstrap.js +47 -1
- package/dist/cli/pack/hook-bootstrap.js.map +1 -1
- package/dist/cli/pack/hook-branch-protection.js +9 -1
- package/dist/cli/pack/hook-branch-protection.js.map +1 -1
- package/dist/cli/pack/hook-codex-post-tool-use.d.ts +25 -0
- package/dist/cli/pack/hook-codex-post-tool-use.js +160 -0
- package/dist/cli/pack/hook-codex-post-tool-use.js.map +1 -0
- package/dist/cli/pack/hook-codex-pre-tool-use.d.ts +1 -0
- package/dist/cli/pack/hook-codex-pre-tool-use.js +43 -10
- package/dist/cli/pack/hook-codex-pre-tool-use.js.map +1 -1
- package/dist/cli/pack/hook-codex-stop.js +1 -8
- package/dist/cli/pack/hook-codex-stop.js.map +1 -1
- package/dist/cli/pack/hook-post-tool-use.js +16 -131
- package/dist/cli/pack/hook-post-tool-use.js.map +1 -1
- package/dist/cli/pack/hook-pre-tool-use.js +54 -2
- package/dist/cli/pack/hook-pre-tool-use.js.map +1 -1
- package/dist/cli/pack/hook-stay-in-scope.js +63 -20
- package/dist/cli/pack/hook-stay-in-scope.js.map +1 -1
- package/dist/cli/pack/hook-track-active-claim.js +33 -9
- package/dist/cli/pack/hook-track-active-claim.js.map +1 -1
- package/dist/cli/pack/index.d.ts +2 -1
- package/dist/cli/pack/index.js +2 -1
- package/dist/cli/pack/index.js.map +1 -1
- package/dist/cli/pack/mutate.d.ts +19 -0
- package/dist/cli/pack/mutate.js +38 -0
- package/dist/cli/pack/mutate.js.map +1 -1
- package/dist/cli/pack/reseed.d.ts +19 -0
- package/dist/cli/pack/reseed.js +118 -0
- package/dist/cli/pack/reseed.js.map +1 -0
- package/dist/cli/pause/index.js +12 -3
- package/dist/cli/pause/index.js.map +1 -1
- package/dist/cli/session-start/index.d.ts +14 -0
- package/dist/cli/session-start/index.js +42 -2
- package/dist/cli/session-start/index.js.map +1 -1
- package/dist/cli/validate/checks.js +8 -0
- package/dist/cli/validate/checks.js.map +1 -1
- package/dist/policy-packs/builtin/branch-protection-runtime.d.ts +4 -2
- package/dist/policy-packs/builtin/branch-protection-runtime.js +4 -2
- package/dist/policy-packs/builtin/branch-protection-runtime.js.map +1 -1
- package/dist/policy-packs/builtin/branch-protection.d.ts +10 -1
- package/dist/policy-packs/builtin/branch-protection.js +17 -0
- package/dist/policy-packs/builtin/branch-protection.js.map +1 -1
- package/dist/policy-packs/builtin/understanding-before-execution-runtime.d.ts +197 -24
- package/dist/policy-packs/builtin/understanding-before-execution-runtime.js +342 -40
- package/dist/policy-packs/builtin/understanding-before-execution-runtime.js.map +1 -1
- package/dist/policy-packs/builtin/understanding-before-execution.d.ts +26 -1
- package/dist/policy-packs/builtin/understanding-before-execution.js +302 -17
- package/dist/policy-packs/builtin/understanding-before-execution.js.map +1 -1
- package/dist/policy-packs/registry.d.ts +22 -1
- package/dist/policy-packs/registry.js +19 -2
- package/dist/policy-packs/registry.js.map +1 -1
- package/dist/policy-packs/ux-compare.d.ts +14 -0
- package/dist/policy-packs/ux-compare.js +58 -0
- package/dist/policy-packs/ux-compare.js.map +1 -0
- package/dist/policy-packs/ux-drift-check.d.ts +27 -0
- package/dist/policy-packs/ux-drift-check.js +78 -0
- package/dist/policy-packs/ux-drift-check.js.map +1 -0
- package/dist/probes/mcp.d.ts +13 -0
- package/dist/probes/mcp.js +57 -0
- package/dist/probes/mcp.js.map +1 -1
- package/dist/runtime/approval-signing.d.ts +82 -0
- package/dist/runtime/approval-signing.js +275 -0
- package/dist/runtime/approval-signing.js.map +1 -0
- package/dist/runtime/intercept.js +62 -5
- package/dist/runtime/intercept.js.map +1 -1
- package/dist/runtime/pause-sentinel.js +14 -3
- package/dist/runtime/pause-sentinel.js.map +1 -1
- package/dist/runtime/recovery-git-commit.d.ts +22 -0
- package/dist/runtime/recovery-git-commit.js +284 -0
- package/dist/runtime/recovery-git-commit.js.map +1 -0
- package/dist/runtime/tool-name-aliases.d.ts +1 -0
- package/dist/runtime/tool-name-aliases.js +7 -1
- package/dist/runtime/tool-name-aliases.js.map +1 -1
- package/dist/schema/index.d.ts +53 -42
- package/dist/schema/policies.d.ts +56 -44
- package/dist/schema/policies.js +79 -9
- package/dist/schema/policies.js.map +1 -1
- package/package.json +1 -1
|
@@ -16,6 +16,7 @@ import { profileToSettingsPermissions } from "../permission-translator.js";
|
|
|
16
16
|
import { DEFAULT_RUNTIME } from "../runtime.js";
|
|
17
17
|
import { isKnownProfileName, resolveProfile, KNOWN_PROFILE_NAMES, } from "./permission-profiles.js";
|
|
18
18
|
import { REPORTS_DIR_ENV } from "./understanding-before-execution-runtime.js";
|
|
19
|
+
import { SHELL_ALIASES } from "../../runtime/tool-name-aliases.js";
|
|
19
20
|
export const PACK_NAME = "understanding-before-execution";
|
|
20
21
|
// Canonical version probe for the pack's package-side bin. Consumed by
|
|
21
22
|
// `harness doctor` when the operator declares a pack-level `min_version`
|
|
@@ -44,6 +45,53 @@ export function understandingApprovalRequirement(mode) {
|
|
|
44
45
|
? "a human-approved Understanding Report for this session"
|
|
45
46
|
: "an approved Understanding Report for this session";
|
|
46
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Shipped default `config.producers` for this pack (agent-tasks/25bced52).
|
|
50
|
+
* Canonical source for the "golden path" recovery command: both `harness
|
|
51
|
+
* init` generation surfaces (Solo/Team/Full templates, the Custom
|
|
52
|
+
* composer) and `harness pack reseed` (task 68b9ad9c) read from here, so
|
|
53
|
+
* a future wording change to the producer descriptions only has to land
|
|
54
|
+
* in one place to reach every manifest-generating surface plus the
|
|
55
|
+
* reseed path used to backfill already-installed manifests.
|
|
56
|
+
*/
|
|
57
|
+
export function defaultProducers() {
|
|
58
|
+
return [
|
|
59
|
+
{
|
|
60
|
+
kind: "ask",
|
|
61
|
+
command: "harness approve understanding",
|
|
62
|
+
description: "Bare command, no pipes or chaining. The hook recognises it via isEscapeCommand and emits permissionDecision:ask; the operator's go on that prompt IS the gate approval. Golden path.",
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
kind: "bash",
|
|
66
|
+
command: "harness approve understanding",
|
|
67
|
+
description: "Same command from any un-hooked terminal (operator only, not reachable from inside the gated session). Writes the canonical marker at harness.generated/.approvals/${SESSION_ID}.",
|
|
68
|
+
},
|
|
69
|
+
];
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Shipped default `config.ux` for this pack, parameterised on the
|
|
73
|
+
* resolved mode (only the `required` line varies across modes — see
|
|
74
|
+
* `understandingApprovalRequirement` above). Canonical source consumed
|
|
75
|
+
* by the same generation surfaces as `defaultProducers()`, plus
|
|
76
|
+
* `harness doctor`'s divergence warning and `harness pack reseed` (task
|
|
77
|
+
* 68b9ad9c): the dogfood motivating that task found that a deny-message
|
|
78
|
+
* wording fix (e.g. the heredoc submission form, agent-tasks/e48e3b45)
|
|
79
|
+
* only reached NEW `harness init` manifests, because nothing propagated
|
|
80
|
+
* the improved text into an already-installed operator manifest whose
|
|
81
|
+
* `config.ux` still taught the old wording. Reading from one function
|
|
82
|
+
* here means a future wording fix is available to `pack reseed`
|
|
83
|
+
* automatically, with no separate update needed.
|
|
84
|
+
*/
|
|
85
|
+
export function defaultUx(mode) {
|
|
86
|
+
return {
|
|
87
|
+
cannot: "You cannot use write-capable tools yet.",
|
|
88
|
+
required: [understandingApprovalRequirement(mode)],
|
|
89
|
+
run: [
|
|
90
|
+
"Write an Understanding Report covering: Current Understanding, Intended Outcome, Derived Todos, Acceptance Criteria, Assumptions, Open Questions, Out Of Scope, Risks, Verification Plan, Prior Art (state what you searched for an existing solution and what you found, with an explicit adopt-or-build judgment)",
|
|
91
|
+
"Run `harness approve understanding` with the report attached as a quoted heredoc (harness approve understanding <<'UNDERSTANDING_REPORT' ...report... UNDERSTANDING_REPORT) so it is persisted for audit, then approve the prompt; the heredoc is the only extra shell shape the gate allows (no pipes, chaining, or other redirection)",
|
|
92
|
+
],
|
|
93
|
+
};
|
|
94
|
+
}
|
|
47
95
|
const HOOK_NAME_PREFIX = `policy-pack:${PACK_NAME}`;
|
|
48
96
|
// Per-runtime hook surface. Claude Code keys on tool name (Edit|Write|Bash);
|
|
49
97
|
// Codex's write surface is `apply_patch` plus shell tool aliases used by
|
|
@@ -75,6 +123,13 @@ const PRE_TOOL_USE_COMMAND_CLAUDE = "harness pack hook pre-tool-use";
|
|
|
75
123
|
// - Stop-equivalent capture into `.understanding-gate/reports/`
|
|
76
124
|
// (Phase 6 #6 follow-up).
|
|
77
125
|
// - PreToolUse blocker on apply_patch plus Codex shell aliases (Phase 6 #6).
|
|
126
|
+
// - PostToolUse marker-expiry (task a1348c89): Codex's published hooks
|
|
127
|
+
// reference (developers.openai.com/codex/hooks) documents
|
|
128
|
+
// `PostToolUse` as a first-class event — `[[hooks.PostToolUse]]`
|
|
129
|
+
// with a `matcher` on `tool_name`, same allow/exit-0 or
|
|
130
|
+
// block/exit-2 contract as PreToolUse. Mirrors the Claude
|
|
131
|
+
// `post-tool-use` hook via the shared matching/clearing core in
|
|
132
|
+
// understanding-before-execution-runtime.ts.
|
|
78
133
|
//
|
|
79
134
|
// Cross-runtime sessions can still approve from a Claude Code report:
|
|
80
135
|
// the ledger tag is the canonical source for harnessed sessions,
|
|
@@ -85,6 +140,7 @@ const PRE_TOOL_USE_COMMAND_CLAUDE = "harness pack hook pre-tool-use";
|
|
|
85
140
|
const COMMAND_USER_PROMPT_SUBMIT_CODEX = "harness pack hook codex-user-prompt-submit";
|
|
86
141
|
const COMMAND_STOP_CODEX = "harness pack hook codex-stop";
|
|
87
142
|
const COMMAND_PRE_TOOL_USE_CODEX = "harness pack hook codex-pre-tool-use";
|
|
143
|
+
const COMMAND_POST_TOOL_USE_CODEX = "harness pack hook codex-post-tool-use";
|
|
88
144
|
export function isMode(value) {
|
|
89
145
|
return (typeof value === "string" && MODES.includes(value));
|
|
90
146
|
}
|
|
@@ -177,31 +233,133 @@ const DEFAULT_EXPIRE_ON_TOOL_MATCH = [
|
|
|
177
233
|
"mcp__agent-tasks__tasks_transition",
|
|
178
234
|
];
|
|
179
235
|
const POST_TOOL_USE_COMMAND_CLAUDE = "harness pack hook post-tool-use";
|
|
180
|
-
|
|
236
|
+
// Task cf4cdc93 (Codex parity gap #3): unlike stop/pre-tool-use/
|
|
237
|
+
// post-tool-use, the active-claim tracker and stay-in-scope reminder
|
|
238
|
+
// need NO runtime-specific CLI verb — both hook bodies only ever
|
|
239
|
+
// inspect the generic `tool_name` / `tool_input` fields already common
|
|
240
|
+
// to Claude's and Codex's PostToolUse envelope (no session_id, no
|
|
241
|
+
// shell-command extraction, no Codex-only synonym). One shared command
|
|
242
|
+
// constant per hook is therefore reused verbatim on both runtimes below
|
|
243
|
+
// instead of a `codex-track-active-claim` / `codex-stay-in-scope`
|
|
244
|
+
// sibling binary — avoids reintroducing the exact Claude/Codex drift
|
|
245
|
+
// class task e7c2ec3c fixed on the PreToolUse side.
|
|
246
|
+
const TRACK_ACTIVE_CLAIM_COMMAND = "harness pack hook track-active-claim";
|
|
181
247
|
// Hardcoded matcher for the v2 active-claim tracker (harness/494fd1e5).
|
|
182
248
|
// Agent-tasks specific; operators on other tasking systems can ignore
|
|
183
249
|
// this hook (the matcher won't fire for their tools). A config-driven
|
|
184
250
|
// extension can land later if a second tasking system asks for it.
|
|
185
251
|
const TRACK_ACTIVE_CLAIM_MATCH = "^(?:mcp__agent-tasks__task_start|mcp__agent-tasks__task_finish|mcp__agent-tasks__task_abandon|mcp__agent-tasks__tasks_transition)$";
|
|
252
|
+
// Codex sibling of TRACK_ACTIVE_CLAIM_MATCH above (task cf4cdc93): a
|
|
253
|
+
// bare, unescaped `|`-joined list, NOT the anchored `^(?:...)$` form —
|
|
254
|
+
// same rationale as `codexPostToolUseMatchPattern`'s own doc comment
|
|
255
|
+
// (task a1348c89 review finding): `expandCodexHookMatchPattern`'s
|
|
256
|
+
// "simple token" guard (`isSimpleToolPatternToken`, generate-codex-config.ts)
|
|
257
|
+
// only alias-expands a match string whose tokens are ALL "simple"; the
|
|
258
|
+
// anchor characters `^`, `(`, `?` trip that guard and the anchored form
|
|
259
|
+
// is passed through UNCHANGED at TOML-emit time, so a Codex session
|
|
260
|
+
// sending a dotted/underscore-server MCP tool-name variant would never
|
|
261
|
+
// even reach the hook. This bare form lets the emitted `config.toml`
|
|
262
|
+
// matcher — and therefore Codex's own dispatcher — recognize those
|
|
263
|
+
// variants, exactly like `PRE_TOOL_USE_MATCH_CODEX` already does.
|
|
264
|
+
const TRACK_ACTIVE_CLAIM_MATCH_CODEX = "mcp__agent-tasks__task_start|mcp__agent-tasks__task_finish|mcp__agent-tasks__task_abandon|mcp__agent-tasks__tasks_transition";
|
|
186
265
|
// Hardcoded matcher for the stay-in-scope reminder (harness/2ba06030).
|
|
187
266
|
// Fires on the three task-mutation verbs that can carry labels and
|
|
188
267
|
// description fields. tasks_update is included so a label added
|
|
189
268
|
// post-hoc (e.g. `tasks_update { labels: ["from-review"] }`) still
|
|
190
269
|
// surfaces the reminder.
|
|
191
270
|
const STAY_IN_SCOPE_MATCH = "^(?:mcp__agent-tasks__task_create|mcp__agent-tasks__tasks_create|mcp__agent-tasks__tasks_update)$";
|
|
192
|
-
|
|
271
|
+
// Codex sibling of STAY_IN_SCOPE_MATCH above (task cf4cdc93), same
|
|
272
|
+
// bare-unanchored-list rationale as TRACK_ACTIVE_CLAIM_MATCH_CODEX.
|
|
273
|
+
const STAY_IN_SCOPE_MATCH_CODEX = "mcp__agent-tasks__task_create|mcp__agent-tasks__tasks_create|mcp__agent-tasks__tasks_update";
|
|
274
|
+
const STAY_IN_SCOPE_COMMAND = "harness pack hook stay-in-scope";
|
|
275
|
+
// Bash tool name used to widen the PostToolUse matcher when
|
|
276
|
+
// `expire_on_bash_match` is configured (task bea04a03). Matches the
|
|
277
|
+
// single entry of `DEFAULT_BASH_TOOL_NAMES` in
|
|
278
|
+
// understanding-before-execution-runtime.ts.
|
|
279
|
+
const BASH_TOOL_NAME_CLAUDE = "Bash";
|
|
280
|
+
// Codex shell-tool aliases used for the same widening on the Codex
|
|
281
|
+
// matcher builder below. Derived from the canonical `SHELL_ALIASES` in
|
|
282
|
+
// `src/runtime/tool-name-aliases.ts` (task bea04a03 review finding) —
|
|
283
|
+
// `policy-packs/` IS allowed to depend on `runtime/` (layering rule,
|
|
284
|
+
// `.dependency-cruiser.cjs`; the sibling understanding-before-execution-runtime.ts
|
|
285
|
+
// already imports from there), so this is a shared source of truth
|
|
286
|
+
// rather than a third hand-maintained copy. `CODEX_SHELL_TOOLS` in
|
|
287
|
+
// `src/cli/pack/hook-codex-pre-tool-use.ts` stays a separate literal:
|
|
288
|
+
// `policy-packs/` may not depend on `cli/` (same layering rule), so that
|
|
289
|
+
// one cannot be unified with this without a boundary violation.
|
|
290
|
+
const BASH_TOOL_NAMES_CODEX = SHELL_ALIASES;
|
|
193
291
|
/**
|
|
194
|
-
* Compose the PostToolUse `match` regex from the configured tool list
|
|
292
|
+
* Compose the PostToolUse `match` regex from the configured tool list,
|
|
293
|
+
* widened with the Bash tool name when `includeBash` is true (task
|
|
294
|
+
* bea04a03: `approval_lifecycle.expire_on_bash_match` carries at least
|
|
295
|
+
* one pattern). Before this widening, `expire_on_tool_match` alone
|
|
296
|
+
* gated the matcher, so a real `Bash` call never reached the hook at
|
|
297
|
+
* all — `matchPostToolUseBoundary`'s bash-regex check (which DOES
|
|
298
|
+
* correctly evaluate `expire_on_bash_match` once invoked) was
|
|
299
|
+
* unreachable in practice. Adding "Bash" here only ROUTES the call to
|
|
300
|
+
* the hook; it does not add "Bash" to `expire_on_tool_match`'s own
|
|
301
|
+
* semantics — the hook body still classifies a matched Bash call as a
|
|
302
|
+
* bash-regex match (`toolNameMatched: false`), never a tool-name match.
|
|
195
303
|
* Each tool name is regex-escaped and joined with `|` so settings.json
|
|
196
304
|
* fires the hook only when the just-completed tool is one we care
|
|
197
305
|
* about. When the operator declared `approval_lifecycle: { mode: session }`
|
|
198
|
-
* (or cleared
|
|
306
|
+
* (or cleared both lists), no PostToolUse hook is emitted at all (caller
|
|
199
307
|
* filters).
|
|
200
308
|
*/
|
|
201
|
-
function postToolUseMatchPattern(tools) {
|
|
202
|
-
const
|
|
309
|
+
function postToolUseMatchPattern(tools, includeBash) {
|
|
310
|
+
const widened = includeBash && !tools.includes(BASH_TOOL_NAME_CLAUDE)
|
|
311
|
+
? [...tools, BASH_TOOL_NAME_CLAUDE]
|
|
312
|
+
: tools;
|
|
313
|
+
const escaped = widened.map((t) => t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"));
|
|
203
314
|
return `^(?:${escaped.join("|")})$`;
|
|
204
315
|
}
|
|
316
|
+
/**
|
|
317
|
+
* Compose the CODEX PostToolUse `match` field — deliberately NOT
|
|
318
|
+
* `postToolUseMatchPattern` above (review finding on task a1348c89,
|
|
319
|
+
* verified via a direct probe of `expandCodexHookMatchPattern`). The
|
|
320
|
+
* Claude builder anchors its output in `^(?:...)$` and regex-escapes
|
|
321
|
+
* every tool name; `expandCodexHookMatchPattern` in
|
|
322
|
+
* `generate-codex-config.ts` only alias-expands a match string whose
|
|
323
|
+
* `|`-split tokens are ALL "simple" (`isSimpleToolPatternToken`,
|
|
324
|
+
* `/^[A-Za-z0-9_.:-]+$/`) — the anchor characters `^`, `(`, `?` on the
|
|
325
|
+
* first/last token trip that guard, so an anchored match is passed
|
|
326
|
+
* through UNCHANGED at emit time. Concretely: a Codex session sending
|
|
327
|
+
* the dotted `mcp__agent-tasks__.task_finish` or an underscore-server
|
|
328
|
+
* `mcp__agent_tasks__task_finish` variant would never even reach the
|
|
329
|
+
* hook — Codex's own dispatcher tests `tool_name` against the emitted
|
|
330
|
+
* `matcher`, and the anchored form only contains the canonical forms.
|
|
331
|
+
* (`matchPostToolUseBoundary`'s alias-aware body-side fix, same task,
|
|
332
|
+
* only helps once the hook is actually invoked — it cannot compensate
|
|
333
|
+
* for a dispatcher that never calls it.)
|
|
334
|
+
*
|
|
335
|
+
* This builder instead emits a BARE, unescaped `|`-joined list — same
|
|
336
|
+
* shape as the existing `PRE_TOOL_USE_MATCH_CODEX` constant above —
|
|
337
|
+
* so every token stays "simple" and `expandCodexHookMatchPattern`
|
|
338
|
+
* expands each MCP tool name into its full alias set (server
|
|
339
|
+
* hyphen/underscore swap, the `mcp__server__.tool` dotted form) at
|
|
340
|
+
* `harness apply --runtime codex` time, exactly like the Codex
|
|
341
|
+
* PreToolUse blocker's own matcher already does. No anchoring is
|
|
342
|
+
* needed here: Codex's own hook dispatch (like the sibling PreToolUse
|
|
343
|
+
* matcher) is unanchored substring-style matching already, and this
|
|
344
|
+
* keeps the Codex and Claude builders independently tunable rather
|
|
345
|
+
* than smuggling a Codex-only branch into the shared Claude helper.
|
|
346
|
+
*
|
|
347
|
+
* Like the Claude builder above, `includeBash` (task bea04a03) widens
|
|
348
|
+
* the emitted list with the Codex shell-tool aliases
|
|
349
|
+
* (`BASH_TOOL_NAMES_CODEX`: Bash/shell/exec_command/functions.exec_command)
|
|
350
|
+
* when `approval_lifecycle.expire_on_bash_match` carries at least one
|
|
351
|
+
* pattern, so a real Codex shell call is actually routed to the hook.
|
|
352
|
+
* The aliases stay simple tokens (no anchors), so they still pass
|
|
353
|
+
* through `expandCodexHookMatchPattern` unchanged — they have no MCP-style
|
|
354
|
+
* variants to expand, but they must not trip the "simple token" guard
|
|
355
|
+
* either.
|
|
356
|
+
*/
|
|
357
|
+
function codexPostToolUseMatchPattern(tools, includeBash) {
|
|
358
|
+
const widened = includeBash
|
|
359
|
+
? [...tools, ...BASH_TOOL_NAMES_CODEX.filter((t) => !tools.includes(t))]
|
|
360
|
+
: tools;
|
|
361
|
+
return widened.join("|");
|
|
362
|
+
}
|
|
205
363
|
function resolveExpireOnToolMatch(pack) {
|
|
206
364
|
const raw = pack.config["approval_lifecycle"];
|
|
207
365
|
// No config block at all: default-on with the agent-tasks tool list.
|
|
@@ -225,6 +383,56 @@ function resolveExpireOnToolMatch(pack) {
|
|
|
225
383
|
}
|
|
226
384
|
return { tools: [...DEFAULT_EXPIRE_ON_TOOL_MATCH], emitHook: true };
|
|
227
385
|
}
|
|
386
|
+
/**
|
|
387
|
+
* Whether `approval_lifecycle.expire_on_bash_match` carries at least one
|
|
388
|
+
* non-empty pattern (task bea04a03). Used ONLY to decide whether the
|
|
389
|
+
* emitted PostToolUse matcher should be widened to route Bash (Claude) /
|
|
390
|
+
* shell-alias (Codex) calls to the hook at all — the actual regex
|
|
391
|
+
* compiling and matching against `tool_input.command` happens downstream
|
|
392
|
+
* in `parseApprovalLifecycle` / `matchPostToolUseBoundary`
|
|
393
|
+
* (understanding-before-execution-runtime.ts). An entry that turns out to
|
|
394
|
+
* be an invalid regex is silently dropped there with a warning; that is
|
|
395
|
+
* harmless here — the matcher merely routes the call to the hook, and a
|
|
396
|
+
* hook invocation that finds no live bash-regex match just no-ops
|
|
397
|
+
* (mirrors the existing `noBoundariesConfigured` / `boundary.matched`
|
|
398
|
+
* no-op paths in hook-post-tool-use.ts / hook-codex-post-tool-use.ts).
|
|
399
|
+
*
|
|
400
|
+
* Mirrors `resolveExpireOnToolMatch`'s traversal of the same config
|
|
401
|
+
* block (undefined/non-object/`mode: session` all resolve to "not
|
|
402
|
+
* configured"), but returns a bare boolean since the matcher builders
|
|
403
|
+
* only need presence, not the pattern strings themselves.
|
|
404
|
+
*/
|
|
405
|
+
function resolveExpireOnBashMatchConfigured(pack) {
|
|
406
|
+
const raw = pack.config["approval_lifecycle"];
|
|
407
|
+
if (raw === undefined || raw === null)
|
|
408
|
+
return false;
|
|
409
|
+
if (typeof raw !== "object" || Array.isArray(raw))
|
|
410
|
+
return false;
|
|
411
|
+
const obj = raw;
|
|
412
|
+
if (obj["mode"] === "session")
|
|
413
|
+
return false;
|
|
414
|
+
const list = obj["expire_on_bash_match"];
|
|
415
|
+
if (!Array.isArray(list))
|
|
416
|
+
return false;
|
|
417
|
+
return list.some((v) => typeof v === "string" && v.length > 0);
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Shared PostToolUse boundary resolution for BOTH the Claude and Codex
|
|
421
|
+
* `buildHooks` branches (task bea04a03): combines
|
|
422
|
+
* `resolveExpireOnToolMatch` and `resolveExpireOnBashMatchConfigured`
|
|
423
|
+
* into the one decision each branch's IIFE needs. Extracted specifically
|
|
424
|
+
* to avoid re-introducing the exact clone-avoidance problem
|
|
425
|
+
* `understanding-before-execution-runtime.ts`'s `matchPostToolUseBoundary`
|
|
426
|
+
* / `applyPostToolUseExpiry` / `describePostToolUseExpiry` extraction
|
|
427
|
+
* already solved once for the two runtimes' hook CLIs (`check:duplication`
|
|
428
|
+
* flagged the inline duplicate when this task first wired the two nearly-
|
|
429
|
+
* identical IIFEs by hand).
|
|
430
|
+
*/
|
|
431
|
+
function resolvePostToolUseBoundaries(pack) {
|
|
432
|
+
const { tools, emitHook: toolsEmitHook } = resolveExpireOnToolMatch(pack);
|
|
433
|
+
const bashConfigured = resolveExpireOnBashMatchConfigured(pack);
|
|
434
|
+
return { tools, bashConfigured, emit: toolsEmitHook || bashConfigured };
|
|
435
|
+
}
|
|
228
436
|
function buildHooks(runtime, pack, opts = {}) {
|
|
229
437
|
// Per-mode hook commands are identical (the mode is passed via the
|
|
230
438
|
// package's UNDERSTANDING_GATE_MODE env var, set elsewhere — out of
|
|
@@ -263,6 +471,71 @@ function buildHooks(runtime, pack, opts = {}) {
|
|
|
263
471
|
budget_ms: 5000,
|
|
264
472
|
description: "Codex adapter: block apply_patch and Codex shell tools until an approved Understanding Report exists for the session. Consults both the evidence-ledger tag and the persisted JSON report.",
|
|
265
473
|
},
|
|
474
|
+
// PostToolUse marker-expiry (task a1348c89, widened by task
|
|
475
|
+
// bea04a03). Same boundary-tool list as the Claude hook below
|
|
476
|
+
// (resolveExpireOnToolMatch) so Codex expires on the identical
|
|
477
|
+
// default set (agent-tasks task_finish / task_abandon /
|
|
478
|
+
// pull_requests_merge / tasks_transition) — but a DIFFERENT
|
|
479
|
+
// `match` builder (`codexPostToolUseMatchPattern`, not
|
|
480
|
+
// `postToolUseMatchPattern`): see that function's own doc comment
|
|
481
|
+
// for why the Claude builder's anchored regex form silently
|
|
482
|
+
// defeats the Codex generator's MCP tool-name alias expansion
|
|
483
|
+
// (review finding on task a1348c89).
|
|
484
|
+
// `match` is ALSO widened with the Codex shell-tool aliases
|
|
485
|
+
// (Bash/shell/exec_command/functions.exec_command) whenever
|
|
486
|
+
// `approval_lifecycle.expire_on_bash_match` carries at least one
|
|
487
|
+
// pattern (task bea04a03): before this, `match` was built ONLY
|
|
488
|
+
// from `expire_on_tool_match`, so a real shell call never reached
|
|
489
|
+
// the hook body at all on EITHER runtime, even though
|
|
490
|
+
// `matchPostToolUseBoundary`'s bash-regex check correctly
|
|
491
|
+
// evaluates `expire_on_bash_match` once invoked. The widened
|
|
492
|
+
// aliases are NEVER added to `expire_on_tool_match` itself — the
|
|
493
|
+
// hook body still classifies a matched shell call as a bash-regex
|
|
494
|
+
// match, not a tool-name match, via `CODEX_SHELL_TOOLS.has(toolName)`
|
|
495
|
+
// in the caller (hook-codex-post-tool-use.ts).
|
|
496
|
+
...(() => {
|
|
497
|
+
const { tools, bashConfigured, emit } = resolvePostToolUseBoundaries(pack);
|
|
498
|
+
if (!emit)
|
|
499
|
+
return [];
|
|
500
|
+
const hook = {
|
|
501
|
+
name: `${HOOK_NAME_PREFIX}:codex:post-tool-use`,
|
|
502
|
+
event: "PostToolUse",
|
|
503
|
+
match: codexPostToolUseMatchPattern(tools, bashConfigured),
|
|
504
|
+
command: wrap(COMMAND_POST_TOOL_USE_CODEX),
|
|
505
|
+
blocking: false,
|
|
506
|
+
budget_ms: 2000,
|
|
507
|
+
description: "Codex adapter: expire the approval marker AND the persisted report after a task-completion boundary tool or expire_on_bash_match shell command (default tools: agent-tasks task_finish / task_abandon / pull_requests_merge). Forces a fresh Understanding Report on the next task.",
|
|
508
|
+
};
|
|
509
|
+
return [hook];
|
|
510
|
+
})(),
|
|
511
|
+
// Active-claim tracker (harness/494fd1e5), Codex parity task
|
|
512
|
+
// cf4cdc93 (parity-gaps doc gap #3). Always emitted alongside the
|
|
513
|
+
// pack, mirroring the Claude sibling below — the matcher won't
|
|
514
|
+
// fire for operators on non-agent-tasks tasking systems, so the
|
|
515
|
+
// file simply never appears for them. Same command as Claude
|
|
516
|
+
// (see TRACK_ACTIVE_CLAIM_COMMAND's doc comment above): the hook
|
|
517
|
+
// body needs no Codex-specific handling.
|
|
518
|
+
{
|
|
519
|
+
name: `${HOOK_NAME_PREFIX}:codex:track-active-claim`,
|
|
520
|
+
event: "PostToolUse",
|
|
521
|
+
match: TRACK_ACTIVE_CLAIM_MATCH_CODEX,
|
|
522
|
+
command: TRACK_ACTIVE_CLAIM_COMMAND,
|
|
523
|
+
blocking: false,
|
|
524
|
+
budget_ms: 2000,
|
|
525
|
+
description: "Codex adapter: track the active agent-tasks claim by writing/clearing <generatedDir>/active-claim on task_start / task_finish / task_abandon. Lets `harness approve understanding` auto-resolve the task id (harness/494fd1e5, Codex parity task cf4cdc93).",
|
|
526
|
+
},
|
|
527
|
+
// Stay-in-scope reminder (harness/2ba06030), Codex parity task
|
|
528
|
+
// cf4cdc93 (parity-gaps doc gap #3). Same always-on / soft-only
|
|
529
|
+
// semantics as the Claude sibling below.
|
|
530
|
+
{
|
|
531
|
+
name: `${HOOK_NAME_PREFIX}:codex:stay-in-scope`,
|
|
532
|
+
event: "PostToolUse",
|
|
533
|
+
match: STAY_IN_SCOPE_MATCH_CODEX,
|
|
534
|
+
command: STAY_IN_SCOPE_COMMAND,
|
|
535
|
+
blocking: false,
|
|
536
|
+
budget_ms: 2000,
|
|
537
|
+
description: "Codex adapter: emit a soft reminder + audit row when a review-derived follow-up task gets created. Surfaces user-memory feedback_reviewer_findings_stay_in_scope. Disable: STAY_IN_SCOPE_DISABLED=1 (harness/2ba06030, Codex parity task cf4cdc93).",
|
|
538
|
+
},
|
|
266
539
|
];
|
|
267
540
|
}
|
|
268
541
|
// `min_version` floor on the npm-backed bins: 0.4.0 ships the
|
|
@@ -311,21 +584,33 @@ function buildHooks(runtime, pack, opts = {}) {
|
|
|
311
584
|
description: "Block Edit/Write/Bash until an approved Understanding Report exists for the session. Consults both the evidence-ledger tag (understanding-approved:${SESSION_ID}) and the persisted JSON report.",
|
|
312
585
|
},
|
|
313
586
|
// PostToolUse marker-expiry hook (agent-tasks/d8ee60ca). Fires on the
|
|
314
|
-
// configured task-boundary tools and
|
|
315
|
-
//
|
|
316
|
-
//
|
|
317
|
-
//
|
|
318
|
-
//
|
|
587
|
+
// configured task-boundary tools, and (task bea04a03) on a Bash call
|
|
588
|
+
// when `approval_lifecycle.expire_on_bash_match` carries at least one
|
|
589
|
+
// pattern, and deletes the approval marker so the next Edit / Write /
|
|
590
|
+
// Bash forces a fresh Understanding Report. Default tool list expires
|
|
591
|
+
// on agent-tasks task_finish / task_abandon / pull_requests_merge.
|
|
592
|
+
// Operators on other task systems override the list via
|
|
593
|
+
// config.approval_lifecycle.expire_on_tool_match; setting
|
|
319
594
|
// `approval_lifecycle: { mode: session }` opts out entirely and
|
|
320
595
|
// suppresses this hook from being emitted at all.
|
|
596
|
+
//
|
|
597
|
+
// Before task bea04a03, `match` was built ONLY from
|
|
598
|
+
// `expire_on_tool_match`, so a real `Bash` call never invoked this
|
|
599
|
+
// hook at all — `matchPostToolUseBoundary`'s bash-regex check (which
|
|
600
|
+
// DOES correctly evaluate `expire_on_bash_match` once invoked)
|
|
601
|
+
// was unreachable. Widening `match` to include "Bash" does not
|
|
602
|
+
// change how the hook body classifies the match: a Bash call that
|
|
603
|
+
// fires the hook is still evaluated as a bash-regex match
|
|
604
|
+
// (`toolNameMatched: false`), never folded into
|
|
605
|
+
// `expire_on_tool_match`'s own tool-name semantics.
|
|
321
606
|
...(() => {
|
|
322
|
-
const { tools,
|
|
323
|
-
if (!
|
|
607
|
+
const { tools, bashConfigured, emit } = resolvePostToolUseBoundaries(pack);
|
|
608
|
+
if (!emit)
|
|
324
609
|
return [];
|
|
325
610
|
const hook = {
|
|
326
611
|
name: `${HOOK_NAME_PREFIX}:post-tool-use`,
|
|
327
612
|
event: "PostToolUse",
|
|
328
|
-
match: postToolUseMatchPattern(tools),
|
|
613
|
+
match: postToolUseMatchPattern(tools, bashConfigured),
|
|
329
614
|
// Wrap with UNDERSTANDING_GATE_REPORT_DIR so the post-tool-use
|
|
330
615
|
// hook resolves the same persisted-reports directory as the
|
|
331
616
|
// pre-tool-use blocker; otherwise it can't expire the persisted
|
|
@@ -333,7 +618,7 @@ function buildHooks(runtime, pack, opts = {}) {
|
|
|
333
618
|
command: wrap(POST_TOOL_USE_COMMAND_CLAUDE),
|
|
334
619
|
blocking: false,
|
|
335
620
|
budget_ms: 2000,
|
|
336
|
-
description: "Expire the approval marker AND the persisted report after a task-completion boundary tool (default: agent-tasks task_finish / task_abandon / pull_requests_merge). Forces a fresh Understanding Report on the next task.",
|
|
621
|
+
description: "Expire the approval marker AND the persisted report after a task-completion boundary tool or expire_on_bash_match Bash command (default tools: agent-tasks task_finish / task_abandon / pull_requests_merge). Forces a fresh Understanding Report on the next task.",
|
|
337
622
|
};
|
|
338
623
|
return [hook];
|
|
339
624
|
})(),
|
|
@@ -348,7 +633,7 @@ function buildHooks(runtime, pack, opts = {}) {
|
|
|
348
633
|
name: `${HOOK_NAME_PREFIX}:track-active-claim`,
|
|
349
634
|
event: "PostToolUse",
|
|
350
635
|
match: TRACK_ACTIVE_CLAIM_MATCH,
|
|
351
|
-
command:
|
|
636
|
+
command: TRACK_ACTIVE_CLAIM_COMMAND,
|
|
352
637
|
blocking: false,
|
|
353
638
|
budget_ms: 2000,
|
|
354
639
|
description: "Track the active agent-tasks claim by writing/clearing <generatedDir>/active-claim on task_start / task_finish / task_abandon. Lets `harness approve understanding` auto-resolve the task id (harness/494fd1e5).",
|
|
@@ -367,7 +652,7 @@ function buildHooks(runtime, pack, opts = {}) {
|
|
|
367
652
|
name: `${HOOK_NAME_PREFIX}:stay-in-scope`,
|
|
368
653
|
event: "PostToolUse",
|
|
369
654
|
match: STAY_IN_SCOPE_MATCH,
|
|
370
|
-
command:
|
|
655
|
+
command: STAY_IN_SCOPE_COMMAND,
|
|
371
656
|
blocking: false,
|
|
372
657
|
budget_ms: 2000,
|
|
373
658
|
description: "Emit a soft reminder + audit row when a review-derived follow-up task gets created. Surfaces user-memory feedback_reviewer_findings_stay_in_scope. Disable: STAY_IN_SCOPE_DISABLED=1.",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"understanding-before-execution.js","sourceRoot":"","sources":["../../../src/policy-packs/builtin/understanding-before-execution.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,EAAE;AACF,sEAAsE;AACtE,yEAAyE;AACzE,yEAAyE;AACzE,8EAA8E;AAC9E,0EAA0E;AAC1E,yEAAyE;AACzE,yEAAyE;AACzE,sEAAsE;AACtE,oEAAoE;AACpE,wCAAwC;AAExC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1E,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAgB,MAAM,eAAe,CAAC;AAM9D,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAE9E,MAAM,CAAC,MAAM,SAAS,GAAG,gCAAgC,CAAC;AAE1D,uEAAuE;AACvE,yEAAyE;AACzE,uEAAuE;AACvE,uEAAuE;AACvE,sEAAsE;AACtE,kEAAkE;AAClE,MAAM,CAAC,MAAM,eAAe,GAA8B;IACxD,oBAAoB;IACpB,WAAW;CACZ,CAAC;AAIF,MAAM,KAAK,GAAoB,CAAC,cAAc,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AAEtE,MAAM,CAAC,MAAM,YAAY,GAAS,UAAU,CAAC;AAE7C;;;;;;;;;GASG;AACH,MAAM,UAAU,gCAAgC,CAAC,IAAU;IACzD,OAAO,IAAI,KAAK,QAAQ;QACtB,CAAC,CAAC,wDAAwD;QAC1D,CAAC,CAAC,mDAAmD,CAAC;AAC1D,CAAC;AAED,MAAM,gBAAgB,GAAG,eAAe,SAAS,EAAE,CAAC;AAEpD,6EAA6E;AAC7E,yEAAyE;AACzE,4EAA4E;AAC5E,uEAAuE;AACvE,yEAAyE;AACzE,0EAA0E;AAC1E,UAAU;AACV,MAAM,yBAAyB,GAAG,iBAAiB,CAAC;AACpD,MAAM,wBAAwB,GAC5B,4DAA4D,CAAC;AAE/D,2EAA2E;AAC3E,sEAAsE;AACtE,sEAAsE;AACtE,sEAAsE;AACtE,+BAA+B;AAC/B,MAAM,6BAA6B,GAAG,gCAAgC,CAAC;AACvE,MAAM,eAAe,GAAG,gCAAgC,CAAC;AACzD,yEAAyE;AACzE,sEAAsE;AACtE,iEAAiE;AACjE,yEAAyE;AACzE,mEAAmE;AACnE,0BAA0B;AAC1B,MAAM,2BAA2B,GAAG,gCAAgC,CAAC;AAErE,qEAAqE;AACrE,wDAAwD;AACxD,EAAE;AACF,yDAAyD;AACzD,kEAAkE;AAClE,8BAA8B;AAC9B,+EAA+E;AAC/E,EAAE;AACF,sEAAsE;AACtE,iEAAiE;AACjE,mEAAmE;AACnE,oEAAoE;AACpE,oEAAoE;AACpE,0DAA0D;AAC1D,MAAM,gCAAgC,GACpC,4CAA4C,CAAC;AAC/C,MAAM,kBAAkB,GAAG,8BAA8B,CAAC;AAC1D,MAAM,0BAA0B,GAAG,sCAAsC,CAAC;AAE1E,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ,IAAK,KAA2B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAC1E,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC1B,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAmC,CAAC,CAAC,QAAQ,EAAE;IAC5D,kBAAkB,EAAE,CAAC;SAClB,IAAI,CAAC,mBAAqD,CAAC;SAC3D,QAAQ,EAAE;IACb,kBAAkB,EAAE,CAAC;SAClB,MAAM,CAAC;QACN,iEAAiE;QACjE,mDAAmD;QACnD,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE;QACrC,4DAA4D;QAC5D,wDAAwD;QACxD,oBAAoB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC3D,6DAA6D;QAC7D,gEAAgE;QAChE,gEAAgE;QAChE,oBAAoB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC3D,4DAA4D;QAC5D,+DAA+D;QAC/D,4DAA4D;QAC5D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;KACtC,CAAC;SACD,MAAM,EAAE;SACR,QAAQ,EAAE;IACb,4DAA4D;IAC5D,kEAAkE;IAClE,2DAA2D;IAC3D,0CAA0C;IAC1C,EAAE,EAAE,cAAc,CAAC,QAAQ,EAAE;IAC7B,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACrD,CAAC;KACD,MAAM,EAAE,CAAC;AA+BZ;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,CAAS;IACxC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AACzC,CAAC;AAED,SAAS,2BAA2B,CAClC,OAAe,EACf,UAA8B;IAE9B,IAAI,CAAC,UAAU;QAAE,OAAO,OAAO,CAAC;IAChC,OAAO,GAAG,eAAe,IAAI,gBAAgB,CAAC,UAAU,CAAC,IAAI,OAAO,EAAE,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAgB;IAI1C,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACpE,IAAI,MAAM,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACrD,MAAM,OAAO,GAAG,gBAAgB,IAAI,CAAC,IAAI,qCAAqC,IAAI,CAAC,SAAS,CAC1F,GAAG,CACJ,sBAAsB,YAAY,eAAe,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACtE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;AACzC,CAAC;AAED,uEAAuE;AACvE,uEAAuE;AACvE,uEAAuE;AACvE,uEAAuE;AACvE,uEAAuE;AACvE,iDAAiD;AACjD,MAAM,4BAA4B,GAA0B;IAC1D,+BAA+B;IAC/B,gCAAgC;IAChC,uCAAuC;IACvC,yEAAyE;IACzE,sEAAsE;IACtE,qEAAqE;IACrE,uDAAuD;IACvD,oCAAoC;CACrC,CAAC;AAEF,MAAM,4BAA4B,GAAG,iCAAiC,CAAC;AACvE,MAAM,iCAAiC,GACrC,sCAAsC,CAAC;AAEzC,wEAAwE;AACxE,sEAAsE;AACtE,sEAAsE;AACtE,mEAAmE;AACnE,MAAM,wBAAwB,GAC5B,oIAAoI,CAAC;AAEvI,uEAAuE;AACvE,mEAAmE;AACnE,gEAAgE;AAChE,mEAAmE;AACnE,yBAAyB;AACzB,MAAM,mBAAmB,GACvB,mGAAmG,CAAC;AAEtG,MAAM,4BAA4B,GAAG,iCAAiC,CAAC;AAEvE;;;;;;;GAOG;AACH,SAAS,uBAAuB,CAAC,KAA4B;IAC3D,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3E,OAAO,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AACtC,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAgB;IAIhD,MAAM,GAAG,GAAI,IAAI,CAAC,MAAkC,CAAC,oBAAoB,CAAC,CAAC;IAC3E,qEAAqE;IACrE,oEAAoE;IACpE,4DAA4D;IAC5D,2CAA2C;IAC3C,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACtC,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,4BAA4B,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACtE,CAAC;IACD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAClD,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,4BAA4B,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACtE,CAAC;IACD,MAAM,GAAG,GAAG,GAA8B,CAAC;IAC3C,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACxC,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC;IACzC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CACvB,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAC1D,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IAC/C,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,4BAA4B,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACtE,CAAC;AAED,SAAS,UAAU,CACjB,OAAgB,EAChB,IAAgB,EAChB,OAA2B,EAAE;IAE7B,mEAAmE;IACnE,oEAAoE;IACpE,sEAAsE;IACtE,mEAAmE;IACnE,EAAE;IACF,kEAAkE;IAClE,wEAAwE;IACxE,oEAAoE;IACpE,2CAA2C;IAC3C,MAAM,IAAI,GAAG,CAAC,GAAW,EAAU,EAAE,CACnC,2BAA2B,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACpD,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO;YACL;gBACE,IAAI,EAAE,GAAG,gBAAgB,2BAA2B;gBACpD,KAAK,EAAE,kBAAkB;gBACzB,OAAO,EAAE,gCAAgC;gBACzC,QAAQ,EAAE,KAAK;gBACf,SAAS,EAAE,IAAI;gBACf,WAAW,EACT,sGAAsG;aACzG;YACD;gBACE,IAAI,EAAE,GAAG,gBAAgB,aAAa;gBACtC,KAAK,EAAE,MAAM;gBACb,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC;gBACjC,QAAQ,EAAE,KAAK;gBACf,SAAS,EAAE,IAAI;gBACf,WAAW,EACT,4IAA4I;aAC/I;YACD;gBACE,IAAI,EAAE,GAAG,gBAAgB,qBAAqB;gBAC9C,KAAK,EAAE,YAAY;gBACnB,KAAK,EAAE,wBAAwB;gBAC/B,OAAO,EAAE,IAAI,CAAC,0BAA0B,CAAC;gBACzC,QAAQ,EAAE,MAAM;gBAChB,SAAS,EAAE,IAAI;gBACf,WAAW,EACT,4LAA4L;aAC/L;SACF,CAAC;IACJ,CAAC;IACD,8DAA8D;IAC9D,gEAAgE;IAChE,mEAAmE;IACnE,sEAAsE;IACtE,kEAAkE;IAClE,mEAAmE;IACnE,qEAAqE;IACrE,mEAAmE;IACnE,sEAAsE;IACtE,gBAAgB;IAChB,MAAM,cAAc,GAAG,OAAO,CAAC;IAC/B,MAAM,kBAAkB,GAAqB;QAC3C,oBAAoB;QACpB,WAAW;KACZ,CAAC;IACF,OAAO;QACL;YACE,IAAI,EAAE,GAAG,gBAAgB,qBAAqB;YAC9C,KAAK,EAAE,kBAAkB;YACzB,OAAO,EAAE,6BAA6B;YACtC,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,cAAc;YAC3B,eAAe,EAAE,kBAAkB;YACnC,WAAW,EACT,oHAAoH;SACvH;QACD;YACE,IAAI,EAAE,GAAG,gBAAgB,OAAO;YAChC,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC;YAC9B,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,cAAc;YAC3B,eAAe,EAAE,kBAAkB;YACnC,WAAW,EACT,sHAAsH;SACzH;QACD;YACE,IAAI,EAAE,GAAG,gBAAgB,eAAe;YACxC,KAAK,EAAE,YAAY;YACnB,KAAK,EAAE,yBAAyB;YAChC,OAAO,EAAE,IAAI,CAAC,2BAA2B,CAAC;YAC1C,QAAQ,EAAE,MAAM;YAChB,SAAS,EAAE,IAAI;YACf,WAAW,EACT,kMAAkM;SACrM;QACD,sEAAsE;QACtE,oEAAoE;QACpE,oEAAoE;QACpE,wEAAwE;QACxE,oEAAoE;QACpE,mEAAmE;QACnE,gEAAgE;QAChE,kDAAkD;QAClD,GAAG,CAAC,GAAW,EAAE;YACf,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;YAC3D,IAAI,CAAC,QAAQ;gBAAE,OAAO,EAAE,CAAC;YACzB,MAAM,IAAI,GAAS;gBACjB,IAAI,EAAE,GAAG,gBAAgB,gBAAgB;gBACzC,KAAK,EAAE,aAAa;gBACpB,KAAK,EAAE,uBAAuB,CAAC,KAAK,CAAC;gBACrC,+DAA+D;gBAC/D,4DAA4D;gBAC5D,gEAAgE;gBAChE,4DAA4D;gBAC5D,OAAO,EAAE,IAAI,CAAC,4BAA4B,CAAC;gBAC3C,QAAQ,EAAE,KAAK;gBACf,SAAS,EAAE,IAAI;gBACf,WAAW,EACT,0NAA0N;aAC7N,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,EAAE;QACJ,+DAA+D;QAC/D,mEAAmE;QACnE,gEAAgE;QAChE,6DAA6D;QAC7D,iEAAiE;QACjE,6DAA6D;QAC7D,+CAA+C;QAC/C;YACE,IAAI,EAAE,GAAG,gBAAgB,qBAAqB;YAC9C,KAAK,EAAE,aAAa;YACpB,KAAK,EAAE,wBAAwB;YAC/B,OAAO,EAAE,iCAAiC;YAC1C,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,IAAI;YACf,WAAW,EACT,kNAAkN;SACrN;QACD,iEAAiE;QACjE,iEAAiE;QACjE,iEAAiE;QACjE,8DAA8D;QAC9D,8DAA8D;QAC9D,iEAAiE;QACjE,iEAAiE;QACjE,6DAA6D;QAC7D,kEAAkE;QAClE,sDAAsD;QACtD;YACE,IAAI,EAAE,GAAG,gBAAgB,gBAAgB;YACzC,KAAK,EAAE,aAAa;YACpB,KAAK,EAAE,mBAAmB;YAC1B,OAAO,EAAE,4BAA4B;YACrC,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,IAAI;YACf,WAAW,EACT,uLAAuL;SAC1L;KACF,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,IAAU;IAC9B,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,cAAc;YACjB,OAAO,oIAAoI,CAAC;QAC9I,KAAK,UAAU;YACb,OAAO,wNAAwN,CAAC;QAClO,KAAK,QAAQ;YACX,OAAO,8IAA8I,CAAC;IAC1J,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CACxB,IAAgB,EAChB,IAAU,EACV,OAAgB;IAEhB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACnD,MAAM,OAAO,GAAG,OAAO,KAAK,OAAO,CAAC;IACpC,MAAM,WAAW,GAAG,OAAO;QACzB,CAAC,CAAC,gCAAgC;QAClC,CAAC,CAAC,6BAA6B,CAAC;IAClC,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,eAAe,CAAC;IAC/D,MAAM,UAAU,GAAG,OAAO;QACxB,CAAC,CAAC,0BAA0B;QAC5B,CAAC,CAAC,2BAA2B,CAAC;IAChC,MAAM,YAAY,GAAG,OAAO;QAC1B,CAAC,CAAC,wBAAwB;QAC1B,CAAC,CAAC,yBAAyB,CAAC;IAC9B,MAAM,gBAAgB,GAAG,OAAO;QAC9B,CAAC,CAAC,uCAAuC;QACzC,CAAC,CAAC,iCAAiC,CAAC;IACtC,MAAM,UAAU,GAAG,0BAA0B,OAAO;;;CAGrD,CAAC;IACA,MAAM,cAAc,GAAG,GAAG,CAAC;IAC3B,OAAO,kBAAkB,SAAS;;;UAG1B,WAAW;;;;;;;EAOnB,OAAO;;;;EAIP,IAAI;;EAEJ,YAAY,CAAC,IAAI,CAAC;;;;uDAImC,gBAAgB;;sCAEjC,WAAW;;EAE/C,UAAU,GAAG,cAAc,+BAA+B,UAAU;UAC5D,YAAY;;;;;;;;;;;;;;;;;EAiBpB,WAAW,CAAC,CAAC,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;;YAEtD,SAAS;YACT,IAAI;eACD,OAAO;;;;;;CAMrB,CAAC;AACF,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAgB;IAIhD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAC9C,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACnE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO;YACL,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,gBAAgB,IAAI,CAAC,IAAI,uDAAuD,OAAO,GAAG,qCAAqC;SACzI,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO;YACL,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,gBAAgB,IAAI,CAAC,IAAI,qDAAqD,IAAI,CAAC,SAAS,CACnG,GAAG,CACJ,cAAc,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,qCAAqC;SACnF,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1D,OAAO,EAAE,WAAW,EAAE,4BAA4B,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,OAAO,CACrB,IAAgB,EAChB,UAAmB,eAAe,EAClC,OAA2B,EAAE;IAE7B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9C,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACnE,MAAM,KAAK,GAA2B;QACpC;YACE,YAAY,EAAE,gBAAgB,SAAS,kBAAkB;YACzD,OAAO,EAAE,mBAAmB;SAC7B;KACF,CAAC;IACF,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,OAAO;QAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEpC,MAAM,aAAa,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,aAAa,CAAC,OAAO;QAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAChE,MAAM,YAAY,GAAqB,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACxD,IAAI,aAAa,CAAC,WAAW;QAC3B,YAAY,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC;IAEvD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;AACpC,CAAC"}
|
|
1
|
+
{"version":3,"file":"understanding-before-execution.js","sourceRoot":"","sources":["../../../src/policy-packs/builtin/understanding-before-execution.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { z } from "zod";
|
|
2
|
-
import type { PolicyPack } from "../schema/index.js";
|
|
2
|
+
import type { PolicyPack, PolicyUx, Producer } from "../schema/index.js";
|
|
3
3
|
import { type ResolvePackOptions } from "./builtin/understanding-before-execution.js";
|
|
4
4
|
import { type Runtime } from "./runtime.js";
|
|
5
5
|
import type { PackContribution } from "./types.js";
|
|
@@ -30,3 +30,24 @@ export declare function resolveBuiltinConfigSchema(packName: string): z.ZodTypeA
|
|
|
30
30
|
* `min_version` floor.
|
|
31
31
|
*/
|
|
32
32
|
export declare function resolveBuiltinVersionCommand(packName: string): readonly [string, string] | null;
|
|
33
|
+
/**
|
|
34
|
+
* The shipped-template `config.ux` / `config.producers` for a builtin pack,
|
|
35
|
+
* as the operator's OWN pack entry would resolve them today (e.g. `ux`'s
|
|
36
|
+
* `required:` line is derived from the pack's currently-configured `mode`,
|
|
37
|
+
* not a hardcoded default mode — an operator on `strict` should be
|
|
38
|
+
* compared against, and reseeded with, the `strict` wording, not
|
|
39
|
+
* `grill_me`'s).
|
|
40
|
+
*
|
|
41
|
+
* Returns `null` when the pack name is not a builtin, or when the pack
|
|
42
|
+
* has no canonical shipped default to compare/reseed against (e.g.
|
|
43
|
+
* `solution-acceptance`, which ships `enabled: false` with no `config:`
|
|
44
|
+
* block in any init template). Consumed by `checkPolicyPackUxDrift`
|
|
45
|
+
* (`harness doctor`'s divergence warning) and `harness pack reseed`
|
|
46
|
+
* (task 68b9ad9c) — the single source both read from so the two stay
|
|
47
|
+
* in lockstep by construction.
|
|
48
|
+
*/
|
|
49
|
+
export interface BuiltinDefaultConfig {
|
|
50
|
+
ux?: PolicyUx;
|
|
51
|
+
producers?: Producer[];
|
|
52
|
+
}
|
|
53
|
+
export declare function resolveBuiltinDefaultConfig(pack: PolicyPack): BuiltinDefaultConfig | null;
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
// builtins are added by appending to `KNOWN_BUILTIN_PACKS` and a case
|
|
5
5
|
// arm in `resolveBuiltin()`. Non-builtin sources (path/npm/git) are
|
|
6
6
|
// out of scope for v1; their resolution lands in a later sub-task.
|
|
7
|
-
import { configSchema as branchProtectionConfigSchema, PACK_NAME as BRANCH_PROTECTION, resolve as resolveBranchProtection, } from "./builtin/branch-protection.js";
|
|
8
|
-
import { configSchema as understandingBeforeExecutionConfigSchema, PACK_NAME as UNDERSTANDING_BEFORE_EXECUTION, resolve as resolveUnderstandingBeforeExecution, VERSION_COMMAND as UNDERSTANDING_BEFORE_EXECUTION_VERSION_COMMAND, } from "./builtin/understanding-before-execution.js";
|
|
7
|
+
import { configSchema as branchProtectionConfigSchema, defaultUx as branchProtectionDefaultUx, PACK_NAME as BRANCH_PROTECTION, resolve as resolveBranchProtection, } from "./builtin/branch-protection.js";
|
|
8
|
+
import { configSchema as understandingBeforeExecutionConfigSchema, defaultProducers as understandingBeforeExecutionDefaultProducers, defaultUx as understandingBeforeExecutionDefaultUx, PACK_NAME as UNDERSTANDING_BEFORE_EXECUTION, resolve as resolveUnderstandingBeforeExecution, resolveMode as resolveUnderstandingBeforeExecutionMode, VERSION_COMMAND as UNDERSTANDING_BEFORE_EXECUTION_VERSION_COMMAND, } from "./builtin/understanding-before-execution.js";
|
|
9
9
|
import { configSchema as solutionAcceptanceConfigSchema, PACK_NAME as SOLUTION_ACCEPTANCE, resolve as resolveSolutionAcceptance, } from "./builtin/solution-acceptance.js";
|
|
10
10
|
import { DEFAULT_RUNTIME } from "./runtime.js";
|
|
11
11
|
export const KNOWN_BUILTIN_PACKS = [
|
|
@@ -71,4 +71,21 @@ export function resolveBuiltinVersionCommand(packName) {
|
|
|
71
71
|
return null;
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
|
+
export function resolveBuiltinDefaultConfig(pack) {
|
|
75
|
+
if (!isBuiltinPackName(pack.name))
|
|
76
|
+
return null;
|
|
77
|
+
switch (pack.name) {
|
|
78
|
+
case UNDERSTANDING_BEFORE_EXECUTION: {
|
|
79
|
+
const { mode } = resolveUnderstandingBeforeExecutionMode(pack);
|
|
80
|
+
return {
|
|
81
|
+
ux: understandingBeforeExecutionDefaultUx(mode),
|
|
82
|
+
producers: understandingBeforeExecutionDefaultProducers(),
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
case BRANCH_PROTECTION:
|
|
86
|
+
return { ux: branchProtectionDefaultUx() };
|
|
87
|
+
case SOLUTION_ACCEPTANCE:
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
74
91
|
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/policy-packs/registry.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,EAAE;AACF,kEAAkE;AAClE,sEAAsE;AACtE,oEAAoE;AACpE,mEAAmE;AAInE,OAAO,EACL,YAAY,IAAI,4BAA4B,EAC5C,SAAS,IAAI,iBAAiB,EAC9B,OAAO,IAAI,uBAAuB,GACnC,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,YAAY,IAAI,wCAAwC,EACxD,SAAS,IAAI,8BAA8B,EAC3C,OAAO,IAAI,mCAAmC,EAC9C,eAAe,IAAI,8CAA8C,GAElE,MAAM,6CAA6C,CAAC;AACrD,OAAO,EACL,YAAY,IAAI,8BAA8B,EAC9C,SAAS,IAAI,mBAAmB,EAChC,OAAO,IAAI,yBAAyB,GACrC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAgB,MAAM,cAAc,CAAC;AAG7D,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,8BAA8B;IAC9B,iBAAiB;IACjB,mBAAmB;CACX,CAAC;AAGX,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAQ,mBAAyC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACnE,CAAC;AAOD,MAAM,UAAU,cAAc,CAC5B,IAAgB,EAChB,UAAmB,eAAe,EAClC,OAA2B,EAAE;IAE7B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/C,QAAQ,IAAI,CAAC,IAAuB,EAAE,CAAC;QACrC,KAAK,8BAA8B;YACjC,OAAO,mCAAmC,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAClE,KAAK,iBAAiB;YACpB,OAAO,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAChD,KAAK,mBAAmB;YACtB,OAAO,yBAAyB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CACxC,QAAgB;IAEhB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,QAAQ,QAA2B,EAAE,CAAC;QACpC,KAAK,8BAA8B;YACjC,OAAO,wCAAwC,CAAC;QAClD,KAAK,iBAAiB;YACpB,OAAO,4BAA4B,CAAC;QACtC,KAAK,mBAAmB;YACtB,OAAO,8BAA8B,CAAC;IAC1C,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,4BAA4B,CAC1C,QAAgB;IAEhB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,QAAQ,QAA2B,EAAE,CAAC;QACpC,KAAK,8BAA8B;YACjC,OAAO,8CAA8C,CAAC;QACxD,KAAK,iBAAiB;YACpB,OAAO,IAAI,CAAC;QACd,KAAK,mBAAmB;YACtB,oEAAoE;YACpE,sDAAsD;YACtD,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/policy-packs/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { PolicyUx, Producer } from "../schema/index.js";
|
|
2
|
+
export declare function uxEqual(a: PolicyUx, b: PolicyUx): boolean;
|
|
3
|
+
/**
|
|
4
|
+
* Structural equality over a `producers:` array. Compares each entry
|
|
5
|
+
* field-by-field per its discriminated `kind` rather than a generic deep
|
|
6
|
+
* equal — the shape is small and fixed (bash/mcp/ask), and this keeps the
|
|
7
|
+
* comparison legible instead of round-tripping through JSON.stringify
|
|
8
|
+
* (which would also be sensitive to incidental key ordering).
|
|
9
|
+
*/
|
|
10
|
+
export declare function producersEqual(a: readonly Producer[], b: readonly Producer[]): boolean;
|
|
11
|
+
/** Parses an unknown `config.ux` value; returns null on any schema rejection. */
|
|
12
|
+
export declare function safeParseUx(raw: unknown): PolicyUx | null;
|
|
13
|
+
/** Parses an unknown `config.producers` value; returns null on any schema rejection. */
|
|
14
|
+
export declare function safeParseProducers(raw: unknown): Producer[] | null;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// Structural comparison + safe-parse helpers for `config.ux` /
|
|
2
|
+
// `config.producers` (task 68b9ad9c). Shared by `checkPolicyPackUxDrift`
|
|
3
|
+
// (the `harness doctor` read-side warning, ux-drift-check.ts) and
|
|
4
|
+
// `harness pack reseed` (the opt-in write-side fix, src/cli/pack/reseed.ts)
|
|
5
|
+
// so the two can never independently drift on what "matches the shipped
|
|
6
|
+
// template" means.
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
import { PolicyUxSchema, ProducerSchema } from "../schema/policies.js";
|
|
9
|
+
const ProducersArraySchema = z.array(ProducerSchema);
|
|
10
|
+
function stringArrayEqual(a, b) {
|
|
11
|
+
if (a.length !== b.length)
|
|
12
|
+
return false;
|
|
13
|
+
return a.every((v, i) => v === b[i]);
|
|
14
|
+
}
|
|
15
|
+
export function uxEqual(a, b) {
|
|
16
|
+
return (a.cannot === b.cannot &&
|
|
17
|
+
stringArrayEqual(a.required, b.required) &&
|
|
18
|
+
stringArrayEqual(a.run, b.run));
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Structural equality over a `producers:` array. Compares each entry
|
|
22
|
+
* field-by-field per its discriminated `kind` rather than a generic deep
|
|
23
|
+
* equal — the shape is small and fixed (bash/mcp/ask), and this keeps the
|
|
24
|
+
* comparison legible instead of round-tripping through JSON.stringify
|
|
25
|
+
* (which would also be sensitive to incidental key ordering).
|
|
26
|
+
*/
|
|
27
|
+
export function producersEqual(a, b) {
|
|
28
|
+
if (a.length !== b.length)
|
|
29
|
+
return false;
|
|
30
|
+
return a.every((entryA, i) => {
|
|
31
|
+
const entryB = b[i];
|
|
32
|
+
if (!entryB || entryA.kind !== entryB.kind)
|
|
33
|
+
return false;
|
|
34
|
+
if (entryA.kind === "bash" && entryB.kind === "bash") {
|
|
35
|
+
return entryA.command === entryB.command && entryA.description === entryB.description;
|
|
36
|
+
}
|
|
37
|
+
if (entryA.kind === "ask" && entryB.kind === "ask") {
|
|
38
|
+
return entryA.command === entryB.command && entryA.description === entryB.description;
|
|
39
|
+
}
|
|
40
|
+
if (entryA.kind === "mcp" && entryB.kind === "mcp") {
|
|
41
|
+
return (entryA.verb === entryB.verb &&
|
|
42
|
+
entryA.example === entryB.example &&
|
|
43
|
+
entryA.description === entryB.description);
|
|
44
|
+
}
|
|
45
|
+
return false;
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
/** Parses an unknown `config.ux` value; returns null on any schema rejection. */
|
|
49
|
+
export function safeParseUx(raw) {
|
|
50
|
+
const result = PolicyUxSchema.safeParse(raw);
|
|
51
|
+
return result.success ? result.data : null;
|
|
52
|
+
}
|
|
53
|
+
/** Parses an unknown `config.producers` value; returns null on any schema rejection. */
|
|
54
|
+
export function safeParseProducers(raw) {
|
|
55
|
+
const result = ProducersArraySchema.safeParse(raw);
|
|
56
|
+
return result.success ? result.data : null;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=ux-compare.js.map
|