@clawos-dev/clawd 0.2.720 → 0.2.722

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.
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <meta name="referrer" content="no-referrer" />
7
7
  <title>Clawd</title>
8
- <script type="module" crossorigin src="/app/assets/owner-Dpx2FHaL.js"></script>
8
+ <script type="module" crossorigin src="/app/assets/owner-B8KkpCFg.js"></script>
9
9
  <link rel="stylesheet" crossorigin href="/app/assets/owner-BcG1zRor.css">
10
10
  </head>
11
11
  <body style="margin: 0">
@@ -32211,7 +32211,7 @@ var DispatchRunArgsSchema = external_exports.object({
32211
32211
  }).refine((v) => v.targetPersona !== void 0 || v.dispatchId !== void 0, {
32212
32212
  message: "either targetPersona (new dispatch) or dispatchId (follow-up) is required"
32213
32213
  }).refine((v) => !(v.dispatchId !== void 0 && v.targetDeviceId !== void 0), {
32214
- message: "cross-device dispatch cannot be continued (dispatchId + targetDeviceId are mutually exclusive)"
32214
+ message: "follow-ups take only dispatchId; the target device comes from the ledger row (dispatchId + targetDeviceId are mutually exclusive)"
32215
32215
  }).refine((v) => !(v.tool !== void 0 && v.targetDeviceId !== void 0), {
32216
32216
  message: "engine override is not supported for cross-device dispatch (tool + targetDeviceId are mutually exclusive)"
32217
32217
  }).refine((v) => !(v.dispatchId !== void 0 && (v.tool !== void 0 || v.model !== void 0)), {
@@ -32230,6 +32230,10 @@ var DispatchRecordSchema = external_exports.object({
32230
32230
  targetPersonaId: external_exports.string().min(1),
32231
32231
  /** A-side target device attribution; absence means local for existing records. Forwarding strips it from the B-side local ledger. */
32232
32232
  targetDeviceId: external_exports.string().min(1).optional(),
32233
+ /** A-side cross-device rows: the B-side ledger id, used for follow-ups and for resuming polls after an A restart. */
32234
+ remoteDispatchId: external_exports.string().min(1).optional(),
32235
+ /** The A-side round B last accepted; a follow-up reopened but not yet accepted has remoteRound < round, so a restart must not resume polling it. */
32236
+ remoteRound: external_exports.number().int().positive().optional(),
32233
32237
  /** B 的 sessionId;registerBSession 后回填 */
32234
32238
  workerSessionId: external_exports.string().min(1).optional(),
32235
32239
  taskText: external_exports.string(),
@@ -34315,7 +34319,7 @@ var METHOD_DOCS = {
34315
34319
  args: PersonaIdArgsSchema
34316
34320
  },
34317
34321
  "personaDispatch:run": {
34318
- summary: "\u628A\u4EFB\u52A1\u59D4\u6D3E\u7ED9\u53E6\u4E00\u4E2A persona\uFF08\u53EF\u8DE8\u8BBE\u5907\uFF09\uFF0C\u5F02\u6B65\u79D2\u56DE { dispatchId }\u3002targetPersona \u4E0E dispatchId **\u81F3\u5C11\u7ED9\u4E00\u4E2A**\uFF08\u524D\u8005\u65B0\u5F00\u3001\u540E\u8005\u7EED\u6D3E\uFF09\uFF1BdispatchId \u4E0E targetDeviceId **\u4E92\u65A5**",
34322
+ summary: "\u628A\u4EFB\u52A1\u59D4\u6D3E\u7ED9\u53E6\u4E00\u4E2A persona\uFF08\u53EF\u8DE8\u8BBE\u5907\uFF09\uFF0C\u5F02\u6B65\u79D2\u56DE { dispatchId }\u3002targetPersona \u4E0E dispatchId **\u81F3\u5C11\u7ED9\u4E00\u4E2A**\uFF08\u524D\u8005\u65B0\u5F00\u3001\u540E\u8005\u7EED\u6D3E\uFF09\uFF1BdispatchId \u4E0E targetDeviceId **\u4E92\u65A5**\uFF08\u8DE8\u8BBE\u5907\u7EED\u6D3E\u4E5F\u53EA\u4F20 dispatchId\uFF0C\u8BBE\u5907\u4ECE\u53F0\u8D26\u53D6\uFF09",
34319
34323
  args: DispatchRunArgsSchema,
34320
34324
  argsConstraints: {
34321
34325
  anyOf: [{ required: ["targetPersona"] }, { required: ["dispatchId"] }],
@@ -32211,7 +32211,7 @@ var DispatchRunArgsSchema = external_exports.object({
32211
32211
  }).refine((v) => v.targetPersona !== void 0 || v.dispatchId !== void 0, {
32212
32212
  message: "either targetPersona (new dispatch) or dispatchId (follow-up) is required"
32213
32213
  }).refine((v) => !(v.dispatchId !== void 0 && v.targetDeviceId !== void 0), {
32214
- message: "cross-device dispatch cannot be continued (dispatchId + targetDeviceId are mutually exclusive)"
32214
+ message: "follow-ups take only dispatchId; the target device comes from the ledger row (dispatchId + targetDeviceId are mutually exclusive)"
32215
32215
  }).refine((v) => !(v.tool !== void 0 && v.targetDeviceId !== void 0), {
32216
32216
  message: "engine override is not supported for cross-device dispatch (tool + targetDeviceId are mutually exclusive)"
32217
32217
  }).refine((v) => !(v.dispatchId !== void 0 && (v.tool !== void 0 || v.model !== void 0)), {
@@ -32230,6 +32230,10 @@ var DispatchRecordSchema = external_exports.object({
32230
32230
  targetPersonaId: external_exports.string().min(1),
32231
32231
  /** A-side target device attribution; absence means local for existing records. Forwarding strips it from the B-side local ledger. */
32232
32232
  targetDeviceId: external_exports.string().min(1).optional(),
32233
+ /** A-side cross-device rows: the B-side ledger id, used for follow-ups and for resuming polls after an A restart. */
32234
+ remoteDispatchId: external_exports.string().min(1).optional(),
32235
+ /** The A-side round B last accepted; a follow-up reopened but not yet accepted has remoteRound < round, so a restart must not resume polling it. */
32236
+ remoteRound: external_exports.number().int().positive().optional(),
32233
32237
  /** B 的 sessionId;registerBSession 后回填 */
32234
32238
  workerSessionId: external_exports.string().min(1).optional(),
32235
32239
  taskText: external_exports.string(),
@@ -34315,7 +34319,7 @@ var METHOD_DOCS = {
34315
34319
  args: PersonaIdArgsSchema
34316
34320
  },
34317
34321
  "personaDispatch:run": {
34318
- summary: "\u628A\u4EFB\u52A1\u59D4\u6D3E\u7ED9\u53E6\u4E00\u4E2A persona\uFF08\u53EF\u8DE8\u8BBE\u5907\uFF09\uFF0C\u5F02\u6B65\u79D2\u56DE { dispatchId }\u3002targetPersona \u4E0E dispatchId **\u81F3\u5C11\u7ED9\u4E00\u4E2A**\uFF08\u524D\u8005\u65B0\u5F00\u3001\u540E\u8005\u7EED\u6D3E\uFF09\uFF1BdispatchId \u4E0E targetDeviceId **\u4E92\u65A5**",
34322
+ summary: "\u628A\u4EFB\u52A1\u59D4\u6D3E\u7ED9\u53E6\u4E00\u4E2A persona\uFF08\u53EF\u8DE8\u8BBE\u5907\uFF09\uFF0C\u5F02\u6B65\u79D2\u56DE { dispatchId }\u3002targetPersona \u4E0E dispatchId **\u81F3\u5C11\u7ED9\u4E00\u4E2A**\uFF08\u524D\u8005\u65B0\u5F00\u3001\u540E\u8005\u7EED\u6D3E\uFF09\uFF1BdispatchId \u4E0E targetDeviceId **\u4E92\u65A5**\uFF08\u8DE8\u8BBE\u5907\u7EED\u6D3E\u4E5F\u53EA\u4F20 dispatchId\uFF0C\u8BBE\u5907\u4ECE\u53F0\u8D26\u53D6\uFF09",
34319
34323
  args: DispatchRunArgsSchema,
34320
34324
  argsConstraints: {
34321
34325
  anyOf: [{ required: ["targetPersona"] }, { required: ["dispatchId"] }],
@@ -143,8 +143,8 @@ daemon 数打回次数、同时把理由写进流水(一次调用两件事,
143
143
  返回 `{ rejectCount, needsOwnerAttention }`。**`needsOwnerAttention` 为 true
144
144
  (同一条线累计两次打回)→ 停下上报老板,不要再自行打回。**
145
145
 
146
- > 跨设备派出去的线(`targetDeviceId`)**不能续派**,协议层就禁止 `dispatchId + targetDeviceId` 同传。
147
- > 这类线目前无法打回,只能重新派一条新的——M1 只跑本机 worker,遇到跨设备先上报老板。
146
+ > 跨设备派出去的线(`targetDeviceId`)续派 / 打回与本机线一样:只传 `dispatchId`,**不要**再带
147
+ > `targetDeviceId`(协议层禁止两者同传,设备从台账取)。
148
148
 
149
149
  ### 6. 线中途上报问题
150
150