codexmate 0.0.32 → 0.0.33
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/README.md +147 -363
- package/README.zh.md +147 -371
- package/cli/agents-files.js +224 -224
- package/cli/archive-helpers.js +446 -446
- package/cli/auth-profiles.js +375 -375
- package/cli/builtin-proxy.js +1725 -1725
- package/cli/claude-proxy.js +1022 -1022
- package/cli/config-bootstrap.js +402 -402
- package/cli/config-health.js +454 -454
- package/cli/doctor-core.js +903 -903
- package/cli/import-skills-url.js +356 -356
- package/cli/local-bridge.js +551 -324
- package/cli/openai-bridge.js +1653 -1653
- package/cli/openclaw-config.js +629 -629
- package/cli/session-convert-args.js +69 -69
- package/cli/session-convert-io.js +82 -82
- package/cli/session-convert.js +150 -150
- package/cli/session-usage.concurrent.js +28 -28
- package/cli/session-usage.js +118 -118
- package/cli/session-usage.models.js +176 -176
- package/cli/skills.js +1141 -1141
- package/cli/update.js +162 -0
- package/cli/zip-commands.js +510 -510
- package/cli.js +16023 -15829
- package/lib/automation.js +404 -404
- package/lib/cli-file-utils.js +151 -151
- package/lib/cli-models-utils.js +440 -440
- package/lib/cli-network-utils.js +190 -190
- package/lib/cli-path-utils.js +85 -85
- package/lib/cli-session-utils.js +121 -121
- package/lib/cli-sessions.js +427 -426
- package/lib/cli-utils.js +155 -155
- package/lib/cli-webhook.js +126 -126
- package/lib/download-artifacts.js +92 -92
- package/lib/mcp-stdio.js +453 -453
- package/lib/task-orchestrator.js +869 -869
- package/lib/text-diff.js +303 -303
- package/lib/win-tray.js +119 -0
- package/lib/workflow-engine.js +340 -340
- package/package.json +76 -76
- package/plugins/README.md +20 -20
- package/plugins/README.zh-CN.md +20 -20
- package/plugins/prompt-templates/comment-polish/index.mjs +25 -25
- package/plugins/prompt-templates/computed.mjs +253 -253
- package/plugins/prompt-templates/index.mjs +8 -8
- package/plugins/prompt-templates/manifest.mjs +15 -15
- package/plugins/prompt-templates/methods.mjs +553 -553
- package/plugins/prompt-templates/overview.mjs +91 -91
- package/plugins/prompt-templates/ownership.mjs +19 -19
- package/plugins/prompt-templates/rule-ack/index.mjs +21 -21
- package/plugins/prompt-templates/storage.mjs +64 -64
- package/plugins/registry.mjs +16 -16
- package/web-ui/app.js +650 -647
- package/web-ui/index.html +36 -36
- package/web-ui/logic.agents-diff.mjs +386 -386
- package/web-ui/logic.claude.mjs +168 -168
- package/web-ui/logic.codex.mjs +69 -69
- package/web-ui/logic.mjs +5 -5
- package/web-ui/logic.runtime.mjs +128 -128
- package/web-ui/logic.session-convert.mjs +70 -70
- package/web-ui/logic.sessions.mjs +781 -781
- package/web-ui/modules/api.mjs +90 -90
- package/web-ui/modules/app.computed.dashboard.mjs +248 -248
- package/web-ui/modules/app.computed.index.mjs +17 -17
- package/web-ui/modules/app.computed.main-tabs.mjs +205 -205
- package/web-ui/modules/app.computed.session.mjs +735 -693
- package/web-ui/modules/app.constants.mjs +15 -15
- package/web-ui/modules/app.methods.agents.mjs +651 -651
- package/web-ui/modules/app.methods.claude-config.mjs +269 -200
- package/web-ui/modules/app.methods.codex-config.mjs +861 -861
- package/web-ui/modules/app.methods.index.mjs +94 -94
- package/web-ui/modules/app.methods.install.mjs +205 -205
- package/web-ui/modules/app.methods.navigation.mjs +774 -774
- package/web-ui/modules/app.methods.openclaw-core.mjs +814 -814
- package/web-ui/modules/app.methods.openclaw-editing.mjs +372 -372
- package/web-ui/modules/app.methods.openclaw-persist.mjs +369 -369
- package/web-ui/modules/app.methods.providers.mjs +575 -529
- package/web-ui/modules/app.methods.runtime.mjs +345 -345
- package/web-ui/modules/app.methods.session-actions.mjs +591 -591
- package/web-ui/modules/app.methods.session-browser.mjs +1012 -1012
- package/web-ui/modules/app.methods.session-timeline.mjs +479 -479
- package/web-ui/modules/app.methods.session-trash.mjs +438 -438
- package/web-ui/modules/app.methods.startup-claude.mjs +538 -537
- package/web-ui/modules/app.methods.task-orchestration.mjs +556 -556
- package/web-ui/modules/app.methods.webhook.mjs +79 -79
- package/web-ui/modules/config-mode.computed.mjs +124 -124
- package/web-ui/modules/config-template-confirm-pref.mjs +33 -33
- package/web-ui/modules/i18n.dict.mjs +3192 -3177
- package/web-ui/modules/i18n.mjs +62 -62
- package/web-ui/modules/plugins.computed.mjs +3 -3
- package/web-ui/modules/plugins.methods.mjs +3 -3
- package/web-ui/modules/plugins.storage.mjs +11 -11
- package/web-ui/modules/provider-url-display.mjs +17 -17
- package/web-ui/modules/sessions-filters-url.mjs +85 -85
- package/web-ui/modules/skills.computed.mjs +107 -107
- package/web-ui/modules/skills.methods.mjs +482 -482
- package/web-ui/partials/index/layout-footer.html +13 -13
- package/web-ui/partials/index/layout-header.html +499 -503
- package/web-ui/partials/index/modal-config-template-agents.html +185 -185
- package/web-ui/partials/index/modal-confirm-toast.html +32 -32
- package/web-ui/partials/index/modal-health-check.html +45 -45
- package/web-ui/partials/index/modal-openclaw-config.html +280 -280
- package/web-ui/partials/index/modal-skills.html +200 -200
- package/web-ui/partials/index/modals-basic.html +173 -162
- package/web-ui/partials/index/panel-config-claude.html +166 -136
- package/web-ui/partials/index/panel-config-codex.html +190 -196
- package/web-ui/partials/index/panel-config-codex.html.bak +337 -0
- package/web-ui/partials/index/panel-config-openclaw.html +83 -83
- package/web-ui/partials/index/panel-dashboard.html +186 -219
- package/web-ui/partials/index/panel-docs.html +114 -114
- package/web-ui/partials/index/panel-market.html +177 -177
- package/web-ui/partials/index/panel-orchestration.html +391 -391
- package/web-ui/partials/index/panel-plugins.html +253 -253
- package/web-ui/partials/index/panel-sessions.html +319 -313
- package/web-ui/partials/index/panel-settings.html +190 -190
- package/web-ui/partials/index/panel-trash.html +82 -82
- package/web-ui/partials/index/panel-usage.html +137 -137
- package/web-ui/res/json5.min.js +1 -1
- package/web-ui/res/vue.global.prod.js +13 -13
- package/web-ui/session-helpers.mjs +591 -591
- package/web-ui/source-bundle.cjs +233 -233
- package/web-ui/styles/base-theme.css +281 -281
- package/web-ui/styles/bridge-pool.css +197 -197
- package/web-ui/styles/controls-forms.css +433 -433
- package/web-ui/styles/dashboard.css +406 -406
- package/web-ui/styles/docs-panel.css +245 -245
- package/web-ui/styles/feedback.css +108 -108
- package/web-ui/styles/health-check-dialog.css +144 -144
- package/web-ui/styles/layout-shell.css +628 -638
- package/web-ui/styles/modals-core.css +499 -466
- package/web-ui/styles/navigation-panels.css +391 -391
- package/web-ui/styles/openclaw-structured.css +266 -266
- package/web-ui/styles/plugins-panel.css +564 -564
- package/web-ui/styles/responsive.css +392 -392
- package/web-ui/styles/sessions-list.css +683 -647
- package/web-ui/styles/sessions-preview.css +407 -407
- package/web-ui/styles/sessions-toolbar-trash.css +518 -518
- package/web-ui/styles/sessions-usage.css +588 -588
- package/web-ui/styles/settings-panel.css +349 -349
- package/web-ui/styles/skills-list.css +305 -305
- package/web-ui/styles/skills-market.css +429 -429
- package/web-ui/styles/task-orchestration.css +822 -822
- package/web-ui/styles/titles-cards.css +472 -472
- package/web-ui/styles/trash-panel.css +90 -90
- package/web-ui/styles/webhook.css +81 -81
- package/web-ui/styles.css +24 -24
- package/web-ui.html +17 -17
package/web-ui/modules/api.mjs
CHANGED
|
@@ -1,90 +1,90 @@
|
|
|
1
|
-
const browserLocation = typeof location !== 'undefined' ? location : null;
|
|
2
|
-
|
|
3
|
-
export const API_BASE = (browserLocation && browserLocation.origin && browserLocation.origin !== 'null')
|
|
4
|
-
? browserLocation.origin
|
|
5
|
-
: 'http://localhost:3737';
|
|
6
|
-
|
|
7
|
-
async function postApi(action, params = {}) {
|
|
8
|
-
return await fetch(`${API_BASE}/api`, {
|
|
9
|
-
method: 'POST',
|
|
10
|
-
headers: { 'Content-Type': 'application/json' },
|
|
11
|
-
body: JSON.stringify({ action, params })
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
function buildApiResponseContext(action, res, contentType) {
|
|
16
|
-
return `${action} (${res.status} ${res.statusText}, content-type: ${contentType || 'unknown'})`;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
function formatUnexpectedApiBodySnippet(body, contentType) {
|
|
20
|
-
const raw = typeof body === 'string' ? body.trim() : '';
|
|
21
|
-
if (!raw) {
|
|
22
|
-
return '';
|
|
23
|
-
}
|
|
24
|
-
const normalizedContentType = String(contentType || '').toLowerCase();
|
|
25
|
-
const looksLikeHtml = normalizedContentType.includes('text/html')
|
|
26
|
-
|| /<!doctype\s+html|<html[\s>]|<head[\s>]|<body[\s>]/i.test(raw);
|
|
27
|
-
if (looksLikeHtml) {
|
|
28
|
-
return '';
|
|
29
|
-
}
|
|
30
|
-
const singleLine = raw.replace(/\s+/g, ' ').trim();
|
|
31
|
-
if (!singleLine) {
|
|
32
|
-
return '';
|
|
33
|
-
}
|
|
34
|
-
return singleLine.length > 200
|
|
35
|
-
? `${singleLine.slice(0, 197)}...`
|
|
36
|
-
: singleLine;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
function withPayloadTooLargeErrorCode(res, payload) {
|
|
40
|
-
if (res.status !== 413 || (payload && typeof payload === 'object' && payload.errorCode)) {
|
|
41
|
-
return payload;
|
|
42
|
-
}
|
|
43
|
-
return { ...payload, errorCode: 'payload-too-large' };
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export async function api(action, params = {}) {
|
|
47
|
-
const res = await postApi(action, params);
|
|
48
|
-
const contentType = String(res.headers.get('content-type') || '').toLowerCase();
|
|
49
|
-
if (contentType && !contentType.includes('application/json')) {
|
|
50
|
-
const body = await res.text();
|
|
51
|
-
const errorDetails = buildApiResponseContext(action, res, contentType);
|
|
52
|
-
const bodySnippet = formatUnexpectedApiBodySnippet(body, contentType);
|
|
53
|
-
const bodyDetails = bodySnippet ? `: ${bodySnippet}` : '';
|
|
54
|
-
throw new Error(`Unexpected non-JSON API response for ${errorDetails}${bodyDetails}`);
|
|
55
|
-
}
|
|
56
|
-
try {
|
|
57
|
-
return await res.json();
|
|
58
|
-
} catch (error) {
|
|
59
|
-
const errorDetails = buildApiResponseContext(action, res, contentType);
|
|
60
|
-
throw new Error(`Failed to parse API response for ${errorDetails}: ${error.message}`);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
export async function apiWithMeta(action, params = {}) {
|
|
65
|
-
const res = await postApi(action, params);
|
|
66
|
-
const contentType = String(res.headers.get('content-type') || '').toLowerCase();
|
|
67
|
-
if (contentType.includes('application/json')) {
|
|
68
|
-
try {
|
|
69
|
-
const payload = await res.json();
|
|
70
|
-
if (payload && typeof payload === 'object' && !Array.isArray(payload)) {
|
|
71
|
-
return { ...withPayloadTooLargeErrorCode(res, payload), ok: res.ok, status: res.status };
|
|
72
|
-
}
|
|
73
|
-
return res.status === 413
|
|
74
|
-
? { ok: res.ok, status: res.status, data: payload, errorCode: 'payload-too-large' }
|
|
75
|
-
: { ok: res.ok, status: res.status, data: payload };
|
|
76
|
-
} catch (error) {
|
|
77
|
-
if (res.status === 413) {
|
|
78
|
-
return { ok: false, status: 413, errorCode: 'payload-too-large' };
|
|
79
|
-
}
|
|
80
|
-
throw error;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
const error = await res.text();
|
|
84
|
-
return {
|
|
85
|
-
ok: res.ok,
|
|
86
|
-
status: res.status,
|
|
87
|
-
error,
|
|
88
|
-
errorCode: res.status === 413 ? 'payload-too-large' : ''
|
|
89
|
-
};
|
|
90
|
-
}
|
|
1
|
+
const browserLocation = typeof location !== 'undefined' ? location : null;
|
|
2
|
+
|
|
3
|
+
export const API_BASE = (browserLocation && browserLocation.origin && browserLocation.origin !== 'null')
|
|
4
|
+
? browserLocation.origin
|
|
5
|
+
: 'http://localhost:3737';
|
|
6
|
+
|
|
7
|
+
async function postApi(action, params = {}) {
|
|
8
|
+
return await fetch(`${API_BASE}/api`, {
|
|
9
|
+
method: 'POST',
|
|
10
|
+
headers: { 'Content-Type': 'application/json' },
|
|
11
|
+
body: JSON.stringify({ action, params })
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function buildApiResponseContext(action, res, contentType) {
|
|
16
|
+
return `${action} (${res.status} ${res.statusText}, content-type: ${contentType || 'unknown'})`;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function formatUnexpectedApiBodySnippet(body, contentType) {
|
|
20
|
+
const raw = typeof body === 'string' ? body.trim() : '';
|
|
21
|
+
if (!raw) {
|
|
22
|
+
return '';
|
|
23
|
+
}
|
|
24
|
+
const normalizedContentType = String(contentType || '').toLowerCase();
|
|
25
|
+
const looksLikeHtml = normalizedContentType.includes('text/html')
|
|
26
|
+
|| /<!doctype\s+html|<html[\s>]|<head[\s>]|<body[\s>]/i.test(raw);
|
|
27
|
+
if (looksLikeHtml) {
|
|
28
|
+
return '';
|
|
29
|
+
}
|
|
30
|
+
const singleLine = raw.replace(/\s+/g, ' ').trim();
|
|
31
|
+
if (!singleLine) {
|
|
32
|
+
return '';
|
|
33
|
+
}
|
|
34
|
+
return singleLine.length > 200
|
|
35
|
+
? `${singleLine.slice(0, 197)}...`
|
|
36
|
+
: singleLine;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function withPayloadTooLargeErrorCode(res, payload) {
|
|
40
|
+
if (res.status !== 413 || (payload && typeof payload === 'object' && payload.errorCode)) {
|
|
41
|
+
return payload;
|
|
42
|
+
}
|
|
43
|
+
return { ...payload, errorCode: 'payload-too-large' };
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export async function api(action, params = {}) {
|
|
47
|
+
const res = await postApi(action, params);
|
|
48
|
+
const contentType = String(res.headers.get('content-type') || '').toLowerCase();
|
|
49
|
+
if (contentType && !contentType.includes('application/json')) {
|
|
50
|
+
const body = await res.text();
|
|
51
|
+
const errorDetails = buildApiResponseContext(action, res, contentType);
|
|
52
|
+
const bodySnippet = formatUnexpectedApiBodySnippet(body, contentType);
|
|
53
|
+
const bodyDetails = bodySnippet ? `: ${bodySnippet}` : '';
|
|
54
|
+
throw new Error(`Unexpected non-JSON API response for ${errorDetails}${bodyDetails}`);
|
|
55
|
+
}
|
|
56
|
+
try {
|
|
57
|
+
return await res.json();
|
|
58
|
+
} catch (error) {
|
|
59
|
+
const errorDetails = buildApiResponseContext(action, res, contentType);
|
|
60
|
+
throw new Error(`Failed to parse API response for ${errorDetails}: ${error.message}`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export async function apiWithMeta(action, params = {}) {
|
|
65
|
+
const res = await postApi(action, params);
|
|
66
|
+
const contentType = String(res.headers.get('content-type') || '').toLowerCase();
|
|
67
|
+
if (contentType.includes('application/json')) {
|
|
68
|
+
try {
|
|
69
|
+
const payload = await res.json();
|
|
70
|
+
if (payload && typeof payload === 'object' && !Array.isArray(payload)) {
|
|
71
|
+
return { ...withPayloadTooLargeErrorCode(res, payload), ok: res.ok, status: res.status };
|
|
72
|
+
}
|
|
73
|
+
return res.status === 413
|
|
74
|
+
? { ok: res.ok, status: res.status, data: payload, errorCode: 'payload-too-large' }
|
|
75
|
+
: { ok: res.ok, status: res.status, data: payload };
|
|
76
|
+
} catch (error) {
|
|
77
|
+
if (res.status === 413) {
|
|
78
|
+
return { ok: false, status: 413, errorCode: 'payload-too-large' };
|
|
79
|
+
}
|
|
80
|
+
throw error;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
const error = await res.text();
|
|
84
|
+
return {
|
|
85
|
+
ok: res.ok,
|
|
86
|
+
status: res.status,
|
|
87
|
+
error,
|
|
88
|
+
errorCode: res.status === 413 ? 'payload-too-large' : ''
|
|
89
|
+
};
|
|
90
|
+
}
|