@openclaw-cloud/agent-controller 2.1.0 → 2.2.1
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/commands/bootstrap.js +3 -28
- package/dist/commands/bootstrap.js.map +1 -1
- package/dist/connection.js +11 -0
- package/dist/connection.js.map +1 -1
- package/dist/handlers/memory.d.ts +6 -0
- package/dist/handlers/memory.js +100 -13
- package/dist/handlers/memory.js.map +1 -1
- package/dist/index.js +23 -4
- package/dist/index.js.map +1 -1
- package/dist/providers/claude-code/index.js +4 -0
- package/dist/providers/claude-code/index.js.map +1 -1
- package/dist/providers/claude-code/login-flow.js +6 -0
- package/dist/providers/claude-code/login-flow.js.map +1 -1
- package/dist/providers/claude-code/settings-writer.js +33 -18
- package/dist/providers/claude-code/settings-writer.js.map +1 -1
- package/dist/providers/claude-code/socket-bridge.d.ts +10 -0
- package/dist/providers/claude-code/socket-bridge.js +41 -42
- package/dist/providers/claude-code/socket-bridge.js.map +1 -1
- package/dist/providers/claude-code/spawn-claude.d.ts +5 -1
- package/dist/providers/claude-code/spawn-claude.js +1 -1
- package/dist/providers/claude-code/spawn-claude.js.map +1 -1
- package/dist/providers/index.js +5 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/utils/agent-controller-bin.d.ts +8 -0
- package/dist/utils/agent-controller-bin.js +58 -0
- package/dist/utils/agent-controller-bin.js.map +1 -0
- package/dist/utils/anthropic-auth.d.ts +25 -0
- package/dist/utils/anthropic-auth.js +13 -0
- package/dist/utils/anthropic-auth.js.map +1 -0
- package/dist/utils/apply-config.d.ts +28 -0
- package/dist/utils/apply-config.js +268 -0
- package/dist/utils/apply-config.js.map +1 -1
- package/dist/utils/claude-env.js +9 -4
- package/dist/utils/claude-env.js.map +1 -1
- package/dist/utils/config-merge-paths.d.ts +27 -0
- package/dist/utils/config-merge-paths.js +33 -0
- package/dist/utils/config-merge-paths.js.map +1 -0
- package/dist/utils/write-workspace-files.d.ts +15 -0
- package/dist/utils/write-workspace-files.js +48 -0
- package/dist/utils/write-workspace-files.js.map +1 -0
- package/package.json +1 -1
|
@@ -13,6 +13,16 @@ import type { ChannelReply, ChannelMessageMeta, ChannelReplyMeta } from './chann
|
|
|
13
13
|
* Liberal parsing: malformed lines are logged + dropped (never crash the link).
|
|
14
14
|
*/
|
|
15
15
|
export declare const DEFAULT_SOCKET_PATH: string;
|
|
16
|
+
/**
|
|
17
|
+
* Feed a chunk into a newline-delimited JSON accumulator. Returns the updated
|
|
18
|
+
* buffer (remaining, unterminated partial line) after invoking `onMessage`
|
|
19
|
+
* for each completed line that parses as JSON. Malformed lines invoke
|
|
20
|
+
* `onBadLine` (if provided) and are dropped.
|
|
21
|
+
*
|
|
22
|
+
* Extracted so the ChannelBridgeServer and ChannelBridgeClient can share
|
|
23
|
+
* the identical framing logic without duplication.
|
|
24
|
+
*/
|
|
25
|
+
export declare function ingestNdjsonLines<T>(buf: string, chunk: string, onMessage: (msg: Partial<T>) => void, onBadLine?: () => void): string;
|
|
16
26
|
export type SocketOp = {
|
|
17
27
|
op: 'hello';
|
|
18
28
|
pid: number;
|
|
@@ -18,6 +18,32 @@ import { toErrorMessage } from '../../utils/response.js';
|
|
|
18
18
|
* Liberal parsing: malformed lines are logged + dropped (never crash the link).
|
|
19
19
|
*/
|
|
20
20
|
export const DEFAULT_SOCKET_PATH = path.join(os.homedir(), '.openclaw', 'claude-channel.sock');
|
|
21
|
+
/**
|
|
22
|
+
* Feed a chunk into a newline-delimited JSON accumulator. Returns the updated
|
|
23
|
+
* buffer (remaining, unterminated partial line) after invoking `onMessage`
|
|
24
|
+
* for each completed line that parses as JSON. Malformed lines invoke
|
|
25
|
+
* `onBadLine` (if provided) and are dropped.
|
|
26
|
+
*
|
|
27
|
+
* Extracted so the ChannelBridgeServer and ChannelBridgeClient can share
|
|
28
|
+
* the identical framing logic without duplication.
|
|
29
|
+
*/
|
|
30
|
+
export function ingestNdjsonLines(buf, chunk, onMessage, onBadLine) {
|
|
31
|
+
let updated = buf + chunk;
|
|
32
|
+
let idx;
|
|
33
|
+
while ((idx = updated.indexOf('\n')) >= 0) {
|
|
34
|
+
const line = updated.slice(0, idx).trim();
|
|
35
|
+
updated = updated.slice(idx + 1);
|
|
36
|
+
if (!line)
|
|
37
|
+
continue;
|
|
38
|
+
try {
|
|
39
|
+
onMessage(JSON.parse(line));
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
onBadLine?.();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return updated;
|
|
46
|
+
}
|
|
21
47
|
/**
|
|
22
48
|
* Server side — lives in the main agent-controller process.
|
|
23
49
|
*
|
|
@@ -55,20 +81,22 @@ export class ChannelBridgeServer extends EventEmitter {
|
|
|
55
81
|
}
|
|
56
82
|
return new Promise((resolve, reject) => {
|
|
57
83
|
const srv = net.createServer((sock) => this.handleConnection(sock));
|
|
58
|
-
|
|
59
|
-
//
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
84
|
+
let bound = false;
|
|
85
|
+
// Single error handler — before bind completes, a listen error rejects
|
|
86
|
+
// the promise; after bind, it's a runtime error emitted to listeners.
|
|
87
|
+
// This removes the previous two-listener dance (once + on) and the
|
|
88
|
+
// brittle cross-removeListener cleanup on success.
|
|
89
|
+
const onError = (err) => {
|
|
90
|
+
if (!bound) {
|
|
91
|
+
reject(err);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
65
94
|
logCollector?.push('channel_bridge_error', 'error', `bridge server error: ${err.message}`);
|
|
66
95
|
this.emit('error', err);
|
|
67
96
|
};
|
|
68
|
-
srv.
|
|
69
|
-
srv.on('error', onRuntimeError);
|
|
97
|
+
srv.on('error', onError);
|
|
70
98
|
srv.listen(p, () => {
|
|
71
|
-
|
|
99
|
+
bound = true;
|
|
72
100
|
this.server = srv;
|
|
73
101
|
logCollector?.push('channel_bridge_listening', 'info', `channel bridge on ${p}`);
|
|
74
102
|
resolve();
|
|
@@ -101,23 +129,7 @@ export class ChannelBridgeServer extends EventEmitter {
|
|
|
101
129
|
});
|
|
102
130
|
}
|
|
103
131
|
ingest(chunk) {
|
|
104
|
-
this.buf
|
|
105
|
-
let idx;
|
|
106
|
-
while ((idx = this.buf.indexOf('\n')) >= 0) {
|
|
107
|
-
const line = this.buf.slice(0, idx).trim();
|
|
108
|
-
this.buf = this.buf.slice(idx + 1);
|
|
109
|
-
if (!line)
|
|
110
|
-
continue;
|
|
111
|
-
let msg = null;
|
|
112
|
-
try {
|
|
113
|
-
msg = JSON.parse(line);
|
|
114
|
-
}
|
|
115
|
-
catch {
|
|
116
|
-
logCollector?.push('channel_bridge_bad_line', 'warn', 'dropped malformed bridge line');
|
|
117
|
-
continue;
|
|
118
|
-
}
|
|
119
|
-
this.dispatch(msg);
|
|
120
|
-
}
|
|
132
|
+
this.buf = ingestNdjsonLines(this.buf, chunk, (msg) => this.dispatch(msg), () => logCollector?.push('channel_bridge_bad_line', 'warn', 'dropped malformed bridge line'));
|
|
121
133
|
}
|
|
122
134
|
dispatch(msg) {
|
|
123
135
|
if (!msg || typeof msg !== 'object' || !msg.op)
|
|
@@ -256,27 +268,14 @@ export class ChannelBridgeClient extends EventEmitter {
|
|
|
256
268
|
this.write({ op: tool === 'edit_message' ? 'edit' : 'reply', content, meta });
|
|
257
269
|
}
|
|
258
270
|
ingest(chunk) {
|
|
259
|
-
this.buf
|
|
260
|
-
let idx;
|
|
261
|
-
while ((idx = this.buf.indexOf('\n')) >= 0) {
|
|
262
|
-
const line = this.buf.slice(0, idx).trim();
|
|
263
|
-
this.buf = this.buf.slice(idx + 1);
|
|
264
|
-
if (!line)
|
|
265
|
-
continue;
|
|
266
|
-
let msg = null;
|
|
267
|
-
try {
|
|
268
|
-
msg = JSON.parse(line);
|
|
269
|
-
}
|
|
270
|
-
catch {
|
|
271
|
-
continue;
|
|
272
|
-
}
|
|
271
|
+
this.buf = ingestNdjsonLines(this.buf, chunk, (msg) => {
|
|
273
272
|
if (msg && msg.op === 'push') {
|
|
274
273
|
const m = msg;
|
|
275
274
|
const content = typeof m.content === 'string' ? m.content : '';
|
|
276
275
|
const meta = (m.meta ?? {});
|
|
277
276
|
this.emit('push', content, meta);
|
|
278
277
|
}
|
|
279
|
-
}
|
|
278
|
+
});
|
|
280
279
|
}
|
|
281
280
|
write(op) {
|
|
282
281
|
if (!this.sock)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-bridge.js","sourceRoot":"","sources":["../../../src/providers/claude-code/socket-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGzD;;;;;;;;;;;GAWG;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,qBAAqB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"socket-bridge.js","sourceRoot":"","sources":["../../../src/providers/claude-code/socket-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,11 @@ export interface SpawnClaudeDeps {
|
|
|
9
9
|
extraArgs?: string[];
|
|
10
10
|
/** Environment variables to merge on top of process.env. */
|
|
11
11
|
env?: Record<string, string | undefined>;
|
|
12
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* Pass `--dangerously-load-development-channels` to claude. Only needed
|
|
14
|
+
* when the channels feature is routed through an MCP-based dev plugin;
|
|
15
|
+
* production flows do not require it. Default: `false`.
|
|
16
|
+
*/
|
|
13
17
|
danglyDev?: boolean;
|
|
14
18
|
/** Override spawn (tests). */
|
|
15
19
|
spawnFn?: typeof spawn;
|
|
@@ -76,7 +76,7 @@ export class ClaudeProcess extends EventEmitter {
|
|
|
76
76
|
}
|
|
77
77
|
buildArgs() {
|
|
78
78
|
const args = ['--channels', this.deps.channelsFlag ?? 'plugin:agent-controller'];
|
|
79
|
-
if (this.deps.danglyDev
|
|
79
|
+
if (this.deps.danglyDev === true)
|
|
80
80
|
args.push('--dangerously-load-development-channels');
|
|
81
81
|
if (this.deps.extraArgs)
|
|
82
82
|
args.push(...this.deps.extraArgs);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawn-claude.js","sourceRoot":"","sources":["../../../src/providers/claude-code/spawn-claude.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"spawn-claude.js","sourceRoot":"","sources":["../../../src/providers/claude-code/spawn-claude.ts"],"names":[],"mappings":"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"}
|
package/dist/providers/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { OpenclawProvider } from './openclaw/index.js';
|
|
2
2
|
import { MockProvider } from './mock/index.js';
|
|
3
3
|
import { ClaudeCodeProvider } from './claude-code/index.js';
|
|
4
|
+
import { getWorkspaceDir } from '../workspace.js';
|
|
4
5
|
export { OpenclawProvider } from './openclaw/index.js';
|
|
5
6
|
export { MockProvider } from './mock/index.js';
|
|
6
7
|
export { ClaudeCodeProvider } from './claude-code/index.js';
|
|
@@ -23,7 +24,10 @@ export function createProvider(type, config) {
|
|
|
23
24
|
return new MockProvider();
|
|
24
25
|
case 'claude-code':
|
|
25
26
|
return new ClaudeCodeProvider({
|
|
26
|
-
|
|
27
|
+
// Prefer explicit workspaceDir from caller; otherwise fall back to the
|
|
28
|
+
// shared workspace util so K8s / VM / standalone all resolve
|
|
29
|
+
// consistently (no hardcoded /home/ubuntu).
|
|
30
|
+
workspaceDir: config.workspaceDir ?? getWorkspaceDir(),
|
|
27
31
|
anthropicApiKey: config.anthropicApiKey,
|
|
28
32
|
anthropicAuthToken: config.anthropicAuthToken,
|
|
29
33
|
claudeCodeOauthToken: config.claudeCodeOauthToken,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAUlD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D,IAAI,SAAS,GAA0B,IAAI,CAAC;AAE5C,MAAM,UAAU,iBAAiB,CAAC,QAAwB;IACxD,SAAS,GAAG,QAAQ,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,aAAa;IAC3B,SAAS,GAAG,IAAI,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,IAAY,EACZ,MAA0C;IAE1C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,UAAU;YACb,OAAO,IAAI,gBAAgB,CAAC,MAAM,CAAC,KAAK,IAAI,sBAAsB,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAC5F,KAAK,MAAM;YACT,OAAO,IAAI,YAAY,EAAE,CAAC;QAC5B,KAAK,aAAa;YAChB,OAAO,IAAI,kBAAkB,CAAC;gBAC5B,uEAAuE;gBACvE,6DAA6D;gBAC7D,4CAA4C;gBAC5C,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,eAAe,EAAE;gBACtD,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;gBAC7C,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;gBACjD,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,eAAe,EAAE,MAAM,CAAC,eAAe;aACxC,CAAC,CAAC;QACL;YACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns the absolute path to the `agent-controller` executable, or
|
|
3
|
+
* `undefined` when resolution fails (e.g. when running under `npx` from a
|
|
4
|
+
* temp directory with an unusual layout).
|
|
5
|
+
*/
|
|
6
|
+
export declare function getAgentControllerBinPath(): string | undefined;
|
|
7
|
+
/** Test-only: reset the cached value. */
|
|
8
|
+
export declare function __resetAgentControllerBinCacheForTests(): void;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve the absolute path of the `agent-controller` executable currently
|
|
3
|
+
* running this process. Used when writing `.mcp.json` for Claude Code so that
|
|
4
|
+
* spawned subprocesses do not depend on PATH containing the npm-global bin.
|
|
5
|
+
*
|
|
6
|
+
* Resolution order:
|
|
7
|
+
* 1. `which agent-controller` (via spawnSync) — finds the version the user
|
|
8
|
+
* installed on PATH. Most reliable on both macOS and Linux.
|
|
9
|
+
* 2. Fallback to `process.argv[1]` — absolute path to the script Node ran,
|
|
10
|
+
* i.e. the `bin/agent-controller.js` entry.
|
|
11
|
+
* 3. Returns `undefined` if neither resolves to an absolute path — callers
|
|
12
|
+
* should then fall back to the bare command `agent-controller`.
|
|
13
|
+
*
|
|
14
|
+
* Result is cached in a module-level variable.
|
|
15
|
+
*/
|
|
16
|
+
import { spawnSync } from 'node:child_process';
|
|
17
|
+
import path from 'node:path';
|
|
18
|
+
let cached;
|
|
19
|
+
function runWhich() {
|
|
20
|
+
try {
|
|
21
|
+
const res = spawnSync('which', ['agent-controller'], { encoding: 'utf8' });
|
|
22
|
+
if (res.status === 0) {
|
|
23
|
+
const out = (res.stdout || '').trim().split('\n')[0]?.trim();
|
|
24
|
+
if (out && path.isAbsolute(out)) {
|
|
25
|
+
return out;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
// ignore — `which` may not exist on some platforms (Windows)
|
|
31
|
+
}
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
function fromArgv() {
|
|
35
|
+
const argv1 = process.argv[1];
|
|
36
|
+
if (argv1 && path.isAbsolute(argv1)) {
|
|
37
|
+
return argv1;
|
|
38
|
+
}
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Returns the absolute path to the `agent-controller` executable, or
|
|
43
|
+
* `undefined` when resolution fails (e.g. when running under `npx` from a
|
|
44
|
+
* temp directory with an unusual layout).
|
|
45
|
+
*/
|
|
46
|
+
export function getAgentControllerBinPath() {
|
|
47
|
+
if (cached !== undefined) {
|
|
48
|
+
return cached ?? undefined;
|
|
49
|
+
}
|
|
50
|
+
const resolved = runWhich() ?? fromArgv();
|
|
51
|
+
cached = resolved ?? null;
|
|
52
|
+
return resolved;
|
|
53
|
+
}
|
|
54
|
+
/** Test-only: reset the cached value. */
|
|
55
|
+
export function __resetAgentControllerBinCacheForTests() {
|
|
56
|
+
cached = undefined;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=agent-controller-bin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-controller-bin.js","sourceRoot":"","sources":["../../src/utils/agent-controller-bin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,IAAI,MAAiC,CAAC;AAEtC,SAAS,QAAQ;IACf,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3E,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YAC7D,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChC,OAAO,GAAG,CAAC;YACb,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,6DAA6D;IAC/D,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,QAAQ;IACf,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB;IACvC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,MAAM,IAAI,SAAS,CAAC;IAC7B,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,EAAE,IAAI,QAAQ,EAAE,CAAC;IAC1C,MAAM,GAAG,QAAQ,IAAI,IAAI,CAAC;IAC1B,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,sCAAsC;IACpD,MAAM,GAAG,SAAS,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared classifier for Anthropic credentials.
|
|
3
|
+
*
|
|
4
|
+
* Both `providers/claude-code/settings-writer.ts` and `utils/claude-env.ts`
|
|
5
|
+
* need the same rule when writing Claude settings.json: an OAuth-like token
|
|
6
|
+
* (prefix `sk-ant-oat`) must be passed via `ANTHROPIC_AUTH_TOKEN`, a regular
|
|
7
|
+
* API key via `ANTHROPIC_API_KEY`, and an explicit auth token (when provided)
|
|
8
|
+
* wins over both.
|
|
9
|
+
*
|
|
10
|
+
* Returning a discriminated union keeps both call sites in sync and means
|
|
11
|
+
* the precedence is documented in one place.
|
|
12
|
+
*/
|
|
13
|
+
export type AnthropicAuth = {
|
|
14
|
+
kind: 'auth_token';
|
|
15
|
+
value: string;
|
|
16
|
+
} | {
|
|
17
|
+
kind: 'api_key';
|
|
18
|
+
value: string;
|
|
19
|
+
} | {
|
|
20
|
+
kind: 'none';
|
|
21
|
+
};
|
|
22
|
+
export declare function classifyAnthropicAuth(input: {
|
|
23
|
+
anthropicAuthToken?: string;
|
|
24
|
+
anthropicApiKey?: string;
|
|
25
|
+
}): AnthropicAuth;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export function classifyAnthropicAuth(input) {
|
|
2
|
+
const authToken = input.anthropicAuthToken?.trim();
|
|
3
|
+
if (authToken)
|
|
4
|
+
return { kind: 'auth_token', value: authToken };
|
|
5
|
+
const apiKey = input.anthropicApiKey?.trim();
|
|
6
|
+
if (!apiKey)
|
|
7
|
+
return { kind: 'none' };
|
|
8
|
+
// `sk-ant-oat*` are OAuth access tokens — must use ANTHROPIC_AUTH_TOKEN.
|
|
9
|
+
if (apiKey.startsWith('sk-ant-oat'))
|
|
10
|
+
return { kind: 'auth_token', value: apiKey };
|
|
11
|
+
return { kind: 'api_key', value: apiKey };
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=anthropic-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic-auth.js","sourceRoot":"","sources":["../../src/utils/anthropic-auth.ts"],"names":[],"mappings":"AAiBA,MAAM,UAAU,qBAAqB,CAAC,KAGrC;IACC,MAAM,SAAS,GAAG,KAAK,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC;IACnD,IAAI,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAE/D,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC;IAC7C,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAErC,yEAAyE;IACzE,IAAI,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAElF,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC5C,CAAC"}
|
|
@@ -7,3 +7,31 @@ import type { BootstrapResult } from '../api.js';
|
|
|
7
7
|
* 4. Restart gateway
|
|
8
8
|
*/
|
|
9
9
|
export declare function applyBootstrapConfig(data: BootstrapResult): Promise<void>;
|
|
10
|
+
type MergeOutcome = 'added' | 'equal' | 'conflict' | 'merged';
|
|
11
|
+
interface MergeResult {
|
|
12
|
+
changed: boolean;
|
|
13
|
+
outcomes: Array<{
|
|
14
|
+
path: string;
|
|
15
|
+
outcome: MergeOutcome;
|
|
16
|
+
detail?: string;
|
|
17
|
+
}>;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Merge allowlisted mergeable sections from remote payload into existing
|
|
21
|
+
* openclaw.json. Used for standalone deployments where users own their own
|
|
22
|
+
* config and a full overwrite would destroy customizations.
|
|
23
|
+
*
|
|
24
|
+
* Rules:
|
|
25
|
+
* - Only paths in `MERGEABLE_CONFIG_PATHS` are considered.
|
|
26
|
+
* - Missing local value → remote is written.
|
|
27
|
+
* - Equal values → no-op.
|
|
28
|
+
* - Differing values → conflict, local wins, warn+skip logged.
|
|
29
|
+
* - For `mcpServers` (and other object paths): conflict detection is
|
|
30
|
+
* per-key inside the dict.
|
|
31
|
+
* - Does NOT restart the gateway (standalone owns their own lifecycle).
|
|
32
|
+
* - Settings.json (~/.claude/settings.json) gets the same treatment for
|
|
33
|
+
* `mcpServers` and `env` only — apiKeyHelper/permissions/etc untouched.
|
|
34
|
+
* - auth-profiles.json and .env are NOT touched on standalone.
|
|
35
|
+
*/
|
|
36
|
+
export declare function applyMergeableConfig(data: BootstrapResult): Promise<MergeResult>;
|
|
37
|
+
export {};
|