@clawos-dev/clawd 0.2.551 → 0.2.553
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/app-builder-plugin/mcp-server.cjs +13 -2
- package/dist/cli.cjs +43 -12
- package/dist/dispatch/mcp-server.cjs +10 -1
- package/dist/persona-defaults/persona-app-builder/mcp/clawd-app-builder/mcp-server.cjs +13 -2
- package/dist/persona-defaults/persona-dataclaw-builder/mcp/clawd-app-builder/mcp-server.cjs +13 -2
- package/dist/share-ui/assets/{guest-BG2kYWjt.js → guest-CqERmFni.js} +116 -116
- package/dist/share-ui/guest.html +1 -1
- package/package.json +1 -1
|
@@ -22848,6 +22848,8 @@ var EngineConnectPoolResponseSchema = external_exports.object({
|
|
|
22848
22848
|
}).strict();
|
|
22849
22849
|
|
|
22850
22850
|
// ../protocol/src/persona-schemas.ts
|
|
22851
|
+
var PERSONA_SIZES = ["small", "medium", "large"];
|
|
22852
|
+
var PersonaSizeSchema = external_exports.enum(PERSONA_SIZES);
|
|
22851
22853
|
var PersonaFileSchema = external_exports.object({
|
|
22852
22854
|
personaId: external_exports.string(),
|
|
22853
22855
|
label: external_exports.string(),
|
|
@@ -22866,7 +22868,8 @@ var PersonaFileSchema = external_exports.object({
|
|
|
22866
22868
|
/**
|
|
22867
22869
|
* 云上任务 Pod 的规格档(design 2026-09-18-persona-size):`small` / `medium` / `large`,没写按 medium。
|
|
22868
22870
|
* 只有发布上云的流水线读它(cloud-host/pipeline/deploy-file.mjs 收窄值域,不认识的拒发);本机跑不看。
|
|
22869
|
-
* 协议层同 model / effort 保持 string
|
|
22871
|
+
* 协议层同 model / effort 保持 string(文件层向前兼容);改它的入口是上云页标题行的规格下拉
|
|
22872
|
+
* (design 2026-09-20-persona-size-ui),`persona:update` 那头按 PersonaSizeSchema 收窄。
|
|
22870
22873
|
*/
|
|
22871
22874
|
size: external_exports.string().optional(),
|
|
22872
22875
|
createdAt: external_exports.number(),
|
|
@@ -22980,6 +22983,8 @@ var PersonaUpdateArgsSchema = external_exports.object({
|
|
|
22980
22983
|
model: external_exports.string().optional(),
|
|
22981
22984
|
effort: external_exports.string().optional(),
|
|
22982
22985
|
tool: external_exports.string().optional(),
|
|
22986
|
+
// 云上任务 Pod 的规格档:只收三档之一(PersonaFile 层是 string,边界在这里收窄)
|
|
22987
|
+
size: PersonaSizeSchema.optional(),
|
|
22983
22988
|
personality: external_exports.string().optional(),
|
|
22984
22989
|
// 人格补充层正文(见 PersonaInfoResponseSchema.personalityLocal)。与 personality 各写
|
|
22985
22990
|
// 各层、互不影响;'' = 清空补充层。预装 persona 的编辑入口写的就是这个字段。
|
|
@@ -24710,6 +24715,10 @@ var INNER_TAG_NAMES = "clawd-dispatch-task|clawd-dispatch-result|brief|detail|fi
|
|
|
24710
24715
|
var INNER_TAG_ESCAPE_RE = new RegExp(`<(\\\\*)(/?)(${INNER_TAG_NAMES})\\b`, "g");
|
|
24711
24716
|
var INNER_TAG_UNESCAPE_RE = new RegExp(`<\\\\(\\\\*)(/?)(${INNER_TAG_NAMES})\\b`, "g");
|
|
24712
24717
|
|
|
24718
|
+
// ../protocol/src/tool-family.ts
|
|
24719
|
+
var CLOUD_TOOL_SUFFIX = "-cloud";
|
|
24720
|
+
var CODEX_CLOUD_TOOL_ID = `codex${CLOUD_TOOL_SUFFIX}`;
|
|
24721
|
+
|
|
24713
24722
|
// src/deploy/deploy-file.ts
|
|
24714
24723
|
var import_promises = __toESM(require("fs/promises"), 1);
|
|
24715
24724
|
var import_node_path3 = __toESM(require("path"), 1);
|
|
@@ -24871,7 +24880,7 @@ var L = [
|
|
|
24871
24880
|
" rm -rf persona/.git",
|
|
24872
24881
|
" node clawos/cloud-host/provision/build-image.mjs \\",
|
|
24873
24882
|
" --manifest persona/.clawd/deploy.json \\",
|
|
24874
|
-
' --from "$REGISTRY/$IMAGE_NAME:base" \\',
|
|
24883
|
+
' --from "$REGISTRY/$IMAGE_NAME:base-${{ steps.plan.outputs.engine }}" \\',
|
|
24875
24884
|
" --persona-dir persona \\",
|
|
24876
24885
|
// persona 在镜像里落 /clawd/personas/<id>/(与本机同构),id 是 gateway 登记的名字;同 smoke / register 用的那个输出
|
|
24877
24886
|
" --persona-id '${{ steps.plan.outputs.persona_id }}' \\",
|
|
@@ -24923,6 +24932,7 @@ var L = [
|
|
|
24923
24932
|
" --model '${{ steps.plan.outputs.model }}' \\",
|
|
24924
24933
|
" --effort '${{ steps.plan.outputs.effort }}' \\",
|
|
24925
24934
|
" --size '${{ steps.plan.outputs.size }}' \\",
|
|
24935
|
+
" --engine '${{ steps.plan.outputs.engine }}' \\",
|
|
24926
24936
|
" --connectors '${{ steps.plan.outputs.connectors }}' \\",
|
|
24927
24937
|
" --run-number '${{ github.run_number }}'",
|
|
24928
24938
|
"",
|
|
@@ -24947,6 +24957,7 @@ var L = [
|
|
|
24947
24957
|
" --model '${{ steps.plan.outputs.model }}' \\",
|
|
24948
24958
|
" --effort '${{ steps.plan.outputs.effort }}' \\",
|
|
24949
24959
|
" --size '${{ steps.plan.outputs.size }}' \\",
|
|
24960
|
+
" --engine '${{ steps.plan.outputs.engine }}' \\",
|
|
24950
24961
|
" --connectors '${{ steps.plan.outputs.connectors }}'",
|
|
24951
24962
|
""
|
|
24952
24963
|
];
|
package/dist/cli.cjs
CHANGED
|
@@ -7573,11 +7573,13 @@ var init_engine_schemas = __esm({
|
|
|
7573
7573
|
});
|
|
7574
7574
|
|
|
7575
7575
|
// ../protocol/src/persona-schemas.ts
|
|
7576
|
-
var PersonaFileSchema, PersonaSkillSummarySchema, PersonaPluginSummarySchema, CodexSandboxSettingsSchema, PersonaSandboxSettingsSchema, PersonaInfoResponseSchema, PersonaCreateArgsSchema, PersonaIdArgsSchema, PersonaUpdateArgsSchema;
|
|
7576
|
+
var PERSONA_SIZES, PersonaSizeSchema, PersonaFileSchema, PersonaSkillSummarySchema, PersonaPluginSummarySchema, CodexSandboxSettingsSchema, PersonaSandboxSettingsSchema, PersonaInfoResponseSchema, PersonaCreateArgsSchema, PersonaIdArgsSchema, PersonaUpdateArgsSchema;
|
|
7577
7577
|
var init_persona_schemas = __esm({
|
|
7578
7578
|
"../protocol/src/persona-schemas.ts"() {
|
|
7579
7579
|
"use strict";
|
|
7580
7580
|
init_zod();
|
|
7581
|
+
PERSONA_SIZES = ["small", "medium", "large"];
|
|
7582
|
+
PersonaSizeSchema = external_exports.enum(PERSONA_SIZES);
|
|
7581
7583
|
PersonaFileSchema = external_exports.object({
|
|
7582
7584
|
personaId: external_exports.string(),
|
|
7583
7585
|
label: external_exports.string(),
|
|
@@ -7596,7 +7598,8 @@ var init_persona_schemas = __esm({
|
|
|
7596
7598
|
/**
|
|
7597
7599
|
* 云上任务 Pod 的规格档(design 2026-09-18-persona-size):`small` / `medium` / `large`,没写按 medium。
|
|
7598
7600
|
* 只有发布上云的流水线读它(cloud-host/pipeline/deploy-file.mjs 收窄值域,不认识的拒发);本机跑不看。
|
|
7599
|
-
* 协议层同 model / effort 保持 string
|
|
7601
|
+
* 协议层同 model / effort 保持 string(文件层向前兼容);改它的入口是上云页标题行的规格下拉
|
|
7602
|
+
* (design 2026-09-20-persona-size-ui),`persona:update` 那头按 PersonaSizeSchema 收窄。
|
|
7600
7603
|
*/
|
|
7601
7604
|
size: external_exports.string().optional(),
|
|
7602
7605
|
createdAt: external_exports.number(),
|
|
@@ -7710,6 +7713,8 @@ var init_persona_schemas = __esm({
|
|
|
7710
7713
|
model: external_exports.string().optional(),
|
|
7711
7714
|
effort: external_exports.string().optional(),
|
|
7712
7715
|
tool: external_exports.string().optional(),
|
|
7716
|
+
// 云上任务 Pod 的规格档:只收三档之一(PersonaFile 层是 string,边界在这里收窄)
|
|
7717
|
+
size: PersonaSizeSchema.optional(),
|
|
7713
7718
|
personality: external_exports.string().optional(),
|
|
7714
7719
|
// 人格补充层正文(见 PersonaInfoResponseSchema.personalityLocal)。与 personality 各写
|
|
7715
7720
|
// 各层、互不影响;'' = 清空补充层。预装 persona 的编辑入口写的就是这个字段。
|
|
@@ -9713,11 +9718,12 @@ function isCodexFamily(tool) {
|
|
|
9713
9718
|
function isRpcAgentTool(tool) {
|
|
9714
9719
|
return isCodexFamily(tool) || tool === PI_TOOL_ID;
|
|
9715
9720
|
}
|
|
9716
|
-
var CODEX_CLOUD_TOOL_ID, PI_TOOL_ID;
|
|
9721
|
+
var CLOUD_TOOL_SUFFIX, CODEX_CLOUD_TOOL_ID, PI_TOOL_ID;
|
|
9717
9722
|
var init_tool_family = __esm({
|
|
9718
9723
|
"../protocol/src/tool-family.ts"() {
|
|
9719
9724
|
"use strict";
|
|
9720
|
-
|
|
9725
|
+
CLOUD_TOOL_SUFFIX = "-cloud";
|
|
9726
|
+
CODEX_CLOUD_TOOL_ID = `codex${CLOUD_TOOL_SUFFIX}`;
|
|
9721
9727
|
PI_TOOL_ID = "pi";
|
|
9722
9728
|
}
|
|
9723
9729
|
});
|
|
@@ -51851,6 +51857,7 @@ function driveCodexThread(opts) {
|
|
|
51851
51857
|
...translateNotification(method, params)
|
|
51852
51858
|
] : [];
|
|
51853
51859
|
if (events.length) sink.pushEvents(events);
|
|
51860
|
+
if (route === "foreground" && method === "turn/completed") opts.onTurnCompleted?.();
|
|
51854
51861
|
},
|
|
51855
51862
|
onServerRequest: (id, method, params) => {
|
|
51856
51863
|
const p3 = params ?? {};
|
|
@@ -59300,7 +59307,7 @@ var L2 = [
|
|
|
59300
59307
|
" rm -rf persona/.git",
|
|
59301
59308
|
" node clawos/cloud-host/provision/build-image.mjs \\",
|
|
59302
59309
|
" --manifest persona/.clawd/deploy.json \\",
|
|
59303
|
-
' --from "$REGISTRY/$IMAGE_NAME:base" \\',
|
|
59310
|
+
' --from "$REGISTRY/$IMAGE_NAME:base-${{ steps.plan.outputs.engine }}" \\',
|
|
59304
59311
|
" --persona-dir persona \\",
|
|
59305
59312
|
// persona 在镜像里落 /clawd/personas/<id>/(与本机同构),id 是 gateway 登记的名字;同 smoke / register 用的那个输出
|
|
59306
59313
|
" --persona-id '${{ steps.plan.outputs.persona_id }}' \\",
|
|
@@ -59352,6 +59359,7 @@ var L2 = [
|
|
|
59352
59359
|
" --model '${{ steps.plan.outputs.model }}' \\",
|
|
59353
59360
|
" --effort '${{ steps.plan.outputs.effort }}' \\",
|
|
59354
59361
|
" --size '${{ steps.plan.outputs.size }}' \\",
|
|
59362
|
+
" --engine '${{ steps.plan.outputs.engine }}' \\",
|
|
59355
59363
|
" --connectors '${{ steps.plan.outputs.connectors }}' \\",
|
|
59356
59364
|
" --run-number '${{ github.run_number }}'",
|
|
59357
59365
|
"",
|
|
@@ -59376,6 +59384,7 @@ var L2 = [
|
|
|
59376
59384
|
" --model '${{ steps.plan.outputs.model }}' \\",
|
|
59377
59385
|
" --effort '${{ steps.plan.outputs.effort }}' \\",
|
|
59378
59386
|
" --size '${{ steps.plan.outputs.size }}' \\",
|
|
59387
|
+
" --engine '${{ steps.plan.outputs.engine }}' \\",
|
|
59379
59388
|
" --connectors '${{ steps.plan.outputs.connectors }}'",
|
|
59380
59389
|
""
|
|
59381
59390
|
];
|
|
@@ -62483,6 +62492,7 @@ var GATEWAY_ROUTES = {
|
|
|
62483
62492
|
healthz: () => "/healthz",
|
|
62484
62493
|
session: (personaId2) => `/p/${encodeURIComponent(personaId2)}/session`,
|
|
62485
62494
|
sessionSend: (personaId2, sessionId) => `/p/${encodeURIComponent(personaId2)}/session/${encodeURIComponent(sessionId)}`,
|
|
62495
|
+
sessionMirror: (personaId2, sessionId) => `/p/${encodeURIComponent(personaId2)}/session/${encodeURIComponent(sessionId)}/mirror`,
|
|
62486
62496
|
// 调用方自己那块盘的用量(design 2026-09-19-cloud-volume-usage §3.3):同样按人、不挂 persona
|
|
62487
62497
|
volume: () => "/me/volume"
|
|
62488
62498
|
};
|
|
@@ -62499,7 +62509,7 @@ function cloudPersonaToFile(p3) {
|
|
|
62499
62509
|
return {
|
|
62500
62510
|
personaId: p3.personaId + CLOUD_PERSONA_ID_SUFFIX,
|
|
62501
62511
|
label: p3.personaId,
|
|
62502
|
-
tool:
|
|
62512
|
+
tool: p3.engine + CLOUD_TOOL_SUFFIX,
|
|
62503
62513
|
...p3.model ? { model: p3.model } : {},
|
|
62504
62514
|
...p3.effort ? { effort: p3.effort } : {},
|
|
62505
62515
|
public: false,
|
|
@@ -62547,9 +62557,14 @@ var CloudGatewayClient = class {
|
|
|
62547
62557
|
for (const raw of rows) {
|
|
62548
62558
|
const d2 = raw;
|
|
62549
62559
|
if (d2.kind !== "official" || typeof d2.personaId !== "string") continue;
|
|
62560
|
+
if (typeof d2.engine !== "string" || !d2.engine) {
|
|
62561
|
+
this.deps.logger?.warn("cloud persona row has no engine, skipped", { personaId: d2.personaId });
|
|
62562
|
+
continue;
|
|
62563
|
+
}
|
|
62550
62564
|
out.push({
|
|
62551
62565
|
personaId: d2.personaId,
|
|
62552
62566
|
gatewayUrl,
|
|
62567
|
+
engine: d2.engine,
|
|
62553
62568
|
...typeof d2.image === "string" ? { image: d2.image } : {},
|
|
62554
62569
|
...typeof d2.model === "string" && d2.model ? { model: d2.model } : {},
|
|
62555
62570
|
...typeof d2.effort === "string" && d2.effort ? { effort: d2.effort } : {},
|
|
@@ -62572,14 +62587,17 @@ var CloudGatewayClient = class {
|
|
|
62572
62587
|
/**
|
|
62573
62588
|
* 会话通道。返回的行流在 Pod 就绪前就能 write:写入先攒着,收到 `ready` 控制行后按序 POST 出去——
|
|
62574
62589
|
* 编排那头一构造就发 initialize,不用知道 Pod 还在起。
|
|
62590
|
+
* `toolSessionId`:调用方预分配的引擎会话 id(pi 的 --session-id;codex 的 thread id 是协议内的、不传),进 open 的 body `engineSessionId`
|
|
62591
|
+
* (契约 2026-09-18 §3.2)。
|
|
62575
62592
|
*/
|
|
62576
|
-
async openSession(personaId2) {
|
|
62593
|
+
async openSession(personaId2, opts = {}) {
|
|
62577
62594
|
const { apiKey, gatewayUrl } = await this.credentials();
|
|
62578
62595
|
return openHttpLineStream({
|
|
62579
62596
|
fetchImpl: this.fetchImpl,
|
|
62580
62597
|
gatewayUrl,
|
|
62581
62598
|
apiKey,
|
|
62582
62599
|
personaId: personaId2,
|
|
62600
|
+
...opts.toolSessionId ? { engineSessionId: opts.toolSessionId } : {},
|
|
62583
62601
|
logger: this.deps.logger
|
|
62584
62602
|
});
|
|
62585
62603
|
}
|
|
@@ -62624,7 +62642,7 @@ function parseControlLine(line) {
|
|
|
62624
62642
|
}
|
|
62625
62643
|
}
|
|
62626
62644
|
function openHttpLineStream(opts) {
|
|
62627
|
-
const { fetchImpl, gatewayUrl, apiKey, personaId: personaId2, logger } = opts;
|
|
62645
|
+
const { fetchImpl, gatewayUrl, apiKey, personaId: personaId2, engineSessionId, logger } = opts;
|
|
62628
62646
|
const headers = { authorization: `Bearer ${apiKey}`, "content-type": "application/json" };
|
|
62629
62647
|
const ac = new AbortController();
|
|
62630
62648
|
const lineCbs = [];
|
|
@@ -62681,7 +62699,7 @@ function openHttpLineStream(opts) {
|
|
|
62681
62699
|
res = await fetchImpl(gatewayUrl + GATEWAY_ROUTES.session(personaId2), {
|
|
62682
62700
|
method: "POST",
|
|
62683
62701
|
headers,
|
|
62684
|
-
body:
|
|
62702
|
+
body: JSON.stringify(engineSessionId ? { engineSessionId } : {}),
|
|
62685
62703
|
signal: ac.signal
|
|
62686
62704
|
});
|
|
62687
62705
|
} catch (e) {
|
|
@@ -62777,6 +62795,16 @@ function openHttpLineStream(opts) {
|
|
|
62777
62795
|
close: () => {
|
|
62778
62796
|
ac.abort();
|
|
62779
62797
|
finish();
|
|
62798
|
+
},
|
|
62799
|
+
mirror: async () => {
|
|
62800
|
+
if (closed || !sessionId) return;
|
|
62801
|
+
const url = gatewayUrl + GATEWAY_ROUTES.sessionMirror(personaId2, sessionId);
|
|
62802
|
+
try {
|
|
62803
|
+
const res = await fetchImpl(url, { method: "POST", headers, body: "" });
|
|
62804
|
+
if (!res.ok) logger?.warn("cloud session mirror failed", { status: res.status });
|
|
62805
|
+
} catch (e) {
|
|
62806
|
+
if (!closed) logger?.warn("cloud session mirror error", { message: e.message });
|
|
62807
|
+
}
|
|
62780
62808
|
}
|
|
62781
62809
|
};
|
|
62782
62810
|
}
|
|
@@ -62923,6 +62951,7 @@ function createCloudCodexSession(ctx, sink, deps) {
|
|
|
62923
62951
|
paths.catch(() => {
|
|
62924
62952
|
});
|
|
62925
62953
|
stream.onClose(() => rejectPaths(new Error("\u4E91\u4E0A\u901A\u9053\u5728 ready \u4E4B\u524D\u5173\u4E86\uFF0C\u62FF\u4E0D\u5230 Pod \u8DEF\u5F84")));
|
|
62954
|
+
let channel = null;
|
|
62926
62955
|
const driver = driveCodexThread({
|
|
62927
62956
|
ctx,
|
|
62928
62957
|
sink,
|
|
@@ -62932,7 +62961,8 @@ function createCloudCodexSession(ctx, sink, deps) {
|
|
|
62932
62961
|
imageInput: cloudImageInput(deps),
|
|
62933
62962
|
// skills 在 Pod 里由 persona 目录自带,本机路径对它没意义
|
|
62934
62963
|
// 「让对端走人」= 断开下行流,gateway 收到就删 Job;信号对 Pod 没有意义
|
|
62935
|
-
kill: () => stream.close()
|
|
62964
|
+
kill: () => stream.close(),
|
|
62965
|
+
onTurnCompleted: () => void channel?.mirror()
|
|
62936
62966
|
});
|
|
62937
62967
|
if (!personaId2) {
|
|
62938
62968
|
queueMicrotask(() => {
|
|
@@ -62942,7 +62972,8 @@ function createCloudCodexSession(ctx, sink, deps) {
|
|
|
62942
62972
|
return driver.session;
|
|
62943
62973
|
}
|
|
62944
62974
|
void deps.client.openSession(personaId2).then(
|
|
62945
|
-
(
|
|
62975
|
+
(opened) => {
|
|
62976
|
+
channel = opened;
|
|
62946
62977
|
channel.onControl((c2) => {
|
|
62947
62978
|
if (c2.kind === "ready") {
|
|
62948
62979
|
resolvePaths({ personaDir: c2.personaDir, workDir: c2.workDir });
|
|
@@ -70970,7 +71001,7 @@ function computeMethodAccess(args) {
|
|
|
70970
71001
|
}
|
|
70971
71002
|
|
|
70972
71003
|
// src/version.ts
|
|
70973
|
-
var version = "0.2.
|
|
71004
|
+
var version = "0.2.553".length > 0 ? "0.2.553" : "dev";
|
|
70974
71005
|
|
|
70975
71006
|
// src/cli-probe/probe.ts
|
|
70976
71007
|
var fs78 = __toESM(require("fs"), 1);
|
|
@@ -22662,6 +22662,8 @@ var EngineConnectPoolResponseSchema = external_exports.object({
|
|
|
22662
22662
|
}).strict();
|
|
22663
22663
|
|
|
22664
22664
|
// ../protocol/src/persona-schemas.ts
|
|
22665
|
+
var PERSONA_SIZES = ["small", "medium", "large"];
|
|
22666
|
+
var PersonaSizeSchema = external_exports.enum(PERSONA_SIZES);
|
|
22665
22667
|
var PersonaFileSchema = external_exports.object({
|
|
22666
22668
|
personaId: external_exports.string(),
|
|
22667
22669
|
label: external_exports.string(),
|
|
@@ -22680,7 +22682,8 @@ var PersonaFileSchema = external_exports.object({
|
|
|
22680
22682
|
/**
|
|
22681
22683
|
* 云上任务 Pod 的规格档(design 2026-09-18-persona-size):`small` / `medium` / `large`,没写按 medium。
|
|
22682
22684
|
* 只有发布上云的流水线读它(cloud-host/pipeline/deploy-file.mjs 收窄值域,不认识的拒发);本机跑不看。
|
|
22683
|
-
* 协议层同 model / effort 保持 string
|
|
22685
|
+
* 协议层同 model / effort 保持 string(文件层向前兼容);改它的入口是上云页标题行的规格下拉
|
|
22686
|
+
* (design 2026-09-20-persona-size-ui),`persona:update` 那头按 PersonaSizeSchema 收窄。
|
|
22684
22687
|
*/
|
|
22685
22688
|
size: external_exports.string().optional(),
|
|
22686
22689
|
createdAt: external_exports.number(),
|
|
@@ -22794,6 +22797,8 @@ var PersonaUpdateArgsSchema = external_exports.object({
|
|
|
22794
22797
|
model: external_exports.string().optional(),
|
|
22795
22798
|
effort: external_exports.string().optional(),
|
|
22796
22799
|
tool: external_exports.string().optional(),
|
|
22800
|
+
// 云上任务 Pod 的规格档:只收三档之一(PersonaFile 层是 string,边界在这里收窄)
|
|
22801
|
+
size: PersonaSizeSchema.optional(),
|
|
22797
22802
|
personality: external_exports.string().optional(),
|
|
22798
22803
|
// 人格补充层正文(见 PersonaInfoResponseSchema.personalityLocal)。与 personality 各写
|
|
22799
22804
|
// 各层、互不影响;'' = 清空补充层。预装 persona 的编辑入口写的就是这个字段。
|
|
@@ -24524,6 +24529,10 @@ var INNER_TAG_NAMES = "clawd-dispatch-task|clawd-dispatch-result|brief|detail|fi
|
|
|
24524
24529
|
var INNER_TAG_ESCAPE_RE = new RegExp(`<(\\\\*)(/?)(${INNER_TAG_NAMES})\\b`, "g");
|
|
24525
24530
|
var INNER_TAG_UNESCAPE_RE = new RegExp(`<\\\\(\\\\*)(/?)(${INNER_TAG_NAMES})\\b`, "g");
|
|
24526
24531
|
|
|
24532
|
+
// ../protocol/src/tool-family.ts
|
|
24533
|
+
var CLOUD_TOOL_SUFFIX = "-cloud";
|
|
24534
|
+
var CODEX_CLOUD_TOOL_ID = `codex${CLOUD_TOOL_SUFFIX}`;
|
|
24535
|
+
|
|
24527
24536
|
// src/tools/claude-history.ts
|
|
24528
24537
|
var import_node_crypto = __toESM(require("crypto"), 1);
|
|
24529
24538
|
var import_node_fs = __toESM(require("fs"), 1);
|
|
@@ -22848,6 +22848,8 @@ var EngineConnectPoolResponseSchema = external_exports.object({
|
|
|
22848
22848
|
}).strict();
|
|
22849
22849
|
|
|
22850
22850
|
// ../protocol/src/persona-schemas.ts
|
|
22851
|
+
var PERSONA_SIZES = ["small", "medium", "large"];
|
|
22852
|
+
var PersonaSizeSchema = external_exports.enum(PERSONA_SIZES);
|
|
22851
22853
|
var PersonaFileSchema = external_exports.object({
|
|
22852
22854
|
personaId: external_exports.string(),
|
|
22853
22855
|
label: external_exports.string(),
|
|
@@ -22866,7 +22868,8 @@ var PersonaFileSchema = external_exports.object({
|
|
|
22866
22868
|
/**
|
|
22867
22869
|
* 云上任务 Pod 的规格档(design 2026-09-18-persona-size):`small` / `medium` / `large`,没写按 medium。
|
|
22868
22870
|
* 只有发布上云的流水线读它(cloud-host/pipeline/deploy-file.mjs 收窄值域,不认识的拒发);本机跑不看。
|
|
22869
|
-
* 协议层同 model / effort 保持 string
|
|
22871
|
+
* 协议层同 model / effort 保持 string(文件层向前兼容);改它的入口是上云页标题行的规格下拉
|
|
22872
|
+
* (design 2026-09-20-persona-size-ui),`persona:update` 那头按 PersonaSizeSchema 收窄。
|
|
22870
22873
|
*/
|
|
22871
22874
|
size: external_exports.string().optional(),
|
|
22872
22875
|
createdAt: external_exports.number(),
|
|
@@ -22980,6 +22983,8 @@ var PersonaUpdateArgsSchema = external_exports.object({
|
|
|
22980
22983
|
model: external_exports.string().optional(),
|
|
22981
22984
|
effort: external_exports.string().optional(),
|
|
22982
22985
|
tool: external_exports.string().optional(),
|
|
22986
|
+
// 云上任务 Pod 的规格档:只收三档之一(PersonaFile 层是 string,边界在这里收窄)
|
|
22987
|
+
size: PersonaSizeSchema.optional(),
|
|
22983
22988
|
personality: external_exports.string().optional(),
|
|
22984
22989
|
// 人格补充层正文(见 PersonaInfoResponseSchema.personalityLocal)。与 personality 各写
|
|
22985
22990
|
// 各层、互不影响;'' = 清空补充层。预装 persona 的编辑入口写的就是这个字段。
|
|
@@ -24710,6 +24715,10 @@ var INNER_TAG_NAMES = "clawd-dispatch-task|clawd-dispatch-result|brief|detail|fi
|
|
|
24710
24715
|
var INNER_TAG_ESCAPE_RE = new RegExp(`<(\\\\*)(/?)(${INNER_TAG_NAMES})\\b`, "g");
|
|
24711
24716
|
var INNER_TAG_UNESCAPE_RE = new RegExp(`<\\\\(\\\\*)(/?)(${INNER_TAG_NAMES})\\b`, "g");
|
|
24712
24717
|
|
|
24718
|
+
// ../protocol/src/tool-family.ts
|
|
24719
|
+
var CLOUD_TOOL_SUFFIX = "-cloud";
|
|
24720
|
+
var CODEX_CLOUD_TOOL_ID = `codex${CLOUD_TOOL_SUFFIX}`;
|
|
24721
|
+
|
|
24713
24722
|
// src/deploy/deploy-file.ts
|
|
24714
24723
|
var import_promises = __toESM(require("fs/promises"), 1);
|
|
24715
24724
|
var import_node_path3 = __toESM(require("path"), 1);
|
|
@@ -24871,7 +24880,7 @@ var L = [
|
|
|
24871
24880
|
" rm -rf persona/.git",
|
|
24872
24881
|
" node clawos/cloud-host/provision/build-image.mjs \\",
|
|
24873
24882
|
" --manifest persona/.clawd/deploy.json \\",
|
|
24874
|
-
' --from "$REGISTRY/$IMAGE_NAME:base" \\',
|
|
24883
|
+
' --from "$REGISTRY/$IMAGE_NAME:base-${{ steps.plan.outputs.engine }}" \\',
|
|
24875
24884
|
" --persona-dir persona \\",
|
|
24876
24885
|
// persona 在镜像里落 /clawd/personas/<id>/(与本机同构),id 是 gateway 登记的名字;同 smoke / register 用的那个输出
|
|
24877
24886
|
" --persona-id '${{ steps.plan.outputs.persona_id }}' \\",
|
|
@@ -24923,6 +24932,7 @@ var L = [
|
|
|
24923
24932
|
" --model '${{ steps.plan.outputs.model }}' \\",
|
|
24924
24933
|
" --effort '${{ steps.plan.outputs.effort }}' \\",
|
|
24925
24934
|
" --size '${{ steps.plan.outputs.size }}' \\",
|
|
24935
|
+
" --engine '${{ steps.plan.outputs.engine }}' \\",
|
|
24926
24936
|
" --connectors '${{ steps.plan.outputs.connectors }}' \\",
|
|
24927
24937
|
" --run-number '${{ github.run_number }}'",
|
|
24928
24938
|
"",
|
|
@@ -24947,6 +24957,7 @@ var L = [
|
|
|
24947
24957
|
" --model '${{ steps.plan.outputs.model }}' \\",
|
|
24948
24958
|
" --effort '${{ steps.plan.outputs.effort }}' \\",
|
|
24949
24959
|
" --size '${{ steps.plan.outputs.size }}' \\",
|
|
24960
|
+
" --engine '${{ steps.plan.outputs.engine }}' \\",
|
|
24950
24961
|
" --connectors '${{ steps.plan.outputs.connectors }}'",
|
|
24951
24962
|
""
|
|
24952
24963
|
];
|
|
@@ -22848,6 +22848,8 @@ var EngineConnectPoolResponseSchema = external_exports.object({
|
|
|
22848
22848
|
}).strict();
|
|
22849
22849
|
|
|
22850
22850
|
// ../protocol/src/persona-schemas.ts
|
|
22851
|
+
var PERSONA_SIZES = ["small", "medium", "large"];
|
|
22852
|
+
var PersonaSizeSchema = external_exports.enum(PERSONA_SIZES);
|
|
22851
22853
|
var PersonaFileSchema = external_exports.object({
|
|
22852
22854
|
personaId: external_exports.string(),
|
|
22853
22855
|
label: external_exports.string(),
|
|
@@ -22866,7 +22868,8 @@ var PersonaFileSchema = external_exports.object({
|
|
|
22866
22868
|
/**
|
|
22867
22869
|
* 云上任务 Pod 的规格档(design 2026-09-18-persona-size):`small` / `medium` / `large`,没写按 medium。
|
|
22868
22870
|
* 只有发布上云的流水线读它(cloud-host/pipeline/deploy-file.mjs 收窄值域,不认识的拒发);本机跑不看。
|
|
22869
|
-
* 协议层同 model / effort 保持 string
|
|
22871
|
+
* 协议层同 model / effort 保持 string(文件层向前兼容);改它的入口是上云页标题行的规格下拉
|
|
22872
|
+
* (design 2026-09-20-persona-size-ui),`persona:update` 那头按 PersonaSizeSchema 收窄。
|
|
22870
22873
|
*/
|
|
22871
22874
|
size: external_exports.string().optional(),
|
|
22872
22875
|
createdAt: external_exports.number(),
|
|
@@ -22980,6 +22983,8 @@ var PersonaUpdateArgsSchema = external_exports.object({
|
|
|
22980
22983
|
model: external_exports.string().optional(),
|
|
22981
22984
|
effort: external_exports.string().optional(),
|
|
22982
22985
|
tool: external_exports.string().optional(),
|
|
22986
|
+
// 云上任务 Pod 的规格档:只收三档之一(PersonaFile 层是 string,边界在这里收窄)
|
|
22987
|
+
size: PersonaSizeSchema.optional(),
|
|
22983
22988
|
personality: external_exports.string().optional(),
|
|
22984
22989
|
// 人格补充层正文(见 PersonaInfoResponseSchema.personalityLocal)。与 personality 各写
|
|
22985
22990
|
// 各层、互不影响;'' = 清空补充层。预装 persona 的编辑入口写的就是这个字段。
|
|
@@ -24710,6 +24715,10 @@ var INNER_TAG_NAMES = "clawd-dispatch-task|clawd-dispatch-result|brief|detail|fi
|
|
|
24710
24715
|
var INNER_TAG_ESCAPE_RE = new RegExp(`<(\\\\*)(/?)(${INNER_TAG_NAMES})\\b`, "g");
|
|
24711
24716
|
var INNER_TAG_UNESCAPE_RE = new RegExp(`<\\\\(\\\\*)(/?)(${INNER_TAG_NAMES})\\b`, "g");
|
|
24712
24717
|
|
|
24718
|
+
// ../protocol/src/tool-family.ts
|
|
24719
|
+
var CLOUD_TOOL_SUFFIX = "-cloud";
|
|
24720
|
+
var CODEX_CLOUD_TOOL_ID = `codex${CLOUD_TOOL_SUFFIX}`;
|
|
24721
|
+
|
|
24713
24722
|
// src/deploy/deploy-file.ts
|
|
24714
24723
|
var import_promises = __toESM(require("fs/promises"), 1);
|
|
24715
24724
|
var import_node_path3 = __toESM(require("path"), 1);
|
|
@@ -24871,7 +24880,7 @@ var L = [
|
|
|
24871
24880
|
" rm -rf persona/.git",
|
|
24872
24881
|
" node clawos/cloud-host/provision/build-image.mjs \\",
|
|
24873
24882
|
" --manifest persona/.clawd/deploy.json \\",
|
|
24874
|
-
' --from "$REGISTRY/$IMAGE_NAME:base" \\',
|
|
24883
|
+
' --from "$REGISTRY/$IMAGE_NAME:base-${{ steps.plan.outputs.engine }}" \\',
|
|
24875
24884
|
" --persona-dir persona \\",
|
|
24876
24885
|
// persona 在镜像里落 /clawd/personas/<id>/(与本机同构),id 是 gateway 登记的名字;同 smoke / register 用的那个输出
|
|
24877
24886
|
" --persona-id '${{ steps.plan.outputs.persona_id }}' \\",
|
|
@@ -24923,6 +24932,7 @@ var L = [
|
|
|
24923
24932
|
" --model '${{ steps.plan.outputs.model }}' \\",
|
|
24924
24933
|
" --effort '${{ steps.plan.outputs.effort }}' \\",
|
|
24925
24934
|
" --size '${{ steps.plan.outputs.size }}' \\",
|
|
24935
|
+
" --engine '${{ steps.plan.outputs.engine }}' \\",
|
|
24926
24936
|
" --connectors '${{ steps.plan.outputs.connectors }}' \\",
|
|
24927
24937
|
" --run-number '${{ github.run_number }}'",
|
|
24928
24938
|
"",
|
|
@@ -24947,6 +24957,7 @@ var L = [
|
|
|
24947
24957
|
" --model '${{ steps.plan.outputs.model }}' \\",
|
|
24948
24958
|
" --effort '${{ steps.plan.outputs.effort }}' \\",
|
|
24949
24959
|
" --size '${{ steps.plan.outputs.size }}' \\",
|
|
24960
|
+
" --engine '${{ steps.plan.outputs.engine }}' \\",
|
|
24950
24961
|
" --connectors '${{ steps.plan.outputs.connectors }}'",
|
|
24951
24962
|
""
|
|
24952
24963
|
];
|