openclaw-openagent 1.0.8 → 1.0.11
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/src/app/remote-agent-tool.js +108 -10
- package/dist/src/auth/config.js +65 -10
- package/dist/src/channel.js +2 -1
- package/dist/src/plugin-ui/assets/bg.png +0 -0
- package/dist/src/plugin-ui/assets/icon.png +0 -0
- package/dist/src/plugin-ui/assets/openagent-override.js +1753 -774
- package/dist/src/plugin-ui/ui-extension-loader/registry-regex.js +53 -5
- package/dist/src/proxy/auth-proxy.d.ts +1 -0
- package/dist/src/proxy/auth-proxy.js +28 -9
- package/dist/src/transport/oasn/oasn-http.d.ts +12 -0
- package/dist/src/transport/oasn/oasn-http.js +45 -14
- package/dist/src/util/url-resolver.d.ts +6 -0
- package/dist/src/util/url-resolver.js +24 -8
- package/openclaw.plugin.json +16 -1
- package/package.json +3 -3
- package/src/app/remote-agent-tool.ts +126 -11
- package/src/auth/config.ts +79 -10
- package/src/channel.ts +2 -1
- package/src/plugin-ui/assets/bg.png +0 -0
- package/src/plugin-ui/assets/icon.png +0 -0
- package/src/plugin-ui/assets/openagent-override.js +1753 -774
- package/src/plugin-ui/build.cjs +80 -4
- package/src/plugin-ui/modules/agent-book/panel/agent-book.js +92 -9
- package/src/plugin-ui/modules/agent-book/panel/agent-card.js +26 -10
- package/src/plugin-ui/modules/agent-book/panel/agent-data.js +1 -1
- package/src/plugin-ui/modules/agent-book/panel/inject-ui.js +64 -0
- package/src/plugin-ui/modules/agent-book/panel/styles.js +313 -178
- package/src/plugin-ui/modules/loader/bootstrap.js +1 -1
- package/src/plugin-ui/modules/loader/shared-state.js +54 -0
- package/src/plugin-ui/modules/remote-agent/execution-card.js +347 -124
- package/src/plugin-ui/modules/remote-agent/media-links.js +151 -0
- package/src/plugin-ui/modules/remote-agent/output-card.js +110 -33
- package/src/plugin-ui/modules/remote-agent/render-hooks.js +97 -18
- package/src/plugin-ui/modules/remote-agent/styles.js +488 -402
- package/src/plugin-ui/modules/remote-agent/tool-card-model.js +6 -0
- package/src/plugin-ui/ui-extension-loader/registry-regex.ts +50 -5
- package/src/proxy/auth-proxy.ts +30 -10
- package/src/transport/oasn/oasn-http.ts +60 -14
- package/src/util/url-resolver.ts +24 -8
package/src/auth/config.ts
CHANGED
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
12
|
const DEFAULT_API_BASE = 'https://api.openagent.club';
|
|
13
|
+
const DEFAULT_OASN_PUBLIC_ROOT = 'https://oasn-test.haimawan.com';
|
|
14
|
+
const OASN_ENV_ID_RE = /^[A-Za-z0-9_-]+$/;
|
|
13
15
|
/**
|
|
14
16
|
* OASN 默认 API base。
|
|
15
17
|
*
|
|
@@ -22,6 +24,55 @@ export function isUnconfiguredOasnApiBase(value: string | undefined): boolean {
|
|
|
22
24
|
return !value || value === DEFAULT_OASN_API_BASE;
|
|
23
25
|
}
|
|
24
26
|
|
|
27
|
+
function normalizeOasnApiBase(value: unknown): string {
|
|
28
|
+
const normalized = String(value || '')
|
|
29
|
+
.trim()
|
|
30
|
+
.replace(/\/+$/, '')
|
|
31
|
+
.replace(/\/api$/, '');
|
|
32
|
+
return normalized === DEFAULT_OASN_API_BASE ? '' : normalized;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function normalizeOasnEnvId(value: unknown): string {
|
|
36
|
+
const envId = String(value || '').trim();
|
|
37
|
+
if (!envId) return '';
|
|
38
|
+
return OASN_ENV_ID_RE.test(envId) ? envId : '';
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function oasnPublicBaseFromEnvId(envId: string): string {
|
|
42
|
+
const normalized = normalizeOasnEnvId(envId);
|
|
43
|
+
if (!normalized) return '';
|
|
44
|
+
const root = normalizeOasnApiBase(process.env.OASN_PUBLIC_ROOT || process.env.OPENAGENT_OASN_PUBLIC_ROOT || DEFAULT_OASN_PUBLIC_ROOT);
|
|
45
|
+
return `${root}/e/${normalized}`;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function resolveOasnBase({
|
|
49
|
+
accountBase,
|
|
50
|
+
channelBase,
|
|
51
|
+
envBase,
|
|
52
|
+
accountEnvId,
|
|
53
|
+
channelEnvId,
|
|
54
|
+
envEnvId,
|
|
55
|
+
fallbackBase,
|
|
56
|
+
}: {
|
|
57
|
+
accountBase?: unknown;
|
|
58
|
+
channelBase?: unknown;
|
|
59
|
+
envBase?: unknown;
|
|
60
|
+
accountEnvId?: unknown;
|
|
61
|
+
channelEnvId?: unknown;
|
|
62
|
+
envEnvId?: unknown;
|
|
63
|
+
fallbackBase: string;
|
|
64
|
+
}): string {
|
|
65
|
+
const configuredBase = normalizeOasnApiBase(accountBase) || normalizeOasnApiBase(channelBase);
|
|
66
|
+
if (configuredBase) return configuredBase;
|
|
67
|
+
const configuredEnvId = normalizeOasnEnvId(accountEnvId) || normalizeOasnEnvId(channelEnvId);
|
|
68
|
+
if (configuredEnvId) return oasnPublicBaseFromEnvId(configuredEnvId);
|
|
69
|
+
const ambientBase = normalizeOasnApiBase(envBase);
|
|
70
|
+
if (ambientBase) return ambientBase;
|
|
71
|
+
const ambientEnvId = normalizeOasnEnvId(envEnvId);
|
|
72
|
+
if (ambientEnvId) return oasnPublicBaseFromEnvId(ambientEnvId);
|
|
73
|
+
return fallbackBase;
|
|
74
|
+
}
|
|
75
|
+
|
|
25
76
|
/**
|
|
26
77
|
* Transport 类型 —— v3.9+ 双轨抽象。
|
|
27
78
|
*
|
|
@@ -132,19 +183,37 @@ export function resolveOpenagentAccount(
|
|
|
132
183
|
const envApiBase = transport === 'oasn'
|
|
133
184
|
? (process.env.OASN_API_BASE || process.env.OPENAGENT_OASN_API_BASE || '')
|
|
134
185
|
: '';
|
|
135
|
-
const apiBase =
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
186
|
+
const apiBase = transport === 'oasn'
|
|
187
|
+
? resolveOasnBase({
|
|
188
|
+
accountBase: targetAcc['api_base'] || targetAcc['apiBase'],
|
|
189
|
+
channelBase: clCfg['api_base'] || clCfg['apiBase'],
|
|
190
|
+
envBase: envApiBase,
|
|
191
|
+
accountEnvId: targetAcc['oasn_env_id'] || targetAcc['oasnEnvId'] || targetAcc['env_id'] || targetAcc['envId'],
|
|
192
|
+
channelEnvId: clCfg['oasn_env_id'] || clCfg['oasnEnvId'] || clCfg['env_id'] || clCfg['envId'],
|
|
193
|
+
envEnvId: process.env.OASN_ENV_ID || process.env.OPENAGENT_OASN_ENV_ID,
|
|
194
|
+
fallbackBase: fallbackApiBase,
|
|
195
|
+
})
|
|
196
|
+
: (targetAcc['api_base'] || targetAcc['apiBase']
|
|
197
|
+
|| clCfg['api_base']
|
|
198
|
+
|| clCfg['apiBase']
|
|
199
|
+
|| fallbackApiBase) as string;
|
|
140
200
|
const envAccessApiBase = transport === 'oasn'
|
|
141
201
|
? (process.env.OASN_ACCESS_API_BASE || process.env.OPENAGENT_OASN_ACCESS_API_BASE || '')
|
|
142
202
|
: '';
|
|
143
|
-
const accessApiBase =
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
203
|
+
const accessApiBase = transport === 'oasn'
|
|
204
|
+
? resolveOasnBase({
|
|
205
|
+
accountBase: targetAcc['access_api_base'] || targetAcc['accessApiBase'],
|
|
206
|
+
channelBase: clCfg['access_api_base'] || clCfg['accessApiBase'],
|
|
207
|
+
envBase: envAccessApiBase,
|
|
208
|
+
accountEnvId: targetAcc['oasn_env_id'] || targetAcc['oasnEnvId'] || targetAcc['env_id'] || targetAcc['envId'],
|
|
209
|
+
channelEnvId: clCfg['oasn_env_id'] || clCfg['oasnEnvId'] || clCfg['env_id'] || clCfg['envId'],
|
|
210
|
+
envEnvId: process.env.OASN_ENV_ID || process.env.OPENAGENT_OASN_ENV_ID,
|
|
211
|
+
fallbackBase: apiBase,
|
|
212
|
+
})
|
|
213
|
+
: (targetAcc['access_api_base'] || targetAcc['accessApiBase']
|
|
214
|
+
|| clCfg['access_api_base']
|
|
215
|
+
|| clCfg['accessApiBase']
|
|
216
|
+
|| apiBase) as string;
|
|
148
217
|
const claimUrl = (targetAcc['claim_url'] || targetAcc['claimUrl'] || clCfg['claim_url'] || clCfg['claimUrl'] || '') as string;
|
|
149
218
|
const rawStatus = (targetAcc['status'] || targetAcc['claim_status'] || targetAcc['claimStatus'] || clCfg['status'] || '') as string;
|
|
150
219
|
const normalizedStatus = normalizeClaimStatus(rawStatus, agentId, apiKey);
|
package/src/channel.ts
CHANGED
|
@@ -13,6 +13,7 @@ import { registry } from './runtime/registry.js';
|
|
|
13
13
|
import { AccountRuntime } from './runtime/account.js';
|
|
14
14
|
|
|
15
15
|
import { logger } from './util/logger.js';
|
|
16
|
+
import { resolveOasnRelativeUrl } from './util/url-resolver.js';
|
|
16
17
|
import * as timMessages from './tim/messages.js';
|
|
17
18
|
|
|
18
19
|
const API_BASE = 'https://api.clawlink.club';
|
|
@@ -544,7 +545,7 @@ async function claimOasnAgent(
|
|
|
544
545
|
agentId: string,
|
|
545
546
|
ownerEmail: string,
|
|
546
547
|
): Promise<Record<string, unknown>> {
|
|
547
|
-
const res = await fetch(
|
|
548
|
+
const res = await fetch(resolveOasnRelativeUrl(apiBase, '/api/agents/claim'), {
|
|
548
549
|
method: 'POST',
|
|
549
550
|
headers: {
|
|
550
551
|
'Content-Type': 'application/json',
|
|
Binary file
|
|
Binary file
|