vigiles 21.0.0 → 21.0.1

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.
@@ -24,9 +24,11 @@
24
24
  * OpenCode via the HookProtocol port later — OpenCode hooks ARE in-process TS).
25
25
  *
26
26
  * Pure core, harness-neutral. HONEST SCOPE (kept in every doc): compile/verify fix
27
- * the hook's AUTHORING + LOGIC, not DELIVERY — CC's subagent-bypass (#34692) means
28
- * a PreToolUse hook does not fire for a subagent's tool calls, so a gate is a strong
29
- * default, never an unbypassable wall. Limits (buy-in, node-startup latency) +
27
+ * the hook's AUTHORING + LOGIC, not the harness's DELIVERY. #34692 (a subagent's
28
+ * calls never reaching PreToolUse) is FIXED as of CC 2.1.241 measured on a stock
29
+ * install, pinned by src/subagent-delivery.test.ts. A gate is STILL a strong default
30
+ * rather than an unbypassable wall, because a model can route around a tool
31
+ * entirely (#45427 / #32376). Limits (buy-in, node-startup latency) +
30
32
  * full record in research/hook-pain-points.md.
31
33
  */
32
34
  import { type BashEffect } from "./bash-effects.js";
@@ -64,9 +64,11 @@ exports.isLoadPathRepairEvent = isLoadPathRepairEvent;
64
64
  * OpenCode via the HookProtocol port later — OpenCode hooks ARE in-process TS).
65
65
  *
66
66
  * Pure core, harness-neutral. HONEST SCOPE (kept in every doc): compile/verify fix
67
- * the hook's AUTHORING + LOGIC, not DELIVERY — CC's subagent-bypass (#34692) means
68
- * a PreToolUse hook does not fire for a subagent's tool calls, so a gate is a strong
69
- * default, never an unbypassable wall. Limits (buy-in, node-startup latency) +
67
+ * the hook's AUTHORING + LOGIC, not the harness's DELIVERY. #34692 (a subagent's
68
+ * calls never reaching PreToolUse) is FIXED as of CC 2.1.241 measured on a stock
69
+ * install, pinned by src/subagent-delivery.test.ts. A gate is STILL a strong default
70
+ * rather than an unbypassable wall, because a model can route around a tool
71
+ * entirely (#45427 / #32376). Limits (buy-in, node-startup latency) +
70
72
  * full record in research/hook-pain-points.md.
71
73
  */
72
74
  const bash_effects_js_1 = require("./bash-effects.js");
@@ -14,7 +14,9 @@
14
14
  * the hook via {@link runHook} and check the normalized decision is BLOCK. No model,
15
15
  * no API key, runs in CI, works on a hand-written hook with NO vigiles spec — it
16
16
  * verifies the hook's decision LOGIC, so it sidesteps CC's runtime delivery bugs
17
- * (subagent-bypass #34692 etc.) which it deliberately does NOT claim to fix.
17
+ * (the model routing around a tool entirely, #45427 / #32376) which it deliberately
18
+ * does NOT claim to fix. (#34692, the old subagent-delivery gap, is fixed as of CC
19
+ * 2.1.241 — see src/subagent-delivery.test.ts.)
18
20
  *
19
21
  * Pure-ish (wraps the existing runHook tier). The catalog is harness-neutral data;
20
22
  * the scaffold-test generator emits a test that calls these, and the same engine
@@ -21,7 +21,9 @@ exports.formatGuardrailReport = formatGuardrailReport;
21
21
  * the hook via {@link runHook} and check the normalized decision is BLOCK. No model,
22
22
  * no API key, runs in CI, works on a hand-written hook with NO vigiles spec — it
23
23
  * verifies the hook's decision LOGIC, so it sidesteps CC's runtime delivery bugs
24
- * (subagent-bypass #34692 etc.) which it deliberately does NOT claim to fix.
24
+ * (the model routing around a tool entirely, #45427 / #32376) which it deliberately
25
+ * does NOT claim to fix. (#34692, the old subagent-delivery gap, is fixed as of CC
26
+ * 2.1.241 — see src/subagent-delivery.test.ts.)
25
27
  *
26
28
  * Pure-ish (wraps the existing runHook tier). The catalog is harness-neutral data;
27
29
  * the scaffold-test generator emits a test that calls these, and the same engine
package/dist/hook.d.ts CHANGED
@@ -39,11 +39,13 @@
39
39
  * inline `provide(name, cmd)` (read-only) or `dangerously(name, cmd)` (the loud
40
40
  * escape) right in `needs`. See `research/hook-context-providers.md`.
41
41
  *
42
- * ⚠️ Honest scope: compile/verify fix the hook's AUTHORING + LOGIC. They do NOT
43
- * change DELIVERY Claude Code's own subagent-bypass (#34692) means a
44
- * PreToolUse hook (compiled or hand-written) does not fire for a subagent's
45
- * tool calls. A gate is a strong default, never an unbypassable wall. See
46
- * `docs/compiled-hooks.md`.
42
+ * ⚠️ Honest scope: compile/verify fix the hook's AUTHORING + LOGIC, not the
43
+ * harness's DELIVERY. The delivery floor MOVED #34692 (a subagent's tool calls
44
+ * never reaching PreToolUse) is FIXED as of Claude Code 2.1.241, measured against
45
+ * a stock registry install and pinned by src/subagent-delivery.test.ts, which goes
46
+ * red if it regresses. What has NOT changed: a model can still route around a tool
47
+ * entirely (#45427 / #32376 — a Bash heredoc instead of `Write`), so a gate is a
48
+ * strong default and is NEVER an unbypassable wall. See `docs/compiled-hooks.md`.
47
49
  */
48
50
  export { experimental_defineHook, experimental_defineFileGate, experimental_definePromptGate, experimental_defineStopGate, tool, tools, allow, deny, ask, commandView, pathView, gateAction, hookMode, experimental_defineInject, inject, experimental_defineReact, run, notice, nothing, responseView, decideProgram, decideFileGate, decidePromptGate, decideStopGate, runInject, runReact, runHookProgram, decisionExitCode, dispatchKind, hookRouting, hookNeeds, injectionOf, outcomeWrites, matchesTool, invalidToolPatterns, compileHookProgram, checkHookImports, stampHook, verifyHookStamp, HookCompileError, } from "./core/hook-program.js";
49
51
  export type { Decision, HookMode, GateAction, CommandView, PathView, ResponseView, BashToolEvent, FileToolEvent, PromptEvent, StopEvent, ReactEvent, SessionEvent, HookProgram, FileGateHook, PromptGateHook, StopGateHook, InjectHook, ReactHook, AnyHook, DispatchKind, Injection, Reaction, RunReaction, CompiledHookProgram, CompileHookOptions, RawHookEvent, HookProgramOutcome, } from "./core/hook-program.js";
package/dist/hook.js CHANGED
@@ -43,11 +43,13 @@ exports.leafCommandsNormalized = exports.HookStateError = exports.durationSecond
43
43
  * inline `provide(name, cmd)` (read-only) or `dangerously(name, cmd)` (the loud
44
44
  * escape) right in `needs`. See `research/hook-context-providers.md`.
45
45
  *
46
- * ⚠️ Honest scope: compile/verify fix the hook's AUTHORING + LOGIC. They do NOT
47
- * change DELIVERY Claude Code's own subagent-bypass (#34692) means a
48
- * PreToolUse hook (compiled or hand-written) does not fire for a subagent's
49
- * tool calls. A gate is a strong default, never an unbypassable wall. See
50
- * `docs/compiled-hooks.md`.
46
+ * ⚠️ Honest scope: compile/verify fix the hook's AUTHORING + LOGIC, not the
47
+ * harness's DELIVERY. The delivery floor MOVED #34692 (a subagent's tool calls
48
+ * never reaching PreToolUse) is FIXED as of Claude Code 2.1.241, measured against
49
+ * a stock registry install and pinned by src/subagent-delivery.test.ts, which goes
50
+ * red if it regresses. What has NOT changed: a model can still route around a tool
51
+ * entirely (#45427 / #32376 — a Bash heredoc instead of `Write`), so a gate is a
52
+ * strong default and is NEVER an unbypassable wall. See `docs/compiled-hooks.md`.
51
53
  */
52
54
  var hook_program_js_1 = require("./core/hook-program.js");
53
55
  // ── the six ENTRY POINTS carry the experimental marking ─────────────────────
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vigiles",
3
- "version": "21.0.0",
3
+ "version": "21.0.1",
4
4
  "description": "Audit, test and measure the harness your AI agent runs on — grade your CLAUDE.md / AGENTS.md, skills, subagents and hooks, run them against a scripted model, and measure whether they actually fire.",
5
5
  "keywords": [
6
6
  "claude-code",