botmux 2.2.7 → 2.3.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/README.en.md +63 -13
- package/README.md +52 -14
- package/dist/adapters/backend/tmux-backend.d.ts +8 -0
- package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
- package/dist/adapters/backend/tmux-backend.js +18 -0
- package/dist/adapters/backend/tmux-backend.js.map +1 -1
- package/dist/adapters/cli/aiden.d.ts.map +1 -1
- package/dist/adapters/cli/aiden.js +0 -40
- package/dist/adapters/cli/aiden.js.map +1 -1
- package/dist/adapters/cli/claude-code.d.ts.map +1 -1
- package/dist/adapters/cli/claude-code.js +21 -67
- package/dist/adapters/cli/claude-code.js.map +1 -1
- package/dist/adapters/cli/coco.d.ts.map +1 -1
- package/dist/adapters/cli/coco.js +0 -33
- package/dist/adapters/cli/coco.js.map +1 -1
- package/dist/adapters/cli/codex.d.ts.map +1 -1
- package/dist/adapters/cli/codex.js +0 -27
- package/dist/adapters/cli/codex.js.map +1 -1
- package/dist/adapters/cli/gemini.d.ts.map +1 -1
- package/dist/adapters/cli/gemini.js +1 -29
- package/dist/adapters/cli/gemini.js.map +1 -1
- package/dist/adapters/cli/opencode.d.ts.map +1 -1
- package/dist/adapters/cli/opencode.js +1 -44
- package/dist/adapters/cli/opencode.js.map +1 -1
- package/dist/adapters/cli/types.d.ts +11 -8
- package/dist/adapters/cli/types.d.ts.map +1 -1
- package/dist/cli.js +737 -16
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +16 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +30 -0
- package/dist/config.js.map +1 -1
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +8 -4
- package/dist/core/command-handler.js.map +1 -1
- package/dist/core/scheduler.d.ts +38 -16
- package/dist/core/scheduler.d.ts.map +1 -1
- package/dist/core/scheduler.js +335 -149
- package/dist/core/scheduler.js.map +1 -1
- package/dist/core/session-manager.d.ts +6 -0
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +105 -16
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/types.d.ts +26 -4
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +6 -0
- package/dist/core/types.js.map +1 -1
- package/dist/core/worker-pool.d.ts +15 -3
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +233 -31
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +49 -10
- package/dist/daemon.js.map +1 -1
- package/dist/im/lark/card-builder.d.ts +29 -1
- package/dist/im/lark/card-builder.d.ts.map +1 -1
- package/dist/im/lark/card-builder.js +241 -55
- package/dist/im/lark/card-builder.js.map +1 -1
- package/dist/im/lark/card-handler.d.ts +1 -0
- package/dist/im/lark/card-handler.d.ts.map +1 -1
- package/dist/im/lark/card-handler.js +195 -40
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/services/schedule-store.d.ts +20 -3
- package/dist/services/schedule-store.d.ts.map +1 -1
- package/dist/services/schedule-store.js +140 -16
- package/dist/services/schedule-store.js.map +1 -1
- package/dist/skills/definitions.d.ts +17 -0
- package/dist/skills/definitions.d.ts.map +1 -0
- package/dist/skills/definitions.js +254 -0
- package/dist/skills/definitions.js.map +1 -0
- package/dist/skills/installer.d.ts +9 -0
- package/dist/skills/installer.d.ts.map +1 -0
- package/dist/skills/installer.js +42 -0
- package/dist/skills/installer.js.map +1 -0
- package/dist/types.d.ts +84 -7
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -5
- package/dist/types.js.map +1 -1
- package/dist/utils/lark-upload.d.ts +2 -0
- package/dist/utils/lark-upload.d.ts.map +1 -0
- package/dist/utils/lark-upload.js +27 -0
- package/dist/utils/lark-upload.js.map +1 -0
- package/dist/utils/screen-analyzer.d.ts +67 -0
- package/dist/utils/screen-analyzer.d.ts.map +1 -0
- package/dist/utils/screen-analyzer.js +279 -0
- package/dist/utils/screen-analyzer.js.map +1 -0
- package/dist/utils/screenshot-renderer.d.ts +11 -0
- package/dist/utils/screenshot-renderer.d.ts.map +1 -0
- package/dist/utils/screenshot-renderer.js +225 -0
- package/dist/utils/screenshot-renderer.js.map +1 -0
- package/dist/utils/terminal-renderer.d.ts +30 -0
- package/dist/utils/terminal-renderer.d.ts.map +1 -1
- package/dist/utils/terminal-renderer.js +25 -0
- package/dist/utils/terminal-renderer.js.map +1 -1
- package/dist/worker.js +372 -14
- package/dist/worker.js.map +1 -1
- package/package.json +2 -5
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -16
- package/dist/index.js.map +0 -1
- package/dist/server.d.ts +0 -3
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -133
- package/dist/server.js.map +0 -1
- package/dist/tools/get-thread-messages.d.ts +0 -26
- package/dist/tools/get-thread-messages.d.ts.map +0 -1
- package/dist/tools/get-thread-messages.js +0 -38
- package/dist/tools/get-thread-messages.js.map +0 -1
- package/dist/tools/index.d.ts +0 -9
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/index.js +0 -10
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/list-bots.d.ts +0 -40
- package/dist/tools/list-bots.d.ts.map +0 -1
- package/dist/tools/list-bots.js +0 -77
- package/dist/tools/list-bots.js.map +0 -1
- package/dist/tools/send-to-thread.d.ts +0 -46
- package/dist/tools/send-to-thread.d.ts.map +0 -1
- package/dist/tools/send-to-thread.js +0 -275
- package/dist/tools/send-to-thread.js.map +0 -1
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { execSync } from 'node:child_process';
|
|
2
1
|
import { resolveCommand } from './registry.js';
|
|
3
2
|
function delay(ms) {
|
|
4
3
|
return new Promise(resolve => setTimeout(resolve, ms));
|
|
@@ -28,32 +27,6 @@ export function createCodexAdapter(pathOverride) {
|
|
|
28
27
|
pty.write('\r');
|
|
29
28
|
}
|
|
30
29
|
},
|
|
31
|
-
ensureMcpConfig(entry) {
|
|
32
|
-
// Clean up stale entries (e.g. old "claude-code-robot" → renamed to "botmux")
|
|
33
|
-
for (const stale of ['claude-code-robot']) {
|
|
34
|
-
if (stale !== entry.name) {
|
|
35
|
-
try {
|
|
36
|
-
execSync(`${bin} mcp remove ${stale}`, { encoding: 'utf-8', timeout: 10_000, stdio: 'ignore' });
|
|
37
|
-
}
|
|
38
|
-
catch { /* not present — fine */ }
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
// Remove first so re-registration picks up env changes (e.g. new SESSION_DATA_DIR)
|
|
42
|
-
try {
|
|
43
|
-
execSync(`${bin} mcp remove ${entry.name}`, { encoding: 'utf-8', timeout: 10_000, stdio: 'ignore' });
|
|
44
|
-
}
|
|
45
|
-
catch { /* not registered yet — fine */ }
|
|
46
|
-
const envArgs = Object.entries(entry.env)
|
|
47
|
-
.map(([k, v]) => `--env ${k}=${v}`)
|
|
48
|
-
.join(' ');
|
|
49
|
-
const cmd = `${bin} mcp add ${entry.name} ${envArgs} -- ${entry.command} ${entry.args.join(' ')}`;
|
|
50
|
-
try {
|
|
51
|
-
execSync(cmd, { encoding: 'utf-8', timeout: 10_000, stdio: 'ignore' });
|
|
52
|
-
}
|
|
53
|
-
catch (err) {
|
|
54
|
-
console.warn(`[codex] Failed to add MCP config: ${err.message}`);
|
|
55
|
-
}
|
|
56
|
-
},
|
|
57
30
|
completionPattern: undefined,
|
|
58
31
|
readyPattern: /›|\d+% left/, // › for input box, or status bar pattern (e.g. "97% left")
|
|
59
32
|
systemHints: [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/adapters/cli/codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/adapters/cli/codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,YAAqB;IACtD,MAAM,GAAG,GAAG,cAAc,CAAC,YAAY,IAAI,OAAO,CAAC,CAAC;IACpD,OAAO;QACL,EAAE,EAAE,OAAO;QACX,WAAW,EAAE,GAAG;QAEhB,SAAS;YACP,sEAAsE;YACtE,uEAAuE;YACvE,OAAO;gBACL,4CAA4C;gBAC5C,iBAAiB;aAClB,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,GAAc,EAAE,OAAe;YAC9C,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;gBACxC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACtB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;gBACjB,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACnB,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,iBAAiB,EAAE,SAAS;QAC5B,YAAY,EAAE,aAAa,EAAG,2DAA2D;QACzF,WAAW,EAAE,EAAE;QACf,SAAS,EAAE,KAAK,EAAI,4CAA4C;KACjE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,kBAAkB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/gemini.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/gemini.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,YAAY,CAAC;AAMxD,wBAAgB,mBAAmB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,UAAU,CAyCrE;AAED,eAAO,MAAM,MAAM,4BAAsB,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { execSync } from 'node:child_process';
|
|
2
1
|
import { resolveCommand } from './registry.js';
|
|
3
2
|
function delay(ms) {
|
|
4
3
|
return new Promise(resolve => setTimeout(resolve, ms));
|
|
@@ -35,38 +34,11 @@ export function createGeminiAdapter(pathOverride) {
|
|
|
35
34
|
pty.write('\r');
|
|
36
35
|
}
|
|
37
36
|
},
|
|
38
|
-
ensureMcpConfig(entry) {
|
|
39
|
-
// Clean up stale entries (e.g. old "claude-code-robot" → renamed to "botmux")
|
|
40
|
-
for (const stale of ['claude-code-robot']) {
|
|
41
|
-
if (stale !== entry.name) {
|
|
42
|
-
try {
|
|
43
|
-
execSync(`${bin} mcp remove ${stale}`, { encoding: 'utf-8', timeout: 10_000, stdio: 'ignore' });
|
|
44
|
-
}
|
|
45
|
-
catch { /* not present — fine */ }
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
// Remove first so re-registration picks up env changes
|
|
49
|
-
try {
|
|
50
|
-
execSync(`${bin} mcp remove ${entry.name}`, { encoding: 'utf-8', timeout: 10_000, stdio: 'ignore' });
|
|
51
|
-
}
|
|
52
|
-
catch { /* not registered yet — fine */ }
|
|
53
|
-
// gemini mcp add <name> <command> [args...] -e K=V --trust --scope user
|
|
54
|
-
const envArgs = Object.entries(entry.env)
|
|
55
|
-
.map(([k, v]) => `-e ${k}=${v}`)
|
|
56
|
-
.join(' ');
|
|
57
|
-
const argsStr = entry.args.join(' ');
|
|
58
|
-
const cmd = `${bin} mcp add ${entry.name} ${entry.command} ${argsStr} ${envArgs} --trust --scope user`;
|
|
59
|
-
try {
|
|
60
|
-
execSync(cmd, { encoding: 'utf-8', timeout: 10_000, stdio: 'ignore' });
|
|
61
|
-
}
|
|
62
|
-
catch (err) {
|
|
63
|
-
console.warn(`[gemini] Failed to add MCP config: ${err.message}`);
|
|
64
|
-
}
|
|
65
|
-
},
|
|
66
37
|
completionPattern: undefined, // quiescence only — no explicit completion marker
|
|
67
38
|
readyPattern: undefined, // Ink TUI — '>' is too generic; rely on quiescence + spinner guard
|
|
68
39
|
systemHints: [],
|
|
69
40
|
altScreen: true, // Ink renders in alternate screen buffer by default
|
|
41
|
+
skillsDir: '~/.gemini/skills',
|
|
70
42
|
};
|
|
71
43
|
}
|
|
72
44
|
export const create = createGeminiAdapter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../src/adapters/cli/gemini.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../src/adapters/cli/gemini.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,YAAqB;IACvD,MAAM,GAAG,GAAG,cAAc,CAAC,YAAY,IAAI,QAAQ,CAAC,CAAC;IACrD,OAAO;QACL,EAAE,EAAE,QAAQ;QACZ,WAAW,EAAE,GAAG;QAEhB,SAAS,CAAC,EAAE,aAAa,EAAE;YACzB,qEAAqE;YACrE,sEAAsE;YACtE,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxB,wEAAwE;YACxE,sEAAsE;YACtE,yEAAyE;YACzE,wEAAwE;YACxE,4CAA4C;YAC5C,IAAI,aAAa,EAAE,CAAC;gBAClB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;YACjC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,0BAA0B,EAAE,IAAI;QAEhC,KAAK,CAAC,UAAU,CAAC,GAAc,EAAE,OAAe;YAC9C,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;gBACxC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACtB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;gBACjB,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACnB,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,iBAAiB,EAAE,SAAS,EAAI,kDAAkD;QAClF,YAAY,EAAE,SAAS,EAAS,mEAAmE;QACnG,WAAW,EAAE,EAAE;QACf,SAAS,EAAE,IAAI,EAAiB,oDAAoD;QACpF,SAAS,EAAE,kBAAkB;KAC9B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,mBAAmB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/opencode.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/opencode.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,YAAY,CAAC;AAMxD,wBAAgB,qBAAqB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,UAAU,CAyCvE;AAED,eAAO,MAAM,MAAM,8BAAwB,CAAC"}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
|
|
2
|
-
import { join, dirname } from 'node:path';
|
|
3
|
-
import { homedir } from 'node:os';
|
|
4
1
|
import { resolveCommand } from './registry.js';
|
|
5
2
|
function delay(ms) {
|
|
6
3
|
return new Promise(resolve => setTimeout(resolve, ms));
|
|
@@ -37,51 +34,11 @@ export function createOpenCodeAdapter(pathOverride) {
|
|
|
37
34
|
pty.write('\r');
|
|
38
35
|
}
|
|
39
36
|
},
|
|
40
|
-
ensureMcpConfig(entry) {
|
|
41
|
-
// OpenCode reads MCP config from opencode.json under "mcp" key.
|
|
42
|
-
// Global config: ~/.config/opencode/opencode.json
|
|
43
|
-
const configPath = join(homedir(), '.config', 'opencode', 'opencode.json');
|
|
44
|
-
let data = {};
|
|
45
|
-
if (existsSync(configPath)) {
|
|
46
|
-
try {
|
|
47
|
-
data = JSON.parse(readFileSync(configPath, 'utf-8'));
|
|
48
|
-
}
|
|
49
|
-
catch { /* fresh */ }
|
|
50
|
-
}
|
|
51
|
-
if (!data.mcp)
|
|
52
|
-
data.mcp = {};
|
|
53
|
-
// Clean up stale entries pointing to the same server script under a different name
|
|
54
|
-
const serverScript = entry.args[0];
|
|
55
|
-
let dirty = false;
|
|
56
|
-
for (const [name, cfg] of Object.entries(data.mcp)) {
|
|
57
|
-
if (name !== entry.name && Array.isArray(cfg?.command) && cfg.command[1] === serverScript) {
|
|
58
|
-
delete data.mcp[name];
|
|
59
|
-
dirty = true;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
// Check if existing config matches — skip write if up to date
|
|
63
|
-
const existing = data.mcp[entry.name];
|
|
64
|
-
const envMatch = existing && JSON.stringify(existing.environment ?? {}) === JSON.stringify(entry.env);
|
|
65
|
-
const cmdMatch = existing && Array.isArray(existing.command) && existing.command[1] === serverScript;
|
|
66
|
-
if (!dirty && existing && cmdMatch && envMatch)
|
|
67
|
-
return;
|
|
68
|
-
data.mcp[entry.name] = {
|
|
69
|
-
type: 'local',
|
|
70
|
-
command: [entry.command, ...entry.args],
|
|
71
|
-
environment: entry.env,
|
|
72
|
-
};
|
|
73
|
-
try {
|
|
74
|
-
mkdirSync(dirname(configPath), { recursive: true });
|
|
75
|
-
writeFileSync(configPath, JSON.stringify(data, null, 2) + '\n');
|
|
76
|
-
}
|
|
77
|
-
catch (err) {
|
|
78
|
-
console.warn(`[opencode] Failed to write MCP config: ${err.message}`);
|
|
79
|
-
}
|
|
80
|
-
},
|
|
81
37
|
completionPattern: undefined, // quiescence only — no explicit completion marker
|
|
82
38
|
readyPattern: undefined, // Bubble Tea TUI — no reliable prompt indicator; rely on quiescence + spinner guard
|
|
83
39
|
systemHints: [],
|
|
84
40
|
altScreen: true, // Bubble Tea renders in alternate screen buffer
|
|
41
|
+
skillsDir: '~/.config/opencode/skills',
|
|
85
42
|
};
|
|
86
43
|
}
|
|
87
44
|
export const create = createOpenCodeAdapter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../../src/adapters/cli/opencode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../../src/adapters/cli/opencode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,YAAqB;IACzD,MAAM,GAAG,GAAG,cAAc,CAAC,YAAY,IAAI,UAAU,CAAC,CAAC;IACvD,OAAO;QACL,EAAE,EAAE,UAAU;QACd,WAAW,EAAE,GAAG;QAEhB,SAAS,CAAC,EAAE,aAAa,EAAE;YACzB,uDAAuD;YACvD,+DAA+D;YAC/D,iEAAiE;YACjE,8CAA8C;YAC9C,MAAM,IAAI,GAAa,EAAE,CAAC;YAC1B,kEAAkE;YAClE,kEAAkE;YAClE,2DAA2D;YAC3D,IAAI,aAAa,EAAE,CAAC;gBAClB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;YACvC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,0BAA0B,EAAE,IAAI;QAEhC,KAAK,CAAC,UAAU,CAAC,GAAc,EAAE,OAAe;YAC9C,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;gBACxC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACtB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;gBACjB,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACnB,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,iBAAiB,EAAE,SAAS,EAAI,kDAAkD;QAClF,YAAY,EAAE,SAAS,EAAS,oFAAoF;QACpH,WAAW,EAAE,EAAE;QACf,SAAS,EAAE,IAAI,EAAiB,gDAAgD;QAChF,SAAS,EAAE,2BAA2B;KACvC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,qBAAqB,CAAC"}
|
|
@@ -7,12 +7,6 @@ export interface PtyHandle {
|
|
|
7
7
|
/** Paste text via tmux load-buffer + paste-buffer (auto-brackets if terminal supports it). */
|
|
8
8
|
pasteText?(text: string): void;
|
|
9
9
|
}
|
|
10
|
-
export interface McpServerEntry {
|
|
11
|
-
name: string;
|
|
12
|
-
command: string;
|
|
13
|
-
args: string[];
|
|
14
|
-
env: Record<string, string>;
|
|
15
|
-
}
|
|
16
10
|
export interface CliAdapter {
|
|
17
11
|
/** Unique identifier */
|
|
18
12
|
readonly id: string;
|
|
@@ -34,8 +28,11 @@ export interface CliAdapter {
|
|
|
34
28
|
/** Write user input to PTY. May fire writes asynchronously (e.g. Aiden delayed Enter).
|
|
35
29
|
* Resolves when all writes are complete. */
|
|
36
30
|
writeInput(pty: PtyHandle, content: string): Promise<void>;
|
|
37
|
-
/**
|
|
38
|
-
|
|
31
|
+
/** Optional: absolute path (with ~ expansion handled by caller) to the CLI's
|
|
32
|
+
* skill directory. When set, `ensureSkills` will write/refresh skill files
|
|
33
|
+
* into `{skillsDir}/<skillName>/SKILL.md`. Undefined = this CLI does not
|
|
34
|
+
* support skills (or has a non-standard layout not yet integrated). */
|
|
35
|
+
readonly skillsDir?: string;
|
|
39
36
|
/** Completion marker regex (beyond generic quiescence). undefined = quiescence only. */
|
|
40
37
|
readonly completionPattern?: RegExp;
|
|
41
38
|
/** Ready marker regex — matches when the CLI's input prompt is rendered and
|
|
@@ -52,6 +49,12 @@ export interface CliAdapter {
|
|
|
52
49
|
* session ID) via CLI flags (e.g. --append-system-prompt). The session
|
|
53
50
|
* manager skips appending "Session ID: ..." to every user message. */
|
|
54
51
|
readonly injectsSessionContext?: boolean;
|
|
52
|
+
/** When true, the CLI accepts input while busy (type-ahead). Worker writes
|
|
53
|
+
* queued messages immediately instead of waiting for idle detection.
|
|
54
|
+
* Only set for CLIs whose input handling is known to tolerate this —
|
|
55
|
+
* Claude Code buffers input internally and processes it after the current
|
|
56
|
+
* turn. Others (e.g. CoCo) may drop or garble input while rendering. */
|
|
57
|
+
readonly supportsTypeAhead?: boolean;
|
|
55
58
|
/** Whether CLI uses alternate screen buffer */
|
|
56
59
|
readonly altScreen: boolean;
|
|
57
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,kEAAkE;IAClE,QAAQ,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,4FAA4F;IAC5F,eAAe,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC1C,8FAA8F;IAC9F,SAAS,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,kEAAkE;IAClE,QAAQ,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,4FAA4F;IAC5F,eAAe,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC1C,8FAA8F;IAC9F,SAAS,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,UAAU;IACzB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,+CAA+C;IAC/C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B;;;;yCAIqC;IACrC,SAAS,CAAC,IAAI,EAAE;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,OAAO,CAAC;QAChB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,GAAG,MAAM,EAAE,CAAC;IAEb;+DAC2D;IAC3D,QAAQ,CAAC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAE9C;iDAC6C;IAC7C,UAAU,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3D;;;4EAGwE;IACxE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAE5B,wFAAwF;IACxF,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAEpC;;;;;sEAKkE;IAClE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAE/B;qEACiE;IACjE,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;IAE/B;;2EAEuE;IACvE,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEzC;;;;6EAIyE;IACzE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAErC,+CAA+C;IAC/C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,MAAM,KAAK,GAAG,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC"}
|