@aligndottech/cli 0.47.0 → 0.48.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/agents.d.ts +20 -0
- package/dist/commands/agents.d.ts.map +1 -0
- package/dist/commands/agents.js +60 -0
- package/dist/commands/agents.js.map +1 -0
- package/dist/commands/connect-agents.d.ts +3 -1
- package/dist/commands/connect-agents.d.ts.map +1 -1
- package/dist/commands/connect-agents.js +15 -5
- package/dist/commands/connect-agents.js.map +1 -1
- package/dist/commands/registry.d.ts.map +1 -1
- package/dist/commands/registry.js +3 -0
- package/dist/commands/registry.js.map +1 -1
- package/dist/commands/setup.d.ts +1 -0
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +10 -5
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/use.js +1 -1
- package/dist/commands/use.js.map +1 -1
- package/dist/lib/foreign-env.d.ts +11 -0
- package/dist/lib/foreign-env.d.ts.map +1 -1
- package/dist/lib/foreign-env.js +23 -0
- package/dist/lib/foreign-env.js.map +1 -1
- package/dist/lib/launch/adapters/claude-code.d.ts +8 -0
- package/dist/lib/launch/adapters/claude-code.d.ts.map +1 -1
- package/dist/lib/launch/adapters/claude-code.js.map +1 -1
- package/dist/lib/launch/adapters/codex.d.ts +17 -0
- package/dist/lib/launch/adapters/codex.d.ts.map +1 -0
- package/dist/lib/launch/adapters/codex.js +44 -0
- package/dist/lib/launch/adapters/codex.js.map +1 -0
- package/dist/lib/launch/adapters/copilot.d.ts +17 -0
- package/dist/lib/launch/adapters/copilot.d.ts.map +1 -0
- package/dist/lib/launch/adapters/copilot.js +29 -0
- package/dist/lib/launch/adapters/copilot.js.map +1 -0
- package/dist/lib/launch/adapters/gemini-cli.d.ts +25 -0
- package/dist/lib/launch/adapters/gemini-cli.d.ts.map +1 -0
- package/dist/lib/launch/adapters/gemini-cli.js +73 -0
- package/dist/lib/launch/adapters/gemini-cli.js.map +1 -0
- package/dist/lib/launch/agents.d.ts +12 -2
- package/dist/lib/launch/agents.d.ts.map +1 -1
- package/dist/lib/launch/agents.js +18 -8
- package/dist/lib/launch/agents.js.map +1 -1
- package/dist/lib/launch/codex-state.d.ts +31 -0
- package/dist/lib/launch/codex-state.d.ts.map +1 -0
- package/dist/lib/launch/codex-state.js +92 -0
- package/dist/lib/launch/codex-state.js.map +1 -0
- package/dist/lib/launch/copilot-state.d.ts +19 -0
- package/dist/lib/launch/copilot-state.d.ts.map +1 -0
- package/dist/lib/launch/copilot-state.js +51 -0
- package/dist/lib/launch/copilot-state.js.map +1 -0
- package/dist/lib/launch/gemini-state.d.ts +32 -0
- package/dist/lib/launch/gemini-state.d.ts.map +1 -0
- package/dist/lib/launch/gemini-state.js +59 -0
- package/dist/lib/launch/gemini-state.js.map +1 -0
- package/dist/lib/launch/gemini-trust.d.ts +26 -0
- package/dist/lib/launch/gemini-trust.d.ts.map +1 -0
- package/dist/lib/launch/gemini-trust.js +103 -0
- package/dist/lib/launch/gemini-trust.js.map +1 -0
- package/dist/lib/launch/install.d.ts +33 -0
- package/dist/lib/launch/install.d.ts.map +1 -0
- package/dist/lib/launch/install.js +48 -0
- package/dist/lib/launch/install.js.map +1 -0
- package/dist/lib/launch/launch-files.d.ts +15 -0
- package/dist/lib/launch/launch-files.d.ts.map +1 -1
- package/dist/lib/launch/launch-files.js +64 -4
- package/dist/lib/launch/launch-files.js.map +1 -1
- package/dist/lib/launch/launch.d.ts +32 -7
- package/dist/lib/launch/launch.d.ts.map +1 -1
- package/dist/lib/launch/launch.js +66 -40
- package/dist/lib/launch/launch.js.map +1 -1
- package/dist/lib/launch/pick-agent.d.ts +12 -5
- package/dist/lib/launch/pick-agent.d.ts.map +1 -1
- package/dist/lib/launch/pick-agent.js +46 -19
- package/dist/lib/launch/pick-agent.js.map +1 -1
- package/dist/lib/launch/picker-options.d.ts +30 -0
- package/dist/lib/launch/picker-options.d.ts.map +1 -0
- package/dist/lib/launch/picker-options.js +42 -0
- package/dist/lib/launch/picker-options.js.map +1 -0
- package/dist/lib/launch/prompts.d.ts +11 -0
- package/dist/lib/launch/prompts.d.ts.map +1 -0
- package/dist/lib/launch/prompts.js +27 -0
- package/dist/lib/launch/prompts.js.map +1 -0
- package/dist/lib/launch/registry/agents/claude-code.d.ts +3 -0
- package/dist/lib/launch/registry/agents/claude-code.d.ts.map +1 -0
- package/dist/lib/launch/registry/agents/claude-code.js +11 -0
- package/dist/lib/launch/registry/agents/claude-code.js.map +1 -0
- package/dist/lib/launch/registry/agents/codex.d.ts +3 -0
- package/dist/lib/launch/registry/agents/codex.d.ts.map +1 -0
- package/dist/lib/launch/registry/agents/codex.js +11 -0
- package/dist/lib/launch/registry/agents/codex.js.map +1 -0
- package/dist/lib/launch/registry/agents/copilot.d.ts +3 -0
- package/dist/lib/launch/registry/agents/copilot.d.ts.map +1 -0
- package/dist/lib/launch/registry/agents/copilot.js +11 -0
- package/dist/lib/launch/registry/agents/copilot.js.map +1 -0
- package/dist/lib/launch/registry/agents/cursor.d.ts +3 -0
- package/dist/lib/launch/registry/agents/cursor.d.ts.map +1 -0
- package/dist/lib/launch/registry/agents/cursor.js +11 -0
- package/dist/lib/launch/registry/agents/cursor.js.map +1 -0
- package/dist/lib/launch/registry/agents/gemini-cli.d.ts +3 -0
- package/dist/lib/launch/registry/agents/gemini-cli.d.ts.map +1 -0
- package/dist/lib/launch/registry/agents/gemini-cli.js +11 -0
- package/dist/lib/launch/registry/agents/gemini-cli.js.map +1 -0
- package/dist/lib/launch/registry/agents/opencode.d.ts +3 -0
- package/dist/lib/launch/registry/agents/opencode.d.ts.map +1 -0
- package/dist/lib/launch/registry/agents/opencode.js +11 -0
- package/dist/lib/launch/registry/agents/opencode.js.map +1 -0
- package/dist/lib/launch/registry/agents/pi.d.ts +3 -0
- package/dist/lib/launch/registry/agents/pi.d.ts.map +1 -0
- package/dist/lib/launch/registry/agents/pi.js +11 -0
- package/dist/lib/launch/registry/agents/pi.js.map +1 -0
- package/dist/lib/launch/registry/index.d.ts +5 -0
- package/dist/lib/launch/registry/index.d.ts.map +1 -0
- package/dist/lib/launch/registry/index.js +13 -0
- package/dist/lib/launch/registry/index.js.map +1 -0
- package/dist/lib/launch/registry/types.d.ts +31 -0
- package/dist/lib/launch/registry/types.d.ts.map +1 -0
- package/dist/lib/launch/registry/types.js +2 -0
- package/dist/lib/launch/registry/types.js.map +1 -0
- package/dist/lib/launch/run-agent.d.ts +4 -0
- package/dist/lib/launch/run-agent.d.ts.map +1 -1
- package/dist/lib/launch/run-agent.js +1 -1
- package/dist/lib/launch/run-agent.js.map +1 -1
- package/dist/lib/launch/strict-entry.d.ts +49 -0
- package/dist/lib/launch/strict-entry.d.ts.map +1 -0
- package/dist/lib/launch/strict-entry.js +106 -0
- package/dist/lib/launch/strict-entry.js.map +1 -0
- package/package.json +3 -2
|
@@ -1,19 +1,23 @@
|
|
|
1
|
+
import { spawn as nodeSpawn } from 'node:child_process';
|
|
1
2
|
import os from 'node:os';
|
|
2
3
|
import { performance } from 'node:perf_hooks';
|
|
3
4
|
import { createConfigStore } from '../config.js';
|
|
4
5
|
import { resolveEnv } from '../resolve-env.js';
|
|
5
|
-
import { agentByName, resolveAgentBin, supportedAgents } from './agents.js';
|
|
6
|
-
import { buildClaudeLaunch } from './adapters/claude-code.js';
|
|
7
|
-
import { buildCursorLaunch } from './adapters/cursor.js';
|
|
8
|
-
import { buildOpenCodeLaunch } from './adapters/opencode.js';
|
|
9
|
-
import { buildPiLaunch } from './adapters/pi.js';
|
|
6
|
+
import { agentByName, byPriority, resolveAgentBin, supportedAgents } from './agents.js';
|
|
10
7
|
import { applyConfigWrite } from './config-writes.js';
|
|
8
|
+
import { readCodexState } from './codex-state.js';
|
|
9
|
+
import { readCopilotState } from './copilot-state.js';
|
|
11
10
|
import { readCursorState } from './cursor-state.js';
|
|
12
11
|
import { findOnPath } from './detect.js';
|
|
13
|
-
import {
|
|
12
|
+
import { offerInstall } from './install.js';
|
|
13
|
+
import { chooseAgent } from './picker-options.js';
|
|
14
|
+
import { confirmDefaultNo, selectAgent } from './prompts.js';
|
|
15
|
+
import { readGeminiState } from './gemini-state.js';
|
|
16
|
+
import { launchCacheDir, pruneLaunchFiles, writeIfChanged } from './launch-files.js';
|
|
14
17
|
import { readOpenCodeState } from './opencode-state.js';
|
|
15
18
|
import { readPiState } from './pi-state.js';
|
|
16
19
|
import { readProjectState } from './project-state.js';
|
|
20
|
+
import { specByName } from './registry/index.js';
|
|
17
21
|
import { runAgent } from './run-agent.js';
|
|
18
22
|
const set = (v) => v !== undefined && v !== '';
|
|
19
23
|
/**
|
|
@@ -38,9 +42,13 @@ function defaultDeps() {
|
|
|
38
42
|
readOpenCodeState: (cwd, home) => readOpenCodeState(cwd, home, { localIsDefault: isLocalDefault() }, process.env),
|
|
39
43
|
readPiState: (cwd, home, env) => readPiState(cwd, home, { localIsDefault: isLocalDefault() }, env),
|
|
40
44
|
readCursorState: (cwd, home) => readCursorState(cwd, home, { localIsDefault: isLocalDefault() }),
|
|
45
|
+
readCodexState: (cwd, home, env, platform, passthrough) => readCodexState(cwd, home, { localIsDefault: isLocalDefault() }, env, platform, passthrough),
|
|
46
|
+
readGeminiState: (cwd, home, env, platform) => readGeminiState(cwd, home, { localIsDefault: isLocalDefault() }, env, platform),
|
|
47
|
+
readCopilotState: (cwd, home, env, platform) => readCopilotState(cwd, home, { localIsDefault: isLocalDefault() }, env, platform),
|
|
41
48
|
applyConfigWrite: (w, note) => applyConfigWrite(w, note, { has: (f) => config.wasWriteRefused(f), add: (f) => config.markWriteRefused(f), remove: (f) => config.unmarkWriteRefused(f) }),
|
|
42
49
|
cacheDir: launchCacheDir,
|
|
43
50
|
writeIfChanged,
|
|
51
|
+
pruneLaunchFiles,
|
|
44
52
|
runAgent: (spec) => runAgent(spec),
|
|
45
53
|
record: (agent) => {
|
|
46
54
|
// Dynamic and un-awaited: telemetry consent rules live in recordFunnelStage, and none of
|
|
@@ -49,14 +57,9 @@ function defaultDeps() {
|
|
|
49
57
|
.then((m) => m.recordFunnelStage(config.getEnvironment('local'), 'agent_launched', 'align', { agent }))
|
|
50
58
|
.catch(() => undefined);
|
|
51
59
|
},
|
|
52
|
-
pick:
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
message: 'Which coding agent should `align` open?',
|
|
56
|
-
options: candidates.map((a) => ({ value: a.name, label: a.label })),
|
|
57
|
-
});
|
|
58
|
-
return clack.isCancel(answer) ? null : answer;
|
|
59
|
-
},
|
|
60
|
+
pick: (options, initial) => selectAgent(options, initial, process.stderr),
|
|
61
|
+
confirm: (message) => confirmDefaultNo(message, process.stderr),
|
|
62
|
+
spawnInstall: (command, args, options) => nodeSpawn(command, args, options),
|
|
60
63
|
err: (l) => console.error(l),
|
|
61
64
|
now: () => performance.now(),
|
|
62
65
|
};
|
|
@@ -68,13 +71,6 @@ function splitArgv(argv) {
|
|
|
68
71
|
const before = sep < 0 ? user : user.slice(0, sep);
|
|
69
72
|
return { operands: before.filter((a) => !a.startsWith('-')), passthrough: sep < 0 ? [] : user.slice(sep + 1) };
|
|
70
73
|
}
|
|
71
|
-
/** One adapter per launchable agent. Each reads the project state ITS agent would load. */
|
|
72
|
-
const BUILDERS = {
|
|
73
|
-
'claude-code': (d, base) => buildClaudeLaunch({ ...base, ...d.readProjectState(d.cwd, d.home) }),
|
|
74
|
-
opencode: (d, base) => buildOpenCodeLaunch({ ...base, env: d.env, ...d.readOpenCodeState(d.cwd, d.home) }),
|
|
75
|
-
pi: (d, base) => buildPiLaunch({ ...base, ...d.readPiState(d.cwd, d.home, d.env) }),
|
|
76
|
-
cursor: (d, base) => buildCursorLaunch({ ...base, ...d.readCursorState(d.cwd, d.home) }),
|
|
77
|
-
};
|
|
78
74
|
/**
|
|
79
75
|
* What bare `align` does once a local graph exists: open the user's coding agent with Align
|
|
80
76
|
* wired in for that session only. Returns `handled: false` when the caller should show the
|
|
@@ -106,33 +102,48 @@ export async function launchIfChosen(overrides = {}) {
|
|
|
106
102
|
const stored = agent !== undefined;
|
|
107
103
|
let announce;
|
|
108
104
|
if (!agent) {
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
|
|
105
|
+
const works = supportedAgents();
|
|
106
|
+
const isInstalled = (a) => resolveAgentBin(a, d.findOnPath, d.env, d.platform) !== null;
|
|
107
|
+
const installed = works.filter(isInstalled);
|
|
108
|
+
if (d.isTTY) {
|
|
109
|
+
// Every agent Align supports, installed ones first; a missing one can be installed from
|
|
110
|
+
// here. Always asked on a terminal: with one installed it is preselected, so Enter keeps it.
|
|
111
|
+
const chosen = await chooseAgent(works, {
|
|
112
|
+
isInstalled,
|
|
113
|
+
select: (options, initial) => d.pick(options, initial),
|
|
114
|
+
offer: (a) => offerInstall(specByName(a.name), {
|
|
115
|
+
isTTY: d.isTTY,
|
|
116
|
+
platform: d.platform,
|
|
117
|
+
confirm: (m) => d.confirm(m),
|
|
118
|
+
spawn: d.spawnInstall,
|
|
119
|
+
onPath: (bin) => d.findOnPath(bin, d.env, d.platform),
|
|
120
|
+
say: d.err,
|
|
121
|
+
}),
|
|
122
|
+
say: d.err,
|
|
123
|
+
});
|
|
124
|
+
if (!chosen)
|
|
125
|
+
return { handled: true, code: 1 };
|
|
126
|
+
agent = chosen;
|
|
127
|
+
}
|
|
128
|
+
else if (installed.length === 0) {
|
|
112
129
|
d.err(`No coding agent that Align can open was found on your PATH. Align works with: ${works.map((a) => a.label).join(', ')}.`);
|
|
113
130
|
for (const a of works)
|
|
114
131
|
d.err(`Install ${a.label}: ${a.install}`);
|
|
115
|
-
d.err('Then run `align` again.');
|
|
132
|
+
d.err('Then run `align` again. `align agents` lists them all.');
|
|
116
133
|
return { handled: true, code: 1 };
|
|
117
134
|
}
|
|
118
|
-
if (installed.length === 1) {
|
|
135
|
+
else if (installed.length === 1) {
|
|
119
136
|
agent = installed[0];
|
|
120
137
|
announce = `Opening ${agent.label}. Switch any time with \`align use\`.`;
|
|
121
138
|
}
|
|
122
|
-
else if (d.isTTY) {
|
|
123
|
-
const choice = await d.pick(installed);
|
|
124
|
-
agent = installed.find((a) => a.name === choice);
|
|
125
|
-
if (!agent)
|
|
126
|
-
return { handled: true, code: 1 };
|
|
127
|
-
}
|
|
128
139
|
else {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
140
|
+
// An explicit `align -- ...` with no terminal (a script's first run). Take the old order, so
|
|
141
|
+
// what a script opened before wave A it still opens, and say which one.
|
|
142
|
+
agent = byPriority(installed)[0];
|
|
143
|
+
announce = `Opening ${agent.label}: more than one coding agent is installed and there is no terminal to ask. Change it with: align use <agent>`;
|
|
133
144
|
}
|
|
134
145
|
}
|
|
135
|
-
const build =
|
|
146
|
+
const build = specByName(agent.name)?.build;
|
|
136
147
|
if (!agent.supported || !build) {
|
|
137
148
|
d.err(`${agent.label} launching is coming soon; showing your graph instead. Switch with \`align use\`.`);
|
|
138
149
|
return { handled: false };
|
|
@@ -147,12 +158,27 @@ export async function launchIfChosen(overrides = {}) {
|
|
|
147
158
|
return explicit ? { handled: true, code: 127 } : { handled: false };
|
|
148
159
|
}
|
|
149
160
|
const dir = d.cacheDir(d.env);
|
|
150
|
-
|
|
161
|
+
let built;
|
|
162
|
+
try {
|
|
163
|
+
built = build(d, { passthrough, cachePath: (name) => `${dir}/${name}` });
|
|
164
|
+
}
|
|
165
|
+
catch (e) {
|
|
166
|
+
// Reading the user's or a repo's config is reading untrusted input. Whatever it does to the
|
|
167
|
+
// reader, the user still gets their agent, without Align, and one line instead of a trace.
|
|
168
|
+
d.err(`Could not prepare Align for ${agent.label} (${e.message}). Opening it without Align's graph.`);
|
|
169
|
+
built = { bin: agent.bin, args: [...passthrough], env: { ALIGN_WRAPPED: '1' }, files: [] };
|
|
170
|
+
}
|
|
151
171
|
// The adapter names the agent's usual binary; run whichever name is actually installed.
|
|
152
172
|
const spec = resolved && resolved.bin !== built.bin ? { ...built, bin: resolved.bin } : built;
|
|
153
173
|
try {
|
|
154
|
-
for (const f of spec.files)
|
|
155
|
-
|
|
174
|
+
for (const f of spec.files) {
|
|
175
|
+
if (f.mode === undefined)
|
|
176
|
+
d.writeIfChanged(dir, f.name, f.content);
|
|
177
|
+
else
|
|
178
|
+
d.writeIfChanged(dir, f.name, f.content, { mode: f.mode });
|
|
179
|
+
}
|
|
180
|
+
if (spec.prune)
|
|
181
|
+
d.pruneLaunchFiles(dir, spec.prune.prefix, { keep: spec.prune.keep, remove: spec.prune.remove });
|
|
156
182
|
}
|
|
157
183
|
catch (e) {
|
|
158
184
|
d.err(`Could not write launch files (${e.message}). Showing your graph instead.`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launch.js","sourceRoot":"","sources":["../../../src/lib/launch/launch.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"launch.js","sourceRoot":"","sources":["../../../src/lib/launch/launch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,24 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { LaunchAgentId } from './registry/types.js';
|
|
2
2
|
import { type LaunchAgent } from './agents.js';
|
|
3
|
+
import { type InstallOfferDeps } from './install.js';
|
|
4
|
+
import { type PickerOption } from './picker-options.js';
|
|
3
5
|
/**
|
|
4
6
|
* The wizard's "which coding agent?" step (C5). It reads the same table and the same PATH scan
|
|
5
7
|
* the launcher does and stores through the same config key, so what the wizard picks is exactly
|
|
6
|
-
* what bare `align` opens afterwards.
|
|
8
|
+
* what bare `align` opens afterwards. On a terminal the picker lists every supported agent,
|
|
9
|
+
* installed ones first; picking a missing one offers its install (plan Decision 4).
|
|
7
10
|
*/
|
|
8
11
|
export interface PickAgentDeps {
|
|
9
12
|
env: Record<string, string | undefined>;
|
|
10
13
|
platform: string;
|
|
11
14
|
agents: readonly LaunchAgent[];
|
|
12
15
|
findOnPath(bin: string, env: Record<string, string | undefined>, platform: string): string | null;
|
|
13
|
-
/** Resolves null when the user cancels. Only called on a terminal
|
|
14
|
-
select(
|
|
16
|
+
/** Resolves null when the user cancels. Only called on a terminal. `initial` is preselected. */
|
|
17
|
+
select(options: PickerOption[], initial?: LaunchAgentId): Promise<LaunchAgentId | null>;
|
|
18
|
+
/** Default-No question: true on yes, false on no, null on Ctrl-C (install-on-pick). */
|
|
19
|
+
confirm(message: string): Promise<boolean | null>;
|
|
20
|
+
/** Runs an install argv the user approved. */
|
|
21
|
+
spawn: InstallOfferDeps['spawn'];
|
|
15
22
|
say(line: string): void;
|
|
16
23
|
}
|
|
17
24
|
/** The user cancelled the picker: the wizard stops, like any other cancelled prompt. */
|
|
@@ -24,5 +31,5 @@ export interface AgentConfig {
|
|
|
24
31
|
export declare function pickAgent(config: AgentConfig, opts: {
|
|
25
32
|
interactive: boolean;
|
|
26
33
|
approve?: boolean;
|
|
27
|
-
}, overrides?: Partial<PickAgentDeps>): Promise<
|
|
34
|
+
}, overrides?: Partial<PickAgentDeps>): Promise<LaunchAgentId | null | typeof PICK_CANCELLED>;
|
|
28
35
|
//# sourceMappingURL=pick-agent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pick-agent.d.ts","sourceRoot":"","sources":["../../../src/lib/launch/pick-agent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pick-agent.d.ts","sourceRoot":"","sources":["../../../src/lib/launch/pick-agent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAA2B,KAAK,WAAW,EAAgD,MAAM,aAAa,CAAC;AAEtH,OAAO,EAAE,KAAK,gBAAgB,EAAgB,MAAM,cAAc,CAAC;AACnE,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAIrE;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IAC/B,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAClG,gGAAgG;IAChG,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACxF,uFAAuF;IACvF,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAClD,8CAA8C;IAC9C,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACjC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,wFAAwF;AACxF,eAAO,MAAM,cAAc,EAAG,WAAoB,CAAC;AAEnD,MAAM,WAAW,WAAW;IAC1B,QAAQ,IAAI,MAAM,GAAG,SAAS,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,CAAC,IAAI,OAAO,CAAC;CACzB;AAeD,wBAAsB,SAAS,CAC7B,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE;IAAE,WAAW,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,EACjD,SAAS,GAAE,OAAO,CAAC,aAAa,CAAM,GACrC,OAAO,CAAC,aAAa,GAAG,IAAI,GAAG,OAAO,cAAc,CAAC,CAiEvD"}
|
|
@@ -1,49 +1,76 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { spawn as nodeSpawn } from 'node:child_process';
|
|
2
|
+
import { agentByName, byPriority, PRE_WAVE_A, resolveAgentBin, supportedAgents } from './agents.js';
|
|
2
3
|
import { findOnPath } from './detect.js';
|
|
4
|
+
import { offerInstall } from './install.js';
|
|
5
|
+
import { chooseAgent } from './picker-options.js';
|
|
6
|
+
import { confirmDefaultNo, selectAgent } from './prompts.js';
|
|
7
|
+
import { specByName } from './registry/index.js';
|
|
3
8
|
/** The user cancelled the picker: the wizard stops, like any other cancelled prompt. */
|
|
4
9
|
export const PICK_CANCELLED = 'cancelled';
|
|
5
|
-
async function clackSelect(candidates) {
|
|
6
|
-
const clack = await import('@clack/prompts');
|
|
7
|
-
const answer = await clack.select({
|
|
8
|
-
message: 'Which coding agent should `align` open?',
|
|
9
|
-
options: candidates.map((a) => ({ value: a.name, label: a.label })),
|
|
10
|
-
});
|
|
11
|
-
return clack.isCancel(answer) ? null : answer;
|
|
12
|
-
}
|
|
13
10
|
function defaultDeps() {
|
|
14
11
|
return {
|
|
15
12
|
env: process.env,
|
|
16
13
|
platform: process.platform,
|
|
17
14
|
agents: supportedAgents(),
|
|
18
15
|
findOnPath,
|
|
19
|
-
select:
|
|
16
|
+
select: (options, initial) => selectAgent(options, initial),
|
|
17
|
+
confirm: (message) => confirmDefaultNo(message),
|
|
18
|
+
spawn: (command, args, options) => nodeSpawn(command, args, options),
|
|
20
19
|
say: (l) => console.log(l),
|
|
21
20
|
};
|
|
22
21
|
}
|
|
23
22
|
export async function pickAgent(config, opts, overrides = {}) {
|
|
24
23
|
const d = { ...defaultDeps(), ...overrides };
|
|
25
|
-
const
|
|
24
|
+
const isInstalled = (a) => resolveAgentBin(a, d.findOnPath, d.env, d.platform) !== null;
|
|
25
|
+
const installed = d.agents.filter(isInstalled);
|
|
26
26
|
// A re-run keeps the choice, provided it can still be launched; `align use` changes it. A
|
|
27
27
|
// stored agent that has left PATH is treated as no choice at all.
|
|
28
28
|
const stored = agentByName(config.getAgent());
|
|
29
29
|
if (stored && installed.some((a) => a.name === stored.name))
|
|
30
30
|
return stored.name;
|
|
31
|
-
if (installed.length === 0) {
|
|
31
|
+
if (installed.length === 0 && (!opts.interactive || opts.approve)) {
|
|
32
32
|
d.say('No coding agent that Align can open was found on your PATH. Align works with:');
|
|
33
33
|
for (const a of d.agents)
|
|
34
34
|
d.say(` ${a.label}: ${a.install}`);
|
|
35
|
-
d.say('Install one, then run `align` again.');
|
|
35
|
+
d.say('Install one, then run `align` again. `align agents` lists them all.');
|
|
36
36
|
return null;
|
|
37
37
|
}
|
|
38
|
+
// Without a terminal and without --approve, only the agents launchable before wave A are
|
|
39
|
+
// weighed when any is installed: a machine with Claude Code plus Codex picks Claude Code, as it
|
|
40
|
+
// did before Codex could be launched, and two older agents still are not guessed between.
|
|
41
|
+
const preWaveA = installed.filter((a) => PRE_WAVE_A.has(a.name));
|
|
42
|
+
const unattended = !opts.interactive && !opts.approve && preWaveA.length > 0 ? preWaveA : installed;
|
|
38
43
|
let chosen;
|
|
39
|
-
if (
|
|
40
|
-
chosen = installed[0];
|
|
44
|
+
if (opts.approve) {
|
|
45
|
+
chosen = byPriority(installed)[0];
|
|
41
46
|
}
|
|
42
47
|
else if (opts.interactive) {
|
|
43
|
-
|
|
44
|
-
|
|
48
|
+
// Always asked on a terminal: with one installed it is preselected, so Enter keeps it.
|
|
49
|
+
chosen = await chooseAgent(d.agents, {
|
|
50
|
+
isInstalled,
|
|
51
|
+
select: (options, initial) => d.select(options, initial),
|
|
52
|
+
offer: (a) => offerInstall(specByName(a.name), {
|
|
53
|
+
isTTY: true,
|
|
54
|
+
platform: d.platform,
|
|
55
|
+
confirm: (m) => d.confirm(m),
|
|
56
|
+
spawn: d.spawn,
|
|
57
|
+
onPath: (bin) => d.findOnPath(bin, d.env, d.platform),
|
|
58
|
+
say: d.say,
|
|
59
|
+
}),
|
|
60
|
+
say: d.say,
|
|
61
|
+
});
|
|
62
|
+
if (chosen === null) {
|
|
63
|
+
// With nothing installed, leaving the picker is not cancelling setup: it carries on with no
|
|
64
|
+
// agent chosen, as it did before the picker listed missing agents.
|
|
65
|
+
if (installed.length === 0) {
|
|
66
|
+
d.say('No agent chosen. Install one, then run `align` again. `align agents` lists them all.');
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
45
69
|
return PICK_CANCELLED;
|
|
46
|
-
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
else if (unattended.length === 1) {
|
|
73
|
+
chosen = unattended[0];
|
|
47
74
|
}
|
|
48
75
|
else {
|
|
49
76
|
d.say(`More than one coding agent is installed (${installed.map((a) => a.label).join(', ')}) and there is no terminal to ask in.`);
|
|
@@ -56,7 +83,7 @@ export async function pickAgent(config, opts, overrides = {}) {
|
|
|
56
83
|
config.setAgent(chosen.name);
|
|
57
84
|
if (wasOff)
|
|
58
85
|
d.say('Launching is on again: `align use --undo` had turned it off.');
|
|
59
|
-
if (installed.length === 1)
|
|
86
|
+
if (installed.length === 1 || unattended.length === 1)
|
|
60
87
|
d.say(`Using ${chosen.label}. Switch any time with \`align use\`.`);
|
|
61
88
|
return chosen.name;
|
|
62
89
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pick-agent.js","sourceRoot":"","sources":["../../../src/lib/launch/pick-agent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pick-agent.js","sourceRoot":"","sources":["../../../src/lib/launch/pick-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { LaunchAgent } from './agents.js';
|
|
2
|
+
import type { InstallOutcome } from './install.js';
|
|
3
|
+
import type { LaunchAgentId } from './registry/types.js';
|
|
4
|
+
export interface PickerOption {
|
|
5
|
+
value: LaunchAgentId;
|
|
6
|
+
label: string;
|
|
7
|
+
hint?: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Every agent Align supports, for the "which coding agent?" picker: the installed ones first,
|
|
11
|
+
* then the rest, each by label, the rest marked with how to install them. Built from whatever
|
|
12
|
+
* list it is given, so a new registry spec appears with no change here.
|
|
13
|
+
*/
|
|
14
|
+
export declare function pickerOptions(agents: readonly LaunchAgent[], isInstalled: (a: LaunchAgent) => boolean): PickerOption[];
|
|
15
|
+
export interface ChooseDeps {
|
|
16
|
+
isInstalled(a: LaunchAgent): boolean;
|
|
17
|
+
/** Resolves null when the user cancels. `initial` is the row the cursor starts on. */
|
|
18
|
+
select(options: PickerOption[], initial?: LaunchAgentId): Promise<LaunchAgentId | null>;
|
|
19
|
+
/** Decision 4: offer to install a picked agent that is missing (install.ts). */
|
|
20
|
+
offer(a: LaunchAgent): Promise<InstallOutcome>;
|
|
21
|
+
say(line: string): void;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Show the picker until the user picks an installed agent (or one that installs and is then
|
|
25
|
+
* found on PATH) or cancels, at the picker or at the install question. A plain No, a printed
|
|
26
|
+
* installer or a failed install returns to the picker. With exactly one agent installed the
|
|
27
|
+
* cursor starts on it, so Enter keeps what bare `align` used to pick without asking.
|
|
28
|
+
*/
|
|
29
|
+
export declare function chooseAgent(agents: readonly LaunchAgent[], d: ChooseDeps): Promise<LaunchAgent | null>;
|
|
30
|
+
//# sourceMappingURL=picker-options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"picker-options.d.ts","sourceRoot":"","sources":["../../../src/lib/launch/picker-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAKD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,WAAW,KAAK,OAAO,GAAG,YAAY,EAAE,CAOtH;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;IACrC,sFAAsF;IACtF,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACxF,gFAAgF;IAChF,KAAK,CAAC,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAe5G"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/** Code-unit order, never locale order: the same list on every machine. */
|
|
2
|
+
const byLabel = (a, b) => (a.label < b.label ? -1 : a.label > b.label ? 1 : 0);
|
|
3
|
+
/**
|
|
4
|
+
* Every agent Align supports, for the "which coding agent?" picker: the installed ones first,
|
|
5
|
+
* then the rest, each by label, the rest marked with how to install them. Built from whatever
|
|
6
|
+
* list it is given, so a new registry spec appears with no change here.
|
|
7
|
+
*/
|
|
8
|
+
export function pickerOptions(agents, isInstalled) {
|
|
9
|
+
const installed = agents.filter(isInstalled).sort(byLabel);
|
|
10
|
+
const missing = agents.filter((a) => !isInstalled(a)).sort(byLabel);
|
|
11
|
+
return [
|
|
12
|
+
...installed.map((a) => ({ value: a.name, label: a.label })),
|
|
13
|
+
...missing.map((a) => ({ value: a.name, label: `${a.label} (not installed)`, hint: `install: ${a.install}` })),
|
|
14
|
+
];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Show the picker until the user picks an installed agent (or one that installs and is then
|
|
18
|
+
* found on PATH) or cancels, at the picker or at the install question. A plain No, a printed
|
|
19
|
+
* installer or a failed install returns to the picker. With exactly one agent installed the
|
|
20
|
+
* cursor starts on it, so Enter keeps what bare `align` used to pick without asking.
|
|
21
|
+
*/
|
|
22
|
+
export async function chooseAgent(agents, d) {
|
|
23
|
+
for (;;) {
|
|
24
|
+
const installed = agents.filter(d.isInstalled);
|
|
25
|
+
const initial = installed.length === 1 ? installed[0].name : undefined;
|
|
26
|
+
const name = await d.select(pickerOptions(agents, d.isInstalled), initial);
|
|
27
|
+
const chosen = agents.find((a) => a.name === name);
|
|
28
|
+
if (!chosen)
|
|
29
|
+
return null;
|
|
30
|
+
if (d.isInstalled(chosen))
|
|
31
|
+
return chosen;
|
|
32
|
+
const outcome = await d.offer(chosen);
|
|
33
|
+
if (outcome === 'cancelled')
|
|
34
|
+
return null;
|
|
35
|
+
if (outcome === 'installed') {
|
|
36
|
+
if (d.isInstalled(chosen))
|
|
37
|
+
return chosen;
|
|
38
|
+
d.say(`${chosen.label} installed, but ${chosen.bin} is still not on your PATH. Open a new terminal, or pick another.`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=picker-options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"picker-options.js","sourceRoot":"","sources":["../../../src/lib/launch/picker-options.ts"],"names":[],"mappings":"AAUA,2EAA2E;AAC3E,MAAM,OAAO,GAAG,CAAC,CAAc,EAAE,CAAc,EAAU,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEjH;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,MAA8B,EAAE,WAAwC;IACpG,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpE,OAAO;QACL,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5D,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,kBAAkB,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;KAC/G,CAAC;AACJ,CAAC;AAWD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAA8B,EAAE,CAAa;IAC7E,SAAS,CAAC;QACR,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QACxE,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;QAC3E,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QACzC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,OAAO,KAAK,WAAW;YAAE,OAAO,IAAI,CAAC;QACzC,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;YAC5B,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC;gBAAE,OAAO,MAAM,CAAC;YACzC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,mBAAmB,MAAM,CAAC,GAAG,mEAAmE,CAAC,CAAC;QACzH,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Writable } from 'node:stream';
|
|
2
|
+
import type { PickerOption } from './picker-options.js';
|
|
3
|
+
import type { LaunchAgentId } from './registry/types.js';
|
|
4
|
+
/** "Which coding agent?". Resolves null on cancel. `initial` is the row the cursor starts on. */
|
|
5
|
+
export declare function selectAgent(options: PickerOption[], initial: LaunchAgentId | undefined, output?: Writable): Promise<LaunchAgentId | null>;
|
|
6
|
+
/**
|
|
7
|
+
* A yes/no question with No preselected. true only on an explicit yes, false on anything else,
|
|
8
|
+
* null on Ctrl-C (which the picker treats as leaving it, not as a No).
|
|
9
|
+
*/
|
|
10
|
+
export declare function confirmDefaultNo(message: string, output?: Writable): Promise<boolean | null>;
|
|
11
|
+
//# sourceMappingURL=prompts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/lib/launch/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAOzD,iGAAiG;AACjG,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,aAAa,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAS/I;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAKlG"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The two clack prompts behind the agent picker, shared by bare `align` and the wizard. clack is
|
|
3
|
+
* imported on use, never at module load, so the launch path pays nothing for it (cost rule).
|
|
4
|
+
*/
|
|
5
|
+
/** "Which coding agent?". Resolves null on cancel. `initial` is the row the cursor starts on. */
|
|
6
|
+
export async function selectAgent(options, initial, output) {
|
|
7
|
+
const clack = await import('@clack/prompts');
|
|
8
|
+
const answer = await clack.select({
|
|
9
|
+
message: 'Which coding agent should `align` open?',
|
|
10
|
+
options,
|
|
11
|
+
...(initial !== undefined ? { initialValue: initial } : {}),
|
|
12
|
+
...(output ? { output } : {}),
|
|
13
|
+
});
|
|
14
|
+
return clack.isCancel(answer) ? null : answer;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* A yes/no question with No preselected. true only on an explicit yes, false on anything else,
|
|
18
|
+
* null on Ctrl-C (which the picker treats as leaving it, not as a No).
|
|
19
|
+
*/
|
|
20
|
+
export async function confirmDefaultNo(message, output) {
|
|
21
|
+
const clack = await import('@clack/prompts');
|
|
22
|
+
const answer = await clack.confirm({ message, initialValue: false, ...(output ? { output } : {}) });
|
|
23
|
+
if (clack.isCancel(answer))
|
|
24
|
+
return null;
|
|
25
|
+
return answer === true;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/lib/launch/prompts.ts"],"names":[],"mappings":"AAIA;;;GAGG;AAEH,iGAAiG;AACjG,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAuB,EAAE,OAAkC,EAAE,MAAiB;IAC9G,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;QAChC,OAAO,EAAE,yCAAyC;QAClD,OAAO;QACP,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9B,CAAC,CAAC;IACH,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,MAAwB,CAAC;AACnE,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAe,EAAE,MAAiB;IACvE,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACpG,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,OAAO,MAAM,KAAK,IAAI,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../../../../src/lib/launch/registry/agents/claude-code.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,eAAO,MAAM,UAAU,EAAE,SAQxB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { buildClaudeLaunch } from '../../adapters/claude-code.js';
|
|
2
|
+
export const claudeCode = {
|
|
3
|
+
name: 'claude-code',
|
|
4
|
+
label: 'Claude Code',
|
|
5
|
+
bin: 'claude',
|
|
6
|
+
injection: 'per-session',
|
|
7
|
+
supported: true,
|
|
8
|
+
install: { kind: 'npm', argv: ['npm', 'i', '-g', '@anthropic-ai/claude-code'] },
|
|
9
|
+
build: (d, base) => buildClaudeLaunch({ ...base, ...d.readProjectState(d.cwd, d.home) }),
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=claude-code.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../../../src/lib/launch/registry/agents/claude-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGlE,MAAM,CAAC,MAAM,UAAU,GAAc;IACnC,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,aAAa;IACpB,GAAG,EAAE,QAAQ;IACb,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,2BAA2B,CAAC,EAAE;IAC/E,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;CACzF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../../../src/lib/launch/registry/agents/codex.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,eAAO,MAAM,KAAK,EAAE,SAQnB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { buildCodexLaunch } from '../../adapters/codex.js';
|
|
2
|
+
export const codex = {
|
|
3
|
+
name: 'codex',
|
|
4
|
+
label: 'Codex',
|
|
5
|
+
bin: 'codex',
|
|
6
|
+
injection: 'per-session',
|
|
7
|
+
supported: true,
|
|
8
|
+
install: { kind: 'npm', argv: ['npm', 'i', '-g', '@openai/codex'] },
|
|
9
|
+
build: (d, base) => buildCodexLaunch({ ...base, ...d.readCodexState(d.cwd, d.home, d.env, d.platform, base.passthrough) }),
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=codex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../../../src/lib/launch/registry/agents/codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG3D,MAAM,CAAC,MAAM,KAAK,GAAc;IAC9B,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,OAAO;IACZ,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,CAAC,EAAE;IACnE,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;CAC3H,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copilot.d.ts","sourceRoot":"","sources":["../../../../../src/lib/launch/registry/agents/copilot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,eAAO,MAAM,OAAO,EAAE,SAQrB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { buildCopilotLaunch } from '../../adapters/copilot.js';
|
|
2
|
+
export const copilot = {
|
|
3
|
+
name: 'copilot',
|
|
4
|
+
label: 'GitHub Copilot CLI',
|
|
5
|
+
bin: 'copilot',
|
|
6
|
+
injection: 'per-session',
|
|
7
|
+
supported: true,
|
|
8
|
+
install: { kind: 'npm', argv: ['npm', 'i', '-g', '@github/copilot'] },
|
|
9
|
+
build: (d, base) => buildCopilotLaunch({ ...base, ...d.readCopilotState(d.cwd, d.home, d.env, d.platform) }),
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=copilot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copilot.js","sourceRoot":"","sources":["../../../../../src/lib/launch/registry/agents/copilot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAG/D,MAAM,CAAC,MAAM,OAAO,GAAc;IAChC,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,oBAAoB;IAC3B,GAAG,EAAE,SAAS;IACd,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,iBAAiB,CAAC,EAAE;IACrE,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;CAC7G,CAAC"}
|