botmux 2.71.4 → 2.71.5

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.
@@ -1,9 +1,8 @@
1
1
  /**
2
2
  * Pure helpers for the daemon's `POST /api/asks` IPC route.
3
3
  *
4
- * Kept separate from daemon.ts so the body-validator and the approver
5
- * fallback chain (§6) are unit-testable without spinning up an HTTP server,
6
- * registering bots, or mounting a full session map.
4
+ * Kept separate from daemon.ts so the body-validator is unit-testable without
5
+ * spinning up an HTTP server, registering bots, or mounting a full session map.
7
6
  */
8
7
  import type { AskQuestion } from './ask-types.js';
9
8
  export interface AskApiBody {
@@ -15,8 +14,6 @@ export interface AskApiBody {
15
14
  questions: AskQuestion[];
16
15
  /** Already in milliseconds. CLI side converts from `--timeout` seconds. */
17
16
  timeoutMs: number;
18
- /** Empty array → use the §6 fallback chain. */
19
- approvers: string[];
20
17
  }
21
18
  export type AskApiBodyError = 'bad_body' | 'bad_sessionId' | 'bad_chatId' | 'bad_larkAppId' | 'bad_rootMessageId' | 'bad_prompt' | 'bad_timeoutMs' | 'bad_options' | 'bad_option_shape' | 'bad_option_key' | 'bad_option_label' | 'duplicate_option_key' | 'bad_questions' | 'bad_question_shape' | 'bad_multiSelect';
22
19
  /** Validate the request body. Returns either the parsed body or an error code
@@ -29,19 +26,4 @@ export type AskApiBodyError = 'bad_body' | 'bad_sessionId' | 'bad_chatId' | 'bad
29
26
  export declare function parseAskBody(raw: unknown): AskApiBody | {
30
27
  error: AskApiBodyError;
31
28
  };
32
- /** Resolve the approver allowlist per §6 fallback chain:
33
- * 1. explicit `--approver` list from CLI args (non-empty wins outright)
34
- * 2. session.ownerOpenId ∩ bot.allowedUsers (single-owner topic chats)
35
- * 3. bot.allowedUsers (shared chats / no owner / owner not in allow)
36
- *
37
- * Pure function: caller injects the lookups. The daemon wires
38
- * `getBotAllowedUsers = (id) => getBot(id).resolvedAllowedUsers` and
39
- * `getSessionOwner` = scan over activeSessions; tests pass stub funcs. */
40
- export declare function resolveAskApprovers(args: {
41
- larkAppId: string;
42
- sessionId: string;
43
- explicit: ReadonlyArray<string>;
44
- getBotAllowedUsers: (larkAppId: string) => ReadonlyArray<string>;
45
- getSessionOwner: (sessionId: string) => string | undefined;
46
- }): Set<string>;
47
29
  //# sourceMappingURL=ask-api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ask-api.d.ts","sourceRoot":"","sources":["../../src/core/ask-api.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAa,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7D,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,yCAAyC;IACzC,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,2EAA2E;IAC3E,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,MAAM,eAAe,GACvB,UAAU,GACV,eAAe,GACf,YAAY,GACZ,eAAe,GACf,mBAAmB,GACnB,YAAY,GACZ,eAAe,GACf,aAAa,GACb,kBAAkB,GAClB,gBAAgB,GAChB,kBAAkB,GAClB,sBAAsB,GACtB,eAAe,GACf,oBAAoB,GACpB,iBAAiB,CAAC;AAkCtB;;;;;;gCAMgC;AAChC,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,GAAG;IAAE,KAAK,EAAE,eAAe,CAAA;CAAE,CA4DlF;AAED;;;;;;;2EAO2E;AAC3E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAChC,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,aAAa,CAAC,MAAM,CAAC,CAAC;IACjE,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CAC5D,GAAG,GAAG,CAAC,MAAM,CAAC,CAQd"}
1
+ {"version":3,"file":"ask-api.d.ts","sourceRoot":"","sources":["../../src/core/ask-api.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAa,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7D,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,yCAAyC;IACzC,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,2EAA2E;IAC3E,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,eAAe,GACvB,UAAU,GACV,eAAe,GACf,YAAY,GACZ,eAAe,GACf,mBAAmB,GACnB,YAAY,GACZ,eAAe,GACf,aAAa,GACb,kBAAkB,GAClB,gBAAgB,GAChB,kBAAkB,GAClB,sBAAsB,GACtB,eAAe,GACf,oBAAoB,GACpB,iBAAiB,CAAC;AAkCtB;;;;;;gCAMgC;AAChC,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,GAAG;IAAE,KAAK,EAAE,eAAe,CAAA;CAAE,CAuDlF"}
@@ -1,9 +1,8 @@
1
1
  /**
2
2
  * Pure helpers for the daemon's `POST /api/asks` IPC route.
3
3
  *
4
- * Kept separate from daemon.ts so the body-validator and the approver
5
- * fallback chain (§6) are unit-testable without spinning up an HTTP server,
6
- * registering bots, or mounting a full session map.
4
+ * Kept separate from daemon.ts so the body-validator is unit-testable without
5
+ * spinning up an HTTP server, registering bots, or mounting a full session map.
7
6
  */
8
7
  /** 校验单个 option 对象,返回解析后的 AskOption 或错误码。 */
9
8
  function parseOption(o) {
@@ -69,9 +68,6 @@ export function parseAskBody(raw) {
69
68
  r.timeoutMs < 1000) {
70
69
  return { error: 'bad_timeoutMs' };
71
70
  }
72
- const approvers = Array.isArray(r.approvers)
73
- ? r.approvers.filter((s) => typeof s === 'string' && s.trim().length > 0)
74
- : [];
75
71
  let questions;
76
72
  if (Array.isArray(r.questions)) {
77
73
  // 新格式:questions[] 多问多选
@@ -115,25 +111,6 @@ export function parseAskBody(raw) {
115
111
  rootMessageId: r.rootMessageId,
116
112
  questions,
117
113
  timeoutMs: r.timeoutMs,
118
- approvers,
119
114
  };
120
115
  }
121
- /** Resolve the approver allowlist per §6 fallback chain:
122
- * 1. explicit `--approver` list from CLI args (non-empty wins outright)
123
- * 2. session.ownerOpenId ∩ bot.allowedUsers (single-owner topic chats)
124
- * 3. bot.allowedUsers (shared chats / no owner / owner not in allow)
125
- *
126
- * Pure function: caller injects the lookups. The daemon wires
127
- * `getBotAllowedUsers = (id) => getBot(id).resolvedAllowedUsers` and
128
- * `getSessionOwner` = scan over activeSessions; tests pass stub funcs. */
129
- export function resolveAskApprovers(args) {
130
- const explicit = args.explicit.filter((s) => s.trim().length > 0);
131
- if (explicit.length > 0)
132
- return new Set(explicit);
133
- const allow = args.getBotAllowedUsers(args.larkAppId);
134
- const owner = args.getSessionOwner(args.sessionId);
135
- if (owner && allow.includes(owner))
136
- return new Set([owner]);
137
- return new Set(allow);
138
- }
139
116
  //# sourceMappingURL=ask-api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ask-api.js","sourceRoot":"","sources":["../../src/core/ask-api.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAkCH,4CAA4C;AAC5C,SAAS,WAAW,CAAC,CAAU;IAC7B,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,kBAAkB,CAAC;IAC3D,MAAM,EAAE,GAAG,CAA4B,CAAC;IACxC,IAAI,OAAO,EAAE,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE;QAAE,OAAO,gBAAgB,CAAC;IAC1E,IAAI,OAAO,EAAE,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,kBAAkB,CAAC;IAC5D,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC;AAC1C,CAAC;AAED,mDAAmD;AACnD,SAAS,cAAc,CAAC,GAAc;IACpC,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAAE,OAAO,oBAAoB,CAAC;QACjF,MAAM,EAAE,GAAG,CAA4B,CAAC;QACxC,IAAI,OAAO,EAAE,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE;YAAE,OAAO,oBAAoB,CAAC;QACpF,IAAI,OAAO,EAAE,CAAC,WAAW,KAAK,SAAS;YAAE,OAAO,iBAAiB,CAAC;QAClE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,aAAa,CAAC;QAC9E,MAAM,IAAI,GAAgB,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,OAAO,MAAM,KAAK,QAAQ;gBAAE,OAAO,MAAM,CAAC;YAC9C,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;gBAAE,OAAO,sBAAsB,CAAC;YACxD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;gCAMgC;AAChC,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IACxF,MAAM,CAAC,GAAG,GAA8B,CAAC;IAEzC,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;IAC9F,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IACrF,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;IAC9F,IAAI,CAAC,CAAC,aAAa,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;QACpE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IACxC,CAAC;IACD,IACE,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ;QAC/B,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7B,CAAC,CAAC,SAAS,GAAG,IAAI,EAClB,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;IACpC,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1C,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QACtF,CAAC,CAAC,EAAE,CAAC;IAEP,IAAI,SAAwB,CAAC;IAE7B,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,uBAAuB;QACvB,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;QAChE,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACzD,SAAS,GAAG,MAAM,CAAC;IACrB,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QACvF,sCAAsC;QACtC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;QAC1D,MAAM,IAAI,GAAgB,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,OAAO,MAAM,KAAK,QAAQ;gBAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;YACzD,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;gBAAE,OAAO,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;YACnE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;QACD,SAAS,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,CAAC;SAAM,CAAC;QACN,4CAA4C;QAC5C,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;YAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;QACrF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;QACvF,sCAAsC;QACtC,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;IAClC,CAAC;IAED,OAAO;QACL,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,aAAa,EAAE,CAAC,CAAC,aAA8B;QAC/C,SAAS;QACT,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,SAAS;KACV,CAAC;AACJ,CAAC;AAED;;;;;;;2EAO2E;AAC3E,MAAM,UAAU,mBAAmB,CAAC,IAMnC;IACC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAClE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IAElD,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnD,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"ask-api.js","sourceRoot":"","sources":["../../src/core/ask-api.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * Pure helpers for `botmux ask` argument parsing.
3
3
  *
4
- * Kept in its own file (no I/O, no env reads) so the CSV / timeout / approver
5
- * parsing can be unit-tested without spinning up a daemon. The actual CLI
6
- * dispatch (`cmdAsk`) lives in cli.ts and calls these helpers.
4
+ * Kept in its own file (no I/O, no env reads) so the CSV / timeout parsing can
5
+ * be unit-tested without spinning up a daemon. The actual CLI dispatch
6
+ * (`cmdAsk`) lives in cli.ts and calls these helpers.
7
7
  */
8
8
  import type { AskOption } from './ask-types.js';
9
9
  export declare class AskArgsError extends Error {
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * Pure helpers for `botmux ask` argument parsing.
3
3
  *
4
- * Kept in its own file (no I/O, no env reads) so the CSV / timeout / approver
5
- * parsing can be unit-tested without spinning up a daemon. The actual CLI
6
- * dispatch (`cmdAsk`) lives in cli.ts and calls these helpers.
4
+ * Kept in its own file (no I/O, no env reads) so the CSV / timeout parsing can
5
+ * be unit-tested without spinning up a daemon. The actual CLI dispatch
6
+ * (`cmdAsk`) lives in cli.ts and calls these helpers.
7
7
  */
8
8
  export class AskArgsError extends Error {
9
9
  code;
@@ -8,6 +8,8 @@
8
8
  * §3 / §6 / §7 / §8 of /tmp/botmux-ask.md.
9
9
  */
10
10
  import type { AskCardDispatcher, AskClickOutcome, AskResult, CreateAskInput, PendingAsk } from './ask-types.js';
11
+ /** Wire the canTalk predicate. Called once during daemon bootstrap. */
12
+ export declare function setCanTalkChecker(fn: (larkAppId: string, chatId: string, openId: string) => boolean): void;
11
13
  /** Wire the IM-side dispatcher. Called once during daemon bootstrap from
12
14
  * daemon.ts after im/lark/ask-card.ts is constructed. */
13
15
  export declare function setCardDispatcher(d: AskCardDispatcher): void;
@@ -62,7 +64,7 @@ export declare function submitAsk(args: {
62
64
  /**
63
65
  * 提交一段自定义回复(用户在话题里直接打字作答,替代点按钮)并 settle。
64
66
  *
65
- * 校验:askId 存在 / 未 settle / `by` approvers / text trim 后非空。
67
+ * 校验:askId 存在 / 未 settle / `by` canTalk / text trim 后非空。
66
68
  * settle 为 `kind:'answered'`,各问 `answers` 为空数组、`comment` 携带 trim 后原文
67
69
  * (替代语义:没有任何选项被选中,CLI 侧 formatAnswer 用 comment 回落作答)。
68
70
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ask-broker.d.ts","sourceRoot":"","sources":["../../src/core/ask-broker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,SAAS,EACT,cAAc,EACd,UAAU,EACX,MAAM,gBAAgB,CAAC;AAwBxB;0DAC0D;AAC1D,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAE5D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,CAmErE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;CACZ,GAAG,eAAe,CA4BlB;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;CACnD,GAAG,eAAe,CA2ClB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,eAAe,CAiBlB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,UAAU,GAAG,SAAS,CAUzB;AAED;;;;;;;;;uCASuC;AACvC,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;CACZ,GAAG,eAAe,CAOlB;AAED;;;uEAGuE;AACvE,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAkBpD;AA8DD;kFACkF;AAClF,wBAAgB,aAAa,IAAI,MAAM,CAItC;AAED;oEACoE;AACpE,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAGpE;AAED;qCACqC;AACrC,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAEjE;AAED;cACc;AACd,wBAAgB,UAAU,IAAI,MAAM,EAAE,CAErC;AAED;6EAC6E;AAC7E,wBAAgB,aAAa,IAAI,IAAI,CAIpC"}
1
+ {"version":3,"file":"ask-broker.d.ts","sourceRoot":"","sources":["../../src/core/ask-broker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,SAAS,EACT,cAAc,EACd,UAAU,EACX,MAAM,gBAAgB,CAAC;AAwBxB,uEAAuE;AACvE,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,GACjE,IAAI,CAEN;AAeD;0DAC0D;AAC1D,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAE5D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,CAkErE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;CACZ,GAAG,eAAe,CA4BlB;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;CACnD,GAAG,eAAe,CA2ClB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,eAAe,CAiBlB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,UAAU,GAAG,SAAS,CAUzB;AAED;;;;;;;;;uCASuC;AACvC,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;CACZ,GAAG,eAAe,CAOlB;AAED;;;uEAGuE;AACvE,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAkBpD;AA8DD;kFACkF;AAClF,wBAAgB,aAAa,IAAI,MAAM,CAItC;AAED;oEACoE;AACpE,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAGpE;AAED;qCACqC;AACrC,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAEjE;AAED;cACc;AACd,wBAAgB,UAAU,IAAI,MAAM,EAAE,CAErC;AAED;6EAC6E;AAC7E,wBAAgB,aAAa,IAAI,IAAI,CAKpC"}
@@ -11,6 +11,21 @@ import { randomUUID } from 'node:crypto';
11
11
  import { logger } from '../utils/logger.js';
12
12
  const pending = new Map();
13
13
  let dispatcher = null;
14
+ /** IM-side canTalk predicate, wired by the daemon at bootstrap. Lets the broker
15
+ * honour the bot's canTalk gate without importing Lark types: whoever may
16
+ * address the bot in this chat may answer its `botmux ask`. Returns false until
17
+ * wired, so an unwired broker authorizes no one (daemon always wires it). */
18
+ let canTalkChecker = null;
19
+ /** Wire the canTalk predicate. Called once during daemon bootstrap. */
20
+ export function setCanTalkChecker(fn) {
21
+ canTalkChecker = fn;
22
+ }
23
+ /** A click is authorized iff the clicker may `canTalk` to the bot in this chat.
24
+ * `botmux ask` is a talk-level interaction (answering the agent's question),
25
+ * so it follows the canTalk gate — not the stricter canOperate / allowedUsers. */
26
+ function isAuthorizedToAnswer(ask, by) {
27
+ return canTalkChecker?.(ask.larkAppId, ask.chatId, by) ?? false;
28
+ }
14
29
  /** Window during which a settled ask is still queryable so race-losers get a
15
30
  * precise `already_settled` outcome (and the card click handler can show
16
31
  * "已被 X 答了" instead of a generic "已失效"). After this window expires,
@@ -67,7 +82,6 @@ export function registerAsk(input) {
67
82
  chatId: input.chatId,
68
83
  rootMessageId: input.rootMessageId,
69
84
  sessionId: input.sessionId,
70
- approvers: input.approvers,
71
85
  questions: input.questions,
72
86
  createdAt,
73
87
  deadlineAt,
@@ -119,7 +133,7 @@ export function toggleAsk(args) {
119
133
  return 'stale';
120
134
  if (ask.settled)
121
135
  return 'already_settled';
122
- if (!ask.approvers.has(args.by))
136
+ if (!isAuthorizedToAnswer(ask, args.by))
123
137
  return 'unauthorized';
124
138
  const question = ask.questions[args.questionIndex];
125
139
  if (!question)
@@ -161,7 +175,7 @@ export function submitAsk(args) {
161
175
  return 'stale';
162
176
  if (ask.settled)
163
177
  return 'already_settled';
164
- if (!ask.approvers.has(args.by))
178
+ if (!isAuthorizedToAnswer(ask, args.by))
165
179
  return 'unauthorized';
166
180
  // 构建最终答案数组(按问题顺序)
167
181
  let answers;
@@ -204,7 +218,7 @@ export function submitAsk(args) {
204
218
  /**
205
219
  * 提交一段自定义回复(用户在话题里直接打字作答,替代点按钮)并 settle。
206
220
  *
207
- * 校验:askId 存在 / 未 settle / `by` approvers / text trim 后非空。
221
+ * 校验:askId 存在 / 未 settle / `by` canTalk / text trim 后非空。
208
222
  * settle 为 `kind:'answered'`,各问 `answers` 为空数组、`comment` 携带 trim 后原文
209
223
  * (替代语义:没有任何选项被选中,CLI 侧 formatAnswer 用 comment 回落作答)。
210
224
  *
@@ -220,7 +234,7 @@ export function submitCustomReply(args) {
220
234
  return 'stale';
221
235
  if (ask.settled)
222
236
  return 'already_settled';
223
- if (!ask.approvers.has(args.by))
237
+ if (!isAuthorizedToAnswer(ask, args.by))
224
238
  return 'unauthorized';
225
239
  const text = args.text.trim();
226
240
  if (!text)
@@ -383,5 +397,6 @@ export function _resetForTest() {
383
397
  clearTimeout(ask.timeoutHandle);
384
398
  pending.clear();
385
399
  dispatcher = null;
400
+ canTalkChecker = null;
386
401
  }
387
402
  //# sourceMappingURL=ask-broker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ask-broker.js","sourceRoot":"","sources":["../../src/core/ask-broker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ask-broker.js","sourceRoot":"","sources":["../../src/core/ask-broker.ts"],"names":[],"mappings":"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"}
@@ -74,8 +74,8 @@ export interface AskJsonOutput {
74
74
  timedOut: boolean;
75
75
  }
76
76
  /** Input accepted by broker.registerAsk. Caller (CLI subcommand → daemon IPC
77
- * handler) is responsible for env validation, parameter parsing, and resolving
78
- * the approver allowlist before reaching the broker.
77
+ * handler) is responsible for env validation and parameter parsing. Click
78
+ * authorization is the bot's canTalk gate, injected via `setCanTalkChecker`.
79
79
  *
80
80
  * v0.1.8 变更:`options`/`prompt` 字段替换为 `questions: ReadonlyArray<AskQuestion>`。 */
81
81
  export interface CreateAskInput {
@@ -85,10 +85,6 @@ export interface CreateAskInput {
85
85
  rootMessageId: string | null;
86
86
  /** Session that issued the ask — used for audit + future replay scoping. */
87
87
  sessionId: string;
88
- /** Pre-resolved open_id allowlist. Empty set means no one can answer; the
89
- * caller (not the broker) must enforce the §6 approver fallback chain so the
90
- * broker stays IM-agnostic. */
91
- approvers: ReadonlySet<string>;
92
88
  /** 问题列表,调用方保证每问 `options.length ≥ 2` 且 key 唯一。 */
93
89
  questions: ReadonlyArray<AskQuestion>;
94
90
  /** Absolute deadline; computed by caller from `--timeout`. Broker won't
@@ -109,7 +105,6 @@ export interface PendingAsk {
109
105
  chatId: string;
110
106
  rootMessageId: string | null;
111
107
  sessionId: string;
112
- approvers: ReadonlySet<string>;
113
108
  /** 问题列表,替代旧的 `options` + `prompt`。 */
114
109
  questions: ReadonlyArray<AskQuestion>;
115
110
  /** 当前已勾选答案快照。仅 daemon/card 内部使用;CLI IPC 边界不暴露。 */
@@ -127,7 +122,7 @@ export interface PendingAsk {
127
122
  export type AskClickOutcome =
128
123
  /** First valid click — caller's Promise resolves with `kind:'answered'`. */
129
124
  'accepted'
130
- /** Clicker's open_id not in approvers — caller shows "你没有权限". */
125
+ /** Clicker can't canTalk to the bot in this chat — caller shows "你没有权限". */
131
126
  | 'unauthorized'
132
127
  /** No such askId, nonce mismatch, or unknown option — caller shows
133
128
  * "此 ask 已失效(daemon 重启)". Covers the §8 stale-card case. */
@@ -1 +1 @@
1
- {"version":3,"file":"ask-types.d.ts","sourceRoot":"","sources":["../../src/core/ask-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ask-types.d.ts","sourceRoot":"","sources":["../../src/core/ask-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;oCAGoC;AACpC,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;kDAEkD;AAClD,MAAM,WAAW,WAAW;IAC1B,oBAAoB;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAClC,kDAAkD;IAClD,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;oDAWoD;AACpD,MAAM,MAAM,SAAS,GACjB;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,4CAA4C;IAC5C,OAAO,EAAE,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9C,EAAE,EAAE,MAAM,CAAC;IACX,yCAAyC;IACzC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC;CACjB,GACD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,IAAI,CAAC;IACf,EAAE,EAAE,IAAI,CAAC;IACT,OAAO,EAAE,IAAI,CAAC;IACd,QAAQ,EAAE,IAAI,CAAC;CAChB,GACD;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,IAAI,CAAC;IACf,EAAE,EAAE,IAAI,CAAC;IACT,OAAO,EAAE,IAAI,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC;CACjB,CAAC;AAEN;;;;gDAIgD;AAChD,MAAM,WAAW,aAAa;IAC5B,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC;IAC3B,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,qCAAqC;IACrC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;kFAIkF;AAClF,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,SAAS,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACtC;sBACkB;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;oDAGoD;AACpD,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd;;0CAEsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,SAAS,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACtC,kDAAkD;IAClD,UAAU,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB;iEAC6D;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qEAAqE;IACrE,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;2BAC2B;AAC3B,MAAM,MAAM,eAAe;AACzB,4EAA4E;AAC1E,UAAU;AACZ,4EAA4E;GAC1E,cAAc;AAChB;6DAC6D;GAC3D,OAAO;AACT,6DAA6D;GAC3D,iBAAiB;AACnB,4CAA4C;GAC1C,SAAS,CAAC;AAEd;8CAC8C;AAC9C,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAMjE;AAED;gEACgE;AAChE,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtD;;2CAEuC;IACvC,QAAQ,CAAC,CACP,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,SAAS,GAChB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"ask-types.js","sourceRoot":"","sources":["../../src/core/ask-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA+IH;8CAC8C;AAC9C,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IAC5C,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"ask-types.js","sourceRoot":"","sources":["../../src/core/ask-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA0IH;8CAC8C;AAC9C,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IAC5C,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AAgBA,OAAO,EAA2F,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAkB7I,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AA6ErD,OAAO,EAAE,oBAAoB,EAA6B,MAAM,uBAAuB,CAAC;AACxF,OAAO,KAAK,EAAE,sBAAsB,EAAiB,MAAM,wBAAwB,CAAC;AA6OpF,wBAAsB,uBAAuB,CAAC,EAAE,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCrK;AA0FD,wBAAsB,8BAA8B,CAClD,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CA6ClB;AAED,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,GAAG,EAAE,MAAM,GACV,MAAM,GAAG,SAAS,CAIpB;AAED,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,GAAG,EAAE,MAAM,GACV,MAAM,GAAG,SAAS,CAGpB;AA+JD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,sBAAsB,GAAG,oBAAoB,CA0C5G;AA0tCD;;;;;;;;;;GAUG;AACH,iBAAe,uBAAuB,CAAC,GAAG,EAAE;IAC1C,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,GAAG,KAAK,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;;;;GAaA;AAED,eAAO,MAAM,kCAAkC,gCAA0B,CAAC;AAwzC1E,wBAAsB,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwalE"}
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AAgBA,OAAO,EAA2F,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAkB7I,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AA6ErD,OAAO,EAAE,oBAAoB,EAA6B,MAAM,uBAAuB,CAAC;AACxF,OAAO,KAAK,EAAE,sBAAsB,EAAiB,MAAM,wBAAwB,CAAC;AA8OpF,wBAAsB,uBAAuB,CAAC,EAAE,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCrK;AA0FD,wBAAsB,8BAA8B,CAClD,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CA6ClB;AAED,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,GAAG,EAAE,MAAM,GACV,MAAM,GAAG,SAAS,CAIpB;AAED,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,GAAG,EAAE,MAAM,GACV,MAAM,GAAG,SAAS,CAGpB;AA+JD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,sBAAsB,GAAG,oBAAoB,CA0C5G;AAusCD;;;;;;;;;;GAUG;AACH,iBAAe,uBAAuB,CAAC,GAAG,EAAE;IAC1C,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,GAAG,KAAK,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;;;;GAaA;AAED,eAAO,MAAM,kCAAkC,gCAA0B,CAAC;AAwzC1E,wBAAsB,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2alE"}
package/dist/daemon.js CHANGED
@@ -79,8 +79,8 @@ import { resolveWait } from './workflows/wait.js';
79
79
  import { replay } from './workflows/events/replay.js';
80
80
  import { isValidRunId, readRunSnapshot } from './workflows/ops-projection.js';
81
81
  import { AttemptResumeManager } from './workflows/attempt-resume.js';
82
- import { setCardDispatcher as setAskCardDispatcher, registerAsk as registerAskBroker, findPendingAskByAnchor, submitCustomReply, } from './core/ask-broker.js';
83
- import { parseAskBody, resolveAskApprovers } from './core/ask-api.js';
82
+ import { setCardDispatcher as setAskCardDispatcher, setCanTalkChecker as setAskCanTalkChecker, registerAsk as registerAskBroker, findPendingAskByAnchor, submitCustomReply, } from './core/ask-broker.js';
83
+ import { parseAskBody } from './core/ask-api.js';
84
84
  import { computeCocoPickerKeys } from './core/coco-picker-keys.js';
85
85
  import { createLarkAskCardDispatcher } from './im/lark/ask-card.js';
86
86
  // ─── State ───────────────────────────────────────────────────────────────────
@@ -1407,37 +1407,13 @@ ipcRoute('POST', '/api/asks', async (req, res) => {
1407
1407
  const parsed = parseAskBody(raw);
1408
1408
  if ('error' in parsed)
1409
1409
  return jsonRes(res, 400, { ok: false, error: parsed.error });
1410
- const approvers = resolveAskApprovers({
1411
- larkAppId: parsed.larkAppId,
1412
- sessionId: parsed.sessionId,
1413
- explicit: parsed.approvers,
1414
- getBotAllowedUsers: (id) => {
1415
- try {
1416
- return getBot(id).resolvedAllowedUsers;
1417
- }
1418
- catch {
1419
- return [];
1420
- }
1421
- },
1422
- getSessionOwner: (sid) => {
1423
- for (const ds of activeSessions.values()) {
1424
- if (ds.session.sessionId === sid)
1425
- return ds.ownerOpenId;
1426
- }
1427
- return undefined;
1428
- },
1429
- });
1430
- if (approvers.size === 0) {
1431
- // Nobody can answer — fail loud rather than registering a
1432
- // guaranteed-timeout. CLI side maps this to exit 2.
1433
- return jsonRes(res, 400, { ok: false, error: 'no_approvers' });
1434
- }
1410
+ // 谁能答复 = 谁能在该 chat 跟 bot 说话(canTalk)。鉴权在 broker 点击时按注入的
1411
+ // canTalkChecker 判定(见下方 setAskCanTalkChecker),daemon 这里不再预解析 approver。
1435
1412
  const result = await registerAskBroker({
1436
1413
  larkAppId: parsed.larkAppId,
1437
1414
  chatId: parsed.chatId,
1438
1415
  rootMessageId: parsed.rootMessageId,
1439
1416
  sessionId: parsed.sessionId,
1440
- approvers,
1441
1417
  questions: parsed.questions,
1442
1418
  timeoutMs: parsed.timeoutMs,
1443
1419
  });
@@ -2557,17 +2533,17 @@ async function handleThreadReply(data, ctx) {
2557
2533
  return;
2558
2534
  }
2559
2535
  }
2560
- // 自定义回复拦截:该话题有未结的 ask 且发送者有答复权限 → 把这条文字当答案,
2561
- // 走 submitCustomReply settle 掉 ask(替代选项语义),不再当作新一轮指令喂给 CLI
2562
- // 此时发起 ask CLI 正阻塞等结果,回什么都得先等 ask 结束,故无副作用。
2563
- // 仅拦截纯文字(slash 命令 / 回调 URL / workflow 已在上方各自 return,可用来中止);
2564
- // 外部 bot open_id 不在 approvers 里,天然不会命中。非授权人 / 空文字则落到正常
2565
- // 路由。卡片由 broker.onSettle 自动 PATCH 反映答案,无需额外回消息。
2536
+ // 自定义回复拦截:该话题有未结的 ask 时,把这条文字当答案,走 submitCustomReply
2537
+ // settle 掉 ask(替代选项语义),不再当作新一轮指令喂给 CLI。此时发起 ask 的 CLI
2538
+ // 正阻塞等结果,回什么都得先等 ask 结束,故无副作用。仅拦截纯文字(slash 命令 /
2539
+ // 回调 URL / workflow 已在上方各自 return,可用来中止)。答复权限 = canTalk,由
2540
+ // broker submitCustomReply 内按注入的 canTalkChecker 判定:非授权人返回
2541
+ // 'unauthorized',这里 fall through 到正常路由。卡片由 broker.onSettle 自动 PATCH
2566
2542
  if (threadSenderOpenId && threadChatId) {
2567
2543
  const askReplyText = cmdContent.trim();
2568
2544
  if (askReplyText) {
2569
2545
  const pendingAsk = findPendingAskByAnchor({ larkAppId, chatId: threadChatId, anchor });
2570
- if (pendingAsk && pendingAsk.approvers.has(threadSenderOpenId)) {
2546
+ if (pendingAsk) {
2571
2547
  const outcome = submitCustomReply({
2572
2548
  askId: pendingAsk.askId,
2573
2549
  by: threadSenderOpenId,
@@ -2951,6 +2927,9 @@ export async function startDaemon(botIndex) {
2951
2927
  scheduleStore.startExternalWriteWatcher();
2952
2928
  logger.info(`Bot ${idx}/${botConfigs.length}: ${cfg.larkAppId} (cli: ${cfg.cliId})`);
2953
2929
  setAskCardDispatcher(createLarkAskCardDispatcher());
2930
+ // Honour the bot's canTalk gate for `botmux ask` answers: a clicker who may
2931
+ // address the bot in this chat may answer an implicit-approver ask.
2932
+ setAskCanTalkChecker((appId, chatId, openId) => evaluateTalk(appId, chatId, openId).allowed);
2954
2933
  writePidFile();
2955
2934
  const memoryDiagnostics = startMemoryDiagnostics();
2956
2935
  // Publish self-descriptor for the dashboard registry. The dashboard sibling