/** * `botmux setup ` 非 TUI(脚本化)模式:argv 解析 + 纯映射。 * * 动机:给 coding agent / 脚本一个**字段级**的稳定接口。以前脚本化 setup 只能 * 对交互问答「管道喂数字」,TUI 问题序列一变(比如新增一问)答案就静默错位; * flag 形式不依赖问题顺序,天然稳定。 * * 本模块保持纯函数(不碰 fs / 网络 / process),可单测;目录存在性校验、 * 凭证校验(tenant_access_token)、bots.json 读写等副作用留在 cli.ts 执行层。 */ import { type BotConfigEditInput } from './bot-config-editor.js'; /** add / edit 共用的 bot 字段 flag(原始字符串,'-' 表示清空,语义同 TUI 编辑)。 */ export interface SetupBotFlags { name?: string; /** 仅 add --create-app:飞书开放平台应用名称;留空由执行层生成 botmux-N。 */ appName?: string; appId?: string; appSecret?: string; /** CLI 选择键:cliId 或网关键(aiden-x-claude / ttadk-x-codex …),见 CLI_SELECT_OPTIONS。 */ cli?: string; cliPath?: string; /** JSON CliRuntimeConfig, or '-' to clear it. */ cliRuntime?: string; wrapperCli?: string; model?: string; backend?: string; /** 仓库选择卡片的扫描根目录(逗号分隔多个)。 */ workingDir?: string; /** 固定默认目录:新话题直接在此目录启动、不弹仓库选择卡片;'-' 清空回弹卡模式。 */ defaultWorkingDir?: string; allowedUsers?: string; allowedChatGroups?: string; showInTeam?: string; /** 仅 add:feishu | lark。 */ brand?: string; } export type SetupCommand = { action: 'help'; } | { action: 'list'; json: boolean; } | { action: 'add'; json: boolean; createApp: boolean; compatibilityMode: boolean; switchAccount: boolean; openPlatformAuto: boolean; flags: SetupBotFlags; } | { action: 'configure'; json: boolean; selector: string; switchAccount: boolean; } | { action: 'edit'; json: boolean; selector: string; flags: SetupBotFlags; } | { action: 'remove'; json: boolean; selector: string; yes: boolean; }; /** * `botmux setup` 后面第一个参数是否触发脚本化模式:任何**非 flag** 首参数都算 * (未知子命令由 parseSetupCommand 报错,而不是掉进交互 TUI 把脚本挂住)。 * 空参数 / 纯 flag(如 --no-open-platform-auto)仍走原交互 TUI,保持向后兼容。 */ export declare function isScriptedSetupInvocation(argv: string[]): boolean; export declare const SETUP_CLI_USAGE = "botmux setup \u2014 \u811A\u672C\u5316\uFF08\u975E TUI\uFF09\u7528\u6CD5\n\n botmux setup list [--json]\n \u5217\u51FA\u5DF2\u914D\u7F6E\u673A\u5668\u4EBA\uFF08--json \u8F93\u51FA\u5B8C\u6574\u5B57\u6BB5\uFF0Csecret \u8131\u654F\uFF09\u3002\n\n botmux setup add --create-app --allowed-users [--app-name ] [\u9009\u9879]\n \u9996\u6B21\u626B\u7801\u521B\u5EFA\u98DE\u4E66\u5E94\u7528\uFF1B\u540E\u7EED\u6709\u6548\u767B\u5F55\u6001\u4E0B\u786E\u8BA4\u8D26\u53F7/\u4F01\u4E1A\u540E\u514D\u626B\u7801\u6DFB\u52A0\u3002\n --app-name \u7559\u7A7A\u81EA\u52A8\u4F7F\u7528 botmux-N\uFF1B\u66F4\u6362\u8D26\u53F7\u7528 --switch-account\u3002\n owner \u8BF7\u7528\u5B8C\u6574\u90AE\u7BB1\u3001\u624B\u673A\u53F7\u6216 union_id on_xxx\uFF1B\u65B0\u5E94\u7528\u5C1A\u4E0D\u5B58\u5728\uFF0C\u4E0D\u80FD\n \u9884\u5148\u62E5\u6709\u53EF\u7528\u7684 open_id ou_xxx\u3002managed Agent \u82E5\u4F20\u5165 daemon \u6CE8\u5165\u7684\n \u5F53\u524D session owner\uFF0C\u4F1A\u7531\u6765\u6E90\u5E94\u7528\u8F6C\u6362\u4E3A on_\u3002\n \u9ED8\u8BA4\u7EE7\u7EED\u5B8C\u6210\u6743\u9650\u3001\u957F\u8FDE\u63A5\u4E8B\u4EF6\u3001redirect \u4E0E\u53D1\u7248\uFF1B\u53EF\u7528\n --no-open-platform-auto \u8DF3\u8FC7\u540E\u534A\u6BB5\u81EA\u52A8\u914D\u7F6E\u3002\n\n botmux setup add --create-app --compatibility-mode --allowed-users [\u9009\u9879]\n \u663E\u5F0F\u4F7F\u7528\u5B98\u65B9 SDK \u517C\u5BB9\u6A21\u5F0F\uFF0C\u53EF\u80FD\u9700\u8981\u989D\u5916\u626B\u7801\u3002\u517C\u5BB9\u6A21\u5F0F\u4E0D\u652F\u6301\n --app-name\uFF0C\u5E94\u7528\u540D\u79F0\u7531\u5E73\u53F0\u51B3\u5B9A\u3002\n\n botmux setup add --app-id --app-secret --allowed-users [\u9009\u9879]\n \u4F7F\u7528\u5DF2\u6709\u51ED\u8BC1\u6DFB\u52A0\u673A\u5668\u4EBA\u3002\u5FC5\u586B\uFF1A--app-id / --app-secret / --allowed-users\u3002\n owner \u53EF\u7528\u5B8C\u6574\u90AE\u7BB1\u3001\u624B\u673A\u53F7\u3001union_id on_xxx\uFF0C\u6216\u8BE5\u5E94\u7528\u81EA\u5DF1\u7B7E\u53D1\u7684\n open_id ou_xxx\uFF1B\u5199\u76D8\u524D\u4F1A\u7528\u51ED\u8BC1\u6821\u9A8C\uFF0C\u5931\u8D25\u4E0D\u5199\u76D8\u3002\n\n botmux setup configure <\u8FDB\u7A0B\u540D|AppID> [--switch-account] [--json]\n \u5BF9\u5DF2\u6DFB\u52A0\u7684\u673A\u5668\u4EBA\u91CD\u8DD1\u5F00\u653E\u5E73\u53F0\u6743\u9650\u3001\u957F\u8FDE\u63A5\u4E8B\u4EF6\u3001redirect \u4E0E\u53D1\u7248\u3002\n \u7528\u4E8E add \u8FD4\u56DE partial \u540E\u7EE7\u7EED\uFF0C\u4E0D\u4F1A\u91CD\u590D\u521B\u5EFA\u5E94\u7528\uFF1B\u6210\u529F\u540E\u81EA\u52A8\u5C1D\u8BD5\u4E0A\u7EBF\u3002\n \u767B\u5F55\u8D26\u53F7\u4E0D\u5BF9\u65F6\u52A0 --switch-account \u660E\u786E\u91CD\u65B0\u626B\u7801\u3002\n\n botmux setup edit <\u8FDB\u7A0B\u540D|AppID> [\u5B57\u6BB5\u9009\u9879...]\n \u6309\u5B57\u6BB5\u4FEE\u6539\u673A\u5668\u4EBA\uFF08\u5982 botmux setup edit botmux-0 --cli codex\uFF09\u3002\n \u81F3\u5C11\u7ED9\u4E00\u4E2A\u5B57\u6BB5\u9009\u9879\uFF1B\u503C\u4F20 - \u8868\u793A\u6E05\u7A7A\u8BE5\u5B57\u6BB5\u3002\n\n botmux setup remove <\u8FDB\u7A0B\u540D|AppID> --yes\n \u5220\u9664\u673A\u5668\u4EBA\uFF08\u975E\u4EA4\u4E92\u5220\u9664\u5FC5\u987B\u663E\u5F0F --yes \u786E\u8BA4\uFF09\u3002\n\n\u5B57\u6BB5\u9009\u9879\uFF08add / edit \u901A\u7528\uFF1Bedit \u4E2D\u672A\u7ED9\u51FA\u7684\u5B57\u6BB5\u4FDD\u6301\u4E0D\u53D8\uFF09\uFF1A\n --name botmux status \u663E\u793A\u540D\uFF08\u8FDB\u7A0B\u540D\u540E\u7F00\uFF09\n --app-name \u65B0\u5EFA\u7684\u98DE\u4E66\u5E94\u7528\u540D\u79F0\uFF08\u4EC5 add --create-app\uFF09\n --app-id \u98DE\u4E66\u5E94\u7528 App ID\uFF08edit \u65F6\u6539\u7ED1\u53E6\u4E00\u4E2A\u5E94\u7528\uFF09\n --app-secret App Secret\n --cli CLI \u9002\u914D\u5668\uFF1AcliId \u6216\u7F51\u5173\u952E\uFF08claude-code / codex /\n aiden-x-claude / ttadk-x-codex \u2026\uFF09\n --cli-path CLI \u53EF\u6267\u884C\u6587\u4EF6\u8DEF\u5F84\u8986\u76D6\n --cli-runtime Codex-compatible runtime \u63CF\u8FF0\uFF1BJSON \u542B id\u3001\n displayName\u3001executable\u3001update\uFF0C\u4F20 - \u6E05\u7A7A\n --wrapper-cli \u901A\u7528\u542F\u52A8\u524D\u7F00\uFF08\u5982 \"aiden x claude\"\uFF09\uFF0C\u8986\u76D6 --cli \u63A8\u5BFC\u503C\n --model CLI \u6A21\u578B\u540D\n --backend \u4F1A\u8BDD\u540E\u7AEF pty | tmux | herdr | zellij | zmx\n traex + herdr \u63D2\u4EF6\u5B89\u88C5\u9700\u5728 Dashboard Settings \u4E2D\u663E\u5F0F\u5F00\u542F\u5E76\u586B\u5199\u53EF\u4FE1 source/ref\n --working-dir \u4ED3\u5E93\u9009\u62E9\u5361\u7247\u7684\u626B\u63CF\u6839\u76EE\u5F55\uFF08\u9017\u53F7\u5206\u9694\u591A\u4E2A\uFF09\n --default-working-dir \u56FA\u5B9A\u9ED8\u8BA4\u76EE\u5F55\uFF1A\u65B0\u8BDD\u9898\u76F4\u63A5\u5728\u6B64\u76EE\u5F55\u542F\u52A8\u3001\u4E0D\u5F39\u4ED3\u5E93\n \u9009\u62E9\u5361\u7247\uFF1B\u4F20 - \u6E05\u7A7A\u3001\u56DE\u5230\u5F39\u5361\u6A21\u5F0F\n --allowed-users \u7BA1\u7406\u5458\u540D\u5355\uFF08\u63A8\u8350\u5B8C\u6574\u90AE\u7BB1 / \u624B\u673A\u53F7 / on_xxx\uFF1B\n ou_xxx \u4EC5\u9650\u5DF2\u6709\u76EE\u6807\u5E94\u7528\u81EA\u8EAB\uFF0C\u52FF\u8DE8 Bot \u590D\u5236\uFF09\n --allowed-chat-groups \u53EF\u5BF9\u8BDD\u7FA4 chat_id\uFF08oc_xxx\uFF0C\u9017\u53F7\u5206\u9694\uFF09\n --show-in-team \u5E73\u53F0\u56E2\u961F\u9875\u662F\u5426\u5C55\u793A\uFF08\u9ED8\u8BA4 true\uFF09\n --brand \u79DF\u6237\u7C7B\u578B\uFF08\u4EC5 add\uFF09\n\n\u901A\u7528\u9009\u9879\uFF1A\n --json \u8F93\u51FA\u673A\u5668\u53EF\u8BFB JSON\uFF08\u542B ok / error \u5B57\u6BB5\uFF09\n --create-app add \u65F6\u626B\u7801\u521B\u5EFA\u5E94\u7528\uFF0C\u4E0D\u518D\u8981\u6C42 --app-id/--app-secret\n --compatibility-mode \u663E\u5F0F\u4F7F\u7528 SDK \u517C\u5BB9\u6A21\u5F0F\uFF08\u53EF\u80FD\u9700\u8981\u989D\u5916\u626B\u7801\uFF09\n --switch-account add --create-app / configure \u65F6\u91CD\u65B0\u626B\u7801\u5E76\u8986\u76D6\u767B\u5F55\u6001\n --open-platform-auto add \u6210\u529F\u540E\u6267\u884C\u5F00\u653E\u5E73\u53F0\u81EA\u52A8\u914D\u7F6E\uFF08\u9ED8\u8BA4\u8DF3\u8FC7\uFF1B\n --create-app \u65F6\u9ED8\u8BA4\u5F00\u542F\uFF09\n --no-open-platform-auto \u8DF3\u8FC7\u5F00\u653E\u5E73\u53F0\u6743\u9650/\u53D1\u7248\u81EA\u52A8\u914D\u7F6E\n"; /** 解析 `botmux setup` 的脚本化子命令 argv。非法输入抛 Error(message 面向用户)。 */ export declare function parseSetupCommand(argv: string[]): SetupCommand; /** * add flags → 可落盘 bot 对象(纯映射,不做目录存在性 / 凭证校验)。 * 必填缺失、CLI 选择键非法、owner 缺失等一律抛 Error。 */ export declare function buildBotFromAddFlags(flags: SetupBotFlags): Record; /** * edit flags → BotConfigEditInput(纯映射)。--cli 走 resolveCliSelection: * 选普通 CLI 会清掉旧 wrapperCli(与 TUI 一致),显式 --wrapper-cli 再覆盖。 */ export declare function editInputFromFlags(flags: SetupBotFlags): BotConfigEditInput; /** 合法 --cli 取值(报错提示用)。 */ export declare function cliSelectionKeys(): string[]; /** list --json 输出前的 secret 脱敏(CLI 输出可能被贴进聊天/日志)。 */ export declare function maskAppSecret(secret: unknown): string; //# sourceMappingURL=setup-args.d.ts.map