botmux 2.79.1 → 2.81.0
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/README.en.md +1 -1
- package/README.md +1 -1
- package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
- package/dist/adapters/backend/tmux-backend.js +5 -0
- package/dist/adapters/backend/tmux-backend.js.map +1 -1
- package/dist/adapters/cli/hermes.d.ts.map +1 -1
- package/dist/adapters/cli/hermes.js +16 -1
- package/dist/adapters/cli/hermes.js.map +1 -1
- package/dist/adapters/cli/registry.d.ts +2 -1
- package/dist/adapters/cli/registry.d.ts.map +1 -1
- package/dist/adapters/cli/registry.js +3 -1
- package/dist/adapters/cli/registry.js.map +1 -1
- package/dist/adapters/cli/relay.d.ts +32 -0
- package/dist/adapters/cli/relay.d.ts.map +1 -0
- package/dist/adapters/cli/relay.js +70 -0
- package/dist/adapters/cli/relay.js.map +1 -0
- package/dist/adapters/cli/types.d.ts +1 -1
- package/dist/adapters/cli/types.d.ts.map +1 -1
- package/dist/bot-registry.d.ts +8 -0
- package/dist/bot-registry.d.ts.map +1 -1
- package/dist/bot-registry.js +62 -4
- package/dist/bot-registry.js.map +1 -1
- package/dist/cli/dashboard-endpoint.d.ts +10 -2
- package/dist/cli/dashboard-endpoint.d.ts.map +1 -1
- package/dist/cli/dashboard-endpoint.js +40 -6
- package/dist/cli/dashboard-endpoint.js.map +1 -1
- package/dist/core/ask-hook/registry.d.ts.map +1 -1
- package/dist/core/ask-hook/registry.js +3 -0
- package/dist/core/ask-hook/registry.js.map +1 -1
- package/dist/core/cost-calculator.d.ts.map +1 -1
- package/dist/core/cost-calculator.js +28 -1
- package/dist/core/cost-calculator.js.map +1 -1
- package/dist/core/session-discovery.d.ts.map +1 -1
- package/dist/core/session-discovery.js +8 -0
- package/dist/core/session-discovery.js.map +1 -1
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +4 -1
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/web/sessions.d.ts.map +1 -1
- package/dist/dashboard/web/sessions.js +1 -0
- package/dist/dashboard/web/sessions.js.map +1 -1
- package/dist/dashboard/web/workflows.js +1 -1
- package/dist/dashboard/web/workflows.js.map +1 -1
- package/dist/dashboard-web/app.js +2 -2
- package/dist/dashboard.js +22 -0
- package/dist/dashboard.js.map +1 -1
- package/dist/i18n/en.js +1 -1
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.js +1 -1
- package/dist/i18n/zh.js.map +1 -1
- package/dist/im/lark/card-builder.d.ts.map +1 -1
- package/dist/im/lark/card-builder.js +1 -0
- package/dist/im/lark/card-builder.js.map +1 -1
- package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
- package/dist/im/lark/event-dispatcher.js +5 -0
- package/dist/im/lark/event-dispatcher.js.map +1 -1
- package/dist/services/resumable-session-discovery.js +2 -2
- package/dist/setup/bot-config-editor.d.ts +3 -3
- package/dist/setup/bot-config-editor.d.ts.map +1 -1
- package/dist/setup/bot-config-editor.js +8 -4
- package/dist/setup/bot-config-editor.js.map +1 -1
- package/dist/setup/cli-selection.d.ts +4 -2
- package/dist/setup/cli-selection.d.ts.map +1 -1
- package/dist/setup/cli-selection.js +34 -11
- package/dist/setup/cli-selection.js.map +1 -1
- package/dist/utils/listen-with-probe.d.ts +2 -0
- package/dist/utils/listen-with-probe.d.ts.map +1 -1
- package/dist/utils/listen-with-probe.js +43 -7
- package/dist/utils/listen-with-probe.js.map +1 -1
- package/dist/worker.js +22 -2
- package/dist/worker.js.map +1 -1
- package/dist/workflows/attempt-resume.d.ts.map +1 -1
- package/dist/workflows/attempt-resume.js +1 -1
- package/dist/workflows/attempt-resume.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { CliId } from '../adapters/cli/types.js';
|
|
2
2
|
export declare const CLI_ID_CHOICES: Record<string, CliId>;
|
|
3
3
|
/**
|
|
4
|
-
* 有序 CLI 选项 (id + 展示名), 顺序与 setup 交互菜单 (CLI_ID_CHOICES 序号
|
|
5
|
-
*
|
|
4
|
+
* 有序 CLI 选项 (id + 展示名), 顺序与 setup 交互菜单 (CLI_ID_CHOICES 序号)
|
|
5
|
+
* 一致. dashboard "添加机器人" 的 CLI 下拉直接读这里, 避免再抄一份
|
|
6
6
|
* 列表. 单一事实源: CLI_ID_CHOICES 的值序.
|
|
7
7
|
*/
|
|
8
8
|
export declare const CLI_OPTIONS: ReadonlyArray<{
|
|
@@ -12,7 +12,7 @@ export declare const CLI_OPTIONS: ReadonlyArray<{
|
|
|
12
12
|
/**
|
|
13
13
|
* 把 setup 里"CLI 适配器"那一格的原始输入解析成合法的 CliId.
|
|
14
14
|
* - 空 → undefined (调用方决定 "preserve current" 还是套默认 'claude-code')
|
|
15
|
-
* -
|
|
15
|
+
* - 序号 (CLI_ID_CHOICES 的键) → 映射成 cliId
|
|
16
16
|
* - 已是合法 cliId 字面值 → 原样返回
|
|
17
17
|
* - 其它 → throw (typo 不该静默落盘成 cliId)
|
|
18
18
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot-config-editor.d.ts","sourceRoot":"","sources":["../../src/setup/bot-config-editor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEtD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"bot-config-editor.d.ts","sourceRoot":"","sources":["../../src/setup/bot-config-editor.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,7 @@ export const CLI_ID_CHOICES = {
|
|
|
16
16
|
'15': 'pi',
|
|
17
17
|
'16': 'copilot',
|
|
18
18
|
'17': 'oh-my-pi',
|
|
19
|
+
'18': 'relay',
|
|
19
20
|
};
|
|
20
21
|
const VALID_CLI_IDS = new Set(Object.values(CLI_ID_CHOICES));
|
|
21
22
|
/**
|
|
@@ -41,17 +42,18 @@ const CLI_DISPLAY_LABELS = {
|
|
|
41
42
|
'pi': 'Pi',
|
|
42
43
|
'copilot': 'Copilot',
|
|
43
44
|
'oh-my-pi': 'Oh My Pi',
|
|
45
|
+
'relay': 'Relay',
|
|
44
46
|
};
|
|
45
47
|
/**
|
|
46
|
-
* 有序 CLI 选项 (id + 展示名), 顺序与 setup 交互菜单 (CLI_ID_CHOICES 序号
|
|
47
|
-
*
|
|
48
|
+
* 有序 CLI 选项 (id + 展示名), 顺序与 setup 交互菜单 (CLI_ID_CHOICES 序号)
|
|
49
|
+
* 一致. dashboard "添加机器人" 的 CLI 下拉直接读这里, 避免再抄一份
|
|
48
50
|
* 列表. 单一事实源: CLI_ID_CHOICES 的值序.
|
|
49
51
|
*/
|
|
50
52
|
export const CLI_OPTIONS = Object.values(CLI_ID_CHOICES).map(id => ({ id, label: CLI_DISPLAY_LABELS[id] ?? id }));
|
|
51
53
|
/**
|
|
52
54
|
* 把 setup 里"CLI 适配器"那一格的原始输入解析成合法的 CliId.
|
|
53
55
|
* - 空 → undefined (调用方决定 "preserve current" 还是套默认 'claude-code')
|
|
54
|
-
* -
|
|
56
|
+
* - 序号 (CLI_ID_CHOICES 的键) → 映射成 cliId
|
|
55
57
|
* - 已是合法 cliId 字面值 → 原样返回
|
|
56
58
|
* - 其它 → throw (typo 不该静默落盘成 cliId)
|
|
57
59
|
*/
|
|
@@ -64,7 +66,9 @@ export function resolveCliId(input) {
|
|
|
64
66
|
return mapped;
|
|
65
67
|
if (VALID_CLI_IDS.has(raw))
|
|
66
68
|
return raw;
|
|
67
|
-
|
|
69
|
+
// 序号上界从 CLI_ID_CHOICES 派生, 新增 CLI 时自动跟随, 不再手写硬编码区间.
|
|
70
|
+
const maxChoice = Object.keys(CLI_ID_CHOICES).length;
|
|
71
|
+
throw new Error(`Unknown CLI 适配器 "${raw}"。请输入序号 1-${maxChoice} 或合法 ID 之一: ${[...VALID_CLI_IDS].join(', ')}`);
|
|
68
72
|
}
|
|
69
73
|
/** 完整邮箱(含 @ 和域名)。用于区分"完整邮箱"与"邮箱前缀"——后者解析时会被静默丢弃。 */
|
|
70
74
|
const FULL_EMAIL_RE = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot-config-editor.js","sourceRoot":"","sources":["../../src/setup/bot-config-editor.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAA0B;IACnD,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,UAAU;
|
|
1
|
+
{"version":3,"file":"bot-config-editor.js","sourceRoot":"","sources":["../../src/setup/bot-config-editor.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAA0B;IACnD,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,OAAO;CACd,CAAC;AAEF,MAAM,aAAa,GAAwB,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;AAElF;;;;GAIG;AACH,MAAM,kBAAkB,GAA0B;IAChD,aAAa,EAAE,QAAQ;IACvB,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,QAAQ;IAClB,UAAU,EAAE,UAAU;IACtB,aAAa,EAAE,aAAa;IAC5B,KAAK,EAAE,KAAK;IACZ,QAAQ,EAAE,QAAQ;IAClB,WAAW,EAAE,WAAW;IACxB,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,MAAM;IACf,IAAI,EAAE,IAAI;IACV,SAAS,EAAE,SAAS;IACpB,UAAU,EAAE,UAAU;IACtB,OAAO,EAAE,OAAO;CACjB,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GACtB,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,KAAyB;IACpD,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3B,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,GAAY,CAAC;IAChD,oDAAoD;IACpD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC;IACrD,MAAM,IAAI,KAAK,CACb,oBAAoB,GAAG,aAAa,SAAS,eAAe,CAAC,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC5F,CAAC;AACJ,CAAC;AAED,oDAAoD;AACpD,MAAM,aAAa,GAAG,4BAA4B,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACvB,OAAO,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,6BAA6B,CAAC,OAAiB;IAC7D,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC;AAClF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,YAAkC;IAC9D,OAAO,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;AACvD,CAAC;AA+BD;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CACvC,MAAiE;IAEjE,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QACvF,MAAM,IAAI,KAAK,CACb,gGAAgG;YAChG,mDAAmD,CACpD,CAAC;IACJ,CAAC;AACH,CAAC;AAQD,SAAS,OAAO,CAAC,CAAqB;IACpC,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACtC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACnB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAyB;IAC/D,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3B,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,MAAM,IAAI,GAAG,GAAG;SACb,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;SACxB,OAAO,CAAC,qBAAqB,EAAE,GAAG,CAAC;SACnC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IACjC,OAAO,IAAI,IAAI,SAAS,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,GAAuB,EACvB,KAAa,EACb,MAAM,GAAG,QAAQ;IAEjB,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1F,OAAO,GAAG,MAAM,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAgC,GAAM;IACtE,MAAM,GAAG,GAAwB,EAAE,GAAG,GAAG,EAAE,CAAC;IAC5C,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,GAAQ,CAAC;IAElD,MAAM,IAAI,GAAG,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/C,IAAI,IAAI;QAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;;QACrB,OAAO,GAAG,CAAC,IAAI,CAAC;IACrB,OAAO,GAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,OAAe,EACf,QAAQ,GAAG,WAAW;IAEtB,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,KAAK,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,4CAA4C,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,MAAa,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,IAA+B,EAC/B,MAAM,GAAG,QAAQ;IAEjB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,YAAY,CAAC,CAAC,CAAC;IAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QAChD,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,yBAAyB,CAAC,CAAC;QACzD,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,QAAQ,IAAI,mBAAmB,UAAU,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ;gBAClE,gCAAgC,CACjC,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAC1B,GAAwB,EACxB,GAAW,EACX,GAAuB;IAEvB,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO;IAC9B,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACrB,IAAI,CAAC,CAAC;QAAE,OAAO;IACf,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QACd,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IACD,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,KAAa,EACb,IAAmD;IAEnD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACzB,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAE3B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5C,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC;YACrG,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,GAAG,CAAC,CAAC;IACzD,IAAI,OAAO,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC;IAEjC,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;IAC7E,OAAO,aAAa,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,IAAS,EACT,SAAiB;IAEjB,MAAM,KAAK,GAAG,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACjD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAE1C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAC9B,MAAM,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC5C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAY,EAAE,KAAK,EAAE,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,GAAM,EACN,KAAyB;IAEzB,MAAM,GAAG,GAAwB,EAAE,GAAG,GAAG,EAAE,CAAC;IAE5C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACvC,IAAI,KAAK;QAAE,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;IAEjC,MAAM,IAAI,GAAG,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG;YAAE,OAAO,GAAG,CAAC,IAAI,CAAC;aAC1C,IAAI,IAAI;YAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;IACjC,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC/C,IAAI,SAAS;QAAE,GAAG,CAAC,aAAa,GAAG,SAAS,CAAC;IAE7C,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC5C,IAAI,KAAK;QAAE,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;IAE7B,mBAAmB,CAAC,GAAG,EAAE,iBAAiB,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IAEnE,mEAAmE;IACnE,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;QAC9B,OAAO,GAAG,CAAC,UAAU,CAAC;IACxB,CAAC;SAAM,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAClC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG;YAAE,OAAO,GAAG,CAAC,UAAU,CAAC;;YACtC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,iDAAiD;IACjD,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACzB,OAAO,GAAG,CAAC,KAAK,CAAC;IACnB,CAAC;SAAM,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG;YAAE,OAAO,GAAG,CAAC,KAAK,CAAC;aAC3B,IAAI,CAAC;YAAE,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;;YACrB,OAAO,GAAG,CAAC,KAAK,CAAC;IACxB,CAAC;IAED,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAC7C,IAAI,WAAW,KAAK,GAAG,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC,WAAW,CAAC;QACzB,CAAC;aAAM,IAAI,WAAW,EAAE,CAAC;YACvB,IAAI,WAAW,KAAK,KAAK,IAAI,WAAW,KAAK,MAAM,IAAI,WAAW,KAAK,OAAO,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;gBAC3G,MAAM,IAAI,KAAK,CAAC,4DAA4D,WAAW,EAAE,CAAC,CAAC;YAC7F,CAAC;YACD,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC;QAChC,CAAC;IACH,CAAC;IAED,mBAAmB,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAEzD,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACrC,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAC/C,IAAI,YAAY,KAAK,GAAG,EAAE,CAAC;YACzB,OAAO,GAAG,CAAC,YAAY,CAAC;QAC1B,CAAC;aAAM,IAAI,YAAY,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC3E,MAAM,OAAO,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAC;YACvD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CACb,yEAAyE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC9F,CAAC;YACJ,CAAC;YACD,GAAG,CAAC,YAAY,GAAG,OAAO,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;QAC1C,MAAM,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;QACzD,IAAI,iBAAiB,KAAK,GAAG,EAAE,CAAC;YAC9B,OAAO,GAAG,CAAC,iBAAiB,CAAC;QAC/B,CAAC;aAAM,IAAI,iBAAiB,EAAE,CAAC;YAC7B,GAAG,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;IAED,OAAO,kBAAkB,CAAC,GAAG,CAAM,CAAC;AACtC,CAAC"}
|
|
@@ -24,11 +24,13 @@ export interface ResolvedCliSelection {
|
|
|
24
24
|
readonly wrapperCli?: string;
|
|
25
25
|
}
|
|
26
26
|
/**
|
|
27
|
-
* 级联树(终端 TUI 用):顺序同 CLI_OPTIONS;'aiden' 一项展开成 children
|
|
27
|
+
* 级联树(终端 TUI 用):顺序同 CLI_OPTIONS;'aiden' 一项展开成 children;
|
|
28
|
+
* 末尾追加无原生 cliId 的网关分组(CJADK)。
|
|
28
29
|
*/
|
|
29
30
|
export declare const CLI_SELECT_TREE: ReadonlyArray<CliSelectGroup>;
|
|
30
31
|
/**
|
|
31
|
-
* 扁平选项(web 下拉 + 非 TTY
|
|
32
|
+
* 扁平选项(web 下拉 + 非 TTY 回退用):'aiden' 之后紧跟两个 aiden×* 项,
|
|
33
|
+
* 末尾追加 cjadk×* 项。
|
|
32
34
|
*/
|
|
33
35
|
export declare const CLI_SELECT_OPTIONS: ReadonlyArray<CliSelectOption>;
|
|
34
36
|
/** 按 key 查选项;非法 key 返回 undefined。 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-selection.d.ts","sourceRoot":"","sources":["../../src/setup/cli-selection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli-selection.d.ts","sourceRoot":"","sources":["../../src/setup/cli-selection.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEtD,4DAA4D;AAC5D,MAAM,WAAW,eAAe;IAC9B,2DAA2D;IAC3D,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,WAAW;IACX,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,mBAAmB;IACnB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,4CAA4C;IAC5C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,sDAAsD;AACtD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sCAAsC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;CACpD;AAED,8CAA8C;AAC9C,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAyBD;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,cAAc,CAOzD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC,eAAe,CAO7D,CAAC;AAMF,qCAAqC;AACrC,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAE3E;AAED,4DAA4D;AAC5D,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAM7E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,CAQrE;AAID,iDAAiD;AACjD,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAE5D;AAOD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,CASvE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,EAC9B,WAAW,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAiB,GAC9C;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAKjC;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAI5F"}
|
|
@@ -2,15 +2,21 @@
|
|
|
2
2
|
* cli-selection.ts
|
|
3
3
|
*
|
|
4
4
|
* 单一事实源:把「用户可选的 CLI 形态」从「原始 cliId 列表」抽象成一层
|
|
5
|
-
* **可级联的选择项**。除了原生 CLI
|
|
5
|
+
* **可级联的选择项**。除了原生 CLI,额外提供若干网关形态:
|
|
6
6
|
* - Aiden × Claude → 底层 cliId=claude-code,启动前缀 `aiden x claude`
|
|
7
7
|
* - Aiden × Codex → 底层 cliId=codex,启动前缀 `aiden x codex`
|
|
8
|
+
* - CJADK × Claude → 底层 cliId=claude-code,启动前缀 `cjadk claude`
|
|
9
|
+
* - CJADK × Codex → 底层 cliId=codex,启动前缀 `cjadk codex`
|
|
8
10
|
*
|
|
9
|
-
*
|
|
11
|
+
* 这些形态**不生成任何 wrapper 脚本**:通过 bot 配置的 `wrapperCli`(通用启动前缀)
|
|
10
12
|
* 实现——worker 在 spawn 时把启动命令拼成 `<wrapperCli> <CLI 参数>`(纯 argv,跨系统)。
|
|
11
|
-
* `wrapperCli` 是通用机制(也能承载 ccr / claude-w 等),不止 aiden。见 worker.ts 的
|
|
13
|
+
* `wrapperCli` 是通用机制(也能承载 ccr / claude-w 等),不止 aiden / cjadk。见 worker.ts 的
|
|
12
14
|
* wrapperCli 处理与 {@link buildWrappedLaunch} / {@link stripSettingsArgs}。
|
|
13
15
|
*
|
|
16
|
+
* aiden 与 cjadk 的差异:`aiden x claude` 不收 `--settings`(要剥掉),而 cjadk
|
|
17
|
+
* (`allowUnknownOption`)把全部 passthrough 参数原样转发给真正的 claude/codex,
|
|
18
|
+
* `--settings`(承载 bypass 键)必须保留,故不走剥离分支。
|
|
19
|
+
*
|
|
14
20
|
* 三处入口(终端 setup / 终端 bot 编辑 / dashboard 网页添加机器人)共用本模块:
|
|
15
21
|
* - 展示:`CLI_SELECT_OPTIONS`(扁平,web 下拉 + 非 TTY 回退)/ `CLI_SELECT_TREE`(级联,终端 TUI)
|
|
16
22
|
* - 解析:`resolveCliSelection(key)` → `{ cliId, wrapperCli? }`(纯映射,无副作用)
|
|
@@ -21,19 +27,36 @@ const AIDEN_NATIVE = { key: 'aiden', label: 'Aiden(原生 agent)', cliId: 'a
|
|
|
21
27
|
const AIDEN_X_CLAUDE = { key: 'aiden-x-claude', label: 'Aiden × Claude', cliId: 'claude-code', wrapperCli: 'aiden x claude' };
|
|
22
28
|
const AIDEN_X_CODEX = { key: 'aiden-x-codex', label: 'Aiden × Codex', cliId: 'codex', wrapperCli: 'aiden x codex' };
|
|
23
29
|
const AIDEN_VARIANTS = [AIDEN_NATIVE, AIDEN_X_CLAUDE, AIDEN_X_CODEX];
|
|
30
|
+
// ─── cjadk 选项 ──────────────────────────────────────────────────────────────
|
|
31
|
+
// cjadk 没有「原生 agent」模式,只是个装配启动器(`cjadk <agent>`),故只有 × 变体。
|
|
32
|
+
const CJADK_X_CLAUDE = { key: 'cjadk-x-claude', label: 'CJADK × Claude', cliId: 'claude-code', wrapperCli: 'cjadk claude' };
|
|
33
|
+
const CJADK_X_CODEX = { key: 'cjadk-x-codex', label: 'CJADK × Codex', cliId: 'codex', wrapperCli: 'cjadk codex' };
|
|
34
|
+
const CJADK_VARIANTS = [CJADK_X_CLAUDE, CJADK_X_CODEX];
|
|
35
|
+
/** 顶层 CLI 之外、纯 wrapperCli 网关分组(不对应任何原生 cliId),追加到树/列表末尾。 */
|
|
36
|
+
const EXTRA_GATEWAY_GROUPS = [
|
|
37
|
+
{ key: 'cjadk', label: 'CJADK', children: CJADK_VARIANTS },
|
|
38
|
+
];
|
|
24
39
|
// ─── 扁平 / 级联 视图(均派生自 bot-config-editor 的 CLI_OPTIONS,避免再抄一份)──
|
|
25
40
|
/**
|
|
26
|
-
* 级联树(终端 TUI 用):顺序同 CLI_OPTIONS;'aiden' 一项展开成 children
|
|
41
|
+
* 级联树(终端 TUI 用):顺序同 CLI_OPTIONS;'aiden' 一项展开成 children;
|
|
42
|
+
* 末尾追加无原生 cliId 的网关分组(CJADK)。
|
|
27
43
|
*/
|
|
28
|
-
export const CLI_SELECT_TREE =
|
|
29
|
-
|
|
30
|
-
|
|
44
|
+
export const CLI_SELECT_TREE = [
|
|
45
|
+
...CLI_OPTIONS.map((o) => o.id === 'aiden'
|
|
46
|
+
? { key: 'aiden', label: 'Aiden', children: AIDEN_VARIANTS }
|
|
47
|
+
: { key: o.id, label: o.label, option: { key: o.id, label: o.label, cliId: o.id } }),
|
|
48
|
+
...EXTRA_GATEWAY_GROUPS,
|
|
49
|
+
];
|
|
31
50
|
/**
|
|
32
|
-
* 扁平选项(web 下拉 + 非 TTY
|
|
51
|
+
* 扁平选项(web 下拉 + 非 TTY 回退用):'aiden' 之后紧跟两个 aiden×* 项,
|
|
52
|
+
* 末尾追加 cjadk×* 项。
|
|
33
53
|
*/
|
|
34
|
-
export const CLI_SELECT_OPTIONS =
|
|
35
|
-
|
|
36
|
-
|
|
54
|
+
export const CLI_SELECT_OPTIONS = [
|
|
55
|
+
...CLI_OPTIONS.flatMap((o) => o.id === 'aiden'
|
|
56
|
+
? AIDEN_VARIANTS
|
|
57
|
+
: [{ key: o.id, label: o.label, cliId: o.id }]),
|
|
58
|
+
...CJADK_VARIANTS,
|
|
59
|
+
];
|
|
37
60
|
const OPTION_BY_KEY = new Map(CLI_SELECT_OPTIONS.map((o) => [o.key, o]));
|
|
38
61
|
/** 按 key 查选项;非法 key 返回 undefined。 */
|
|
39
62
|
export function lookupCliSelection(key) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-selection.js","sourceRoot":"","sources":["../../src/setup/cli-selection.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cli-selection.js","sourceRoot":"","sources":["../../src/setup/cli-selection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AA8BrD,8EAA8E;AAE9E,MAAM,YAAY,GAAoB,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACjG,MAAM,cAAc,GAAoB,EAAE,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC;AAC/I,MAAM,aAAa,GAAoB,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC;AAErI,MAAM,cAAc,GAAmC,CAAC,YAAY,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;AAErG,8EAA8E;AAC9E,2DAA2D;AAE3D,MAAM,cAAc,GAAoB,EAAE,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;AAC7I,MAAM,aAAa,GAAoB,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;AAEnI,MAAM,cAAc,GAAmC,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;AAEvF,4DAA4D;AAC5D,MAAM,oBAAoB,GAAkC;IAC1D,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE;CAC3D,CAAC;AAEF,gEAAgE;AAEhE;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAkC;IAC5D,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAkB,EAAE,CACvC,CAAC,CAAC,EAAE,KAAK,OAAO;QACd,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE;QAC5D,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CACtF;IACD,GAAG,oBAAoB;CACxB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAmC;IAChE,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAC3B,CAAC,CAAC,EAAE,KAAK,OAAO;QACd,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CACjD;IACD,GAAG,cAAc;CAClB,CAAC;AAEF,MAAM,aAAa,GAAyC,IAAI,GAAG,CACjE,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAC1C,CAAC;AAEF,qCAAqC;AACrC,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,OAAO,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,kBAAkB,CAAC,KAAa,EAAE,UAAmB;IACnE,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QACjF,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC,GAAG,CAAC;IAC9B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,eAAe,GAAG,SAAS,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC7E,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;AAClG,CAAC;AAED,mEAAmE;AAEnE,iDAAiD;AACjD,MAAM,UAAU,eAAe,CAAC,UAAkB;IAChD,OAAO,UAAU,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACxD,CAAC;AAED,iDAAiD;AACjD,SAAS,cAAc,CAAC,MAA6B;IACnD,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;AAC9E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAA2B;IAC3D,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,YAAY,EAAE,CAAC;YAAC,CAAC,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC,CAAK,mBAAmB;QAClE,IAAI,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC;YAAE,SAAS,CAAO,oBAAoB;QACrE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACd,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,UAAkB,EAClB,OAA8B,EAC9B,cAAuC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAE/C,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC;IAChE,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;IACrF,OAAO,EAAE,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;AACnF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,GAAW,EAAE,UAA8B;IAClF,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;QAAE,OAAO,GAAG,CAAC;IAClD,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,uBAAuB;IAChE,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;AAClD,CAAC"}
|
|
@@ -6,6 +6,8 @@ export interface ListenWithProbeOpts {
|
|
|
6
6
|
host: string;
|
|
7
7
|
/** Max upward probes on EADDRINUSE before rejecting (default 20). */
|
|
8
8
|
maxProbe?: number;
|
|
9
|
+
/** Optional caller-specific availability gate before attempting a bind. */
|
|
10
|
+
portAvailable?: (port: number) => boolean | Promise<boolean>;
|
|
9
11
|
log?: (msg: string) => void;
|
|
10
12
|
}
|
|
11
13
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listen-with-probe.d.ts","sourceRoot":"","sources":["../../src/utils/listen-with-probe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"listen-with-probe.d.ts","sourceRoot":"","sources":["../../src/utils/listen-with-probe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgF1E"}
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
export function listenWithProbe(opts) {
|
|
16
16
|
const { server, host } = opts;
|
|
17
17
|
const maxProbe = opts.maxProbe ?? 20;
|
|
18
|
+
const portAvailable = opts.portAvailable;
|
|
18
19
|
const log = opts.log ?? (() => { });
|
|
19
20
|
return new Promise((resolve, reject) => {
|
|
20
21
|
let port = opts.port;
|
|
@@ -41,15 +42,50 @@ export function listenWithProbe(opts) {
|
|
|
41
42
|
server.on('error', (e) => log(`server error: ${e.message}`));
|
|
42
43
|
resolve(bound);
|
|
43
44
|
};
|
|
45
|
+
const rejectUnavailable = () => {
|
|
46
|
+
const err = new Error(`No usable port found starting at ${opts.port}`);
|
|
47
|
+
err.code = 'EADDRINUSE';
|
|
48
|
+
settled = true;
|
|
49
|
+
cleanup();
|
|
50
|
+
reject(err);
|
|
51
|
+
};
|
|
52
|
+
const tryNext = (reason) => {
|
|
53
|
+
if (attempts >= maxProbe)
|
|
54
|
+
return false;
|
|
55
|
+
attempts++;
|
|
56
|
+
log(`port ${port} ${reason}, trying ${port + 1}`);
|
|
57
|
+
port++;
|
|
58
|
+
setImmediate(attemptListen);
|
|
59
|
+
return true;
|
|
60
|
+
};
|
|
61
|
+
const attemptListen = () => {
|
|
62
|
+
if (settled)
|
|
63
|
+
return;
|
|
64
|
+
if (port !== 0 && portAvailable) {
|
|
65
|
+
Promise.resolve(portAvailable(port)).then((ok) => {
|
|
66
|
+
if (settled)
|
|
67
|
+
return;
|
|
68
|
+
if (!ok) {
|
|
69
|
+
if (!tryNext('unavailable'))
|
|
70
|
+
rejectUnavailable();
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
server.listen(port, host);
|
|
74
|
+
}).catch((err) => {
|
|
75
|
+
if (settled)
|
|
76
|
+
return;
|
|
77
|
+
settled = true;
|
|
78
|
+
cleanup();
|
|
79
|
+
reject(err);
|
|
80
|
+
});
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
server.listen(port, host);
|
|
84
|
+
};
|
|
44
85
|
const onError = (err) => {
|
|
45
86
|
if (settled)
|
|
46
87
|
return;
|
|
47
|
-
if (err.code === 'EADDRINUSE' &&
|
|
48
|
-
attempts++;
|
|
49
|
-
log(`port ${port} in use, trying ${port + 1}`);
|
|
50
|
-
port++;
|
|
51
|
-
setImmediate(() => { if (!settled)
|
|
52
|
-
server.listen(port, host); });
|
|
88
|
+
if (err.code === 'EADDRINUSE' && tryNext('in use')) {
|
|
53
89
|
return;
|
|
54
90
|
}
|
|
55
91
|
settled = true;
|
|
@@ -58,7 +94,7 @@ export function listenWithProbe(opts) {
|
|
|
58
94
|
};
|
|
59
95
|
server.on('listening', onListening);
|
|
60
96
|
server.on('error', onError);
|
|
61
|
-
|
|
97
|
+
attemptListen();
|
|
62
98
|
});
|
|
63
99
|
}
|
|
64
100
|
//# sourceMappingURL=listen-with-probe.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listen-with-probe.js","sourceRoot":"","sources":["../../src/utils/listen-with-probe.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"listen-with-probe.js","sourceRoot":"","sources":["../../src/utils/listen-with-probe.ts"],"names":[],"mappings":"AAcA;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,eAAe,CAAC,IAAyB;IACvD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;IACrC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAc,CAAC,CAAC,CAAC;IAE/C,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7C,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrB,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,0EAA0E;QAC1E,iEAAiE;QACjE,uEAAuE;QACvE,2EAA2E;QAC3E,4DAA4D;QAC5D,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAChD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC,CAAC;QACF,MAAM,WAAW,GAAG,GAAG,EAAE;YACvB,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,OAAO,EAAE,CAAC;YACV,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YAClE,wEAAwE;YACxE,2DAA2D;YAC3D,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,iBAAkB,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACxE,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC;QACF,MAAM,iBAAiB,GAAG,GAAG,EAAE;YAC7B,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,oCAAoC,IAAI,CAAC,IAAI,EAAE,CAA0B,CAAC;YAChG,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC;YACxB,OAAO,GAAG,IAAI,CAAC;YACf,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,CAAC,MAAc,EAAW,EAAE;YAC1C,IAAI,QAAQ,IAAI,QAAQ;gBAAE,OAAO,KAAK,CAAC;YACvC,QAAQ,EAAE,CAAC;YACX,GAAG,CAAC,QAAQ,IAAI,IAAI,MAAM,YAAY,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;YAClD,IAAI,EAAE,CAAC;YACP,YAAY,CAAC,aAAa,CAAC,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QACF,MAAM,aAAa,GAAG,GAAG,EAAE;YACzB,IAAI,OAAO;gBAAE,OAAO;YACpB,IAAI,IAAI,KAAK,CAAC,IAAI,aAAa,EAAE,CAAC;gBAChC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;oBAC/C,IAAI,OAAO;wBAAE,OAAO;oBACpB,IAAI,CAAC,EAAE,EAAE,CAAC;wBACR,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;4BAAE,iBAAiB,EAAE,CAAC;wBACjD,OAAO;oBACT,CAAC;oBACD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC5B,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;oBACf,IAAI,OAAO;wBAAE,OAAO;oBACpB,OAAO,GAAG,IAAI,CAAC;oBACf,OAAO,EAAE,CAAC;oBACV,MAAM,CAAC,GAAG,CAAC,CAAC;gBACd,CAAC,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,CAAC,GAA0B,EAAE,EAAE;YAC7C,IAAI,OAAO;gBAAE,OAAO;YACpB,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACnD,OAAO;YACT,CAAC;YACD,OAAO,GAAG,IAAI,CAAC;YACf,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC;QAEF,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACpC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5B,aAAa,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/worker.js
CHANGED
|
@@ -39,7 +39,7 @@ import { t, setDefaultLocale } from './i18n/index.js';
|
|
|
39
39
|
import { TerminalRenderer } from './utils/terminal-renderer.js';
|
|
40
40
|
import { DEFAULT_RENDER_COLS, DEFAULT_RENDER_ROWS, MAX_RENDER_COLS, MAX_RENDER_ROWS, MIN_RENDER_COLS, MIN_RENDER_ROWS, clamp, resolveRenderDimensions, } from './utils/render-dimensions.js';
|
|
41
41
|
import { createCliAdapterSync, locateOnPath } from './adapters/cli/registry.js';
|
|
42
|
-
import { buildWrappedLaunch } from './setup/cli-selection.js';
|
|
42
|
+
import { buildWrappedLaunch, parseWrapperCli } from './setup/cli-selection.js';
|
|
43
43
|
import { findLaunchedCliPid, scheduleWrapperRealCliPid } from './core/session-discovery.js';
|
|
44
44
|
import { claudeJsonlPathForSession, resolveJsonlFromPid, findOpenClaudeSessionIds, DEFAULT_CLAUDE_DATA_DIR } from './adapters/cli/claude-code.js';
|
|
45
45
|
import { mtrSessionIdForBotmuxSession } from './adapters/cli/mtr.js';
|
|
@@ -131,7 +131,7 @@ function ensureZellijAttachConfig() {
|
|
|
131
131
|
}
|
|
132
132
|
let sessionId = '';
|
|
133
133
|
let lastInitConfig = null;
|
|
134
|
-
const CLI_DISPLAY_NAMES = { 'claude-code': 'Claude', seed: 'Seed', aiden: 'Aiden', coco: 'CoCo', codex: 'Codex', 'codex-app': 'Codex App', cursor: 'Cursor', gemini: 'Gemini', opencode: 'OpenCode', antigravity: 'Antigravity', mtr: 'MTR', hermes: 'Hermes', mira: 'Mira', traex: 'TRAE', pi: 'Pi', copilot: 'Copilot', 'oh-my-pi': 'Oh My Pi' };
|
|
134
|
+
const CLI_DISPLAY_NAMES = { 'claude-code': 'Claude', seed: 'Seed', relay: 'Relay', aiden: 'Aiden', coco: 'CoCo', codex: 'Codex', 'codex-app': 'Codex App', cursor: 'Cursor', gemini: 'Gemini', opencode: 'OpenCode', antigravity: 'Antigravity', mtr: 'MTR', hermes: 'Hermes', mira: 'Mira', traex: 'TRAE', pi: 'Pi', copilot: 'Copilot', 'oh-my-pi': 'Oh My Pi' };
|
|
135
135
|
function cliName() { return CLI_DISPLAY_NAMES[lastInitConfig?.cliId ?? ''] ?? 'CLI'; }
|
|
136
136
|
let isPromptReady = false;
|
|
137
137
|
/** Mutex for async flushPending — prevents concurrent flush loops. */
|
|
@@ -3913,6 +3913,13 @@ function spawnCli(cfg) {
|
|
|
3913
3913
|
// bin 走 PATH 解析),无需 wrapper 脚本、跨系统。aiden x claude 形态会剥掉 aiden 拒收的
|
|
3914
3914
|
// --settings(见 buildWrappedLaunch)。与文件沙盒互斥:沙盒已把命令重写成 bwrap,叠加
|
|
3915
3915
|
// 前缀会破坏隔离,故 sandboxOn 时跳过并告警(网关 + oncall 沙盒本就不是合理组合)。
|
|
3916
|
+
// CJADK_INTERACTIVE is a cjadk-only knob we set on the cjadk wrapper branch
|
|
3917
|
+
// below. Strip any value inherited from the daemon's own env first so a
|
|
3918
|
+
// daemon launched under `cjadk feishu` (which exports it) can't leak it via
|
|
3919
|
+
// the tmux env allowlist into EVERY bot's pane — only the cjadk branch should
|
|
3920
|
+
// ever (re)set it. Harmless for non-cjadk CLIs (they don't read it), but this
|
|
3921
|
+
// keeps the behaviour intentional rather than ambient. (Codex review note.)
|
|
3922
|
+
delete childEnv.CJADK_INTERACTIVE;
|
|
3916
3923
|
if (cfg.wrapperCli && cfg.wrapperCli.trim()) {
|
|
3917
3924
|
if (sandboxOn) {
|
|
3918
3925
|
log(`wrapperCli="${cfg.wrapperCli}" ignored: file sandbox enabled and takes precedence (cannot combine launch prefix with bwrap)`);
|
|
@@ -3923,6 +3930,19 @@ function spawnCli(cfg) {
|
|
|
3923
3930
|
spawnBin = launch.bin;
|
|
3924
3931
|
spawnArgs = launch.args;
|
|
3925
3932
|
log(`Launch prefix: spawning ${spawnBin} ${spawnArgs.slice(0, 2).join(' ')} … (cliId=${cfg.cliId})`);
|
|
3933
|
+
// cjadk runs its launched agent in an INTERACTIVE wrapper by default —
|
|
3934
|
+
// a model/session selector at startup plus terminal quirks that fight
|
|
3935
|
+
// botmux's automated input (the selector eats the first prompt; the
|
|
3936
|
+
// pre-render lag fragments multi-line messages; follow-ups can stick in
|
|
3937
|
+
// the input box). cjadk's own botmux integration (`cjadk feishu`, see its
|
|
3938
|
+
// botmux-wrapper-writer) sets CJADK_INTERACTIVE=0 to disable all of that.
|
|
3939
|
+
// We mirror it here so a `cjadk <agent>` wrapperCli is driven the way
|
|
3940
|
+
// cjadk intends — no selector, clean soft-newline input. Keyed on the
|
|
3941
|
+
// wrapper's leading token so only cjadk launches are affected.
|
|
3942
|
+
if (parseWrapperCli(cfg.wrapperCli)[0] === 'cjadk') {
|
|
3943
|
+
childEnv.CJADK_INTERACTIVE = '0';
|
|
3944
|
+
log('cjadk launcher: set CJADK_INTERACTIVE=0 (non-interactive, mirrors cjadk feishu wrapper)');
|
|
3945
|
+
}
|
|
3926
3946
|
}
|
|
3927
3947
|
}
|
|
3928
3948
|
}
|