botmux 2.71.3 → 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.
- package/dist/adapters/backend/sandbox.d.ts.map +1 -1
- package/dist/adapters/backend/sandbox.js +3 -1
- package/dist/adapters/backend/sandbox.js.map +1 -1
- package/dist/adapters/coco-ask-plugin.d.ts.map +1 -1
- package/dist/adapters/coco-ask-plugin.js +5 -3
- package/dist/adapters/coco-ask-plugin.js.map +1 -1
- package/dist/adapters/hook-installer.d.ts.map +1 -1
- package/dist/adapters/hook-installer.js +5 -2
- package/dist/adapters/hook-installer.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +8 -13
- package/dist/cli.js.map +1 -1
- package/dist/core/ask-api.d.ts +2 -20
- package/dist/core/ask-api.d.ts.map +1 -1
- package/dist/core/ask-api.js +2 -25
- package/dist/core/ask-api.js.map +1 -1
- package/dist/core/ask-args.d.ts +3 -3
- package/dist/core/ask-args.js +3 -3
- package/dist/core/ask-broker.d.ts +3 -1
- package/dist/core/ask-broker.d.ts.map +1 -1
- package/dist/core/ask-broker.js +20 -5
- package/dist/core/ask-broker.js.map +1 -1
- package/dist/core/ask-types.d.ts +3 -8
- package/dist/core/ask-types.d.ts.map +1 -1
- package/dist/core/ask-types.js.map +1 -1
- package/dist/core/role-resolver.d.ts.map +1 -1
- package/dist/core/role-resolver.js +4 -3
- package/dist/core/role-resolver.js.map +1 -1
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +9 -4
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +23 -40
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/auth.d.ts.map +1 -1
- package/dist/dashboard/auth.js +3 -2
- package/dist/dashboard/auth.js.map +1 -1
- package/dist/dashboard/federation-spoke-api.d.ts.map +1 -1
- package/dist/dashboard/federation-spoke-api.js +3 -2
- package/dist/dashboard/federation-spoke-api.js.map +1 -1
- package/dist/dashboard.js +4 -3
- package/dist/dashboard.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +1 -0
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +1 -0
- package/dist/i18n/zh.js.map +1 -1
- package/dist/im/lark/ask-card.js +4 -7
- package/dist/im/lark/ask-card.js.map +1 -1
- package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
- package/dist/im/lark/event-dispatcher.js +7 -3
- package/dist/im/lark/event-dispatcher.js.map +1 -1
- package/dist/services/git-worktree.d.ts +1 -0
- package/dist/services/git-worktree.d.ts.map +1 -1
- package/dist/services/git-worktree.js +18 -0
- package/dist/services/git-worktree.js.map +1 -1
- package/dist/services/message-queue.d.ts.map +1 -1
- package/dist/services/message-queue.js +3 -1
- package/dist/services/message-queue.js.map +1 -1
- package/dist/skills/installer.d.ts.map +1 -1
- package/dist/skills/installer.js +6 -4
- package/dist/skills/installer.js.map +1 -1
- package/dist/utils/atomic-write.d.ts +21 -0
- package/dist/utils/atomic-write.d.ts.map +1 -0
- package/dist/utils/atomic-write.js +103 -0
- package/dist/utils/atomic-write.js.map +1 -0
- package/dist/utils/user-token.d.ts.map +1 -1
- package/dist/utils/user-token.js +5 -2
- package/dist/utils/user-token.js.map +1 -1
- package/dist/worker.js +7 -3
- package/dist/worker.js.map +1 -1
- package/dist/workflows/attempt-resume.d.ts.map +1 -1
- package/dist/workflows/attempt-resume.js +3 -2
- package/dist/workflows/attempt-resume.js.map +1 -1
- package/dist/workflows/blob.d.ts.map +1 -1
- package/dist/workflows/blob.js +3 -2
- package/dist/workflows/blob.js.map +1 -1
- package/dist/workflows/daemon-spawn.d.ts.map +1 -1
- package/dist/workflows/daemon-spawn.js +4 -2
- package/dist/workflows/daemon-spawn.js.map +1 -1
- package/dist/workflows/effect-input.d.ts.map +1 -1
- package/dist/workflows/effect-input.js +2 -1
- package/dist/workflows/effect-input.js.map +1 -1
- package/dist/workflows/loader.d.ts.map +1 -1
- package/dist/workflows/loader.js +3 -2
- package/dist/workflows/loader.js.map +1 -1
- package/dist/workflows/run-init.d.ts.map +1 -1
- package/dist/workflows/run-init.js +3 -2
- package/dist/workflows/run-init.js.map +1 -1
- package/dist/workflows/runtime.d.ts.map +1 -1
- package/dist/workflows/runtime.js +2 -1
- package/dist/workflows/runtime.js.map +1 -1
- package/package.json +1 -1
package/dist/core/ask-api.d.ts
CHANGED
|
@@ -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
|
|
5
|
-
*
|
|
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
|
|
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"}
|
package/dist/core/ask-api.js
CHANGED
|
@@ -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
|
|
5
|
-
*
|
|
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
|
package/dist/core/ask-api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-api.js","sourceRoot":"","sources":["../../src/core/ask-api.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ask-api.js","sourceRoot":"","sources":["../../src/core/ask-api.ts"],"names":[],"mappings":"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"}
|
package/dist/core/ask-args.d.ts
CHANGED
|
@@ -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
|
|
5
|
-
*
|
|
6
|
-
*
|
|
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 {
|
package/dist/core/ask-args.js
CHANGED
|
@@ -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
|
|
5
|
-
*
|
|
6
|
-
*
|
|
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`
|
|
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,
|
|
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"}
|
package/dist/core/ask-broker.js
CHANGED
|
@@ -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
|
|
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
|
|
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`
|
|
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
|
|
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":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAsB5C,MAAM,OAAO,GAAG,IAAI,GAAG,EAA2B,CAAC;AACnD,IAAI,UAAU,GAA6B,IAAI,CAAC;AAEhD;;;iEAGiE;AACjE,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAEpC;0DAC0D;AAC1D,MAAM,UAAU,iBAAiB,CAAC,CAAoB;IACpD,UAAU,GAAG,CAAC,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,WAAW,CAAC,KAAqB;IAC/C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,UAAU,GAAG,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAE/C,OAAO,IAAI,OAAO,CAAY,CAAC,OAAO,EAAE,EAAE;QACxC,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;YACpC,MAAM,CAAC,KAAK,EAAE;gBACZ,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,IAAI;gBACd,EAAE,EAAE,IAAI;gBACR,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;QACL,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACpB,kEAAkE;QAClE,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC;QAExB,iBAAiB;QACjB,MAAM,UAAU,GAAG,IAAI,GAAG,EAAuB,CAAC;QAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,EAAU,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,GAAG,GAAoB;YAC3B,KAAK;YACL,KAAK;YACL,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS
|
|
1
|
+
{"version":3,"file":"ask-broker.js","sourceRoot":"","sources":["../../src/core/ask-broker.ts"],"names":[],"mappings":"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"}
|
package/dist/core/ask-types.d.ts
CHANGED
|
@@ -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
|
|
78
|
-
* the
|
|
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'
|
|
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":"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
|
|
1
|
+
{"version":3,"file":"ask-types.d.ts","sourceRoot":"","sources":["../../src/core/ask-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-types.js","sourceRoot":"","sources":["../../src/core/ask-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
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":"role-resolver.d.ts","sourceRoot":"","sources":["../../src/core/role-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"role-resolver.d.ts","sourceRoot":"","sources":["../../src/core/role-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA2FH;;;GAGG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGhF;AAED,uEAAuE;AACvE,wBAAgB,cAAc,IAAI,IAAI,CAErC;AAED,+DAA+D;AAC/D,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAE3E;AAED,0FAA0F;AAC1F,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAQtF;AAED,qCAAqC;AACrC,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAYzE;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAElD,sDAAsD;AACtD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGpE;AAED,wDAAwD;AACxD,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAO1E;AAED,4CAA4C;AAC5C,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAY7D;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAM7G"}
|
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
* content is injected into the CLI prompt as a <role> block, allowing the same
|
|
13
13
|
* bot to adopt different personas in different Lark groups.
|
|
14
14
|
*/
|
|
15
|
-
import { existsSync, readFileSync, statSync, mkdirSync, unlinkSync
|
|
15
|
+
import { existsSync, readFileSync, statSync, mkdirSync, unlinkSync } from 'node:fs';
|
|
16
|
+
import { atomicWriteFileSync } from '../utils/atomic-write.js';
|
|
16
17
|
import { join, dirname } from 'node:path';
|
|
17
18
|
import { config } from '../config.js';
|
|
18
19
|
import { logger } from '../utils/logger.js';
|
|
@@ -106,7 +107,7 @@ export function writeRoleFile(larkAppId, chatId, content) {
|
|
|
106
107
|
mkdirSync(dirname(filePath), { recursive: true });
|
|
107
108
|
// Truncate by UTF-8 byte length, not JS string length
|
|
108
109
|
const trimmed = truncateToByteLimit(content.trim());
|
|
109
|
-
|
|
110
|
+
atomicWriteFileSync(filePath, trimmed);
|
|
110
111
|
cache.delete(cacheKey(larkAppId, chatId)); // invalidate so next read picks up the new content
|
|
111
112
|
logger.info(`[role] wrote chat=${chatId} file=${filePath} (${Buffer.byteLength(trimmed, 'utf-8')} bytes)`);
|
|
112
113
|
}
|
|
@@ -137,7 +138,7 @@ export function writeTeamRoleFile(larkAppId, content) {
|
|
|
137
138
|
const filePath = teamRoleFilePath(larkAppId);
|
|
138
139
|
mkdirSync(dirname(filePath), { recursive: true });
|
|
139
140
|
const trimmed = truncateToByteLimit(content.trim());
|
|
140
|
-
|
|
141
|
+
atomicWriteFileSync(filePath, trimmed);
|
|
141
142
|
cache.delete(teamCacheKey(larkAppId));
|
|
142
143
|
logger.info(`[role] wrote team app=${larkAppId} file=${filePath} (${Buffer.byteLength(trimmed, 'utf-8')} bytes)`);
|
|
143
144
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"role-resolver.js","sourceRoot":"","sources":["../../src/core/role-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"role-resolver.js","sourceRoot":"","sources":["../../src/core/role-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-pool.d.ts","sourceRoot":"","sources":["../../src/core/worker-pool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"worker-pool.d.ts","sourceRoot":"","sources":["../../src/core/worker-pool.ts"],"names":[],"mappings":"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"}
|
package/dist/core/worker-pool.js
CHANGED
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
import { fork, execSync } from 'node:child_process';
|
|
6
6
|
import { join, dirname } from 'node:path';
|
|
7
7
|
import { homedir } from 'node:os';
|
|
8
|
-
import { readFileSync,
|
|
8
|
+
import { readFileSync, mkdirSync, existsSync, realpathSync } from 'node:fs';
|
|
9
|
+
import { atomicWriteFileSync } from '../utils/atomic-write.js';
|
|
9
10
|
import { fileURLToPath } from 'node:url';
|
|
10
11
|
import { ensureSkills, ensureAskSkill, ensurePluginSkills, removeGlobalBotmuxSkills } from '../skills/installer.js';
|
|
11
12
|
import { installHook } from '../adapters/hook-installer.js';
|
|
@@ -746,7 +747,9 @@ function removeJsonKey(configPath, pathSegments, keyToRemove) {
|
|
|
746
747
|
if (!node || typeof node !== 'object' || !(keyToRemove in node))
|
|
747
748
|
return false;
|
|
748
749
|
delete node[keyToRemove];
|
|
749
|
-
|
|
750
|
+
// 原子写:这里改的是外部 CLI 自己的热配置文件(如 ~/.claude.json),
|
|
751
|
+
// 裸写半截会弄坏 CLI 的状态。
|
|
752
|
+
atomicWriteFileSync(configPath, JSON.stringify(data, null, 2));
|
|
750
753
|
return true;
|
|
751
754
|
}
|
|
752
755
|
catch {
|
|
@@ -883,7 +886,9 @@ export function ensureClaudeFolderTrust(workingDir, stateJsonPath = join(homedir
|
|
|
883
886
|
if (entry.hasTrustDialogAccepted === true)
|
|
884
887
|
return; // already trusted — skip write
|
|
885
888
|
entry.hasTrustDialogAccepted = true;
|
|
886
|
-
|
|
889
|
+
// 原子写:~/.claude.json 是 Claude Code 的热状态文件,所有并发 claude
|
|
890
|
+
// 实例都在读写,裸写半截会弄坏它们的状态。
|
|
891
|
+
atomicWriteFileSync(configPath, JSON.stringify(data, null, 2));
|
|
887
892
|
logger.info(`[claude-trust] Pre-accepted folder trust for ${canonical}`);
|
|
888
893
|
}
|
|
889
894
|
catch (err) {
|
|
@@ -2376,7 +2381,7 @@ function cleanupPersistentBackendSessions(backendType, activeSessions_) {
|
|
|
2376
2381
|
}
|
|
2377
2382
|
try {
|
|
2378
2383
|
mkdirSync(config.session.dataDir, { recursive: true });
|
|
2379
|
-
|
|
2384
|
+
atomicWriteFileSync(cliIdFile, currentCliId);
|
|
2380
2385
|
}
|
|
2381
2386
|
catch (err) {
|
|
2382
2387
|
logger.warn(`Failed to write ${cliIdFile}: ${err}`);
|