botmux 2.71.5 → 2.72.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/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +7 -83
- package/dist/cli.js.map +1 -1
- package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
- package/dist/core/dashboard-ipc-server.js +134 -2
- package/dist/core/dashboard-ipc-server.js.map +1 -1
- package/dist/core/dashboard-rows.d.ts +4 -0
- package/dist/core/dashboard-rows.d.ts.map +1 -1
- package/dist/core/dashboard-rows.js +4 -0
- package/dist/core/dashboard-rows.js.map +1 -1
- package/dist/core/session-board.d.ts +9 -0
- package/dist/core/session-board.d.ts.map +1 -0
- package/dist/core/session-board.js +24 -0
- package/dist/core/session-board.js.map +1 -0
- package/dist/dashboard/federated-group-core.d.ts.map +1 -1
- package/dist/dashboard/federated-group-core.js +5 -0
- package/dist/dashboard/federated-group-core.js.map +1 -1
- package/dist/dashboard/federation-api.d.ts.map +1 -1
- package/dist/dashboard/federation-api.js +70 -1
- package/dist/dashboard/federation-api.js.map +1 -1
- package/dist/dashboard/federation-spoke-api.d.ts +16 -2
- package/dist/dashboard/federation-spoke-api.d.ts.map +1 -1
- package/dist/dashboard/federation-spoke-api.js +96 -3
- package/dist/dashboard/federation-spoke-api.js.map +1 -1
- package/dist/dashboard/web/app.d.ts.map +1 -1
- package/dist/dashboard/web/app.js +52 -0
- package/dist/dashboard/web/app.js.map +1 -1
- package/dist/dashboard/web/i18n.d.ts.map +1 -1
- package/dist/dashboard/web/i18n.js +64 -0
- package/dist/dashboard/web/i18n.js.map +1 -1
- package/dist/dashboard/web/kanban-model.d.ts +19 -0
- package/dist/dashboard/web/kanban-model.d.ts.map +1 -0
- package/dist/dashboard/web/kanban-model.js +40 -0
- package/dist/dashboard/web/kanban-model.js.map +1 -0
- package/dist/dashboard/web/preferences.d.ts +12 -1
- package/dist/dashboard/web/preferences.d.ts.map +1 -1
- package/dist/dashboard/web/preferences.js +32 -1
- package/dist/dashboard/web/preferences.js.map +1 -1
- package/dist/dashboard/web/sessions.d.ts.map +1 -1
- package/dist/dashboard/web/sessions.js +1059 -10
- package/dist/dashboard/web/sessions.js.map +1 -1
- package/dist/dashboard-web/app.js +519 -433
- package/dist/dashboard-web/index.html +3 -0
- package/dist/dashboard-web/style.css +692 -1
- package/dist/dashboard.js +72 -3
- package/dist/dashboard.js.map +1 -1
- package/dist/im/lark/client.d.ts +8 -0
- package/dist/im/lark/client.d.ts.map +1 -1
- package/dist/im/lark/client.js +32 -0
- package/dist/im/lark/client.js.map +1 -1
- package/dist/services/team-board-store.d.ts +33 -0
- package/dist/services/team-board-store.d.ts.map +1 -0
- package/dist/services/team-board-store.js +88 -0
- package/dist/services/team-board-store.js.map +1 -0
- package/dist/services/team-groups-store.d.ts +8 -0
- package/dist/services/team-groups-store.d.ts.map +1 -0
- package/dist/services/team-groups-store.js +31 -0
- package/dist/services/team-groups-store.js.map +1 -0
- package/dist/setup/bot-config-editor.d.ts +3 -2
- package/dist/setup/bot-config-editor.d.ts.map +1 -1
- package/dist/setup/bot-config-editor.js +1 -2
- package/dist/setup/bot-config-editor.js.map +1 -1
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AA4wIA;;;;;;;;;;;GAWG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACvC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,qBAAqB,EAAE,SAAS,CAAC,EAC9F,KAAK,EAAE,MAAM,EACb,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,2BAA2B,EAAE,UAAU,GAAG,IAAI,CAAC,GACzF,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA8F7B"}
|
package/dist/cli.js
CHANGED
|
@@ -35,7 +35,6 @@ import { tmuxEnv } from './setup/ensure-tmux.js';
|
|
|
35
35
|
import { writeBotsJsonAtomic as writeBotsAtomic } from './setup/bots-store.js';
|
|
36
36
|
import { applyBotConfigEdits, assertUniqueBotProcessNames, botProcessName, normalizeBotConfig, parseBotConfigsJson, parseBotSelection, removeBotConfig, resolveCliId, assertOwnerWhenChatGroups, findInvalidAllowedUserEntries, hasOwnerEntry, } from './setup/bot-config-editor.js';
|
|
37
37
|
import { buildPreset, serializePreset, presetFilename } from './setup/agent-preset.js';
|
|
38
|
-
import { createCliAdapterSync } from './adapters/cli/registry.js';
|
|
39
38
|
import { logger } from './utils/logger.js';
|
|
40
39
|
import { invalidWorkingDirs } from './utils/working-dir.js';
|
|
41
40
|
import { firstPositional } from './cli/arg-utils.js';
|
|
@@ -297,63 +296,6 @@ function printInputHelp(title, lines) {
|
|
|
297
296
|
console.log(` ${line}`);
|
|
298
297
|
}
|
|
299
298
|
}
|
|
300
|
-
/**
|
|
301
|
-
* 读取指定 CLI 适配器声明的候选 model 列表 —— 不支持 model 配置的 CLI(aiden/
|
|
302
|
-
* antigravity/mtr 等没声明 modelChoices)返回 null,promptModel 据此整段
|
|
303
|
-
* 跳过提问。适配器解析失败也按"不支持"处理,避免在 setup 中冒出陌生堆栈。
|
|
304
|
-
*/
|
|
305
|
-
function cliModelChoices(cliId) {
|
|
306
|
-
try {
|
|
307
|
-
const adapter = createCliAdapterSync(cliId);
|
|
308
|
-
return adapter.modelChoices && adapter.modelChoices.length > 0
|
|
309
|
-
? adapter.modelChoices
|
|
310
|
-
: null;
|
|
311
|
-
}
|
|
312
|
-
catch {
|
|
313
|
-
return null;
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
/**
|
|
317
|
-
* 询问"指定 CLI 用哪个 model"。
|
|
318
|
-
* - cliId 对应的 adapter 没声明 modelChoices → return undefined(跳过提问)
|
|
319
|
-
* - 用户输入序号 → 取候选列表对应项
|
|
320
|
-
* - 输入空 + 提供 current → 保留当前值(current 透传出去)
|
|
321
|
-
* - 输入空 + 无 current → return undefined(用 CLI 默认)
|
|
322
|
-
* - 输入 `-` → return null(语义:清空,调用方据此 delete model 字段)
|
|
323
|
-
* - 输入自由文本 → 原样返回
|
|
324
|
-
*/
|
|
325
|
-
async function promptModel(rl, cliId, current) {
|
|
326
|
-
const choices = cliModelChoices(cliId);
|
|
327
|
-
if (!choices)
|
|
328
|
-
return undefined;
|
|
329
|
-
const numbered = choices.map((m, i) => `${i + 1}) ${m}`).join(' ');
|
|
330
|
-
printInputHelp(`CLI Model(${cliId})`, [
|
|
331
|
-
'可选。在 spawn CLI 时注入 model 参数;同一 CLI 配多个 bot 可以跑不同 model。',
|
|
332
|
-
`候选: ${numbered} ${choices.length + 1}) Other(自定义输入)`,
|
|
333
|
-
current
|
|
334
|
-
? '留空保留当前值;输入 - 清空(回到 CLI 默认)。'
|
|
335
|
-
: '留空 = 不设置(用 CLI 默认)。',
|
|
336
|
-
]);
|
|
337
|
-
const label = current ? formatOptionalValue(current) : '未设置';
|
|
338
|
-
const raw = (await ask(rl, `CLI Model [${label}]: `)).trim();
|
|
339
|
-
if (!raw)
|
|
340
|
-
return current ?? undefined;
|
|
341
|
-
if (raw === '-')
|
|
342
|
-
return null;
|
|
343
|
-
const numIdx = Number(raw);
|
|
344
|
-
if (Number.isInteger(numIdx) && numIdx >= 1 && numIdx <= choices.length) {
|
|
345
|
-
return choices[numIdx - 1];
|
|
346
|
-
}
|
|
347
|
-
if (Number.isInteger(numIdx) && numIdx === choices.length + 1) {
|
|
348
|
-
// 选了 Other,进一步要 free-form
|
|
349
|
-
const customRaw = (await ask(rl, '请输入 model 名: ')).trim();
|
|
350
|
-
if (!customRaw)
|
|
351
|
-
return current ?? undefined;
|
|
352
|
-
return customRaw;
|
|
353
|
-
}
|
|
354
|
-
// 直接当成自由输入
|
|
355
|
-
return raw;
|
|
356
|
-
}
|
|
357
299
|
// Thin wrapper around setup/bots-store.writeBotsJsonAtomic so call-sites keep
|
|
358
300
|
// the same name without passing BOTS_JSON_FILE explicitly each time.
|
|
359
301
|
function writeBotsJsonAtomic(bots) {
|
|
@@ -630,7 +572,6 @@ async function promptBotConfig(rl) {
|
|
|
630
572
|
return null;
|
|
631
573
|
}
|
|
632
574
|
const workingDir = await ask(rl, '默认工作目录 [~]: ');
|
|
633
|
-
const modelChoice = await promptModel(rl, cliId);
|
|
634
575
|
const bot = {
|
|
635
576
|
larkAppId: creds.appId,
|
|
636
577
|
larkAppSecret: creds.appSecret,
|
|
@@ -645,10 +586,8 @@ async function promptBotConfig(rl) {
|
|
|
645
586
|
if (creds.brand === 'lark') {
|
|
646
587
|
bot.brand = 'lark';
|
|
647
588
|
}
|
|
648
|
-
//
|
|
649
|
-
|
|
650
|
-
bot.model = modelChoice;
|
|
651
|
-
}
|
|
589
|
+
// setup 不再询问 model(用户常选到无权限的 model,setup 完一发消息就 spawn
|
|
590
|
+
// 报错,排查成本高)。需要指定 model 走 /config 卡片或手动编辑 bots.json。
|
|
652
591
|
// 扫码场景默认填扫码人自己 (registerApp 返回里有 open_id), 天然就是 owner.
|
|
653
592
|
// 优先解析成 union_id (on_,跨应用稳定);失败则 fallback 到 open_id (ou_)。
|
|
654
593
|
// 手动 fallback 场景没 open_id —— 必须显式指定 owner, 否则配置无 owner:
|
|
@@ -723,29 +662,14 @@ async function promptEditBotConfig(rl, bot) {
|
|
|
723
662
|
'留空保留当前值;输入 - 清空覆盖,回到 PATH 查 cliId 对应的默认二进制。',
|
|
724
663
|
]);
|
|
725
664
|
input.cliPathOverride = await ask(rl, `CLI 可执行文件路径覆盖 [${formatOptionalValue(bot.cliPathOverride)}]: `);
|
|
726
|
-
//
|
|
727
|
-
//
|
|
728
|
-
//
|
|
729
|
-
// string = 设值
|
|
730
|
-
// 用本轮编辑后的 cliId 而非 bot.cliId —— 用户可能刚换了 CLI。
|
|
731
|
-
const effectiveCliIdForModel = (resolveCliId(input.cliChoice) ?? bot.cliId ?? 'claude-code');
|
|
665
|
+
// setup 不再询问 model(同 promptBotConfig 的理由)。但切换 CLI 时旧 model
|
|
666
|
+
// 是上一个 CLI 的值,套到新 CLI 上没意义甚至直接 spawn 报错,必须强制清空;
|
|
667
|
+
// 未换 CLI 时 input.model 留 undefined,applyBotConfigEdits 保持原值不动。
|
|
732
668
|
const cliChanged = !!resolveCliId(input.cliChoice) && resolveCliId(input.cliChoice) !== bot.cliId;
|
|
733
|
-
if (cliChanged &&
|
|
734
|
-
|
|
735
|
-
// 即使原本配了 model 也要主动清空,避免 bots.json 里残留陈旧字段——
|
|
736
|
-
// 否则用户后面再换回支持 model 的 adapter 一路回车时,旧 model
|
|
737
|
-
// 会被当作"当前值"保留下来误套到新 CLI 上。
|
|
738
|
-
console.log('\n⚠️ 新 CLI 不支持 --model 参数,已清空原 model 字段。');
|
|
669
|
+
if (cliChanged && bot.model) {
|
|
670
|
+
console.log('\n⚠️ 已切换 CLI,原 model 字段已清空(如需指定 model 请用 /config 卡片或编辑 bots.json)。');
|
|
739
671
|
input.model = null;
|
|
740
672
|
}
|
|
741
|
-
else {
|
|
742
|
-
const promptCurrent = cliChanged ? undefined : (typeof bot.model === 'string' ? bot.model : undefined);
|
|
743
|
-
const result = await promptModel(rl, effectiveCliIdForModel, promptCurrent);
|
|
744
|
-
// 切换 CLI 时哪怕用户留空也要清掉旧 model —— 旧值是上一个 CLI 的 model,
|
|
745
|
-
// 套到新 CLI 上没意义。result === undefined 在"未变 CLI"分支等价于"保留旧值",
|
|
746
|
-
// 但在 cliChanged 分支等价于"用户没指定,回到新 CLI 默认",必须 force null。
|
|
747
|
-
input.model = cliChanged && result === undefined ? null : result;
|
|
748
|
-
}
|
|
749
673
|
printInputHelp('会话后端 backendType', [
|
|
750
674
|
'可选。pty 更轻量;tmux 支持 adopt 和 Web Terminal 附着;herdr 支持托管持久会话;zellij 为实验后端(需 zellij >= 0.44)。',
|
|
751
675
|
'留空保留当前值;输入 - 回到自动检测;接受 pty / tmux / herdr / zellij。',
|