Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 48 additions & 48 deletions bun.lock

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/RFC-ask-authz-suspend.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ already carries the primitive:

- The before-tool authz hook returns, for an `ask` effect,
`{ type: "suspend", gate: { type: "approval", gateId, correlationId,
timeoutAt }, pendingOp }` (`authz-extension.ts:263-267` upstream; the
timeoutAt }, pendingOp }` (`authz-extension.ts:263-267` upstream; the
reactor persists `pendingOp`, minting `correlationId` at :223 and
`gateId = pending-${correlationId}` at :226).
- `DEFAULT_APPROVAL_TIMEOUT_MS = 3_600_000` (:36) — one hour.
Expand Down
2 changes: 1 addition & 1 deletion docs/TUI.md
Original file line number Diff line number Diff line change
Expand Up @@ -967,7 +967,7 @@ running its own selection. Two chords cover remaining copy needs:
WezTerm, Kitty, and VS Code support it.
- **Linux/Windows: Ctrl+click.** The app opens the URL through the
platform opener (`open` on macOS as fallback, `xdg-open`, `rundll32
url.dll,FileProtocolHandler` — argv spawns, never through a shell).
url.dll,FileProtocolHandler` — argv spawns, never through a shell).
- **Right-click safety.** The open gesture requires a left (button-0)
press with the modifier held, so Ctrl+right-click never opens a URL —
context menus stay safe.
Expand Down
4 changes: 2 additions & 2 deletions docs/VENDORING.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,15 +67,15 @@ covered by published packages, so they are **dependencies, not vendored
trees**:

- `@intx/hub-sessions` `./substrate` — `createAgentRepoStore({ dataDir,
signingKey })` (local disk + keypair, no hub, no database) is present in
signingKey })` (local disk + keypair, no hub, no database) is present in
the published `0.3.0` tarball. Root `dependencies` pins `0.3.0`.
- `@intx/mail-memory` — `InMemoryTransport`/`createInMemoryTransport` are
present in the published `0.3.0`. Root `dependencies` pins `0.3.0`.
- the `@intx/workflow onEvent` seam — the `opts.onEvent` sink on
`createWorkflowStepInvoker` lives in `@intx/workflow-host`'s
`adapters/step-invoker.ts`, and the published `@intx/workflow-host@0.3.0`
tarball already carries it (its `subscribeAgentEvents(agent,
opts.onEvent)` wiring). Root `dependencies` pins `0.3.0`.
opts.onEvent)` wiring). Root `dependencies` pins `0.3.0`.

CL-9021 later dropped the `@intx/hub-sessions` root pin: no first-party
tree imports it (the only references are the inert
Expand Down
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -116,9 +116,9 @@
},
"devDependencies": {
"@intx/inference-testing": "0.3.0",
"@types/bun": "1.3.9",
"oxfmt": "^0.67.0",
"oxlint": "^1.82.0",
"@types/bun": "1.4.3",
"oxfmt": "^0.73.0",
"oxlint": "^1.88.0",
"ts-prune": "0.10.3",
"typescript": "5.9.3",
"typescript-language-server": "^4.3.4",
Expand Down
3 changes: 2 additions & 1 deletion src/session/hooks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ export type LifecycleHookType = "typescript" | "shell";

export interface HookExitStatus {
code: number | null;
signal: string | null;
// bun-types 1.4.3 widened Subprocess.signalCode to NodeJS.Signals | number | null.
signal: string | number | null;
stderr: string;
}

Expand Down
16 changes: 16 additions & 0 deletions src/tui/runtime-notices.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,22 @@ describe("hookNotice", () => {
},
});
expect(notice?.kind).toBe("row");
expect(notice?.text).toContain("failed (SIGKILL)");
});

test("a numerically-signalled run renders the raw signal", () => {
// bun-types 1.4.3 lets Subprocess.signalCode be a raw number; the display
// layer stringifies it (String() identity) so both shapes render sanely.
const notice = hookNotice({
type: "hook.updated",
hook: {
...hook,
lastFiredAt: 1,
lastExitStatus: { code: null, signal: 15, stderr: "" },
},
});
expect(notice?.kind).toBe("row");
expect(notice?.text).toContain("failed (15)");
});
});

Expand Down
2 changes: 1 addition & 1 deletion src/tui/runtime-notices.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ function stderrSummary(stderr: string): string | null {
function hookFailure(hook: LifecycleHookStatus): string | null {
const exit = hook.lastExitStatus;
if (exit === undefined) return null;
if (exit.signal !== null) return exit.signal;
if (exit.signal !== null) return String(exit.signal);
if (exit.code !== null && exit.code !== 0) return `exit ${exit.code}`;
return null;
}
Expand Down
Loading