@emaxe/agento 0.3.0 → 0.4.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/AGENTS.md +28 -0
- package/CHANGELOG.md +33 -1
- package/README.md +28 -18
- package/README.ru.md +28 -18
- package/dist/bin/agento.js +34 -5
- package/dist/bin/agento.js.map +1 -1
- package/dist/src/adapters/copilot.d.ts +15 -0
- package/dist/src/adapters/copilot.d.ts.map +1 -0
- package/dist/src/adapters/copilot.js +71 -0
- package/dist/src/adapters/copilot.js.map +1 -0
- package/dist/src/adapters/opencode.d.ts +1 -0
- package/dist/src/adapters/opencode.d.ts.map +1 -1
- package/dist/src/adapters/opencode.js +10 -0
- package/dist/src/adapters/opencode.js.map +1 -1
- package/dist/src/cli/commands/agent.d.ts +7 -0
- package/dist/src/cli/commands/agent.d.ts.map +1 -1
- package/dist/src/cli/commands/agent.js +10 -1
- package/dist/src/cli/commands/agent.js.map +1 -1
- package/dist/src/cli/commands/launch.d.ts +7 -0
- package/dist/src/cli/commands/launch.d.ts.map +1 -1
- package/dist/src/cli/commands/launch.js +16 -5
- package/dist/src/cli/commands/launch.js.map +1 -1
- package/dist/src/cli/commands/profile.d.ts +6 -0
- package/dist/src/cli/commands/profile.d.ts.map +1 -1
- package/dist/src/cli/commands/profile.js +6 -0
- package/dist/src/cli/commands/profile.js.map +1 -1
- package/dist/src/cli/commands/provider.d.ts +6 -0
- package/dist/src/cli/commands/provider.d.ts.map +1 -1
- package/dist/src/cli/commands/provider.js +6 -0
- package/dist/src/cli/commands/provider.js.map +1 -1
- package/dist/src/cli/commands/restore.d.ts +8 -0
- package/dist/src/cli/commands/restore.d.ts.map +1 -1
- package/dist/src/cli/commands/restore.js +8 -0
- package/dist/src/cli/commands/restore.js.map +1 -1
- package/dist/src/config/schema.d.ts +1 -1
- package/dist/src/config/schema.d.ts.map +1 -1
- package/dist/src/config/schema.js +1 -1
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/config/store.d.ts +4 -0
- package/dist/src/config/store.d.ts.map +1 -1
- package/dist/src/config/store.js +18 -0
- package/dist/src/config/store.js.map +1 -1
- package/dist/src/installers/base.d.ts +25 -0
- package/dist/src/installers/base.d.ts.map +1 -0
- package/dist/src/installers/base.js +2 -0
- package/dist/src/installers/base.js.map +1 -0
- package/dist/src/installers/claude-code.d.ts +19 -0
- package/dist/src/installers/claude-code.d.ts.map +1 -0
- package/dist/src/installers/claude-code.js +55 -0
- package/dist/src/installers/claude-code.js.map +1 -0
- package/dist/src/installers/codex.d.ts +19 -0
- package/dist/src/installers/codex.d.ts.map +1 -0
- package/dist/src/installers/codex.js +55 -0
- package/dist/src/installers/codex.js.map +1 -0
- package/dist/src/installers/copilot.d.ts +19 -0
- package/dist/src/installers/copilot.d.ts.map +1 -0
- package/dist/src/installers/copilot.js +55 -0
- package/dist/src/installers/copilot.js.map +1 -0
- package/dist/src/installers/opencode.d.ts +19 -0
- package/dist/src/installers/opencode.d.ts.map +1 -0
- package/dist/src/installers/opencode.js +55 -0
- package/dist/src/installers/opencode.js.map +1 -0
- package/dist/src/installers/qwen.d.ts +19 -0
- package/dist/src/installers/qwen.d.ts.map +1 -0
- package/dist/src/installers/qwen.js +55 -0
- package/dist/src/installers/qwen.js.map +1 -0
- package/dist/src/installers/registry.d.ts +11 -0
- package/dist/src/installers/registry.d.ts.map +1 -0
- package/dist/src/installers/registry.js +18 -0
- package/dist/src/installers/registry.js.map +1 -0
- package/dist/src/launcher/child.js +1 -1
- package/dist/src/launcher/child.js.map +1 -1
- package/dist/src/launcher/independent.d.ts +16 -3
- package/dist/src/launcher/independent.d.ts.map +1 -1
- package/dist/src/launcher/independent.js +12 -3
- package/dist/src/launcher/independent.js.map +1 -1
- package/dist/src/profiles/profile-manager.d.ts +26 -7
- package/dist/src/profiles/profile-manager.d.ts.map +1 -1
- package/dist/src/profiles/profile-manager.js +26 -7
- package/dist/src/profiles/profile-manager.js.map +1 -1
- package/dist/src/providers/provider-manager.d.ts +18 -5
- package/dist/src/providers/provider-manager.d.ts.map +1 -1
- package/dist/src/providers/provider-manager.js +25 -5
- package/dist/src/providers/provider-manager.js.map +1 -1
- package/dist/src/tui/App.d.ts +12 -1
- package/dist/src/tui/App.d.ts.map +1 -1
- package/dist/src/tui/App.js +6 -2
- package/dist/src/tui/App.js.map +1 -1
- package/dist/src/tui/screens/AgentInstall.d.ts +10 -0
- package/dist/src/tui/screens/AgentInstall.d.ts.map +1 -0
- package/dist/src/tui/screens/AgentInstall.js +157 -0
- package/dist/src/tui/screens/AgentInstall.js.map +1 -0
- package/dist/src/tui/screens/Agents.d.ts +1 -0
- package/dist/src/tui/screens/Agents.d.ts.map +1 -1
- package/dist/src/tui/screens/Agents.js +4 -1
- package/dist/src/tui/screens/Agents.js.map +1 -1
- package/dist/src/tui/screens/LaunchAgent.d.ts +14 -1
- package/dist/src/tui/screens/LaunchAgent.d.ts.map +1 -1
- package/dist/src/tui/screens/LaunchAgent.js +138 -5
- package/dist/src/tui/screens/LaunchAgent.js.map +1 -1
- package/dist/src/tui/screens/MainMenu.d.ts +7 -0
- package/dist/src/tui/screens/MainMenu.d.ts.map +1 -1
- package/dist/src/tui/screens/MainMenu.js +7 -0
- package/dist/src/tui/screens/MainMenu.js.map +1 -1
- package/dist/src/tui/screens/Profiles.d.ts +1 -0
- package/dist/src/tui/screens/Profiles.d.ts.map +1 -1
- package/dist/src/tui/screens/Profiles.js +1 -0
- package/dist/src/tui/screens/Profiles.js.map +1 -1
- package/dist/src/tui/screens/Providers.d.ts +1 -0
- package/dist/src/tui/screens/Providers.d.ts.map +1 -1
- package/dist/src/tui/screens/Providers.js +1 -0
- package/dist/src/tui/screens/Providers.js.map +1 -1
- package/dist/src/tui/screens/Settings.d.ts +1 -0
- package/dist/src/tui/screens/Settings.d.ts.map +1 -1
- package/dist/src/tui/screens/Settings.js +20 -3
- package/dist/src/tui/screens/Settings.js.map +1 -1
- package/dist/src/tui/start.d.ts +9 -0
- package/dist/src/tui/start.d.ts.map +1 -1
- package/dist/src/tui/start.js +15 -0
- package/dist/src/tui/start.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { spawnSync, spawn } from 'node:child_process';
|
|
2
|
+
/** Installer for the GitHub Copilot CLI agent (brew cask). */
|
|
3
|
+
class CopilotInstaller {
|
|
4
|
+
agentId = 'copilot';
|
|
5
|
+
manualInstructions = {
|
|
6
|
+
commands: ['brew install --cask copilot-cli'],
|
|
7
|
+
docsUrl: 'https://docs.github.com/copilot/how-tos/copilot-cli',
|
|
8
|
+
};
|
|
9
|
+
/** Checks whether `copilot --version` succeeds and parses the version string. */
|
|
10
|
+
async checkInstalled() {
|
|
11
|
+
const result = spawnSync('copilot', ['--version'], { encoding: 'utf8' });
|
|
12
|
+
if (result.status !== 0) {
|
|
13
|
+
return { installed: false };
|
|
14
|
+
}
|
|
15
|
+
const output = (result.stdout ?? '') + (result.stderr ?? '');
|
|
16
|
+
const match = output.match(/GitHub Copilot CLI (\d+\.\d+\.\d+[^\s]*)/);
|
|
17
|
+
const version = match?.[1];
|
|
18
|
+
return { installed: true, ...(version !== undefined ? { version } : {}) };
|
|
19
|
+
}
|
|
20
|
+
/** Verifies that `brew` is available on the system. */
|
|
21
|
+
async checkEnvironment() {
|
|
22
|
+
const result = spawnSync('brew', ['--version'], { encoding: 'utf8' });
|
|
23
|
+
if (result.status !== 0) {
|
|
24
|
+
return { ok: false, missing: ['brew'] };
|
|
25
|
+
}
|
|
26
|
+
return { ok: true, missing: [] };
|
|
27
|
+
}
|
|
28
|
+
/** Runs `brew install --cask copilot-cli` and reports the result. */
|
|
29
|
+
async install() {
|
|
30
|
+
return new Promise((resolve) => {
|
|
31
|
+
const stderrChunks = [];
|
|
32
|
+
const child = spawn('brew', ['install', '--cask', 'copilot-cli'], {
|
|
33
|
+
stdio: ['ignore', 'inherit', 'pipe'],
|
|
34
|
+
shell: false,
|
|
35
|
+
});
|
|
36
|
+
child.stderr.on('data', (chunk) => {
|
|
37
|
+
stderrChunks.push(chunk);
|
|
38
|
+
});
|
|
39
|
+
child.on('exit', (code) => {
|
|
40
|
+
if (code === 0) {
|
|
41
|
+
resolve({ success: true });
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
const error = Buffer.concat(stderrChunks).toString('utf8').trim();
|
|
45
|
+
resolve({ success: false, error: error || `brew exited with code ${code}` });
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
child.on('error', (err) => {
|
|
49
|
+
resolve({ success: false, error: err.message });
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export const copilotInstaller = new CopilotInstaller();
|
|
55
|
+
//# sourceMappingURL=copilot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copilot.js","sourceRoot":"","sources":["../../../src/installers/copilot.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { AgentInstaller, InstallCheckResult, EnvCheckResult, InstallResult } from './base.js';
|
|
2
|
+
import type { AgentId } from '../config/schema.js';
|
|
3
|
+
/** Installer for the OpenCode CLI agent. */
|
|
4
|
+
declare class OpenCodeInstaller implements AgentInstaller {
|
|
5
|
+
readonly agentId: AgentId;
|
|
6
|
+
readonly manualInstructions: {
|
|
7
|
+
commands: string[];
|
|
8
|
+
docsUrl: string;
|
|
9
|
+
};
|
|
10
|
+
/** Checks whether `opencode --version` succeeds. */
|
|
11
|
+
checkInstalled(): Promise<InstallCheckResult>;
|
|
12
|
+
/** Verifies that `npm` is available on the system. */
|
|
13
|
+
checkEnvironment(): Promise<EnvCheckResult>;
|
|
14
|
+
/** Runs `npm install -g opencode` and reports the result. */
|
|
15
|
+
install(): Promise<InstallResult>;
|
|
16
|
+
}
|
|
17
|
+
export declare const openCodeInstaller: OpenCodeInstaller;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=opencode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../../src/installers/opencode.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACnG,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,4CAA4C;AAC5C,cAAM,iBAAkB,YAAW,cAAc;IAC/C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAc;IAEvC,QAAQ,CAAC,kBAAkB;;;MAGzB;IAEF,oDAAoD;IAC9C,cAAc,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAWnD,sDAAsD;IAChD,gBAAgB,IAAI,OAAO,CAAC,cAAc,CAAC;IAQjD,6DAA6D;IACvD,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC;CA2BxC;AAED,eAAO,MAAM,iBAAiB,mBAA0B,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { spawnSync, spawn } from 'node:child_process';
|
|
2
|
+
/** Installer for the OpenCode CLI agent. */
|
|
3
|
+
class OpenCodeInstaller {
|
|
4
|
+
agentId = 'opencode';
|
|
5
|
+
manualInstructions = {
|
|
6
|
+
commands: ['npm install -g opencode'],
|
|
7
|
+
docsUrl: 'https://opencode.ai/docs',
|
|
8
|
+
};
|
|
9
|
+
/** Checks whether `opencode --version` succeeds. */
|
|
10
|
+
async checkInstalled() {
|
|
11
|
+
const result = spawnSync('opencode', ['--version'], { encoding: 'utf8' });
|
|
12
|
+
if (result.status !== 0) {
|
|
13
|
+
return { installed: false };
|
|
14
|
+
}
|
|
15
|
+
const output = (result.stdout ?? '') + (result.stderr ?? '');
|
|
16
|
+
const match = output.match(/(\d+\.\d+\.\d+[^\s]*)/);
|
|
17
|
+
const version = match?.[1];
|
|
18
|
+
return { installed: true, ...(version !== undefined ? { version } : {}) };
|
|
19
|
+
}
|
|
20
|
+
/** Verifies that `npm` is available on the system. */
|
|
21
|
+
async checkEnvironment() {
|
|
22
|
+
const result = spawnSync('npm', ['--version'], { encoding: 'utf8' });
|
|
23
|
+
if (result.status !== 0) {
|
|
24
|
+
return { ok: false, missing: ['npm'] };
|
|
25
|
+
}
|
|
26
|
+
return { ok: true, missing: [] };
|
|
27
|
+
}
|
|
28
|
+
/** Runs `npm install -g opencode` and reports the result. */
|
|
29
|
+
async install() {
|
|
30
|
+
return new Promise((resolve) => {
|
|
31
|
+
const stderrChunks = [];
|
|
32
|
+
const child = spawn('npm', ['install', '-g', 'opencode'], {
|
|
33
|
+
stdio: ['ignore', 'inherit', 'pipe'],
|
|
34
|
+
shell: false,
|
|
35
|
+
});
|
|
36
|
+
child.stderr.on('data', (chunk) => {
|
|
37
|
+
stderrChunks.push(chunk);
|
|
38
|
+
});
|
|
39
|
+
child.on('exit', (code) => {
|
|
40
|
+
if (code === 0) {
|
|
41
|
+
resolve({ success: true });
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
const error = Buffer.concat(stderrChunks).toString('utf8').trim();
|
|
45
|
+
resolve({ success: false, error: error || `npm exited with code ${code}` });
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
child.on('error', (err) => {
|
|
49
|
+
resolve({ success: false, error: err.message });
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export const openCodeInstaller = new OpenCodeInstaller();
|
|
55
|
+
//# sourceMappingURL=opencode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../../src/installers/opencode.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { AgentInstaller, InstallCheckResult, EnvCheckResult, InstallResult } from './base.js';
|
|
2
|
+
import type { AgentId } from '../config/schema.js';
|
|
3
|
+
/** Installer for the Qwen CLI agent. */
|
|
4
|
+
declare class QwenInstaller implements AgentInstaller {
|
|
5
|
+
readonly agentId: AgentId;
|
|
6
|
+
readonly manualInstructions: {
|
|
7
|
+
commands: string[];
|
|
8
|
+
docsUrl: string;
|
|
9
|
+
};
|
|
10
|
+
/** Checks whether `qwen --version` succeeds. */
|
|
11
|
+
checkInstalled(): Promise<InstallCheckResult>;
|
|
12
|
+
/** Verifies that `npm` is available on the system. */
|
|
13
|
+
checkEnvironment(): Promise<EnvCheckResult>;
|
|
14
|
+
/** Runs `npm install -g @qwen-code/qwen-code@latest` and reports the result. */
|
|
15
|
+
install(): Promise<InstallResult>;
|
|
16
|
+
}
|
|
17
|
+
export declare const qwenInstaller: QwenInstaller;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=qwen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qwen.d.ts","sourceRoot":"","sources":["../../../src/installers/qwen.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACnG,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,wCAAwC;AACxC,cAAM,aAAc,YAAW,cAAc;IAC3C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAU;IAEnC,QAAQ,CAAC,kBAAkB;;;MAGzB;IAEF,gDAAgD;IAC1C,cAAc,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAWnD,sDAAsD;IAChD,gBAAgB,IAAI,OAAO,CAAC,cAAc,CAAC;IAQjD,gFAAgF;IAC1E,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC;CA2BxC;AAED,eAAO,MAAM,aAAa,eAAsB,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { spawnSync, spawn } from 'node:child_process';
|
|
2
|
+
/** Installer for the Qwen CLI agent. */
|
|
3
|
+
class QwenInstaller {
|
|
4
|
+
agentId = 'qwen';
|
|
5
|
+
manualInstructions = {
|
|
6
|
+
commands: ['npm install -g @qwen-code/qwen-code@latest'],
|
|
7
|
+
docsUrl: 'https://github.com/QwenLM/qwen-code',
|
|
8
|
+
};
|
|
9
|
+
/** Checks whether `qwen --version` succeeds. */
|
|
10
|
+
async checkInstalled() {
|
|
11
|
+
const result = spawnSync('qwen', ['--version'], { encoding: 'utf8' });
|
|
12
|
+
if (result.status !== 0) {
|
|
13
|
+
return { installed: false };
|
|
14
|
+
}
|
|
15
|
+
const output = (result.stdout ?? '') + (result.stderr ?? '');
|
|
16
|
+
const match = output.match(/(\d+\.\d+\.\d+[^\s]*)/);
|
|
17
|
+
const version = match?.[1];
|
|
18
|
+
return { installed: true, ...(version !== undefined ? { version } : {}) };
|
|
19
|
+
}
|
|
20
|
+
/** Verifies that `npm` is available on the system. */
|
|
21
|
+
async checkEnvironment() {
|
|
22
|
+
const result = spawnSync('npm', ['--version'], { encoding: 'utf8' });
|
|
23
|
+
if (result.status !== 0) {
|
|
24
|
+
return { ok: false, missing: ['npm'] };
|
|
25
|
+
}
|
|
26
|
+
return { ok: true, missing: [] };
|
|
27
|
+
}
|
|
28
|
+
/** Runs `npm install -g @qwen-code/qwen-code@latest` and reports the result. */
|
|
29
|
+
async install() {
|
|
30
|
+
return new Promise((resolve) => {
|
|
31
|
+
const stderrChunks = [];
|
|
32
|
+
const child = spawn('npm', ['install', '-g', '@qwen-code/qwen-code@latest'], {
|
|
33
|
+
stdio: ['ignore', 'inherit', 'pipe'],
|
|
34
|
+
shell: false,
|
|
35
|
+
});
|
|
36
|
+
child.stderr.on('data', (chunk) => {
|
|
37
|
+
stderrChunks.push(chunk);
|
|
38
|
+
});
|
|
39
|
+
child.on('exit', (code) => {
|
|
40
|
+
if (code === 0) {
|
|
41
|
+
resolve({ success: true });
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
const error = Buffer.concat(stderrChunks).toString('utf8').trim();
|
|
45
|
+
resolve({ success: false, error: error || `npm exited with code ${code}` });
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
child.on('error', (err) => {
|
|
49
|
+
resolve({ success: false, error: err.message });
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export const qwenInstaller = new QwenInstaller();
|
|
55
|
+
//# sourceMappingURL=qwen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qwen.js","sourceRoot":"","sources":["../../../src/installers/qwen.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registry of agent installers used by the TUI install wizard.
|
|
3
|
+
*
|
|
4
|
+
* Each supported agent maps to an {@link AgentInstaller} that can check
|
|
5
|
+
* whether the agent is installed, verify prerequisites, and perform auto-install.
|
|
6
|
+
*/
|
|
7
|
+
import type { AgentId } from '../config/schema.js';
|
|
8
|
+
import type { AgentInstaller } from './base.js';
|
|
9
|
+
/** Returns the installer for a given agent id, or `undefined` if unregistered. */
|
|
10
|
+
export declare function getInstaller(agentId: AgentId): AgentInstaller | undefined;
|
|
11
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/installers/registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAgBhD,kFAAkF;AAClF,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS,CAEzE"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { claudeCodeInstaller } from './claude-code.js';
|
|
2
|
+
import { openCodeInstaller } from './opencode.js';
|
|
3
|
+
import { qwenInstaller } from './qwen.js';
|
|
4
|
+
import { codexInstaller } from './codex.js';
|
|
5
|
+
import { copilotInstaller } from './copilot.js';
|
|
6
|
+
/** Internal map of agent ids to their installers. */
|
|
7
|
+
const registry = new Map([
|
|
8
|
+
['claude-code', claudeCodeInstaller],
|
|
9
|
+
['opencode', openCodeInstaller],
|
|
10
|
+
['qwen', qwenInstaller],
|
|
11
|
+
['codex', codexInstaller],
|
|
12
|
+
['copilot', copilotInstaller],
|
|
13
|
+
]);
|
|
14
|
+
/** Returns the installer for a given agent id, or `undefined` if unregistered. */
|
|
15
|
+
export function getInstaller(agentId) {
|
|
16
|
+
return registry.get(agentId);
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/installers/registry.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,qDAAqD;AACrD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAA0B;IAChD,CAAC,aAAa,EAAE,mBAAmB,CAAC;IACpC,CAAC,UAAU,EAAE,iBAAiB,CAAC;IAC/B,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,OAAO,EAAE,cAAc,CAAC;IACzB,CAAC,SAAS,EAAE,gBAAgB,CAAC;CAC9B,CAAC,CAAC;AAEH,kFAAkF;AAClF,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -38,7 +38,7 @@ export async function prepareChild(options) {
|
|
|
38
38
|
await deleteBackup(adapter.id, scope);
|
|
39
39
|
};
|
|
40
40
|
return {
|
|
41
|
-
execReq: { command, args, env: { ...cleanEnv, PATH: resolvedPath, ...adapterEnv } },
|
|
41
|
+
execReq: { command, args, env: { ...cleanEnv, PATH: resolvedPath, ...adapterEnv }, agentId: adapter.id, profileId: profile.id },
|
|
42
42
|
cleanup,
|
|
43
43
|
};
|
|
44
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"child.js","sourceRoot":"","sources":["../../../src/launcher/child.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAG1C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAiB7D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAA2B;IAC5D,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAEhF,oCAAoC;IACpC,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,aAAa,KAAK,IAAI,CAAC;IACzC,MAAM,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,aAAa,IAAI,EAAE,CAAC,CAAC;IAE1D,0CAA0C;IAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC1D,MAAM,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAEjD,uDAAuD;IACvD,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,CAAC;IAEvD,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CACjC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAA6B,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CACjG,CAAC;IAEF,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;IAEhE,2EAA2E;IAC3E,MAAM,OAAO,GAAG,KAAK,IAAmB,EAAE;QACxC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;YACnD,IAAI,CAAC;gBAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,0BAA0B,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YACnD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,MAAM,OAAO,CAAC,WAAW,CAAC,MAAiC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;QACD,MAAM,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,UAAU,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"child.js","sourceRoot":"","sources":["../../../src/launcher/child.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAG1C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAiB7D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAA2B;IAC5D,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAEhF,oCAAoC;IACpC,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,aAAa,KAAK,IAAI,CAAC;IACzC,MAAM,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,aAAa,IAAI,EAAE,CAAC,CAAC;IAE1D,0CAA0C;IAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC1D,MAAM,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAEjD,uDAAuD;IACvD,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,CAAC;IAEvD,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CACjC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAA6B,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CACjG,CAAC;IAEF,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;IAEhE,2EAA2E;IAC3E,MAAM,OAAO,GAAG,KAAK,IAAmB,EAAE;QACxC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;YACnD,IAAI,CAAC;gBAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,0BAA0B,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YACnD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,MAAM,OAAO,CAAC,WAAW,CAAC,MAAiC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;QACD,MAAM,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,UAAU,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE;QAC/H,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAA2B;IAC3D,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAEhF,oCAAoC;IACpC,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,aAAa,KAAK,IAAI,CAAC;IACzC,MAAM,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,aAAa,IAAI,EAAE,CAAC,CAAC;IAE1D,0CAA0C;IAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC1D,MAAM,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAEjD,2EAA2E;IAC3E,MAAM,OAAO,GAAG,KAAK,IAAmB,EAAE;QACxC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;YACnD,IAAI,CAAC;gBAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,0BAA0B,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YACnD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,MAAM,OAAO,CAAC,WAAW,CAAC,MAAiC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;QACD,MAAM,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC,CAAC;IAEF,gCAAgC;IAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CACjC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAA6B,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CACjG,CAAC;IACF,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,CAAC;IACvD,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;IAChE,MAAM,QAAQ,GAAG,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,UAAU,EAAE,CAAC;IAEpE,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;YACjC,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;YACzB,KAAK,EAAE,KAAK;YACZ,GAAG,EAAE,QAAQ;SACd,CAAC,CAAC;QAEH,+EAA+E;QAC/E,MAAM,YAAY,GAAG,CAAC,MAAsB,EAAQ,EAAE;YACpD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnB,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAErC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;YAChD,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YAC/C,OAAO,EAAE;iBACN,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;iBACpB,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;YAChD,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YAC/C,OAAO,EAAE;iBACN,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;iBACpB,OAAO,CAAC,GAAG,EAAE;gBACZ,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC3D,OAAO,CAAC,CAAC,CAAC,CAAC;YACb,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
import type { AgentAdapter, LaunchScope } from '../adapters/base.js';
|
|
2
2
|
import type { Profile, Provider } from '../config/schema.js';
|
|
3
|
+
/**
|
|
4
|
+
* Request object for executing an agent after config has been patched.
|
|
5
|
+
* Used by the TUI and CLI to hand off control to the external agent binary.
|
|
6
|
+
*/
|
|
3
7
|
export interface ExecRequest {
|
|
4
8
|
command: string;
|
|
5
9
|
args: string[];
|
|
6
10
|
env: Record<string, string>;
|
|
7
11
|
relaunch?: boolean;
|
|
8
12
|
cleanup?: () => Promise<void>;
|
|
13
|
+
agentId?: string;
|
|
14
|
+
profileId?: string;
|
|
9
15
|
}
|
|
10
16
|
export interface IndependentLaunchOptions {
|
|
11
17
|
adapter: AgentAdapter;
|
|
@@ -17,9 +23,16 @@ export interface IndependentLaunchOptions {
|
|
|
17
23
|
cwd?: string;
|
|
18
24
|
}
|
|
19
25
|
/**
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
26
|
+
* Prepares the agent configuration for an independent launch.
|
|
27
|
+
*
|
|
28
|
+
* Workflow:
|
|
29
|
+
* 1. Backup the current agent config.
|
|
30
|
+
* 2. Generate and write the new agent config from the selected profile.
|
|
31
|
+
* 3. Resolve the full user PATH (via login shell) so the agent binary is discoverable.
|
|
32
|
+
* 4. Return an {@link ExecRequest} with the resolved environment.
|
|
33
|
+
*
|
|
34
|
+
* In this mode the user is responsible for restoring the original config
|
|
35
|
+
* (e.g. via `agento restore`).
|
|
23
36
|
*/
|
|
24
37
|
export declare function launchIndependent(options: IndependentLaunchOptions): Promise<ExecRequest>;
|
|
25
38
|
//# sourceMappingURL=independent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"independent.d.ts","sourceRoot":"","sources":["../../../src/launcher/independent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAI7D,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"independent.d.ts","sourceRoot":"","sources":["../../../src/launcher/independent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAI7D;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,WAAW,CAAC,CA2B/F"}
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import { writeBackup } from '../config/store.js';
|
|
2
2
|
import { shellPathResolver } from './shell-path-resolver.js';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Prepares the agent configuration for an independent launch.
|
|
5
|
+
*
|
|
6
|
+
* Workflow:
|
|
7
|
+
* 1. Backup the current agent config.
|
|
8
|
+
* 2. Generate and write the new agent config from the selected profile.
|
|
9
|
+
* 3. Resolve the full user PATH (via login shell) so the agent binary is discoverable.
|
|
10
|
+
* 4. Return an {@link ExecRequest} with the resolved environment.
|
|
11
|
+
*
|
|
12
|
+
* In this mode the user is responsible for restoring the original config
|
|
13
|
+
* (e.g. via `agento restore`).
|
|
7
14
|
*/
|
|
8
15
|
export async function launchIndependent(options) {
|
|
9
16
|
const { adapter, profile, providers, scope, command, args = [], cwd } = options;
|
|
@@ -21,6 +28,8 @@ export async function launchIndependent(options) {
|
|
|
21
28
|
command,
|
|
22
29
|
args,
|
|
23
30
|
env: { ...cleanEnv, PATH: resolvedPath, ...adapterEnv },
|
|
31
|
+
agentId: adapter.id,
|
|
32
|
+
profileId: profile.id,
|
|
24
33
|
};
|
|
25
34
|
}
|
|
26
35
|
//# sourceMappingURL=independent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"independent.js","sourceRoot":"","sources":["../../../src/launcher/independent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"independent.js","sourceRoot":"","sources":["../../../src/launcher/independent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AA0B7D;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAAiC;IACvE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAEhF,oCAAoC;IACpC,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC3D,MAAM,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,aAAa,IAAI,EAAE,CAAC,CAAC;IAE1D,0CAA0C;IAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC1D,MAAM,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAEjD,uDAAuD;IACvD,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,CAAC;IAEvD,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CACjC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAA6B,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CACjG,CAAC;IAEF,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;IAEhE,OAAO;QACL,OAAO;QACP,IAAI;QACJ,GAAG,EAAE,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,UAAU,EAAE;QACvD,OAAO,EAAE,OAAO,CAAC,EAAE;QACnB,SAAS,EAAE,OAAO,CAAC,EAAE;KACtB,CAAC;AACJ,CAAC"}
|
|
@@ -1,17 +1,36 @@
|
|
|
1
1
|
import { type Profile } from '../config/schema.js';
|
|
2
2
|
export type CreateProfileInput = Omit<Profile, 'id'>;
|
|
3
|
-
/**
|
|
3
|
+
/** Returns all configured profiles. */
|
|
4
4
|
export declare function listProfiles(): Promise<Profile[]>;
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* Adds a new profile after validating against {@link ProfileSchema}.
|
|
7
|
+
* Generates a UUID for the profile id.
|
|
8
|
+
* @returns The newly created profile.
|
|
9
|
+
*/
|
|
6
10
|
export declare function addProfile(input: CreateProfileInput): Promise<Profile>;
|
|
7
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* Updates an existing profile by id.
|
|
13
|
+
* @throws Error if the profile is not found.
|
|
14
|
+
*/
|
|
8
15
|
export declare function updateProfile(id: string, updates: Partial<CreateProfileInput>): Promise<Profile>;
|
|
9
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* Removes a profile by id or name.
|
|
18
|
+
* @throws Error if no matching profile is found.
|
|
19
|
+
*/
|
|
10
20
|
export declare function removeProfile(idOrName: string): Promise<void>;
|
|
11
|
-
/**
|
|
21
|
+
/**
|
|
22
|
+
* Looks up a profile by id or name.
|
|
23
|
+
* @returns The matched profile, or `undefined` if none found.
|
|
24
|
+
*/
|
|
12
25
|
export declare function findProfile(idOrName: string): Promise<Profile | undefined>;
|
|
13
|
-
/**
|
|
26
|
+
/**
|
|
27
|
+
* Moves a model earlier in the profile's model list (decreases its index).
|
|
28
|
+
* @throws Error if the profile or index is invalid.
|
|
29
|
+
*/
|
|
14
30
|
export declare function moveModelUp(profileId: string, modelIndex: number): Promise<Profile>;
|
|
15
|
-
/**
|
|
31
|
+
/**
|
|
32
|
+
* Moves a model later in the profile's model list (increases its index).
|
|
33
|
+
* @throws Error if the profile or index is invalid.
|
|
34
|
+
*/
|
|
16
35
|
export declare function moveModelDown(profileId: string, modelIndex: number): Promise<Profile>;
|
|
17
36
|
//# sourceMappingURL=profile-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile-manager.d.ts","sourceRoot":"","sources":["../../../src/profiles/profile-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,KAAK,OAAO,EAAqB,MAAM,qBAAqB,CAAC;AAErF,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAErD,uCAAuC;AACvC,wBAAsB,YAAY,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAGvD;AAED
|
|
1
|
+
{"version":3,"file":"profile-manager.d.ts","sourceRoot":"","sources":["../../../src/profiles/profile-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,KAAK,OAAO,EAAqB,MAAM,qBAAqB,CAAC;AAErF,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAErD,uCAAuC;AACvC,wBAAsB,YAAY,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAGvD;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAM5E;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,GACnC,OAAO,CAAC,OAAO,CAAC,CAQlB;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQnE;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAGhF;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAYzF;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAY3F"}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
2
|
import { readConfig, writeConfig } from '../config/store.js';
|
|
3
3
|
import { ProfileSchema } from '../config/schema.js';
|
|
4
|
-
/**
|
|
4
|
+
/** Returns all configured profiles. */
|
|
5
5
|
export async function listProfiles() {
|
|
6
6
|
const config = await readConfig();
|
|
7
7
|
return config.profiles;
|
|
8
8
|
}
|
|
9
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* Adds a new profile after validating against {@link ProfileSchema}.
|
|
11
|
+
* Generates a UUID for the profile id.
|
|
12
|
+
* @returns The newly created profile.
|
|
13
|
+
*/
|
|
10
14
|
export async function addProfile(input) {
|
|
11
15
|
const config = await readConfig();
|
|
12
16
|
const profile = ProfileSchema.parse({ ...input, id: randomUUID() });
|
|
@@ -14,7 +18,10 @@ export async function addProfile(input) {
|
|
|
14
18
|
await writeConfig(config);
|
|
15
19
|
return profile;
|
|
16
20
|
}
|
|
17
|
-
/**
|
|
21
|
+
/**
|
|
22
|
+
* Updates an existing profile by id.
|
|
23
|
+
* @throws Error if the profile is not found.
|
|
24
|
+
*/
|
|
18
25
|
export async function updateProfile(id, updates) {
|
|
19
26
|
const config = await readConfig();
|
|
20
27
|
const index = config.profiles.findIndex((p) => p.id === id);
|
|
@@ -25,7 +32,10 @@ export async function updateProfile(id, updates) {
|
|
|
25
32
|
await writeConfig(config);
|
|
26
33
|
return updated;
|
|
27
34
|
}
|
|
28
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* Removes a profile by id or name.
|
|
37
|
+
* @throws Error if no matching profile is found.
|
|
38
|
+
*/
|
|
29
39
|
export async function removeProfile(idOrName) {
|
|
30
40
|
const config = await readConfig();
|
|
31
41
|
const index = config.profiles.findIndex((p) => p.id === idOrName || p.name === idOrName);
|
|
@@ -34,12 +44,18 @@ export async function removeProfile(idOrName) {
|
|
|
34
44
|
config.profiles.splice(index, 1);
|
|
35
45
|
await writeConfig(config);
|
|
36
46
|
}
|
|
37
|
-
/**
|
|
47
|
+
/**
|
|
48
|
+
* Looks up a profile by id or name.
|
|
49
|
+
* @returns The matched profile, or `undefined` if none found.
|
|
50
|
+
*/
|
|
38
51
|
export async function findProfile(idOrName) {
|
|
39
52
|
const config = await readConfig();
|
|
40
53
|
return config.profiles.find((p) => p.id === idOrName || p.name === idOrName);
|
|
41
54
|
}
|
|
42
|
-
/**
|
|
55
|
+
/**
|
|
56
|
+
* Moves a model earlier in the profile's model list (decreases its index).
|
|
57
|
+
* @throws Error if the profile or index is invalid.
|
|
58
|
+
*/
|
|
43
59
|
export async function moveModelUp(profileId, modelIndex) {
|
|
44
60
|
const config = await readConfig();
|
|
45
61
|
const profile = config.profiles.find((p) => p.id === profileId);
|
|
@@ -55,7 +71,10 @@ export async function moveModelUp(profileId, modelIndex) {
|
|
|
55
71
|
await writeConfig(config);
|
|
56
72
|
return updated;
|
|
57
73
|
}
|
|
58
|
-
/**
|
|
74
|
+
/**
|
|
75
|
+
* Moves a model later in the profile's model list (increases its index).
|
|
76
|
+
* @throws Error if the profile or index is invalid.
|
|
77
|
+
*/
|
|
59
78
|
export async function moveModelDown(profileId, modelIndex) {
|
|
60
79
|
const config = await readConfig();
|
|
61
80
|
const profile = config.profiles.find((p) => p.id === profileId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile-manager.js","sourceRoot":"","sources":["../../../src/profiles/profile-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAmC,MAAM,qBAAqB,CAAC;AAIrF,uCAAuC;AACvC,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,OAAO,MAAM,CAAC,QAAQ,CAAC;AACzB,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"profile-manager.js","sourceRoot":"","sources":["../../../src/profiles/profile-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,26 @@
|
|
|
1
1
|
import { type Provider } from '../config/schema.js';
|
|
2
2
|
export type CreateProviderInput = Omit<Provider, 'id'>;
|
|
3
|
-
/**
|
|
3
|
+
/** Returns all configured providers. */
|
|
4
4
|
export declare function listProviders(): Promise<Provider[]>;
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* Adds a new provider after validating the input against {@link ProviderSchema}.
|
|
7
|
+
* Generates a UUID for the provider id.
|
|
8
|
+
* @returns The newly created provider.
|
|
9
|
+
*/
|
|
6
10
|
export declare function addProvider(input: CreateProviderInput): Promise<Provider>;
|
|
7
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* Updates an existing provider by id.
|
|
13
|
+
* @throws Error if the provider is not found.
|
|
14
|
+
*/
|
|
8
15
|
export declare function updateProvider(id: string, updates: Partial<CreateProviderInput>): Promise<Provider>;
|
|
9
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* Removes a provider by id or name.
|
|
18
|
+
* @throws Error if no matching provider is found.
|
|
19
|
+
*/
|
|
10
20
|
export declare function removeProvider(idOrName: string): Promise<void>;
|
|
11
|
-
/**
|
|
21
|
+
/**
|
|
22
|
+
* Looks up a provider by id or name.
|
|
23
|
+
* @returns The matched provider, or `undefined` if none found.
|
|
24
|
+
*/
|
|
12
25
|
export declare function findProvider(idOrName: string): Promise<Provider | undefined>;
|
|
13
26
|
//# sourceMappingURL=provider-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-manager.d.ts","sourceRoot":"","sources":["../../../src/providers/provider-manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"provider-manager.d.ts","sourceRoot":"","sources":["../../../src/providers/provider-manager.ts"],"names":[],"mappings":"AASA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpE,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAEvD,wCAAwC;AACxC,wBAAsB,aAAa,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAGzD;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAM/E;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACpC,OAAO,CAAC,QAAQ,CAAC,CAQnB;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQpE;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAGlF"}
|