Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
113 commits
Select commit Hold shift + click to select a range
a143b50
chore: delete dead weight — orphaned playwright-injected vendor tree,…
bradhallett Sep 16, 2026
dac000a
refactor: move the attachment wire protocol to shared/attachments.ts …
bradhallett Sep 16, 2026
52695f7
refactor(drivers): one shared session runtime and one ACP protocol mo…
bradhallett Sep 16, 2026
2b5ddc7
refactor(drivers): claude and codex ride the shared session runtime —…
bradhallett Sep 16, 2026
ecfe243
refactor(server): canonical http helpers and the first route extracti…
bradhallett Sep 16, 2026
9ebfae9
refactor(server): one computer-backend module behind the three CUA ba…
bradhallett Sep 16, 2026
4be5afc
refactor(server): split store.ts into server/store/ slices behind a 6…
bradhallett Sep 16, 2026
63e8a59
refactor(state): collapse nine overlay toggles into one overlays slic…
bradhallett Sep 16, 2026
0969180
refactor(server): extract the whole /api/internal family from index.t…
bradhallett Sep 16, 2026
3e0f03d
refactor(state): first modules out of store.tsx — the overlays slice …
bradhallett Sep 16, 2026
1278cef
refactor(scripts): one shared server-endpoint resolver — validateBase…
bradhallett Sep 16, 2026
e149139
refactor(server): first turn-engine modules out of index.ts — interna…
bradhallett Sep 16, 2026
4781512
refactor(components): Sidebar under a thousand lines — ten sections m…
bradhallett Sep 16, 2026
74a885b
refactor(drivers): agents-proxy callTool becomes a registry lookup — …
bradhallett Sep 16, 2026
f1490a4
refactor(server): a composition root for the index singletons — serve…
bradhallett Sep 16, 2026
fdf5cd7
refactor(components): GroupView and PhoneSetupFlow decomposed — five …
bradhallett Sep 16, 2026
eabfc70
refactor(scripts): the MCP server tool switch becomes a registry — tw…
bradhallett Sep 16, 2026
b243b2c
refactor(components): ComputerPanel terminal phases become pure decid…
bradhallett Sep 16, 2026
464deeb
refactor(server): turn cleanup and the provider fleet leave index.ts …
bradhallett Sep 17, 2026
517b0a6
refactor(state): store.tsx decomposed into model and reducer modules …
bradhallett Sep 17, 2026
f6c4e7c
refactor(acp): the ACP wire is typed end to end — discriminated frame…
bradhallett Sep 17, 2026
c685e61
refactor(server): the startTurn engine leaves index.ts — the 986-line…
bradhallett Sep 17, 2026
1946f25
refactor(components): ComputerPanel decomposed into thirteen hook and…
bradhallett Sep 17, 2026
65365c2
refactor(state): the async API client leaves the store provider — Api…
bradhallett Sep 17, 2026
6c80720
refactor(server): the event fold and routine wiring leave index.ts — …
bradhallett Sep 17, 2026
9769440
refactor(drivers): agents-proxy back under the thousand-line bar — ro…
bradhallett Sep 17, 2026
044407a
refactor(state): the reducer becomes a dispatcher over domain modules…
bradhallett Sep 17, 2026
75d9f85
refactor(server): extract delegation-watch and screen-pollers from index
bradhallett Sep 17, 2026
d0c44b6
refactor(state): extract task-write queue from store provider
bradhallett Sep 17, 2026
38719ce
refactor(server): decompose startTurn into named phase functions
bradhallett Sep 17, 2026
5c38eec
refactor(server): split start-turn phases into per-stage modules
bradhallett Sep 17, 2026
88cfd80
refactor(server): split event-fold into handler-family modules
bradhallett Sep 17, 2026
f7d32a4
refactor(server): extract group turn engine from index
bradhallett Sep 17, 2026
26840d3
fix(server): fail loud on unreadable config and strict fleet-agent bo…
bradhallett Sep 17, 2026
7e99ff3
refactor(server): split group-turn into family modules
bradhallett Sep 17, 2026
33c78af
refactor(server): extract computer lifecycle from index
bradhallett Sep 17, 2026
cc7f520
refactor(server): split routines into schedule, persistence, prompt, …
bradhallett Sep 17, 2026
355c7cd
refactor(server): split internal routes into family modules
bradhallett Sep 17, 2026
cfdbecf
refactor(server): extract deferred-resume queues from index
bradhallett Sep 17, 2026
4c7263c
refactor(routines): split RoutineCalendarPage into routine-calendar m…
bradhallett Sep 17, 2026
8ef0918
refactor(server): extract checked-input validators and desktop approv…
bradhallett Sep 17, 2026
d8cdfbd
refactor(drivers): split claude driver into focused modules behind ba…
bradhallett Sep 17, 2026
74c380c
refactor(chat): split ChatView subcomponents into chat-view modules
bradhallett Sep 17, 2026
42b2da3
refactor(mascot): split CursorAvatar into cursor-avatar modules
bradhallett Sep 17, 2026
adc5eae
refactor(server): split box module into focused modules behind barrel
bradhallett Sep 17, 2026
4d2dbe4
refactor(settings): split LocalComputerSection into local-computer mo…
bradhallett Sep 17, 2026
33934bd
refactor(server): split routine-requests into focused modules behind …
bradhallett Sep 17, 2026
c50860e
refactor(server): split skills module into focused modules behind barrel
bradhallett Sep 17, 2026
f40cccb
refactor(drivers): split codex driver into focused modules behind barrel
bradhallett Sep 17, 2026
5b70a53
refactor(server): split vps-computer into focused modules behind barrel
bradhallett Sep 17, 2026
8e66070
fix(drivers): mark codex config import type-only for node strip-types
bradhallett Sep 17, 2026
1ed1f7b
refactor(server): extract turn integrations and direct-turn dispatch …
bradhallett Sep 17, 2026
97af06c
refactor(server): split container-computer into focused modules behin…
bradhallett Sep 17, 2026
ef48e2d
refactor(routines): extract receipt ledger and run helpers from manager
bradhallett Sep 17, 2026
91fe650
refactor(server): extract group coordination registry and policy from…
bradhallett Sep 17, 2026
ca004df
refactor(state): extract peripheral sync and live hydration from stor…
bradhallett Sep 17, 2026
4f52809
refactor(cli): split cli command families behind barrel
bradhallett Sep 17, 2026
002232d
refactor(server): extract bot wire views and approval policy from index
bradhallett Sep 17, 2026
53e80b2
refactor(composio): split connector families behind barrel
bradhallett Sep 17, 2026
bec8a1e
refactor(acp): extract wire and log-sanitize helpers from driver core
bradhallett Sep 17, 2026
dacf0a5
refactor(composer): extract picker, steer, and attachment hooks
bradhallett Sep 17, 2026
79fb559
refactor(config): split config families behind barrel
bradhallett Sep 17, 2026
b2cafcb
refactor(server): extract group turn operation machinery from index
bradhallett Sep 17, 2026
98abd96
refactor(electron): extract window, secure-config, and crash-log subs…
bradhallett Sep 17, 2026
10fecab
refactor(codex): extract wire and snapshot helpers from driver
bradhallett Sep 17, 2026
5b73aff
test(electron): point credential parity check at config family module
bradhallett Sep 17, 2026
7d2ed5b
refactor(server): extract pre-router turn and config helpers from index
bradhallett Sep 17, 2026
1a9c00c
refactor(server): extract calendar, webhook, search, and team-library…
bradhallett Sep 17, 2026
a761c81
refactor(electron): extract companion, server runtime, and viewer sub…
bradhallett Sep 17, 2026
5406f51
refactor(server): extract instance, mcp, tts, and connector routes fr…
bradhallett Sep 17, 2026
dbd2e4e
refactor(electron): extract environments, workspace, and diagnostics …
bradhallett Sep 17, 2026
65060a8
refactor(electron): extract company backup subsystem and repoint slic…
bradhallett Sep 17, 2026
04c9f26
refactor(server): extract usage reports and config routes from index
bradhallett Sep 17, 2026
760db9b
refactor(electron): extract badge, server boot, and cua media subsyst…
bradhallett Sep 17, 2026
05f374f
refactor(server): extract message feed and upload routes from index
bradhallett Sep 17, 2026
ae4035b
refactor(electron): extract desktop surface ipc handlers from main
bradhallett Sep 17, 2026
c6f9922
refactor(server): extract team and bot action routes from index
bradhallett Sep 17, 2026
8a2815f
refactor(electron): extract createWindow from main.mjs
bradhallett Sep 17, 2026
6b69439
refactor(server): extract bot management routes from index.ts
bradhallett Sep 17, 2026
83ad090
refactor(server): extract session, computer, and system routes from i…
bradhallett Sep 17, 2026
b134778
refactor(server): extract bot thread-ops and task routes from index.ts
bradhallett Sep 17, 2026
08d3f4a
refactor(server): extract bot profile and memory routes from index.ts
bradhallett Sep 17, 2026
d4595f5
refactor(server): extract card, box computer, and workspace comms rou…
bradhallett Sep 17, 2026
c1b7fe9
refactor(server): extract events pipeline and turn dispatch from inde…
bradhallett Sep 17, 2026
3fd657a
refactor(server): extract routine and team-setup lifecycles from inde…
bradhallett Sep 17, 2026
82c649b
refactor(server): extract bot and skill lifecycles from index.ts
bradhallett Sep 17, 2026
0b4c5f0
refactor(server): extract group state and calendar rooms from index.ts
bradhallett Sep 17, 2026
b17e364
refactor(server): extract peer-agent comms and computer lifecycle wir…
bradhallett Sep 17, 2026
d9d6482
refactor(server): extract desktop bridge and pre-auth routes from ind…
bradhallett Sep 17, 2026
1461dee
refactor(server): extract boot sequence and browser-live/fleet routes…
bradhallett Sep 17, 2026
75bacee
refactor(server): extract static serving, local-vm boot arming, and d…
bradhallett Sep 17, 2026
e3ad7df
refactor(server): extract route wiring table and request handler from…
bradhallett Sep 17, 2026
08e9bb0
refactor(server): consolidate engine wiring into engine-wiring.ts
bradhallett Sep 17, 2026
b8aecac
refactor(server): consolidate workflow wiring into workflow-wiring.ts
bradhallett Sep 17, 2026
da5447a
test(verification): scan all server route modules for registered routes
bradhallett Sep 17, 2026
810638d
fix(testing): read overlay state through overlayOpen in cloud and eng…
bradhallett Sep 17, 2026
a94ad66
fix(config): materialize the boxAgent Computer runner for custom fleets
bradhallett Sep 19, 2026
7f000d3
fix(claude): feature-detect --autocompact and replay threads after a …
bradhallett Sep 19, 2026
373c095
fix(server): fence Local VM claims by generation
bradhallett Sep 19, 2026
ec54015
fix(browser): recycle wedged session daemons and surface engine failures
bradhallett Sep 19, 2026
1c24d48
fix(acp): resolve Cursor fast variants deterministically
bradhallett Sep 19, 2026
3ad0e64
fix(pi): negotiate protocol v2 and reassemble chunked RPC frames
bradhallett Sep 19, 2026
2d9f243
fix(fleet): stop blocking the root agent on usage polls
bradhallett Sep 19, 2026
87dbb6a
fix(server): bound each busy thread steer queue
bradhallett Sep 19, 2026
3b4783b
fix(server): keep room handoff acceptance durable while coalescing se…
bradhallett Sep 19, 2026
5511746
feat(server): add POST /api/notify for loopback scripts
bradhallett Sep 19, 2026
ee6cbba
fix(server): require JSON on the browser-engine install route
bradhallett Sep 19, 2026
1beb3d0
test(server): pin the agent-browser path in isolated fixtures
bradhallett Sep 19, 2026
8edb864
fix(computers): accept plain-http pairing links on private LAN hosts
bradhallett Sep 19, 2026
1907b56
fix(approval): keep Full available for OpenAI-compatible engines
bradhallett Sep 19, 2026
5a15fd2
fix(cli): drop BEL instead of padding provider labels
bradhallett Sep 19, 2026
48a6eab
test(bot-tools): keep the usage-chip click resilient to header re-ren…
bradhallett Sep 19, 2026
537190f
Merge main and complete every orphaned feature port
bradhallett Sep 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
20 changes: 0 additions & 20 deletions .tmpexp/ext.mjs

This file was deleted.

20 changes: 0 additions & 20 deletions .tmpexp/r.mjs

This file was deleted.

20 changes: 0 additions & 20 deletions .tmpexp/r.mjs.bak

This file was deleted.

20 changes: 0 additions & 20 deletions .tmpexp/r.mjs.bak2

This file was deleted.

23 changes: 0 additions & 23 deletions .tmpexp/run.mjs

This file was deleted.

9 changes: 5 additions & 4 deletions electron/app-permissions.node-test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -79,10 +79,11 @@ test("web links reject embedded credentials and non-web schemes", () => {
});

test("both external-link entry points use the policy and IPC retains the local-origin gate", () => {
const main = readFileSync(new URL("./main.mjs", import.meta.url), "utf8");
assert.match(main, /ipcMain\.handle\("desktop:open-external", localOnly\("desktop:open-external"/);
assert.match(main, /shell\.openExternal\(externalWebUrl\(rawUrl\)\)/);
assert.match(main, /shell\.openExternal\(externalWebUrl\(url\)\)/);
const createWindowModule = readFileSync(new URL("./main/create-window.mjs", import.meta.url), "utf8");
const desktopIpc = readFileSync(new URL("./main/desktop-ipc.mjs", import.meta.url), "utf8");
assert.match(desktopIpc, /ipcMain\.handle\("desktop:open-external", localOnly\("desktop:open-external"/);
assert.match(desktopIpc, /shell\.openExternal\(externalWebUrl\(rawUrl\)\)/);
assert.match(createWindowModule, /shell\.openExternal\(externalWebUrl\(url\)\)/);
});

test("fails closed on unparsable or opaque origins", () => {
Expand Down
12 changes: 6 additions & 6 deletions electron/company-backup-main.node-test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@ import { createCompanyBackupSchedule } from "./company-backup-schedule.mjs";
// importing Electron main (which would start the app). All IO, connection state,
// and transfer results are synthetic; these tests do not prove archive transport,
// OS keychain storage, or a renderer workflow.
const mainSource = readFileSync(new URL("./main.mjs", import.meta.url), "utf8");
function section(start, end) {
const from = mainSource.indexOf(start);
const to = mainSource.indexOf(end, from + start.length);
const moduleSource = readFileSync(new URL("./main/company-backup.mjs", import.meta.url), "utf8");
function section(start, end, includeEnd = false) {
const from = moduleSource.indexOf(start);
const to = moduleSource.indexOf(end, from + start.length);
assert.ok(from >= 0 && to > from, `Main-process test section moved: ${start}`);
return mainSource.slice(from, to);
return moduleSource.slice(from, includeEnd ? to + end.length : to);
}
const functions = section("function ensureManagedDesktop()", "function syncDesktopMutationToken(");
const registrations = section("const workspaceOnly =", "const savedWorkspace =");
const registrations = section("const workspaceOnly =", " } finally { companyRestoreCommitting = false; }\n}));", true);
const ORIGIN = "http://127.0.0.1:48799";
const STAGE = "11111111-1111-4111-8111-111111111111";
const DEVICE = "22222222-2222-4222-8222-222222222222";
Expand Down
7 changes: 4 additions & 3 deletions electron/diagnostics.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,13 @@ const {
} = require("./diagnostics.mjs");

// The desktop shell cannot import TypeScript, so its credential list is a
// hand copy of server/config.ts WORKSPACE_CREDENTIAL_ENV. This test is the
// hand copy of WORKSPACE_CREDENTIAL_ENV (server/config/credentials.ts).
// This test is the
// drift alarm: a name added server-side without updating the copy here would
// otherwise ship an unredacted export path.
describe("credential env parity with server/config.ts", () => {
describe("credential env parity with server/config/credentials.ts", () => {
it("matches WORKSPACE_CREDENTIAL_ENV exactly", () => {
const config = readFileSync(new URL("../server/config.ts", import.meta.url), "utf8");
const config = readFileSync(new URL("../server/config/credentials.ts", import.meta.url), "utf8");
const match = config.match(/WORKSPACE_CREDENTIAL_ENV = \[([\s\S]*?)\] as const/);
expect(match).not.toBeNull();
const names = [...match[1].matchAll(/"([A-Z0-9_]+)"/g)].map((m) => m[1]);
Expand Down
Loading
Loading