@wildorder/nightshift 0.13.0 → 0.14.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 +46 -19
- package/dist/agent-probe.d.ts +21 -2
- package/dist/agent-probe.d.ts.map +1 -1
- package/dist/agent-probe.js +76 -22
- package/dist/agent-probe.js.map +1 -1
- package/dist/agent-runner.d.ts +90 -2
- package/dist/agent-runner.d.ts.map +1 -1
- package/dist/agent-runner.js +382 -24
- package/dist/agent-runner.js.map +1 -1
- package/dist/agent-summary.d.ts +15 -0
- package/dist/agent-summary.d.ts.map +1 -1
- package/dist/agent-summary.js +32 -2
- package/dist/agent-summary.js.map +1 -1
- package/dist/as-built.d.ts +6 -0
- package/dist/as-built.d.ts.map +1 -1
- package/dist/as-built.js +7 -0
- package/dist/as-built.js.map +1 -1
- package/dist/author.d.ts +9 -0
- package/dist/author.d.ts.map +1 -1
- package/dist/author.js +118 -24
- package/dist/author.js.map +1 -1
- package/dist/ci-init.d.ts.map +1 -1
- package/dist/ci-init.js +17 -12
- package/dist/ci-init.js.map +1 -1
- package/dist/cli.js +71 -8
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +11 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +13 -0
- package/dist/config.js.map +1 -1
- package/dist/crash-report.d.ts +58 -0
- package/dist/crash-report.d.ts.map +1 -0
- package/dist/crash-report.js +115 -0
- package/dist/crash-report.js.map +1 -0
- package/dist/decide.js +1 -1
- package/dist/decide.js.map +1 -1
- package/dist/decider-review.d.ts +33 -5
- package/dist/decider-review.d.ts.map +1 -1
- package/dist/decider-review.js +55 -9
- package/dist/decider-review.js.map +1 -1
- package/dist/decision-ledger.d.ts +44 -1
- package/dist/decision-ledger.d.ts.map +1 -1
- package/dist/decision-ledger.js +46 -1
- package/dist/decision-ledger.js.map +1 -1
- package/dist/decision-view.d.ts +10 -1
- package/dist/decision-view.d.ts.map +1 -1
- package/dist/decision-view.js +41 -0
- package/dist/decision-view.js.map +1 -1
- package/dist/manifest.d.ts +21 -1
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +221 -11
- package/dist/manifest.js.map +1 -1
- package/dist/permits.d.ts +135 -0
- package/dist/permits.d.ts.map +1 -0
- package/dist/permits.js +397 -0
- package/dist/permits.js.map +1 -0
- package/dist/publish.d.ts +35 -0
- package/dist/publish.d.ts.map +1 -1
- package/dist/publish.js +149 -16
- package/dist/publish.js.map +1 -1
- package/dist/run-program.d.ts +53 -2
- package/dist/run-program.d.ts.map +1 -1
- package/dist/run-program.js +529 -54
- package/dist/run-program.js.map +1 -1
- package/dist/whole-program-review.d.ts +4 -0
- package/dist/whole-program-review.d.ts.map +1 -1
- package/dist/whole-program-review.js +9 -1
- package/dist/whole-program-review.js.map +1 -1
- package/package.json +2 -2
- package/dist/verify-allowlist.d.ts +0 -23
- package/dist/verify-allowlist.d.ts.map +0 -1
- package/dist/verify-allowlist.js +0 -46
- package/dist/verify-allowlist.js.map +0 -1
package/README.md
CHANGED
|
@@ -73,23 +73,59 @@ things only you can write:
|
|
|
73
73
|
|
|
74
74
|
```json
|
|
75
75
|
{
|
|
76
|
-
"agent": { "command": "claude", "args": ["-p", "--model", "sonnet"
|
|
77
|
-
"authorAgent": { "command": "claude", "args": ["-p", "--model", "opus"
|
|
76
|
+
"agent": { "command": "claude", "args": ["-p", "--model", "sonnet"], "promptMode": "stdin" },
|
|
77
|
+
"authorAgent": { "command": "claude", "args": ["-p", "--model", "opus"], "promptMode": "stdin" },
|
|
78
78
|
"deciderAgent": { "command": "codex", "args": ["exec", "--model", "gpt-5.6-sol"], "promptMode": "stdin" },
|
|
79
79
|
"reviewerAgent": { "command": "codex", "args": ["exec"] },
|
|
80
80
|
"recoveryAgent": { "command": "codex", "args": ["exec", "--model", "gpt-5.6-sol", "--sandbox", "workspace-write"], "promptMode": "stdin" }
|
|
81
81
|
}
|
|
82
82
|
```
|
|
83
83
|
|
|
84
|
+
Notice what is missing: no `--permission-mode`, no `--allowedTools`. nightshift
|
|
85
|
+
derives each role's permission posture itself — from the role (`agent`,
|
|
86
|
+
`authorAgent`, and `recoveryAgent` get a workspace posture; `deciderAgent` and
|
|
87
|
+
`reviewerAgent` get read-only, never edit-capable regardless of the host) and
|
|
88
|
+
from the host it runs on (a claude `auto` classifier plus an OS sandbox on
|
|
89
|
+
macOS/Linux, a `--sandbox workspace-write` grant on codex, a documented
|
|
90
|
+
fallback when a capability cannot be detected). `recoveryAgent`'s
|
|
91
|
+
`--sandbox workspace-write` above is still honored untouched: any
|
|
92
|
+
permission-bearing flag an operator already wrote — `--permission-mode`,
|
|
93
|
+
`--allowedTools`, `--sandbox`, and their siblings — always wins, and that
|
|
94
|
+
role is reported as operator-configured rather than silently overridden.
|
|
95
|
+
|
|
96
|
+
An optional `permits` block widens or narrows the derived posture without
|
|
97
|
+
hand-writing provider flags:
|
|
98
|
+
|
|
99
|
+
```json
|
|
100
|
+
"permits": {
|
|
101
|
+
"policy": "free prose read by the implementer and recovery briefs",
|
|
102
|
+
"allow": ["Bash(git stash:*)"],
|
|
103
|
+
"deny": ["Bash(rm -rf *)"]
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
`allow`/`deny` use Claude's rule syntax and fold into the generated settings
|
|
108
|
+
file every claude spawn reads; `policy` is prose the implementer/recovery
|
|
109
|
+
briefs quote verbatim. On a throwaway CI runner, set
|
|
110
|
+
`NIGHTSHIFT_CONTAINMENT=ephemeral` in the environment to let workspace-posture
|
|
111
|
+
roles skip permission prompts entirely (`ci init github`'s hosted variant sets
|
|
112
|
+
this for you; never set it on a machine you or someone else works on
|
|
113
|
+
directly — read-only roles ignore it regardless).
|
|
114
|
+
|
|
84
115
|
Check the roster before the first run with `nightshift doctor --agents`: it
|
|
85
|
-
spawns each distinct agent once (one real model call each)
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
run's budget (a sandboxed
|
|
89
|
-
recovery agent) show up as one
|
|
90
|
-
`recoveryAgent`'s `--sandbox workspace-write`
|
|
91
|
-
to a read-only sandbox, which is the right
|
|
92
|
-
reviewer seats and exactly wrong for a seat that
|
|
116
|
+
spawns each distinct agent once (one real model call each) with the same
|
|
117
|
+
derived posture a real run would use, verifies on disk that the writing seats
|
|
118
|
+
can write, and reports whether they can run the verify commands — the
|
|
119
|
+
environment failures that otherwise burn a whole run's budget (a sandboxed
|
|
120
|
+
shell, an untrusted workspace, a read-only recovery agent) show up as one
|
|
121
|
+
labeled line each instead. Note `recoveryAgent`'s `--sandbox workspace-write`
|
|
122
|
+
above: `codex exec` defaults to a read-only sandbox, which is the right
|
|
123
|
+
posture for the decider and reviewer seats and exactly wrong for a seat that
|
|
124
|
+
must fix a failing tree. nightshift does not trust that default, though: the
|
|
125
|
+
decider and reviewer seats are spawned with an explicit `--sandbox read-only`,
|
|
126
|
+
because a codex user config can widen the default (a `sandbox = "elevated"`
|
|
127
|
+
setting, a trusted-project entry) and a seat labeled read-only that can write
|
|
128
|
+
is exactly the kind of quiet mismatch the posture lines exist to prevent.
|
|
93
129
|
|
|
94
130
|
Only `agent` is required to run; every other role degrades loudly, not
|
|
95
131
|
silently, when absent. The verify commands are the contract every
|
|
@@ -98,15 +134,6 @@ the first agent spawns and refuses to start if they are red, so the first
|
|
|
98
134
|
failure you debug is the environment's, named as such, not eight
|
|
99
135
|
workstreams' worth of budget spent on it.
|
|
100
136
|
|
|
101
|
-
The implementer's `--allowedTools` grant mirrors the verify commands on
|
|
102
|
-
purpose: a headless Claude invocation with only `--permission-mode
|
|
103
|
-
acceptEdits` can edit files but cannot run Bash, which leaves the agent
|
|
104
|
-
fixing test failures it can never re-run. Granting exactly the verify
|
|
105
|
-
commands lets it run the same gate it is graded against — the runner's own
|
|
106
|
-
independent verification remains the only thing that gates a commit. The
|
|
107
|
-
runner warns at startup when it detects a Claude implementer without such
|
|
108
|
-
a grant.
|
|
109
|
-
|
|
110
137
|
**3. Plan a program** — in your agent tool (e.g. Claude Code), run:
|
|
111
138
|
|
|
112
139
|
```text
|
package/dist/agent-probe.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type AgentRunner } from "./agent-runner.js";
|
|
2
2
|
import type { AgentConfig, NightshiftConfig } from "./config.js";
|
|
3
|
+
import { type ContainmentLabel, type PermitsContext } from "./permits.js";
|
|
3
4
|
/**
|
|
4
5
|
* The doctor's agent capability probe: spawn each configured agent role the
|
|
5
6
|
* exact way a run would, ask it to write one file and run one permission-
|
|
@@ -15,12 +16,24 @@ export interface AgentProbe {
|
|
|
15
16
|
/** Every configured role sharing this exact agent invocation. */
|
|
16
17
|
roles: string[];
|
|
17
18
|
agent: AgentConfig;
|
|
19
|
+
/** The containment nightshift derived for this invocation (WS-01). */
|
|
20
|
+
label: ContainmentLabel;
|
|
21
|
+
/** The settings file this invocation reads, when one applies (claude
|
|
22
|
+
* only) — printed so doctor shows the same posture information as a
|
|
23
|
+
* run's `permissions:` startup line (SC-07). */
|
|
24
|
+
settingsPath?: string;
|
|
18
25
|
exitCode: number;
|
|
19
26
|
/** Runner-verified: the probe file existed on disk with the expected token. */
|
|
20
27
|
write: ProbeVerdict;
|
|
21
|
-
/**
|
|
22
|
-
*
|
|
28
|
+
/** Runner-observed when a stream-json transcript exists for this spawn
|
|
29
|
+
* (WS-02: `ok` when the exec command ran with no matching denial, `failed`
|
|
30
|
+
* when it was denied or never ran); otherwise the agent's own EXEC report,
|
|
31
|
+
* labeled as such — the runner cannot observe a denied shell from outside
|
|
32
|
+
* a Claude spawn's transcript. See `execRunnerObserved`. */
|
|
23
33
|
exec: ProbeVerdict;
|
|
34
|
+
/** True when `exec` came from the runner's observed transcript rather than
|
|
35
|
+
* the agent's self-report (WS-02). */
|
|
36
|
+
execRunnerObserved: boolean;
|
|
24
37
|
/** The command the exec step asked for, when one was derived from verify. */
|
|
25
38
|
execCommand?: string;
|
|
26
39
|
/** The agent's verbatim WRITE:/EXEC: lines when they carry an error. */
|
|
@@ -34,7 +47,13 @@ export interface ProbeAgentsOptions {
|
|
|
34
47
|
cwd: string;
|
|
35
48
|
config: NightshiftConfig;
|
|
36
49
|
agentRunner?: AgentRunner;
|
|
50
|
+
/** Defaults to a real context built from `config`; tests inject one to
|
|
51
|
+
* avoid a real capability-detection spawn and settings-file write. */
|
|
52
|
+
permits?: PermitsContext;
|
|
37
53
|
log?: (line: string) => void;
|
|
54
|
+
/** Names the probe's transcripts under `build-logs/<programId>/` (WS-02).
|
|
55
|
+
* The probe runs outside any one program, so this defaults to `"doctor"`. */
|
|
56
|
+
programId?: string;
|
|
38
57
|
}
|
|
39
58
|
export interface ProbeAgentsResult {
|
|
40
59
|
probes: AgentProbe[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-probe.d.ts","sourceRoot":"","sources":["../src/agent-probe.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,KAAK,WAAW,
|
|
1
|
+
{"version":3,"file":"agent-probe.d.ts","sourceRoot":"","sources":["../src/agent-probe.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,KAAK,WAAW,EAEjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACpB,MAAM,cAAc,CAAC;AAEtB;;;;;;;;;GASG;AAEH,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEvD,MAAM,WAAW,UAAU;IACzB,iEAAiE;IACjE,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,WAAW,CAAC;IACnB,sEAAsE;IACtE,KAAK,EAAE,gBAAgB,CAAC;IACxB;;qDAEiD;IACjD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,KAAK,EAAE,YAAY,CAAC;IACpB;;;;iEAI6D;IAC7D,IAAI,EAAE,YAAY,CAAC;IACnB;2CACuC;IACvC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;qEACiE;IACjE,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,gBAAgB,CAAC;IACzB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;2EACuE;IACvE,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B;kFAC8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,8EAA8E;IAC9E,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB;AAqFD,wBAAsB,WAAW,CAC/B,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CAsD5B;AA2JD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAsDrE"}
|
package/dist/agent-probe.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { randomBytes } from "node:crypto";
|
|
2
2
|
import { readFile, unlink } from "node:fs/promises";
|
|
3
3
|
import { join, resolve } from "node:path";
|
|
4
|
-
import { defaultAgentRunner, describeAgent,
|
|
4
|
+
import { defaultAgentRunner, describeAgent, recordAgentTranscript, resolveAgent, tail, } from "./agent-runner.js";
|
|
5
|
+
import { buildPermitsContext, ROLE_POSTURE, } from "./permits.js";
|
|
5
6
|
/**
|
|
6
7
|
* What each seat actually needs. The implementer, author, and recovery
|
|
7
8
|
* agents write the tree; the implementer and recovery agents also fix
|
|
@@ -10,7 +11,7 @@ import { defaultAgentRunner, describeAgent, invokeAgent, resolveAgent, tail, } f
|
|
|
10
11
|
* posture, not a failure (codex exec ships read-only by default, which is
|
|
11
12
|
* exactly right for those two seats and exactly wrong for recovery).
|
|
12
13
|
*/
|
|
13
|
-
const WRITE_ROLES = new Set([
|
|
14
|
+
const WRITE_ROLES = new Set(Object.keys(ROLE_POSTURE).filter((role) => ROLE_POSTURE[role] === "workspace"));
|
|
14
15
|
const EXEC_ROLES = new Set(["agent", "recoveryAgent"]);
|
|
15
16
|
/**
|
|
16
17
|
* Output lines that explain a failed probe better than the verdict alone —
|
|
@@ -77,9 +78,12 @@ function configuredRoles(config) {
|
|
|
77
78
|
export async function probeAgents(options) {
|
|
78
79
|
const root = resolve(options.cwd);
|
|
79
80
|
const agentRunner = options.agentRunner ?? defaultAgentRunner;
|
|
81
|
+
const permits = options.permits ?? (await buildPermitsContext({ config: options.config }));
|
|
80
82
|
const log = options.log ?? ((line) => console.log(line));
|
|
81
|
-
// One probe per distinct invocation
|
|
82
|
-
//
|
|
83
|
+
// One probe per distinct DERIVED invocation, not the raw config: two roles
|
|
84
|
+
// sharing an agent block can still derive different spawns once posture
|
|
85
|
+
// is per-role (a workspace seat and a read-only seat pointed at the same
|
|
86
|
+
// claude block), and each spawn is a paid model call.
|
|
83
87
|
const distinct = new Map();
|
|
84
88
|
const unconfigured = [];
|
|
85
89
|
for (const { role, agent } of configuredRoles(options.config)) {
|
|
@@ -87,30 +91,53 @@ export async function probeAgents(options) {
|
|
|
87
91
|
unconfigured.push(role);
|
|
88
92
|
continue;
|
|
89
93
|
}
|
|
90
|
-
const
|
|
94
|
+
const derived = await permits.derive(role, agent);
|
|
95
|
+
const key = JSON.stringify([derived.agent.command, derived.agent.args, derived.agent.promptMode]);
|
|
91
96
|
const entry = distinct.get(key);
|
|
92
97
|
if (entry)
|
|
93
98
|
entry.roles.push(role);
|
|
94
|
-
else
|
|
95
|
-
distinct.set(key, {
|
|
99
|
+
else {
|
|
100
|
+
distinct.set(key, {
|
|
101
|
+
agent: derived.agent,
|
|
102
|
+
roles: [role],
|
|
103
|
+
label: derived.label,
|
|
104
|
+
...(derived.settingsPath === undefined ? {} : { settingsPath: derived.settingsPath }),
|
|
105
|
+
});
|
|
106
|
+
}
|
|
96
107
|
}
|
|
97
108
|
const firstVerify = Object.values(options.config.verify)[0];
|
|
98
109
|
// `--help` keeps the probe cheap while still matching the same
|
|
99
110
|
// `Bash(<command>:*)` prefix rule the real verify command needs — the
|
|
100
111
|
// permission machinery is what is under test, not the suite.
|
|
101
112
|
const execCommand = firstVerify === undefined ? undefined : `${firstVerify} --help`;
|
|
113
|
+
const programId = options.programId ?? "doctor";
|
|
102
114
|
const probes = [];
|
|
103
|
-
for (const { agent, roles } of distinct.values()) {
|
|
104
|
-
log(`probing ${roles.join(", ")}: ${describeAgent(agent)}`);
|
|
105
|
-
|
|
115
|
+
for (const { agent, roles, label, settingsPath } of distinct.values()) {
|
|
116
|
+
log(`probing ${roles.join(", ")}: ${describeAgent(agent)} [${label}]`);
|
|
117
|
+
const observe = { root, programId, label: `probe-${roles.join("-")}`, log };
|
|
118
|
+
probes.push(await probeOne(root, agent, roles, label, agentRunner, execCommand, settingsPath, observe));
|
|
106
119
|
}
|
|
120
|
+
if (options.permits === undefined)
|
|
121
|
+
await permits.dispose?.();
|
|
107
122
|
return {
|
|
108
123
|
probes,
|
|
109
124
|
unconfigured,
|
|
110
125
|
healthy: probes.every((probe) => probe.healthy),
|
|
111
126
|
};
|
|
112
127
|
}
|
|
113
|
-
|
|
128
|
+
/** Spawns an already-derived agent config directly — `probeAgents` derives
|
|
129
|
+
* once per role up front (to dedup on the derived invocation), so this
|
|
130
|
+
* never re-derives. */
|
|
131
|
+
function spawnDerived(runner, agent, prompt, cwd) {
|
|
132
|
+
return runner({ command: agent.command, args: agent.args, prompt, promptMode: agent.promptMode, cwd });
|
|
133
|
+
}
|
|
134
|
+
/** Loose match on the exec command a probe asked for against a transcript
|
|
135
|
+
* entry — trimmed equality, tolerant of nothing else: the brief demands the
|
|
136
|
+
* command run bare, so an honest agent's transcript entry is exact. */
|
|
137
|
+
function sameCommand(a, b) {
|
|
138
|
+
return a.trim() === b.trim();
|
|
139
|
+
}
|
|
140
|
+
async function probeOne(root, agent, roles, label, agentRunner, execCommand, settingsPath, observe) {
|
|
114
141
|
const nonce = randomBytes(4).toString("hex");
|
|
115
142
|
const probeFile = `nightshift-probe-${nonce}.txt`;
|
|
116
143
|
const token = `nightshift-probe-ok-${nonce}`;
|
|
@@ -119,21 +146,25 @@ async function probeOne(root, agent, roles, agentRunner, execCommand) {
|
|
|
119
146
|
// probe's failure, never the doctor's crash.
|
|
120
147
|
let invocation;
|
|
121
148
|
try {
|
|
122
|
-
invocation = await
|
|
149
|
+
invocation = await spawnDerived(agentRunner, agent, brief, root);
|
|
123
150
|
}
|
|
124
151
|
catch (error) {
|
|
125
152
|
return {
|
|
126
153
|
roles,
|
|
127
154
|
agent,
|
|
155
|
+
label,
|
|
156
|
+
...(settingsPath === undefined ? {} : { settingsPath }),
|
|
128
157
|
exitCode: -1,
|
|
129
158
|
write: "failed",
|
|
130
159
|
exec: execCommand === undefined ? "skipped" : "failed",
|
|
160
|
+
execRunnerObserved: false,
|
|
131
161
|
...(execCommand === undefined ? {} : { execCommand }),
|
|
132
162
|
claims: [],
|
|
133
163
|
notes: [`the agent could not be spawned at all: ${error.message}`],
|
|
134
164
|
healthy: false,
|
|
135
165
|
};
|
|
136
166
|
}
|
|
167
|
+
await recordAgentTranscript(observe, roles.join("+"), invocation);
|
|
137
168
|
// The write verdict never trusts the reply: the file either landed with
|
|
138
169
|
// the token or it did not.
|
|
139
170
|
let write = "failed";
|
|
@@ -152,16 +183,32 @@ async function probeOne(root, agent, roles, agentRunner, execCommand) {
|
|
|
152
183
|
claims.push(`WRITE: ${writeClaim}`);
|
|
153
184
|
}
|
|
154
185
|
let exec = "skipped";
|
|
186
|
+
const execRunnerObserved = execCommand !== undefined && invocation.transcript?.observed === true;
|
|
155
187
|
if (execCommand !== undefined) {
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
188
|
+
if (invocation.transcript?.observed) {
|
|
189
|
+
// Runner-observed (WS-02): the transcript is what actually happened,
|
|
190
|
+
// not what the agent claims happened. Denied wins over ran, in the
|
|
191
|
+
// (should not occur) case a CLI reports both.
|
|
192
|
+
const denied = invocation.transcript.denials.some((denial) => sameCommand(denial.command, execCommand));
|
|
193
|
+
const ran = invocation.transcript.commands.some((command) => sameCommand(command.command, execCommand));
|
|
194
|
+
exec = !denied && ran ? "ok" : "failed";
|
|
195
|
+
if (exec === "failed") {
|
|
196
|
+
claims.push(denied
|
|
197
|
+
? `EXEC: (denied by the CLI's own permission check — see the transcript)`
|
|
198
|
+
: "EXEC: (the transcript shows the command never ran)");
|
|
199
|
+
}
|
|
159
200
|
}
|
|
160
201
|
else {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
202
|
+
const execClaim = claimLine(invocation.output, "EXEC");
|
|
203
|
+
if (execClaim !== undefined && /^(done|ok)\b/iu.test(execClaim)) {
|
|
204
|
+
exec = "ok";
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
exec = "failed";
|
|
208
|
+
claims.push(execClaim === undefined
|
|
209
|
+
? "EXEC: (the reply never reported the exec step — the agent may have crashed before reaching it)"
|
|
210
|
+
: `EXEC: ${execClaim}`);
|
|
211
|
+
}
|
|
165
212
|
}
|
|
166
213
|
}
|
|
167
214
|
// Notes restating a claim are noise: the signature scanner re-matches the
|
|
@@ -186,9 +233,12 @@ async function probeOne(root, agent, roles, agentRunner, execCommand) {
|
|
|
186
233
|
return {
|
|
187
234
|
roles,
|
|
188
235
|
agent,
|
|
236
|
+
label,
|
|
237
|
+
...(settingsPath === undefined ? {} : { settingsPath }),
|
|
189
238
|
exitCode: invocation.exitCode,
|
|
190
239
|
write,
|
|
191
240
|
exec,
|
|
241
|
+
execRunnerObserved,
|
|
192
242
|
...(execCommand === undefined ? {} : { execCommand }),
|
|
193
243
|
claims,
|
|
194
244
|
notes,
|
|
@@ -206,6 +256,10 @@ export function renderProbeResult(result) {
|
|
|
206
256
|
const writers = probe.roles.filter((role) => WRITE_ROLES.has(role));
|
|
207
257
|
const execers = probe.roles.filter((role) => EXEC_ROLES.has(role));
|
|
208
258
|
lines.push(`${probe.roles.join(", ")}: ${describeAgent(probe.agent)}`);
|
|
259
|
+
lines.push(probe.settingsPath === undefined
|
|
260
|
+
? ` permissions: ${probe.label}`
|
|
261
|
+
: ` permissions: ${probe.label} — settings: ${probe.settingsPath}`);
|
|
262
|
+
const execSource = probe.execRunnerObserved ? "runner-observed" : "agent's report";
|
|
209
263
|
if (probe.healthy) {
|
|
210
264
|
const parts = [];
|
|
211
265
|
if (probe.write === "ok")
|
|
@@ -213,7 +267,7 @@ export function renderProbeResult(result) {
|
|
|
213
267
|
else
|
|
214
268
|
parts.push("reply-only seat (a read-only sandbox is its correct posture)");
|
|
215
269
|
if (probe.exec === "ok") {
|
|
216
|
-
parts.push(`
|
|
270
|
+
parts.push(`can run \`${probe.execCommand ?? ""}\` (${execSource})`);
|
|
217
271
|
}
|
|
218
272
|
else if (probe.exec === "failed") {
|
|
219
273
|
parts.push("cannot run the gate (fine — this seat never fixes verify failures)");
|
|
@@ -228,10 +282,10 @@ export function renderProbeResult(result) {
|
|
|
228
282
|
lines.push(` write: FAILED — no probe file landed, and ${writers.join(", ")} must write the tree`);
|
|
229
283
|
}
|
|
230
284
|
if (probe.exec === "ok") {
|
|
231
|
-
lines.push(` exec \`${probe.execCommand ?? ""}\`: ok (
|
|
285
|
+
lines.push(` exec \`${probe.execCommand ?? ""}\`: ok (${execSource})`);
|
|
232
286
|
}
|
|
233
287
|
else if (probe.exec === "failed" && execers.length > 0) {
|
|
234
|
-
lines.push(` exec \`${probe.execCommand ?? ""}\`: FAILED — ${execers.join(", ")} ` +
|
|
288
|
+
lines.push(` exec \`${probe.execCommand ?? ""}\`: FAILED (${execSource}) — ${execers.join(", ")} ` +
|
|
235
289
|
"must run the verify commands to fix failures with open eyes");
|
|
236
290
|
}
|
|
237
291
|
for (const claim of probe.claims)
|
package/dist/agent-probe.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-probe.js","sourceRoot":"","sources":["../src/agent-probe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,WAAW,EACX,YAAY,EACZ,IAAI,GAEL,MAAM,mBAAmB,CAAC;AAkD3B;;;;;;;GAOG;AACH,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC,CAAC;AACvE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC;AAEvD;;;GAGG;AACH,MAAM,qBAAqB,GACzB,oHAAoH,CAAC;AAEvH,SAAS,UAAU,CAAC,SAAiB,EAAE,KAAa,EAAE,WAAoB;IACxE,OAAO;QACL,0BAA0B;QAC1B,EAAE;QACF,+DAA+D;QAC/D,uDAAuD;QACvD,EAAE;QACF,0DAA0D,SAAS,IAAI;QACvE,2DAA2D,KAAK,EAAE;QAClE,GAAG,CAAC,WAAW,KAAK,SAAS;YAC3B,CAAC,CAAC;gBACE,0CAA0C,WAAW,EAAE;gBACvD,iEAAiE;gBACjE,4DAA4D;gBAC5D,kEAAkE;gBAClE,kEAAkE;gBAClE,sDAAsD;aACvD;YACH,CAAC,CAAC,EAAE,CAAC;QACP,EAAE;QACF,uDAAuD;QACvD,EAAE;QACF,6DAA6D;QAC7D,GAAG,CAAC,WAAW,KAAK,SAAS;YAC3B,CAAC,CAAC,CAAC,4DAA4D,CAAC;YAChE,CAAC,CAAC,EAAE,CAAC;QACP,EAAE;QACF,8CAA8C;KAC/C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,yEAAyE;AACzE,SAAS,SAAS,CAAC,MAAc,EAAE,KAAa;IAC9C,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,MAAM,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IACtD,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9D,CAAC;AAED,SAAS,eAAe,CAAC,MAAc;IACrC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,OAAO,KAAK,EAAE,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AACnB,CAAC;AAED,8DAA8D;AAC9D,SAAS,eAAe,CACtB,MAAwB;IAExB,OAAO;QACL,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE;QAC9C,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE;QAClD,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE;QACpD,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE;QACtD,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE;KACvD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAA2B;IAE3B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,kBAAkB,CAAC;IAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAEjE,qEAAqE;IACrE,0EAA0E;IAC1E,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmD,CAAC;IAC5E,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,SAAS;QACX,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1E,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,KAAK;YAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;YAC7B,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,+DAA+D;IAC/D,sEAAsE;IACtE,6DAA6D;IAC7D,MAAM,WAAW,GAAG,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,WAAW,SAAS,CAAC;IAEpF,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,KAAK,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACjD,GAAG,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5D,MAAM,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO;QACL,MAAM;QACN,YAAY;QACZ,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;KAChD,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,QAAQ,CACrB,IAAY,EACZ,KAAkB,EAClB,KAAe,EACf,WAAwB,EACxB,WAA+B;IAE/B,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,oBAAoB,KAAK,MAAM,CAAC;IAClD,MAAM,KAAK,GAAG,uBAAuB,KAAK,EAAE,CAAC;IAC7C,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IAExD,sEAAsE;IACtE,6CAA6C;IAC7C,IAAI,UAAmD,CAAC;IACxD,IAAI,CAAC;QACH,UAAU,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAClE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,KAAK;YACL,KAAK;YACL,QAAQ,EAAE,CAAC,CAAC;YACZ,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;YACtD,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;YACrD,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,CAAC,0CAA2C,KAAe,CAAC,OAAO,EAAE,CAAC;YAC7E,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;IAED,wEAAwE;IACxE,2BAA2B;IAC3B,IAAI,KAAK,GAAiB,QAAQ,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9D,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,KAAK,GAAG,IAAI,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;IACnB,CAAC;IACD,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAEpD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzD,IAAI,KAAK,KAAK,QAAQ,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,UAAU,UAAU,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,IAAI,GAAiB,SAAS,CAAC;IACnC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACvD,IAAI,SAAS,KAAK,SAAS,IAAI,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAChE,IAAI,GAAG,IAAI,CAAC;QACd,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,QAAQ,CAAC;YAChB,MAAM,CAAC,IAAI,CACT,SAAS,KAAK,SAAS;gBACrB,CAAC,CAAC,gGAAgG;gBAClG,CAAC,CAAC,SAAS,SAAS,EAAE,CACzB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,wEAAwE;IACxE,uEAAuE;IACvE,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,CAAC;IACnF,MAAM,KAAK,GAAG,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CACrD,CAAC,IAAI,EAAE,EAAE,CACP,CAAC,aAAa,CAAC,IAAI,CACjB,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAC9D,CACJ,CAAC;IACF,IAAI,UAAU,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACxC,KAAK,CAAC,IAAI,CACR,0DAA0D,UAAU,CAAC,UAAU,GAAG,CACnF,CAAC;IACJ,CAAC;IACD,IAAI,UAAU,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CACR,0BAA0B,UAAU,CAAC,QAAQ,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,CACxF,CAAC;IACJ,CAAC;IAED,wEAAwE;IACxE,0EAA0E;IAC1E,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,MAAM,OAAO,GACX,UAAU,CAAC,QAAQ,KAAK,CAAC;QACzB,UAAU,CAAC,UAAU,KAAK,SAAS;QACnC,CAAC,CAAC,aAAa,IAAI,KAAK,KAAK,IAAI,CAAC;QAClC,CAAC,CAAC,YAAY,IAAI,IAAI,KAAK,QAAQ,CAAC,CAAC;IAEvC,OAAO;QACL,KAAK;QACL,KAAK;QACL,QAAQ,EAAE,UAAU,CAAC,QAAQ;QAC7B,KAAK;QACL,IAAI;QACJ,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;QACrD,MAAM;QACN,KAAK;QACL,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAyB;IACzD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACnE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAEvE,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;;gBAC1D,KAAK,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;YAChF,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,wBAAwB,KAAK,CAAC,WAAW,IAAI,EAAE,IAAI,CAAC,CAAC;YAClE,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACnC,KAAK,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;YACnF,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACzC,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QAC1D,CAAC;aAAM,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CACR,+CAA+C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CACxF,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,WAAW,IAAI,EAAE,yBAAyB,CAAC,CAAC;QAC3E,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzD,KAAK,CAAC,IAAI,CACR,YAAY,KAAK,CAAC,WAAW,IAAI,EAAE,gBAAgB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;gBACtE,6DAA6D,CAChE,CAAC;QACJ,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,oBAAoB,KAAK,EAAE,CAAC,CAAC;QAC1E,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,qCAAqC,CAAC,CAAC;IAC3D,CAAC;IACD,KAAK,CAAC,IAAI,CACR,MAAM,CAAC,OAAO;QACZ,CAAC,CAAC,mDAAmD;QACrD,CAAC,CAAC,+GAA+G,CACpH,CAAC;IACF,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"agent-probe.js","sourceRoot":"","sources":["../src/agent-probe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EACrB,YAAY,EACZ,IAAI,GAGL,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,mBAAmB,EACnB,YAAY,GAIb,MAAM,cAAc,CAAC;AAmEtB;;;;;;;GAOG;AACH,MAAM,WAAW,GAAG,IAAI,GAAG,CACxB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,WAAW,CAAC,CAChG,CAAC;AACF,MAAM,UAAU,GAAG,IAAI,GAAG,CAAS,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC;AAE/D;;;GAGG;AACH,MAAM,qBAAqB,GACzB,oHAAoH,CAAC;AAEvH,SAAS,UAAU,CAAC,SAAiB,EAAE,KAAa,EAAE,WAAoB;IACxE,OAAO;QACL,0BAA0B;QAC1B,EAAE;QACF,+DAA+D;QAC/D,uDAAuD;QACvD,EAAE;QACF,0DAA0D,SAAS,IAAI;QACvE,2DAA2D,KAAK,EAAE;QAClE,GAAG,CAAC,WAAW,KAAK,SAAS;YAC3B,CAAC,CAAC;gBACE,0CAA0C,WAAW,EAAE;gBACvD,iEAAiE;gBACjE,4DAA4D;gBAC5D,kEAAkE;gBAClE,kEAAkE;gBAClE,sDAAsD;aACvD;YACH,CAAC,CAAC,EAAE,CAAC;QACP,EAAE;QACF,uDAAuD;QACvD,EAAE;QACF,6DAA6D;QAC7D,GAAG,CAAC,WAAW,KAAK,SAAS;YAC3B,CAAC,CAAC,CAAC,4DAA4D,CAAC;YAChE,CAAC,CAAC,EAAE,CAAC;QACP,EAAE;QACF,8CAA8C;KAC/C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,yEAAyE;AACzE,SAAS,SAAS,CAAC,MAAc,EAAE,KAAa;IAC9C,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,MAAM,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IACtD,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9D,CAAC;AAED,SAAS,eAAe,CAAC,MAAc;IACrC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,OAAO,KAAK,EAAE,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AACnB,CAAC;AAED,8DAA8D;AAC9D,SAAS,eAAe,CACtB,MAAwB;IAExB,OAAO;QACL,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE;QAC9C,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE;QAClD,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE;QACpD,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE;QACtD,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE;KACvD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAA2B;IAE3B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,kBAAkB,CAAC;IAC9D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,MAAM,mBAAmB,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC3F,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAEjE,2EAA2E;IAC3E,wEAAwE;IACxE,yEAAyE;IACzE,sDAAsD;IACtD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAGrB,CAAC;IACJ,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;QAClG,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,KAAK;YAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC7B,CAAC;YACJ,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE;gBAChB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,KAAK,EAAE,CAAC,IAAI,CAAC;gBACb,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC;aACtF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,+DAA+D;IAC/D,sEAAsE;IACtE,6DAA6D;IAC7D,MAAM,WAAW,GAAG,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,WAAW,SAAS,CAAC;IAEpF,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,QAAQ,CAAC;IAChD,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,KAAK,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACtE,GAAG,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,aAAa,CAAC,KAAK,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC;QACvE,MAAM,OAAO,GAAmB,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC;QAC5F,MAAM,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1G,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;QAAE,MAAM,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;IAE7D,OAAO;QACL,MAAM;QACN,YAAY;QACZ,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;KAChD,CAAC;AACJ,CAAC;AAED;;wBAEwB;AACxB,SAAS,YAAY,CACnB,MAAmB,EACnB,KAAkB,EAClB,MAAc,EACd,GAAW;IAEX,OAAO,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;AACzG,CAAC;AAED;;wEAEwE;AACxE,SAAS,WAAW,CAAC,CAAS,EAAE,CAAS;IACvC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,QAAQ,CACrB,IAAY,EACZ,KAAkB,EAClB,KAAe,EACf,KAAuB,EACvB,WAAwB,EACxB,WAA+B,EAC/B,YAAgC,EAChC,OAAuB;IAEvB,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,oBAAoB,KAAK,MAAM,CAAC;IAClD,MAAM,KAAK,GAAG,uBAAuB,KAAK,EAAE,CAAC;IAC7C,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IAExD,sEAAsE;IACtE,6CAA6C;IAC7C,IAAI,UAA4C,CAAC;IACjD,IAAI,CAAC;QACH,UAAU,GAAG,MAAM,YAAY,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACnE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;YACvD,QAAQ,EAAE,CAAC,CAAC;YACZ,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;YACtD,kBAAkB,EAAE,KAAK;YACzB,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;YACrD,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,CAAC,0CAA2C,KAAe,CAAC,OAAO,EAAE,CAAC;YAC7E,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;IACD,MAAM,qBAAqB,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;IAElE,wEAAwE;IACxE,2BAA2B;IAC3B,IAAI,KAAK,GAAiB,QAAQ,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9D,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,KAAK,GAAG,IAAI,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;IACnB,CAAC;IACD,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAEpD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzD,IAAI,KAAK,KAAK,QAAQ,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,UAAU,UAAU,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,IAAI,GAAiB,SAAS,CAAC;IACnC,MAAM,kBAAkB,GAAG,WAAW,KAAK,SAAS,IAAI,UAAU,CAAC,UAAU,EAAE,QAAQ,KAAK,IAAI,CAAC;IACjG,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,IAAI,UAAU,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC;YACpC,qEAAqE;YACrE,mEAAmE;YACnE,8CAA8C;YAC9C,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;YACxG,MAAM,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;YACxG,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;YACxC,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtB,MAAM,CAAC,IAAI,CACT,MAAM;oBACJ,CAAC,CAAC,uEAAuE;oBACzE,CAAC,CAAC,oDAAoD,CACzD,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACvD,IAAI,SAAS,KAAK,SAAS,IAAI,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBAChE,IAAI,GAAG,IAAI,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,QAAQ,CAAC;gBAChB,MAAM,CAAC,IAAI,CACT,SAAS,KAAK,SAAS;oBACrB,CAAC,CAAC,gGAAgG;oBAClG,CAAC,CAAC,SAAS,SAAS,EAAE,CACzB,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,wEAAwE;IACxE,uEAAuE;IACvE,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,CAAC;IACnF,MAAM,KAAK,GAAG,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CACrD,CAAC,IAAI,EAAE,EAAE,CACP,CAAC,aAAa,CAAC,IAAI,CACjB,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAC9D,CACJ,CAAC;IACF,IAAI,UAAU,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACxC,KAAK,CAAC,IAAI,CACR,0DAA0D,UAAU,CAAC,UAAU,GAAG,CACnF,CAAC;IACJ,CAAC;IACD,IAAI,UAAU,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CACR,0BAA0B,UAAU,CAAC,QAAQ,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,CACxF,CAAC;IACJ,CAAC;IAED,wEAAwE;IACxE,0EAA0E;IAC1E,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,MAAM,OAAO,GACX,UAAU,CAAC,QAAQ,KAAK,CAAC;QACzB,UAAU,CAAC,UAAU,KAAK,SAAS;QACnC,CAAC,CAAC,aAAa,IAAI,KAAK,KAAK,IAAI,CAAC;QAClC,CAAC,CAAC,YAAY,IAAI,IAAI,KAAK,QAAQ,CAAC,CAAC;IAEvC,OAAO;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;QACvD,QAAQ,EAAE,UAAU,CAAC,QAAQ;QAC7B,KAAK;QACL,IAAI;QACJ,kBAAkB;QAClB,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;QACrD,MAAM;QACN,KAAK;QACL,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAyB;IACzD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACnE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvE,KAAK,CAAC,IAAI,CACR,KAAK,CAAC,YAAY,KAAK,SAAS;YAC9B,CAAC,CAAC,kBAAkB,KAAK,CAAC,KAAK,EAAE;YACjC,CAAC,CAAC,kBAAkB,KAAK,CAAC,KAAK,gBAAgB,KAAK,CAAC,YAAY,EAAE,CACtE,CAAC;QAEF,MAAM,UAAU,GAAG,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,gBAAgB,CAAC;QAEnF,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;;gBAC1D,KAAK,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;YAChF,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,WAAW,IAAI,EAAE,OAAO,UAAU,GAAG,CAAC,CAAC;YACvE,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACnC,KAAK,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;YACnF,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACzC,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QAC1D,CAAC;aAAM,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CACR,+CAA+C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CACxF,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,WAAW,IAAI,EAAE,WAAW,UAAU,GAAG,CAAC,CAAC;QAC1E,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzD,KAAK,CAAC,IAAI,CACR,YAAY,KAAK,CAAC,WAAW,IAAI,EAAE,eAAe,UAAU,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;gBACtF,6DAA6D,CAChE,CAAC;QACJ,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,oBAAoB,KAAK,EAAE,CAAC,CAAC;QAC1E,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,qCAAqC,CAAC,CAAC;IAC3D,CAAC;IACD,KAAK,CAAC,IAAI,CACR,MAAM,CAAC,OAAO;QACZ,CAAC,CAAC,mDAAmD;QACrD,CAAC,CAAC,+GAA+G,CACpH,CAAC;IACF,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/dist/agent-runner.d.ts
CHANGED
|
@@ -1,9 +1,43 @@
|
|
|
1
1
|
import type { AgentConfig, NightshiftConfig } from "./config.js";
|
|
2
|
+
import type { AgentRole, PermitsContext } from "./permits.js";
|
|
3
|
+
/** A Bash command a Claude spawn actually ran, observed from its stream-json `tool_use` block. */
|
|
4
|
+
export interface TranscriptCommand {
|
|
5
|
+
command: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
}
|
|
8
|
+
/** A command the CLI itself refused, observed from its stream-json permission events. */
|
|
9
|
+
export interface TranscriptDenial {
|
|
10
|
+
command: string;
|
|
11
|
+
reason: string;
|
|
12
|
+
tool?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* What the runner observed a Claude spawn do, demultiplexed from its
|
|
16
|
+
* `--output-format stream-json` NDJSON stream. `observed: false` marks a
|
|
17
|
+
* stream that could not be demultiplexed (an older CLI ignoring the flag, a
|
|
18
|
+
* crash before the first event) — the raw-text fallback, not a failure.
|
|
19
|
+
*/
|
|
20
|
+
export interface AgentTranscript {
|
|
21
|
+
observed: boolean;
|
|
22
|
+
commands: TranscriptCommand[];
|
|
23
|
+
denials: TranscriptDenial[];
|
|
24
|
+
/**
|
|
25
|
+
* True when a line *after* the first was valid enough to keep the stream
|
|
26
|
+
* classified as NDJSON, but itself failed to parse and was skipped
|
|
27
|
+
* (fail-open, per spec). A skipped line could have been a `tool_use` or a
|
|
28
|
+
* denial — there is no way to know which — so this is the transcript's own
|
|
29
|
+
* admission that `commands`/`denials` may be missing an entry, and it must
|
|
30
|
+
* never be silently blessed as fully authoritative alongside `observed: true`.
|
|
31
|
+
*/
|
|
32
|
+
corrupted?: boolean;
|
|
33
|
+
}
|
|
2
34
|
export interface CommandResult {
|
|
3
35
|
exitCode: number;
|
|
4
36
|
output: string;
|
|
5
37
|
/** Set when the prompt could not be fully delivered to the process stdin. */
|
|
6
38
|
inputError?: string;
|
|
39
|
+
/** Present only for a Claude spawn whose args requested stream-json output. */
|
|
40
|
+
transcript?: AgentTranscript;
|
|
7
41
|
}
|
|
8
42
|
export interface AgentInvocation {
|
|
9
43
|
command: string;
|
|
@@ -27,13 +61,67 @@ export declare function runProcess(command: string, args: string[], options: {
|
|
|
27
61
|
input?: string;
|
|
28
62
|
shell: boolean;
|
|
29
63
|
onOutput?: (chunk: string) => void;
|
|
64
|
+
/**
|
|
65
|
+
* Stdout-only chunks, separate from `onOutput`'s combined stdout+stderr
|
|
66
|
+
* stream. The NDJSON demultiplexer feeds from this instead: Claude's
|
|
67
|
+
* structured stream-json events are only ever written to stdout, while
|
|
68
|
+
* stderr carries human-readable warnings and diagnostics that are not
|
|
69
|
+
* JSON at all. Feeding those into the same line parser as the NDJSON
|
|
70
|
+
* stream would corrupt or invalidate it depending on arrival order — a
|
|
71
|
+
* stderr line arriving before the first stdout event would look like an
|
|
72
|
+
* unparseable first line and force the whole spawn to the raw-text
|
|
73
|
+
* fallback even though stdout was itself well-formed NDJSON.
|
|
74
|
+
*/
|
|
75
|
+
onStdout?: (chunk: string) => void;
|
|
30
76
|
env?: NodeJS.ProcessEnv;
|
|
31
77
|
}): Promise<CommandResult>;
|
|
78
|
+
/**
|
|
79
|
+
* Demultiplexes a whole captured stream-json string in one call — what
|
|
80
|
+
* fixture-replay tests exercise. `undefined` means the input did not parse as
|
|
81
|
+
* NDJSON at all (the raw-text fallback applies).
|
|
82
|
+
*/
|
|
83
|
+
export declare function demultiplexClaudeStreamJson(raw: string): {
|
|
84
|
+
output: string;
|
|
85
|
+
transcript: AgentTranscript;
|
|
86
|
+
} | undefined;
|
|
32
87
|
export declare const defaultAgentRunner: AgentRunner;
|
|
33
88
|
export declare const defaultVerifyRunner: VerifyRunner;
|
|
34
89
|
export declare function tail(output: string, limit?: number): string;
|
|
35
|
-
/**
|
|
36
|
-
|
|
90
|
+
/**
|
|
91
|
+
* Names where a spawn's transcript is written and how its path is logged —
|
|
92
|
+
* one home for both, shared by every `invokeAgent` call site, so the write
|
|
93
|
+
* and its log line are not duplicated across each spawning command.
|
|
94
|
+
*/
|
|
95
|
+
export interface TranscriptSink {
|
|
96
|
+
root: string;
|
|
97
|
+
programId: string;
|
|
98
|
+
/** Names the JSONL file, e.g. "ws-02-implementer" or "probe-agent". */
|
|
99
|
+
label: string;
|
|
100
|
+
log: (line: string) => void;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Writes a spawn's transcript as JSONL under `build-logs/<programId>/` and
|
|
104
|
+
* logs the path — the one place this happens, shared by `invokeAgent` and
|
|
105
|
+
* the doctor probe (`agent-probe.ts`, which spawns through an already-derived
|
|
106
|
+
* invocation and so cannot go through `invokeAgent` itself). A no-op when the
|
|
107
|
+
* result carries no transcript at all (a non-Claude spawn, an operator-
|
|
108
|
+
* configured or operator-`--output-format` role — never asked to be
|
|
109
|
+
* observed).
|
|
110
|
+
*/
|
|
111
|
+
export declare function recordAgentTranscript(observe: TranscriptSink, role: string, result: CommandResult): Promise<void>;
|
|
112
|
+
/**
|
|
113
|
+
* Spawns a configured agent role with a prompt; shared by every brief
|
|
114
|
+
* spawner. `permits` derives the posture for this role/agent/host before the
|
|
115
|
+
* process ever starts — an operator-authored permission flag in `agent.args`
|
|
116
|
+
* is spawned untouched (WS-01 SC-05); everything else gets the flags
|
|
117
|
+
* `src/permits.ts` derives from the role's fixed posture and the run's
|
|
118
|
+
* containment.
|
|
119
|
+
*
|
|
120
|
+
* `observe`, when given, writes the spawn's transcript (if one was observed)
|
|
121
|
+
* as JSONL under `build-logs/<programId>/` and logs the path — the one place
|
|
122
|
+
* this happens, rather than duplicated across every spawning call site.
|
|
123
|
+
*/
|
|
124
|
+
export declare function invokeAgent(runner: AgentRunner, agent: AgentConfig, prompt: string, cwd: string, permits: PermitsContext, role: AgentRole, observe?: TranscriptSink): Promise<CommandResult>;
|
|
37
125
|
/**
|
|
38
126
|
* The implementer: the `agent` block, or the environment fallback for hosts
|
|
39
127
|
* that have no config file yet.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-runner.d.ts","sourceRoot":"","sources":["../src/agent-runner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent-runner.d.ts","sourceRoot":"","sources":["../src/agent-runner.ts"],"names":[],"mappings":"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"}
|