botmux 3.18.2 → 3.18.3

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.
Files changed (42) hide show
  1. package/dist/.runtime-build-id +1 -1
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +28 -3
  4. package/dist/cli.js.map +1 -1
  5. package/dist/core/fleet-state-store.d.ts.map +1 -1
  6. package/dist/core/fleet-state-store.js +6 -0
  7. package/dist/core/fleet-state-store.js.map +1 -1
  8. package/dist/core/fleet-supervisor-policy.d.ts +38 -6
  9. package/dist/core/fleet-supervisor-policy.d.ts.map +1 -1
  10. package/dist/core/fleet-supervisor-policy.js +32 -9
  11. package/dist/core/fleet-supervisor-policy.js.map +1 -1
  12. package/dist/core/fleet-supervisor.d.ts +39 -0
  13. package/dist/core/fleet-supervisor.d.ts.map +1 -1
  14. package/dist/core/fleet-supervisor.js +61 -9
  15. package/dist/core/fleet-supervisor.js.map +1 -1
  16. package/dist/core/reply-target.d.ts +27 -0
  17. package/dist/core/reply-target.d.ts.map +1 -1
  18. package/dist/core/reply-target.js +58 -0
  19. package/dist/core/reply-target.js.map +1 -1
  20. package/dist/daemon.d.ts +3 -0
  21. package/dist/daemon.d.ts.map +1 -1
  22. package/dist/daemon.js +19 -5
  23. package/dist/daemon.js.map +1 -1
  24. package/dist/im/lark/event-dispatcher.d.ts +13 -0
  25. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  26. package/dist/im/lark/event-dispatcher.js +22 -1
  27. package/dist/im/lark/event-dispatcher.js.map +1 -1
  28. package/dist/platform/tunnel-client.d.ts +27 -0
  29. package/dist/platform/tunnel-client.d.ts.map +1 -1
  30. package/dist/platform/tunnel-client.js +205 -22
  31. package/dist/platform/tunnel-client.js.map +1 -1
  32. package/dist/services/send-policy.d.ts +38 -0
  33. package/dist/services/send-policy.d.ts.map +1 -1
  34. package/dist/services/send-policy.js +33 -0
  35. package/dist/services/send-policy.js.map +1 -1
  36. package/dist/types.d.ts +16 -0
  37. package/dist/types.d.ts.map +1 -1
  38. package/dist/utils/child-env.d.ts +41 -0
  39. package/dist/utils/child-env.d.ts.map +1 -1
  40. package/dist/utils/child-env.js +53 -0
  41. package/dist/utils/child-env.js.map +1 -1
  42. package/package.json +7 -7
@@ -1 +1 @@
1
- 7406b5e96f0dc19c706ceb00551c39fc92550148279748e98fc4bea5892b8614
1
+ 018d6e16d9a6634e58a2069b431c5c3d9839ceca95cbb9f750cd9afb30cd7e58
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AA8BA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAgLhD,OAAO,EAAE,KAAK,KAAK,EAA0C,MAAM,yBAAyB,CAAC;AAujB7F;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,GAAG,OAAO,CACpF;IACE,EAAE,EAAE,IAAI,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oDAAoD;IACpD,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GACD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,CACrC,CA6LA;AAmlDD,MAAM,MAAM,kBAAkB,GAC1B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,SAAS,GAAG,gBAAgB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACtE;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,SAAS,GAAG,kBAAkB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtH,MAAM,MAAM,iBAAiB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,SAAS,GAAG,iBAAiB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACvE;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,WAAW,GAAG,YAAY,GAAG,SAAS,GAAG,kBAAkB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAmmQxG;;;;;;;;;;;GAWG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACvC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,qBAAqB,EAAE,SAAS,CAAC,EAC9F,KAAK,EAAE,MAAM,EACb,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,2BAA2B,EAAE,UAAU,GAAG,IAAI,CAAC;AAC1F;qDACqD;AACrD,wBAAwB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,2BAA2B,EAAE,UAAU,GAAG,IAAI,CAAC,GAClH,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAuL7B"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AA8BA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAgLhD,OAAO,EAAE,KAAK,KAAK,EAA0C,MAAM,yBAAyB,CAAC;AAujB7F;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,GAAG,OAAO,CACpF;IACE,EAAE,EAAE,IAAI,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oDAAoD;IACpD,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GACD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,CACrC,CA6LA;AAmlDD,MAAM,MAAM,kBAAkB,GAC1B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,SAAS,GAAG,gBAAgB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACtE;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,SAAS,GAAG,kBAAkB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtH,MAAM,MAAM,iBAAiB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,SAAS,GAAG,iBAAiB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACvE;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,WAAW,GAAG,YAAY,GAAG,SAAS,GAAG,kBAAkB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAooQxG;;;;;;;;;;;GAWG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACvC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,qBAAqB,EAAE,SAAS,CAAC,EAC9F,KAAK,EAAE,MAAM,EACb,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,2BAA2B,EAAE,UAAU,GAAG,IAAI,CAAC;AAC1F;qDACqD;AACrD,wBAAwB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,2BAA2B,EAAE,UAAU,GAAG,IAAI,CAAC,GAClH,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAuL7B"}
package/dist/cli.js CHANGED
@@ -6490,7 +6490,7 @@ import { renderBrandTemplate } from './im/lark/brand-template.js';
6490
6490
  import { effectiveDefaultWorkingDir, loadBotConfigs, resolveBrandLabel, resolveUsageDisplay } from './bot-registry.js';
6491
6491
  import { config } from './config.js';
6492
6492
  import { getSessionUsageSnapshot } from './core/cost-calculator.js';
6493
- import { resolveQuoteTarget, validateMentionDecision, mentionBackAmbiguity, mentionBackAmbiguityError, parseAttentionFlag, attentionUsageError, managedVcQuoteError, managedVcCustomCardError, managedVcSendControlError, managedVcSendPayloadError, containsLarkAtTag, } from './services/send-policy.js';
6493
+ import { resolveQuoteTarget, shouldDropAfterTheFactTopicQuote, validateMentionDecision, mentionBackAmbiguity, mentionBackAmbiguityError, parseAttentionFlag, attentionUsageError, managedVcQuoteError, managedVcCustomCardError, managedVcSendControlError, managedVcSendPayloadError, containsLarkAtTag, } from './services/send-policy.js';
6494
6494
  /**
6495
6495
  * Sandbox relay mode for `botmux send`. Inside a file-sandbox the CLI cannot
6496
6496
  * read bots.json or reach Lark directly (creds are deliberately absent), so we
@@ -8012,7 +8012,7 @@ async function cmdSend(rest) {
8012
8012
  process.exit(1);
8013
8013
  }
8014
8014
  }
8015
- const { sendMessage, replyMessage, uploadImage, uploadFile, MessageWithdrawnError, getChatModeStrict } = await import('./im/lark/client.js');
8015
+ const { sendMessage, replyMessage, uploadImage, uploadFile, MessageWithdrawnError, getChatModeStrict, getMessageThreadId } = await import('./im/lark/client.js');
8016
8016
  const appId = s.larkAppId;
8017
8017
  // Effective target chat for top-level mode (defaults to session's chat)
8018
8018
  const targetChatId = overrideChatId ?? s.chatId;
@@ -8222,6 +8222,31 @@ async function cmdSend(rest) {
8222
8222
  ?? frozenTurnDispatch?.quoteTargetId
8223
8223
  ?? s.quoteTargetId,
8224
8224
  });
8225
+ // 「顶层 @ 之后那条消息才被开成话题」的发送侧半边。飞书的 reply 接口让回复继承
8226
+ // 被引用消息**此刻**的话题归属(`reply_in_thread:false` 只是不新开话题,逃不出
8227
+ // 已有话题),所以引用一条事后被开成话题的顶层消息,会把回复带进用户根本没在
8228
+ // 其中 @ 过 bot 的话题里 —— dispatcher 侧的 fold 只管住了卡片,正文由这里决定。
8229
+ //
8230
+ // 只在「该轮确证从顶层进来(inThread === false)且本次真要 quote」时才探测一次
8231
+ // 飞书;话题内轮次、`--top-level`、`--no-quote`、`--quote`、thread-scope 全部在
8232
+ // 上面或 `shouldDropAfterTheFactTopicQuote` 里短路,普通热路径不多付这次调用。
8233
+ // 探测失败一律保持 quote(既有默认行为),绝不因为不确定就改变所有正常回复的落点。
8234
+ const quotedTurnInThread = quoteTargetId
8235
+ ? (s.turnReplyContexts?.[currentTurnId ?? '']?.inThread
8236
+ ?? s.turnReplyContexts?.[quoteTargetId]?.inThread)
8237
+ : undefined;
8238
+ let effectiveQuoteTargetId = quoteTargetId;
8239
+ if (quoteTargetId && !explicitQuote && quotedTurnInThread === false) {
8240
+ const probedThreadId = await getMessageThreadId(appId, quoteTargetId).catch(() => undefined);
8241
+ if (shouldDropAfterTheFactTopicQuote({
8242
+ quoteTargetId,
8243
+ quotedTurnInThread,
8244
+ currentThreadId: probedThreadId,
8245
+ explicitQuote,
8246
+ })) {
8247
+ effectiveQuoteTargetId = undefined;
8248
+ }
8249
+ }
8225
8250
  let primaryQuotedId = null;
8226
8251
  let vcMeetingListenerReplyReplay = false;
8227
8252
  const dispatchPrimary = async (content, msgType, originAlreadyRevalidated = false) => {
@@ -8230,7 +8255,7 @@ async function cmdSend(rest) {
8230
8255
  revalidateVcMeetingManagedSend();
8231
8256
  const proposedOutput = {
8232
8257
  targetChatId,
8233
- ...(quoteTargetId ? { quoteTargetId } : {}),
8258
+ ...(effectiveQuoteTargetId ? { quoteTargetId: effectiveQuoteTargetId } : {}),
8234
8259
  msgType,
8235
8260
  content,
8236
8261
  };