botmux 3.18.1 → 3.18.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.runtime-build-id +1 -1
- package/dist/bot-registry.d.ts +6 -0
- package/dist/bot-registry.d.ts.map +1 -1
- package/dist/bot-registry.js +25 -0
- package/dist/bot-registry.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +28 -3
- package/dist/cli.js.map +1 -1
- package/dist/core/fleet-state-store.d.ts.map +1 -1
- package/dist/core/fleet-state-store.js +6 -0
- package/dist/core/fleet-state-store.js.map +1 -1
- package/dist/core/fleet-supervisor-policy.d.ts +38 -6
- package/dist/core/fleet-supervisor-policy.d.ts.map +1 -1
- package/dist/core/fleet-supervisor-policy.js +32 -9
- package/dist/core/fleet-supervisor-policy.js.map +1 -1
- package/dist/core/fleet-supervisor.d.ts +39 -0
- package/dist/core/fleet-supervisor.d.ts.map +1 -1
- package/dist/core/fleet-supervisor.js +61 -9
- package/dist/core/fleet-supervisor.js.map +1 -1
- package/dist/core/reply-target.d.ts +27 -0
- package/dist/core/reply-target.d.ts.map +1 -1
- package/dist/core/reply-target.js +58 -0
- package/dist/core/reply-target.js.map +1 -1
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +17 -1
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts +3 -0
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +25 -7
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard.js +102 -7
- package/dist/dashboard.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +6 -0
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +6 -0
- package/dist/i18n/zh.js.map +1 -1
- package/dist/im/lark/event-dispatcher.d.ts +13 -0
- package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
- package/dist/im/lark/event-dispatcher.js +32 -7
- package/dist/im/lark/event-dispatcher.js.map +1 -1
- package/dist/im/lark/issue-command-deps.d.ts.map +1 -1
- package/dist/im/lark/issue-command-deps.js +14 -5
- package/dist/im/lark/issue-command-deps.js.map +1 -1
- package/dist/im/lark/issue-command.d.ts +6 -3
- package/dist/im/lark/issue-command.d.ts.map +1 -1
- package/dist/im/lark/issue-command.js +23 -10
- package/dist/im/lark/issue-command.js.map +1 -1
- package/dist/im/lark/mention-mode-command.d.ts +2 -0
- package/dist/im/lark/mention-mode-command.d.ts.map +1 -0
- package/dist/im/lark/mention-mode-command.js +72 -0
- package/dist/im/lark/mention-mode-command.js.map +1 -0
- package/dist/platform/tunnel-client.d.ts +27 -0
- package/dist/platform/tunnel-client.d.ts.map +1 -1
- package/dist/platform/tunnel-client.js +205 -22
- package/dist/platform/tunnel-client.js.map +1 -1
- package/dist/services/chat-reply-mode-store.d.ts +21 -4
- package/dist/services/chat-reply-mode-store.d.ts.map +1 -1
- package/dist/services/chat-reply-mode-store.js +68 -1
- package/dist/services/chat-reply-mode-store.js.map +1 -1
- package/dist/services/send-policy.d.ts +38 -0
- package/dist/services/send-policy.d.ts.map +1 -1
- package/dist/services/send-policy.js +33 -0
- package/dist/services/send-policy.js.map +1 -1
- package/dist/services/vc-meeting-listener-output-protocol.d.ts +10 -0
- package/dist/services/vc-meeting-listener-output-protocol.d.ts.map +1 -1
- package/dist/services/vc-meeting-listener-output-protocol.js +12 -0
- package/dist/services/vc-meeting-listener-output-protocol.js.map +1 -1
- package/dist/types.d.ts +16 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/child-env.d.ts +41 -0
- package/dist/utils/child-env.d.ts.map +1 -1
- package/dist/utils/child-env.js +53 -0
- package/dist/utils/child-env.js.map +1 -1
- package/package.json +7 -7
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
* bot 注册表都在这里装配。card-handler 与 command-handler 都从这里取。
|
|
6
6
|
*/
|
|
7
7
|
import { config } from '../../config.js';
|
|
8
|
-
import { effectiveBotDisplayName, getBot } from '../../bot-registry.js';
|
|
8
|
+
import { effectiveBotDisplayName, effectiveDefaultWorkingDir, getBot } from '../../bot-registry.js';
|
|
9
9
|
import { logger } from '../../utils/logger.js';
|
|
10
|
+
import { configuredWorkingDirs } from '../../utils/working-dir.js';
|
|
10
11
|
import { readPlatformBinding } from '../../platform/binding.js';
|
|
11
12
|
import { bindIssue, claimIssue, fetchIssues, fetchTeams, findIssueById, writeIssueStatus, } from '../../platform/issue-client.js';
|
|
12
13
|
import { claimIssueIntoGroup, issueDetailUrl } from '../../services/issue-claim-flow.js';
|
|
@@ -60,15 +61,23 @@ export function buildIssueCommandDeps(activate = registeredActivate) {
|
|
|
60
61
|
workingDirs: (larkAppId) => {
|
|
61
62
|
try {
|
|
62
63
|
const cfg = getBot(larkAppId).config;
|
|
63
|
-
return
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
64
|
+
return configuredWorkingDirs({
|
|
65
|
+
workingDir: cfg.workingDir,
|
|
66
|
+
workingDirs: cfg.workingDirs,
|
|
67
|
+
});
|
|
67
68
|
}
|
|
68
69
|
catch {
|
|
69
70
|
return [];
|
|
70
71
|
}
|
|
71
72
|
},
|
|
73
|
+
defaultWorkingDir: (larkAppId) => {
|
|
74
|
+
try {
|
|
75
|
+
return effectiveDefaultWorkingDir(getBot(larkAppId).config);
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
return undefined;
|
|
79
|
+
}
|
|
80
|
+
},
|
|
72
81
|
runClaim: async ({ issue, teamId, larkAppId, workingDir, invokerOpenId }) => {
|
|
73
82
|
const binding = readPlatformBinding();
|
|
74
83
|
if (!binding)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issue-command-deps.js","sourceRoot":"","sources":["../../../src/im/lark/issue-command-deps.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"issue-command-deps.js","sourceRoot":"","sources":["../../../src/im/lark/issue-command-deps.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpG,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACL,SAAS,EACT,UAAU,EACV,WAAW,EACX,UAAU,EACV,aAAa,EACb,gBAAgB,GACjB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAKlC;IACC,OAAO;QACL,aAAa,IAAI,CAAC,KAAK,IAAI;QAC3B,EAAE;QACF,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,kBAAkB;QACzD,EAAE;QACF,UAAU,IAAI,CAAC,UAAU,IAAI;QAC7B,aAAa,IAAI,CAAC,OAAO,IAAI;QAC7B,EAAE;QACF,4CAA4C;KAC7C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AA2BD;;;;;GAKG;AACH,IAAI,kBAA+C,CAAC;AAEpD,MAAM,UAAU,gBAAgB,CAAC,EAAmB;IAClD,kBAAkB,GAAG,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,WAAwC,kBAAkB;IAC9F,OAAO;QACL,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU,EAAS;QACrC,WAAW,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAQ;QAE3D,YAAY,EAAE,CAAC,SAAiB,EAAE,EAAE;YAClC,IAAI,CAAC;gBACH,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,IAAI,EAAE,CAAC;YACtD,CAAC;YAAC,MAAM,CAAC;gBACP,6CAA6C;gBAC7C,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QAED,WAAW,EAAE,CAAC,SAAiB,EAAE,EAAE;YACjC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;gBACrC,OAAO,qBAAqB,CAAC;oBAC3B,UAAU,EAAE,GAAG,CAAC,UAAU;oBAC1B,WAAW,EAAE,GAAG,CAAC,WAAW;iBAC7B,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QAED,iBAAiB,EAAE,CAAC,SAAiB,EAAE,EAAE;YACvC,IAAI,CAAC;gBACH,OAAO,0BAA0B,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;YAC9D,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QAED,QAAQ,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,EAAE;YAC1E,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;YACtC,IAAI,CAAC,OAAO;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;YAEtE,mCAAmC;YACnC,IAAI,SAA6B,CAAC;YAClC,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,uCAAuC;YACvC,IAAI,UAA8B,CAAC;YACnC,IAAI,CAAC;gBACH,UAAU,GAAG,uBAAuB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YAC1D,CAAC;YAAC,MAAM,CAAC;gBACP,UAAU,GAAG,SAAS,CAAC;YACzB,CAAC;YAED,MAAM,CAAC,GAAG,MAAM,mBAAmB,CACjC;gBACE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO;gBAC/B,eAAe,EAAE,OAAO,CAAC,WAAW;gBACpC,KAAK,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAQ;gBAC1D,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAQ;gBACxD,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;oBAC1B,MAAM,GAAG,GAAG,MAAM,mBAAmB,CAAC;wBACpC,GAAG,IAAI;wBACP,gDAAgD;wBAChD,iDAAiD;wBACjD,WAAW,EAAE,CAAC,aAAa,CAAC;qBAC7B,CAAC,CAAC;oBACH,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;oBAC3B,SAAS,GAAG,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC;oBACvC,OAAO,GAAG,CAAC;gBACb,CAAC;gBACD,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;oBAC/B,MAAM,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;gBAC5D,CAAC;gBACD,eAAe,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,MAAM,EAAE,CAAC;gBAC3E,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE;oBAC/C,IAAI,CAAC,QAAQ;wBAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;oBACrD,OAAO,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;gBAC3E,CAAC;gBACD,WAAW,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAQ;gBACtE,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC;gBAC/D,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CACxB,MAAM,CAAC,IAAI,CAAC,4CAA4C,MAAM,EAAE,CAAC;aACpE,EACD;gBACE,KAAK;gBACL,MAAM;gBACN,SAAS;gBACT,gBAAgB,EAAE,SAAS;gBAC3B,aAAa,EAAE,EAAE;gBACjB,UAAU;gBACV,kCAAkC;gBAClC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrC,aAAa,EAAE,kBAAkB,CAAC;oBAChC,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC3C,UAAU;oBACV,OAAO,EAAE,KAAK,CAAC,GAAG;iBACnB,CAAC;aACH,CACF,CAAC;YAEF,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;gBACT,MAAM,CAAC,IAAI,CAAC,sBAAsB,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,MAAM,QAAQ,UAAU,EAAE,CAAC,CAAC;gBAClF,OAAO;oBACL,EAAE,EAAE,IAAI;oBACR,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,QAAQ,EAAE,QAAQ,IAAI,CAAC,CAAC,MAAM;oBAC9B,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACpC,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;QACzD,CAAC;QAED,UAAU,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC;QAChE,OAAO,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC;QAE9D,SAAS,EAAE,KAAK,EAAE,QAAgB,EAAE,EAAE;YACpC,MAAM,CAAC,GAAG,MAAM,aAAa,CAC3B,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACpG,QAAQ,CACT,CAAC;YACF,IAAI,CAAC,CAAC,CAAC,EAAE;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;YAClD,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC;YACvF,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACrE,OAAO;gBACL,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,oBAAoB,CAAC;oBACzB,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,aAAa;oBACb,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC7C,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACvC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnF,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjD,GAAG,CAAC,KAAK;wBACP,CAAC,CAAC;4BACE,QAAQ,EAAE;gCACR,KAAK,EAAE,KAAK,CAAC,KAAK;gCAClB,MAAM,EAAE,KAAK,CAAC,MAAM;gCACpB,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gCAC5E,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gCAChE,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;6BACnF;yBACF;wBACH,CAAC,CAAC,EAAE,CAAC;oBACP,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAClC,CAAC;aACH,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,oCAAoC;AACpC,KAAK,UAAU,MAAM,CACnB,GAAwB,EACxB,QAAgB;IAEhB,MAAM,CAAC,GAAG,MAAM,GAAG,CACjB;QACE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO;QAC/B,WAAW,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAQ;QACtE,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC;KAChE,EACD,QAAQ,CACT,CAAC;IACF,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;QACT,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,yBAAyB,EAAE,CAAC,CAAC,yBAAyB,EAAE,CAAC;IAClG,CAAC;IACD,OAAO;QACL,EAAE,EAAE,KAAK;QACT,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrG,kCAAkC;QAClC,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,kBAAkB,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/E,CAAC;AACJ,CAAC"}
|
|
@@ -34,8 +34,10 @@ export interface IssueCommandDeps {
|
|
|
34
34
|
}>;
|
|
35
35
|
/** 该 bot 的管理员 open_id 名单(`resolvedAllowedUsers`)。 */
|
|
36
36
|
allowedUsers: (larkAppId: string) => string[];
|
|
37
|
-
/** 该 bot
|
|
37
|
+
/** 该 bot 显式配置的仓库扫描根(未展开 `~`)。 */
|
|
38
38
|
workingDirs: (larkAppId: string) => string[];
|
|
39
|
+
/** 该 bot 的有效固定目录(fixed / default-oncall,未展开 `~`)。 */
|
|
40
|
+
defaultWorkingDir: (larkAppId: string) => string | undefined;
|
|
39
41
|
/** 跑 [[issue-release]] 的 `releaseIssue`。按锚点释放,锚点由调用方从当前会话推出来。 */
|
|
40
42
|
runRelease: (anchorId: string) => Promise<TerminalResult>;
|
|
41
43
|
/** 跑 [[issue-release]] 的 `completeIssue`(验收完成)。与释放同形,只是目标态不同。 */
|
|
@@ -95,8 +97,9 @@ export type IssueCardCallbackResult = {
|
|
|
95
97
|
/**
|
|
96
98
|
* 扫出该 bot 可选的仓库。
|
|
97
99
|
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
+
* 显式 `workingDirs` 是工作区父目录,需要递归找出其中的仓库和 worktree。
|
|
101
|
+
* fixed / default-oncall 则钉住一个目录:只有该目录本身是 git 仓库时才直接生成唯一候选,
|
|
102
|
+
* 不能把它当扫描根,否则 `~` 等大目录会同步卡住卡片回调,单仓库也会展开数百个 worktree。
|
|
100
103
|
*/
|
|
101
104
|
export declare function reposFor(larkAppId: string, deps: IssueCommandDeps): RepoChoice[];
|
|
102
105
|
/** `/issue`(裸)→ 看板卡片。 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issue-command.d.ts","sourceRoot":"","sources":["../../../src/im/lark/issue-command.ts"],"names":[],"mappings":"AAoBA,OAAO,EAeL,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAE3F,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAC;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjH,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,qBAAqB,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1G,yCAAyC;IACzC,QAAQ,EAAE,CAAC,IAAI,EAAE;QACf,KAAK,EAAE,aAAa,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;KACvB,KAAK,OAAO,CACT;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAClE;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAC/C,CAAC;IACF,qDAAqD;IACrD,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;IAC9C,
|
|
1
|
+
{"version":3,"file":"issue-command.d.ts","sourceRoot":"","sources":["../../../src/im/lark/issue-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* 未经校验。
|
|
17
17
|
*/
|
|
18
18
|
import { logger } from '../../utils/logger.js';
|
|
19
|
-
import { scanMultipleProjects } from '../../services/project-scanner.js';
|
|
19
|
+
import { describeProjectDir, scanMultipleProjects } from '../../services/project-scanner.js';
|
|
20
20
|
import { configuredWorkingDirs, expandHomePath } from '../../utils/working-dir.js';
|
|
21
21
|
import { ISSUE_ACTION_CLAIM_CANCEL, ISSUE_ACTION_CLAIM_CONFIRM, ISSUE_ACTION_CLAIM_DIR, ISSUE_ACTION_CLAIM_OPEN, ISSUE_ACTION_PAGE, ISSUE_ACTION_REFRESH, ISSUE_ACTION_TEAM, buildClaimConfirmCard, buildClaimResultCard, buildIssueBoardCard, claimFailureHint, matchRepo, } from './issue-card.js';
|
|
22
22
|
function toast(content) {
|
|
@@ -41,19 +41,32 @@ function toRow(i) {
|
|
|
41
41
|
/**
|
|
42
42
|
* 扫出该 bot 可选的仓库。
|
|
43
43
|
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
44
|
+
* 显式 `workingDirs` 是工作区父目录,需要递归找出其中的仓库和 worktree。
|
|
45
|
+
* fixed / default-oncall 则钉住一个目录:只有该目录本身是 git 仓库时才直接生成唯一候选,
|
|
46
|
+
* 不能把它当扫描根,否则 `~` 等大目录会同步卡住卡片回调,单仓库也会展开数百个 worktree。
|
|
46
47
|
*/
|
|
47
48
|
export function reposFor(larkAppId, deps) {
|
|
48
49
|
const dirs = configuredWorkingDirs({ workingDirs: deps.workingDirs(larkAppId) }).map(expandHomePath);
|
|
49
|
-
if (!dirs.length)
|
|
50
|
-
return [];
|
|
51
50
|
try {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
51
|
+
if (dirs.length > 0) {
|
|
52
|
+
return scanMultipleProjects(dirs, 3, { includeWorktrees: true }).map((p) => ({
|
|
53
|
+
name: p.name,
|
|
54
|
+
path: p.path,
|
|
55
|
+
...(p.branch ? { branch: p.branch } : {}),
|
|
56
|
+
}));
|
|
57
|
+
}
|
|
58
|
+
const defaultDir = deps.defaultWorkingDir(larkAppId)?.trim();
|
|
59
|
+
if (!defaultDir)
|
|
60
|
+
return [];
|
|
61
|
+
const path = expandHomePath(defaultDir);
|
|
62
|
+
const project = describeProjectDir(path);
|
|
63
|
+
if (!project)
|
|
64
|
+
return [];
|
|
65
|
+
return [{
|
|
66
|
+
name: project.name,
|
|
67
|
+
path,
|
|
68
|
+
...(project.branch ? { branch: project.branch } : {}),
|
|
69
|
+
}];
|
|
57
70
|
}
|
|
58
71
|
catch (e) {
|
|
59
72
|
// 扫描失败不该让整个命令挂掉:回落到空候选,确认卡会说明"没扫到仓库"。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issue-command.js","sourceRoot":"","sources":["../../../src/im/lark/issue-command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACnF,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,SAAS,GAIV,MAAM,iBAAiB,CAAC;AA8DzB,SAAS,KAAK,CAAC,OAAe;IAC5B,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;AAC/C,CAAC;AAED,mCAAmC;AACnC,SAAS,UAAU,CAAC,CAAkB;IACpC,IAAI,OAAO,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAC3B,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAA4B,EAAE,EAAE,CAAC;AACxF,CAAC;AAED,0DAA0D;AAC1D,SAAS,KAAK,CAAC,CAAgB;IAC7B,OAAO;QACL,OAAO,EAAE,CAAC,CAAC,GAAG;QACd,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1D,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,SAAiB,EAAE,IAAsB;IAChE,MAAM,IAAI,GAAG,qBAAqB,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACrG,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAC5B,IAAI,CAAC;QACH,OAAO,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3E,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1C,CAAC,CAAC,CAAC;IACN,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,sCAAsC;QACtC,MAAM,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAE,CAAW,EAAE,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;QACrE,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,SAAiB,EACjB,IAAsB,EACtB,IAA+D;IAE/D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;IACtC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5F,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAE5D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACtH,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAE,CAAC;IAC3D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC,UAAU,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAEzE,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;IACvB,MAAM,IAAI,GAAuB;QAC/B,MAAM;QACN,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ,EAAE;YACR,cAAc,EAAE,CAAC,CAAC,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;YACnD,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;YAC/B,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;YAC3C,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;YACvC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;SAChC;QACD,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;QACpB,aAAa,EAAE,IAAI,CAAC,aAAa;KAClC,CAAC;IACF,OAAO,EAAE,IAAI,EAAE,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;AAC7C,CAAC;AAED,yBAAyB;AACzB,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,SAAiB,EACjB,YAAgC,EAChC,IAAsB;IAEtB,IAAI,CAAC,YAAY;QAAE,OAAO,KAAK,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACpD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC1E,OAAO,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC;AACtE,CAAC;AAID,SAAS,IAAI,CAAC,OAAe;IAC3B,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;AAC9C,CAAC;AACD,SAAS,GAAG,CAAC,OAAe;IAC1B,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;AAC/C,CAAC;AAED,qCAAqC;AACrC,SAAS,SAAS,CAAC,SAAiB,EAAE,YAAgC,EAAE,IAAsB;IAC5F,IAAI,CAAC,YAAY;QAAE,OAAO,GAAG,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACxE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,UAAU,CACvB,gBAA2C,EAC3C,GAAqC;IAErC,IAAI,IAAmB,CAAC;IACxB,KAAK,MAAM,QAAQ,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,IAAI,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY;YAAE,MAAM;IACrD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+CAA+C;AAC/C,SAAS,YAAY,CAAC,SAA6B;IACjD,IAAI,SAAS,KAAK,MAAM;QAAE,OAAO,4BAA4B,CAAC;IAC9D,IAAI,SAAS,KAAK,MAAM;QAAE,OAAO,wBAAwB,CAAC;IAC1D,OAAO,sBAAsB,CAAC;AAChC,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,SAAiB,EACjB,YAAgC,EAChC,gBAA2C,EAC3C,IAAsB;IAEtB,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;IACxD,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACjE,IAAI,CAAC,IAAI;QAAE,OAAO,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAE7C,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,OAAO,qBAAqB,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;QACrG,OAAO,IAAI,CACT,IAAI,CAAC,yBAAyB;YAC5B,CAAC,CAAC,yEAAyE;YAC3E,CAAC,CAAC,6EAA6E,CAClF,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY;QAAE,OAAO,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACxE,IAAI,IAAI,CAAC,MAAM,KAAK,kBAAkB;QAAE,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAElF,MAAM,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,MAAM,cAAc,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC,CAAC;IACvF,oDAAoD;IACpD,mCAAmC;IACnC,OAAO,GAAG,CACR,IAAI,CAAC,SAAS;QACZ,CAAC,CAAC,UAAU,IAAI,CAAC,MAAM,uDAAuD;QAC9E,CAAC,CAAC,UAAU,IAAI,CAAC,MAAM,wDAAwD,CAClF,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,SAAiB,EACjB,YAAgC,EAChC,gBAA2C,EAC3C,IAAsB;IAEtB,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;IACxD,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9D,IAAI,CAAC,IAAI;QAAE,OAAO,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAE7C,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,OAAO,qBAAqB,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;QACrG,OAAO,IAAI,CACT,IAAI,CAAC,yBAAyB;YAC5B,CAAC,CAAC,6DAA6D;YAC/D,CAAC,CAAC,oEAAoE,CACzE,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY;QAAE,OAAO,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACxE,IAAI,IAAI,CAAC,MAAM,KAAK,kBAAkB;QAAE,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAElF,MAAM,CAAC,IAAI,CAAC,yBAAyB,IAAI,CAAC,MAAM,cAAc,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC,CAAC;IACzF,wDAAwD;IACxD,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAC7D,OAAO,GAAG,CACR,OAAO;QACL,CAAC,CAAC,iBAAiB,IAAI,CAAC,MAAM,2EAA2E;QACzG,CAAC,CAAC,IAAI,CAAC,SAAS;YACd,CAAC,CAAC,YAAY,IAAI,CAAC,MAAM,uDAAuD;YAChF,CAAC,CAAC,YAAY,IAAI,CAAC,MAAM,wCAAwC,CACtE,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,SAAiB,EACjB,YAAgC,EAChC,gBAA2C,EAC3C,IAAsB;IAEtB,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;IACxD,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAChE,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC/C,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC9C,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED,qCAAqC;AACrC,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAoB,EACpB,SAAiB,EACjB,IAAsB;IAEtB,OAAO,UAAU,CAAC,MAAM,0BAA0B,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,KAAK,UAAU,0BAA0B,CACvC,IAAoB,EACpB,SAAiB,EACjB,IAAsB;IAEtB,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAA2B,CAAC;IACnE,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,wEAAwE;IACxE,MAAM,aAAa,GAAG,KAAK,CAAC,eAAe,CAAC;IAC5C,IAAI,CAAC,aAAa,IAAI,CAAC,cAAc,IAAI,aAAa,KAAK,cAAc,EAAE,CAAC;QAC1E,OAAO,KAAK,CAAC,cAAc,CAAC,CAAC;IAC/B,CAAC;IACD,8BAA8B;IAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC;QAAE,OAAO,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAE5E,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,IAAI,MAAM,KAAK,oBAAoB,IAAI,MAAM,KAAK,iBAAiB,IAAI,MAAM,KAAK,iBAAiB,EAAE,CAAC;QACpG,qCAAqC;QACrC,MAAM,MAAM,GAAG,MAAM,KAAK,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QACtF,MAAM,IAAI,GAAG,MAAM,KAAK,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,OAAO,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,MAAM,KAAK,yBAAyB,EAAE,CAAC;QACzC,OAAO,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,MAAM,KAAK,uBAAuB,IAAI,MAAM,KAAK,sBAAsB,EAAE,CAAC;QAC5E,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACxC,4BAA4B;QAC5B,MAAM,MAAM,GAAG,MAAM,KAAK,sBAAsB,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QAClH,OAAO;YACL,IAAI,EAAE,qBAAqB,CAAC;gBAC1B,MAAM;gBACN,OAAO,EAAE,KAAK,CAAC,GAAG;gBAClB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtE,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,KAAK;gBACL,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1C,aAAa;aACd,CAAC;SACH,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,KAAK,0BAA0B,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC;QAC7B,IAAI,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC,UAAU,CAAC,CAAC;QAC1C,gDAAgD;QAChD,8BAA8B;QAC9B,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAEjD,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAC;QACvF,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;YACT,MAAM,CAAC,IAAI,CAAC,sBAAsB,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAChE,OAAO;gBACL,IAAI,EAAE,oBAAoB,CAAC;oBACzB,EAAE,EAAE,IAAI;oBACR,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACnD,CAAC;aACH,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,sBAAsB,KAAK,CAAC,GAAG,UAAU,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACnF,OAAO;YACL,IAAI,EAAE,oBAAoB,CAAC;gBACzB,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC3E,CAAC;SACH,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC;AACjC,CAAC;AAED,2CAA2C;AAC3C,SAAS,cAAc,CAAC,IAAoB;IAC1C,MAAM,GAAG,GAAI,IAAI,CAAC,MAA+B,EAAE,MAAM,CAAC;IAC1D,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC;IAC/C,MAAM,IAAI,GAAI,IAAI,CAAC,MAAgC,EAAE,OAAO,CAAC;IAC7D,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;IAClF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,uDAAuD;AACvD,KAAK,UAAU,SAAS,CACtB,MAAc,EACd,OAA2B,EAC3B,IAAsB;IAEtB,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACnC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAI,IAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC;QACrE,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;IACtB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
1
|
+
{"version":3,"file":"issue-command.js","sourceRoot":"","sources":["../../../src/im/lark/issue-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mention-mode-command.d.ts","sourceRoot":"","sources":["../../../src/im/lark/mention-mode-command.ts"],"names":[],"mappings":"AAeA,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,GAAG,EACZ,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,OAAO,CAAC,CA0DlB"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `/mention-mode` is a sessionless, pre-routing command — same shape as
|
|
3
|
+
* /reply-mode: per-chat @-requirement policy for regular groups, layered over
|
|
4
|
+
* the per-bot `regularGroupMentionMode` default. Status is canTalk while
|
|
5
|
+
* mutations stay canOperate, and toggling the group setting never creates a
|
|
6
|
+
* phantom session.
|
|
7
|
+
*/
|
|
8
|
+
import { isBotMentioned, canOperate, extractMessageTextForRouting } from './event-dispatcher.js';
|
|
9
|
+
import { stripLeadingMentions } from './message-parser.js';
|
|
10
|
+
import { getChatMode, replyMessage } from './client.js';
|
|
11
|
+
import { localeForBot, t } from '../../i18n/index.js';
|
|
12
|
+
import { normalizeGroupMentionMode, resolveGroupMentionMode, setChatMentionMode } from '../../services/chat-reply-mode-store.js';
|
|
13
|
+
import { isSessionGroup } from '../../services/session-groups-store.js';
|
|
14
|
+
import { logger } from '../../utils/logger.js';
|
|
15
|
+
export async function tryHandleMentionModeCommand(larkAppId, message, senderOpenId, canTalk) {
|
|
16
|
+
const rawText = extractMessageTextForRouting(message);
|
|
17
|
+
if (!rawText)
|
|
18
|
+
return false;
|
|
19
|
+
const text = stripLeadingMentions(rawText.trim(), message?.mentions ?? []);
|
|
20
|
+
const match = /^\/mention-mode(?:\s+(\S+))?\s*$/i.exec(text);
|
|
21
|
+
if (!match)
|
|
22
|
+
return false;
|
|
23
|
+
const isP2p = message.chat_type === 'p2p';
|
|
24
|
+
// Multi-bot groups: only the explicitly @mentioned bot owns this command.
|
|
25
|
+
// p2p DMs are implicitly addressed to the sole bot — no @ required.
|
|
26
|
+
if (!isP2p && !isBotMentioned(larkAppId, message, senderOpenId))
|
|
27
|
+
return true;
|
|
28
|
+
const chatId = message.chat_id;
|
|
29
|
+
const messageId = message.message_id;
|
|
30
|
+
const loc = localeForBot(larkAppId);
|
|
31
|
+
const reply = (content) => messageId
|
|
32
|
+
? replyMessage(larkAppId, messageId, content, 'text', false)
|
|
33
|
+
.catch(err => logger.warn(`[mention-mode] reply failed: ${err?.message ?? err}`))
|
|
34
|
+
: Promise.resolve();
|
|
35
|
+
const arg = match[1]?.trim().toLowerCase();
|
|
36
|
+
const isStatus = !arg || arg === 'status';
|
|
37
|
+
// @ 策略只对普通群有意义:私聊天然无需 @,话题群本就是话题形态。
|
|
38
|
+
if (isP2p || !chatId || (await getChatMode(larkAppId, chatId)) !== 'group') {
|
|
39
|
+
await reply(t('cmd.mention_mode.unsupported', undefined, loc));
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
// 会话群(p2pMode=group 出生)由 bot 自动管理 — 拒绝改动,避免 per-chat
|
|
43
|
+
// 配置挂到一次性群上(与 /reply-mode 一致,见 session-groups-store)。
|
|
44
|
+
if (isSessionGroup(chatId)) {
|
|
45
|
+
await reply(t('sg.cmd_unsupported', { cmd: '/mention-mode' }, loc));
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
if (isStatus) {
|
|
49
|
+
if (!canTalk)
|
|
50
|
+
return true;
|
|
51
|
+
const mode = resolveGroupMentionMode(larkAppId, chatId);
|
|
52
|
+
await reply(t('cmd.mention_mode.status', { mode }, loc));
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
const mode = normalizeGroupMentionMode(arg);
|
|
56
|
+
if (!mode) {
|
|
57
|
+
await reply(t('cmd.mention_mode.usage', undefined, loc));
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
if (!canOperate(larkAppId, chatId, senderOpenId)) {
|
|
61
|
+
await reply(t('cmd.mention_mode.owner_only', undefined, loc));
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
const res = await setChatMentionMode(larkAppId, chatId, mode);
|
|
65
|
+
if (!res.ok) {
|
|
66
|
+
await reply(t('cmd.mention_mode.failed', { reason: res.reason }, loc));
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
await reply(t('cmd.mention_mode.updated', { mode }, loc));
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=mention-mode-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mention-mode-command.js","sourceRoot":"","sources":["../../../src/im/lark/mention-mode-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { WebSocket } from 'ws';
|
|
1
2
|
import { type PlatformBinding } from './binding.js';
|
|
2
3
|
/** 本机一个 botmux bot 的概要(上报给平台,供团队页「人→机器→bot」展示 + 拉群)。 */
|
|
3
4
|
export interface PlatformBotInfo {
|
|
@@ -44,4 +45,30 @@ export interface TunnelClientHandle {
|
|
|
44
45
|
stop(): void;
|
|
45
46
|
}
|
|
46
47
|
export declare function startPlatformTunnelClient(opts: TunnelClientOptions): TunnelClientHandle;
|
|
48
|
+
/**
|
|
49
|
+
* 把一条胜出的数据通道 WebSocket 裸桥接到本地 dashboard 的 TCP 端口。
|
|
50
|
+
*
|
|
51
|
+
* 手动事件桥接,不用 `ws` 的 `createWebSocketStream()`:那个 API 在 **Bun 里直接抛
|
|
52
|
+
* `Error("Not supported yet in Bun")`**(实测 bun 1.4.0 抛、node v22.21.1 正常)。
|
|
53
|
+
* 而编译版单文件二进制跑的就是 Bun —— 于是控制通道连上了(`new WebSocket` 在 Bun 下
|
|
54
|
+
* 正常,日志照打「隧道已连接平台」、平台侧显示机器在线),但每次真要转发请求都崩在桥接
|
|
55
|
+
* 那一行,数据通道永远建不起来:平台侧 Dashboard 整站打不开,而本地直连不经隧道故一切
|
|
56
|
+
* 正常。这个「dev 模式能开、二进制不能开」的分裂就是它。
|
|
57
|
+
*
|
|
58
|
+
* ⚠️ 背压信号为什么不用 `bufferedAmount`:**Bun 下它恒为 0**。实测(bun 1.4.0 客户端
|
|
59
|
+
* + 真 Node `ws` 服务端、对端停读):连发 400MB 后 `bufferedAmount` 一直是 0、
|
|
60
|
+
* `pause()` 只打印 `[bun] Warning: ... not implemented in bun` 且暂停期间 400/400 条
|
|
61
|
+
* 照送、`send(data, cb)` 的回调在「交给内部队列」时就结算(对端应用层实收 0.0MB 时
|
|
62
|
+
* 400 个回调已全部回来,所以自计数也恒为 0)、`ws` shim 无 `_socket` 可看
|
|
63
|
+
* `writableLength`、Bun 原生 `globalThis.WebSocket` 的 `bufferedAmount` 同样恒 0。
|
|
64
|
+
* ⟹ **ws 层没有任何可用的已缓冲量信号**。
|
|
65
|
+
*
|
|
66
|
+
* 所以改用**协议层确认**:超水位后 `ping()`,只有收到 `pong` 才继续读 TCP。pong 必须由
|
|
67
|
+
* 对端真的读到我们的字节后才可能回来,因此它是「平台确实在消费」的证据,且在 Node 与
|
|
68
|
+
* Bun 下行为一致(两个运行时都实测:对端停读期间 0 个 pong,恢复后收到)。
|
|
69
|
+
*
|
|
70
|
+
* 导出而非内联在 `openDataStream` 里,是为了让测试能 import 到**生产这一份**——
|
|
71
|
+
* 早先测试自己复制了一份桥接,结果删掉整段背压/改成发文本都不报红。
|
|
72
|
+
*/
|
|
73
|
+
export declare function bridgeDataChannel(winner: WebSocket, dashboardPort: number): void;
|
|
47
74
|
//# sourceMappingURL=tunnel-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel-client.d.ts","sourceRoot":"","sources":["../../src/platform/tunnel-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tunnel-client.d.ts","sourceRoot":"","sources":["../../src/platform/tunnel-client.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAgB,MAAM,IAAI,CAAC;AAC7C,OAAO,EAA0C,KAAK,eAAe,EAAqB,MAAM,cAAc,CAAC;AAE/G,wDAAwD;AACxD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;4DACwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;sCAEkC;IAClC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,iEAAiE;IACjE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wDAAwD;AACxD,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,eAAe,CAAC;IACzB,qCAAqC;IACrC,gBAAgB,EAAE,MAAM,MAAM,CAAC;IAC/B,oCAAoC;IACpC,iBAAiB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACvC,UAAU,EAAE,MAAM,MAAM,CAAC;IACzB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,eAAe,EAAE,CAAC;IAClC;uCACmC;IACnC,cAAc,CAAC,EAAE,MAAM,MAAM,CAAC;IAC9B;4CACwC;IACxC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,IAAI,CAAC;IACxD,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CAC7D;AA0DD,MAAM,WAAW,kBAAkB;IACjC,IAAI,IAAI,IAAI,CAAC;CACd;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,mBAAmB,GAAG,kBAAkB,CAoWvF;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAiHhF"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// 下发 open-stream,本端拨一条数据连接回去、裸桥接到本地 dashboard 端口。
|
|
4
4
|
import net from 'node:net';
|
|
5
5
|
import { hostname, networkInterfaces } from 'node:os';
|
|
6
|
-
import { WebSocket
|
|
6
|
+
import { WebSocket } from 'ws';
|
|
7
7
|
import { setPlatformTeams, clearPlatformBinding } from './binding.js';
|
|
8
8
|
const HEARTBEAT_MS = 30_000;
|
|
9
9
|
const BACKOFF_MIN_MS = 1_000;
|
|
@@ -21,6 +21,17 @@ const DATA_DIAL_PARALLEL = 3;
|
|
|
21
21
|
const DATA_DIAL_MAX_WAVES = 2;
|
|
22
22
|
const DATA_DIAL_WAVE_BACKOFF_MS = 150;
|
|
23
23
|
const DATA_DIAL_OVERALL_DEADLINE_MS = 8_000;
|
|
24
|
+
// 桥接的 WebSocket 侧背压水位:本地 dashboard 读得比平台链路发得快时(下载、长日志),
|
|
25
|
+
// 未确认送达的字节超过这个水位就暂停 TCP 读取,等确认后继续。`pipe()` 原来替我们管背压,
|
|
26
|
+
// 手写事件桥接(见 bridgeDataChannel():Bun 不支持 createWebSocketStream)就必须自己管,
|
|
27
|
+
// 否则大响应会在内存里堆帧。
|
|
28
|
+
const WS_BACKPRESSURE_BYTES = 4 * 1024 * 1024;
|
|
29
|
+
// 背压确认用的 ping 间隔:超水位后每隔这么久探一次「平台真的收下了吗」。
|
|
30
|
+
// 取值权衡:太小则空转 ping,太大则恢复迟钝、拉长大响应的总时长。
|
|
31
|
+
const WS_BACKPRESSURE_PROBE_MS = 20;
|
|
32
|
+
// 本地 dashboard FIN 后,等 WebSocket 把已排队的帧刷完并收到对端 close 的上限;
|
|
33
|
+
// 到点仍未收到就硬收尾,别把 socket 永久挂着。
|
|
34
|
+
const WS_CLOSE_FLUSH_TIMEOUT_MS = 30_000;
|
|
24
35
|
// 控制连接并行拨号(happy-eyeballs):一轮并行拨几条、谁先握手成功用谁,兜住入口 VIP 对新建连接
|
|
25
36
|
// ~35% 的黑洞。单条超时给足 TLS 握手时间(好连接 ~40ms,黑洞则等满超时判负)。
|
|
26
37
|
const CONTROL_DIAL_PARALLEL = 3;
|
|
@@ -363,27 +374,7 @@ export function startPlatformTunnelClient(opts) {
|
|
|
363
374
|
}
|
|
364
375
|
inflight.clear();
|
|
365
376
|
// 数据流必须关 permessage-deflate(连接创建时已设),否则大文件帧经网关压缩协商错位 → RSV1 断流。
|
|
366
|
-
|
|
367
|
-
const tcp = net.connect(opts.getDashboardPort(), '127.0.0.1');
|
|
368
|
-
// 交互式终端关 Nagle:终端输出常被拆成「回显字符 + 光标/颜色控制序列」这类分帧小包,
|
|
369
|
-
// Nagle 会把紧随其后的小包扣到对端 delayed-ACK(~40ms)才发出。网页终端经平台隧道中转时
|
|
370
|
-
// 这条桥接 socket 串在链路中间,用户就感到每隔一下卡 ~40ms;本机直连不经隧道故不卡。
|
|
371
|
-
tcp.setNoDelay(true);
|
|
372
|
-
const kill = () => {
|
|
373
|
-
try {
|
|
374
|
-
dup.destroy();
|
|
375
|
-
}
|
|
376
|
-
catch { /* ignore */ }
|
|
377
|
-
try {
|
|
378
|
-
tcp.destroy();
|
|
379
|
-
}
|
|
380
|
-
catch { /* ignore */ }
|
|
381
|
-
};
|
|
382
|
-
dup.on('error', kill);
|
|
383
|
-
tcp.on('error', kill);
|
|
384
|
-
tcp.on('close', kill);
|
|
385
|
-
dup.pipe(tcp);
|
|
386
|
-
tcp.pipe(dup);
|
|
377
|
+
bridgeDataChannel(winner, opts.getDashboardPort());
|
|
387
378
|
};
|
|
388
379
|
// 每波并行拨 DATA_DIAL_PARALLEL 条,谁先 open 谁胜出;一波全黑洞/失败才进下一波(有界)。
|
|
389
380
|
const dialWave = () => {
|
|
@@ -479,6 +470,184 @@ export function startPlatformTunnelClient(opts) {
|
|
|
479
470
|
},
|
|
480
471
|
};
|
|
481
472
|
}
|
|
473
|
+
/**
|
|
474
|
+
* 把一条胜出的数据通道 WebSocket 裸桥接到本地 dashboard 的 TCP 端口。
|
|
475
|
+
*
|
|
476
|
+
* 手动事件桥接,不用 `ws` 的 `createWebSocketStream()`:那个 API 在 **Bun 里直接抛
|
|
477
|
+
* `Error("Not supported yet in Bun")`**(实测 bun 1.4.0 抛、node v22.21.1 正常)。
|
|
478
|
+
* 而编译版单文件二进制跑的就是 Bun —— 于是控制通道连上了(`new WebSocket` 在 Bun 下
|
|
479
|
+
* 正常,日志照打「隧道已连接平台」、平台侧显示机器在线),但每次真要转发请求都崩在桥接
|
|
480
|
+
* 那一行,数据通道永远建不起来:平台侧 Dashboard 整站打不开,而本地直连不经隧道故一切
|
|
481
|
+
* 正常。这个「dev 模式能开、二进制不能开」的分裂就是它。
|
|
482
|
+
*
|
|
483
|
+
* ⚠️ 背压信号为什么不用 `bufferedAmount`:**Bun 下它恒为 0**。实测(bun 1.4.0 客户端
|
|
484
|
+
* + 真 Node `ws` 服务端、对端停读):连发 400MB 后 `bufferedAmount` 一直是 0、
|
|
485
|
+
* `pause()` 只打印 `[bun] Warning: ... not implemented in bun` 且暂停期间 400/400 条
|
|
486
|
+
* 照送、`send(data, cb)` 的回调在「交给内部队列」时就结算(对端应用层实收 0.0MB 时
|
|
487
|
+
* 400 个回调已全部回来,所以自计数也恒为 0)、`ws` shim 无 `_socket` 可看
|
|
488
|
+
* `writableLength`、Bun 原生 `globalThis.WebSocket` 的 `bufferedAmount` 同样恒 0。
|
|
489
|
+
* ⟹ **ws 层没有任何可用的已缓冲量信号**。
|
|
490
|
+
*
|
|
491
|
+
* 所以改用**协议层确认**:超水位后 `ping()`,只有收到 `pong` 才继续读 TCP。pong 必须由
|
|
492
|
+
* 对端真的读到我们的字节后才可能回来,因此它是「平台确实在消费」的证据,且在 Node 与
|
|
493
|
+
* Bun 下行为一致(两个运行时都实测:对端停读期间 0 个 pong,恢复后收到)。
|
|
494
|
+
*
|
|
495
|
+
* 导出而非内联在 `openDataStream` 里,是为了让测试能 import 到**生产这一份**——
|
|
496
|
+
* 早先测试自己复制了一份桥接,结果删掉整段背压/改成发文本都不报红。
|
|
497
|
+
*/
|
|
498
|
+
export function bridgeDataChannel(winner, dashboardPort) {
|
|
499
|
+
const tcp = net.connect(dashboardPort, '127.0.0.1');
|
|
500
|
+
// 交互式终端关 Nagle:终端输出常被拆成「回显字符 + 光标/颜色控制序列」这类分帧小包,
|
|
501
|
+
// Nagle 会把紧随其后的小包扣到对端 delayed-ACK(~40ms)才发出。网页终端经平台隧道中转时
|
|
502
|
+
// 这条桥接 socket 串在链路中间,用户就感到每隔一下卡 ~40ms;本机直连不经隧道故不卡。
|
|
503
|
+
tcp.setNoDelay(true);
|
|
504
|
+
let killed = false;
|
|
505
|
+
let ending = false;
|
|
506
|
+
// 「已发出但未被 pong 确认的字节数」——反向背压水位,同时是 finish() 判断排空的依据。
|
|
507
|
+
// 声明在 kill/finish 之前:它们会读这个变量,别让顺序变成 TDZ 隐患。
|
|
508
|
+
let unacked = 0;
|
|
509
|
+
let probing = false;
|
|
510
|
+
/**
|
|
511
|
+
* 硬收尾:双向都会触发 close/error,去重避免重复 destroy。
|
|
512
|
+
*
|
|
513
|
+
* 优雅关闭路径不需要在这里额外让路:finish() 已经等到 `unacked` 归零才 `close()`,
|
|
514
|
+
* 到 winner 'close' 回来时队列本就是空的,此时 terminate 无数据可丢。
|
|
515
|
+
* (实测过一个「ending 时跳过 terminate」的额外分支:Bun 下 64MB × 4 次、以及平台永不
|
|
516
|
+
* 回 close 的场景,加与不加逐字同结果 ⟹ 是没有牙的复杂度,删掉。)
|
|
517
|
+
*/
|
|
518
|
+
const kill = () => {
|
|
519
|
+
if (killed)
|
|
520
|
+
return;
|
|
521
|
+
killed = true;
|
|
522
|
+
try {
|
|
523
|
+
winner.terminate();
|
|
524
|
+
}
|
|
525
|
+
catch { /* ignore */ }
|
|
526
|
+
try {
|
|
527
|
+
tcp.destroy();
|
|
528
|
+
}
|
|
529
|
+
catch { /* ignore */ }
|
|
530
|
+
};
|
|
531
|
+
/**
|
|
532
|
+
* 本地 dashboard 写完并 FIN 时的收尾:**先等排空、再 `close()`**,绝不 `terminate()`。
|
|
533
|
+
*
|
|
534
|
+
* ⚠️ 这里实测会真丢数据,且踩了两层:
|
|
535
|
+
* 1. `terminate()` 直接掐断 socket,Bun 内部队列里没发出去的帧全丢。64MB 响应 A/B
|
|
536
|
+
* (本地写满 64MB 后 FIN,平台侧统计实收):`terminate()` → 只收到 50.2MB。
|
|
537
|
+
* 2. 光换成 `close()` 也不够:仍有 `unacked > 0`(帧已交给队列但对端未确认)时
|
|
538
|
+
* close 会抢在排空前生效,实测 4 次里 2 次丢 4~5MB。
|
|
539
|
+
* 所以先用 ping/pong 等到 `unacked` 归零(pong 证明对端真读到了我们的字节),再 close。
|
|
540
|
+
* 实测该顺序 64MB × 5 次全部零丢失。原先 `pipe()` 的 `end:true` 免费提供了这个语义。
|
|
541
|
+
*
|
|
542
|
+
* ⚠️⚠️ 别把上面的字节数当成「凑够这个量就能测出来」:丢多少、乃至丢不丢,取决于 FIN 那一
|
|
543
|
+
* 刻 Bun 队列里恰好压着多少字节(灌速 × 平台消费节奏 × 调度的竞态),**不是尺寸阈值**。
|
|
544
|
+
* 两次独立测量就不一致:一处 64MB 丢 14~27MB、24MB 不丢;另一处 64MB 在快/限速平台都零丢。
|
|
545
|
+
* ⟹ 这条不能靠行为断言守,回归防线是测试里那条**源码形态守卫**(别删它)。
|
|
546
|
+
*/
|
|
547
|
+
const finish = () => {
|
|
548
|
+
if (killed || ending)
|
|
549
|
+
return;
|
|
550
|
+
ending = true;
|
|
551
|
+
const closeWhenDrained = () => {
|
|
552
|
+
if (killed)
|
|
553
|
+
return;
|
|
554
|
+
if (winner.readyState !== winner.OPEN) {
|
|
555
|
+
kill();
|
|
556
|
+
return;
|
|
557
|
+
}
|
|
558
|
+
if (unacked <= 0) {
|
|
559
|
+
try {
|
|
560
|
+
winner.close();
|
|
561
|
+
}
|
|
562
|
+
catch {
|
|
563
|
+
kill();
|
|
564
|
+
}
|
|
565
|
+
return;
|
|
566
|
+
}
|
|
567
|
+
try {
|
|
568
|
+
winner.ping();
|
|
569
|
+
}
|
|
570
|
+
catch {
|
|
571
|
+
kill();
|
|
572
|
+
return;
|
|
573
|
+
}
|
|
574
|
+
setTimeout(closeWhenDrained, WS_BACKPRESSURE_PROBE_MS);
|
|
575
|
+
};
|
|
576
|
+
closeWhenDrained();
|
|
577
|
+
// 关闭帧发出后对端会回 close,届时 winner 的 'close' 走 kill() 收 tcp。
|
|
578
|
+
// 兜底:对端不回(或迟迟排不空)时别把 socket 永久挂着。
|
|
579
|
+
setTimeout(kill, WS_CLOSE_FLUSH_TIMEOUT_MS);
|
|
580
|
+
};
|
|
581
|
+
// ── 平台 → 本地 ──
|
|
582
|
+
// TCP 侧写不动时暂停 WebSocket 读取,drain 后恢复。
|
|
583
|
+
// ⚠️ `winner.pause()` 在 Bun 下是 no-op(见函数注释),所以**这个方向在编译版里仍然没有
|
|
584
|
+
// 闸门**:平台灌得比本地 dashboard 收得快时,帧会堆在进程里。下面反向那条 ping 闸门只管
|
|
585
|
+
// 「本地 → 平台」,**不解决这一侧**,别把它读成这一侧的兜底。保留 pause/resume 是因为它
|
|
586
|
+
// 在 Node(源码/npm 形态)下真实有效且在 Bun 下无害。编译态这一侧待 follow-up。
|
|
587
|
+
winner.on('message', (data) => {
|
|
588
|
+
const buf = toBuffer(data);
|
|
589
|
+
if (!buf.length)
|
|
590
|
+
return;
|
|
591
|
+
if (!tcp.write(buf)) {
|
|
592
|
+
try {
|
|
593
|
+
winner.pause();
|
|
594
|
+
}
|
|
595
|
+
catch { /* ignore */ }
|
|
596
|
+
}
|
|
597
|
+
});
|
|
598
|
+
tcp.on('drain', () => { try {
|
|
599
|
+
winner.resume();
|
|
600
|
+
}
|
|
601
|
+
catch { /* ignore */ } });
|
|
602
|
+
// ── 本地 → 平台 ──
|
|
603
|
+
// 水位变量见函数开头(unacked/probing)。不用 bufferedAmount:Bun 下恒为 0。
|
|
604
|
+
const onPong = () => {
|
|
605
|
+
unacked = 0; // 对端读到了我们此前写的字节
|
|
606
|
+
if (killed)
|
|
607
|
+
return;
|
|
608
|
+
tcp.resume();
|
|
609
|
+
};
|
|
610
|
+
winner.on('pong', onPong);
|
|
611
|
+
const probeUntilDrained = () => {
|
|
612
|
+
if (killed)
|
|
613
|
+
return;
|
|
614
|
+
if (unacked <= WS_BACKPRESSURE_BYTES) {
|
|
615
|
+
probing = false;
|
|
616
|
+
tcp.resume();
|
|
617
|
+
return;
|
|
618
|
+
}
|
|
619
|
+
try {
|
|
620
|
+
winner.ping();
|
|
621
|
+
}
|
|
622
|
+
catch { /* 连接已废,kill 会收尾 */ }
|
|
623
|
+
setTimeout(probeUntilDrained, WS_BACKPRESSURE_PROBE_MS);
|
|
624
|
+
};
|
|
625
|
+
tcp.on('data', (chunk) => {
|
|
626
|
+
if (winner.readyState !== winner.OPEN)
|
|
627
|
+
return;
|
|
628
|
+
// binary:true 是显式声明,不是必需的保险:实测 ws 对 Buffer 入参本就发二进制帧
|
|
629
|
+
// (不加也是 isBinary=true、字节逐字不变)。写出来是为了让「这是裸字节桥、
|
|
630
|
+
// 不许按文本处理」这件事在代码里可见,避免日后有人换成 string 载荷。
|
|
631
|
+
winner.send(chunk, { binary: true });
|
|
632
|
+
unacked += chunk.length;
|
|
633
|
+
if (unacked > WS_BACKPRESSURE_BYTES && !probing) {
|
|
634
|
+
probing = true;
|
|
635
|
+
tcp.pause(); // 停读本地,直到 pong 证明平台已消费
|
|
636
|
+
setTimeout(probeUntilDrained, WS_BACKPRESSURE_PROBE_MS);
|
|
637
|
+
}
|
|
638
|
+
});
|
|
639
|
+
winner.on('close', kill);
|
|
640
|
+
winner.on('error', kill);
|
|
641
|
+
// ⚠️ 不要在 tcp 'close' 上直接 kill:'end'(对端 FIN)之后紧跟就是 'close',
|
|
642
|
+
// 那会立刻 terminate 掉正在刷出的 WebSocket,把 finish() 的排空又变回截断。
|
|
643
|
+
// 本地 socket 关掉后由 finish()/winner 的 close 事件负责收尾。
|
|
644
|
+
tcp.on('close', () => { if (!ending)
|
|
645
|
+
kill(); });
|
|
646
|
+
tcp.on('error', kill);
|
|
647
|
+
// 本地 dashboard 读完即关:半关会让隧道另一头一直等,所以收尾。走 finish() 而非 kill(),
|
|
648
|
+
// 否则 Bun 内部队列里未发出的尾部会被丢掉(见 finish() 上的实测数据)。
|
|
649
|
+
tcp.on('end', finish);
|
|
650
|
+
}
|
|
482
651
|
function safeSend(sock, obj) {
|
|
483
652
|
try {
|
|
484
653
|
if (sock.readyState === WebSocket.OPEN)
|
|
@@ -488,6 +657,20 @@ function safeSend(sock, obj) {
|
|
|
488
657
|
/* ignore */
|
|
489
658
|
}
|
|
490
659
|
}
|
|
660
|
+
/**
|
|
661
|
+
* 把 `ws` 的 message 负载归一成一个 Buffer。
|
|
662
|
+
*
|
|
663
|
+
* `RawData` 可能是 Buffer、Buffer[](分片未合并)或 ArrayBuffer,取决于 ws 的
|
|
664
|
+
* 配置与运行时;桥接要往 TCP 写的是连续字节,所以三种都得收敛。原先
|
|
665
|
+
* `createWebSocketStream()` 内部替我们做了这件事。
|
|
666
|
+
*/
|
|
667
|
+
function toBuffer(data) {
|
|
668
|
+
if (Buffer.isBuffer(data))
|
|
669
|
+
return data;
|
|
670
|
+
if (Array.isArray(data))
|
|
671
|
+
return Buffer.concat(data);
|
|
672
|
+
return Buffer.from(data);
|
|
673
|
+
}
|
|
491
674
|
function wsBase(platformUrl) {
|
|
492
675
|
const u = new URL(platformUrl);
|
|
493
676
|
u.protocol = u.protocol === 'https:' ? 'wss:' : 'ws:';
|