@clawos-dev/clawd 0.2.641 → 0.2.642

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.
@@ -32606,7 +32606,15 @@ var DashboardOpenUrlResultSchema = external_exports.object({
32606
32606
  expiresAt: external_exports.number().int()
32607
32607
  }).strict();
32608
32608
 
32609
+ // ../protocol/src/tool-family.ts
32610
+ var CLOUD_TOOL_SUFFIX = "-cloud";
32611
+ var CODEX_CLOUD_TOOL_ID = `codex${CLOUD_TOOL_SUFFIX}`;
32612
+ var CODEX_SERVICE_TIERS = { standard: "default", fast: "priority" };
32613
+ var PI_TOOL_ID = "pi";
32614
+ var PI_CLOUD_TOOL_ID = `${PI_TOOL_ID}${CLOUD_TOOL_SUFFIX}`;
32615
+
32609
32616
  // ../protocol/src/persona-schemas.ts
32617
+ var CodexServiceTierSchema = external_exports.enum([CODEX_SERVICE_TIERS.standard, CODEX_SERVICE_TIERS.fast]);
32610
32618
  var PERSONA_SIZES = ["tiny", "small", "medium", "large", "xlarge"];
32611
32619
  var PersonaSizeSchema = external_exports.enum(PERSONA_SIZES);
32612
32620
  var PERSONA_CPUS = [0.5, 1, 2];
@@ -32619,6 +32627,7 @@ var PersonaFileSchema = external_exports.object({
32619
32627
  // (claude 是 '' | low | medium | high | xhigh | max,codex 是 per-model 档位),
32620
32628
  // 协议层保持 string,由消费侧按 capabilities 收窄。
32621
32629
  effort: external_exports.string().optional(),
32630
+ serviceTier: CodexServiceTierSchema.optional(),
32622
32631
  public: external_exports.boolean(),
32623
32632
  // 8-key set defined UI-side in `lib/session-icons.ts`; protocol stays plain string
32624
32633
  // for forward compatibility, consumer fallbacks to default when key not found.
@@ -32710,6 +32719,7 @@ var PersonaCreateArgsSchema = external_exports.object({
32710
32719
  personality: external_exports.string(),
32711
32720
  model: external_exports.string().optional(),
32712
32721
  effort: external_exports.string().optional(),
32722
+ serviceTier: PersonaFileSchema.shape.serviceTier,
32713
32723
  tool: external_exports.string().optional(),
32714
32724
  public: external_exports.boolean().optional(),
32715
32725
  iconKey: external_exports.string().optional()
@@ -32723,6 +32733,7 @@ var PersonaUpdateArgsSchema = external_exports.object({
32723
32733
  label: external_exports.string().min(1).optional(),
32724
32734
  model: external_exports.string().optional(),
32725
32735
  effort: external_exports.string().optional(),
32736
+ serviceTier: PersonaFileSchema.shape.serviceTier,
32726
32737
  tool: external_exports.string().optional(),
32727
32738
  size: PersonaSizeSchema.optional(),
32728
32739
  cpu: PersonaCpuSchema.optional(),
@@ -32896,6 +32907,7 @@ var SessionFileSchema = external_exports.object({
32896
32907
  model: external_exports.string().optional(),
32897
32908
  permissionMode: external_exports.string().optional(),
32898
32909
  effort: external_exports.string().optional(),
32910
+ serviceTier: external_exports.string().optional(),
32899
32911
  ...sessionMetaShape,
32900
32912
  // Daemon-owned title generation marker; external session:update cannot set it. Missing marker allows first-message generation.
32901
32913
  aiLabelGeneratedAt: external_exports.string().optional(),
@@ -33145,6 +33157,7 @@ var SessionCreateArgs = external_exports.object({
33145
33157
  model: external_exports.string().optional(),
33146
33158
  permissionMode: external_exports.string().optional(),
33147
33159
  effort: external_exports.string().optional(),
33160
+ serviceTier: CodexServiceTierSchema.optional(),
33148
33161
  iconKey: external_exports.string().optional(),
33149
33162
  forkedFromSessionId: external_exports.string().min(1).optional(),
33150
33163
  ephemeral: external_exports.boolean().optional(),
@@ -34344,12 +34357,6 @@ var INNER_TAG_NAMES = "clawd-dispatch-task|clawd-dispatch-result|brief|detail|fi
34344
34357
  var INNER_TAG_ESCAPE_RE = new RegExp(`<(\\\\*)(/?)(${INNER_TAG_NAMES})\\b`, "g");
34345
34358
  var INNER_TAG_UNESCAPE_RE = new RegExp(`<\\\\(\\\\*)(/?)(${INNER_TAG_NAMES})\\b`, "g");
34346
34359
 
34347
- // ../protocol/src/tool-family.ts
34348
- var CLOUD_TOOL_SUFFIX = "-cloud";
34349
- var CODEX_CLOUD_TOOL_ID = `codex${CLOUD_TOOL_SUFFIX}`;
34350
- var PI_TOOL_ID = "pi";
34351
- var PI_CLOUD_TOOL_ID = `${PI_TOOL_ID}${CLOUD_TOOL_SUFFIX}`;
34352
-
34353
34360
  // src/deploy/deploy-file.ts
34354
34361
  var import_promises = __toESM(require("fs/promises"), 1);
34355
34362
  var import_node_path3 = __toESM(require("path"), 1);
package/dist/cli.cjs CHANGED
@@ -7689,13 +7689,40 @@ var init_dashboard_schemas = __esm({
7689
7689
  }
7690
7690
  });
7691
7691
 
7692
+ // ../protocol/src/tool-family.ts
7693
+ function isCodexFamily(tool) {
7694
+ return tool === "codex" || tool === CODEX_CLOUD_TOOL_ID;
7695
+ }
7696
+ function isPiFamily(tool) {
7697
+ return tool === PI_TOOL_ID || tool === PI_CLOUD_TOOL_ID;
7698
+ }
7699
+ function isCloudTool(tool) {
7700
+ return typeof tool === "string" && tool.length > CLOUD_TOOL_SUFFIX.length && tool.endsWith(CLOUD_TOOL_SUFFIX);
7701
+ }
7702
+ function isRpcAgentTool(tool) {
7703
+ return isCodexFamily(tool) || isPiFamily(tool);
7704
+ }
7705
+ var CLOUD_TOOL_SUFFIX, CODEX_CLOUD_TOOL_ID, CODEX_SERVICE_TIERS, PI_TOOL_ID, PI_CLOUD_TOOL_ID;
7706
+ var init_tool_family = __esm({
7707
+ "../protocol/src/tool-family.ts"() {
7708
+ "use strict";
7709
+ CLOUD_TOOL_SUFFIX = "-cloud";
7710
+ CODEX_CLOUD_TOOL_ID = `codex${CLOUD_TOOL_SUFFIX}`;
7711
+ CODEX_SERVICE_TIERS = { standard: "default", fast: "priority" };
7712
+ PI_TOOL_ID = "pi";
7713
+ PI_CLOUD_TOOL_ID = `${PI_TOOL_ID}${CLOUD_TOOL_SUFFIX}`;
7714
+ }
7715
+ });
7716
+
7692
7717
  // ../protocol/src/persona-schemas.ts
7693
- var PERSONA_SIZES, PersonaSizeSchema, PERSONA_CPUS, PersonaCpuSchema, PersonaFileSchema, PersonaSkillSummarySchema, PersonaPluginSummarySchema, CodexSandboxSettingsSchema, PersonaSandboxSettingsSchema, PersonaInfoResponseSchema, PersonaCreateArgsSchema, PersonaIdArgsSchema, PersonaUpdateArgsSchema;
7718
+ var CodexServiceTierSchema, PERSONA_SIZES, PersonaSizeSchema, PERSONA_CPUS, PersonaCpuSchema, PersonaFileSchema, PersonaSkillSummarySchema, PersonaPluginSummarySchema, CodexSandboxSettingsSchema, PersonaSandboxSettingsSchema, PersonaInfoResponseSchema, PersonaCreateArgsSchema, PersonaIdArgsSchema, PersonaUpdateArgsSchema;
7694
7719
  var init_persona_schemas = __esm({
7695
7720
  "../protocol/src/persona-schemas.ts"() {
7696
7721
  "use strict";
7697
7722
  init_zod();
7698
7723
  init_release_schemas();
7724
+ init_tool_family();
7725
+ CodexServiceTierSchema = external_exports.enum([CODEX_SERVICE_TIERS.standard, CODEX_SERVICE_TIERS.fast]);
7699
7726
  PERSONA_SIZES = ["tiny", "small", "medium", "large", "xlarge"];
7700
7727
  PersonaSizeSchema = external_exports.enum(PERSONA_SIZES);
7701
7728
  PERSONA_CPUS = [0.5, 1, 2];
@@ -7708,6 +7735,7 @@ var init_persona_schemas = __esm({
7708
7735
  // (claude 是 '' | low | medium | high | xhigh | max,codex 是 per-model 档位),
7709
7736
  // 协议层保持 string,由消费侧按 capabilities 收窄。
7710
7737
  effort: external_exports.string().optional(),
7738
+ serviceTier: CodexServiceTierSchema.optional(),
7711
7739
  public: external_exports.boolean(),
7712
7740
  // 8-key set defined UI-side in `lib/session-icons.ts`; protocol stays plain string
7713
7741
  // for forward compatibility, consumer fallbacks to default when key not found.
@@ -7799,6 +7827,7 @@ var init_persona_schemas = __esm({
7799
7827
  personality: external_exports.string(),
7800
7828
  model: external_exports.string().optional(),
7801
7829
  effort: external_exports.string().optional(),
7830
+ serviceTier: PersonaFileSchema.shape.serviceTier,
7802
7831
  tool: external_exports.string().optional(),
7803
7832
  public: external_exports.boolean().optional(),
7804
7833
  iconKey: external_exports.string().optional()
@@ -7812,6 +7841,7 @@ var init_persona_schemas = __esm({
7812
7841
  label: external_exports.string().min(1).optional(),
7813
7842
  model: external_exports.string().optional(),
7814
7843
  effort: external_exports.string().optional(),
7844
+ serviceTier: PersonaFileSchema.shape.serviceTier,
7815
7845
  tool: external_exports.string().optional(),
7816
7846
  size: PersonaSizeSchema.optional(),
7817
7847
  cpu: PersonaCpuSchema.optional(),
@@ -7935,6 +7965,7 @@ var init_schemas = __esm({
7935
7965
  init_attachment_schemas();
7936
7966
  init_principal();
7937
7967
  init_persona_schemas();
7968
+ init_persona_schemas();
7938
7969
  SessionStatusSchema = external_exports.enum(SESSION_STATUS_VALUES);
7939
7970
  ContextUsageSchema = external_exports.object({
7940
7971
  inputTokens: external_exports.number().int().nonnegative(),
@@ -8037,6 +8068,7 @@ var init_schemas = __esm({
8037
8068
  model: external_exports.string().optional(),
8038
8069
  permissionMode: external_exports.string().optional(),
8039
8070
  effort: external_exports.string().optional(),
8071
+ serviceTier: external_exports.string().optional(),
8040
8072
  ...sessionMetaShape,
8041
8073
  // Daemon-owned title generation marker; external session:update cannot set it. Missing marker allows first-message generation.
8042
8074
  aiLabelGeneratedAt: external_exports.string().optional(),
@@ -8286,6 +8318,7 @@ var init_schemas = __esm({
8286
8318
  model: external_exports.string().optional(),
8287
8319
  permissionMode: external_exports.string().optional(),
8288
8320
  effort: external_exports.string().optional(),
8321
+ serviceTier: CodexServiceTierSchema.optional(),
8289
8322
  iconKey: external_exports.string().optional(),
8290
8323
  forkedFromSessionId: external_exports.string().min(1).optional(),
8291
8324
  ephemeral: external_exports.boolean().optional(),
@@ -9703,30 +9736,6 @@ var init_dispatch_format = __esm({
9703
9736
  }
9704
9737
  });
9705
9738
 
9706
- // ../protocol/src/tool-family.ts
9707
- function isCodexFamily(tool) {
9708
- return tool === "codex" || tool === CODEX_CLOUD_TOOL_ID;
9709
- }
9710
- function isPiFamily(tool) {
9711
- return tool === PI_TOOL_ID || tool === PI_CLOUD_TOOL_ID;
9712
- }
9713
- function isCloudTool(tool) {
9714
- return typeof tool === "string" && tool.length > CLOUD_TOOL_SUFFIX.length && tool.endsWith(CLOUD_TOOL_SUFFIX);
9715
- }
9716
- function isRpcAgentTool(tool) {
9717
- return isCodexFamily(tool) || isPiFamily(tool);
9718
- }
9719
- var CLOUD_TOOL_SUFFIX, CODEX_CLOUD_TOOL_ID, PI_TOOL_ID, PI_CLOUD_TOOL_ID;
9720
- var init_tool_family = __esm({
9721
- "../protocol/src/tool-family.ts"() {
9722
- "use strict";
9723
- CLOUD_TOOL_SUFFIX = "-cloud";
9724
- CODEX_CLOUD_TOOL_ID = `codex${CLOUD_TOOL_SUFFIX}`;
9725
- PI_TOOL_ID = "pi";
9726
- PI_CLOUD_TOOL_ID = `${PI_TOOL_ID}${CLOUD_TOOL_SUFFIX}`;
9727
- }
9728
- });
9729
-
9730
9739
  // ../protocol/src/runtime.ts
9731
9740
  var init_runtime = __esm({
9732
9741
  "../protocol/src/runtime.ts"() {
@@ -50311,6 +50320,7 @@ function buildSpawnContext(state, deps) {
50311
50320
  model: file.model,
50312
50321
  permissionMode: file.permissionMode,
50313
50322
  effort: file.effort,
50323
+ serviceTier: file.serviceTier,
50314
50324
  env,
50315
50325
  personaRoot: deps.personaRoot,
50316
50326
  ...mcpConfigs.length > 0 ? { mcpConfigs } : {},
@@ -51844,9 +51854,11 @@ function compressFrameForWire(frame) {
51844
51854
  function personaDefaultFields(defaults, overrides) {
51845
51855
  const model = overrides?.model ?? defaults?.model;
51846
51856
  const effort = overrides?.effort ?? defaults?.effort;
51857
+ const serviceTier = isCodexFamily(overrides?.tool ?? defaults?.tool) ? overrides?.serviceTier ?? defaults?.serviceTier ?? CODEX_SERVICE_TIERS.standard : void 0;
51847
51858
  return {
51848
51859
  ...model ? { model } : {},
51849
- ...effort ? { effort } : {}
51860
+ ...effort ? { effort } : {},
51861
+ ...serviceTier ? { serviceTier } : {}
51850
51862
  };
51851
51863
  }
51852
51864
  function nowIso2(deps) {
@@ -52366,7 +52378,9 @@ var SessionManager = class {
52366
52378
  aiLabel: args.aiLabel,
52367
52379
  ...personaDefaultFields(engineOverridden ? void 0 : personaDefaults, {
52368
52380
  model: args.model,
52369
- effort: args.effort
52381
+ effort: args.effort,
52382
+ serviceTier: args.serviceTier,
52383
+ tool
52370
52384
  }),
52371
52385
  permissionMode: args.permissionMode,
52372
52386
  iconKey: args.iconKey,
@@ -53369,7 +53383,8 @@ var SessionManager = class {
53369
53383
  ...args.guestFeishuUnionId ? { creatorFeishuUnionId: args.guestFeishuUnionId } : {}
53370
53384
  } : {},
53371
53385
  ...personaDefaultFields(engineOverridden ? void 0 : personaDefaults, {
53372
- model: args.model
53386
+ model: args.model,
53387
+ tool: effectiveTool
53373
53388
  }),
53374
53389
  ...args.label ? { label: args.label } : {},
53375
53390
  createdAt: now,
@@ -55194,6 +55209,7 @@ var PersonaManager = class {
55194
55209
  model: args.model,
55195
55210
  // 创建时即补 high,避免不带 effort 的调用方建出缺档位会话;理由同 backfillPersonaSessionDefaults。
55196
55211
  effort: args.effort ?? "high",
55212
+ serviceTier: args.serviceTier,
55197
55213
  tool: args.tool,
55198
55214
  public: args.public ?? false,
55199
55215
  iconKey: args.iconKey,
@@ -55218,6 +55234,7 @@ var PersonaManager = class {
55218
55234
  if (toolChanged) {
55219
55235
  if (patch.model === void 0) delete updated.model;
55220
55236
  if (patch.effort === void 0) delete updated.effort;
55237
+ if (patch.serviceTier === void 0) delete updated.serviceTier;
55221
55238
  }
55222
55239
  if (iconKeyPatch === null) {
55223
55240
  delete updated.iconKey;
@@ -56483,6 +56500,7 @@ function createFirstByteClock(now = Date.now) {
56483
56500
  }
56484
56501
 
56485
56502
  // src/tools/codex-app-server-params.ts
56503
+ init_protocol();
56486
56504
  function resolveApprovalPolicy(ctx) {
56487
56505
  if (ctx.personaMode === "owner" || ctx.personaMode === "guest") return "never";
56488
56506
  const m4 = ctx.permissionMode ?? "";
@@ -56572,6 +56590,7 @@ function threadStartParams(ctx) {
56572
56590
  approvalPolicy: resolveApprovalPolicy(ctx),
56573
56591
  approvalsReviewer: "user",
56574
56592
  ...ctx.model ? { model: ctx.model } : {},
56593
+ serviceTier: ctx.serviceTier ?? CODEX_SERVICE_TIERS.standard,
56575
56594
  // sandbox = persona 侧 shell 沙箱边界(不进会话设置)。guest 沙箱由 app-server 启动 -c 注入的
56576
56595
  // permission profile(codexGuestCliArgs)控制——profile 是进程启动解析的,故 guest **不发
56577
56596
  // sandbox 字段**(避免 sandbox mode 覆盖 profile);owner / 普通会话 → danger-full-access
@@ -60194,7 +60213,7 @@ var TURN_RETRY_BASE_MS = 250;
60194
60213
  var TURN_RETRY_MAX_MS = 3e4;
60195
60214
  var TURN_RETRY_MAX_FAILURES = 12;
60196
60215
  function openHttpTurn(opts) {
60197
- const { fetchImpl, gatewayUrl, apiKey, personaId: personaId2, conversationId, turnId, text, expectedEngine, engineSessionId, instructions, effort, personaMode, purpose, logger } = opts;
60216
+ const { fetchImpl, gatewayUrl, apiKey, personaId: personaId2, conversationId, turnId, text, expectedEngine, engineSessionId, instructions, effort, serviceTier, personaMode, purpose, logger } = opts;
60198
60217
  const body = JSON.stringify({
60199
60218
  messages: [{ role: "user", content: text }],
60200
60219
  stream: true,
@@ -60208,6 +60227,7 @@ function openHttpTurn(opts) {
60208
60227
  ...engineSessionId ? { engineSessionId } : {},
60209
60228
  ...instructions ? { instructions } : {},
60210
60229
  ...effort ? { effort } : {},
60230
+ ...serviceTier ? { serviceTier } : {},
60211
60231
  ...personaMode ? { personaMode } : {}
60212
60232
  }
60213
60233
  });
@@ -68835,6 +68855,7 @@ function createCloudTurnSession(args) {
68835
68855
  ...engine === "pi" && !ctx.titleOnly ? { engineSessionId: engineSessionId ?? conversationId } : {},
68836
68856
  ...instructions ? { instructions } : {},
68837
68857
  ...ctx.effort ? { effort: ctx.effort } : {},
68858
+ ...engine === "codex" && ctx.serviceTier ? { serviceTier: ctx.serviceTier } : {},
68838
68859
  ...ctx.personaMode ? { personaMode: ctx.personaMode } : {},
68839
68860
  ...ctx.titleOnly ? { purpose: "title" } : {}
68840
68861
  });
@@ -77124,7 +77145,7 @@ function computeMethodAccess(args) {
77124
77145
  }
77125
77146
 
77126
77147
  // src/version.ts
77127
- var version = "0.2.641".length > 0 ? "0.2.641" : "dev";
77148
+ var version = "0.2.642".length > 0 ? "0.2.642" : "dev";
77128
77149
 
77129
77150
  // src/cli-probe/probe.ts
77130
77151
  var fs85 = __toESM(require("fs"), 1);