@clawos-dev/clawd 0.2.758 → 0.2.760
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/a2a/mcp-server.cjs +9 -1
- package/dist/app-builder-plugin/mcp-server.cjs +9 -1
- package/dist/cli.cjs +43 -7
- package/dist/cloud-persona-conversations.html +28 -28
- package/dist/cloud-persona-metrics.html +1 -1
- package/dist/cloud-persona-schedules.html +1 -1
- package/dist/owner-ui/assets/owner-C17qDOfa.js +955 -0
- package/dist/owner-ui/assets/owner-aAdXxGaN.css +32 -0
- package/dist/owner-ui/owner.html +2 -2
- package/dist/persona-defaults/persona-app-builder/mcp/clawd-app-builder/mcp-server.cjs +9 -1
- package/dist/persona-defaults/persona-dataclaw-builder/mcp/clawd-app-builder/mcp-server.cjs +9 -1
- package/dist/share-md-viewer-error.html +1 -1
- package/dist/share-md-viewer.html +1 -1
- package/dist/share-ui/assets/guest-BTg2GvCX.css +32 -0
- package/dist/share-ui/assets/{guest-Dnn558RQ.js → guest-DOIr732g.js} +124 -124
- package/dist/share-ui/guest.html +2 -2
- package/package.json +1 -1
- package/dist/owner-ui/assets/owner-DQH3TGvS.css +0 -32
- package/dist/owner-ui/assets/owner-b_bsT-Sn.js +0 -955
- package/dist/share-ui/assets/guest-0sDvQwK3.css +0 -32
package/dist/a2a/mcp-server.cjs
CHANGED
|
@@ -21620,9 +21620,12 @@ var PersonaCloudEngineSchema = external_exports.object({
|
|
|
21620
21620
|
model: external_exports.string().optional(),
|
|
21621
21621
|
effort: external_exports.string().optional()
|
|
21622
21622
|
}).strict();
|
|
21623
|
+
var PERSONA_DESCRIPTION_MAX = 80;
|
|
21623
21624
|
var PersonaFileSchema = external_exports.object({
|
|
21624
21625
|
personaId: external_exports.string(),
|
|
21625
21626
|
label: external_exports.string(),
|
|
21627
|
+
/** 一句话描述,上云时随 label 登记到 gateway,列表和卡片里用来辨认 persona。读文件不限长(手写超长不该让整个 persona 解析失败),写入口和 gateway 才截 / 拒 80 字 */
|
|
21628
|
+
description: external_exports.string().optional(),
|
|
21626
21629
|
model: external_exports.string().optional(),
|
|
21627
21630
|
// 与 model 平行的第二个 session 默认值:reasoning effort。值域跟着 tool 走
|
|
21628
21631
|
// (claude 是 '' | low | medium | high | xhigh | max,codex 是 per-model 档位),
|
|
@@ -21651,8 +21654,12 @@ var PersonaFileSchema = external_exports.object({
|
|
|
21651
21654
|
personaId: external_exports.string().min(1),
|
|
21652
21655
|
publishedByMe: external_exports.boolean().optional(),
|
|
21653
21656
|
collaboratedByMe: external_exports.boolean().optional(),
|
|
21654
|
-
/** Display name (persona.json label) registered on the gateway; the row's top-level label
|
|
21657
|
+
/** Display name (persona.json label) registered on the gateway; the row's top-level label falls back to the gateway id when absent. */
|
|
21655
21658
|
label: external_exports.string().optional(),
|
|
21659
|
+
/** One-line description (persona.json description) registered on the gateway. */
|
|
21660
|
+
description: external_exports.string().optional(),
|
|
21661
|
+
/** Who published it, from the center. name absent = center has no name for them; creator absent = not looked up (older center / lookup failed). */
|
|
21662
|
+
creator: external_exports.object({ name: external_exports.string().optional(), mine: external_exports.boolean() }).strict().optional(),
|
|
21656
21663
|
environment: DeployEnvironmentSchema.optional(),
|
|
21657
21664
|
expectedImage: ImageDigestSchema.optional(),
|
|
21658
21665
|
testReleaseId: external_exports.string().optional()
|
|
@@ -21738,6 +21745,7 @@ var PersonaUpdateArgsSchema = external_exports.object({
|
|
|
21738
21745
|
personaId: external_exports.string().min(1),
|
|
21739
21746
|
patch: external_exports.object({
|
|
21740
21747
|
label: external_exports.string().min(1).optional(),
|
|
21748
|
+
description: external_exports.string().max(PERSONA_DESCRIPTION_MAX).optional(),
|
|
21741
21749
|
model: external_exports.string().optional(),
|
|
21742
21750
|
effort: external_exports.string().optional(),
|
|
21743
21751
|
serviceTier: PersonaFileSchema.shape.serviceTier,
|
|
@@ -31548,9 +31548,12 @@ var PersonaCloudEngineSchema = external_exports.object({
|
|
|
31548
31548
|
model: external_exports.string().optional(),
|
|
31549
31549
|
effort: external_exports.string().optional()
|
|
31550
31550
|
}).strict();
|
|
31551
|
+
var PERSONA_DESCRIPTION_MAX = 80;
|
|
31551
31552
|
var PersonaFileSchema = external_exports.object({
|
|
31552
31553
|
personaId: external_exports.string(),
|
|
31553
31554
|
label: external_exports.string(),
|
|
31555
|
+
/** 一句话描述,上云时随 label 登记到 gateway,列表和卡片里用来辨认 persona。读文件不限长(手写超长不该让整个 persona 解析失败),写入口和 gateway 才截 / 拒 80 字 */
|
|
31556
|
+
description: external_exports.string().optional(),
|
|
31554
31557
|
model: external_exports.string().optional(),
|
|
31555
31558
|
// 与 model 平行的第二个 session 默认值:reasoning effort。值域跟着 tool 走
|
|
31556
31559
|
// (claude 是 '' | low | medium | high | xhigh | max,codex 是 per-model 档位),
|
|
@@ -31579,8 +31582,12 @@ var PersonaFileSchema = external_exports.object({
|
|
|
31579
31582
|
personaId: external_exports.string().min(1),
|
|
31580
31583
|
publishedByMe: external_exports.boolean().optional(),
|
|
31581
31584
|
collaboratedByMe: external_exports.boolean().optional(),
|
|
31582
|
-
/** Display name (persona.json label) registered on the gateway; the row's top-level label
|
|
31585
|
+
/** Display name (persona.json label) registered on the gateway; the row's top-level label falls back to the gateway id when absent. */
|
|
31583
31586
|
label: external_exports.string().optional(),
|
|
31587
|
+
/** One-line description (persona.json description) registered on the gateway. */
|
|
31588
|
+
description: external_exports.string().optional(),
|
|
31589
|
+
/** Who published it, from the center. name absent = center has no name for them; creator absent = not looked up (older center / lookup failed). */
|
|
31590
|
+
creator: external_exports.object({ name: external_exports.string().optional(), mine: external_exports.boolean() }).strict().optional(),
|
|
31584
31591
|
environment: DeployEnvironmentSchema.optional(),
|
|
31585
31592
|
expectedImage: ImageDigestSchema.optional(),
|
|
31586
31593
|
testReleaseId: external_exports.string().optional()
|
|
@@ -31666,6 +31673,7 @@ var PersonaUpdateArgsSchema = external_exports.object({
|
|
|
31666
31673
|
personaId: external_exports.string().min(1),
|
|
31667
31674
|
patch: external_exports.object({
|
|
31668
31675
|
label: external_exports.string().min(1).optional(),
|
|
31676
|
+
description: external_exports.string().max(PERSONA_DESCRIPTION_MAX).optional(),
|
|
31669
31677
|
model: external_exports.string().optional(),
|
|
31670
31678
|
effort: external_exports.string().optional(),
|
|
31671
31679
|
serviceTier: PersonaFileSchema.shape.serviceTier,
|
package/dist/cli.cjs
CHANGED
|
@@ -6443,7 +6443,7 @@ var init_tool_family = __esm({
|
|
|
6443
6443
|
});
|
|
6444
6444
|
|
|
6445
6445
|
// ../protocol/src/persona-schemas.ts
|
|
6446
|
-
var CodexServiceTierSchema, PERSONA_SIZES, PersonaSizeSchema, DEFAULT_PERSONA_SIZE, PERSONA_CPUS, PersonaCpuSchema, PERSONA_CPU_DEFAULTS, PersonaCloudEngineSchema, PersonaFileSchema, PersonaSkillSummarySchema, PersonaPluginSummarySchema, CodexSandboxSettingsSchema, PersonaSandboxSettingsSchema, PersonaInfoResponseSchema, PersonaCreateArgsSchema, PersonaIdArgsSchema, PersonaUpdateArgsSchema;
|
|
6446
|
+
var CodexServiceTierSchema, PERSONA_SIZES, PersonaSizeSchema, DEFAULT_PERSONA_SIZE, PERSONA_CPUS, PersonaCpuSchema, PERSONA_CPU_DEFAULTS, PersonaCloudEngineSchema, PERSONA_DESCRIPTION_MAX, PersonaFileSchema, PersonaSkillSummarySchema, PersonaPluginSummarySchema, CodexSandboxSettingsSchema, PersonaSandboxSettingsSchema, PersonaInfoResponseSchema, PersonaCreateArgsSchema, PersonaIdArgsSchema, PersonaUpdateArgsSchema;
|
|
6447
6447
|
var init_persona_schemas = __esm({
|
|
6448
6448
|
"../protocol/src/persona-schemas.ts"() {
|
|
6449
6449
|
"use strict";
|
|
@@ -6461,9 +6461,12 @@ var init_persona_schemas = __esm({
|
|
|
6461
6461
|
model: external_exports.string().optional(),
|
|
6462
6462
|
effort: external_exports.string().optional()
|
|
6463
6463
|
}).strict();
|
|
6464
|
+
PERSONA_DESCRIPTION_MAX = 80;
|
|
6464
6465
|
PersonaFileSchema = external_exports.object({
|
|
6465
6466
|
personaId: external_exports.string(),
|
|
6466
6467
|
label: external_exports.string(),
|
|
6468
|
+
/** 一句话描述,上云时随 label 登记到 gateway,列表和卡片里用来辨认 persona。读文件不限长(手写超长不该让整个 persona 解析失败),写入口和 gateway 才截 / 拒 80 字 */
|
|
6469
|
+
description: external_exports.string().optional(),
|
|
6467
6470
|
model: external_exports.string().optional(),
|
|
6468
6471
|
// 与 model 平行的第二个 session 默认值:reasoning effort。值域跟着 tool 走
|
|
6469
6472
|
// (claude 是 '' | low | medium | high | xhigh | max,codex 是 per-model 档位),
|
|
@@ -6492,8 +6495,12 @@ var init_persona_schemas = __esm({
|
|
|
6492
6495
|
personaId: external_exports.string().min(1),
|
|
6493
6496
|
publishedByMe: external_exports.boolean().optional(),
|
|
6494
6497
|
collaboratedByMe: external_exports.boolean().optional(),
|
|
6495
|
-
/** Display name (persona.json label) registered on the gateway; the row's top-level label
|
|
6498
|
+
/** Display name (persona.json label) registered on the gateway; the row's top-level label falls back to the gateway id when absent. */
|
|
6496
6499
|
label: external_exports.string().optional(),
|
|
6500
|
+
/** One-line description (persona.json description) registered on the gateway. */
|
|
6501
|
+
description: external_exports.string().optional(),
|
|
6502
|
+
/** Who published it, from the center. name absent = center has no name for them; creator absent = not looked up (older center / lookup failed). */
|
|
6503
|
+
creator: external_exports.object({ name: external_exports.string().optional(), mine: external_exports.boolean() }).strict().optional(),
|
|
6497
6504
|
environment: DeployEnvironmentSchema.optional(),
|
|
6498
6505
|
expectedImage: ImageDigestSchema.optional(),
|
|
6499
6506
|
testReleaseId: external_exports.string().optional()
|
|
@@ -6579,6 +6586,7 @@ var init_persona_schemas = __esm({
|
|
|
6579
6586
|
personaId: external_exports.string().min(1),
|
|
6580
6587
|
patch: external_exports.object({
|
|
6581
6588
|
label: external_exports.string().min(1).optional(),
|
|
6589
|
+
description: external_exports.string().max(PERSONA_DESCRIPTION_MAX).optional(),
|
|
6582
6590
|
model: external_exports.string().optional(),
|
|
6583
6591
|
effort: external_exports.string().optional(),
|
|
6584
6592
|
serviceTier: PersonaFileSchema.shape.serviceTier,
|
|
@@ -53363,6 +53371,7 @@ var PersonaManager = class {
|
|
|
53363
53371
|
if (patch.effort === void 0) delete updated.effort;
|
|
53364
53372
|
if (patch.serviceTier === void 0) delete updated.serviceTier;
|
|
53365
53373
|
}
|
|
53374
|
+
if (updated.description !== void 0 && updated.description.trim() === "") delete updated.description;
|
|
53366
53375
|
if (iconKeyPatch === null) {
|
|
53367
53376
|
delete updated.iconKey;
|
|
53368
53377
|
} else if (iconKeyPatch !== void 0) {
|
|
@@ -54016,6 +54025,23 @@ async function centralVisiblePersonas(opts) {
|
|
|
54016
54025
|
for (const id of ids) roles[id] = given ? given[id] === "owner" ? "owner" : "editor" : "owner";
|
|
54017
54026
|
return { all: body.all, personaIds: ids, roles };
|
|
54018
54027
|
}
|
|
54028
|
+
var PUBLISHERS_BATCH = 100;
|
|
54029
|
+
async function centralPersonaPublishers(opts) {
|
|
54030
|
+
const out = {};
|
|
54031
|
+
for (let i2 = 0; i2 < opts.personaIds.length; i2 += PUBLISHERS_BATCH) {
|
|
54032
|
+
const ids = opts.personaIds.slice(i2, i2 + PUBLISHERS_BATCH);
|
|
54033
|
+
const body = await centralRequest(opts, `/api/persona-cloud/personas/publishers?ids=${encodeURIComponent(ids.join(","))}`, { method: "GET", bearer: opts.loginPass });
|
|
54034
|
+
if (!body || typeof body !== "object" || Array.isArray(body)) throw new CentralClientError("BAD_RESPONSE", "personas/publishers: expected an object");
|
|
54035
|
+
for (const [id, v3] of Object.entries(body)) {
|
|
54036
|
+
const row = v3;
|
|
54037
|
+
if (!row || typeof row !== "object" || typeof row.mine !== "boolean" || row.displayName !== null && typeof row.displayName !== "string") {
|
|
54038
|
+
throw new CentralClientError("BAD_RESPONSE", `personas/publishers: malformed row for ${id}`);
|
|
54039
|
+
}
|
|
54040
|
+
out[id] = { displayName: row.displayName, mine: row.mine };
|
|
54041
|
+
}
|
|
54042
|
+
}
|
|
54043
|
+
return out;
|
|
54044
|
+
}
|
|
54019
54045
|
var personaPath = (personaId2) => `/api/persona-cloud/personas/${encodeURIComponent(personaId2)}`;
|
|
54020
54046
|
async function centralPersonaAccess(opts) {
|
|
54021
54047
|
const body = await centralRequest(opts, `${personaPath(opts.personaId)}/access`, { method: "GET", bearer: opts.loginPass });
|
|
@@ -58900,18 +58926,18 @@ var CloudApiKeyRequiredError = class extends Error {
|
|
|
58900
58926
|
}
|
|
58901
58927
|
};
|
|
58902
58928
|
var CLOUD_PERSONA_ID_SUFFIX = "-cloud";
|
|
58903
|
-
function cloudPersonaToFile(p3, publishedByMe = false, collaboratedByMe = false) {
|
|
58929
|
+
function cloudPersonaToFile(p3, publishedByMe = false, collaboratedByMe = false, creator) {
|
|
58904
58930
|
const at3 = p3.registeredAt ?? 0;
|
|
58905
58931
|
return {
|
|
58906
58932
|
personaId: p3.personaId + CLOUD_PERSONA_ID_SUFFIX,
|
|
58907
|
-
label: p3.personaId,
|
|
58933
|
+
label: p3.label ?? p3.personaId,
|
|
58908
58934
|
tool: p3.engine + CLOUD_TOOL_SUFFIX,
|
|
58909
58935
|
...p3.model ? { model: p3.model } : {},
|
|
58910
58936
|
...p3.effort ? { effort: p3.effort } : {},
|
|
58911
58937
|
public: false,
|
|
58912
58938
|
createdAt: at3,
|
|
58913
58939
|
updatedAt: at3,
|
|
58914
|
-
cloud: { gatewayUrl: p3.gatewayUrl, personaId: p3.personaId, ...publishedByMe ? { publishedByMe: true } : {}, ...collaboratedByMe ? { collaboratedByMe: true } : {}, ...p3.label ? { label: p3.label } : {} }
|
|
58940
|
+
cloud: { gatewayUrl: p3.gatewayUrl, personaId: p3.personaId, ...publishedByMe ? { publishedByMe: true } : {}, ...collaboratedByMe ? { collaboratedByMe: true } : {}, ...p3.label ? { label: p3.label } : {}, ...p3.description ? { description: p3.description } : {}, ...creator ? { creator } : {} }
|
|
58915
58941
|
};
|
|
58916
58942
|
}
|
|
58917
58943
|
var CloudGatewayClient = class {
|
|
@@ -58959,6 +58985,7 @@ var CloudGatewayClient = class {
|
|
|
58959
58985
|
gatewayUrl,
|
|
58960
58986
|
engine: d2.engine,
|
|
58961
58987
|
...typeof d2.label === "string" && d2.label ? { label: d2.label } : {},
|
|
58988
|
+
...typeof d2.description === "string" && d2.description ? { description: d2.description } : {},
|
|
58962
58989
|
...typeof d2.image === "string" ? { image: d2.image } : {},
|
|
58963
58990
|
...typeof d2.model === "string" && d2.model ? { model: d2.model } : {},
|
|
58964
58991
|
...typeof d2.effort === "string" && d2.effort ? { effort: d2.effort } : {},
|
|
@@ -76514,7 +76541,7 @@ function computeMethodAccess(args) {
|
|
|
76514
76541
|
}
|
|
76515
76542
|
|
|
76516
76543
|
// src/version.ts
|
|
76517
|
-
var version = "0.2.
|
|
76544
|
+
var version = "0.2.760".length > 0 ? "0.2.760" : "dev";
|
|
76518
76545
|
|
|
76519
76546
|
// src/cli-probe/probe.ts
|
|
76520
76547
|
var fs87 = __toESM(require("fs"), 1);
|
|
@@ -79878,7 +79905,16 @@ async function startDaemon(config) {
|
|
|
79878
79905
|
logger.warn("cloud bot publisher lookup failed; binding controls hidden", { reason: err.message });
|
|
79879
79906
|
}
|
|
79880
79907
|
}
|
|
79881
|
-
|
|
79908
|
+
let publishers = {};
|
|
79909
|
+
if (loginPass) {
|
|
79910
|
+
try {
|
|
79911
|
+
publishers = await centralPersonaPublishers({ api: config.clawosApi ?? DEFAULT_CLAWOS_API, loginPass, personaIds: list.map((p3) => p3.personaId) });
|
|
79912
|
+
} catch (err) {
|
|
79913
|
+
logger.debug("cloud persona publishers lookup skipped", { reason: err.message });
|
|
79914
|
+
}
|
|
79915
|
+
}
|
|
79916
|
+
const creatorOf = (id) => publishers[id] ? { ...publishers[id].displayName ? { name: publishers[id].displayName } : {}, mine: publishers[id].mine } : void 0;
|
|
79917
|
+
const shadowed = personaRegistry.setCloudSnapshot(list.map((p3) => cloudPersonaToFile(p3, publishedIds.has(p3.personaId), collaboratedIds.has(p3.personaId) && !personaStore.has(p3.personaId), creatorOf(p3.personaId))));
|
|
79882
79918
|
if (shadowed.length > 0) {
|
|
79883
79919
|
logger.warn("cloud personas shadowed by local personas with the same id", { personaIds: shadowed });
|
|
79884
79920
|
}
|