botmux 3.9.0 → 3.9.2

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 (112) hide show
  1. package/dist/.runtime-build-id +1 -1
  2. package/dist/adapters/backend/tmux-pipe-backend.d.ts +7 -0
  3. package/dist/adapters/backend/tmux-pipe-backend.d.ts.map +1 -1
  4. package/dist/adapters/backend/tmux-pipe-backend.js +20 -0
  5. package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -1
  6. package/dist/adapters/backend/types.d.ts +12 -0
  7. package/dist/adapters/backend/types.d.ts.map +1 -1
  8. package/dist/adapters/backend/types.js.map +1 -1
  9. package/dist/adapters/cli/codex.d.ts.map +1 -1
  10. package/dist/adapters/cli/codex.js +40 -7
  11. package/dist/adapters/cli/codex.js.map +1 -1
  12. package/dist/adapters/cli/traex.d.ts.map +1 -1
  13. package/dist/adapters/cli/traex.js +87 -87
  14. package/dist/adapters/cli/traex.js.map +1 -1
  15. package/dist/cli/deferred-topic-send.d.ts +11 -0
  16. package/dist/cli/deferred-topic-send.d.ts.map +1 -1
  17. package/dist/cli/deferred-topic-send.js +21 -4
  18. package/dist/cli/deferred-topic-send.js.map +1 -1
  19. package/dist/cli.d.ts.map +1 -1
  20. package/dist/cli.js +177 -38
  21. package/dist/cli.js.map +1 -1
  22. package/dist/core/command-handler.d.ts.map +1 -1
  23. package/dist/core/command-handler.js +40 -1
  24. package/dist/core/command-handler.js.map +1 -1
  25. package/dist/core/dispatch.d.ts +43 -5
  26. package/dist/core/dispatch.d.ts.map +1 -1
  27. package/dist/core/dispatch.js +104 -6
  28. package/dist/core/dispatch.js.map +1 -1
  29. package/dist/core/passthrough-commands.d.ts.map +1 -1
  30. package/dist/core/passthrough-commands.js +1 -1
  31. package/dist/core/passthrough-commands.js.map +1 -1
  32. package/dist/daemon.d.ts +11 -1
  33. package/dist/daemon.d.ts.map +1 -1
  34. package/dist/daemon.js +32 -3
  35. package/dist/daemon.js.map +1 -1
  36. package/dist/i18n/en.d.ts.map +1 -1
  37. package/dist/i18n/en.js +2 -0
  38. package/dist/i18n/en.js.map +1 -1
  39. package/dist/i18n/zh.d.ts.map +1 -1
  40. package/dist/i18n/zh.js +2 -0
  41. package/dist/i18n/zh.js.map +1 -1
  42. package/dist/im/lark/card-handler.d.ts.map +1 -1
  43. package/dist/im/lark/card-handler.js +9 -0
  44. package/dist/im/lark/card-handler.js.map +1 -1
  45. package/dist/im/lark/issue-card.d.ts +223 -0
  46. package/dist/im/lark/issue-card.d.ts.map +1 -0
  47. package/dist/im/lark/issue-card.js +542 -0
  48. package/dist/im/lark/issue-card.js.map +1 -0
  49. package/dist/im/lark/issue-command-deps.d.ts +41 -0
  50. package/dist/im/lark/issue-command-deps.d.ts.map +1 -0
  51. package/dist/im/lark/issue-command-deps.js +195 -0
  52. package/dist/im/lark/issue-command-deps.js.map +1 -0
  53. package/dist/im/lark/issue-command.d.ts +137 -0
  54. package/dist/im/lark/issue-command.d.ts.map +1 -0
  55. package/dist/im/lark/issue-command.js +335 -0
  56. package/dist/im/lark/issue-command.js.map +1 -0
  57. package/dist/platform/issue-client.d.ts +201 -0
  58. package/dist/platform/issue-client.d.ts.map +1 -0
  59. package/dist/platform/issue-client.js +142 -0
  60. package/dist/platform/issue-client.js.map +1 -0
  61. package/dist/platform/platform-http.d.ts +4 -0
  62. package/dist/platform/platform-http.d.ts.map +1 -1
  63. package/dist/platform/platform-http.js +38 -2
  64. package/dist/platform/platform-http.js.map +1 -1
  65. package/dist/services/codex-composer-state.d.ts +27 -0
  66. package/dist/services/codex-composer-state.d.ts.map +1 -0
  67. package/dist/services/codex-composer-state.js +53 -0
  68. package/dist/services/codex-composer-state.js.map +1 -0
  69. package/dist/services/codex-transcript.d.ts +33 -12
  70. package/dist/services/codex-transcript.d.ts.map +1 -1
  71. package/dist/services/codex-transcript.js +82 -20
  72. package/dist/services/codex-transcript.js.map +1 -1
  73. package/dist/services/issue-board-store.d.ts +214 -0
  74. package/dist/services/issue-board-store.d.ts.map +1 -0
  75. package/dist/services/issue-board-store.js +472 -0
  76. package/dist/services/issue-board-store.js.map +1 -0
  77. package/dist/services/issue-claim-flow.d.ts +160 -0
  78. package/dist/services/issue-claim-flow.d.ts.map +1 -0
  79. package/dist/services/issue-claim-flow.js +222 -0
  80. package/dist/services/issue-claim-flow.js.map +1 -0
  81. package/dist/services/issue-outbox-pump.d.ts +25 -0
  82. package/dist/services/issue-outbox-pump.d.ts.map +1 -0
  83. package/dist/services/issue-outbox-pump.js +102 -0
  84. package/dist/services/issue-outbox-pump.js.map +1 -0
  85. package/dist/services/issue-release.d.ts +78 -0
  86. package/dist/services/issue-release.d.ts.map +1 -0
  87. package/dist/services/issue-release.js +89 -0
  88. package/dist/services/issue-release.js.map +1 -0
  89. package/dist/services/issue-report.d.ts +72 -0
  90. package/dist/services/issue-report.d.ts.map +1 -0
  91. package/dist/services/issue-report.js +84 -0
  92. package/dist/services/issue-report.js.map +1 -0
  93. package/dist/services/issue-status-view.d.ts +52 -0
  94. package/dist/services/issue-status-view.d.ts.map +1 -0
  95. package/dist/services/issue-status-view.js +42 -0
  96. package/dist/services/issue-status-view.js.map +1 -0
  97. package/dist/services/issue-status-writer.d.ts +98 -0
  98. package/dist/services/issue-status-writer.d.ts.map +1 -0
  99. package/dist/services/issue-status-writer.js +123 -0
  100. package/dist/services/issue-status-writer.js.map +1 -0
  101. package/dist/services/traex-paths.d.ts +14 -2
  102. package/dist/services/traex-paths.d.ts.map +1 -1
  103. package/dist/services/traex-paths.js +16 -2
  104. package/dist/services/traex-paths.js.map +1 -1
  105. package/dist/services/traex-transcript.d.ts +33 -0
  106. package/dist/services/traex-transcript.d.ts.map +1 -1
  107. package/dist/services/traex-transcript.js +135 -28
  108. package/dist/services/traex-transcript.js.map +1 -1
  109. package/dist/setup/lark-scopes.json +0 -2
  110. package/dist/worker.js +269 -7
  111. package/dist/worker.js.map +1 -1
  112. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"traex.js","sourceRoot":"","sources":["../../../src/adapters/cli/traex.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"traex.js","sourceRoot":"","sources":["../../../src/adapters/cli/traex.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type DeferredTopicBinding } from '../core/deferred-topic-binding.js';
1
2
  export interface DeferredScheduleRunData {
2
3
  taskId: string;
3
4
  turnId: string;
@@ -17,6 +18,16 @@ export interface DeferredTopicSendResult {
17
18
  rootMessageId?: string;
18
19
  materializedNow?: boolean;
19
20
  }
21
+ export declare function deferredTopicBindingMatches(session: DeferredTopicSendSession, binding: DeferredTopicBinding): boolean;
22
+ /** Existing deferred runs reply into their materialized topic before the
23
+ * nominal send target is considered. Mirror that precedence for advisory
24
+ * reachability without materializing a new topic. */
25
+ export declare function reusableDeferredTopicRoot(input: {
26
+ session: DeferredTopicSendSession;
27
+ binding: DeferredTopicBinding | undefined;
28
+ explicitTopLevel: boolean;
29
+ reuseBoundRootWhenTopLevel?: boolean;
30
+ }): string | undefined;
20
31
  /** Route one `botmux send` effect for a lazily-materialized schedule topic.
21
32
  * The per-session file lock spans the provider request so two concurrent CLI
22
33
  * processes cannot both create a root. A stable provider UUID (sessionId)
@@ -1 +1 @@
1
- {"version":3,"file":"deferred-topic-send.d.ts","sourceRoot":"","sources":["../../src/cli/deferred-topic-send.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,uBAAuB,CAAC;CAC/C;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;8EAG8E;AAC9E,wBAAsB,yBAAyB,CAAC,IAAI,EAAE;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,wBAAwB,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9E,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAChE,SAAS,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACxG,GAAG,OAAO,CAAC,uBAAuB,CAAC,CA+DnC"}
1
+ {"version":3,"file":"deferred-topic-send.d.ts","sourceRoot":"","sources":["../../src/cli/deferred-topic-send.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,oBAAoB,EAC1B,MAAM,mCAAmC,CAAC;AAE3C,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,uBAAuB,CAAC;CAC/C;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,wBAAwB,EACjC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAQT;AAED;;qDAEqD;AACrD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAC/C,OAAO,EAAE,wBAAwB,CAAC;IAClC,OAAO,EAAE,oBAAoB,GAAG,SAAS,CAAC;IAC1C,gBAAgB,EAAE,OAAO,CAAC;IAC1B,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC,GAAG,MAAM,GAAG,SAAS,CAKrB;AAED;;;8EAG8E;AAC9E,wBAAsB,yBAAyB,CAAC,IAAI,EAAE;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,wBAAwB,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9E,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAChE,SAAS,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACxG,GAAG,OAAO,CAAC,uBAAuB,CAAC,CA0DnC"}
@@ -1,4 +1,24 @@
1
1
  import { readDeferredTopicBinding, withDeferredTopicBindingLock, writeDeferredTopicBinding, } from '../core/deferred-topic-binding.js';
2
+ export function deferredTopicBindingMatches(session, binding) {
3
+ const run = session.deferredScheduleRun;
4
+ return !!run
5
+ && binding.sessionId === session.sessionId
6
+ && binding.turnId === run.turnId
7
+ && binding.chatId === session.chatId
8
+ && binding.larkAppId === session.larkAppId
9
+ && binding.routingAnchor === run.routingAnchor;
10
+ }
11
+ /** Existing deferred runs reply into their materialized topic before the
12
+ * nominal send target is considered. Mirror that precedence for advisory
13
+ * reachability without materializing a new topic. */
14
+ export function reusableDeferredTopicRoot(input) {
15
+ const { binding } = input;
16
+ if (!binding || !deferredTopicBindingMatches(input.session, binding))
17
+ return undefined;
18
+ if (input.explicitTopLevel && !input.reuseBoundRootWhenTopLevel)
19
+ return undefined;
20
+ return binding.rootMessageId;
21
+ }
2
22
  /** Route one `botmux send` effect for a lazily-materialized schedule topic.
3
23
  * The per-session file lock spans the provider request so two concurrent CLI
4
24
  * processes cannot both create a root. A stable provider UUID (sessionId)
@@ -10,10 +30,7 @@ export async function dispatchDeferredTopicSend(opts) {
10
30
  return withDeferredTopicBindingLock(opts.dataDir, opts.session.sessionId, async () => {
11
31
  const existing = readDeferredTopicBinding(opts.dataDir, opts.session.sessionId);
12
32
  if (existing) {
13
- if (existing.turnId !== run.turnId
14
- || existing.chatId !== opts.session.chatId
15
- || existing.larkAppId !== opts.session.larkAppId
16
- || existing.routingAnchor !== run.routingAnchor) {
33
+ if (!deferredTopicBindingMatches(opts.session, existing)) {
17
34
  throw new Error('deferred topic binding identity mismatch');
18
35
  }
19
36
  if (opts.explicitTopLevel && !opts.reuseBoundRootWhenTopLevel)
@@ -1 +1 @@
1
- {"version":3,"file":"deferred-topic-send.js","sourceRoot":"","sources":["../../src/cli/deferred-topic-send.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deferred-topic-send.js","sourceRoot":"","sources":["../../src/cli/deferred-topic-send.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAmnFA,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,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnG,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,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAw7MtE;;;;;;;;;;;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,GACzF,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA8F7B"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAonFA,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,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnG,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,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAukNtE;;;;;;;;;;;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,GACzF,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA8F7B"}
package/dist/cli.js CHANGED
@@ -34,7 +34,7 @@ import { validateWorkingDir } from './core/working-dir.js';
34
34
  import { resolveSessionContext } from './core/session-marker.js';
35
35
  import { resolveBotmuxDataDir } from './core/data-dir.js';
36
36
  import { dashboardSecretPath } from './core/dashboard-secret.js';
37
- import { acceptedDispatchBotAppIds, appendDispatchReportProtocol, appendLegacyDispatchReportProtocol, parseDispatchBotSpec, buildDispatchMessages, buildRepoPrimeText, buildReportContent, eligibleAutoMentionAliases, findDispatchRegistryEntry, offTopicSubBotTopic, resolveReportTarget, resolveSendTarget } from './core/dispatch.js';
37
+ import { acceptedDispatchBotAppIds, activeConversationBotOpenIds, appendDispatchReportProtocol, appendLegacyDispatchReportProtocol, parseDispatchBotSpec, buildDispatchMessages, buildRepoPrimeText, buildReportContent, eligibleAutoMentionAliases, findDispatchRegistryEntry, foldableChatSessionAppIds, offTopicSubBotTopic, resolveReportTarget, resolveSendTarget, threadRootForReachability } from './core/dispatch.js';
38
38
  import { pickTurnReplyTarget } from './core/reply-target.js';
39
39
  import { recordDispatchRegistryEntry } from './core/dispatch-registry.js';
40
40
  import { enableAutostart, disableAutostart, autostartStatus, refreshAutostart } from './autostart.js';
@@ -56,7 +56,8 @@ import { firstPositional } from './cli/arg-utils.js';
56
56
  import { isColdResumeDormant, isRealManagedSession, sessionListDisposition } from './cli/session-list-liveness.js';
57
57
  import { attachFrozenManagedZmxSession, freezeManagedZmxAttachTarget, } from './cli/zmx-managed-attach.js';
58
58
  import { dispatchPrimaryMessage, findStdinAliasAttachment, normalizeInteractiveCardInput, sendFileAttachments, sendVideoAttachments, shouldSendAsPureVideo, validateVideoAttachments } from './cli/send-dispatch.js';
59
- import { dispatchDeferredTopicSend } from './cli/deferred-topic-send.js';
59
+ import { dispatchDeferredTopicSend, reusableDeferredTopicRoot } from './cli/deferred-topic-send.js';
60
+ import { readDeferredTopicBinding } from './core/deferred-topic-binding.js';
60
61
  import { resolveDaemonEnv } from './cli/daemon-lifecycle-env.js';
61
62
  import { buildPm2SpawnCommand } from './cli/pm2-command.js';
62
63
  import { callDashboard } from './cli/dashboard-endpoint.js';
@@ -7105,7 +7106,8 @@ async function cmdSend(rest) {
7105
7106
  // is idempotent, so the downstream send path reuses these same clients.
7106
7107
  // envPinnedRiffBot is re-registered LAST so a remote env credential is never
7107
7108
  // clobbered by a stale bots.json entry for the same app.
7108
- const { registerBot, loadBotConfigs, findOncallChatForAnyBot } = await import('./bot-registry.js');
7109
+ const { registerBot, loadBotConfigs, findOncallChatForAnyBot, getBot } = await import('./bot-registry.js');
7110
+ const { resolveRegularGroupMode } = await import('./services/chat-reply-mode-store.js');
7109
7111
  try {
7110
7112
  for (const cfg of loadBotConfigs())
7111
7113
  registerBot(cfg);
@@ -7163,7 +7165,7 @@ async function cmdSend(rest) {
7163
7165
  process.exit(1);
7164
7166
  }
7165
7167
  }
7166
- const { sendMessage, replyMessage, uploadImage, uploadFile, MessageWithdrawnError } = await import('./im/lark/client.js');
7168
+ const { sendMessage, replyMessage, uploadImage, uploadFile, MessageWithdrawnError, getChatModeStrict } = await import('./im/lark/client.js');
7167
7169
  const appId = s.larkAppId;
7168
7170
  // Effective target chat for top-level mode (defaults to session's chat)
7169
7171
  const targetChatId = overrideChatId ?? s.chatId;
@@ -7171,6 +7173,48 @@ async function cmdSend(rest) {
7171
7173
  // reply_in_thread, otherwise Lark would force every reply into a fresh
7172
7174
  // topic — defeating the whole point of chat-scope routing.
7173
7175
  const isChatScope = s.scope === 'chat';
7176
+ // Compute the actual outbound anchor before the advisory guard. A chat-scope
7177
+ // sender can still reply into a per-turn topic, so sender scope alone does
7178
+ // not describe which peer sessions are reachable.
7179
+ const sendTarget = resolveSendTarget({ into: sendInto, topLevel: sendTopLevel, chatScope: isChatScope, chatId: targetChatId, rootMessageId: s.rootMessageId, replyTargetRootId: turnReplyTarget?.rootMessageId, replyTargetTurnId: turnReplyTarget?.turnId, replyTargetQuoteOnly: turnReplyTarget?.quoteOnly, currentTurnId });
7180
+ const dataDir = resolveDataDir();
7181
+ const deferredBinding = !sendInto && (!overrideChatId || overrideChatId === s.chatId)
7182
+ ? readDeferredTopicBinding(dataDir, s.sessionId)
7183
+ : undefined;
7184
+ const deferredRoot = reusableDeferredTopicRoot({
7185
+ session: s,
7186
+ binding: deferredBinding,
7187
+ explicitTopLevel: sendTopLevel,
7188
+ reuseBoundRootWhenTopLevel: deferredMaterializedByThisCommand,
7189
+ });
7190
+ const reachabilityTarget = deferredRoot
7191
+ ? { mode: 'thread', rootMessageId: deferredRoot }
7192
+ : sendTarget;
7193
+ // Load the sender-scoped bot identity map once. Besides prose @Name
7194
+ // injection below, it lets the sub-bot hint recognize peers that already
7195
+ // have an active session in THIS conversation.
7196
+ let botEntries = [];
7197
+ let crossRef = {};
7198
+ try {
7199
+ const botInfoPath = join(dataDir, 'bots-info.json');
7200
+ const parsedBotEntries = existsSync(botInfoPath)
7201
+ ? JSON.parse(readFileSync(botInfoPath, 'utf-8'))
7202
+ : [];
7203
+ botEntries = Array.isArray(parsedBotEntries)
7204
+ ? parsedBotEntries.filter((entry) => !!entry
7205
+ && typeof entry === 'object'
7206
+ && typeof entry.larkAppId === 'string'
7207
+ && (entry.botName === null || typeof entry.botName === 'string'))
7208
+ : [];
7209
+ const crossRefPath = join(dataDir, `bot-openids-${appId}.json`);
7210
+ const parsedCrossRef = existsSync(crossRefPath)
7211
+ ? JSON.parse(readFileSync(crossRefPath, 'utf-8'))
7212
+ : {};
7213
+ crossRef = parsedCrossRef && typeof parsedCrossRef === 'object' && !Array.isArray(parsedCrossRef)
7214
+ ? parsedCrossRef
7215
+ : {};
7216
+ }
7217
+ catch { /* best-effort identity map */ }
7174
7218
  // ── Footgun guard: orchestrator → sub-bot ──
7175
7219
  // A dispatched sub-bot's session lives in its sub-topic; @-ing it from the main
7176
7220
  // chat spawns a fresh, context-less one. The check is computed ONCE and applied
@@ -7179,23 +7223,49 @@ async function cmdSend(rest) {
7179
7223
  // `@OtherSubBot` can't slip past after this explicit guard already ran.
7180
7224
  let dispatchReg = {};
7181
7225
  try {
7182
- const regPath = join(resolveDataDir(), 'orchestrate-dispatch.json');
7226
+ const regPath = join(dataDir, 'orchestrate-dispatch.json');
7183
7227
  if (existsSync(regPath))
7184
7228
  dispatchReg = JSON.parse(readFileSync(regPath, 'utf-8'));
7185
7229
  }
7186
7230
  catch { /* no/!corrupt registry → no guard */ }
7187
7231
  const dispatchActiveSeeds = new Set();
7232
+ let allSessions = [];
7188
7233
  if (Object.keys(dispatchReg).length > 0) {
7189
- for (const sess of loadSessions().values()) {
7190
- if (sess.status === 'active' && sess.scope !== 'chat' && sess.rootMessageId) {
7234
+ allSessions = [...loadSessions().values()];
7235
+ for (const sess of allSessions) {
7236
+ if (sess.status !== 'active')
7237
+ continue;
7238
+ if (sess.scope !== 'chat' && sess.rootMessageId) {
7191
7239
  dispatchActiveSeeds.add(sess.rootMessageId);
7192
7240
  }
7193
7241
  }
7194
7242
  }
7243
+ // An active chat-scope session can outlive a /reply-mode switch. Verify the
7244
+ // target bot's current effective mode before assuming mentions still fold
7245
+ // back into that old session.
7246
+ const foldableChatAppIds = await foldableChatSessionAppIds({
7247
+ sessions: allSessions,
7248
+ targetChatId,
7249
+ outboundMode: reachabilityTarget.mode,
7250
+ resolveMode: (larkAppId, chatId) => {
7251
+ getBot(larkAppId); // unknown target bot must fail closed
7252
+ return resolveRegularGroupMode(larkAppId, chatId);
7253
+ },
7254
+ resolveChatMode: chatId => getChatModeStrict(appId, chatId),
7255
+ });
7256
+ const reachableOpenIds = activeConversationBotOpenIds({
7257
+ sessions: allSessions,
7258
+ targetChatId,
7259
+ outboundRootMessageId: threadRootForReachability(reachabilityTarget),
7260
+ foldableChatAppIds,
7261
+ botEntries,
7262
+ crossRef,
7263
+ });
7195
7264
  // Sub-topic seed if `openId` is a dispatched sub-bot in an active topic that is
7196
- // NOT reachable in the current conversation; else null. The bot I'm replying to
7197
- // here (quoteTargetSenderOpenId) is reachable, so it's never treated as off-topic.
7198
- const offTopicSubBotSeed = (openId) => offTopicSubBotTopic({ mentionOpenId: openId, quoteTargetSenderOpenId: replyTargetSenderOpenId, chatId: targetChatId, registry: dispatchReg, activeSeeds: dispatchActiveSeeds });
7265
+ // NOT reachable in the current conversation; else null. Both the bot I'm
7266
+ // replying to and any peer with an active session at this conversation anchor
7267
+ // are reachable, so an unrelated old dispatch topic must not be recommended.
7268
+ const offTopicSubBotSeed = (openId) => offTopicSubBotTopic({ mentionOpenId: openId, quoteTargetSenderOpenId: replyTargetSenderOpenId, reachableOpenIds, chatId: targetChatId, registry: dispatchReg, activeSeeds: dispatchActiveSeeds });
7199
7269
  // Explicit --mention / --mention-back of an off-topic sub-bot → block + point to
7200
7270
  // the right command (--anyway overrides). Prose @Name injection is filtered
7201
7271
  // (dropped, not blocked) at its own site below.
@@ -7223,9 +7293,9 @@ async function cmdSend(rest) {
7223
7293
  rootMessageId: s.rootMessageId,
7224
7294
  title: s.title,
7225
7295
  };
7226
- // Dispatch helper: top-level / chat-scope send vs reply-in-thread, single
7227
- // decision point. Used for file attachments (always plain in chat scope).
7228
- const sendTarget = resolveSendTarget({ into: sendInto, topLevel: sendTopLevel, chatScope: isChatScope, chatId: targetChatId, rootMessageId: s.rootMessageId, replyTargetRootId: turnReplyTarget?.rootMessageId, replyTargetTurnId: turnReplyTarget?.turnId, replyTargetQuoteOnly: turnReplyTarget?.quoteOnly, currentTurnId });
7296
+ // Ordinary delivery uses the nominal target. Deferred delivery gets first
7297
+ // refusal below; the advisory mirrors its existing binding in
7298
+ // `reachabilityTarget` above so both paths agree about the effective root.
7229
7299
  const dispatch = async (content, msgType, uuid, suppressHook) => {
7230
7300
  // This closure also carries attachments, so every Lark call re-checks the
7231
7301
  // exact durable attempt/member instead of inheriting the early cmd gate.
@@ -7399,16 +7469,7 @@ async function cmdSend(rest) {
7399
7469
  // "获取群组中其他机器人和用户@当前机器人的消息"权限),不再走任何本地
7400
7470
  // 转发——botmux 历史上为绕过 Lark 不投递跨 bot 事件搞过 signal-file,
7401
7471
  // 那套已经在该权限上线后整体下线。
7402
- let botEntries = [];
7403
- let crossRef = {};
7404
7472
  try {
7405
- const dataDir = resolveDataDir();
7406
- const botInfoPath = join(dataDir, 'bots-info.json');
7407
- botEntries = existsSync(botInfoPath) ? JSON.parse(readFileSync(botInfoPath, 'utf-8')) : [];
7408
- const crossRefPath = join(dataDir, `bot-openids-${appId}.json`);
7409
- crossRef = existsSync(crossRefPath)
7410
- ? JSON.parse(readFileSync(crossRefPath, 'utf-8'))
7411
- : {};
7412
7473
  // --no-mention 显式不 @ 任何人:跳过正文 @BotName 的自动注入,否则正文里
7413
7474
  // 出现的 @名字 仍会被注入成 <at>,破坏 --no-mention 语义、还可能误触发对方
7414
7475
  // bot(正是要避免的循环 @)。botEntries/crossRef 仍需加载供 footer 寻址用。
@@ -8091,22 +8152,19 @@ async function cmdDispatch(rest) {
8091
8152
  }
8092
8153
  }
8093
8154
  /**
8094
- * `botmux report` — a dispatched sub-bot reports progress/completion back to the
8095
- * orchestrator that dispatched it.
8096
- *
8097
- * In 多话题协作模式 the sub-bot lives in its own sub-topic, where the orchestrator
8098
- * has no session; @-ing the orchestrator there would spawn a fresh, context-less
8099
- * one (the reported #1 bug). Instead this routes the report INTO the orchestrator's own
8100
- * thread (recorded by `botmux dispatch` in orchestrate-dispatch.json) and @-s the
8101
- * orchestrator there, so its existing, context-rich session is the one that wakes.
8155
+ * `botmux report` — delivery / progress report.
8102
8156
  *
8103
- * Coords: orchestrator open_id = the sub-bot session's quoteTargetSenderOpenId
8104
- * (the dispatcher of the turn that opened this sub-topic); orchestrator thread =
8105
- * the registry entry keyed by this sub-bot's session.rootMessageId (== the seed).
8157
+ * Two paths:
8158
+ * 1) Platform Issue 领取群:session 有活跃 issue binding enqueue+write `in_review`
8159
+ * (待验收). This is what kickoff means by 「完成后执行 botmux report」.
8160
+ * 2) 多话题协作:dispatched sub-bot reports back to the orchestrator session.
8161
+ * The sub-bot lives in its own sub-topic where the orchestrator has no session;
8162
+ * @-ing the orchestrator there would spawn a fresh context-less one. Instead this
8163
+ * routes INTO the orchestrator's thread (orchestrate-dispatch.json) and @-s it there.
8106
8164
  */
8107
8165
  async function cmdReport(rest) {
8108
8166
  if (rest.includes('--help') || rest.includes('-h')) {
8109
- console.log(`botmux report — 把子项目进展/完成回报给派活的主编排会话
8167
+ console.log(`botmux report — 交付回报(issue 待验收 / 多话题协作回主编排)
8110
8168
 
8111
8169
  用法:
8112
8170
  botmux report "子项目X 完成,产出在 …"
@@ -8114,9 +8172,10 @@ async function cmdReport(rest) {
8114
8172
  botmux report --content-file <path>
8115
8173
 
8116
8174
  说明:
8117
- 「多话题协作模式」里你(子 bot)干完后不要在本话题 @ 主bot——本话题没有主bot的会话,
8118
- @ 会另起一个无上下文的新会话。本命令把回报发回主编排会话所在的话题、并 @ 主编排 bot,
8119
- 使其带完整上下文继续聚合。仅在被 botmux dispatch 派活的子项目会话里可用。
8175
+ 1) 平台 Issue 领取群:本会话绑定了平台 issue 时,把 issue 推到「待验收」(in_review)。
8176
+ kickoff 里「完成后执行 botmux report」指的就是这条路径。
8177
+ 2) 多话题协作:被 botmux dispatch 派活的子话题里,把回报发回主编排会话并 @ 主 bot
8178
+ (不要在子话题里 @ 主 bot——会另起无上下文会话)。
8120
8179
 
8121
8180
  选项:
8122
8181
  --content-file <path> 从文件读取回报内容
@@ -8156,7 +8215,7 @@ async function cmdReport(rest) {
8156
8215
  }
8157
8216
  const sid = sessionIdArg ?? findAncestorSessionId();
8158
8217
  if (!sid) {
8159
- console.error('无法推断 session-id。请在被 dispatch 派活的会话里运行,或传 --session-id <id>。');
8218
+ console.error('无法推断 session-id。请在 issue 领取群 / 被 dispatch 派活的会话里运行,或传 --session-id <id>。');
8160
8219
  process.exit(1);
8161
8220
  }
8162
8221
  const sessions = loadSessions();
@@ -8169,6 +8228,86 @@ async function cmdReport(rest) {
8169
8228
  console.error(`session ${sid} 缺少 larkAppId`);
8170
8229
  process.exit(1);
8171
8230
  }
8231
+ // ── Issue Board 交付:绑定了平台 issue 的领取群 → 推 in_review(待验收)────────
8232
+ // 优先于 dispatch 路径:领取群没有 creatorOpenId,走 dispatch 会硬失败。
8233
+ // 显式 --dispatch-root 时仍走协作回报(避免 issue 群里误 dispatch 被静默改道)。
8234
+ if (!explicitDispatchRoot) {
8235
+ try {
8236
+ const dataDir = resolveDataDir();
8237
+ const { findActiveBindingForSession, reportIssueInReview } = await import('./services/issue-report.js');
8238
+ const binding = findActiveBindingForSession(dataDir, {
8239
+ chatId: s.chatId,
8240
+ rootMessageId: s.rootMessageId,
8241
+ });
8242
+ if (binding) {
8243
+ const { writeIssueStatus, findIssueById } = await import('./platform/issue-client.js');
8244
+ const result = await reportIssueInReview({
8245
+ dataDir,
8246
+ writeStatus: (issueId, args) => writeIssueStatus(issueId, args),
8247
+ fetchIssue: (teamId, issueId) => findIssueById(teamId, issueId),
8248
+ }, binding.anchorId);
8249
+ if (!result.ok) {
8250
+ if (result.reason === 'platform') {
8251
+ console.error(result.permanent
8252
+ ? `issue 交付失败(${result.detail})。平台明确拒绝,重试不会好转——去平台看看这条任务还在不在、领取有没有被收回。`
8253
+ : `issue 交付失败(${result.detail})。可稍后重试同一 botmux report。`);
8254
+ }
8255
+ else if (result.reason === 'detached') {
8256
+ // 重试没有意义:平台上这条 claim 已经不是本机的了。
8257
+ console.error(`issue 交付失败:平台上这个任务的领取已不属于本机(被回收、租约过期或已被别人领走),`
8258
+ + `交付没有落地。去平台看看任务 ${binding.issueId} 的状态。`);
8259
+ }
8260
+ else {
8261
+ console.error(`issue 交付失败:${result.reason}`);
8262
+ }
8263
+ process.exit(1);
8264
+ }
8265
+ // 交付说明必须发回群里:平台的 /status 只收状态、不收正文(没有 note 字段),
8266
+ // 这段文字在平台上无处可放。不发的话验收的人只看到状态变成「待验收」,完全不知道
8267
+ // 交付了什么,而 stdout 只有 agent 自己看得到。
8268
+ let delivered = false;
8269
+ try {
8270
+ const { registerBot, loadBotConfigs } = await import('./bot-registry.js');
8271
+ await registerSelfFromCredFile();
8272
+ try {
8273
+ for (const cfg of loadBotConfigs())
8274
+ registerBot(cfg);
8275
+ }
8276
+ catch { /* 已注册/读不到 */ }
8277
+ const { buildIssueDeliveryCard } = await import('./im/lark/issue-card.js');
8278
+ const { issueDetailUrl } = await import('./services/issue-claim-flow.js');
8279
+ const { sendMessage: larkSend } = await import('./im/lark/client.js');
8280
+ const url = issueDetailUrl(binding.platformBaseUrl, result.issueId);
8281
+ await larkSend(s.larkAppId, binding.chatId ?? binding.anchorId, buildIssueDeliveryCard({
8282
+ issueId: result.issueId,
8283
+ report: content,
8284
+ alreadyInReview: result.alreadyInReview,
8285
+ ...(url ? { issueUrl: url } : {}),
8286
+ }), 'interactive');
8287
+ delivered = true;
8288
+ }
8289
+ catch (e) {
8290
+ // 状态已经写成功了,播报失败不该让整条命令失败——但要如实说出来,
8291
+ // 否则 agent 以为交付说明已经送达。
8292
+ console.error(`交付说明未能发回群里(状态已是待验收):${e?.message ?? e}`);
8293
+ }
8294
+ console.log(JSON.stringify({
8295
+ success: true,
8296
+ delivery: 'issue-in-review',
8297
+ issueId: result.issueId,
8298
+ anchorId: binding.anchorId,
8299
+ alreadyInReview: result.alreadyInReview,
8300
+ reportPostedToChat: delivered,
8301
+ reportPreview: content.trim().slice(0, 200),
8302
+ }));
8303
+ return;
8304
+ }
8305
+ }
8306
+ catch (err) {
8307
+ console.error(`issue 交付异常: ${err?.message ?? err}`);
8308
+ process.exit(1);
8309
+ }
8310
+ }
8172
8311
  // Resolve where the report goes + who to @. Same-machine: the dispatch registry
8173
8312
  // (keyed by this sub-bot's thread root) carries the orchestrator's exact coords.
8174
8313
  // CROSS-MACHINE: the orchestrator is on another machine, so its registry isn't