botmux 2.81.1 → 2.82.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/backend/tmux-backend.d.ts +30 -6
- package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
- package/dist/adapters/backend/tmux-backend.js +40 -6
- package/dist/adapters/backend/tmux-backend.js.map +1 -1
- package/dist/adapters/backend/zellij-backend.d.ts +11 -0
- package/dist/adapters/backend/zellij-backend.d.ts.map +1 -1
- package/dist/adapters/backend/zellij-backend.js +16 -0
- package/dist/adapters/backend/zellij-backend.js.map +1 -1
- package/dist/adapters/cli/relay.d.ts +16 -22
- package/dist/adapters/cli/relay.d.ts.map +1 -1
- package/dist/adapters/cli/relay.js +27 -42
- package/dist/adapters/cli/relay.js.map +1 -1
- package/dist/adapters/cli/seed.d.ts.map +1 -1
- package/dist/adapters/cli/seed.js +4 -1
- package/dist/adapters/cli/seed.js.map +1 -1
- package/dist/adapters/cli/traex.d.ts.map +1 -1
- package/dist/adapters/cli/traex.js +4 -1
- package/dist/adapters/cli/traex.js.map +1 -1
- package/dist/bot-registry.d.ts +12 -0
- package/dist/bot-registry.d.ts.map +1 -1
- package/dist/bot-registry.js +5 -0
- package/dist/bot-registry.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +1 -84
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +17 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +31 -0
- package/dist/config.js.map +1 -1
- package/dist/core/closed-session-card.d.ts.map +1 -1
- package/dist/core/closed-session-card.js +3 -1
- package/dist/core/closed-session-card.js.map +1 -1
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +19 -6
- package/dist/core/command-handler.js.map +1 -1
- package/dist/core/cost-calculator.js +2 -2
- package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
- package/dist/core/dashboard-ipc-server.js +47 -1
- package/dist/core/dashboard-ipc-server.js.map +1 -1
- package/dist/core/idle-worker-sweeper.d.ts +30 -4
- package/dist/core/idle-worker-sweeper.d.ts.map +1 -1
- package/dist/core/idle-worker-sweeper.js +32 -12
- package/dist/core/idle-worker-sweeper.js.map +1 -1
- package/dist/core/persistent-backend.d.ts +12 -0
- package/dist/core/persistent-backend.d.ts.map +1 -1
- package/dist/core/persistent-backend.js +18 -0
- package/dist/core/persistent-backend.js.map +1 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +37 -4
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +18 -1
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +7 -3
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults.js +100 -1
- package/dist/dashboard/web/bot-defaults.js.map +1 -1
- package/dist/dashboard/web/bot-onboarding.d.ts.map +1 -1
- package/dist/dashboard/web/bot-onboarding.js +61 -2
- package/dist/dashboard/web/bot-onboarding.js.map +1 -1
- package/dist/dashboard/web/i18n.d.ts.map +1 -1
- package/dist/dashboard/web/i18n.js +22 -0
- package/dist/dashboard/web/i18n.js.map +1 -1
- package/dist/dashboard-web/app.js +371 -353
- package/dist/dashboard.js +34 -2
- package/dist/dashboard.js.map +1 -1
- package/dist/global-config.d.ts +0 -7
- package/dist/global-config.d.ts.map +1 -1
- package/dist/global-config.js +0 -21
- package/dist/global-config.js.map +1 -1
- package/dist/i18n/en.js +2 -2
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.js +2 -2
- package/dist/i18n/zh.js.map +1 -1
- package/dist/im/lark/card-handler.d.ts.map +1 -1
- package/dist/im/lark/card-handler.js +9 -1
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/services/bot-config-store.d.ts +4 -4
- package/dist/services/bot-config-store.d.ts.map +1 -1
- package/dist/services/bot-config-store.js +5 -0
- package/dist/services/bot-config-store.js.map +1 -1
- package/dist/services/git-worktree.d.ts +19 -4
- package/dist/services/git-worktree.d.ts.map +1 -1
- package/dist/services/git-worktree.js +47 -2
- package/dist/services/git-worktree.js.map +1 -1
- package/dist/services/worktree-slug-ai.d.ts +3 -0
- package/dist/services/worktree-slug-ai.d.ts.map +1 -0
- package/dist/services/worktree-slug-ai.js +80 -0
- package/dist/services/worktree-slug-ai.js.map +1 -0
- package/dist/setup/cli-selection.d.ts +33 -4
- package/dist/setup/cli-selection.d.ts.map +1 -1
- package/dist/setup/cli-selection.js +101 -4
- package/dist/setup/cli-selection.js.map +1 -1
- package/dist/skills/definitions.d.ts.map +1 -1
- package/dist/skills/definitions.js +4 -25
- package/dist/skills/definitions.js.map +1 -1
- package/dist/types.d.ts +10 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/worker.js +26 -5
- package/dist/worker.js.map +1 -1
- package/package.json +1 -1
- package/dist/core/worker-budget.d.ts +0 -19
- package/dist/core/worker-budget.d.ts.map +0 -1
- package/dist/core/worker-budget.js +0 -50
- package/dist/core/worker-budget.js.map +0 -1
|
@@ -7,11 +7,28 @@ export interface WorktreeCreation {
|
|
|
7
7
|
* when an existing local branch was checked out instead. */
|
|
8
8
|
baseRef: string;
|
|
9
9
|
}
|
|
10
|
+
export interface CreateRepoWorktreeOptions {
|
|
11
|
+
/** Explicit branch to check out/create. Takes precedence over `slug`. */
|
|
12
|
+
branch?: string;
|
|
13
|
+
/** Semantic auto-name seed; creates `wt/<slug>` and dir `<repo>-wt-<slug>`. */
|
|
14
|
+
slug?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Build a git/filesystem-safe semantic slug from a session title or the first
|
|
18
|
+
* prompt. Keep it ASCII so branch and directory names are portable. When the
|
|
19
|
+
* source text has no latin/digit tokens (for example, all-CJK text), return
|
|
20
|
+
* `undefined` so the caller falls back to the sequential `wt/N` naming rather
|
|
21
|
+
* than an opaque hash.
|
|
22
|
+
*/
|
|
23
|
+
export declare function slugFromWorktreeText(text: string | undefined | null): string | undefined;
|
|
10
24
|
/**
|
|
11
25
|
* Create a linked worktree for `repoPath`, as a sibling of the repo's MAIN
|
|
12
26
|
* checkout (a linked-worktree input is resolved back to the main one first).
|
|
13
27
|
*
|
|
14
|
-
* - No `branch` given → auto-pick `wt
|
|
28
|
+
* - No `branch` given, `slug` yields a latin slug → auto-pick `wt/<slug>`
|
|
29
|
+
* (or `-2` etc.), dir `<repo>-wt-<slug>`.
|
|
30
|
+
* - No `branch`/`slug` (or a `slug` with no latin/digit tokens, e.g. all-CJK)
|
|
31
|
+
* → auto-pick `wt/N` (first free N), dir `<repo>-wt-N`.
|
|
15
32
|
* - `branch` given and exists locally → check it out into the worktree.
|
|
16
33
|
* - `branch` given and exists remotely → create a local tracking branch from it.
|
|
17
34
|
* - `branch` given and new → create it from the remote default branch.
|
|
@@ -19,7 +36,5 @@ export interface WorktreeCreation {
|
|
|
19
36
|
* The base ref is fetched first so the worktree starts from the remote's
|
|
20
37
|
* latest state; fetch failure degrades to the local (possibly stale) ref.
|
|
21
38
|
*/
|
|
22
|
-
export declare function createRepoWorktree(repoPath: string, opts?:
|
|
23
|
-
branch?: string;
|
|
24
|
-
}): Promise<WorktreeCreation>;
|
|
39
|
+
export declare function createRepoWorktree(repoPath: string, opts?: CreateRepoWorktreeOptions): Promise<WorktreeCreation>;
|
|
25
40
|
//# sourceMappingURL=git-worktree.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-worktree.d.ts","sourceRoot":"","sources":["../../src/services/git-worktree.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf;iEAC6D;IAC7D,OAAO,EAAE,MAAM,CAAC;CACjB;
|
|
1
|
+
{"version":3,"file":"git-worktree.d.ts","sourceRoot":"","sources":["../../src/services/git-worktree.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf;iEAC6D;IAC7D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACxC,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AA6CD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAaxF;AAWD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,yBAA8B,GACnC,OAAO,CAAC,gBAAgB,CAAC,CA8E3B"}
|
|
@@ -52,7 +52,29 @@ async function resolveBaseRef(repo) {
|
|
|
52
52
|
}
|
|
53
53
|
/** Branch names may contain `/` etc. — flatten to a filesystem-safe suffix. */
|
|
54
54
|
function dirSuffixForBranch(branch) {
|
|
55
|
-
return branch.replace(/[^A-Za-z0-9._-]+/g, '-').replace(/^-+|-+$/g, '');
|
|
55
|
+
return branch.replace(/[^A-Za-z0-9._-]+/g, '-').replace(/^-+|-+$/g, '') || 'branch';
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Build a git/filesystem-safe semantic slug from a session title or the first
|
|
59
|
+
* prompt. Keep it ASCII so branch and directory names are portable. When the
|
|
60
|
+
* source text has no latin/digit tokens (for example, all-CJK text), return
|
|
61
|
+
* `undefined` so the caller falls back to the sequential `wt/N` naming rather
|
|
62
|
+
* than an opaque hash.
|
|
63
|
+
*/
|
|
64
|
+
export function slugFromWorktreeText(text) {
|
|
65
|
+
const raw = text?.trim();
|
|
66
|
+
if (!raw)
|
|
67
|
+
return undefined;
|
|
68
|
+
const slug = raw
|
|
69
|
+
.normalize('NFKD')
|
|
70
|
+
.replace(/[\u0300-\u036f]/g, '')
|
|
71
|
+
.toLowerCase()
|
|
72
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
73
|
+
.replace(/-{2,}/g, '-')
|
|
74
|
+
.replace(/^-+|-+$/g, '')
|
|
75
|
+
.slice(0, 48)
|
|
76
|
+
.replace(/-+$/g, '');
|
|
77
|
+
return slug || undefined;
|
|
56
78
|
}
|
|
57
79
|
/** A linked worktree resolves to its repo's MAIN checkout (entry 0 of
|
|
58
80
|
* `git worktree list`), so sibling placement and `<repo>-…` naming follow
|
|
@@ -66,7 +88,10 @@ async function resolveMainWorktree(dir) {
|
|
|
66
88
|
* Create a linked worktree for `repoPath`, as a sibling of the repo's MAIN
|
|
67
89
|
* checkout (a linked-worktree input is resolved back to the main one first).
|
|
68
90
|
*
|
|
69
|
-
* - No `branch` given → auto-pick `wt
|
|
91
|
+
* - No `branch` given, `slug` yields a latin slug → auto-pick `wt/<slug>`
|
|
92
|
+
* (or `-2` etc.), dir `<repo>-wt-<slug>`.
|
|
93
|
+
* - No `branch`/`slug` (or a `slug` with no latin/digit tokens, e.g. all-CJK)
|
|
94
|
+
* → auto-pick `wt/N` (first free N), dir `<repo>-wt-N`.
|
|
70
95
|
* - `branch` given and exists locally → check it out into the worktree.
|
|
71
96
|
* - `branch` given and exists remotely → create a local tracking branch from it.
|
|
72
97
|
* - `branch` given and new → create it from the remote default branch.
|
|
@@ -92,11 +117,31 @@ export async function createRepoWorktree(repoPath, opts = {}) {
|
|
|
92
117
|
const repoBase = basename(repo);
|
|
93
118
|
let branch = opts.branch?.trim() ?? '';
|
|
94
119
|
let wtPath;
|
|
120
|
+
// Sanitize the auto-name seed up front: a slug with no latin/digit tokens
|
|
121
|
+
// (e.g. all-CJK) collapses to nothing → fall through to the `wt/N` path
|
|
122
|
+
// rather than throwing or emitting an opaque hash.
|
|
123
|
+
const slug = branch ? undefined : slugFromWorktreeText(opts.slug);
|
|
95
124
|
if (branch) {
|
|
96
125
|
wtPath = join(parent, `${repoBase}-${dirSuffixForBranch(branch)}`);
|
|
97
126
|
if (existsSync(wtPath))
|
|
98
127
|
throw new Error(`worktree target already exists: ${wtPath}`);
|
|
99
128
|
}
|
|
129
|
+
else if (slug) {
|
|
130
|
+
for (let n = 1;; n++) {
|
|
131
|
+
if (n > 1000)
|
|
132
|
+
throw new Error(`no free wt/${slug} slot under 1000`);
|
|
133
|
+
const candidateSlug = n === 1 ? slug : `${slug}-${n}`;
|
|
134
|
+
const candidateBranch = `wt/${candidateSlug}`;
|
|
135
|
+
const candPath = join(parent, `${repoBase}-${dirSuffixForBranch(candidateBranch)}`);
|
|
136
|
+
if (existsSync(candPath) ||
|
|
137
|
+
(await localBranchExists(repo, candidateBranch)) ||
|
|
138
|
+
(await remoteBranchExists(repo, candidateBranch)))
|
|
139
|
+
continue;
|
|
140
|
+
branch = candidateBranch;
|
|
141
|
+
wtPath = candPath;
|
|
142
|
+
break;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
100
145
|
else {
|
|
101
146
|
let n = 1;
|
|
102
147
|
for (;; n++) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-worktree.js","sourceRoot":"","sources":["../../src/services/git-worktree.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"git-worktree.js","sourceRoot":"","sources":["../../src/services/git-worktree.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare function localWorktreeSlugFromContext(title?: string, firstPrompt?: string): string | undefined;
|
|
2
|
+
export declare function worktreeSlugFromContextAI(title?: string, firstPrompt?: string): Promise<string | undefined>;
|
|
3
|
+
//# sourceMappingURL=worktree-slug-ai.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree-slug-ai.d.ts","sourceRoot":"","sources":["../../src/services/worktree-slug-ai.ts"],"names":[],"mappings":"AAmCA,wBAAgB,4BAA4B,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAErG;AAED,wBAAsB,yBAAyB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA0CjH"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { config } from '../config.js';
|
|
2
|
+
import { logger } from '../utils/logger.js';
|
|
3
|
+
import { slugFromWorktreeText } from './git-worktree.js';
|
|
4
|
+
const SYSTEM_PROMPT = `You generate short, stable git branch slugs for coding tasks.
|
|
5
|
+
Return ONLY one lowercase ASCII slug, no markdown, no quotes.
|
|
6
|
+
Rules:
|
|
7
|
+
- Translate Chinese or any non-English task into concise English keywords.
|
|
8
|
+
- Use 2 to 5 words when possible.
|
|
9
|
+
- Use only a-z, 0-9, and hyphen.
|
|
10
|
+
- Start and end with a letter or digit.
|
|
11
|
+
- Max 48 characters.
|
|
12
|
+
- Prefer concrete engineering terms over generic words.
|
|
13
|
+
Examples:
|
|
14
|
+
中文 worktree 命名逻辑 -> worktree-naming-logic
|
|
15
|
+
远端同名分支已存在时 checkout 逻辑 -> remote-branch-checkout
|
|
16
|
+
创建 PR 前自动跑测试 -> pre-pr-test-run
|
|
17
|
+
修复飞书卡片重复点击 -> lark-card-double-click`;
|
|
18
|
+
function firstText(title, firstPrompt) {
|
|
19
|
+
const t = title?.trim();
|
|
20
|
+
if (t)
|
|
21
|
+
return t;
|
|
22
|
+
const p = firstPrompt?.trim();
|
|
23
|
+
return p || undefined;
|
|
24
|
+
}
|
|
25
|
+
function sanitizeModelSlug(raw) {
|
|
26
|
+
return slugFromWorktreeText(raw)?.slice(0, 48).replace(/-+$/g, '') || undefined;
|
|
27
|
+
}
|
|
28
|
+
function aiSlugConfigured() {
|
|
29
|
+
const c = config.worktreeSlugAI;
|
|
30
|
+
return !!(c.enabled && c.baseUrl && c.apiKey && c.model);
|
|
31
|
+
}
|
|
32
|
+
export function localWorktreeSlugFromContext(title, firstPrompt) {
|
|
33
|
+
return slugFromWorktreeText(title) ?? slugFromWorktreeText(firstPrompt);
|
|
34
|
+
}
|
|
35
|
+
export async function worktreeSlugFromContextAI(title, firstPrompt) {
|
|
36
|
+
const fallback = localWorktreeSlugFromContext(title, firstPrompt);
|
|
37
|
+
if (!aiSlugConfigured())
|
|
38
|
+
return fallback;
|
|
39
|
+
const text = firstText(title, firstPrompt);
|
|
40
|
+
if (!text)
|
|
41
|
+
return fallback;
|
|
42
|
+
const c = config.worktreeSlugAI;
|
|
43
|
+
try {
|
|
44
|
+
const url = `${c.baseUrl.replace(/\/+$/, '')}/chat/completions`;
|
|
45
|
+
const resp = await fetch(url, {
|
|
46
|
+
method: 'POST',
|
|
47
|
+
headers: {
|
|
48
|
+
'Content-Type': 'application/json',
|
|
49
|
+
'Authorization': `Bearer ${c.apiKey}`,
|
|
50
|
+
...c.extraHeaders,
|
|
51
|
+
},
|
|
52
|
+
body: JSON.stringify({
|
|
53
|
+
model: c.model,
|
|
54
|
+
messages: [
|
|
55
|
+
{ role: 'system', content: SYSTEM_PROMPT },
|
|
56
|
+
{ role: 'user', content: text.slice(0, 1_000) },
|
|
57
|
+
],
|
|
58
|
+
temperature: 0,
|
|
59
|
+
max_tokens: 32,
|
|
60
|
+
...c.extraBody,
|
|
61
|
+
}),
|
|
62
|
+
signal: AbortSignal.timeout(Math.max(500, c.timeoutMs)),
|
|
63
|
+
});
|
|
64
|
+
if (!resp.ok) {
|
|
65
|
+
const body = await resp.text().catch(() => '');
|
|
66
|
+
throw new Error(`AI slug API ${resp.status}: ${body.slice(0, 200)}`);
|
|
67
|
+
}
|
|
68
|
+
const json = await resp.json();
|
|
69
|
+
const content = json?.choices?.[0]?.message?.content;
|
|
70
|
+
const slug = sanitizeModelSlug(typeof content === 'string' ? content : undefined);
|
|
71
|
+
if (slug)
|
|
72
|
+
return slug;
|
|
73
|
+
logger.warn('[worktree-slug-ai] empty or invalid AI slug, using local fallback');
|
|
74
|
+
}
|
|
75
|
+
catch (e) {
|
|
76
|
+
logger.warn(`[worktree-slug-ai] failed, using local fallback: ${e instanceof Error ? e.message : e}`);
|
|
77
|
+
}
|
|
78
|
+
return fallback;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=worktree-slug-ai.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree-slug-ai.js","sourceRoot":"","sources":["../../src/services/worktree-slug-ai.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,14 +23,18 @@ export interface ResolvedCliSelection {
|
|
|
23
23
|
readonly cliId: CliId;
|
|
24
24
|
readonly wrapperCli?: string;
|
|
25
25
|
}
|
|
26
|
+
/** ttadk 默认模型(dashboard 占位 / 启动期空值兜底,CoCo 不适用)。 */
|
|
27
|
+
export declare const TTADK_DEFAULT_MODEL = "glm-5.1";
|
|
28
|
+
/** dashboard 模型框候选(账号不同会变,仅作建议,仍可自由填任意模型 id)。 */
|
|
29
|
+
export declare const TTADK_MODEL_SUGGESTIONS: ReadonlyArray<string>;
|
|
26
30
|
/**
|
|
27
31
|
* 级联树(终端 TUI 用):顺序同 CLI_OPTIONS;'aiden' 一项展开成 children;
|
|
28
|
-
* 末尾追加无原生 cliId 的网关分组(CJADK)。
|
|
32
|
+
* 末尾追加无原生 cliId 的网关分组(CJADK / TTADK)。
|
|
29
33
|
*/
|
|
30
34
|
export declare const CLI_SELECT_TREE: ReadonlyArray<CliSelectGroup>;
|
|
31
35
|
/**
|
|
32
36
|
* 扁平选项(web 下拉 + 非 TTY 回退用):'aiden' 之后紧跟两个 aiden×* 项,
|
|
33
|
-
*
|
|
37
|
+
* 末尾依次追加 cjadk×* 与 ttadk×* 项。
|
|
34
38
|
*/
|
|
35
39
|
export declare const CLI_SELECT_OPTIONS: ReadonlyArray<CliSelectOption>;
|
|
36
40
|
/** 按 key 查选项;非法 key 返回 undefined。 */
|
|
@@ -48,13 +52,32 @@ export declare function parseWrapperCli(wrapperCli: string): string[];
|
|
|
48
52
|
* `--settings=<v>` 两种写法。其余参数原样保留。改用纯 argv 处理(跨系统、无 shell)。
|
|
49
53
|
*/
|
|
50
54
|
export declare function stripSettingsArgs(args: ReadonlyArray<string>): string[];
|
|
55
|
+
/** 该前缀是否为 ttadk 网关(`ttadk <子命令> …`)。 */
|
|
56
|
+
export declare function isTtadkWrapper(wrapperCli: string | undefined): boolean;
|
|
57
|
+
/** ttadk 该子命令是否接受 `-m <model>`(CoCo 等 requiresManagedModel=false 的不接受)。非 ttadk 前缀返回 false。 */
|
|
58
|
+
export declare function ttadkAcceptsModel(wrapperCli: string | undefined): boolean;
|
|
59
|
+
/** buildWrappedLaunch 的可选项。 */
|
|
60
|
+
export interface WrappedLaunchOptions {
|
|
61
|
+
/**
|
|
62
|
+
* ttadk 网关专用:注入到 `ttadk <子命令> -m <model>` 的模型 id。空/未传时
|
|
63
|
+
* 用 {@link TTADK_DEFAULT_MODEL} 兜底;不接受 -m 的子命令(CoCo)忽略此项。
|
|
64
|
+
*/
|
|
65
|
+
readonly ttadkModel?: string;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* /botconfig 等配置卡的 ttadk 模型候选:ttadk 网关 bot 返回 ttadk 模型候选
|
|
69
|
+
* ({@link TTADK_MODEL_SUGGESTIONS};CoCo 等不接受 -m 的返回 `[]` = 不渲染模型下拉);
|
|
70
|
+
* 非 ttadk 返回 `null`,调用方据此回落底层适配器自己的 modelChoices。
|
|
71
|
+
*/
|
|
72
|
+
export declare function ttadkConfigModelChoices(wrapperCli: string | undefined): string[] | null;
|
|
51
73
|
/**
|
|
52
74
|
* 由 wrapperCli 前缀 + 底层 CLI 的 args 构造实际 spawn 的 `{ bin, args }`。
|
|
53
75
|
* - bin = 前缀首 token(经 binResolver 走 PATH 解析)
|
|
54
76
|
* - args = 前缀其余 token + CLI 参数(aiden x claude 形态会先剥掉 --settings)
|
|
77
|
+
* - ttadk 网关走专门分支注入 `-m <model> --skip-check`(见 {@link buildTtadkLaunch})
|
|
55
78
|
* 前缀为空时返回 `{ bin: '', args }`,调用方据此跳过(不改写 spawn)。
|
|
56
79
|
*/
|
|
57
|
-
export declare function buildWrappedLaunch(wrapperCli: string, cliArgs: ReadonlyArray<string>, binResolver?: (bin: string) => string): {
|
|
80
|
+
export declare function buildWrappedLaunch(wrapperCli: string, cliArgs: ReadonlyArray<string>, binResolver?: (bin: string) => string, opts?: WrappedLaunchOptions): {
|
|
58
81
|
bin: string;
|
|
59
82
|
args: string[];
|
|
60
83
|
};
|
|
@@ -62,6 +85,12 @@ export declare function buildWrappedLaunch(wrapperCli: string, cliArgs: Readonly
|
|
|
62
85
|
* 把适配器给出的「裸 CLI 恢复命令」改写成 wrapperCli 形态,供 session-closed 卡片里
|
|
63
86
|
* 展示给用户手动 resume。例:`claude --resume <id>` + 前缀 `aiden x claude` →
|
|
64
87
|
* `aiden x claude --resume <id>`。wrapperCli 未设时原样返回。
|
|
88
|
+
*
|
|
89
|
+
* ttadk 特例:必须带上 `-m <model> --skip-check`(与 {@link buildTtadkLaunch} 同),
|
|
90
|
+
* 否则用户复制粘贴这条 resume 命令会卡在 ttadk 的交互式选模型菜单。模型从
|
|
91
|
+
* `opts.ttadkModel`(= bot.model)取,空则用默认值(CoCo 不带 -m)。
|
|
65
92
|
*/
|
|
66
|
-
export declare function decorateResumeForWrapper(cmd: string, wrapperCli: string | undefined
|
|
93
|
+
export declare function decorateResumeForWrapper(cmd: string, wrapperCli: string | undefined, opts?: {
|
|
94
|
+
ttadkModel?: string;
|
|
95
|
+
}): string;
|
|
67
96
|
//# sourceMappingURL=cli-selection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;AAiCD,mDAAmD;AACnD,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAE7C,iDAAiD;AACjD,eAAO,MAAM,uBAAuB,EAAE,aAAa,CAAC,MAAM,CAOzD,CAAC;AAwBF;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,cAAc,CAOzD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC,eAAe,CAQ7D,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,wCAAwC;AACxC,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEtE;AAED,8FAA8F;AAC9F,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAIzE;AAED,+BAA+B;AAC/B,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAmCD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,GAAG,IAAI,CAGvF;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,EAC9B,WAAW,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAiB,EAC/C,IAAI,GAAE,oBAAyB,GAC9B;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAMjC;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GACjC,MAAM,CAQR"}
|
|
@@ -32,14 +32,51 @@ const AIDEN_VARIANTS = [AIDEN_NATIVE, AIDEN_X_CLAUDE, AIDEN_X_CODEX];
|
|
|
32
32
|
const CJADK_X_CLAUDE = { key: 'cjadk-x-claude', label: 'CJADK × Claude', cliId: 'claude-code', wrapperCli: 'cjadk claude' };
|
|
33
33
|
const CJADK_X_CODEX = { key: 'cjadk-x-codex', label: 'CJADK × Codex', cliId: 'codex', wrapperCli: 'cjadk codex' };
|
|
34
34
|
const CJADK_VARIANTS = [CJADK_X_CLAUDE, CJADK_X_CODEX];
|
|
35
|
+
// ─── ttadk 选项 ──────────────────────────────────────────────────────────────
|
|
36
|
+
// ttadk(@byted/ttadk)跟 cjadk 一样是网关装配启动器:`ttadk <子命令>` 是
|
|
37
|
+
// `ttadk code -t <tool>` 的快捷写法,启动真实 CLI 前注入网关鉴权 env。与 cjadk
|
|
38
|
+
// 的关键差异:ttadk 默认会弹「交互式选模型菜单」卡住 PTY,靠 **`-m <model>`** 跳过
|
|
39
|
+
// (而非 cjadk 的 CJADK_INTERACTIVE env 开关),故模型对 managed 模型类 CLI 必填。
|
|
40
|
+
// CoCo 例外(ttadk 内部 requiresManagedModel=false,不弹菜单、不接受 -m)。
|
|
41
|
+
//
|
|
42
|
+
// 模型不写死在 wrapperCli,而是复用 bot 的通用 `model` 字段(dashboard 可动态改):
|
|
43
|
+
// 启动期由 worker 检测 ttadk 前缀,把 `model` 注入成 ttadk 的 `-m`(见
|
|
44
|
+
// {@link buildWrappedLaunch} 的 `ttadkModel` 形参),并**不**把 model 透给底层适配器
|
|
45
|
+
// (否则真实 CLI 会再吃一个 --model 重复)。ttadk 的 code 命令用
|
|
46
|
+
// `allowUnknownOption + enablePositionalOptions`,故 botmux 适配器的其余参数
|
|
47
|
+
// (--settings/--dangerously-skip-permissions/--session-id…)原样 bare 透传给真实 CLI,
|
|
48
|
+
// 无需 `--` 分隔(与 cjadk 同)。Cursor 走 ttadk 的 `cursor-cli` 子命令(cliId 仍是 cursor)。
|
|
49
|
+
/** ttadk 默认模型(dashboard 占位 / 启动期空值兜底,CoCo 不适用)。 */
|
|
50
|
+
export const TTADK_DEFAULT_MODEL = 'glm-5.1';
|
|
51
|
+
/** dashboard 模型框候选(账号不同会变,仅作建议,仍可自由填任意模型 id)。 */
|
|
52
|
+
export const TTADK_MODEL_SUGGESTIONS = [
|
|
53
|
+
'glm-5.1',
|
|
54
|
+
'glm-5',
|
|
55
|
+
'kimi-k2.5',
|
|
56
|
+
'gpt-5.3-codex',
|
|
57
|
+
'gpt-5.2',
|
|
58
|
+
'gpt-5.2-codex',
|
|
59
|
+
];
|
|
60
|
+
/** ttadk 子命令中**不接受 `-m`**(requiresManagedModel=false)的那些——目前仅 coco。 */
|
|
61
|
+
const TTADK_NO_MODEL_SUBCOMMANDS = new Set(['coco']);
|
|
62
|
+
const TTADK_X_CLAUDE = { key: 'ttadk-x-claude', label: 'TTADK × Claude', cliId: 'claude-code', wrapperCli: 'ttadk claude' };
|
|
63
|
+
const TTADK_X_CODEX = { key: 'ttadk-x-codex', label: 'TTADK × Codex', cliId: 'codex', wrapperCli: 'ttadk codex' };
|
|
64
|
+
const TTADK_X_OPENCODE = { key: 'ttadk-x-opencode', label: 'TTADK × OpenCode', cliId: 'opencode', wrapperCli: 'ttadk opencode' };
|
|
65
|
+
const TTADK_X_COCO = { key: 'ttadk-x-coco', label: 'TTADK × CoCo', cliId: 'coco', wrapperCli: 'ttadk coco' };
|
|
66
|
+
const TTADK_X_CURSOR = { key: 'ttadk-x-cursor', label: 'TTADK × Cursor', cliId: 'cursor', wrapperCli: 'ttadk cursor-cli' };
|
|
67
|
+
const TTADK_X_GEMINI = { key: 'ttadk-x-gemini', label: 'TTADK × Gemini', cliId: 'gemini', wrapperCli: 'ttadk gemini' };
|
|
68
|
+
const TTADK_VARIANTS = [
|
|
69
|
+
TTADK_X_CLAUDE, TTADK_X_CODEX, TTADK_X_OPENCODE, TTADK_X_COCO, TTADK_X_CURSOR, TTADK_X_GEMINI,
|
|
70
|
+
];
|
|
35
71
|
/** 顶层 CLI 之外、纯 wrapperCli 网关分组(不对应任何原生 cliId),追加到树/列表末尾。 */
|
|
36
72
|
const EXTRA_GATEWAY_GROUPS = [
|
|
37
73
|
{ key: 'cjadk', label: 'CJADK', children: CJADK_VARIANTS },
|
|
74
|
+
{ key: 'ttadk', label: 'TTADK', children: TTADK_VARIANTS },
|
|
38
75
|
];
|
|
39
76
|
// ─── 扁平 / 级联 视图(均派生自 bot-config-editor 的 CLI_OPTIONS,避免再抄一份)──
|
|
40
77
|
/**
|
|
41
78
|
* 级联树(终端 TUI 用):顺序同 CLI_OPTIONS;'aiden' 一项展开成 children;
|
|
42
|
-
* 末尾追加无原生 cliId 的网关分组(CJADK)。
|
|
79
|
+
* 末尾追加无原生 cliId 的网关分组(CJADK / TTADK)。
|
|
43
80
|
*/
|
|
44
81
|
export const CLI_SELECT_TREE = [
|
|
45
82
|
...CLI_OPTIONS.map((o) => o.id === 'aiden'
|
|
@@ -49,13 +86,14 @@ export const CLI_SELECT_TREE = [
|
|
|
49
86
|
];
|
|
50
87
|
/**
|
|
51
88
|
* 扁平选项(web 下拉 + 非 TTY 回退用):'aiden' 之后紧跟两个 aiden×* 项,
|
|
52
|
-
*
|
|
89
|
+
* 末尾依次追加 cjadk×* 与 ttadk×* 项。
|
|
53
90
|
*/
|
|
54
91
|
export const CLI_SELECT_OPTIONS = [
|
|
55
92
|
...CLI_OPTIONS.flatMap((o) => o.id === 'aiden'
|
|
56
93
|
? AIDEN_VARIANTS
|
|
57
94
|
: [{ key: o.id, label: o.label, cliId: o.id }]),
|
|
58
95
|
...CJADK_VARIANTS,
|
|
96
|
+
...TTADK_VARIANTS,
|
|
59
97
|
];
|
|
60
98
|
const OPTION_BY_KEY = new Map(CLI_SELECT_OPTIONS.map((o) => [o.key, o]));
|
|
61
99
|
/** 按 key 查选项;非法 key 返回 undefined。 */
|
|
@@ -108,16 +146,67 @@ export function stripSettingsArgs(args) {
|
|
|
108
146
|
}
|
|
109
147
|
return out;
|
|
110
148
|
}
|
|
149
|
+
/** 该前缀是否为 ttadk 网关(`ttadk <子命令> …`)。 */
|
|
150
|
+
export function isTtadkWrapper(wrapperCli) {
|
|
151
|
+
return !!wrapperCli && parseWrapperCli(wrapperCli)[0] === 'ttadk';
|
|
152
|
+
}
|
|
153
|
+
/** ttadk 该子命令是否接受 `-m <model>`(CoCo 等 requiresManagedModel=false 的不接受)。非 ttadk 前缀返回 false。 */
|
|
154
|
+
export function ttadkAcceptsModel(wrapperCli) {
|
|
155
|
+
if (!wrapperCli)
|
|
156
|
+
return false;
|
|
157
|
+
const tokens = parseWrapperCli(wrapperCli);
|
|
158
|
+
return tokens[0] === 'ttadk' && !!tokens[1] && !TTADK_NO_MODEL_SUBCOMMANDS.has(tokens[1]);
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* ttadk 前缀参数(不含 bin `ttadk` 本身):`<子命令> [-m <model>] --skip-check`。
|
|
162
|
+
* - `-m <model>`:跳过 ttadk 交互式选模型菜单(CoCo 等 requiresManagedModel=false 的子命令不注入)
|
|
163
|
+
* - `--skip-check`:跳过 ttadk preflight,避免交互/卡顿
|
|
164
|
+
* 单一事实源:spawn({@link buildTtadkLaunch})与 session-closed 卡片的手动 resume
|
|
165
|
+
* 命令({@link decorateResumeForWrapper})都用它,保证两处的 ttadk 启动形态一致。
|
|
166
|
+
*/
|
|
167
|
+
function ttadkPrefixArgs(tokens, ttadkModel) {
|
|
168
|
+
// tokens = ['ttadk', '<子命令>', ...(罕见的额外前缀 token)]
|
|
169
|
+
const sub = tokens[1];
|
|
170
|
+
const out = [];
|
|
171
|
+
if (sub)
|
|
172
|
+
out.push(sub);
|
|
173
|
+
if (sub && !TTADK_NO_MODEL_SUBCOMMANDS.has(sub)) {
|
|
174
|
+
out.push('-m', (ttadkModel ?? '').trim() || TTADK_DEFAULT_MODEL);
|
|
175
|
+
}
|
|
176
|
+
out.push('--skip-check');
|
|
177
|
+
return [...out, ...tokens.slice(2)];
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* ttadk 启动构造:`ttadk <子命令> [-m <model>] --skip-check <CLI 参数…>`。
|
|
181
|
+
* CLI 参数 bare 透传(ttadk code 命令 allowUnknownOption + enablePositionalOptions),无需 `--`。
|
|
182
|
+
* 模型由调用方从 bot.model 传入(见 worker.ts),故不写死在 wrapperCli 里、可在 dashboard 动态改。
|
|
183
|
+
*/
|
|
184
|
+
function buildTtadkLaunch(tokens, cliArgs, binResolver, ttadkModel) {
|
|
185
|
+
return { bin: binResolver('ttadk'), args: [...ttadkPrefixArgs(tokens, ttadkModel), ...cliArgs] };
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* /botconfig 等配置卡的 ttadk 模型候选:ttadk 网关 bot 返回 ttadk 模型候选
|
|
189
|
+
* ({@link TTADK_MODEL_SUGGESTIONS};CoCo 等不接受 -m 的返回 `[]` = 不渲染模型下拉);
|
|
190
|
+
* 非 ttadk 返回 `null`,调用方据此回落底层适配器自己的 modelChoices。
|
|
191
|
+
*/
|
|
192
|
+
export function ttadkConfigModelChoices(wrapperCli) {
|
|
193
|
+
if (!isTtadkWrapper(wrapperCli))
|
|
194
|
+
return null;
|
|
195
|
+
return ttadkAcceptsModel(wrapperCli) ? [...TTADK_MODEL_SUGGESTIONS] : [];
|
|
196
|
+
}
|
|
111
197
|
/**
|
|
112
198
|
* 由 wrapperCli 前缀 + 底层 CLI 的 args 构造实际 spawn 的 `{ bin, args }`。
|
|
113
199
|
* - bin = 前缀首 token(经 binResolver 走 PATH 解析)
|
|
114
200
|
* - args = 前缀其余 token + CLI 参数(aiden x claude 形态会先剥掉 --settings)
|
|
201
|
+
* - ttadk 网关走专门分支注入 `-m <model> --skip-check`(见 {@link buildTtadkLaunch})
|
|
115
202
|
* 前缀为空时返回 `{ bin: '', args }`,调用方据此跳过(不改写 spawn)。
|
|
116
203
|
*/
|
|
117
|
-
export function buildWrappedLaunch(wrapperCli, cliArgs, binResolver = (b) => b) {
|
|
204
|
+
export function buildWrappedLaunch(wrapperCli, cliArgs, binResolver = (b) => b, opts = {}) {
|
|
118
205
|
const tokens = parseWrapperCli(wrapperCli);
|
|
119
206
|
if (tokens.length === 0)
|
|
120
207
|
return { bin: '', args: [...cliArgs] };
|
|
208
|
+
if (tokens[0] === 'ttadk')
|
|
209
|
+
return buildTtadkLaunch(tokens, cliArgs, binResolver, opts.ttadkModel);
|
|
121
210
|
const forwarded = isAidenXClaude(tokens) ? stripSettingsArgs(cliArgs) : [...cliArgs];
|
|
122
211
|
return { bin: binResolver(tokens[0]), args: [...tokens.slice(1), ...forwarded] };
|
|
123
212
|
}
|
|
@@ -125,11 +214,19 @@ export function buildWrappedLaunch(wrapperCli, cliArgs, binResolver = (b) => b)
|
|
|
125
214
|
* 把适配器给出的「裸 CLI 恢复命令」改写成 wrapperCli 形态,供 session-closed 卡片里
|
|
126
215
|
* 展示给用户手动 resume。例:`claude --resume <id>` + 前缀 `aiden x claude` →
|
|
127
216
|
* `aiden x claude --resume <id>`。wrapperCli 未设时原样返回。
|
|
217
|
+
*
|
|
218
|
+
* ttadk 特例:必须带上 `-m <model> --skip-check`(与 {@link buildTtadkLaunch} 同),
|
|
219
|
+
* 否则用户复制粘贴这条 resume 命令会卡在 ttadk 的交互式选模型菜单。模型从
|
|
220
|
+
* `opts.ttadkModel`(= bot.model)取,空则用默认值(CoCo 不带 -m)。
|
|
128
221
|
*/
|
|
129
|
-
export function decorateResumeForWrapper(cmd, wrapperCli) {
|
|
222
|
+
export function decorateResumeForWrapper(cmd, wrapperCli, opts = {}) {
|
|
130
223
|
if (!wrapperCli || !wrapperCli.trim())
|
|
131
224
|
return cmd;
|
|
132
225
|
const rest = cmd.replace(/^\S+\s*/, ''); // 去掉首个 token(底层 bin 名)
|
|
226
|
+
if (isTtadkWrapper(wrapperCli)) {
|
|
227
|
+
const prefix = ['ttadk', ...ttadkPrefixArgs(parseWrapperCli(wrapperCli), opts.ttadkModel)].join(' ');
|
|
228
|
+
return `${prefix} ${rest}`.trimEnd();
|
|
229
|
+
}
|
|
133
230
|
return `${wrapperCli.trim()} ${rest}`.trimEnd();
|
|
134
231
|
}
|
|
135
232
|
//# sourceMappingURL=cli-selection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-selection.js","sourceRoot":"","sources":["../../src/setup/cli-selection.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli-selection.js","sourceRoot":"","sources":["../../src/setup/cli-selection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/skills/definitions.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,QAAQ;IACvB,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;CACjB;AAy5BD,eAAO,MAAM,SAAS,wjJAiErB,CAAC;
|
|
1
|
+
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/skills/definitions.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,QAAQ;IACvB,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;CACjB;AAy5BD,eAAO,MAAM,SAAS,wjJAiErB,CAAC;AA2EF,eAAO,MAAM,cAAc,eAAe,CAAC;AAE3C,eAAO,MAAM,cAAc,EAAE,QAAQ,EASpC,CAAC;AAEF;;qCAEqC;AACrC,eAAO,MAAM,mBAAmB,EAAE,MAAM,EASvC,CAAC"}
|
|
@@ -985,30 +985,6 @@ stdout 为一行 JSON。注意:\`--json\` 覆盖所有结果类型;超时 /
|
|
|
985
985
|
- 不支持 comment / multi-select / free-form text(v0.1.7 范围外)
|
|
986
986
|
- 默认超时 300 秒,可用 \`--timeout <seconds>\` 调整
|
|
987
987
|
`;
|
|
988
|
-
const WORKER_BUDGET_SKILL = `---
|
|
989
|
-
name: botmux-worker-budget
|
|
990
|
-
description: 查看或调整 botmux idle worker 自动暂停预算。触发场景:用户提到 OOM、内存占用、live worker 太多、闲置会话暂停、maxLiveWorkers、idleSuspendMs,或要求 agent 修改 worker 预算配置。必须使用 botmux worker-budget 命令,不要手写 ~/.botmux/config.json。
|
|
991
|
-
---
|
|
992
|
-
|
|
993
|
-
# botmux-worker-budget — worker 预算配置
|
|
994
|
-
|
|
995
|
-
当用户要求查看或调整 botmux worker 资源预算时,使用 \`botmux worker-budget\`。不要直接编辑 \`~/.botmux/config.json\`;命令会校验正整数、保留未知配置,并写入 daemon 读取的全局配置。
|
|
996
|
-
|
|
997
|
-
## 用法
|
|
998
|
-
|
|
999
|
-
\`\`\`bash
|
|
1000
|
-
# 查看自动推导值、当前覆盖值、配置文件路径
|
|
1001
|
-
botmux worker-budget status
|
|
1002
|
-
|
|
1003
|
-
# 覆盖 live worker 上限;idle 阈值可选
|
|
1004
|
-
botmux worker-budget set --max-live-workers 12 --idle-minutes 45
|
|
1005
|
-
|
|
1006
|
-
# 清除覆盖,恢复按 CPU/内存自动推导
|
|
1007
|
-
botmux worker-budget unset
|
|
1008
|
-
\`\`\`
|
|
1009
|
-
|
|
1010
|
-
\`maxLiveWorkers\` 控制多少个 live worker 以内保持常驻;超过预算时 daemon 会优先暂停最久未活跃的 worker。\`idleSuspendMs\` 控制 worker 需要闲置多久才允许被暂停。
|
|
1011
|
-
`;
|
|
1012
988
|
const ORCHESTRATE_SKILL = `---
|
|
1013
989
|
name: botmux-orchestrate
|
|
1014
990
|
description: 作为「主 bot/编排者」把一个大项目拆成多个子项目,在普通群里自动开多话题、把不同 bot(常 coder+reviewer 一组)派进各话题并行干活,用飞书任务清单当共享进度板,收齐结果再汇总。触发:用户提到「多话题协作模式」,或要「把大项目拆给多个机器人并行做」「协调多个 bot」「多话题并行推进」「你当总控/编排」「一个写一个 review 多组并行」,或显式提到 botmux orchestrate / botmux dispatch 派活。
|
|
@@ -1090,7 +1066,6 @@ export const BUILTIN_SKILLS = [
|
|
|
1090
1066
|
{ name: 'botmux-bots', content: BOTS_SKILL },
|
|
1091
1067
|
{ name: 'botmux-handoff', content: HANDOFF_SKILL },
|
|
1092
1068
|
{ name: 'botmux-workflow-create', content: WORKFLOW_CREATE_SKILL },
|
|
1093
|
-
{ name: 'botmux-worker-budget', content: WORKER_BUDGET_SKILL },
|
|
1094
1069
|
{ name: 'botmux-orchestrate', content: ORCHESTRATE_SKILL },
|
|
1095
1070
|
];
|
|
1096
1071
|
/** Skills that earlier botmux versions installed but no longer ship. The
|
|
@@ -1101,5 +1076,9 @@ export const RETIRED_SKILL_NAMES = [
|
|
|
1101
1076
|
// Folded into botmux-send as the `--attention` flag. Installer prunes the old
|
|
1102
1077
|
// standalone skill dir.
|
|
1103
1078
|
'botmux-needs-help',
|
|
1079
|
+
// Retired in favour of a per-bot "max live sessions" dashboard field
|
|
1080
|
+
// (Groups & Bots → bot card). The CLI subcommand was removed too, so the
|
|
1081
|
+
// skill has nothing to drive — prune it from every CLI's skills dir on upgrade.
|
|
1082
|
+
'botmux-worker-budget',
|
|
1104
1083
|
];
|
|
1105
1084
|
//# sourceMappingURL=definitions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/skills/definitions.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2FtB,CAAC;AAEF,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6DrB,CAAC;AAEF,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8CpB,CAAC;AAEF,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgOlB,CAAC;AAEF,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6ClB,CAAC;AAEF,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCrB,CAAC;AAEF,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6Y7B,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiExB,CAAC;AAEF,MAAM,
|
|
1
|
+
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/skills/definitions.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -120,6 +120,16 @@ export interface Session {
|
|
|
120
120
|
lastCliInput?: string;
|
|
121
121
|
/** CLI-native resume id when it differs from botmux's sessionId (for example Codex thread id). */
|
|
122
122
|
cliSessionId?: string;
|
|
123
|
+
/**
|
|
124
|
+
* Set true when the idle-worker sweeper suspends this session over the per-bot
|
|
125
|
+
* live cap: the worker AND the backing tmux/herdr/zellij session (+ CLI) were
|
|
126
|
+
* intentionally killed to reclaim memory, but the session stays `active` and
|
|
127
|
+
* cold-resumes from its on-disk transcript on the next message. Distinguishes
|
|
128
|
+
* this deliberate state from a real zombie (pane gone while the server runs):
|
|
129
|
+
* `restoreActiveSessions` must NOT close a suspended session whose backing
|
|
130
|
+
* session probes 'missing'. Cleared once a live worker is re-established.
|
|
131
|
+
*/
|
|
132
|
+
suspendedColdResume?: boolean;
|
|
123
133
|
/** CLI used to spawn this session — stamped on every save so closed sessions retain it. */
|
|
124
134
|
cliId?: import('./adapters/cli/types.js').CliId;
|
|
125
135
|
/**
|