@agentdeck/hooks 1.9.1 → 1.9.3
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/dist/codex-install.d.ts +24 -0
- package/dist/codex-install.d.ts.map +1 -1
- package/dist/codex-install.js +109 -16
- package/dist/codex-install.js.map +1 -1
- package/dist/install.d.ts +87 -4
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +384 -25
- package/dist/install.js.map +1 -1
- package/dist/opencode-install.d.ts.map +1 -1
- package/dist/opencode-install.js +16 -1
- package/dist/opencode-install.js.map +1 -1
- package/package.json +1 -1
package/dist/codex-install.d.ts
CHANGED
|
@@ -16,6 +16,9 @@ export interface InstallOptions {
|
|
|
16
16
|
platform?: NodeJS.Platform;
|
|
17
17
|
/** Override the Windows notify sidecar script path (tests). */
|
|
18
18
|
notifyScriptPath?: string;
|
|
19
|
+
/** Device approvals for Codex; `AGENTDECK_CODEX_APPROVALS=1|0` is the
|
|
20
|
+
* default. See `CodexApprovalsPolicy`. */
|
|
21
|
+
codexApprovals?: CodexApprovalsPolicy;
|
|
19
22
|
}
|
|
20
23
|
export interface InstallResult {
|
|
21
24
|
installed: boolean;
|
|
@@ -24,7 +27,19 @@ export interface InstallResult {
|
|
|
24
27
|
/** Non-fatal degradation while `installed === true` (e.g. the Windows
|
|
25
28
|
* notify sidecar could not be written, so notify was omitted). */
|
|
26
29
|
warning?: string;
|
|
30
|
+
/** Whether the installed block carries the device-approval hold. */
|
|
31
|
+
approvals?: boolean;
|
|
27
32
|
}
|
|
33
|
+
/** Whether AgentDeck's `PermissionRequest` group also carries the
|
|
34
|
+
* device-approval hold — a second handler that waits for a device's
|
|
35
|
+
* Allow/Deny before Codex draws its own prompt. Off by default for two
|
|
36
|
+
* reasons that both land on the person at the terminal: Codex shows its
|
|
37
|
+
* startup "Review hooks" screen for any new handler, and while a hold waits
|
|
38
|
+
* the terminal prompt does not appear. `auto` keeps whatever the managed
|
|
39
|
+
* block already carries, so a refresh never adds or drops it; `on` adds it;
|
|
40
|
+
* `off` removes it. The config file is the only record of the choice. */
|
|
41
|
+
export type CodexApprovalsPolicy = 'auto' | 'on' | 'off';
|
|
42
|
+
export declare function codexApprovalsPolicyFromEnv(env?: NodeJS.ProcessEnv): CodexApprovalsPolicy;
|
|
28
43
|
interface ManagedBlockOptions {
|
|
29
44
|
includeFeatures?: boolean;
|
|
30
45
|
includeNotify?: boolean;
|
|
@@ -33,11 +48,20 @@ interface ManagedBlockOptions {
|
|
|
33
48
|
daemonHttpPort?: number;
|
|
34
49
|
platform?: NodeJS.Platform;
|
|
35
50
|
notifyScriptPath?: string;
|
|
51
|
+
includeApprovalHold?: boolean;
|
|
36
52
|
}
|
|
37
53
|
/** Assemble the body of the AgentDeck-managed fence. Tests call this
|
|
38
54
|
* directly to assert schema regressions without driving the file
|
|
39
55
|
* installer. */
|
|
40
56
|
export declare function managedBlockBody(opts?: ManagedBlockOptions): string;
|
|
57
|
+
/** The hold handler: post the `PermissionRequest` payload with the hold
|
|
58
|
+
* header, wait for the daemon's answer, and print it only when it is a
|
|
59
|
+
* decision. Every other outcome (no daemon, a daemon without the hold, a
|
|
60
|
+
* timeout, an empty pass) prints nothing and exits 0, which Codex reads as
|
|
61
|
+
* no decision: its own prompt appears as if the handler were absent. */
|
|
62
|
+
export declare function buildCodexApprovalHoldCommand(platform?: NodeJS.Platform): string;
|
|
63
|
+
/** Whether the managed block already carries the hold handler. */
|
|
64
|
+
export declare function hasCodexApprovalHold(text: string): boolean;
|
|
41
65
|
/** Body of the Windows notify sidecar script (`-File` execution binds
|
|
42
66
|
* Codex's appended payload argv into `$args`; take the last element to
|
|
43
67
|
* mirror POSIX `$1`). ASCII-only so PowerShell 5.1's BOM-less ANSI
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-install.d.ts","sourceRoot":"","sources":["../src/codex-install.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"codex-install.d.ts","sourceRoot":"","sources":["../src/codex-install.ts"],"names":[],"mappings":"AAmCA,eAAO,MAAM,yBAAyB,QAA2C,CAAC;AAClF;;;;;8CAK8C;AAC9C,eAAO,MAAM,kCAAkC,QAAoD,CAAC;AAOpG,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;mEAC+D;IAC/D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,+DAA+D;IAC/D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;+CAC2C;IAC3C,cAAc,CAAC,EAAE,oBAAoB,CAAC;CACvC;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;uEACmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;0EAO0E;AAC1E,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;AAEzD,wBAAgB,2BAA2B,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,oBAAoB,CAKtG;AAmDD,UAAU,mBAAmB;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;iBAEiB;AACjB,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,mBAAwB,GAAG,MAAM,CAsCvE;AAqGD;;;;yEAIyE;AACzE,wBAAgB,6BAA6B,CAAC,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAAG,MAAM,CAKlG;AASD,kEAAkE;AAClE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAW1D;AAuDD;;;kEAGkE;AAClE,wBAAgB,0BAA0B,CAAC,KAAK,SAAwB,GAAG,MAAM,CAEhF;AA2HD;;;;;;;gEAOgE;AAChE,wBAAgB,yBAAyB,CAAC,IAAI,GAAE,cAAmB,GAAG,aAAa,CAgElF;AAED;;yCAEyC;AACzC,wBAAgB,mBAAmB,CAAC,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,IAAI,CAcvG;AAED;;0EAE0E;AAC1E,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,cAAmB,GAAG,aAAa,CAE1E"}
|
package/dist/codex-install.js
CHANGED
|
@@ -19,7 +19,7 @@ import { readFileSync, writeFileSync, existsSync, mkdirSync, renameSync, unlinkS
|
|
|
19
19
|
import { randomUUID } from 'node:crypto';
|
|
20
20
|
import { dirname, join } from 'path';
|
|
21
21
|
import { homedir } from 'os';
|
|
22
|
-
import { applyManagedBlock, removeManagedBlock, hasTopLevelKeyOutsideFence, hasTableOutsideFence, hasIncompatibleHookTableOutsideFence, quoted, configEditIssue, existingFeaturesEnableHooks, } from './codex-mini-toml.js';
|
|
22
|
+
import { OPEN_FENCE, CLOSE_FENCE, applyManagedBlock, removeManagedBlock, hasTopLevelKeyOutsideFence, hasTableOutsideFence, hasIncompatibleHookTableOutsideFence, quoted, configEditIssue, existingFeaturesEnableHooks, } from './codex-mini-toml.js';
|
|
23
23
|
export const DEFAULT_CODEX_CONFIG_PATH = join(homedir(), '.codex', 'config.toml');
|
|
24
24
|
/** Sidecar script for the Windows notify fallback. Codex execs `notify`
|
|
25
25
|
* as a bare argv array (no shell) and appends the JSON payload as the
|
|
@@ -32,6 +32,26 @@ const DEFAULT_DAEMON_PORT = 9120;
|
|
|
32
32
|
function isValidPort(value) {
|
|
33
33
|
return typeof value === 'number' && Number.isInteger(value) && value >= 1 && value <= 65535;
|
|
34
34
|
}
|
|
35
|
+
export function codexApprovalsPolicyFromEnv(env = process.env) {
|
|
36
|
+
const v = (env.AGENTDECK_CODEX_APPROVALS ?? '').trim().toLowerCase();
|
|
37
|
+
if (v === '1' || v === 'on' || v === 'true')
|
|
38
|
+
return 'on';
|
|
39
|
+
if (v === '0' || v === 'off' || v === 'false')
|
|
40
|
+
return 'off';
|
|
41
|
+
return 'auto';
|
|
42
|
+
}
|
|
43
|
+
/** Marks the hold request. It posts to the same `codex_permission_request`
|
|
44
|
+
* endpoint as the notification handler on purpose: a daemon that predates
|
|
45
|
+
* the hold reads it as one more notification and answers at once, and an
|
|
46
|
+
* installer that predates it recognises the command as its own
|
|
47
|
+
* (`/hooks/codex_`) and rewrites the block without it. Both fall back to
|
|
48
|
+
* the default instead of an error. The value is the command's wait budget
|
|
49
|
+
* in seconds; the daemon holds for less. */
|
|
50
|
+
const CODEX_APPROVAL_HOLD_HEADER = 'X-AgentDeck-Hold';
|
|
51
|
+
/** curl's budget for the held POST. */
|
|
52
|
+
const CODEX_APPROVAL_HOLD_WAIT_SECONDS = 55;
|
|
53
|
+
/** Codex kills a hook after `timeout` seconds; it must exceed curl's budget. */
|
|
54
|
+
const CODEX_APPROVAL_HOLD_TIMEOUT_SECONDS = 60;
|
|
35
55
|
/** Honour `AGENTDECK_NO_CODEX_HOOKS=1` from the environment. Callers
|
|
36
56
|
* should also accept a `--no-codex-hooks` flag and short-circuit before
|
|
37
57
|
* calling install. */
|
|
@@ -95,7 +115,7 @@ export function managedBlockBody(opts = {}) {
|
|
|
95
115
|
if (opts.includeFeatures !== false)
|
|
96
116
|
lines.push('[features]', 'hooks = true');
|
|
97
117
|
lines.push('');
|
|
98
|
-
lines.push(...buildLifecycleHookTables(platform));
|
|
118
|
+
lines.push(...buildLifecycleHookTables(platform, opts.includeApprovalHold === true));
|
|
99
119
|
if (includeOtel) {
|
|
100
120
|
lines.push('');
|
|
101
121
|
lines.push('# OTel trace exporter — best-effort live progress signal.');
|
|
@@ -167,7 +187,7 @@ const LIFECYCLE_HOOKS = [
|
|
|
167
187
|
// waited for the next prompt to close.
|
|
168
188
|
{ codexEvent: 'Interrupt', agentDeckEvent: 'codex_interrupt', matcher: null },
|
|
169
189
|
];
|
|
170
|
-
function buildLifecycleHookTables(platform) {
|
|
190
|
+
function buildLifecycleHookTables(platform, includeApprovalHold = false) {
|
|
171
191
|
const lines = [];
|
|
172
192
|
for (let idx = 0; idx < LIFECYCLE_HOOKS.length; idx++) {
|
|
173
193
|
const hook = LIFECYCLE_HOOKS[idx];
|
|
@@ -182,9 +202,53 @@ function buildLifecycleHookTables(platform) {
|
|
|
182
202
|
lines.push(`command = ${quoted(buildLifecycleHookCommand(hook.agentDeckEvent, platform))}`);
|
|
183
203
|
// Interrupt has a three-second hard maximum in Codex (0.151+).
|
|
184
204
|
lines.push(`timeout = ${hook.codexEvent === 'Interrupt' ? 3 : 5}`);
|
|
205
|
+
// The hold is a second handler in AgentDeck's own group, never a group of
|
|
206
|
+
// its own. Codex keys trust by group and handler index and hashes each
|
|
207
|
+
// handler alone, so this leaves the notification handler trusted and
|
|
208
|
+
// re-keys nobody; a new group ahead of a user's would re-key theirs.
|
|
209
|
+
if (includeApprovalHold && hook.codexEvent === 'PermissionRequest') {
|
|
210
|
+
lines.push(`[[hooks.${hook.codexEvent}.hooks]]`);
|
|
211
|
+
lines.push(`type = "command"`);
|
|
212
|
+
lines.push(`command = ${quoted(buildCodexApprovalHoldCommand(platform))}`);
|
|
213
|
+
lines.push(`timeout = ${CODEX_APPROVAL_HOLD_TIMEOUT_SECONDS}`);
|
|
214
|
+
}
|
|
185
215
|
}
|
|
186
216
|
return lines;
|
|
187
217
|
}
|
|
218
|
+
/** The hold handler: post the `PermissionRequest` payload with the hold
|
|
219
|
+
* header, wait for the daemon's answer, and print it only when it is a
|
|
220
|
+
* decision. Every other outcome (no daemon, a daemon without the hold, a
|
|
221
|
+
* timeout, an empty pass) prints nothing and exits 0, which Codex reads as
|
|
222
|
+
* no decision: its own prompt appears as if the handler were absent. */
|
|
223
|
+
export function buildCodexApprovalHoldCommand(platform = process.platform) {
|
|
224
|
+
if (platform === 'win32') {
|
|
225
|
+
return `powershell.exe -NoProfile -NonInteractive -ExecutionPolicy Bypass -EncodedCommand ${windowsEncodedCommand(buildWindowsApprovalHoldSnippet())}`;
|
|
226
|
+
}
|
|
227
|
+
return `exec sh -c ${shellSingleQuoted(buildApprovalHoldSnippet())}`;
|
|
228
|
+
}
|
|
229
|
+
function buildApprovalHoldSnippet() {
|
|
230
|
+
return posixPortPreamble().concat([
|
|
231
|
+
`R=$(curl -sf --connect-timeout 0.2 --max-time ${CODEX_APPROVAL_HOLD_WAIT_SECONDS} -X POST "http://127.0.0.1:$PORT/hooks/codex_permission_request" -H 'Content-Type: application/json' -H "X-AgentDeck-Pid: $PPID" -H "${CODEX_APPROVAL_HOLD_HEADER}: ${CODEX_APPROVAL_HOLD_WAIT_SECONDS}" -d @- 2>/dev/null) || R=""`,
|
|
232
|
+
`case "$R" in *'"hookSpecificOutput"'*) printf '%s' "$R" ;; esac`,
|
|
233
|
+
]).join('\n');
|
|
234
|
+
}
|
|
235
|
+
/** Whether the managed block already carries the hold handler. */
|
|
236
|
+
export function hasCodexApprovalHold(text) {
|
|
237
|
+
const open = text.indexOf(OPEN_FENCE);
|
|
238
|
+
const close = open < 0 ? -1 : text.indexOf(CLOSE_FENCE, open);
|
|
239
|
+
if (close < 0)
|
|
240
|
+
return false;
|
|
241
|
+
for (const line of text.slice(open, close).split(/\r?\n/)) {
|
|
242
|
+
if (!/^\s*command\s*=/.test(line))
|
|
243
|
+
continue;
|
|
244
|
+
if (line.includes(CODEX_APPROVAL_HOLD_HEADER))
|
|
245
|
+
return true;
|
|
246
|
+
const encoded = line.match(/-EncodedCommand\s+([A-Za-z0-9+/=]+)/)?.[1];
|
|
247
|
+
if (encoded && Buffer.from(encoded, 'base64').toString('utf16le').includes(CODEX_APPROVAL_HOLD_HEADER))
|
|
248
|
+
return true;
|
|
249
|
+
}
|
|
250
|
+
return false;
|
|
251
|
+
}
|
|
188
252
|
/** Official Codex lifecycle hooks pass their JSON payload on stdin.
|
|
189
253
|
* Keep stdout quiet so Stop / UserPromptSubmit hooks do not accidentally
|
|
190
254
|
* feed the daemon's acknowledgement back into Codex as hook output. */
|
|
@@ -207,10 +271,29 @@ function shellSingleQuoted(s) {
|
|
|
207
271
|
function buildWindowsLifecycleHookCommand(event) {
|
|
208
272
|
return `powershell.exe -NoProfile -NonInteractive -ExecutionPolicy Bypass -EncodedCommand ${windowsEncodedCommand(buildWindowsStdinPostSnippet(event))}`;
|
|
209
273
|
}
|
|
274
|
+
// Read raw stdin as UTF-8: [Console]::In decodes with the console's OEM
|
|
275
|
+
// codepage (e.g. CP949) and would garble non-ASCII payload text.
|
|
276
|
+
const WINDOWS_UTF8_STDIN = '(New-Object System.IO.StreamReader([Console]::OpenStandardInput(), [System.Text.Encoding]::UTF8)).ReadToEnd()';
|
|
210
277
|
function buildWindowsStdinPostSnippet(event) {
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
278
|
+
return buildWindowsPostSnippet(event, WINDOWS_UTF8_STDIN);
|
|
279
|
+
}
|
|
280
|
+
/** Windows hold handler. Invoke-WebRequest, not Invoke-RestMethod: the answer
|
|
281
|
+
* is echoed verbatim, and Invoke-RestMethod would parse it into an object. */
|
|
282
|
+
function buildWindowsApprovalHoldSnippet() {
|
|
283
|
+
return [
|
|
284
|
+
`$ErrorActionPreference = 'SilentlyContinue'`,
|
|
285
|
+
`$ProgressPreference = 'SilentlyContinue'`,
|
|
286
|
+
...windowsCodexPidPreamble(),
|
|
287
|
+
...windowsPortPreamble(),
|
|
288
|
+
`$body = ${WINDOWS_UTF8_STDIN}`,
|
|
289
|
+
`$bytes = [System.Text.Encoding]::UTF8.GetBytes([string]$body)`,
|
|
290
|
+
`$agentDeckHeaders['${CODEX_APPROVAL_HOLD_HEADER}'] = '${CODEX_APPROVAL_HOLD_WAIT_SECONDS}'`,
|
|
291
|
+
`try {`,
|
|
292
|
+
` $agentDeckAnswer = [string](Invoke-WebRequest -UseBasicParsing -Method Post -TimeoutSec ${CODEX_APPROVAL_HOLD_WAIT_SECONDS} -Uri ('http://127.0.0.1:' + $port + '/hooks/codex_permission_request') -ContentType 'application/json; charset=utf-8' -Headers $agentDeckHeaders -Body $bytes).Content`,
|
|
293
|
+
` if ($agentDeckAnswer.Contains('"hookSpecificOutput"')) { [Console]::Out.Write($agentDeckAnswer) }`,
|
|
294
|
+
`} catch {}`,
|
|
295
|
+
`exit 0`,
|
|
296
|
+
].join('\n');
|
|
214
297
|
}
|
|
215
298
|
/** Body of the Windows notify sidecar script (`-File` execution binds
|
|
216
299
|
* Codex's appended payload argv into `$args`; take the last element to
|
|
@@ -246,6 +329,19 @@ function buildWindowsPostSnippet(event, bodyExpression) {
|
|
|
246
329
|
`$ErrorActionPreference = 'SilentlyContinue'`,
|
|
247
330
|
`$ProgressPreference = 'SilentlyContinue'`,
|
|
248
331
|
...windowsCodexPidPreamble(),
|
|
332
|
+
...windowsPortPreamble(),
|
|
333
|
+
`$body = ${bodyExpression}`,
|
|
334
|
+
// Post UTF-8 bytes: Invoke-RestMethod encodes string bodies as
|
|
335
|
+
// ISO-8859-1 when the content type carries no charset, replacing
|
|
336
|
+
// non-ASCII payload characters with '?'.
|
|
337
|
+
`$bytes = [System.Text.Encoding]::UTF8.GetBytes([string]$body)`,
|
|
338
|
+
`try { Invoke-RestMethod -Method Post -TimeoutSec 1 -Uri ('http://127.0.0.1:' + $port + '/hooks/${event}') -ContentType 'application/json; charset=utf-8' -Headers $agentDeckHeaders -Body $bytes | Out-Null } catch {}`,
|
|
339
|
+
`exit 0`,
|
|
340
|
+
].join('\n');
|
|
341
|
+
}
|
|
342
|
+
/** Windows port resolver shared by the post and hold snippets. */
|
|
343
|
+
function windowsPortPreamble() {
|
|
344
|
+
return [
|
|
249
345
|
`[int]$port = 0`,
|
|
250
346
|
`[int]$candidate = 0`,
|
|
251
347
|
`if (!([int]::TryParse([string]$env:AGENTDECK_PORT, [ref]$candidate)) -or $candidate -lt 1 -or $candidate -gt 65535) { $candidate = 0 }`,
|
|
@@ -270,14 +366,7 @@ function buildWindowsPostSnippet(event, bodyExpression) {
|
|
|
270
366
|
` }`,
|
|
271
367
|
`}`,
|
|
272
368
|
`if ($port -eq 0) { $port = 9120 }`,
|
|
273
|
-
|
|
274
|
-
// Post UTF-8 bytes: Invoke-RestMethod encodes string bodies as
|
|
275
|
-
// ISO-8859-1 when the content type carries no charset, replacing
|
|
276
|
-
// non-ASCII payload characters with '?'.
|
|
277
|
-
`$bytes = [System.Text.Encoding]::UTF8.GetBytes([string]$body)`,
|
|
278
|
-
`try { Invoke-RestMethod -Method Post -TimeoutSec 1 -Uri ('http://127.0.0.1:' + $port + '/hooks/${event}') -ContentType 'application/json; charset=utf-8' -Headers $agentDeckHeaders -Body $bytes | Out-Null } catch {}`,
|
|
279
|
-
`exit 0`,
|
|
280
|
-
].join('\n');
|
|
369
|
+
];
|
|
281
370
|
}
|
|
282
371
|
function windowsEncodedCommand(s) {
|
|
283
372
|
return Buffer.from(s, 'utf16le').toString('base64');
|
|
@@ -380,6 +469,9 @@ export function installCodexHooksIfNeeded(opts = {}) {
|
|
|
380
469
|
warning = `notify sidecar write failed (${notifyScriptPath}) — notify fallback omitted`;
|
|
381
470
|
}
|
|
382
471
|
}
|
|
472
|
+
const approvalsPolicy = opts.codexApprovals ?? codexApprovalsPolicyFromEnv();
|
|
473
|
+
const approvals = approvalsPolicy === 'on'
|
|
474
|
+
|| (approvalsPolicy === 'auto' && hasCodexApprovalHold(original));
|
|
383
475
|
const otelEndpoint = includeOtel ? buildOtelEndpoint(opts.daemonHttpPort) : undefined;
|
|
384
476
|
const body = managedBlockBody({
|
|
385
477
|
includeFeatures: !hasFeatures,
|
|
@@ -389,15 +481,16 @@ export function installCodexHooksIfNeeded(opts = {}) {
|
|
|
389
481
|
daemonHttpPort: opts.daemonHttpPort,
|
|
390
482
|
platform,
|
|
391
483
|
notifyScriptPath,
|
|
484
|
+
includeApprovalHold: approvals,
|
|
392
485
|
});
|
|
393
486
|
const updated = applyManagedBlock(original, body);
|
|
394
487
|
if (updated === original) {
|
|
395
|
-
return { installed: true, warning };
|
|
488
|
+
return { installed: true, warning, approvals };
|
|
396
489
|
}
|
|
397
490
|
if (readText(path) !== original)
|
|
398
491
|
return { installed: false, reason: 'config.toml changed during setup; retry' };
|
|
399
492
|
if (writeTextAtomic(updated, path)) {
|
|
400
|
-
return { installed: true, warning };
|
|
493
|
+
return { installed: true, warning, approvals };
|
|
401
494
|
}
|
|
402
495
|
return { installed: false, reason: `write failed: ${path}` };
|
|
403
496
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-install.js","sourceRoot":"","sources":["../src/codex-install.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codex-install.js","sourceRoot":"","sources":["../src/codex-install.ts"],"names":[],"mappings":"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"}
|
package/dist/install.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export { installCodexHooksIfNeeded, uninstallCodexHooks, migrateCodexHooks, mana
|
|
|
4
4
|
export type { InstallOptions as CodexInstallOptions, InstallResult as CodexInstallResult } from './codex-install.js';
|
|
5
5
|
export { installOpenCodeHooksIfNeeded, uninstallOpenCodeHooks, opencodePluginPath, opencodePluginSource, } from './opencode-install.js';
|
|
6
6
|
export type { OpenCodeInstallOptions, OpenCodeInstallResult } from './opencode-install.js';
|
|
7
|
-
export declare const HOOK_EVENTS: readonly ["SessionStart", "SessionEnd", "PreToolUse", "PostToolUse", "PostToolUseFailure", "Stop", "Notification", "UserPromptSubmit", "SubagentStart", "SubagentStop", "TaskCompleted", "TeammateIdle"];
|
|
7
|
+
export declare const HOOK_EVENTS: readonly ["SessionStart", "SessionEnd", "PreToolUse", "PostToolUse", "PostToolUseFailure", "Stop", "Notification", "PermissionRequest", "UserPromptSubmit", "SubagentStart", "SubagentStop", "TaskCompleted", "TeammateIdle"];
|
|
8
8
|
/**
|
|
9
9
|
* Shell snippet that resolves the AgentDeck daemon's HTTP port at hook
|
|
10
10
|
* runtime, then POSTs the hook payload to it. Kept in a single helper so
|
|
@@ -41,13 +41,24 @@ export declare function buildHookCommand(eventName: string): string;
|
|
|
41
41
|
* Port discovery matches the POSIX snippet, minus the macOS App Store sandbox
|
|
42
42
|
* containers which do not exist on Windows:
|
|
43
43
|
* 1. `$env:AGENTDECK_PORT`
|
|
44
|
-
* 2. `%USERPROFILE%\.agentdeck\daemon.json`
|
|
44
|
+
* 2. `%USERPROFILE%\.agentdeck\daemon.json`
|
|
45
45
|
* 3. `9120` fallback
|
|
46
|
+
* There is no `/health` probe per hook: the payload goes straight to the
|
|
47
|
+
* daemon.json port and moves on to 9120 only when that connection is refused
|
|
48
|
+
* (nothing received it, so it is never delivered twice). The probe was an
|
|
49
|
+
* extra PowerShell round trip on every hook, before the hook did its work.
|
|
50
|
+
*
|
|
51
|
+
* `PreToolUse` and `Stop` are request-response as on POSIX: the daemon's body
|
|
52
|
+
* (device Allow/Deny, soft-STOP deny, queued directive) is written to stdout
|
|
53
|
+
* as raw UTF-8 within the POSIX `--max-time` bounds (60 s / 10 s). The earlier
|
|
54
|
+
* script piped every response to `Out-Null` with a 2 s timeout, so on Windows
|
|
55
|
+
* no device decision, deck STOP or queued directive ever reached Claude.
|
|
56
|
+
* The request bypasses proxy auto-detection and `Expect: 100-continue`.
|
|
46
57
|
*
|
|
47
58
|
* Errors are swallowed and the exit code is always 0 so a dead daemon never
|
|
48
59
|
* blocks or fails the host session.
|
|
49
60
|
*/
|
|
50
|
-
export declare const WINDOWS_HOOK_SCRIPT = "# AgentDeck -> Claude Code hook bridge. Generated by @agentdeck/hooks; edits are overwritten.\n# Invoked as: powershell -NoProfile -ExecutionPolicy Bypass -File \"<this file>\" -HookEvent <EventName>\n#\n# Must be a script file, NOT an inline -Command: Claude Code runs hook commands\n# through Git Bash (sh -c) on Windows, which expands $var references away before\n# PowerShell sees them.\nparam([Parameter(Mandatory = $true)][ValidatePattern('^[A-Za-z_]+$')][string]$HookEvent)\n\n$ErrorActionPreference = 'SilentlyContinue'\n\n$port =
|
|
61
|
+
export declare const WINDOWS_HOOK_SCRIPT = "# AgentDeck -> Claude Code hook bridge. Generated by @agentdeck/hooks; edits are overwritten.\n# Invoked as: powershell -NoProfile -ExecutionPolicy Bypass -File \"<this file>\" -HookEvent <EventName>\n#\n# Must be a script file, NOT an inline -Command: Claude Code runs hook commands\n# through Git Bash (sh -c) on Windows, which expands $var references away before\n# PowerShell sees them.\nparam([Parameter(Mandatory = $true)][ValidatePattern('^[A-Za-z_]+$')][string]$HookEvent)\n\n$ErrorActionPreference = 'SilentlyContinue'\n\n# PreToolUse and Stop are request-response, as in the POSIX hook: the daemon's\n# answer (a device Allow/Deny, a soft-STOP deny, a queued deck directive) is\n# written to stdout for Claude Code, bounded like the POSIX curl --max-time\n# (60 s / 10 s). Every other event is fire-and-forget: bounded like --max-time\n# 0.8, nothing printed.\n$timeoutMs = 800\n$respond = $false\nif ($HookEvent -ceq 'PreToolUse') { $timeoutMs = 60000; $respond = $true }\nelseif ($HookEvent -ceq 'Stop') { $timeoutMs = 10000; $respond = $true }\n\n# Ports in the order tried. $env:AGENTDECK_PORT alone when it is valid;\n# otherwise the daemon.json port, then 9120. No /health probe first: the next\n# port is tried only when a connection is refused, which proves nothing\n# received the payload, so it is never delivered twice.\n$ports = @()\n$candidate = 0\nif ([int]::TryParse([string]$env:AGENTDECK_PORT, [ref]$candidate) -and $candidate -ge 1 -and $candidate -le 65535) {\n $ports = @($candidate)\n} else {\n $f = Join-Path $env:USERPROFILE '.agentdeck\\daemon.json'\n if (Test-Path $f) {\n try {\n $d = Get-Content -Raw $f | ConvertFrom-Json\n $raw = if ($d.httpPort) { $d.httpPort } else { $d.port }\n $candidate = 0\n if ([int]::TryParse([string]$raw, [ref]$candidate) -and $candidate -ge 1 -and $candidate -le 65535) { $ports += $candidate }\n } catch {}\n }\n if ($ports -notcontains 9120) { $ports += 9120 }\n}\n\n# Read stdin as UTF-8: [Console]::In decodes piped stdin with the console OEM\n# codepage (e.g. CP949), garbling non-ASCII payload text.\n$body = (New-Object System.IO.StreamReader([Console]::OpenStandardInput(), [System.Text.Encoding]::UTF8)).ReadToEnd()\n# Post UTF-8 bytes with an explicit charset; the daemon reads them as sent.\n$bytes = [System.Text.Encoding]::UTF8.GetBytes([string]$body)\n\n# A loopback POST needs no proxy: system proxy auto-detection (WPAD) and the\n# Expect: 100-continue wait can each add seconds before the request is sent.\ntry { [System.Net.WebRequest]::DefaultWebProxy = $null } catch {}\ntry { [System.Net.ServicePointManager]::Expect100Continue = $false } catch {}\n\nforeach ($port in $ports) {\n try {\n $req = [System.Net.HttpWebRequest]::Create('http://127.0.0.1:' + $port + '/hooks/' + $HookEvent)\n $req.Method = 'POST'\n $req.Proxy = $null\n $req.ContentType = 'application/json; charset=utf-8'\n $req.Timeout = $timeoutMs\n $req.ReadWriteTimeout = $timeoutMs\n $req.ContentLength = $bytes.Length\n $stream = $req.GetRequestStream()\n $stream.Write($bytes, 0, $bytes.Length)\n $stream.Close()\n $resp = $req.GetResponse()\n if ($respond) {\n # Pass the daemon's UTF-8 bytes through unchanged: a console encoding\n # would turn a non-ASCII directive or reason into '?'.\n $buffer = New-Object System.IO.MemoryStream\n $resp.GetResponseStream().CopyTo($buffer)\n $out = $buffer.ToArray()\n if ($out.Length -gt 0) {\n $stdout = [Console]::OpenStandardOutput()\n $stdout.Write($out, 0, $out.Length)\n $stdout.Flush()\n }\n }\n $resp.Close()\n break\n } catch {\n # Only a refused connection moves on to the next port. A timeout, an HTTP\n # error or anything else ends the hook: the daemon may have the payload.\n $e = $_.Exception\n $refused = $false\n while ($e) {\n if ($e -is [System.Net.WebException] -and $e.Status -eq [System.Net.WebExceptionStatus]::ConnectFailure) { $refused = $true }\n if ($e -is [System.Net.Sockets.SocketException] -and $e.SocketErrorCode -eq [System.Net.Sockets.SocketError]::ConnectionRefused) { $refused = $true }\n $e = $e.InnerException\n }\n if (-not $refused) { break }\n }\n}\n\n# Never block or fail the tool call.\nexit 0\n";
|
|
51
62
|
/** Where the Windows hook script is installed. */
|
|
52
63
|
export declare function windowsHookScriptPath(home?: string): string;
|
|
53
64
|
/**
|
|
@@ -62,6 +73,74 @@ export declare function ensureWindowsHookScript(home?: string): string;
|
|
|
62
73
|
* nothing to expand. See WINDOWS_HOOK_SCRIPT for why that matters.
|
|
63
74
|
*/
|
|
64
75
|
export declare function buildHookCommandWin(eventName: string, home?: string): string;
|
|
76
|
+
/**
|
|
77
|
+
* The status line is Claude Code's one documented carrier of the claude.ai
|
|
78
|
+
* subscription windows (`rate_limits.five_hour` / `seven_day`), so AgentDeck
|
|
79
|
+
* installs a status-line command that forwards Claude's status document to the
|
|
80
|
+
* local daemon (`/claude/statusline`) and then runs whatever status line the
|
|
81
|
+
* user already had, unchanged. Byte-identical with `@agentdeck/setup`'s
|
|
82
|
+
* inlined copy and Swift `HookInstaller.buildStatuslineRelayCommand` — change
|
|
83
|
+
* all three together. Rules for what the daemon does with the document:
|
|
84
|
+
* `shared/src/claude-statusline.ts`.
|
|
85
|
+
*
|
|
86
|
+
* Two things this snippet does differently from the hook snippet, on purpose:
|
|
87
|
+
* it never reads `$AGENTDECK_PORT` (a managed session bridge does not serve the
|
|
88
|
+
* route — the account gauge belongs to the daemon), and it is fire-and-forget
|
|
89
|
+
* only, bounded like a telemetry hook: Claude Code cancels a status-line
|
|
90
|
+
* script the moment the next update arrives, so a hung curl costs a missed
|
|
91
|
+
* repaint, never a stalled TUI. The wrapped command receives the same stdin
|
|
92
|
+
* document through `printf '%s' "$I" |`.
|
|
93
|
+
*/
|
|
94
|
+
export declare const STATUSLINE_RELAY_MARKER = "/claude/statusline";
|
|
95
|
+
export declare function buildStatuslineRelayCommand(original?: string | null): string;
|
|
96
|
+
/**
|
|
97
|
+
* The Windows relay body, shipped as a script file for the reason
|
|
98
|
+
* WINDOWS_HOOK_SCRIPT documents: with Git Bash installed, Claude Code runs the
|
|
99
|
+
* command through `sh -c`, which expands `$name` before PowerShell parses it. The
|
|
100
|
+
* user's own status-line command travels as base64 (`-OriginalB64`) for the
|
|
101
|
+
* same reason — nothing on the command line for `sh` to expand or quote — and
|
|
102
|
+
* is run through Git Bash when available, otherwise PowerShell, matching
|
|
103
|
+
* Claude Code's documented Windows shell selection with the same stdin.
|
|
104
|
+
* Mirrored byte-identically in `setup/src/setup.ts`.
|
|
105
|
+
*/
|
|
106
|
+
export declare const WINDOWS_STATUSLINE_SCRIPT = "# AgentDeck -> Claude Code status-line relay. Generated by @agentdeck/hooks; edits are overwritten.\n# Invoked as: powershell -NoProfile -ExecutionPolicy Bypass -File \"<this file>\" [-OriginalB64 <base64 of your own status-line command>]\n#\n# Must be a script file, NOT an inline -Command, for the reason agentdeck-hook.ps1\n# documents: when installed, Git Bash (sh -c) expands $var references before\n# PowerShell sees them. Your own command travels as\n# base64 for the same reason.\nparam([ValidatePattern('^[A-Za-z0-9+/=]*$')][string]$OriginalB64 = '')\n\n$ErrorActionPreference = 'SilentlyContinue'\ntry { [Console]::OutputEncoding = New-Object System.Text.UTF8Encoding($false) } catch {}\n\n# Read stdin as UTF-8: [Console]::In decodes piped stdin with the console OEM\n# codepage (e.g. CP949), garbling non-ASCII payload text.\n$body = (New-Object System.IO.StreamReader([Console]::OpenStandardInput(), [System.Text.Encoding]::UTF8)).ReadToEnd()\n\n$port = 0\n$f = Join-Path $env:USERPROFILE '.agentdeck\\daemon.json'\nif (Test-Path $f) {\n try {\n $d = Get-Content -Raw $f | ConvertFrom-Json\n $raw = if ($d.httpPort) { $d.httpPort } else { $d.port }\n $candidate = 0\n if ([int]::TryParse([string]$raw, [ref]$candidate) -and $candidate -ge 1 -and $candidate -le 65535) {\n try {\n Invoke-RestMethod -Uri ('http://127.0.0.1:' + $candidate + '/health') -TimeoutSec 1 -ErrorAction Stop | Out-Null\n $port = $candidate\n } catch {}\n }\n } catch {}\n}\nif (-not $port) { $port = 9120 }\n\n# Post UTF-8 bytes; the daemon keeps only rate_limits (shared/src/claude-statusline.ts).\n$bytes = [System.Text.Encoding]::UTF8.GetBytes([string]$body)\ntry {\n Invoke-RestMethod -Uri ('http://127.0.0.1:' + $port + '/claude/statusline') -Method Post -Body $bytes -ContentType 'application/json; charset=utf-8' -TimeoutSec 2 -ErrorAction Stop | Out-Null\n} catch {}\n\n# Your own status line, when one was wrapped: the same document on its stdin,\n# its output is what Claude Code shows. Match Claude Code's Windows shell choice:\n# Git Bash when available, otherwise the PowerShell running this relay.\nif ($OriginalB64) {\n $script = $null\n try {\n $original = [System.Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($OriginalB64))\n $sh = $env:CLAUDE_CODE_GIT_BASH_PATH\n if (-not $sh -or -not (Test-Path $sh)) { $sh = (Get-Command bash -ErrorAction SilentlyContinue).Source }\n $psi = New-Object System.Diagnostics.ProcessStartInfo\n if ($sh) {\n $script = [System.IO.Path]::GetTempFileName()\n [System.IO.File]::WriteAllText($script, $original, (New-Object System.Text.UTF8Encoding($false)))\n $psi.FileName = $sh\n $psi.Arguments = '\"' + $script.Replace('\\', '/') + '\"'\n } else {\n $psi.FileName = [System.Diagnostics.Process]::GetCurrentProcess().MainModule.FileName\n # PowerShell captures its stdin reader before running a command that uses\n # the input variable. Parse the user's command after selecting UTF-8 and\n # feed that pipeline explicitly; leave raw stdin untouched otherwise.\n $command = @'\n[Console]::InputEncoding = New-Object System.Text.UTF8Encoding($false)\n[Console]::OutputEncoding = New-Object System.Text.UTF8Encoding($false)\n$OutputEncoding = [Console]::OutputEncoding\n$userCommand = [ScriptBlock]::Create([System.Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('__AGENTDECK_ORIGINAL__')))\n$usesInput = $userCommand.Ast.Find({\n param($node)\n $node -is [System.Management.Automation.Language.VariableExpressionAst] -and\n $node.VariablePath.IsVariable -and\n $node.VariablePath.UserPath -match '^(?:variable:)?(?:(?:global|local|script|private):)?input$'\n}, $false)\nif ($usesInput) {\n & { while (($line = [Console]::In.ReadLine()) -ne $null) { $line } } | & $userCommand\n} else {\n & $userCommand\n}\n'@\n $command = $command.Replace('__AGENTDECK_ORIGINAL__', $OriginalB64)\n $psi.Arguments = '-NoProfile -ExecutionPolicy Bypass -EncodedCommand ' + [Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes($command))\n }\n $psi.UseShellExecute = $false\n $psi.CreateNoWindow = $true\n $psi.RedirectStandardInput = $true\n $psi.RedirectStandardOutput = $true\n $psi.StandardOutputEncoding = [System.Text.Encoding]::UTF8\n $p = [System.Diagnostics.Process]::Start($psi)\n $stdin = New-Object System.IO.StreamWriter($p.StandardInput.BaseStream, (New-Object System.Text.UTF8Encoding($false)))\n $stdin.Write($body)\n $stdin.Close()\n $out = $p.StandardOutput.ReadToEnd()\n $p.WaitForExit()\n [Console]::Out.Write($out)\n } catch {} finally {\n if ($script) { Remove-Item $script -Force }\n }\n}\n\n# Never block or fail the status line.\nexit 0\n";
|
|
107
|
+
/** Where the Windows relay script is installed. */
|
|
108
|
+
export declare function windowsStatuslineScriptPath(home?: string): string;
|
|
109
|
+
/** Write the Windows relay script, creating `~/.agentdeck` if needed. Idempotent. */
|
|
110
|
+
export declare function ensureWindowsStatuslineScript(home?: string): string;
|
|
111
|
+
/**
|
|
112
|
+
* Windows variant: invoke `agentdeck-statusline.ps1` by path, the user's own
|
|
113
|
+
* command riding as base64. The command line carries no `$` and no quote the
|
|
114
|
+
* POSIX shell Claude Code spawns it through could misread.
|
|
115
|
+
*/
|
|
116
|
+
export declare function buildStatuslineRelayCommandWin(original?: string | null, home?: string): string;
|
|
117
|
+
export declare function isAgentDeckStatuslineCommand(command: unknown): boolean;
|
|
118
|
+
/**
|
|
119
|
+
* The user's own command inside an AgentDeck relay: their text verbatim, `''`
|
|
120
|
+
* when the relay was installed alone, `null` when the command is not ours.
|
|
121
|
+
*/
|
|
122
|
+
export declare function unwrapStatuslineCommand(command: unknown): string | null;
|
|
123
|
+
/**
|
|
124
|
+
* `auto` wraps a status line the user already has and installs nothing
|
|
125
|
+
* otherwise; `on` installs the relay even with no status line — which makes
|
|
126
|
+
* Claude Code hide its footer hints (`esc to interrupt`, `? for shortcuts`,
|
|
127
|
+
* voice), so it is never the default; `off` removes an installed relay
|
|
128
|
+
* (restoring the user's own status line) and never installs one.
|
|
129
|
+
*/
|
|
130
|
+
export type StatuslinePolicy = 'auto' | 'on' | 'off';
|
|
131
|
+
export declare function statuslinePolicyFromEnv(env?: NodeJS.ProcessEnv): StatuslinePolicy;
|
|
132
|
+
export interface StatuslineApplyResult {
|
|
133
|
+
installed: boolean;
|
|
134
|
+
/** True when a user command runs inside the relay. */
|
|
135
|
+
wrapped: boolean;
|
|
136
|
+
reason?: string;
|
|
137
|
+
}
|
|
138
|
+
/** Pure logic: install or refresh the relay in a settings object (no file I/O). */
|
|
139
|
+
export declare function applyStatuslineRelay(settings: any, policy?: StatuslinePolicy, platform?: NodeJS.Platform, home?: string): StatuslineApplyResult;
|
|
140
|
+
/** Pure logic: take the relay out again, restoring the user's own command verbatim. */
|
|
141
|
+
export declare function removeStatuslineRelay(settings: any): boolean;
|
|
142
|
+
/** Pure logic: keep an installed relay on the current snippet. Never installs one. */
|
|
143
|
+
export declare function refreshStatuslineRelay(settings: any, platform?: NodeJS.Platform, home?: string): boolean;
|
|
65
144
|
export declare const KIRO_HOOK_EVENTS: readonly [readonly ["SessionStart", "kiro_session_start"], readonly ["UserPromptSubmit", "kiro_user_prompt_submit"], readonly ["PreToolUse", "kiro_tool_start"], readonly ["PostToolUse", "kiro_tool_end"], readonly ["Stop", "kiro_stop"]];
|
|
66
145
|
export interface KiroHookInstallResult {
|
|
67
146
|
installed: boolean;
|
|
@@ -145,8 +224,12 @@ export declare function claudeSettingsPaths(home?: string): {
|
|
|
145
224
|
* keys there.
|
|
146
225
|
*/
|
|
147
226
|
export declare function sweepLegacyHooks(home?: string): boolean;
|
|
227
|
+
export interface InstallHooksOptions {
|
|
228
|
+
/** Claude status-line relay policy; `AGENTDECK_STATUSLINE=1|0` is the default. See `StatuslinePolicy`. */
|
|
229
|
+
statusline?: StatuslinePolicy;
|
|
230
|
+
}
|
|
148
231
|
/** File-system wrapper: install hooks into ~/.claude/settings.json */
|
|
149
|
-
export declare function installHooks(home?: string): void;
|
|
232
|
+
export declare function installHooks(home?: string, opts?: InstallHooksOptions): void;
|
|
150
233
|
/** File-system wrapper: uninstall hooks from ~/.claude/settings.json (and the legacy file) */
|
|
151
234
|
export declare function uninstallHooks(home?: string): void;
|
|
152
235
|
/** File-system wrapper: migrate old hook formats in ~/.claude/settings.json.
|
package/dist/install.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAOjF,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,IAAI,qBAAqB,EACzC,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,cAAc,IAAI,mBAAmB,EAAE,aAAa,IAAI,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAIrH,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE3F,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
|
package/dist/install.js
CHANGED
|
@@ -17,6 +17,11 @@ export const HOOK_EVENTS = [
|
|
|
17
17
|
'PostToolUseFailure',
|
|
18
18
|
'Stop',
|
|
19
19
|
'Notification',
|
|
20
|
+
// Display-only: Claude Code runs it the moment it is about to show its
|
|
21
|
+
// permission dialog, ~6 s before the `permission_prompt` Notification. The
|
|
22
|
+
// command is the fire-and-forget form and prints nothing, so it never
|
|
23
|
+
// decides the prompt (empty stdout = no decision, the dialog shows).
|
|
24
|
+
'PermissionRequest',
|
|
20
25
|
'UserPromptSubmit',
|
|
21
26
|
'SubagentStart',
|
|
22
27
|
'SubagentStop',
|
|
@@ -93,7 +98,9 @@ export function buildHookCommand(eventName) {
|
|
|
93
98
|
// (Claude's `getSessionEndHookTimeoutMs()` floor), and a daemon that is
|
|
94
99
|
// restarting holds the socket open without replying. An unbounded curl there
|
|
95
100
|
// gets killed mid-flight and Claude prints `SessionEnd hook [...] failed:
|
|
96
|
-
// Hook cancelled` on exit.
|
|
101
|
+
// Hook cancelled` on exit. `PermissionRequest` belongs here on purpose: it
|
|
102
|
+
// is a display signal, and Claude Code waits for it before drawing the
|
|
103
|
+
// dialog, so it must return at once and print nothing (no decision).
|
|
97
104
|
return preamble.concat([
|
|
98
105
|
`curl -sf --connect-timeout 0.2 --max-time 0.8 -X POST "http://127.0.0.1:$PORT/hooks/${eventName}" -H 'Content-Type: application/json' -H "X-AgentDeck-Pid: $PPID" -d @- >/dev/null 2>&1 || true`,
|
|
99
106
|
]).join('\n');
|
|
@@ -113,8 +120,19 @@ export function buildHookCommand(eventName) {
|
|
|
113
120
|
* Port discovery matches the POSIX snippet, minus the macOS App Store sandbox
|
|
114
121
|
* containers which do not exist on Windows:
|
|
115
122
|
* 1. `$env:AGENTDECK_PORT`
|
|
116
|
-
* 2. `%USERPROFILE%\.agentdeck\daemon.json`
|
|
123
|
+
* 2. `%USERPROFILE%\.agentdeck\daemon.json`
|
|
117
124
|
* 3. `9120` fallback
|
|
125
|
+
* There is no `/health` probe per hook: the payload goes straight to the
|
|
126
|
+
* daemon.json port and moves on to 9120 only when that connection is refused
|
|
127
|
+
* (nothing received it, so it is never delivered twice). The probe was an
|
|
128
|
+
* extra PowerShell round trip on every hook, before the hook did its work.
|
|
129
|
+
*
|
|
130
|
+
* `PreToolUse` and `Stop` are request-response as on POSIX: the daemon's body
|
|
131
|
+
* (device Allow/Deny, soft-STOP deny, queued directive) is written to stdout
|
|
132
|
+
* as raw UTF-8 within the POSIX `--max-time` bounds (60 s / 10 s). The earlier
|
|
133
|
+
* script piped every response to `Out-Null` with a 2 s timeout, so on Windows
|
|
134
|
+
* no device decision, deck STOP or queued directive ever reached Claude.
|
|
135
|
+
* The request bypasses proxy auto-detection and `Expect: 100-continue`.
|
|
118
136
|
*
|
|
119
137
|
* Errors are swallowed and the exit code is always 0 so a dead daemon never
|
|
120
138
|
* blocks or fails the host session.
|
|
@@ -129,39 +147,88 @@ param([Parameter(Mandatory = \$true)][ValidatePattern('^[A-Za-z_]+\$')][string]\
|
|
|
129
147
|
|
|
130
148
|
\$ErrorActionPreference = 'SilentlyContinue'
|
|
131
149
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
150
|
+
# PreToolUse and Stop are request-response, as in the POSIX hook: the daemon's
|
|
151
|
+
# answer (a device Allow/Deny, a soft-STOP deny, a queued deck directive) is
|
|
152
|
+
# written to stdout for Claude Code, bounded like the POSIX curl --max-time
|
|
153
|
+
# (60 s / 10 s). Every other event is fire-and-forget: bounded like --max-time
|
|
154
|
+
# 0.8, nothing printed.
|
|
155
|
+
\$timeoutMs = 800
|
|
156
|
+
\$respond = \$false
|
|
157
|
+
if (\$HookEvent -ceq 'PreToolUse') { \$timeoutMs = 60000; \$respond = \$true }
|
|
158
|
+
elseif (\$HookEvent -ceq 'Stop') { \$timeoutMs = 10000; \$respond = \$true }
|
|
136
159
|
|
|
137
|
-
|
|
160
|
+
# Ports in the order tried. \$env:AGENTDECK_PORT alone when it is valid;
|
|
161
|
+
# otherwise the daemon.json port, then 9120. No /health probe first: the next
|
|
162
|
+
# port is tried only when a connection is refused, which proves nothing
|
|
163
|
+
# received the payload, so it is never delivered twice.
|
|
164
|
+
\$ports = @()
|
|
165
|
+
\$candidate = 0
|
|
166
|
+
if ([int]::TryParse([string]\$env:AGENTDECK_PORT, [ref]\$candidate) -and \$candidate -ge 1 -and \$candidate -le 65535) {
|
|
167
|
+
\$ports = @(\$candidate)
|
|
168
|
+
} else {
|
|
138
169
|
\$f = Join-Path \$env:USERPROFILE '.agentdeck\\daemon.json'
|
|
139
170
|
if (Test-Path \$f) {
|
|
140
171
|
try {
|
|
141
172
|
\$d = Get-Content -Raw \$f | ConvertFrom-Json
|
|
142
173
|
\$raw = if (\$d.httpPort) { \$d.httpPort } else { \$d.port }
|
|
143
174
|
\$candidate = 0
|
|
144
|
-
if ([int]::TryParse([string]\$raw, [ref]\$candidate) -and \$candidate -ge 1 -and \$candidate -le 65535) {
|
|
145
|
-
try {
|
|
146
|
-
Invoke-RestMethod -Uri ('http://127.0.0.1:' + \$candidate + '/health') -TimeoutSec 1 -ErrorAction Stop | Out-Null
|
|
147
|
-
\$port = \$candidate
|
|
148
|
-
} catch {}
|
|
149
|
-
}
|
|
175
|
+
if ([int]::TryParse([string]\$raw, [ref]\$candidate) -and \$candidate -ge 1 -and \$candidate -le 65535) { \$ports += \$candidate }
|
|
150
176
|
} catch {}
|
|
151
177
|
}
|
|
178
|
+
if (\$ports -notcontains 9120) { \$ports += 9120 }
|
|
152
179
|
}
|
|
153
|
-
if (-not \$port) { \$port = 9120 }
|
|
154
180
|
|
|
155
181
|
# Read stdin as UTF-8: [Console]::In decodes piped stdin with the console OEM
|
|
156
182
|
# codepage (e.g. CP949), garbling non-ASCII payload text.
|
|
157
183
|
\$body = (New-Object System.IO.StreamReader([Console]::OpenStandardInput(), [System.Text.Encoding]::UTF8)).ReadToEnd()
|
|
158
|
-
# Post UTF-8 bytes
|
|
159
|
-
# the content type carries no charset, replacing non-ASCII characters with '?'.
|
|
184
|
+
# Post UTF-8 bytes with an explicit charset; the daemon reads them as sent.
|
|
160
185
|
\$bytes = [System.Text.Encoding]::UTF8.GetBytes([string]\$body)
|
|
161
186
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
} catch {}
|
|
187
|
+
# A loopback POST needs no proxy: system proxy auto-detection (WPAD) and the
|
|
188
|
+
# Expect: 100-continue wait can each add seconds before the request is sent.
|
|
189
|
+
try { [System.Net.WebRequest]::DefaultWebProxy = \$null } catch {}
|
|
190
|
+
try { [System.Net.ServicePointManager]::Expect100Continue = \$false } catch {}
|
|
191
|
+
|
|
192
|
+
foreach (\$port in \$ports) {
|
|
193
|
+
try {
|
|
194
|
+
\$req = [System.Net.HttpWebRequest]::Create('http://127.0.0.1:' + \$port + '/hooks/' + \$HookEvent)
|
|
195
|
+
\$req.Method = 'POST'
|
|
196
|
+
\$req.Proxy = \$null
|
|
197
|
+
\$req.ContentType = 'application/json; charset=utf-8'
|
|
198
|
+
\$req.Timeout = \$timeoutMs
|
|
199
|
+
\$req.ReadWriteTimeout = \$timeoutMs
|
|
200
|
+
\$req.ContentLength = \$bytes.Length
|
|
201
|
+
\$stream = \$req.GetRequestStream()
|
|
202
|
+
\$stream.Write(\$bytes, 0, \$bytes.Length)
|
|
203
|
+
\$stream.Close()
|
|
204
|
+
\$resp = \$req.GetResponse()
|
|
205
|
+
if (\$respond) {
|
|
206
|
+
# Pass the daemon's UTF-8 bytes through unchanged: a console encoding
|
|
207
|
+
# would turn a non-ASCII directive or reason into '?'.
|
|
208
|
+
\$buffer = New-Object System.IO.MemoryStream
|
|
209
|
+
\$resp.GetResponseStream().CopyTo(\$buffer)
|
|
210
|
+
\$out = \$buffer.ToArray()
|
|
211
|
+
if (\$out.Length -gt 0) {
|
|
212
|
+
\$stdout = [Console]::OpenStandardOutput()
|
|
213
|
+
\$stdout.Write(\$out, 0, \$out.Length)
|
|
214
|
+
\$stdout.Flush()
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
\$resp.Close()
|
|
218
|
+
break
|
|
219
|
+
} catch {
|
|
220
|
+
# Only a refused connection moves on to the next port. A timeout, an HTTP
|
|
221
|
+
# error or anything else ends the hook: the daemon may have the payload.
|
|
222
|
+
\$e = \$_.Exception
|
|
223
|
+
\$refused = \$false
|
|
224
|
+
while (\$e) {
|
|
225
|
+
if (\$e -is [System.Net.WebException] -and \$e.Status -eq [System.Net.WebExceptionStatus]::ConnectFailure) { \$refused = \$true }
|
|
226
|
+
if (\$e -is [System.Net.Sockets.SocketException] -and \$e.SocketErrorCode -eq [System.Net.Sockets.SocketError]::ConnectionRefused) { \$refused = \$true }
|
|
227
|
+
\$e = \$e.InnerException
|
|
228
|
+
}
|
|
229
|
+
if (-not \$refused) { break }
|
|
230
|
+
}
|
|
231
|
+
}
|
|
165
232
|
|
|
166
233
|
# Never block or fail the tool call.
|
|
167
234
|
exit 0
|
|
@@ -192,6 +259,269 @@ export function buildHookCommandWin(eventName, home = homedir()) {
|
|
|
192
259
|
const script = windowsHookScriptPath(home);
|
|
193
260
|
return `powershell -NoProfile -ExecutionPolicy Bypass -File "${script}" -HookEvent ${eventName}`;
|
|
194
261
|
}
|
|
262
|
+
// ===== Claude Code status-line relay =====
|
|
263
|
+
/**
|
|
264
|
+
* The status line is Claude Code's one documented carrier of the claude.ai
|
|
265
|
+
* subscription windows (`rate_limits.five_hour` / `seven_day`), so AgentDeck
|
|
266
|
+
* installs a status-line command that forwards Claude's status document to the
|
|
267
|
+
* local daemon (`/claude/statusline`) and then runs whatever status line the
|
|
268
|
+
* user already had, unchanged. Byte-identical with `@agentdeck/setup`'s
|
|
269
|
+
* inlined copy and Swift `HookInstaller.buildStatuslineRelayCommand` — change
|
|
270
|
+
* all three together. Rules for what the daemon does with the document:
|
|
271
|
+
* `shared/src/claude-statusline.ts`.
|
|
272
|
+
*
|
|
273
|
+
* Two things this snippet does differently from the hook snippet, on purpose:
|
|
274
|
+
* it never reads `$AGENTDECK_PORT` (a managed session bridge does not serve the
|
|
275
|
+
* route — the account gauge belongs to the daemon), and it is fire-and-forget
|
|
276
|
+
* only, bounded like a telemetry hook: Claude Code cancels a status-line
|
|
277
|
+
* script the moment the next update arrives, so a hung curl costs a missed
|
|
278
|
+
* repaint, never a stalled TUI. The wrapped command receives the same stdin
|
|
279
|
+
* document through `printf '%s' "$I" |`.
|
|
280
|
+
*/
|
|
281
|
+
export const STATUSLINE_RELAY_MARKER = '/claude/statusline';
|
|
282
|
+
const STATUSLINE_RELAY_HEADER = '# AgentDeck status-line relay v1 — forwards Claude Code rate_limits to the local daemon; the status line you had runs below, unchanged.';
|
|
283
|
+
const STATUSLINE_WRAP_OPEN = `printf '%s' "$I" | {`;
|
|
284
|
+
export function buildStatuslineRelayCommand(original) {
|
|
285
|
+
const lines = [
|
|
286
|
+
STATUSLINE_RELAY_HEADER,
|
|
287
|
+
`I=$(cat)`,
|
|
288
|
+
`PORT=""`,
|
|
289
|
+
`for F in "$HOME/.agentdeck/daemon.json" "$HOME/Library/Containers/bound.serendipity.agent.deck/Data/Library/Application Support/AgentDeck/daemon.json" "$HOME/Library/Group Containers/group.bound.serendipity.agent.deck/daemon.json"; do`,
|
|
290
|
+
` [ -f "$F" ] || continue`,
|
|
291
|
+
` P=$(python3 -c "import json,sys,signal;signal.signal(signal.SIGALRM,lambda *_:sys.exit(0));signal.setitimer(signal.ITIMER_REAL,0.2);d=json.load(open(sys.argv[1]));p=d.get('httpPort') or d.get('port');print(p if type(p) is int and 1 <= p <= 65535 else '')" "$F" 2>/dev/null)`,
|
|
292
|
+
` [ -n "$P" ] && curl -sf --connect-timeout 0.2 --max-time 0.3 "http://127.0.0.1:$P/health" >/dev/null 2>&1 && { PORT="$P"; break; }`,
|
|
293
|
+
`done`,
|
|
294
|
+
`PORT="\${PORT:-9120}"`,
|
|
295
|
+
`printf '%s' "$I" | curl -sf --connect-timeout 0.2 --max-time 0.8 -X POST "http://127.0.0.1:$PORT/claude/statusline" -H 'Content-Type: application/json' -H "X-AgentDeck-Pid: $PPID" -d @- >/dev/null 2>&1 || true`,
|
|
296
|
+
];
|
|
297
|
+
const own = original?.trim();
|
|
298
|
+
if (own)
|
|
299
|
+
lines.push(STATUSLINE_WRAP_OPEN, own, `}`);
|
|
300
|
+
return lines.join('\n');
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* The Windows relay body, shipped as a script file for the reason
|
|
304
|
+
* WINDOWS_HOOK_SCRIPT documents: with Git Bash installed, Claude Code runs the
|
|
305
|
+
* command through `sh -c`, which expands `$name` before PowerShell parses it. The
|
|
306
|
+
* user's own status-line command travels as base64 (`-OriginalB64`) for the
|
|
307
|
+
* same reason — nothing on the command line for `sh` to expand or quote — and
|
|
308
|
+
* is run through Git Bash when available, otherwise PowerShell, matching
|
|
309
|
+
* Claude Code's documented Windows shell selection with the same stdin.
|
|
310
|
+
* Mirrored byte-identically in `setup/src/setup.ts`.
|
|
311
|
+
*/
|
|
312
|
+
export const WINDOWS_STATUSLINE_SCRIPT = `# AgentDeck -> Claude Code status-line relay. Generated by @agentdeck/hooks; edits are overwritten.
|
|
313
|
+
# Invoked as: powershell -NoProfile -ExecutionPolicy Bypass -File "<this file>" [-OriginalB64 <base64 of your own status-line command>]
|
|
314
|
+
#
|
|
315
|
+
# Must be a script file, NOT an inline -Command, for the reason agentdeck-hook.ps1
|
|
316
|
+
# documents: when installed, Git Bash (sh -c) expands \$var references before
|
|
317
|
+
# PowerShell sees them. Your own command travels as
|
|
318
|
+
# base64 for the same reason.
|
|
319
|
+
param([ValidatePattern('^[A-Za-z0-9+/=]*\$')][string]\$OriginalB64 = '')
|
|
320
|
+
|
|
321
|
+
\$ErrorActionPreference = 'SilentlyContinue'
|
|
322
|
+
try { [Console]::OutputEncoding = New-Object System.Text.UTF8Encoding(\$false) } catch {}
|
|
323
|
+
|
|
324
|
+
# Read stdin as UTF-8: [Console]::In decodes piped stdin with the console OEM
|
|
325
|
+
# codepage (e.g. CP949), garbling non-ASCII payload text.
|
|
326
|
+
\$body = (New-Object System.IO.StreamReader([Console]::OpenStandardInput(), [System.Text.Encoding]::UTF8)).ReadToEnd()
|
|
327
|
+
|
|
328
|
+
\$port = 0
|
|
329
|
+
\$f = Join-Path \$env:USERPROFILE '.agentdeck\\daemon.json'
|
|
330
|
+
if (Test-Path \$f) {
|
|
331
|
+
try {
|
|
332
|
+
\$d = Get-Content -Raw \$f | ConvertFrom-Json
|
|
333
|
+
\$raw = if (\$d.httpPort) { \$d.httpPort } else { \$d.port }
|
|
334
|
+
\$candidate = 0
|
|
335
|
+
if ([int]::TryParse([string]\$raw, [ref]\$candidate) -and \$candidate -ge 1 -and \$candidate -le 65535) {
|
|
336
|
+
try {
|
|
337
|
+
Invoke-RestMethod -Uri ('http://127.0.0.1:' + \$candidate + '/health') -TimeoutSec 1 -ErrorAction Stop | Out-Null
|
|
338
|
+
\$port = \$candidate
|
|
339
|
+
} catch {}
|
|
340
|
+
}
|
|
341
|
+
} catch {}
|
|
342
|
+
}
|
|
343
|
+
if (-not \$port) { \$port = 9120 }
|
|
344
|
+
|
|
345
|
+
# Post UTF-8 bytes; the daemon keeps only rate_limits (shared/src/claude-statusline.ts).
|
|
346
|
+
\$bytes = [System.Text.Encoding]::UTF8.GetBytes([string]\$body)
|
|
347
|
+
try {
|
|
348
|
+
Invoke-RestMethod -Uri ('http://127.0.0.1:' + \$port + '/claude/statusline') -Method Post -Body \$bytes -ContentType 'application/json; charset=utf-8' -TimeoutSec 2 -ErrorAction Stop | Out-Null
|
|
349
|
+
} catch {}
|
|
350
|
+
|
|
351
|
+
# Your own status line, when one was wrapped: the same document on its stdin,
|
|
352
|
+
# its output is what Claude Code shows. Match Claude Code's Windows shell choice:
|
|
353
|
+
# Git Bash when available, otherwise the PowerShell running this relay.
|
|
354
|
+
if (\$OriginalB64) {
|
|
355
|
+
\$script = \$null
|
|
356
|
+
try {
|
|
357
|
+
\$original = [System.Text.Encoding]::UTF8.GetString([Convert]::FromBase64String(\$OriginalB64))
|
|
358
|
+
\$sh = \$env:CLAUDE_CODE_GIT_BASH_PATH
|
|
359
|
+
if (-not \$sh -or -not (Test-Path \$sh)) { \$sh = (Get-Command bash -ErrorAction SilentlyContinue).Source }
|
|
360
|
+
\$psi = New-Object System.Diagnostics.ProcessStartInfo
|
|
361
|
+
if (\$sh) {
|
|
362
|
+
\$script = [System.IO.Path]::GetTempFileName()
|
|
363
|
+
[System.IO.File]::WriteAllText(\$script, \$original, (New-Object System.Text.UTF8Encoding(\$false)))
|
|
364
|
+
\$psi.FileName = \$sh
|
|
365
|
+
\$psi.Arguments = '"' + \$script.Replace('\\', '/') + '"'
|
|
366
|
+
} else {
|
|
367
|
+
\$psi.FileName = [System.Diagnostics.Process]::GetCurrentProcess().MainModule.FileName
|
|
368
|
+
# PowerShell captures its stdin reader before running a command that uses
|
|
369
|
+
# the input variable. Parse the user's command after selecting UTF-8 and
|
|
370
|
+
# feed that pipeline explicitly; leave raw stdin untouched otherwise.
|
|
371
|
+
\$command = @'
|
|
372
|
+
[Console]::InputEncoding = New-Object System.Text.UTF8Encoding(\$false)
|
|
373
|
+
[Console]::OutputEncoding = New-Object System.Text.UTF8Encoding(\$false)
|
|
374
|
+
\$OutputEncoding = [Console]::OutputEncoding
|
|
375
|
+
\$userCommand = [ScriptBlock]::Create([System.Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('__AGENTDECK_ORIGINAL__')))
|
|
376
|
+
\$usesInput = \$userCommand.Ast.Find({
|
|
377
|
+
param(\$node)
|
|
378
|
+
\$node -is [System.Management.Automation.Language.VariableExpressionAst] -and
|
|
379
|
+
\$node.VariablePath.IsVariable -and
|
|
380
|
+
\$node.VariablePath.UserPath -match '^(?:variable:)?(?:(?:global|local|script|private):)?input\$'
|
|
381
|
+
}, \$false)
|
|
382
|
+
if (\$usesInput) {
|
|
383
|
+
& { while ((\$line = [Console]::In.ReadLine()) -ne \$null) { \$line } } | & \$userCommand
|
|
384
|
+
} else {
|
|
385
|
+
& \$userCommand
|
|
386
|
+
}
|
|
387
|
+
'@
|
|
388
|
+
\$command = \$command.Replace('__AGENTDECK_ORIGINAL__', \$OriginalB64)
|
|
389
|
+
\$psi.Arguments = '-NoProfile -ExecutionPolicy Bypass -EncodedCommand ' + [Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes(\$command))
|
|
390
|
+
}
|
|
391
|
+
\$psi.UseShellExecute = \$false
|
|
392
|
+
\$psi.CreateNoWindow = \$true
|
|
393
|
+
\$psi.RedirectStandardInput = \$true
|
|
394
|
+
\$psi.RedirectStandardOutput = \$true
|
|
395
|
+
\$psi.StandardOutputEncoding = [System.Text.Encoding]::UTF8
|
|
396
|
+
\$p = [System.Diagnostics.Process]::Start(\$psi)
|
|
397
|
+
\$stdin = New-Object System.IO.StreamWriter(\$p.StandardInput.BaseStream, (New-Object System.Text.UTF8Encoding(\$false)))
|
|
398
|
+
\$stdin.Write(\$body)
|
|
399
|
+
\$stdin.Close()
|
|
400
|
+
\$out = \$p.StandardOutput.ReadToEnd()
|
|
401
|
+
\$p.WaitForExit()
|
|
402
|
+
[Console]::Out.Write(\$out)
|
|
403
|
+
} catch {} finally {
|
|
404
|
+
if (\$script) { Remove-Item \$script -Force }
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
# Never block or fail the status line.
|
|
409
|
+
exit 0
|
|
410
|
+
`;
|
|
411
|
+
/** Where the Windows relay script is installed. */
|
|
412
|
+
export function windowsStatuslineScriptPath(home = homedir()) {
|
|
413
|
+
return join(home, '.agentdeck', 'agentdeck-statusline.ps1');
|
|
414
|
+
}
|
|
415
|
+
/** Write the Windows relay script, creating `~/.agentdeck` if needed. Idempotent. */
|
|
416
|
+
export function ensureWindowsStatuslineScript(home = homedir()) {
|
|
417
|
+
const path = windowsStatuslineScriptPath(home);
|
|
418
|
+
mkdirSync(join(home, '.agentdeck'), { recursive: true });
|
|
419
|
+
if (!existsSync(path) || readFileSync(path, 'utf-8') !== WINDOWS_STATUSLINE_SCRIPT) {
|
|
420
|
+
writeFileSync(path, WINDOWS_STATUSLINE_SCRIPT);
|
|
421
|
+
}
|
|
422
|
+
return path;
|
|
423
|
+
}
|
|
424
|
+
/**
|
|
425
|
+
* Windows variant: invoke `agentdeck-statusline.ps1` by path, the user's own
|
|
426
|
+
* command riding as base64. The command line carries no `$` and no quote the
|
|
427
|
+
* POSIX shell Claude Code spawns it through could misread.
|
|
428
|
+
*/
|
|
429
|
+
export function buildStatuslineRelayCommandWin(original, home = homedir()) {
|
|
430
|
+
const base = `powershell -NoProfile -ExecutionPolicy Bypass -File "${windowsStatuslineScriptPath(home)}"`;
|
|
431
|
+
const own = original?.trim();
|
|
432
|
+
return own ? `${base} -OriginalB64 ${Buffer.from(own, 'utf-8').toString('base64')}` : base;
|
|
433
|
+
}
|
|
434
|
+
const WINDOWS_STATUSLINE_MARKER = 'agentdeck-statusline.ps1';
|
|
435
|
+
export function isAgentDeckStatuslineCommand(command) {
|
|
436
|
+
return typeof command === 'string'
|
|
437
|
+
&& (command.includes(STATUSLINE_RELAY_MARKER) || command.includes(WINDOWS_STATUSLINE_MARKER));
|
|
438
|
+
}
|
|
439
|
+
/**
|
|
440
|
+
* The user's own command inside an AgentDeck relay: their text verbatim, `''`
|
|
441
|
+
* when the relay was installed alone, `null` when the command is not ours.
|
|
442
|
+
*/
|
|
443
|
+
export function unwrapStatuslineCommand(command) {
|
|
444
|
+
if (!isAgentDeckStatuslineCommand(command))
|
|
445
|
+
return null;
|
|
446
|
+
const text = command;
|
|
447
|
+
if (text.includes(WINDOWS_STATUSLINE_MARKER)) {
|
|
448
|
+
const encoded = /-OriginalB64 ([A-Za-z0-9+/=]+)/.exec(text);
|
|
449
|
+
return encoded ? Buffer.from(encoded[1], 'base64').toString('utf-8') : '';
|
|
450
|
+
}
|
|
451
|
+
const open = `\n${STATUSLINE_WRAP_OPEN}\n`;
|
|
452
|
+
const at = text.indexOf(open);
|
|
453
|
+
if (at < 0)
|
|
454
|
+
return '';
|
|
455
|
+
const body = text.slice(at + open.length);
|
|
456
|
+
return body.endsWith('\n}') ? body.slice(0, -2) : body;
|
|
457
|
+
}
|
|
458
|
+
function statuslineRelayCommandFor(original, platform, home) {
|
|
459
|
+
return platform === 'win32' ? buildStatuslineRelayCommandWin(original, home) : buildStatuslineRelayCommand(original);
|
|
460
|
+
}
|
|
461
|
+
export function statuslinePolicyFromEnv(env = process.env) {
|
|
462
|
+
const v = (env.AGENTDECK_STATUSLINE ?? '').trim().toLowerCase();
|
|
463
|
+
if (v === '1' || v === 'on' || v === 'true')
|
|
464
|
+
return 'on';
|
|
465
|
+
if (v === '0' || v === 'off' || v === 'false')
|
|
466
|
+
return 'off';
|
|
467
|
+
return 'auto';
|
|
468
|
+
}
|
|
469
|
+
/** Pure logic: install or refresh the relay in a settings object (no file I/O). */
|
|
470
|
+
export function applyStatuslineRelay(settings, policy = 'auto', platform = process.platform, home = homedir()) {
|
|
471
|
+
if (policy === 'off') {
|
|
472
|
+
const removed = removeStatuslineRelay(settings);
|
|
473
|
+
return {
|
|
474
|
+
installed: false,
|
|
475
|
+
wrapped: false,
|
|
476
|
+
reason: removed ? 'removed — your own status line is restored' : 'disabled (--no-statusline / AGENTDECK_STATUSLINE=0)',
|
|
477
|
+
};
|
|
478
|
+
}
|
|
479
|
+
const current = settings.statusLine;
|
|
480
|
+
if (current != null && (typeof current !== 'object' || Array.isArray(current))) {
|
|
481
|
+
return { installed: false, wrapped: false, reason: 'statusLine is not an object; left untouched' };
|
|
482
|
+
}
|
|
483
|
+
const command = current?.command;
|
|
484
|
+
const ours = isAgentDeckStatuslineCommand(command);
|
|
485
|
+
if (current && !ours && typeof command !== 'string') {
|
|
486
|
+
return { installed: false, wrapped: false, reason: 'statusLine carries no command; left untouched' };
|
|
487
|
+
}
|
|
488
|
+
const original = ours ? unwrapStatuslineCommand(command) ?? '' : (typeof command === 'string' ? command : '');
|
|
489
|
+
if (!original.trim() && !ours && policy !== 'on') {
|
|
490
|
+
return {
|
|
491
|
+
installed: false,
|
|
492
|
+
wrapped: false,
|
|
493
|
+
reason: 'no status line configured — opt in with --statusline (a configured status line hides Claude Code\'s footer hints)',
|
|
494
|
+
};
|
|
495
|
+
}
|
|
496
|
+
settings.statusLine = { ...(current ?? {}), type: 'command', command: statuslineRelayCommandFor(original, platform, home) };
|
|
497
|
+
return { installed: true, wrapped: original.trim().length > 0 };
|
|
498
|
+
}
|
|
499
|
+
/** Pure logic: take the relay out again, restoring the user's own command verbatim. */
|
|
500
|
+
export function removeStatuslineRelay(settings) {
|
|
501
|
+
const current = settings?.statusLine;
|
|
502
|
+
if (!current || typeof current !== 'object')
|
|
503
|
+
return false;
|
|
504
|
+
const original = unwrapStatuslineCommand(current.command);
|
|
505
|
+
if (original == null)
|
|
506
|
+
return false;
|
|
507
|
+
if (original)
|
|
508
|
+
settings.statusLine = { ...current, command: original };
|
|
509
|
+
else
|
|
510
|
+
delete settings.statusLine;
|
|
511
|
+
return true;
|
|
512
|
+
}
|
|
513
|
+
/** Pure logic: keep an installed relay on the current snippet. Never installs one. */
|
|
514
|
+
export function refreshStatuslineRelay(settings, platform = process.platform, home = homedir()) {
|
|
515
|
+
const current = settings?.statusLine;
|
|
516
|
+
const original = current && typeof current === 'object' ? unwrapStatuslineCommand(current.command) : null;
|
|
517
|
+
if (original == null)
|
|
518
|
+
return false;
|
|
519
|
+
const rebuilt = statuslineRelayCommandFor(original, platform, home);
|
|
520
|
+
if (rebuilt === current.command)
|
|
521
|
+
return false;
|
|
522
|
+
settings.statusLine = { ...current, type: 'command', command: rebuilt };
|
|
523
|
+
return true;
|
|
524
|
+
}
|
|
195
525
|
export const KIRO_HOOK_EVENTS = [
|
|
196
526
|
['SessionStart', 'kiro_session_start'],
|
|
197
527
|
['UserPromptSubmit', 'kiro_user_prompt_submit'],
|
|
@@ -288,7 +618,7 @@ export function buildHookEntry(eventName, home = homedir()) {
|
|
|
288
618
|
// Tool-specific hooks need a glob matcher to fire.
|
|
289
619
|
// Empty string "" means "match nothing" for tool events — use "" for non-tool
|
|
290
620
|
// events (SessionStart, Stop, etc.) where matcher is ignored.
|
|
291
|
-
const needsToolMatcher = ['PreToolUse', 'PostToolUse', 'PostToolUseFailure'].includes(eventName);
|
|
621
|
+
const needsToolMatcher = ['PreToolUse', 'PostToolUse', 'PostToolUseFailure', 'PermissionRequest'].includes(eventName);
|
|
292
622
|
return {
|
|
293
623
|
matcher: needsToolMatcher ? '*' : '',
|
|
294
624
|
hooks: [handler],
|
|
@@ -455,7 +785,7 @@ export function sweepLegacyHooks(home = homedir()) {
|
|
|
455
785
|
return true;
|
|
456
786
|
}
|
|
457
787
|
/** File-system wrapper: install hooks into ~/.claude/settings.json */
|
|
458
|
-
export function installHooks(home = homedir()) {
|
|
788
|
+
export function installHooks(home = homedir(), opts = {}) {
|
|
459
789
|
const { dir, settings: settingsPath } = claudeSettingsPaths(home);
|
|
460
790
|
if (!existsSync(dir)) {
|
|
461
791
|
mkdirSync(dir, { recursive: true });
|
|
@@ -468,8 +798,15 @@ export function installHooks(home = homedir()) {
|
|
|
468
798
|
}
|
|
469
799
|
const settings = readSettings(settingsPath);
|
|
470
800
|
applyHooks(settings, home);
|
|
801
|
+
const statusline = applyStatuslineRelay(settings, opts.statusline ?? statuslinePolicyFromEnv(), process.platform, home);
|
|
802
|
+
if (process.platform === 'win32' && isAgentDeckStatuslineCommand(settings.statusLine?.command)) {
|
|
803
|
+
ensureWindowsStatuslineScript(home);
|
|
804
|
+
}
|
|
471
805
|
writeSettings(settingsPath, settings);
|
|
472
806
|
console.log(`Hooks installed to ${settingsPath}`);
|
|
807
|
+
console.log(statusline.installed
|
|
808
|
+
? `Claude status-line relay ${statusline.wrapped ? 'wrapped around your status line' : 'installed (relay only)'}`
|
|
809
|
+
: `Claude status-line relay not installed: ${statusline.reason}`);
|
|
473
810
|
}
|
|
474
811
|
/** File-system wrapper: uninstall hooks from ~/.claude/settings.json (and the legacy file) */
|
|
475
812
|
export function uninstallHooks(home = homedir()) {
|
|
@@ -478,11 +815,14 @@ export function uninstallHooks(home = homedir()) {
|
|
|
478
815
|
if (!existsSync(settingsPath))
|
|
479
816
|
return;
|
|
480
817
|
const settings = removeHooks(readSettings(settingsPath));
|
|
818
|
+
if (removeStatuslineRelay(settings))
|
|
819
|
+
console.log('Claude status-line relay removed (your own status line restored)');
|
|
481
820
|
writeSettings(settingsPath, settings);
|
|
482
|
-
// The
|
|
483
|
-
const script
|
|
484
|
-
|
|
485
|
-
|
|
821
|
+
// The scripts are AgentDeck-owned in their entirety, like the OpenCode plugin.
|
|
822
|
+
for (const script of [windowsHookScriptPath(home), windowsStatuslineScriptPath(home)]) {
|
|
823
|
+
if (existsSync(script))
|
|
824
|
+
unlinkSync(script);
|
|
825
|
+
}
|
|
486
826
|
console.log('Hooks uninstalled');
|
|
487
827
|
}
|
|
488
828
|
/**
|
|
@@ -528,6 +868,10 @@ export function migrateHooksIfNeeded(home = homedir()) {
|
|
|
528
868
|
ensureWindowsHookScript(home);
|
|
529
869
|
const before = JSON.stringify(settings);
|
|
530
870
|
applyHooks(settings, home);
|
|
871
|
+
// An installed relay keeps its script current too (never installed here).
|
|
872
|
+
refreshStatuslineRelay(settings, 'win32', home);
|
|
873
|
+
if (isAgentDeckStatuslineCommand(settings.statusLine?.command))
|
|
874
|
+
ensureWindowsStatuslineScript(home);
|
|
531
875
|
if (JSON.stringify(settings) !== before)
|
|
532
876
|
writeSettings(settingsPath, settings);
|
|
533
877
|
return;
|
|
@@ -589,6 +933,21 @@ export function migrateHooksIfNeeded(home = homedir()) {
|
|
|
589
933
|
applyHooks(settings, home);
|
|
590
934
|
migrated = true;
|
|
591
935
|
}
|
|
936
|
+
// Migration 12: an installed Claude status-line relay is kept on the
|
|
937
|
+
// current snippet. Never installed here — a status line is a visible
|
|
938
|
+
// change to Claude Code's footer, so only `installHooks` adds one, under
|
|
939
|
+
// its policy.
|
|
940
|
+
if (refreshStatuslineRelay(settings, process.platform, home))
|
|
941
|
+
migrated = true;
|
|
942
|
+
// Migration 13: the display-only `PermissionRequest` hook. Existing
|
|
943
|
+
// installs predate it, so they keep showing a permission prompt only when
|
|
944
|
+
// the Notification arrives ~6 s after the dialog. Checked by ownership,
|
|
945
|
+
// not presence: a user's own PermissionRequest hook must not hide ours.
|
|
946
|
+
const permissionRequestGroups = settings.hooks?.PermissionRequest;
|
|
947
|
+
if (!Array.isArray(permissionRequestGroups) || !permissionRequestGroups.some(isAgentDeckHookEntry)) {
|
|
948
|
+
applyHooks(settings, home);
|
|
949
|
+
migrated = true;
|
|
950
|
+
}
|
|
592
951
|
if (migrated) {
|
|
593
952
|
writeSettings(settingsPath, settings);
|
|
594
953
|
}
|
package/dist/install.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-install.d.ts","sourceRoot":"","sources":["../src/opencode-install.ts"],"names":[],"mappings":"AA8BA,eAAO,MAAM,wBAAwB,iBAAiB,CAAC;AAEvD;;wEAEwE;AACxE,wBAAgB,kBAAkB,IAAI,MAAM,CAI3C;AAED,MAAM,WAAW,sBAAsB;IACrC,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAUD;;0CAE0C;AAC1C,wBAAgB,oBAAoB,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"opencode-install.d.ts","sourceRoot":"","sources":["../src/opencode-install.ts"],"names":[],"mappings":"AA8BA,eAAO,MAAM,wBAAwB,iBAAiB,CAAC;AAEvD;;wEAEwE;AACxE,wBAAgB,kBAAkB,IAAI,MAAM,CAI3C;AAED,MAAM,WAAW,sBAAsB;IACrC,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAUD;;0CAE0C;AAC1C,wBAAgB,oBAAoB,IAAI,MAAM,CAue7C;AAeD;;6EAE6E;AAC7E,wBAAgB,4BAA4B,CAAC,IAAI,GAAE,sBAA2B,GAAG,qBAAqB,CAerG;AAED,4EAA4E;AAC5E,wBAAgB,sBAAsB,CAAC,IAAI,GAAE,sBAA2B,GAAG,IAAI,CAK9E"}
|
package/dist/opencode-install.js
CHANGED
|
@@ -40,7 +40,7 @@ export function opencodePluginPath() {
|
|
|
40
40
|
function envOptOut() {
|
|
41
41
|
return process.env.AGENTDECK_NO_OPENCODE_HOOKS === '1';
|
|
42
42
|
}
|
|
43
|
-
const PLUGIN_VERSION =
|
|
43
|
+
const PLUGIN_VERSION = 5;
|
|
44
44
|
/** Assemble the plugin source. Exported so tests can assert schema
|
|
45
45
|
* regressions (event names, payload fields, managed-session guard)
|
|
46
46
|
* without driving the file installer. */
|
|
@@ -196,6 +196,12 @@ export const AgentDeckObserver = async ({ directory, client }) => {
|
|
|
196
196
|
const promptSent = new Set(); // user messageIDs whose prompt_submit was posted
|
|
197
197
|
const promptTimers = new Map();// user messageID -> flush timer
|
|
198
198
|
const responses = new Map(); // sessionID -> latest assistant text
|
|
199
|
+
// sessionID -> { model, provider } of the turn's latest assistant message.
|
|
200
|
+
// Every assistant message.updated carries modelID/providerID, the first one
|
|
201
|
+
// included (10,474 of 10,474 in OpenCode 1.18.35's own event log,
|
|
202
|
+
// 2026-10-18); the stop is the only hook that tells the daemon which model
|
|
203
|
+
// answered, so APME turns from this plugin carried no model at all.
|
|
204
|
+
const models = new Map();
|
|
199
205
|
const startedAt = new Map(); // sessionID -> turn start ms
|
|
200
206
|
const toolPhase = new Map(); // tool callID -> "start" | "end"
|
|
201
207
|
const parentOf = new Map(); // sessionID -> parent sessionID, or null (top level)
|
|
@@ -422,6 +428,11 @@ export const AgentDeckObserver = async ({ directory, client }) => {
|
|
|
422
428
|
if (typeof timer.unref === "function") timer.unref();
|
|
423
429
|
promptTimers.set(info.id, timer);
|
|
424
430
|
}
|
|
431
|
+
} else if (info.role === "assistant" && typeof info.modelID === "string" && info.modelID.trim()) {
|
|
432
|
+
models.set(sessionID, {
|
|
433
|
+
model: info.modelID.trim().slice(0, 200),
|
|
434
|
+
provider: typeof info.providerID === "string" ? info.providerID.trim().slice(0, 80) : "",
|
|
435
|
+
});
|
|
425
436
|
}
|
|
426
437
|
} else if (type === "message.part.updated") {
|
|
427
438
|
const part = props.part || {};
|
|
@@ -494,12 +505,16 @@ export const AgentDeckObserver = async ({ directory, client }) => {
|
|
|
494
505
|
} else if (type === "session.idle") {
|
|
495
506
|
const sessionID = props.sessionID;
|
|
496
507
|
announce(sessionID);
|
|
508
|
+
const answered = models.get(sessionID);
|
|
497
509
|
post("opencode_stop", {
|
|
498
510
|
session_id: sessionID,
|
|
499
511
|
last_assistant_message: responses.get(sessionID) || "",
|
|
512
|
+
...(answered ? { model: answered.model } : {}),
|
|
513
|
+
...(answered && answered.provider ? { model_provider: answered.provider } : {}),
|
|
500
514
|
cwd,
|
|
501
515
|
});
|
|
502
516
|
responses.delete(sessionID);
|
|
517
|
+
models.delete(sessionID);
|
|
503
518
|
startedAt.delete(sessionID);
|
|
504
519
|
// Do NOT clear userMsgs/promptSent for this session. OpenCode
|
|
505
520
|
// re-emits message.updated for a user message after the turn
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-install.js","sourceRoot":"","sources":["../src/opencode-install.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,uEAAuE;AACvE,sEAAsE;AACtE,EAAE;AACF,qEAAqE;AACrE,uEAAuE;AACvE,sEAAsE;AACtE,sEAAsE;AACtE,wEAAwE;AACxE,yEAAyE;AACzE,kEAAkE;AAClE,EAAE;AACF,yEAAyE;AACzE,sEAAsE;AACtE,iEAAiE;AACjE,sEAAsE;AACtE,yEAAyE;AACzE,2BAA2B;AAC3B,EAAE;AACF,yBAAyB;AACzB,uEAAuE;AACvE,2EAA2E;AAC3E,yEAAyE;AACzE,uEAAuE;AACvE,uEAAuE;AAEvE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,MAAM,CAAC,MAAM,wBAAwB,GAAG,cAAc,CAAC;AAEvD;;wEAEwE;AACxE,MAAM,UAAU,kBAAkB;IAChC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IACxC,MAAM,UAAU,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IACxE,OAAO,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,wBAAwB,CAAC,CAAC;AAC3E,CAAC;AAaD;qDACqD;AACrD,SAAS,SAAS;IAChB,OAAO,OAAO,CAAC,GAAG,CAAC,2BAA2B,KAAK,GAAG,CAAC;AACzD,CAAC;AAED,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB;;0CAE0C;AAC1C,MAAM,UAAU,oBAAoB;IAClC,OAAO,iCAAiC,cAAc
|
|
1
|
+
{"version":3,"file":"opencode-install.js","sourceRoot":"","sources":["../src/opencode-install.ts"],"names":[],"mappings":"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"}
|