@openclaw-cloud/agent-controller 3.6.2 → 3.6.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/api.d.ts +2 -14
- package/dist/api.js +1 -15
- package/dist/api.js.map +1 -1
- package/dist/commands/agent-update-cli.js +0 -7
- package/dist/commands/agent-update-cli.js.map +1 -1
- package/dist/commands/bootstrap.d.ts +0 -10
- package/dist/commands/bootstrap.js +2 -16
- package/dist/commands/bootstrap.js.map +1 -1
- package/dist/commands/channel-server.d.ts +0 -16
- package/dist/commands/channel-server.js +1 -19
- package/dist/commands/channel-server.js.map +1 -1
- package/dist/commands/deploy-cli.js +2 -12
- package/dist/commands/deploy-cli.js.map +1 -1
- package/dist/commands/diagnostics-cli.js +0 -6
- package/dist/commands/diagnostics-cli.js.map +1 -1
- package/dist/commands/install-deps.d.ts +0 -10
- package/dist/commands/install-deps.js +1 -10
- package/dist/commands/install-deps.js.map +1 -1
- package/dist/commands/install.js +0 -6
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/package-install-cli.js +1 -14
- package/dist/commands/package-install-cli.js.map +1 -1
- package/dist/commands/plugin-update-cli.js +1 -8
- package/dist/commands/plugin-update-cli.js.map +1 -1
- package/dist/commands/restart-cli.js +0 -4
- package/dist/commands/restart-cli.js.map +1 -1
- package/dist/commands/self-update.d.ts +2 -24
- package/dist/commands/self-update.js +5 -54
- package/dist/commands/self-update.js.map +1 -1
- package/dist/commands/stop-cli.d.ts +0 -4
- package/dist/commands/stop-cli.js +1 -24
- package/dist/commands/stop-cli.js.map +1 -1
- package/dist/config-file.d.ts +3 -20
- package/dist/config-file.js +3 -22
- package/dist/config-file.js.map +1 -1
- package/dist/config.d.ts +0 -22
- package/dist/config.js +1 -34
- package/dist/config.js.map +1 -1
- package/dist/connection.js +2 -39
- package/dist/connection.js.map +1 -1
- package/dist/handlers/agent-update.d.ts +1 -21
- package/dist/handlers/agent-update.js +1 -21
- package/dist/handlers/agent-update.js.map +1 -1
- package/dist/handlers/chat.d.ts +0 -8
- package/dist/handlers/chat.js +3 -23
- package/dist/handlers/chat.js.map +1 -1
- package/dist/handlers/file-write.js +1 -4
- package/dist/handlers/file-write.js.map +1 -1
- package/dist/handlers/memory.d.ts +1 -9
- package/dist/handlers/memory.js +3 -25
- package/dist/handlers/memory.js.map +1 -1
- package/dist/handlers/onboarding.js +0 -2
- package/dist/handlers/onboarding.js.map +1 -1
- package/dist/handlers/pair.js +1 -3
- package/dist/handlers/pair.js.map +1 -1
- package/dist/handlers/plugin-update.d.ts +1 -16
- package/dist/handlers/plugin-update.js +1 -16
- package/dist/handlers/plugin-update.js.map +1 -1
- package/dist/handlers/restart.js +0 -2
- package/dist/handlers/restart.js.map +1 -1
- package/dist/handlers/self-update.d.ts +2 -29
- package/dist/handlers/self-update.js +3 -35
- package/dist/handlers/self-update.js.map +1 -1
- package/dist/handlers/slack-event.d.ts +2 -9
- package/dist/handlers/slack-event.js +2 -10
- package/dist/handlers/slack-event.js.map +1 -1
- package/dist/heartbeat.d.ts +2 -12
- package/dist/heartbeat.js +3 -18
- package/dist/heartbeat.js.map +1 -1
- package/dist/index.js +6 -50
- package/dist/index.js.map +1 -1
- package/dist/lockfile.d.ts +0 -7
- package/dist/lockfile.js +0 -9
- package/dist/lockfile.js.map +1 -1
- package/dist/memory-mcp-server.d.ts +1 -19
- package/dist/memory-mcp-server.js +5 -53
- package/dist/memory-mcp-server.js.map +1 -1
- package/dist/mock-board-worker.d.ts +2 -25
- package/dist/mock-board-worker.js +7 -54
- package/dist/mock-board-worker.js.map +1 -1
- package/dist/platform/linux.js +0 -3
- package/dist/platform/linux.js.map +1 -1
- package/dist/platform/macos.js +0 -2
- package/dist/platform/macos.js.map +1 -1
- package/dist/providers/chat-types.d.ts +0 -3
- package/dist/providers/chat-types.js +0 -3
- package/dist/providers/chat-types.js.map +1 -1
- package/dist/providers/claude-code/channel-server.d.ts +0 -19
- package/dist/providers/claude-code/channel-server.js +0 -19
- package/dist/providers/claude-code/channel-server.js.map +1 -1
- package/dist/providers/claude-code/index.d.ts +0 -22
- package/dist/providers/claude-code/index.js +3 -26
- package/dist/providers/claude-code/index.js.map +1 -1
- package/dist/providers/claude-code/login-flow.d.ts +0 -17
- package/dist/providers/claude-code/login-flow.js +2 -16
- package/dist/providers/claude-code/login-flow.js.map +1 -1
- package/dist/providers/claude-code/settings-writer.d.ts +1 -16
- package/dist/providers/claude-code/settings-writer.js +5 -20
- package/dist/providers/claude-code/settings-writer.js.map +1 -1
- package/dist/providers/claude-code/socket-bridge.d.ts +0 -35
- package/dist/providers/claude-code/socket-bridge.js +2 -43
- package/dist/providers/claude-code/socket-bridge.js.map +1 -1
- package/dist/providers/claude-code/spawn-claude.d.ts +0 -17
- package/dist/providers/claude-code/spawn-claude.js +1 -15
- package/dist/providers/claude-code/spawn-claude.js.map +1 -1
- package/dist/providers/index.d.ts +1 -10
- package/dist/providers/index.js +2 -13
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/mock/index.d.ts +0 -4
- package/dist/providers/mock/index.js +0 -4
- package/dist/providers/mock/index.js.map +1 -1
- package/dist/providers/openclaw/auto-pair.d.ts +1 -6
- package/dist/providers/openclaw/auto-pair.js +1 -10
- package/dist/providers/openclaw/auto-pair.js.map +1 -1
- package/dist/providers/openclaw/device-identity.d.ts +1 -1
- package/dist/providers/openclaw/device-identity.js +33 -17
- package/dist/providers/openclaw/device-identity.js.map +1 -1
- package/dist/providers/openclaw/gateway-adapter.d.ts +0 -5
- package/dist/providers/openclaw/gateway-adapter.js +4 -32
- package/dist/providers/openclaw/gateway-adapter.js.map +1 -1
- package/dist/providers/openclaw/gateway-client.js +3 -9
- package/dist/providers/openclaw/gateway-client.js.map +1 -1
- package/dist/providers/openclaw/index.js +2 -15
- package/dist/providers/openclaw/index.js.map +1 -1
- package/dist/providers/types.d.ts +0 -10
- package/dist/slack-relay-server.d.ts +4 -33
- package/dist/slack-relay-server.js +9 -57
- package/dist/slack-relay-server.js.map +1 -1
- package/dist/types.d.ts +1 -12
- package/dist/types.js +0 -6
- package/dist/types.js.map +1 -1
- package/dist/utils/agent-controller-bin.d.ts +0 -6
- package/dist/utils/agent-controller-bin.js +1 -21
- package/dist/utils/agent-controller-bin.js.map +1 -1
- package/dist/utils/anthropic-auth.d.ts +1 -22
- package/dist/utils/anthropic-auth.js +0 -10
- package/dist/utils/anthropic-auth.js.map +1 -1
- package/dist/utils/apply-config.d.ts +7 -74
- package/dist/utils/apply-config.js +30 -221
- package/dist/utils/apply-config.js.map +1 -1
- package/dist/utils/backup-push.d.ts +0 -10
- package/dist/utils/backup-push.js +0 -15
- package/dist/utils/backup-push.js.map +1 -1
- package/dist/utils/claude-env.d.ts +1 -10
- package/dist/utils/claude-env.js +2 -14
- package/dist/utils/claude-env.js.map +1 -1
- package/dist/utils/config-merge-paths.d.ts +5 -43
- package/dist/utils/config-merge-paths.js +5 -43
- package/dist/utils/config-merge-paths.js.map +1 -1
- package/dist/utils/deploy-type.d.ts +1 -13
- package/dist/utils/deploy-type.js +2 -19
- package/dist/utils/deploy-type.js.map +1 -1
- package/dist/utils/diagnostics.d.ts +0 -7
- package/dist/utils/diagnostics.js +0 -15
- package/dist/utils/diagnostics.js.map +1 -1
- package/dist/utils/exec.d.ts +0 -10
- package/dist/utils/exec.js +2 -32
- package/dist/utils/exec.js.map +1 -1
- package/dist/utils/gateway-restart-handler.d.ts +1 -8
- package/dist/utils/gateway-restart-handler.js +1 -8
- package/dist/utils/gateway-restart-handler.js.map +1 -1
- package/dist/utils/gateway-restart.d.ts +1 -11
- package/dist/utils/gateway-restart.js +1 -11
- package/dist/utils/gateway-restart.js.map +1 -1
- package/dist/utils/knowledge-graph.d.ts +2 -25
- package/dist/utils/knowledge-graph.js +2 -37
- package/dist/utils/knowledge-graph.js.map +1 -1
- package/dist/utils/knowledge-push.d.ts +0 -4
- package/dist/utils/knowledge-push.js +4 -19
- package/dist/utils/knowledge-push.js.map +1 -1
- package/dist/utils/legacy-mcp-servers.d.ts +1 -11
- package/dist/utils/legacy-mcp-servers.js +1 -11
- package/dist/utils/legacy-mcp-servers.js.map +1 -1
- package/dist/utils/log-collector.js +0 -2
- package/dist/utils/log-collector.js.map +1 -1
- package/dist/utils/openclaw-ops.d.ts +5 -72
- package/dist/utils/openclaw-ops.js +6 -98
- package/dist/utils/openclaw-ops.js.map +1 -1
- package/dist/utils/openclaw-stack-update.d.ts +2 -14
- package/dist/utils/openclaw-stack-update.js +1 -6
- package/dist/utils/openclaw-stack-update.js.map +1 -1
- package/dist/utils/package-install.d.ts +0 -5
- package/dist/utils/package-install.js +2 -21
- package/dist/utils/package-install.js.map +1 -1
- package/dist/utils/package-version.d.ts +1 -9
- package/dist/utils/package-version.js +1 -9
- package/dist/utils/package-version.js.map +1 -1
- package/dist/utils/parse-id-at-version.d.ts +1 -11
- package/dist/utils/parse-id-at-version.js +1 -11
- package/dist/utils/parse-id-at-version.js.map +1 -1
- package/dist/utils/plugin-reconcile.d.ts +2 -33
- package/dist/utils/plugin-reconcile.js +7 -77
- package/dist/utils/plugin-reconcile.js.map +1 -1
- package/dist/utils/release-channel.d.ts +0 -8
- package/dist/utils/release-channel.js.map +1 -1
- package/dist/utils/write-home-files.d.ts +2 -24
- package/dist/utils/write-home-files.js +3 -27
- package/dist/utils/write-home-files.js.map +1 -1
- package/dist/utils/write-workspace-files.d.ts +0 -14
- package/dist/utils/write-workspace-files.js +1 -19
- package/dist/utils/write-workspace-files.js.map +1 -1
- package/dist/workspace.d.ts +1 -21
- package/dist/workspace.js +1 -21
- package/dist/workspace.js.map +1 -1
- package/package.json +1 -1
|
@@ -6,30 +6,7 @@ export interface MockBoardWorkerHandle {
|
|
|
6
6
|
stop(): void;
|
|
7
7
|
}
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* without an LLM.
|
|
12
|
-
*
|
|
13
|
-
* The loop mirrors what the mcp-warmup plugin does on a real agent:
|
|
14
|
-
*
|
|
15
|
-
* 1. `POST /api/agent/board/take-task` — 204 means no work (idle poll),
|
|
16
|
-
* 200 returns `{ cardId, card }` with the card already CLAIMED by us.
|
|
17
|
-
* 2. Wait `MOCK_TASK_DELAY_MS`. Claiming is what makes the orchestrator
|
|
18
|
-
* create the CardProcessing, dispatch the prompt and block the CP in
|
|
19
|
-
* `waiting_for_mcp_response`; the mock never receives that prompt, it
|
|
20
|
-
* just has to submit after the CP exists.
|
|
21
|
-
* 3. `POST /api/agent/board/cards/{cardId}/submit` — retried, because a
|
|
22
|
-
* submit landing before the CP is blocked gets a 404 (`no active
|
|
23
|
-
* card_processing`) or 400 (`not waiting for a response`). How long we
|
|
24
|
-
* retry depends on which: see the budget constants above.
|
|
25
|
-
* 4. Straight back to take-task, so a burst of waiting cards drains
|
|
26
|
-
* back-to-back instead of one per poll interval.
|
|
27
|
-
*
|
|
28
|
-
* Nothing in here may throw out of the loop: a mock agent that dies on a
|
|
29
|
-
* transient backend blip is worse than one that logs and polls again. Every
|
|
30
|
-
* exit from `submit()` falls back into the polling loop — only `stop()` ends
|
|
31
|
-
* it. A card we could not submit is left claimed, which blocks further work
|
|
32
|
-
* until the orchestrator releases it, so `submit()` returning is always
|
|
33
|
-
* logged.
|
|
9
|
+
* The mock receives no MCP prompt, so submit must wait for the orchestrator to block the claimed card.
|
|
10
|
+
* Keep polling after failures; submit returning does not itself release the claim.
|
|
34
11
|
*/
|
|
35
12
|
export declare function startMockBoardWorker(opts: MockBoardWorkerOptions): MockBoardWorkerHandle;
|
|
@@ -1,62 +1,22 @@
|
|
|
1
1
|
import { config } from './config.js';
|
|
2
2
|
import { toErrorMessage } from './utils/response.js';
|
|
3
|
-
/** Backoff between submit retries while the orchestrator blocks the CardProcessing. */
|
|
4
3
|
const SUBMIT_RETRY_DELAY_MS = 2_000;
|
|
5
4
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* Long on purpose. Abandoning the card does NOT release it: `claimCard` has a
|
|
10
|
-
* universal one-card-per-agent guard, so while this card is still assigned to
|
|
11
|
-
* us every later take-task is refused and answered 204. The only thing that
|
|
12
|
-
* frees us is the orchestrator reconciler reaping the stalled CP at
|
|
13
|
-
* `cp.stallTimeoutMs` (default 30 min), which fails the CP and unassigns the
|
|
14
|
-
* card. Giving up before that bought nothing and made the agent look idle for
|
|
15
|
-
* up to half an hour — that is the 2026-08-30 local-stack wedge.
|
|
5
|
+
* A claimed card blocks every later claim until the orchestrator releases it.
|
|
6
|
+
* Retry 400s through its stall-reap window; abandoning earlier leaves the worker idle.
|
|
16
7
|
*/
|
|
17
8
|
const SUBMIT_NOT_READY_BUDGET_MS = 31 * 60_000;
|
|
18
|
-
/**
|
|
19
|
-
* Budget for HTTP 404 `no active card_processing` — no CP is active on the
|
|
20
|
-
* card. Short, because this reads two ways and both want a quick exit:
|
|
21
|
-
* either the orchestrator has not created the CP yet (a seconds-wide window
|
|
22
|
-
* right after the claim), or it has already been reaped — and a reap also
|
|
23
|
-
* unassigns the card, so we are free to claim again and should be polling,
|
|
24
|
-
* not retrying.
|
|
25
|
-
*/
|
|
9
|
+
/** A 404 can mean pre-creation or already reaped; use a short budget so polling resumes promptly. */
|
|
26
10
|
const SUBMIT_NO_CP_BUDGET_MS = 60_000;
|
|
27
11
|
/** Log attempt 1, then every Nth — a half-hour wait is not 900 log lines. */
|
|
28
12
|
const SUBMIT_LOG_EVERY = 15;
|
|
29
13
|
/**
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* without an LLM.
|
|
33
|
-
*
|
|
34
|
-
* The loop mirrors what the mcp-warmup plugin does on a real agent:
|
|
35
|
-
*
|
|
36
|
-
* 1. `POST /api/agent/board/take-task` — 204 means no work (idle poll),
|
|
37
|
-
* 200 returns `{ cardId, card }` with the card already CLAIMED by us.
|
|
38
|
-
* 2. Wait `MOCK_TASK_DELAY_MS`. Claiming is what makes the orchestrator
|
|
39
|
-
* create the CardProcessing, dispatch the prompt and block the CP in
|
|
40
|
-
* `waiting_for_mcp_response`; the mock never receives that prompt, it
|
|
41
|
-
* just has to submit after the CP exists.
|
|
42
|
-
* 3. `POST /api/agent/board/cards/{cardId}/submit` — retried, because a
|
|
43
|
-
* submit landing before the CP is blocked gets a 404 (`no active
|
|
44
|
-
* card_processing`) or 400 (`not waiting for a response`). How long we
|
|
45
|
-
* retry depends on which: see the budget constants above.
|
|
46
|
-
* 4. Straight back to take-task, so a burst of waiting cards drains
|
|
47
|
-
* back-to-back instead of one per poll interval.
|
|
48
|
-
*
|
|
49
|
-
* Nothing in here may throw out of the loop: a mock agent that dies on a
|
|
50
|
-
* transient backend blip is worse than one that logs and polls again. Every
|
|
51
|
-
* exit from `submit()` falls back into the polling loop — only `stop()` ends
|
|
52
|
-
* it. A card we could not submit is left claimed, which blocks further work
|
|
53
|
-
* until the orchestrator releases it, so `submit()` returning is always
|
|
54
|
-
* logged.
|
|
14
|
+
* The mock receives no MCP prompt, so submit must wait for the orchestrator to block the claimed card.
|
|
15
|
+
* Keep polling after failures; submit returning does not itself release the claim.
|
|
55
16
|
*/
|
|
56
17
|
export function startMockBoardWorker(opts) {
|
|
57
18
|
const { api } = opts;
|
|
58
19
|
let stopped = false;
|
|
59
|
-
/** Resolver for the sleep currently in flight, so stop() cuts it short. */
|
|
60
20
|
let wake = null;
|
|
61
21
|
function sleep(ms) {
|
|
62
22
|
return new Promise((resolve) => {
|
|
@@ -73,7 +33,6 @@ export function startMockBoardWorker(opts) {
|
|
|
73
33
|
};
|
|
74
34
|
});
|
|
75
35
|
}
|
|
76
|
-
/** Claim the next card. Returns its id, or null for "nothing to do". */
|
|
77
36
|
async function takeTask() {
|
|
78
37
|
try {
|
|
79
38
|
const res = await api.post('/api/agent/board/take-task', {});
|
|
@@ -98,10 +57,7 @@ export function startMockBoardWorker(opts) {
|
|
|
98
57
|
}
|
|
99
58
|
async function submit(cardId) {
|
|
100
59
|
const start = Date.now();
|
|
101
|
-
//
|
|
102
|
-
// active on the card, so the short budget takes over immediately — that is
|
|
103
|
-
// what turns a reap into a prompt return to polling even after we have
|
|
104
|
-
// already waited many minutes on 400s.
|
|
60
|
+
// The latest 404 may signal a reap; switch to the short budget even after a long run of 400s.
|
|
105
61
|
let budgetMs = SUBMIT_NOT_READY_BUDGET_MS;
|
|
106
62
|
for (let attempt = 1; !stopped; attempt++) {
|
|
107
63
|
const loud = attempt === 1 || attempt % SUBMIT_LOG_EVERY === 0;
|
|
@@ -115,9 +71,7 @@ export function startMockBoardWorker(opts) {
|
|
|
115
71
|
return;
|
|
116
72
|
}
|
|
117
73
|
const body = await res.text().catch(() => '');
|
|
118
|
-
// 403
|
|
119
|
-
// reaped and re-paired, so it is no longer ours to submit and no
|
|
120
|
-
// amount of retrying changes that. Go back to polling at once.
|
|
74
|
+
// A 403 means this card is no longer ours; retries cannot restore ownership.
|
|
121
75
|
if (res.status === 403) {
|
|
122
76
|
console.warn(`[mock-board] card ${cardId} no longer ours (HTTP 403) — resuming polling`);
|
|
123
77
|
return;
|
|
@@ -158,7 +112,6 @@ export function startMockBoardWorker(opts) {
|
|
|
158
112
|
}
|
|
159
113
|
console.log(`[mock-board] worker started (poll ${config.mockBoardPollMs}ms)`);
|
|
160
114
|
loop().catch((err) => {
|
|
161
|
-
// Defensive: every await above already swallows its own failures.
|
|
162
115
|
console.error(`[mock-board] loop crashed: ${toErrorMessage(err)}`);
|
|
163
116
|
});
|
|
164
117
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-board-worker.js","sourceRoot":"","sources":["../src/mock-board-worker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,
|
|
1
|
+
{"version":3,"file":"mock-board-worker.js","sourceRoot":"","sources":["../src/mock-board-worker.ts"],"names":[],"mappings":"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"}
|
package/dist/platform/linux.js
CHANGED
|
@@ -16,7 +16,6 @@ async function isUserSystemdAvailable() {
|
|
|
16
16
|
return true;
|
|
17
17
|
}
|
|
18
18
|
catch (err) {
|
|
19
|
-
// Node exec error includes message, stderr, and stdout — check all
|
|
20
19
|
const msg = toErrorMessage(err);
|
|
21
20
|
const stderr = err?.stderr ?? '';
|
|
22
21
|
const stdout = err?.stdout ?? '';
|
|
@@ -82,7 +81,6 @@ export async function installLinux(config) {
|
|
|
82
81
|
agentControllerPath = join(nodePath, '..', 'agent-controller');
|
|
83
82
|
}
|
|
84
83
|
await fs.mkdir(systemdDir, { recursive: true });
|
|
85
|
-
// Stop and disable existing service before reinstalling (check both user and system level)
|
|
86
84
|
try {
|
|
87
85
|
await execAsync('systemctl --user stop agent-controller 2>/dev/null');
|
|
88
86
|
await execAsync('systemctl --user disable agent-controller 2>/dev/null');
|
|
@@ -99,7 +97,6 @@ export async function installLinux(config) {
|
|
|
99
97
|
catch {
|
|
100
98
|
// Not running — fine
|
|
101
99
|
}
|
|
102
|
-
// Remove old unit files
|
|
103
100
|
try {
|
|
104
101
|
await fs.unlink(SYSTEM_SERVICE_PATH);
|
|
105
102
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linux.js","sourceRoot":"","sources":["../../src/platform/linux.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAuB,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAItD,MAAM,mBAAmB,GAAG,8CAA8C,CAAC;AAE3E,MAAM,mBAAmB,GAAG;IAC1B,iBAAiB;IACjB,0BAA0B;IAC1B,2BAA2B;CAC5B,CAAC;AAEF,KAAK,UAAU,sBAAsB;IACnC,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,8BAA8B,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,
|
|
1
|
+
{"version":3,"file":"linux.js","sourceRoot":"","sources":["../../src/platform/linux.ts"],"names":[],"mappings":"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"}
|
package/dist/platform/macos.js
CHANGED
|
@@ -14,7 +14,6 @@ export async function installMacOS(config) {
|
|
|
14
14
|
const nodePath = process.execPath;
|
|
15
15
|
let agentControllerPath = await which('agent-controller');
|
|
16
16
|
if (!agentControllerPath) {
|
|
17
|
-
// Fallback: derive from node path
|
|
18
17
|
agentControllerPath = join(nodePath, '..', 'agent-controller');
|
|
19
18
|
}
|
|
20
19
|
await fs.mkdir(launchAgentsDir, { recursive: true });
|
|
@@ -55,7 +54,6 @@ export async function installMacOS(config) {
|
|
|
55
54
|
</dict>
|
|
56
55
|
</plist>
|
|
57
56
|
`;
|
|
58
|
-
// Stop and unload existing service before reinstalling
|
|
59
57
|
try {
|
|
60
58
|
await execAsync(`launchctl unload "${plistPath}" 2>/dev/null`);
|
|
61
59
|
console.log('Previous service unloaded.');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"macos.js","sourceRoot":"","sources":["../../src/platform/macos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAuB,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAItD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAsB;IACvD,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,qCAAqC,CAAC,CAAC;IAC/E,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAErD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,IAAI,mBAAmB,GAAG,MAAM,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC1D,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,
|
|
1
|
+
{"version":3,"file":"macos.js","sourceRoot":"","sources":["../../src/platform/macos.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-types.js","sourceRoot":"","sources":["../../src/providers/chat-types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chat-types.js","sourceRoot":"","sources":["../../src/providers/chat-types.ts"],"names":[],"mappings":""}
|
|
@@ -22,18 +22,6 @@ export interface ChannelMessageMeta {
|
|
|
22
22
|
file_path?: string;
|
|
23
23
|
}
|
|
24
24
|
export type ReplyHandler = (reply: ChannelReply, tool: 'reply' | 'edit_message') => void;
|
|
25
|
-
/**
|
|
26
|
-
* MCP channel server — stdio-based, modeled after anthropics/claude-plugins-official
|
|
27
|
-
* `fakechat/server.ts`. When Claude Code is launched with
|
|
28
|
-
* `--channels plugin:<plugin-name>` and a `.mcp.json` entry that spawns this
|
|
29
|
-
* process, it advertises the `claude/channel` experimental capability.
|
|
30
|
-
*
|
|
31
|
-
* Inbound (we → Claude): `pushChatMessage(content, meta)` emits an MCP
|
|
32
|
-
* notification `notifications/claude/channel`.
|
|
33
|
-
*
|
|
34
|
-
* Outbound (Claude → we): Claude calls our `reply` / `edit_message` tool.
|
|
35
|
-
* Listeners registered via `onReply(handler)` receive the call args.
|
|
36
|
-
*/
|
|
37
25
|
export declare class ClaudeChannelServer extends EventEmitter {
|
|
38
26
|
private readonly opts;
|
|
39
27
|
private server;
|
|
@@ -45,16 +33,9 @@ export declare class ClaudeChannelServer extends EventEmitter {
|
|
|
45
33
|
instructions?: string;
|
|
46
34
|
});
|
|
47
35
|
private registerHandlers;
|
|
48
|
-
/**
|
|
49
|
-
* Start the MCP server on a given transport (stdio by default).
|
|
50
|
-
* Pass a custom transport for in-process tests.
|
|
51
|
-
*/
|
|
52
36
|
start(transport?: Transport): Promise<void>;
|
|
53
|
-
/** Emit a channel notification to Claude. */
|
|
54
37
|
pushChatMessage(content: string, meta: ChannelMessageMeta): Promise<void>;
|
|
55
|
-
/** Register a callback for incoming reply/edit tool calls from Claude. */
|
|
56
38
|
onReply(handler: ReplyHandler): () => void;
|
|
57
|
-
/** Graceful shutdown. */
|
|
58
39
|
stop(): Promise<void>;
|
|
59
40
|
isStarted(): boolean;
|
|
60
41
|
}
|
|
@@ -3,18 +3,6 @@ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
|
3
3
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
4
|
import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
|
|
5
5
|
import { toErrorMessage } from '../../utils/response.js';
|
|
6
|
-
/**
|
|
7
|
-
* MCP channel server — stdio-based, modeled after anthropics/claude-plugins-official
|
|
8
|
-
* `fakechat/server.ts`. When Claude Code is launched with
|
|
9
|
-
* `--channels plugin:<plugin-name>` and a `.mcp.json` entry that spawns this
|
|
10
|
-
* process, it advertises the `claude/channel` experimental capability.
|
|
11
|
-
*
|
|
12
|
-
* Inbound (we → Claude): `pushChatMessage(content, meta)` emits an MCP
|
|
13
|
-
* notification `notifications/claude/channel`.
|
|
14
|
-
*
|
|
15
|
-
* Outbound (Claude → we): Claude calls our `reply` / `edit_message` tool.
|
|
16
|
-
* Listeners registered via `onReply(handler)` receive the call args.
|
|
17
|
-
*/
|
|
18
6
|
export class ClaudeChannelServer extends EventEmitter {
|
|
19
7
|
opts;
|
|
20
8
|
server;
|
|
@@ -107,10 +95,6 @@ export class ClaudeChannelServer extends EventEmitter {
|
|
|
107
95
|
}
|
|
108
96
|
});
|
|
109
97
|
}
|
|
110
|
-
/**
|
|
111
|
-
* Start the MCP server on a given transport (stdio by default).
|
|
112
|
-
* Pass a custom transport for in-process tests.
|
|
113
|
-
*/
|
|
114
98
|
async start(transport) {
|
|
115
99
|
if (this.started)
|
|
116
100
|
return;
|
|
@@ -118,7 +102,6 @@ export class ClaudeChannelServer extends EventEmitter {
|
|
|
118
102
|
await this.server.connect(this.transport);
|
|
119
103
|
this.started = true;
|
|
120
104
|
}
|
|
121
|
-
/** Emit a channel notification to Claude. */
|
|
122
105
|
async pushChatMessage(content, meta) {
|
|
123
106
|
await this.server.notification({
|
|
124
107
|
method: 'notifications/claude/channel',
|
|
@@ -131,12 +114,10 @@ export class ClaudeChannelServer extends EventEmitter {
|
|
|
131
114
|
},
|
|
132
115
|
});
|
|
133
116
|
}
|
|
134
|
-
/** Register a callback for incoming reply/edit tool calls from Claude. */
|
|
135
117
|
onReply(handler) {
|
|
136
118
|
this.on('reply', handler);
|
|
137
119
|
return () => this.off('reply', handler);
|
|
138
120
|
}
|
|
139
|
-
/** Graceful shutdown. */
|
|
140
121
|
async stop() {
|
|
141
122
|
if (!this.started)
|
|
142
123
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel-server.js","sourceRoot":"","sources":["../../../src/providers/claude-code/channel-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAEnG,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AA4BzD
|
|
1
|
+
{"version":3,"file":"channel-server.js","sourceRoot":"","sources":["../../../src/providers/claude-code/channel-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,30 +6,13 @@ export interface ClaudeCodeProviderConfig {
|
|
|
6
6
|
anthropicApiKey?: string;
|
|
7
7
|
anthropicAuthToken?: string;
|
|
8
8
|
claudeCodeOauthToken?: string;
|
|
9
|
-
/** Content for CLAUDE.md in the workspace (persona / bootstrap). */
|
|
10
9
|
claudeMdContent?: string;
|
|
11
|
-
/** Backend URL for openclaw-backend MCP entry. */
|
|
12
10
|
backendUrl?: string;
|
|
13
|
-
/** Agent token for openclaw-backend MCP auth. */
|
|
14
11
|
agentToken?: string;
|
|
15
|
-
/** Override socket path (tests). */
|
|
16
12
|
socketPath?: string;
|
|
17
|
-
/** Absolute path to the `agent-controller` executable used to spawn the
|
|
18
|
-
* channel-server worker. Defaults to `agent-controller` on PATH. */
|
|
19
13
|
agentControllerBin?: string;
|
|
20
14
|
}
|
|
21
15
|
export type ReplyPublisher = (reply: ChannelReply, tool: 'reply' | 'edit_message', meta: ChannelReplyMeta) => void;
|
|
22
|
-
/**
|
|
23
|
-
* Claude Code provider — orchestrates a local Claude Code subprocess plus a
|
|
24
|
-
* channel-server worker that bridges Claude's stdio MCP channel into this
|
|
25
|
-
* controller process via a Unix domain socket.
|
|
26
|
-
*
|
|
27
|
-
* Architecture:
|
|
28
|
-
* [Claude Code] ── stdio MCP ──> [agent-controller channel-server worker]
|
|
29
|
-
* ── unix socket ──> [main agent-controller]
|
|
30
|
-
*
|
|
31
|
-
* See `socket-bridge.ts` for the wire protocol.
|
|
32
|
-
*/
|
|
33
16
|
export declare class ClaudeCodeProvider implements IAgentProvider {
|
|
34
17
|
private readonly cfg;
|
|
35
18
|
readonly name = "claude-code";
|
|
@@ -41,15 +24,10 @@ export declare class ClaudeCodeProvider implements IAgentProvider {
|
|
|
41
24
|
private pendingCodeResolvers;
|
|
42
25
|
private replyPublisher;
|
|
43
26
|
constructor(cfg: ClaudeCodeProviderConfig);
|
|
44
|
-
/** Register an outbound publisher; called by the chat handler at startup. */
|
|
45
27
|
setReplyPublisher(fn: ReplyPublisher): void;
|
|
46
|
-
/** Used by the chat handler to feed user-submitted codes into the login flow. */
|
|
47
28
|
submitLoginCode(code: string): boolean;
|
|
48
|
-
/** The chat handler checks this to short-circuit the first message with the login URL. */
|
|
49
29
|
getPendingLoginUrl(): string | null;
|
|
50
|
-
/** Push an inbound chat message to Claude via the channel worker. */
|
|
51
30
|
pushToChannel(content: string, meta: ChannelMessageMeta): void;
|
|
52
|
-
/** Internal — invoked by the bridge when Claude replies via the tool. */
|
|
53
31
|
handleChannelReply(content: string, meta: ChannelReplyMeta, tool: 'reply' | 'edit_message'): void;
|
|
54
32
|
connect(): Promise<void>;
|
|
55
33
|
disconnect(): void;
|
|
@@ -8,17 +8,7 @@ import { loadOrCreateMemoryMcpToken } from '../../memory-mcp-server.js';
|
|
|
8
8
|
import { runSetupTokenFlow } from './login-flow.js';
|
|
9
9
|
import { ChannelBridgeServer, DEFAULT_SOCKET_PATH } from './socket-bridge.js';
|
|
10
10
|
import { ClaudeProcess } from './spawn-claude.js';
|
|
11
|
-
|
|
12
|
-
* Claude Code provider — orchestrates a local Claude Code subprocess plus a
|
|
13
|
-
* channel-server worker that bridges Claude's stdio MCP channel into this
|
|
14
|
-
* controller process via a Unix domain socket.
|
|
15
|
-
*
|
|
16
|
-
* Architecture:
|
|
17
|
-
* [Claude Code] ── stdio MCP ──> [agent-controller channel-server worker]
|
|
18
|
-
* ── unix socket ──> [main agent-controller]
|
|
19
|
-
*
|
|
20
|
-
* See `socket-bridge.ts` for the wire protocol.
|
|
21
|
-
*/
|
|
11
|
+
// Claude owns the worker's stdio MCP channel; the controller reaches it through socket-bridge.ts.
|
|
22
12
|
export class ClaudeCodeProvider {
|
|
23
13
|
cfg;
|
|
24
14
|
name = 'claude-code';
|
|
@@ -32,11 +22,9 @@ export class ClaudeCodeProvider {
|
|
|
32
22
|
constructor(cfg) {
|
|
33
23
|
this.cfg = cfg;
|
|
34
24
|
}
|
|
35
|
-
/** Register an outbound publisher; called by the chat handler at startup. */
|
|
36
25
|
setReplyPublisher(fn) {
|
|
37
26
|
this.replyPublisher = fn;
|
|
38
27
|
}
|
|
39
|
-
/** Used by the chat handler to feed user-submitted codes into the login flow. */
|
|
40
28
|
submitLoginCode(code) {
|
|
41
29
|
const resolver = this.pendingCodeResolvers.shift();
|
|
42
30
|
if (resolver) {
|
|
@@ -45,11 +33,9 @@ export class ClaudeCodeProvider {
|
|
|
45
33
|
}
|
|
46
34
|
return false;
|
|
47
35
|
}
|
|
48
|
-
/** The chat handler checks this to short-circuit the first message with the login URL. */
|
|
49
36
|
getPendingLoginUrl() {
|
|
50
37
|
return this.pendingLoginUrl;
|
|
51
38
|
}
|
|
52
|
-
/** Push an inbound chat message to Claude via the channel worker. */
|
|
53
39
|
pushToChannel(content, meta) {
|
|
54
40
|
if (!this.bridge) {
|
|
55
41
|
logCollector?.push('claude_push_no_bridge', 'warn', 'pushToChannel called but bridge is not up yet');
|
|
@@ -57,13 +43,11 @@ export class ClaudeCodeProvider {
|
|
|
57
43
|
}
|
|
58
44
|
this.bridge.push(content, meta);
|
|
59
45
|
}
|
|
60
|
-
/** Internal — invoked by the bridge when Claude replies via the tool. */
|
|
61
46
|
handleChannelReply(content, meta, tool) {
|
|
62
47
|
this.lastHeartbeatAt = Date.now();
|
|
63
48
|
const reply = { text: content, reply_to: meta.message_id };
|
|
64
49
|
this.replyPublisher?.(reply, tool, meta);
|
|
65
50
|
}
|
|
66
|
-
// ─── Lifecycle ────────────────────────────────────────────────────────────
|
|
67
51
|
async connect() {
|
|
68
52
|
if (this._connected)
|
|
69
53
|
return;
|
|
@@ -105,7 +89,6 @@ export class ClaudeCodeProvider {
|
|
|
105
89
|
async abort() {
|
|
106
90
|
this.claude?.interrupt();
|
|
107
91
|
}
|
|
108
|
-
// ─── Messaging ────────────────────────────────────────────────────────────
|
|
109
92
|
async sendMessage(params) {
|
|
110
93
|
try {
|
|
111
94
|
if (this.pendingLoginUrl) {
|
|
@@ -190,7 +173,6 @@ export class ClaudeCodeProvider {
|
|
|
190
173
|
return [];
|
|
191
174
|
}
|
|
192
175
|
}
|
|
193
|
-
// ─── Internals ────────────────────────────────────────────────────────────
|
|
194
176
|
hasCredentials() {
|
|
195
177
|
if (this.cfg.anthropicAuthToken || this.cfg.anthropicApiKey || this.cfg.claudeCodeOauthToken) {
|
|
196
178
|
return true;
|
|
@@ -203,9 +185,7 @@ export class ClaudeCodeProvider {
|
|
|
203
185
|
}
|
|
204
186
|
}
|
|
205
187
|
async materializeWorkspace() {
|
|
206
|
-
//
|
|
207
|
-
// load-or-create is race-safe). Unreadable → omit the header: memory MCP
|
|
208
|
-
// answers 401 but Claude itself still starts.
|
|
188
|
+
// Share the memory server's persisted token. If unreadable, let Claude start; memory calls will return 401.
|
|
209
189
|
const memoryMcpToken = await loadOrCreateMemoryMcpToken().catch((err) => {
|
|
210
190
|
console.warn('[claude-code] memory MCP token unavailable:', toErrorMessage(err));
|
|
211
191
|
return undefined;
|
|
@@ -223,8 +203,7 @@ export class ClaudeCodeProvider {
|
|
|
223
203
|
});
|
|
224
204
|
}
|
|
225
205
|
async startBridgeAndClaude() {
|
|
226
|
-
//
|
|
227
|
-
// Claude spawns it.
|
|
206
|
+
// Start the bridge first so the worker can connect immediately when Claude spawns it.
|
|
228
207
|
this.bridge = new ChannelBridgeServer({
|
|
229
208
|
socketPath: this.cfg.socketPath ?? DEFAULT_SOCKET_PATH,
|
|
230
209
|
});
|
|
@@ -235,8 +214,6 @@ export class ClaudeCodeProvider {
|
|
|
235
214
|
this.lastHeartbeatAt = Date.now();
|
|
236
215
|
});
|
|
237
216
|
await this.bridge.listen();
|
|
238
|
-
// 2) Spawn Claude — it will exec `agent-controller channel-server` as a
|
|
239
|
-
// stdio MCP server per the workspace's `.mcp.json`.
|
|
240
217
|
this.claude = new ClaudeProcess({
|
|
241
218
|
workspaceDir: this.cfg.workspaceDir,
|
|
242
219
|
channelsFlag: 'mcp:agent-controller-channel',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/claude-code/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAGzB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/claude-code/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAGzB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAoBlD,kGAAkG;AAClG,MAAM,OAAO,kBAAkB;IAWA;IAVpB,IAAI,GAAG,aAAa,CAAC;IAEtB,UAAU,GAAG,KAAK,CAAC;IACnB,MAAM,GAA+B,IAAI,CAAC;IAC1C,MAAM,GAAyB,IAAI,CAAC;IACpC,eAAe,GAAG,CAAC,CAAC;IACpB,eAAe,GAAkB,IAAI,CAAC;IACtC,oBAAoB,GAAkC,EAAE,CAAC;IACzD,cAAc,GAA0B,IAAI,CAAC;IAErD,YAA6B,GAA6B;QAA7B,QAAG,GAAH,GAAG,CAA0B;IAAG,CAAC;IAE9D,iBAAiB,CAAC,EAAkB;QAClC,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED,eAAe,CAAC,IAAY;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;QACnD,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,aAAa,CAAC,OAAe,EAAE,IAAwB;QACrD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,YAAY,EAAE,IAAI,CAChB,uBAAuB,EACvB,MAAM,EACN,+CAA+C,CAChD,CAAC;YACF,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,kBAAkB,CAChB,OAAe,EACf,IAAsB,EACtB,IAA8B;QAE9B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,KAAK,GAAiB,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;QACzE,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO;QAC5B,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;gBAC3B,YAAY,EAAE,IAAI,CAChB,6BAA6B,EAC7B,MAAM,EACN,+DAA+D,CAChE,CAAC;gBACF,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC3B,OAAO;YACT,CAAC;YACD,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAClC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAClC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,YAAY,EAAE,IAAI,CAAC,mBAAmB,EAAE,MAAM,EAAE,gCAAgC,CAAC,CAAC;QACpF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,YAAY,EAAE,IAAI,CAChB,uBAAuB,EACvB,OAAO,EACP,+BAA+B,cAAc,CAAC,GAAG,CAAC,EAAE,CACrD,CAAC;YACF,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,UAAU;QACR,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,KAAK,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,KAAK,CAAC;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;QACvF,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK,IAAI,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAyB;QACzC,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACzB,MAAM,CAAC,MAAM,EAAE,CACb,0BAA0B,IAAI,CAAC,eAAe,0DAA0D,CACzG,CAAC;gBACF,OAAO;YACT,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YAC3C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,CAAC,OAAO,EAAE,CAAC,wCAAwC,CAAC,CAAC;gBAC3D,OAAO;YACT,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;gBAC5B,OAAO,EAAE,MAAM,CAAC,UAAU;gBAC1B,MAAM,EAAE,KAAK;gBACb,UAAU,EAAE,MAAM,CAAC,cAAc;aAClC,CAAC,CAAC;YACH,4EAA4E;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,OAAO,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACnC,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC/C,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,OAAO;iBACJ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;iBACnC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;gBAClB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAClC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;gBAC/C,OAAO;oBACL,GAAG,EAAE,SAAS;oBACd,SAAS;oBACT,IAAI,EAAE,aAAa;oBACnB,KAAK,EAAE,SAAS;oBAChB,SAAS,EAAE,EAAE,CAAC,OAAO;iBACP,CAAC;YACnB,CAAC,CAAC,CACL,CAAC;YACF,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;QAC5D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,UAAkB,EAAE,KAAK,GAAG,GAAG;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACnC,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,QAAQ,CAAC,CAAC;QACnD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7D,MAAM,IAAI,GAAkB,EAAE,CAAC;YAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAK1B,CAAC;oBACF,MAAM,IAAI,GACR,GAAG,CAAC,IAAI;wBACR,GAAG,CAAC,OAAO,EAAE,IAAI;wBACjB,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;oBACtF,IAAI,CAAC,IAAI;wBAAE,SAAS;oBACpB,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;oBAC9C,MAAM,OAAO,GACX,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAE,UAAiC,CAAC;oBACnF,IAAI,CAAC,IAAI,CAAC;wBACR,IAAI;wBACJ,OAAO;wBACP,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;qBACrD,CAAC,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,yBAAyB;gBAC3B,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,cAAc;QACpB,IAAI,IAAI,CAAC,GAAG,CAAC,kBAAkB,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;YAC7F,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC;YACH,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACvF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,oBAAoB;QAChC,4GAA4G;QAC5G,MAAM,cAAc,GAAG,MAAM,0BAA0B,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YAC/E,OAAO,CAAC,IAAI,CAAC,6CAA6C,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;YACjF,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC,CAAC;QACH,MAAM,uBAAuB,CAAC;YAC5B,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY;YACnC,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe;YACzC,kBAAkB,EAAE,IAAI,CAAC,GAAG,CAAC,kBAAkB;YAC/C,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU;YAC/B,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU;YAC/B,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe;YACzC,kBAAkB,EAAE,IAAI,CAAC,GAAG,CAAC,kBAAkB;YAC/C,iBAAiB,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU;YACtC,cAAc;SACf,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,oBAAoB;QAChC,sFAAsF;QACtF,IAAI,CAAC,MAAM,GAAG,IAAI,mBAAmB,CAAC;YACpC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,mBAAmB;SACvD,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,EAAE,CACZ,OAAO,EACP,CAAC,OAAe,EAAE,IAAsB,EAAE,IAA8B,EAAE,EAAE;YAC1E,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC,CACF,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YAC7B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACpC,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAE3B,IAAI,CAAC,MAAM,GAAG,IAAI,aAAa,CAAC;YAC9B,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY;YACnC,YAAY,EAAE,8BAA8B;YAC5C,iEAAiE;YACjE,+DAA+D;YAC/D,kDAAkD;YAClD,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YAC5B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACpC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAEO,KAAK,CAAC,cAAc;QAC1B,IAAI,CAAC;YACH,MAAM,iBAAiB,CAAC;gBACtB,eAAe,EAAE,CAAC,GAAG,EAAE,EAAE;oBACvB,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;gBAC7B,CAAC;gBACD,WAAW,EAAE,GAAG,EAAE,CAChB,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;oBAC9B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC1C,CAAC,CAAC;aACL,CAAC,CAAC;YACH,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAClC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAClC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,YAAY,EAAE,IAAI,CAChB,yBAAyB,EACzB,OAAO,EACP,sBAAsB,cAAc,CAAC,GAAG,CAAC,EAAE,CAC5C,CAAC;YACF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC9B,CAAC;IACH,CAAC;IAEO,eAAe;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;QAClC,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACpE,IAAI,CAAC;YACH,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;gBAAE,OAAO,GAAG,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -1,26 +1,9 @@
|
|
|
1
1
|
import { spawn } from 'node:child_process';
|
|
2
2
|
export interface LoginFlowDeps {
|
|
3
|
-
/** Called with the login URL captured from `claude setup-token` stdout. */
|
|
4
3
|
publishLoginUrl(url: string): void | Promise<void>;
|
|
5
|
-
/** Resolves with the verification code that the user submitted in chat. */
|
|
6
4
|
waitForCode(): Promise<string>;
|
|
7
|
-
/** Override for tests — inject a fake child_process. */
|
|
8
5
|
spawnFn?: typeof spawn;
|
|
9
|
-
/** Override credentials path (tests). Defaults to `~/.claude/.credentials.json`. */
|
|
10
6
|
credentialsPath?: string;
|
|
11
|
-
/** Overall timeout in ms. Defaults to 10 minutes. */
|
|
12
7
|
timeoutMs?: number;
|
|
13
8
|
}
|
|
14
|
-
/**
|
|
15
|
-
* Drive the `claude setup-token` subscription login flow.
|
|
16
|
-
*
|
|
17
|
-
* Flow:
|
|
18
|
-
* 1. Spawn `claude setup-token` and watch stdout for the `claude.ai/oauth/authorize?...` URL.
|
|
19
|
-
* 2. Push the URL to chat via `deps.publishLoginUrl`.
|
|
20
|
-
* 3. Await `deps.waitForCode()` — resolves with the code the user submitted.
|
|
21
|
-
* 4. Write `code + "\n"` to subprocess stdin, wait for exit.
|
|
22
|
-
* 5. Verify `~/.claude/.credentials.json` was created/updated → success.
|
|
23
|
-
*
|
|
24
|
-
* Emits structured logCollector events at each milestone.
|
|
25
|
-
*/
|
|
26
9
|
export declare function runSetupTokenFlow(deps: LoginFlowDeps): Promise<void>;
|
|
@@ -5,19 +5,7 @@ import os from 'node:os';
|
|
|
5
5
|
import { logCollector } from '../../connection.js';
|
|
6
6
|
import { toErrorMessage } from '../../utils/response.js';
|
|
7
7
|
const AUTH_URL_RE = /https:\/\/claude\.ai\/oauth\/authorize\?\S+/;
|
|
8
|
-
const DEFAULT_TIMEOUT_MS = 10 * 60 * 1000;
|
|
9
|
-
/**
|
|
10
|
-
* Drive the `claude setup-token` subscription login flow.
|
|
11
|
-
*
|
|
12
|
-
* Flow:
|
|
13
|
-
* 1. Spawn `claude setup-token` and watch stdout for the `claude.ai/oauth/authorize?...` URL.
|
|
14
|
-
* 2. Push the URL to chat via `deps.publishLoginUrl`.
|
|
15
|
-
* 3. Await `deps.waitForCode()` — resolves with the code the user submitted.
|
|
16
|
-
* 4. Write `code + "\n"` to subprocess stdin, wait for exit.
|
|
17
|
-
* 5. Verify `~/.claude/.credentials.json` was created/updated → success.
|
|
18
|
-
*
|
|
19
|
-
* Emits structured logCollector events at each milestone.
|
|
20
|
-
*/
|
|
8
|
+
const DEFAULT_TIMEOUT_MS = 10 * 60 * 1000;
|
|
21
9
|
export async function runSetupTokenFlow(deps) {
|
|
22
10
|
const spawnFn = deps.spawnFn ?? spawn;
|
|
23
11
|
const credPath = deps.credentialsPath ?? path.join(os.homedir(), '.claude', '.credentials.json');
|
|
@@ -79,9 +67,7 @@ export async function runSetupTokenFlow(deps) {
|
|
|
79
67
|
}
|
|
80
68
|
};
|
|
81
69
|
const onStderr = (chunk) => {
|
|
82
|
-
//
|
|
83
|
-
// so a chatty subprocess can't grow memory unbounded over a long
|
|
84
|
-
// login wait (10-minute default timeout).
|
|
70
|
+
// Bound output during long login waits; only the tail is needed to diagnose a failure.
|
|
85
71
|
stderrBuf += chunk.toString();
|
|
86
72
|
if (stderrBuf.length > 1000) {
|
|
87
73
|
stderrBuf = stderrBuf.slice(-1000);
|