@aligndottech/cli 0.20.0 → 0.21.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/README.md CHANGED
@@ -82,7 +82,7 @@ can also run fully local with `--local`.
82
82
  When you run `align setup`, Align makes itself available to your AI agents four ways, so the context fires whether or not the model thinks to ask for it:
83
83
 
84
84
  1. **MCP server** - your assistant (Claude Code, Cursor, Claude Desktop, Windsurf) can query the decision graph inline. The server ships with instructions telling the agent to check alignment *before* making non-trivial changes.
85
- 2. **Edit hooks** - setup registers `align check --advisory` with every host that exposes a hook API, so prior decisions related to the change reach the model whether or not it thought to ask. **Claude Code** (`.claude/settings.json`), **pi** (`.pi/extensions/align.ts`), **Gemini CLI** (`.gemini/settings.json`) and **OpenCode** (`.opencode/plugins/align.js`) all check the *proposed* change before it is written. It is **non-blocking and fail-open**: it never denies an edit by default, and if Align is missing, slow or unreachable the edit proceeds untouched. The hook is retrieval only, so it needs no AI provider key and makes no provider call.
85
+ 2. **Edit hooks** - setup registers `align check --advisory` with every host that exposes a hook API, so prior decisions related to the change reach the model whether or not it thought to ask. **Claude Code** (`.claude/settings.json`), **pi** (`.pi/extensions/align.ts`), **Gemini CLI** (`.gemini/settings.json`) and **OpenCode** (`.opencode/plugins/align.js`) all check the *proposed* change before it is written. It is **non-blocking and fail-open**: it never denies an edit by default, and if Align is missing, slow or unreachable the edit proceeds untouched. As `align setup` writes it, the hook is retrieval only, so it needs no AI provider key and makes no provider call. (Adding `--block-on-critical` yourself changes both halves of that - see the table below.)
86
86
 
87
87
  **Cursor and Codex CLI cannot do this**, and that is a limit of those hosts, not a gap in setup: Cursor has no `beforeFileEdit` and its `afterFileEdit` hook has no output fields, and Codex's `PreToolUse` intercepts Bash only. They get layers 1, 3 and 4. The full per-host matrix, and why, is in [docs/agent-hooks.md](docs/agent-hooks.md).
88
88
  3. **Editor rules** - a managed, marker-delimited block in your `CLAUDE.md` and `AGENTS.md`, plus a `.cursor/rules/align.md` file (Cursor doesn't honor Claude Code hooks), nudge agents to consult the graph.
@@ -163,7 +163,7 @@ What uses the network in local-only mode, all worth knowing before you point it
163
163
 
164
164
  - The embedding model downloads once from huggingface.co (~23MB), on the first import.
165
165
  - `align import <tool>` calls that tool's API, read-only, with the token you pasted - that is what an import is. The data goes from your tool to your machine; none of it goes to Align.
166
- - **Only when an AI provider is available** - an API key in your environment, or a running Ollama, which needs no key - three surfaces call **your own provider**: `align ask` sends your question plus the titles and summaries of the decisions it retrieved (up to `--limit`, default 8), and `align check` and the MCP tool `align_check_alignment` send up to 2,000 characters of the proposed change paired with one retrieved decision at a time. The editor hook never does - it is retrieval only, provider or no provider.
166
+ - **Only when an AI provider is available** - an API key in your environment, or a running Ollama, which needs no key - three surfaces call **your own provider**: `align ask` sends your question plus the titles and summaries of the decisions it retrieved (up to `--limit`, default 8), and `align check` and the MCP tool `align_check_alignment` send up to 2,000 characters of the proposed change paired with one retrieved decision at a time. The editor hook never does by default - it is retrieval only, provider or no provider. The one exception is explicit: adding `--block-on-critical` to your hook line opts that hook into background adjudication on the same terms as `align check`, roughly once per edit where retrieval found something.
167
167
  - Ollama runs on your own machine by default, so those calls stay local - unless you have pointed `OLLAMA_HOST` at another box, in which case they go there.
168
168
  - With no provider available at all, nothing goes to any AI provider - retrieval is on-device, so the editor hook still surfaces related decisions - and nothing ever goes to Align. The network surface is then just the one-time model download and whatever imports you run.
169
169
 
@@ -323,6 +323,7 @@ Modes:
323
323
  | (default) | Human-readable output; exits `1` on any conflict. |
324
324
  | `--hook` | Pre-commit mode: silent when there's no context, only fails on **critical** conflicts. |
325
325
  | `--advisory` | Agent hook mode (detects pre vs post from the hook payload on stdin): **always exits 0**, emits related, unadjudicated decisions - or an explicit "could not check" notice - in the host's hook shape (`--format claude\|gemini\|pi\|opencode\|text`). Fail-open. |
326
+ | `--advisory --block-on-critical` | Opt-in deferred adjudication: when retrieval finds related decisions, the hook additionally spawns a background full check, and a **retry of a change already judged a critical conflict is denied** (Claude Code `permissionDecision: "deny"`), with the verdict expiring after 15 minutes. The verdict is keyed on the tool, the target file and the text together, so a different file or an adjusted approach proceeds untouched - it catches a re-presentation, never a first proposal. Runs per edit, up to 3 at a time per project. In local mode it calls **your own AI provider**, which the default hook never does. |
326
327
  | `--ci` | Emits JSON to stdout; the 0/1/2 exit contract above. **Pass `--base`** or there is nothing to diff. |
327
328
 
328
329
  Useful flags: `--title "what this change decides"` improves adjudication on a bare diff;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * `align adjudicate <event-id>` - answer a check that ran and declined to rule (ALI-710).
3
+ *
4
+ * The other half of a strict CI gate. `fail-on: conflict-or-unknown` fails an incomplete
5
+ * result, which is right, but a NON-VERDICT never becomes complete on its own: the judge
6
+ * reached the change, found a relationship it cannot turn into a pass or a conflict, and
7
+ * every re-run returns that same answer. Without this the only ways past it are a repo-admin
8
+ * bypass, which leaves no record, or weakening the policy for everyone.
9
+ *
10
+ * The gateway matches the answer to a digest of the content it was sent, so re-running the
11
+ * check on the same change finds it, and answering something you were never shown is not
12
+ * available.
13
+ */
14
+ import type { Command } from 'commander';
15
+ export declare function registerAdjudicateCommand(program: Command): void;
16
+ //# sourceMappingURL=adjudicate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adjudicate.d.ts","sourceRoot":"","sources":["../../src/commands/adjudicate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAczC,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqDhE"}
@@ -0,0 +1,50 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import { createConfigStore } from '../lib/config.js';
4
+ import { createGatewayClient } from '../lib/gateway-client.js';
5
+ import { resolveEnv } from '../lib/resolve-env.js';
6
+ const VERDICTS = ['accepted', 'conflicting'];
7
+ function isVerdict(v) {
8
+ return VERDICTS.includes(v);
9
+ }
10
+ export function registerAdjudicateCommand(program) {
11
+ program
12
+ .command('adjudicate <event-id>')
13
+ .description('Answer an alignment check that reached the judge and declined to rule. The event id is printed by the failing check.')
14
+ .requiredOption('--verdict <verdict>', `Your answer: accepted (the change may proceed) or conflicting (it really does conflict)`)
15
+ .option('--note <note>', 'Why - recorded alongside your answer')
16
+ .option('--env <env>', 'Environment')
17
+ .action(async (eventId, opts) => {
18
+ if (!isVerdict(opts.verdict)) {
19
+ console.error(chalk.red(`\n --verdict must be one of: ${VERDICTS.join(', ')}\n`));
20
+ process.exit(1);
21
+ }
22
+ const client = createGatewayClient(createConfigStore().getEnvironment(resolveEnv(opts.env)));
23
+ const spinner = ora('Recording your answer...').start();
24
+ try {
25
+ const res = await client.adjudicateCheck(eventId, opts.verdict, opts.note);
26
+ spinner.stop();
27
+ if (res.alreadyAdjudicated) {
28
+ // Not an error: the first answer stands by design, so someone got here first and
29
+ // the caller's intent is already served. Saying whose answer it is matters more
30
+ // than saying the write did not happen.
31
+ console.log(chalk.yellow(`\n Already answered by ${res.adjudicatedBy} as "${res.verdict}". The first answer stands.\n`));
32
+ return;
33
+ }
34
+ console.log(chalk.green(`\n Recorded: ${res.verdict}.\n`));
35
+ if (res.verdict === 'accepted') {
36
+ console.log(chalk.dim(' Re-run the check on the same change and it will pass on this answer.\n'));
37
+ }
38
+ else {
39
+ // A 'conflicting' answer is a real act with a real consequence, so it does not get
40
+ // a message implying anything is now unblocked.
41
+ console.log(chalk.dim(' The check stays red on this change, which is the point.\n'));
42
+ }
43
+ }
44
+ catch (err) {
45
+ spinner.fail(chalk.red(err.message));
46
+ process.exit(1);
47
+ }
48
+ });
49
+ }
50
+ //# sourceMappingURL=adjudicate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adjudicate.js","sourceRoot":"","sources":["../../src/commands/adjudicate.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,iBAAiB,EAAgB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,MAAM,QAAQ,GAAG,CAAC,UAAU,EAAE,aAAa,CAAU,CAAC;AAGtD,SAAS,SAAS,CAAC,CAAS;IAC1B,OAAQ,QAA8B,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACxD,OAAO;SACJ,OAAO,CAAC,uBAAuB,CAAC;SAChC,WAAW,CACV,sHAAsH,CACvH;SACA,cAAc,CACb,qBAAqB,EACrB,yFAAyF,CAC1F;SACA,MAAM,CAAC,eAAe,EAAE,sCAAsC,CAAC;SAC/D,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC;SACpC,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,IAAuD,EAAE,EAAE;QACzF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,iCAAiC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CACpE,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,mBAAmB,CAAC,iBAAiB,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7F,MAAM,OAAO,GAAG,GAAG,CAAC,0BAA0B,CAAC,CAAC,KAAK,EAAE,CAAC;QACxD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3E,OAAO,CAAC,IAAI,EAAE,CAAC;YAEf,IAAI,GAAG,CAAC,kBAAkB,EAAE,CAAC;gBAC3B,iFAAiF;gBACjF,gFAAgF;gBAChF,wCAAwC;gBACxC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,2BAA2B,GAAG,CAAC,aAAa,QAAQ,GAAG,CAAC,OAAO,+BAA+B,CAC/F,CACF,CAAC;gBACF,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC;YAC5D,IAAI,GAAG,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;gBAC/B,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,0EAA0E,CAAC,CACtF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,mFAAmF;gBACnF,gDAAgD;gBAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC,CAAC;YACxF,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { Command } from 'commander';
1
+ import { type Command } from 'commander';
2
2
  import type { AlignmentResult } from '../lib/gateway-client.js';
3
3
  export declare function registerCheckCommand(program: Command): void;
4
4
  type AdvisoryConflict = NonNullable<AlignmentResult['conflicts']>[number];
@@ -1 +1 @@
1
- {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAqBhE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0N3D;AAmFD,KAAK,gBAAgB,GAAG,WAAW,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E,KAAK,eAAe,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAKvE,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,GAAG,IAAI,CAQzG;AAID,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,GAAG,IAAI,CAM3E;AA4BD,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI,GAAG,UAAU,GAAG,MAAM,CAAC;AAE9E,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAwBD,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,gBAAgB,EAAE,EAC7B,IAAI,EAAE,kBAAkB,GACvB,OAAO,GAAG,IAAI,CAQhB"}
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAU,MAAM,WAAW,CAAC;AASjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AA+BhE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsO3D;AAkID,KAAK,gBAAgB,GAAG,WAAW,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAkH1E,KAAK,eAAe,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAKvE,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,GAAG,IAAI,CAQzG;AAID,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,GAAG,IAAI,CAM3E;AAiED,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI,GAAG,UAAU,GAAG,MAAM,CAAC;AAE9E,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAqBD,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,gBAAgB,EAAE,EAC7B,IAAI,EAAE,kBAAkB,GACvB,OAAO,GAAG,IAAI,CAQhB"}
@@ -1,11 +1,15 @@
1
+ import { Option } from 'commander';
1
2
  import chalk from 'chalk';
2
3
  import ora from 'ora';
4
+ import { spawn } from 'node:child_process';
5
+ import { readFileSync, unlinkSync, writeFileSync } from 'node:fs';
3
6
  import { createConfigStore } from '../lib/config.js';
4
7
  import { resolveEnv } from '../lib/resolve-env.js';
5
8
  import { createGatewayClient } from '../lib/gateway-client.js';
6
9
  import { getBaseDiff, getCurrentBranch, getHeadDiff, getStagedDiff, isGitRepo } from '../lib/git.js';
7
10
  import { readHookPayload } from '../lib/hook-payload.js';
8
11
  import { markSurfaced, recentlySurfaced } from '../lib/advisory-dedup.js';
12
+ import { adjudicationExistsFor, adjudicationPayloadPath, blockableVerdictFor, contentHashOf, inFlightAdjudications, markAdjudicationPending, MAX_CONCURRENT_ADJUDICATIONS, recordVerdict, } from '../lib/advisory-verdict.js';
9
13
  import { CHECK_DEPTHS } from '../lib/check-depth.js';
10
14
  // The hook budget on EVERY host is <=10s (Claude Code HOOK_TIMEOUT_SECONDS, and the 10s
11
15
  // execFile timeout in the pi and OpenCode shims). Adjudication measured ~11s whenever
@@ -29,7 +33,11 @@ export function registerCheckCommand(program) {
29
33
  .option('--hook', 'Pre-commit mode: silent on no context, only fail on critical conflicts')
30
34
  .option('--advisory', 'Agent hook mode: always exit 0, emit related (unadjudicated) decisions in the host agent\'s hook output shape. Detects pre vs post from the hook payload on stdin')
31
35
  .option('--format <format>', 'Advisory output shape for the host agent: claude (default), gemini, pi, opencode, or text', 'claude')
32
- .option('--block-on-critical', 'Reserved - accepted but currently no effect: the advisory hook is retrieval-only and never blocks. Gains meaning when deferred adjudication lands (ALI-570)')
36
+ .option('--block-on-critical', 'Advisory hook: adjudicate each proposed change in the background, and deny a RETRY of a change already judged a critical conflict (same tool, file and text - anything else proceeds). Opt-in on purpose - in local mode adjudication calls your own AI provider, once per edit (ALI-570)')
37
+ .addOption(
38
+ // The deferred adjudicator's entry point. Hidden: it is spawned by the advisory hook
39
+ // with a payload file, never typed by a person.
40
+ new Option('--adjudicate-deferred <file>', 'internal: run a deferred adjudication from a payload file').hideHelp())
33
41
  .option('--ci', 'CI mode: JSON output to stdout for GitHub Actions')
34
42
  .option('--title <text>', 'The decision being proposed, in words (e.g. the PR title). Without it the gateway adjudicates on the first 200 characters of the diff, which is a file header and a few + lines')
35
43
  .option('--base <ref>', 'Diff against the merge base with <ref> (e.g. origin/main). Required in CI: a clean checkout has no staged or unstaged changes, so without it there is nothing to check and the command passes without looking')
@@ -54,6 +62,12 @@ export function registerCheckCommand(program) {
54
62
  process.exit(EXIT_UNKNOWN);
55
63
  }
56
64
  const depth = opts.depth;
65
+ // The spawned adjudicator (ALI-570). Dispatched before advisory: it is the child the
66
+ // advisory hook launched, doing the slow full check after the hook window closed.
67
+ if (opts.adjudicateDeferred) {
68
+ await runDeferredAdjudication(String(opts.adjudicateDeferred), opts.env);
69
+ return;
70
+ }
57
71
  // Advisory mode is the deterministic auto-alignment path (ALI-121/ALI-122):
58
72
  // non-blocking, fail-open, machine-readable. It owns the whole flow, never
59
73
  // touching the human-facing spinner/console output below.
@@ -285,6 +299,36 @@ async function runAdvisory(env, opts = {}) {
285
299
  process.stdout.write(`${format === 'text' ? output : JSON.stringify(output)}\n`);
286
300
  }
287
301
  };
302
+ // ALI-570: a deferred verdict answers a RETRY before any retrieval runs. CHANGE
303
+ // identity, not file identity and not text identity - only a proposal matching what the
304
+ // background adjudicator actually judged is answered here, so an adjusted approach
305
+ // hashes differently and goes through the normal path. Everything below the flag check
306
+ // is opt-in: without `--block-on-critical` there is no store lookup, no spawn, and (in
307
+ // local mode) no provider call, which is the egress default #143 established and this
308
+ // must not erode.
309
+ const cwd = process.cwd();
310
+ const identity = changeIdentityOf(payload);
311
+ const filePath = identity.filePath;
312
+ const contentHash = pre ? identityHashOf(identity) : null;
313
+ if (opts.blockOnCritical && contentHash) {
314
+ const verdict = blockableVerdictFor(cwd, envName, contentHash, filePath);
315
+ if (verdict && verdict.conflicts.length) {
316
+ // buildAdvisoryOutput decides blocking: deny only on pre + flag + a CRITICAL
317
+ // conflict (its own tested contract). Warnings surface as context.
318
+ const rendered = buildAdvisoryOutput(verdict.conflicts, renderOpts);
319
+ // A null render means this host has no pre-edit channel for non-blocking context
320
+ // (gemini's BeforeTool reads decision/reason and nothing else). Exiting here would
321
+ // spend the verdict on silence AND skip retrieval, so fall through instead and let
322
+ // the normal path deliver what that host can actually receive.
323
+ if (rendered !== null) {
324
+ // Record the decisions as surfaced, or the sibling PostToolUse hook repeats them
325
+ // moments later - the duplication advisory-dedup exists to prevent.
326
+ markSurfaced(cwd, verdict.conflicts.map((c) => c.decision_id).filter(Boolean));
327
+ emit(rendered);
328
+ process.exit(0);
329
+ }
330
+ }
331
+ }
288
332
  // RETRIEVAL ONLY. Adjudication is ~11s and does not fit any host's hook budget, so it
289
333
  // moves to a follow-up rather than timing out here and printing nothing. Nothing is lost:
290
334
  // the LLM runs whenever retrieval returns anything, so no tenant was getting a verdict
@@ -311,8 +355,23 @@ async function runAdvisory(env, opts = {}) {
311
355
  // Genuinely nothing related: a real answer, so staying quiet is honest here.
312
356
  if (!found.length)
313
357
  process.exit(0);
358
+ // ALI-570: retrieval found decisions on this subject, so the proposed content is worth
359
+ // the slow full check - AFTER this hook returns. Spawned detached and unref'd so the
360
+ // hook's exit is never coupled to the adjudicator's lifetime. PRE only: the proposed
361
+ // text is the artefact a retry re-presents byte-for-byte, where the POST diff is already
362
+ // landed and matches nothing an agent will propose again.
363
+ //
364
+ // TWO separate bounds, because they cover different things. The hash check only catches
365
+ // a re-proposal of the SAME change, which is the rare case - an agent iterating produces
366
+ // different content every time and would otherwise spawn one adjudicator per edit. The
367
+ // in-flight cap is what actually bounds the cost. Being over the cap loses a verdict,
368
+ // never an edit, and the next hook invocation tries again.
369
+ if (pre && opts.blockOnCritical && contentHash && !adjudicationExistsFor(cwd, envName, contentHash)) {
370
+ if (inFlightAdjudications(cwd, envName) < MAX_CONCURRENT_ADJUDICATIONS) {
371
+ spawnDeferredAdjudication({ identity, context, cwd, contentHash }, envName);
372
+ }
373
+ }
314
374
  // Drop decisions the sibling hook already showed the agent moments ago.
315
- const cwd = process.cwd();
316
375
  const seen = recentlySurfaced(cwd);
317
376
  const fresh = found.filter((d) => !seen.has(d.id));
318
377
  if (fresh.length) {
@@ -325,6 +384,108 @@ async function runAdvisory(env, opts = {}) {
325
384
  }
326
385
  process.exit(0);
327
386
  }
387
+ /**
388
+ * Ceiling on one deferred adjudication. Generous next to the ~11s a real check takes,
389
+ * because this is a backstop against a stalled gateway rather than a latency budget - the
390
+ * hook has already returned, so nobody is waiting on it.
391
+ */
392
+ const ADJUDICATION_TIMEOUT_MS = 120_000;
393
+ /**
394
+ * Launch the deferred adjudicator (ALI-570). The payload travels by FILE, never argv:
395
+ * proposed content is arbitrary text of arbitrary size, and an argv would also parade it
396
+ * through `ps`. Fail-open like everything else on the advisory path - a spawn that cannot
397
+ * happen costs a verdict, never an edit.
398
+ */
399
+ function spawnDeferredAdjudication(payload, envName) {
400
+ try {
401
+ // 0600, inside our own 0700 directory, under an unguessable name. The file holds the
402
+ // user's proposed source, and on a shared Linux /tmp the old predictable 0644 path was
403
+ // both readable by other uids and pre-plantable as a symlink.
404
+ const file = adjudicationPayloadPath(payload.contentHash);
405
+ if (!file)
406
+ return;
407
+ writeFileSync(file, JSON.stringify(payload), { encoding: 'utf8', mode: 0o600, flag: 'wx' });
408
+ markAdjudicationPending(payload.cwd, envName, payload.contentHash);
409
+ // process.argv[1] is this CLI's own entry point, however it was installed. The env
410
+ // travels on argv and NOT in the payload, so there is one writer of it rather than a
411
+ // serialised copy nothing reads.
412
+ const child = spawn(process.execPath, [process.argv[1] ?? 'align', 'check', '--adjudicate-deferred', file, '--env', envName], { detached: true, stdio: 'ignore' });
413
+ // spawn() reports failure ASYNCHRONOUSLY, so the try/catch around it cannot see an
414
+ // ENOENT/EMFILE/EAGAIN - the event goes unhandled and takes the hook down with it.
415
+ // Nothing reaches the event loop before process.exit(0) today, which means this listener
416
+ // is invisible protection: it exists so that adding any await above stays safe.
417
+ child.on('error', () => {
418
+ try {
419
+ unlinkSync(file);
420
+ }
421
+ catch {
422
+ // The child may already have taken it.
423
+ }
424
+ });
425
+ child.unref();
426
+ }
427
+ catch {
428
+ // Best-effort: the pending marker (if written) expires on its own.
429
+ }
430
+ }
431
+ /**
432
+ * The adjudicator: the slow full check, run after the hook window has closed. Its whole
433
+ * output is one verdict row; a clean or unknowable result records an EMPTY verdict so the
434
+ * same content is not re-adjudicated inside the TTL. `unknown` maps to empty deliberately -
435
+ * could-not-check must stay fail-open (ALI-414), and a deny may only rest on an adjudicated
436
+ * CRITICAL conflict. Always exits 0: nothing downstream reads this process's exit code, and
437
+ * a crash here must never surface as anything at all.
438
+ */
439
+ async function runDeferredAdjudication(payloadFile, env) {
440
+ try {
441
+ const raw = readFileSync(payloadFile, 'utf8');
442
+ // Unlink BEFORE parsing: the file is transport, not state, and a parse failure must not
443
+ // leave the user's proposed source lying in tmp until the OS reaps it.
444
+ try {
445
+ unlinkSync(payloadFile);
446
+ }
447
+ catch {
448
+ // Already gone is fine.
449
+ }
450
+ const payload = JSON.parse(raw);
451
+ // The payload crossed a file, so "the hash names this text" is a premise rather than a
452
+ // guarantee. Recomputing it costs one sha1 and is the only thing standing between a
453
+ // swapped payload and a deny bound to content nobody judged.
454
+ if (!payload.identity || identityHashOf(payload.identity) !== payload.contentHash)
455
+ return;
456
+ const envName = resolveEnv(env, { preferLocalEmbedded: true });
457
+ const client = createGatewayClient(createConfigStore().getEnvironment(envName));
458
+ // The cloud client passes no AbortSignal, so a stalled gateway would keep this detached
459
+ // process alive on undici's defaults with nothing watching it. Bound it here.
460
+ const result = await Promise.race([
461
+ client.checkAlignment(payload.identity.text, payload.context, {}),
462
+ new Promise((_, reject) => setTimeout(() => reject(new Error('adjudication timed out')), ADJUDICATION_TIMEOUT_MS).unref()),
463
+ ]);
464
+ // `conflicting` is the ONLY status that may yield blockable conflicts. `unknown` records
465
+ // an unadjudicated row: could-not-check stays fail-open (ALI-414), and unlike a clean
466
+ // verdict it must not suppress a retry for the full 15 minutes, or a user with no
467
+ // provider gets a flag that is silently inert.
468
+ const adjudicated = result.status !== 'unknown';
469
+ const conflicts = result.status === 'conflicting' ? (result.conflicts ?? []) : [];
470
+ recordVerdict(payload.cwd, envName, {
471
+ ts: Date.now(),
472
+ filePath: payload.identity.filePath,
473
+ contentHash: payload.contentHash,
474
+ adjudicated,
475
+ conflicts,
476
+ });
477
+ }
478
+ catch {
479
+ // Fail open: no verdict. The pending marker expires (PENDING_TTL_MS) and a later hook
480
+ // invocation may spawn a fresh attempt.
481
+ }
482
+ finally {
483
+ // In a `finally` so EVERY path exits 0, the early returns above included. Sitting after
484
+ // the catch, it was skipped by an early return, leaving the "always exits 0" contract to
485
+ // whether the event loop happened to be empty.
486
+ process.exit(0);
487
+ }
488
+ }
328
489
  // Retrieval finds decisions on the same SUBJECT. It does not encode opposition - ALI-410
329
490
  // measured the agreeing pair at cosine 0.38 against the contradicting pair at 0.31 - so this
330
491
  // wording must never assert a conflict. Saying "related" is the honest claim and the useful one.
@@ -346,6 +507,24 @@ export function buildUnknownOutput(opts) {
346
507
  ].join('\n');
347
508
  return renderForHost(summary, opts, false);
348
509
  }
510
+ function changeIdentityOf(payload) {
511
+ const input = payload?.tool_input;
512
+ return {
513
+ toolName: payload?.tool_name ?? '',
514
+ filePath: input?.file_path ?? '',
515
+ oldString: typeof input?.old_string === 'string' ? input.old_string : '',
516
+ text: proposedChangeText(input),
517
+ };
518
+ }
519
+ /**
520
+ * ONE writer of the identity format, used by the hook that stores a key and by the
521
+ * adjudicator that re-derives it. Two implementations of this would be two writers of one
522
+ * fact, and they would disagree silently - a verdict nothing can ever match. NUL separates
523
+ * the fields so concatenation cannot forge a collision across them.
524
+ */
525
+ function identityHashOf(id) {
526
+ return contentHashOf([id.toolName, id.filePath, id.oldString, id.text].join('\0'));
527
+ }
349
528
  // The proposed change from a PreToolUse payload: Write sends the full content, Edit a
350
529
  // new_string, MultiEdit a list of edits. We check the new text against the graph.
351
530
  function proposedChangeText(input) {
@@ -372,12 +551,9 @@ function conflictContext(conflicts, closing) {
372
551
  closing,
373
552
  ].join('\n');
374
553
  }
375
- // NO RUNTIME CALLER until the deferred adjudication path lands (ALI-570) - the hook is
376
- // retrieval-only (see runAdvisory). Kept, with its tests, because deleting it cascades:
377
- // --block-on-critical is a published flag whose only implementation is the blocking branches
378
- // this reaches, and removing a flag makes existing committed hooks die on `unknown option`,
379
- // breaking the fail-open contract. If ALI-570 is closed won't-do, retire this, its tests and
380
- // the flag together in a major-version bump.
554
+ // Called from runAdvisory's deferred-verdict short-circuit (ALI-570): the hook itself is
555
+ // retrieval-only, so the ONLY thing that reaches these blocking branches is a verdict the
556
+ // background adjudicator recorded for this exact change.
381
557
  //
382
558
  // Render the conflicts into whatever shape the host reads off stdout. One engine, N
383
559
  // hosts - every field name here comes from that host's published hook schema:
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -7,6 +7,7 @@ import { registerCaptureCommand } from './commands/capture.js';
7
7
  import { registerImportCommand } from './commands/import.js';
8
8
  import { registerSearchCommand } from './commands/search.js';
9
9
  import { registerCheckCommand } from './commands/check.js';
10
+ import { registerAdjudicateCommand } from './commands/adjudicate.js';
10
11
  import { registerMcpCommand } from './commands/mcp.js';
11
12
  import { registerLocalCommand } from './commands/local.js';
12
13
  import { registerDecisionsCommand } from './commands/decisions/index.js';
@@ -79,6 +80,7 @@ registerStatusCommand(program);
79
80
  registerContextCommand(program);
80
81
  // Customer: CI/alignment check
81
82
  registerCheckCommand(program);
83
+ registerAdjudicateCommand(program);
82
84
  // Customer: MCP server
83
85
  registerMcpCommand(program);
84
86
  // Customer: local-first mode (no cloud account required)
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * ALI-570: the store that carries an adjudication verdict from the background adjudicator
3
+ * back to the NEXT advisory hook invocation.
4
+ *
5
+ * The hook is retrieval-only inside its window - adjudication measured ~11s against a ~10s
6
+ * host budget, and in local mode it is also the pipeline's only provider egress. So under
7
+ * `--block-on-critical` the hook spawns a detached adjudicator and exits; the adjudicator
8
+ * writes its verdict here; and the next PreToolUse reads it. A verdict names the exact
9
+ * CHANGE it judged (see `changeIdentityHash` in commands/check.ts - tool, target file,
10
+ * replaced text and new text, not the new text alone), because a deny must hit a RETRY of
11
+ * the adjudicated change and nothing else.
12
+ *
13
+ * Everything here is best-effort and fail-open, like advisory-dedup one file over: a
14
+ * malformed store, a full disk or a lost race must never block an edit or error a hook.
15
+ * That obligation is THIS module's, not its callers' - every export below returns a safe
16
+ * value rather than relying on the blanket catch in runAdvisory.
17
+ */
18
+ /** A verdict older than this cannot block: the working tree has moved on. */
19
+ export declare const VERDICT_TTL_MS: number;
20
+ /**
21
+ * How long a spawn marker suppresses re-spawning for the same change. Short on purpose:
22
+ * a crashed adjudicator must not wedge the pipeline, only debounce it. An adjudicator that
23
+ * RAN but could not judge (ALI-414 `unknown`) gets this TTL too, not the verdict TTL - see
24
+ * `adjudicated` below.
25
+ */
26
+ export declare const PENDING_TTL_MS: number;
27
+ /** Cap the store: it is re-parsed on every hook invocation, so it must not grow unbounded. */
28
+ export declare const MAX_STORED_VERDICTS = 64;
29
+ /**
30
+ * Ceiling on adjudicators in flight for one project. Each is a detached process making
31
+ * provider calls, and an agent editing quickly proposes DIFFERENT content every time, so
32
+ * the content dedup below does not bound this - only a cap does.
33
+ */
34
+ export declare const MAX_CONCURRENT_ADJUDICATIONS = 3;
35
+ /** The conflict shape buildAdvisoryOutput consumes - mirrored, not imported, to keep this
36
+ * module free of the command layer (the command imports us, never the reverse). */
37
+ export interface VerdictConflict {
38
+ decision_id: string;
39
+ title: string;
40
+ summary?: string;
41
+ url?: string;
42
+ reason: string;
43
+ severity: 'critical' | 'warning';
44
+ }
45
+ export interface StoredVerdict {
46
+ ts: number;
47
+ filePath: string;
48
+ contentHash: string;
49
+ /**
50
+ * True only when the adjudicator reached a judgement. An ALI-414 `unknown` (no provider
51
+ * key, degraded brain, classifier error) records `false`: it must not masquerade as
52
+ * "adjudicated clean", and it must not suppress a retry for the full verdict TTL, or a
53
+ * user with no provider gets a flag that is silently inert for 15 minutes at a time.
54
+ */
55
+ adjudicated: boolean;
56
+ conflicts: VerdictConflict[];
57
+ }
58
+ export declare function contentHashOf(text: string): string;
59
+ /** Where the adjudication payload for one change is handed to the detached child. */
60
+ export declare function adjudicationPayloadPath(contentHash: string): string | null;
61
+ /**
62
+ * The verdict that may block a retry: fresh, actually adjudicated, and judging EXACTLY this
63
+ * change - both the identity hash and the target file. Change identity rather than file
64
+ * identity, so a deny can only hit the proposal that was adjudicated; an agent that adjusts
65
+ * its approach hashes differently and proceeds.
66
+ */
67
+ export declare function blockableVerdictFor(cwd: string, envName: string, changeHash: string, filePath: string, now?: number): StoredVerdict | null;
68
+ /** Record a verdict, replacing any earlier one for the same change and pruning stale rows. */
69
+ export declare function recordVerdict(cwd: string, envName: string, verdict: StoredVerdict, now?: number): void;
70
+ /** True when a fresh adjudication of this exact change is already in flight or decided. */
71
+ export declare function adjudicationExistsFor(cwd: string, envName: string, contentHash: string, now?: number): boolean;
72
+ /** How many adjudicators are currently believed to be running for this project. */
73
+ export declare function inFlightAdjudications(cwd: string, envName: string, now?: number): number;
74
+ /**
75
+ * Mark one change as being adjudicated. Per-change, not a single slot: two interleaved
76
+ * edits used to evict each other's marker, so the debounce silently stopped covering the
77
+ * exact case it exists for.
78
+ */
79
+ export declare function markAdjudicationPending(cwd: string, envName: string, contentHash: string, now?: number): void;
80
+ //# sourceMappingURL=advisory-verdict.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advisory-verdict.d.ts","sourceRoot":"","sources":["../../src/lib/advisory-verdict.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;GAgBG;AAEH,6EAA6E;AAC7E,eAAO,MAAM,cAAc,QAAc,CAAC;AAC1C;;;;;GAKG;AACH,eAAO,MAAM,cAAc,QAAa,CAAC;AACzC,8FAA8F;AAC9F,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAY9C;oFACoF;AACpF,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,UAAU,GAAG,SAAS,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,eAAe,EAAE,CAAC;CAC9B;AAcD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AA+CD,qFAAqF;AACrF,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI1E;AA6GD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,GAAG,GAAE,MAAmB,GACvB,aAAa,GAAG,IAAI,CAStB;AAED,8FAA8F;AAC9F,wBAAgB,aAAa,CAC3B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,EACtB,GAAG,GAAE,MAAmB,GACvB,IAAI,CAWN;AAED,2FAA2F;AAC3F,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,GAAG,GAAE,MAAmB,GACvB,OAAO,CAMT;AAED,mFAAmF;AACnF,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,MAAM,CAEpG;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,GAAG,GAAE,MAAmB,GACvB,IAAI,CAON"}