@aligndottech/cli 0.47.1 → 0.49.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/README.md +6 -5
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +9 -18
- package/dist/cli.js.map +1 -1
- package/dist/commands/agents.d.ts +20 -0
- package/dist/commands/agents.d.ts.map +1 -0
- package/dist/commands/agents.js +62 -0
- package/dist/commands/agents.js.map +1 -0
- package/dist/commands/ai.d.ts +11 -0
- package/dist/commands/ai.d.ts.map +1 -0
- package/dist/commands/ai.js +121 -0
- package/dist/commands/ai.js.map +1 -0
- package/dist/commands/default-action.js +2 -2
- package/dist/commands/default-action.js.map +1 -1
- package/dist/commands/registry.d.ts.map +1 -1
- package/dist/commands/registry.js +7 -0
- package/dist/commands/registry.js.map +1 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +53 -191
- 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/commands/why.d.ts.map +1 -1
- package/dist/commands/why.js +21 -0
- package/dist/commands/why.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/ask-key-offer.d.ts +38 -0
- package/dist/lib/ask-key-offer.d.ts.map +1 -0
- package/dist/lib/ask-key-offer.js +130 -0
- package/dist/lib/ask-key-offer.js.map +1 -0
- package/dist/lib/config.d.ts +25 -24
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +37 -45
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/launch/adapters/amp.d.ts +18 -0
- package/dist/lib/launch/adapters/amp.d.ts.map +1 -0
- package/dist/lib/launch/adapters/amp.js +29 -0
- package/dist/lib/launch/adapters/amp.js.map +1 -0
- 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/droid.d.ts +19 -0
- package/dist/lib/launch/adapters/droid.d.ts.map +1 -0
- package/dist/lib/launch/adapters/droid.js +38 -0
- package/dist/lib/launch/adapters/droid.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/adapters/grok-build.d.ts +16 -0
- package/dist/lib/launch/adapters/grok-build.d.ts.map +1 -0
- package/dist/lib/launch/adapters/grok-build.js +25 -0
- package/dist/lib/launch/adapters/grok-build.js.map +1 -0
- package/dist/lib/launch/adapters/kiro.d.ts +17 -0
- package/dist/lib/launch/adapters/kiro.d.ts.map +1 -0
- package/dist/lib/launch/adapters/kiro.js +25 -0
- package/dist/lib/launch/adapters/kiro.js.map +1 -0
- package/dist/lib/launch/adapters/qwen.d.ts +25 -0
- package/dist/lib/launch/adapters/qwen.d.ts.map +1 -0
- package/dist/lib/launch/adapters/qwen.js +67 -0
- package/dist/lib/launch/adapters/qwen.js.map +1 -0
- package/dist/lib/launch/agents.d.ts +16 -3
- package/dist/lib/launch/agents.d.ts.map +1 -1
- package/dist/lib/launch/agents.js +26 -4
- package/dist/lib/launch/agents.js.map +1 -1
- package/dist/lib/launch/amp-state.d.ts +21 -0
- package/dist/lib/launch/amp-state.d.ts.map +1 -0
- package/dist/lib/launch/amp-state.js +61 -0
- package/dist/lib/launch/amp-state.js.map +1 -0
- 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/config-writes.d.ts +7 -1
- package/dist/lib/launch/config-writes.d.ts.map +1 -1
- package/dist/lib/launch/config-writes.js +60 -7
- package/dist/lib/launch/config-writes.js.map +1 -1
- 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/detect.d.ts.map +1 -1
- package/dist/lib/launch/detect.js +2 -1
- package/dist/lib/launch/detect.js.map +1 -1
- package/dist/lib/launch/droid-state.d.ts +24 -0
- package/dist/lib/launch/droid-state.d.ts.map +1 -0
- package/dist/lib/launch/droid-state.js +74 -0
- package/dist/lib/launch/droid-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/grok-state.d.ts +42 -0
- package/dist/lib/launch/grok-state.d.ts.map +1 -0
- package/dist/lib/launch/grok-state.js +128 -0
- package/dist/lib/launch/grok-state.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/kiro-state.d.ts +22 -0
- package/dist/lib/launch/kiro-state.d.ts.map +1 -0
- package/dist/lib/launch/kiro-state.js +59 -0
- package/dist/lib/launch/kiro-state.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 +61 -6
- package/dist/lib/launch/launch.d.ts.map +1 -1
- package/dist/lib/launch/launch.js +98 -31
- package/dist/lib/launch/launch.js.map +1 -1
- package/dist/lib/launch/layer-files.d.ts +12 -0
- package/dist/lib/launch/layer-files.d.ts.map +1 -0
- package/dist/lib/launch/layer-files.js +43 -0
- package/dist/lib/launch/layer-files.js.map +1 -0
- 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 +47 -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/qwen-state.d.ts +30 -0
- package/dist/lib/launch/qwen-state.d.ts.map +1 -0
- package/dist/lib/launch/qwen-state.js +57 -0
- package/dist/lib/launch/qwen-state.js.map +1 -0
- package/dist/lib/launch/qwen-trust.d.ts +24 -0
- package/dist/lib/launch/qwen-trust.d.ts.map +1 -0
- package/dist/lib/launch/qwen-trust.js +100 -0
- package/dist/lib/launch/qwen-trust.js.map +1 -0
- package/dist/lib/launch/registry/agents/amp.d.ts +3 -0
- package/dist/lib/launch/registry/agents/amp.d.ts.map +1 -0
- package/dist/lib/launch/registry/agents/amp.js +14 -0
- package/dist/lib/launch/registry/agents/amp.js.map +1 -0
- package/dist/lib/launch/registry/agents/claude-code.js +1 -1
- package/dist/lib/launch/registry/agents/claude-code.js.map +1 -1
- package/dist/lib/launch/registry/agents/codex.d.ts.map +1 -1
- package/dist/lib/launch/registry/agents/codex.js +4 -2
- package/dist/lib/launch/registry/agents/codex.js.map +1 -1
- 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.js +1 -1
- package/dist/lib/launch/registry/agents/cursor.js.map +1 -1
- package/dist/lib/launch/registry/agents/droid.d.ts +3 -0
- package/dist/lib/launch/registry/agents/droid.d.ts.map +1 -0
- package/dist/lib/launch/registry/agents/droid.js +13 -0
- package/dist/lib/launch/registry/agents/droid.js.map +1 -0
- package/dist/lib/launch/registry/agents/gemini-cli.d.ts.map +1 -1
- package/dist/lib/launch/registry/agents/gemini-cli.js +4 -2
- package/dist/lib/launch/registry/agents/gemini-cli.js.map +1 -1
- package/dist/lib/launch/registry/agents/grok-build.d.ts +3 -0
- package/dist/lib/launch/registry/agents/grok-build.d.ts.map +1 -0
- package/dist/lib/launch/registry/agents/grok-build.js +14 -0
- package/dist/lib/launch/registry/agents/grok-build.js.map +1 -0
- package/dist/lib/launch/registry/agents/kiro.d.ts +3 -0
- package/dist/lib/launch/registry/agents/kiro.d.ts.map +1 -0
- package/dist/lib/launch/registry/agents/kiro.js +11 -0
- package/dist/lib/launch/registry/agents/kiro.js.map +1 -0
- package/dist/lib/launch/registry/agents/opencode.js +1 -1
- package/dist/lib/launch/registry/agents/opencode.js.map +1 -1
- package/dist/lib/launch/registry/agents/pi.js +1 -1
- package/dist/lib/launch/registry/agents/pi.js.map +1 -1
- package/dist/lib/launch/registry/agents/qwen.d.ts +3 -0
- package/dist/lib/launch/registry/agents/qwen.d.ts.map +1 -0
- package/dist/lib/launch/registry/agents/qwen.js +11 -0
- package/dist/lib/launch/registry/agents/qwen.js.map +1 -0
- package/dist/lib/launch/registry/index.d.ts +4 -1
- package/dist/lib/launch/registry/index.d.ts.map +1 -1
- package/dist/lib/launch/registry/index.js +11 -2
- package/dist/lib/launch/registry/index.js.map +1 -1
- package/dist/lib/launch/registry/types.d.ts +18 -2
- package/dist/lib/launch/registry/types.d.ts.map +1 -1
- package/dist/lib/launch/run-agent.d.ts +15 -0
- package/dist/lib/launch/run-agent.d.ts.map +1 -1
- package/dist/lib/launch/run-agent.js +23 -2
- 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 +108 -0
- package/dist/lib/launch/strict-entry.js.map +1 -0
- package/dist/lib/llm-providers.d.ts +66 -0
- package/dist/lib/llm-providers.d.ts.map +1 -0
- package/dist/lib/llm-providers.js +150 -0
- package/dist/lib/llm-providers.js.map +1 -0
- package/dist/lib/local-llm.d.ts +63 -12
- package/dist/lib/local-llm.d.ts.map +1 -1
- package/dist/lib/local-llm.js +229 -104
- package/dist/lib/local-llm.js.map +1 -1
- package/dist/lib/safe-config-write.d.ts +12 -1
- package/dist/lib/safe-config-write.d.ts.map +1 -1
- package/dist/lib/safe-config-write.js +123 -7
- package/dist/lib/safe-config-write.js.map +1 -1
- package/dist/lib/startup-env.d.ts +8 -0
- package/dist/lib/startup-env.d.ts.map +1 -0
- package/dist/lib/startup-env.js +8 -0
- package/dist/lib/startup-env.js.map +1 -0
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -107,11 +107,12 @@ That is the whole of `align --help`. Every other command (`search`, `decisions`,
|
|
|
107
107
|
`ratify`, `push`, `context`, `local`, ...) still works and is listed in
|
|
108
108
|
[docs/commands.md](docs/commands.md).
|
|
109
109
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
110
|
+
Inside your coding agent, the agent writes the answers - align needs no AI key for that. Only
|
|
111
|
+
`align ask` in the terminal writes prose itself, and without a provider it returns the matching
|
|
112
|
+
decisions as a ranked list. The first time that happens on a terminal, `align ask` offers to add
|
|
113
|
+
a key you already have (Anthropic, OpenAI, OpenRouter, Gemini, Groq, Mistral, xAI) or a free Groq
|
|
114
|
+
key (no card, ever). A local Ollama or any OpenAI-compatible endpoint works too, and `align ai`
|
|
115
|
+
picks which one is used when you have several. [Setting one up](docs/configuration.md#ai-provider).
|
|
115
116
|
|
|
116
117
|
## Docs
|
|
117
118
|
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAQ,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAQ,MAAM,WAAW,CAAC;AAU1C,oGAAoG;AACpG,eAAO,MAAM,gBAAgB,yEAAyE,CAAC;AAEvG;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAqBvD;AAED,MAAM,WAAW,mBAAmB;IAClC,gFAAgF;IAChF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;uEACmE;IACnE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;QAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAC;CAC7E;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAkFvE"}
|
package/dist/cli.js
CHANGED
|
@@ -2,7 +2,8 @@ import { Command, Help } from 'commander';
|
|
|
2
2
|
import pkg from '../package.json' with { type: 'json' };
|
|
3
3
|
import { COMMAND_REGISTRY, ROOT_SUMMARY, visibleEntries } from './commands/registry.js';
|
|
4
4
|
import { runDefaultAction } from './commands/default-action.js';
|
|
5
|
-
import { createConfigStore,
|
|
5
|
+
import { createConfigStore, savedLlmConfig } from './lib/config.js';
|
|
6
|
+
import { setSavedLlmSource } from './lib/local-llm.js';
|
|
6
7
|
import { setWriteRecorder } from './lib/safe-config-write.js';
|
|
7
8
|
const { version } = pkg;
|
|
8
9
|
/** Where every hidden command is documented; `align --help` points here instead of listing them. */
|
|
@@ -61,24 +62,14 @@ export function buildProgram(options = {}) {
|
|
|
61
62
|
const { invocationCommandPath, recordInstallBeacon } = await import('./lib/usage-telemetry.js');
|
|
62
63
|
void recordInstallBeacon(invocationCommandPath(actionCommand));
|
|
63
64
|
});
|
|
64
|
-
//
|
|
65
|
-
//
|
|
66
|
-
//
|
|
67
|
-
//
|
|
68
|
-
//
|
|
69
|
-
//
|
|
70
|
-
// (startup-migration.test.ts pins exactly that for the module-scope migrations above
|
|
71
|
-
// it, and constructing a Conf store is not the pure operation those keep themselves to -
|
|
72
|
-
// see createConfigStore's own comment on migrateConfigDirectory for why that split
|
|
73
|
-
// exists). Non-fatal: an unreadable config must never stop the command the user asked for.
|
|
65
|
+
// Saved AI provider keys and the saved preference (`align ai`, the first-ask offer) reach
|
|
66
|
+
// align's own LLM calls through this source, read lazily on each call - and NEVER through
|
|
67
|
+
// process.env, which every child inherits: the coding agent bare `align` opens would get a
|
|
68
|
+
// saved ANTHROPIC_API_KEY and bill API usage instead of the user's subscription (H1). A
|
|
69
|
+
// preAction hook, not module scope, so `align --version` constructs no config store
|
|
70
|
+
// (startup-migration.test.ts). Non-fatal: local-llm treats a throwing source as "nothing saved".
|
|
74
71
|
program.hook('preAction', () => {
|
|
75
|
-
|
|
76
|
-
hydrateProviderKeyEnv(createConfigStore());
|
|
77
|
-
}
|
|
78
|
-
catch (e) {
|
|
79
|
-
if (process.env['ALIGN_DEBUG'])
|
|
80
|
-
console.error('align: provider key hydration failed (non-fatal):', e);
|
|
81
|
-
}
|
|
72
|
+
setSavedLlmSource(() => savedLlmConfig(createConfigStore()));
|
|
82
73
|
});
|
|
83
74
|
// C4: every file align writes into another product's config is remembered, so
|
|
84
75
|
// `align use --undo` can restore it. Installed here, never in the writer, so a test that
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
import type { AgentSpec } from '../lib/launch/registry/types.js';
|
|
3
|
+
export interface AgentsDeps {
|
|
4
|
+
specs: readonly AgentSpec[];
|
|
5
|
+
findOnPath(bin: string, env: Record<string, string | undefined>, platform: string): string | null;
|
|
6
|
+
env: Record<string, string | undefined>;
|
|
7
|
+
platform: string;
|
|
8
|
+
out(line: string): void;
|
|
9
|
+
err(line: string): void;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* `align agents`: every agent in the registry, whether it is on PATH, how Align connects, and
|
|
13
|
+
* how to install it. Every column comes from the registry; the only probe is a PATH scan, so
|
|
14
|
+
* no agent binary is spawned to list it.
|
|
15
|
+
*/
|
|
16
|
+
export declare function runAgents(opts: {
|
|
17
|
+
json?: boolean;
|
|
18
|
+
}, d: AgentsDeps): number;
|
|
19
|
+
export declare function registerAgentsCommand(program: Command): void;
|
|
20
|
+
//# sourceMappingURL=agents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,SAAS,SAAS,EAAE,CAAC;IAC5B,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,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAOD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,CAAC,EAAE,UAAU,GAAG,MAAM,CA6BzE;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgB5D"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { findOnPath } from '../lib/launch/detect.js';
|
|
2
|
+
import { installText } from '../lib/launch/install.js';
|
|
3
|
+
import { AGENT_REGISTRY } from '../lib/launch/registry/index.js';
|
|
4
|
+
const CONNECTS = {
|
|
5
|
+
'per-session': 'per session',
|
|
6
|
+
'written-once': 'written once',
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* `align agents`: every agent in the registry, whether it is on PATH, how Align connects, and
|
|
10
|
+
* how to install it. Every column comes from the registry; the only probe is a PATH scan, so
|
|
11
|
+
* no agent binary is spawned to list it.
|
|
12
|
+
*/
|
|
13
|
+
export function runAgents(opts, d) {
|
|
14
|
+
const rows = d.specs.map((s) => {
|
|
15
|
+
// The same test the launcher uses, so a generic `grok` that is not Grok Build is "no" here too.
|
|
16
|
+
const found = d.findOnPath(s.bin, d.env, d.platform);
|
|
17
|
+
const path = found && s.acceptsBin && !s.acceptsBin(found, d.env, d.platform) ? null : found;
|
|
18
|
+
return { spec: s, path };
|
|
19
|
+
});
|
|
20
|
+
if (opts.json) {
|
|
21
|
+
const data = rows.map(({ spec: s, path }) => ({
|
|
22
|
+
id: s.name,
|
|
23
|
+
label: s.label,
|
|
24
|
+
bin: s.bin,
|
|
25
|
+
installed: path !== null,
|
|
26
|
+
path,
|
|
27
|
+
supported: s.supported,
|
|
28
|
+
connects: s.injection,
|
|
29
|
+
install: s.install,
|
|
30
|
+
installCommand: installText(s.install),
|
|
31
|
+
}));
|
|
32
|
+
d.out(JSON.stringify(data, null, 2));
|
|
33
|
+
return 0;
|
|
34
|
+
}
|
|
35
|
+
const table = [
|
|
36
|
+
['Agent', 'Installed', 'How Align connects', 'Install command'],
|
|
37
|
+
...rows.map(({ spec: s, path }) => [s.label, path ? 'yes' : 'no', CONNECTS[s.injection], installText(s.install)]),
|
|
38
|
+
];
|
|
39
|
+
const widths = table[0].map((_, i) => Math.max(...table.map((r) => r[i].length)));
|
|
40
|
+
for (const r of table)
|
|
41
|
+
d.out(r.map((c, i) => (i === r.length - 1 ? c : c.padEnd(widths[i] + 2))).join(''));
|
|
42
|
+
return 0;
|
|
43
|
+
}
|
|
44
|
+
export function registerAgentsCommand(program) {
|
|
45
|
+
program
|
|
46
|
+
.command('agents')
|
|
47
|
+
.option('--json', 'Print the list as JSON')
|
|
48
|
+
.description('List the coding agents Align works with: installed or not, how Align connects, how to install')
|
|
49
|
+
.action((opts) => {
|
|
50
|
+
const code = runAgents(opts, {
|
|
51
|
+
specs: AGENT_REGISTRY,
|
|
52
|
+
findOnPath,
|
|
53
|
+
env: process.env,
|
|
54
|
+
platform: process.platform,
|
|
55
|
+
out: (l) => console.log(l),
|
|
56
|
+
err: (l) => console.error(l),
|
|
57
|
+
});
|
|
58
|
+
if (code !== 0)
|
|
59
|
+
process.exit(code);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=agents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* `align ai`: which AI provider `align ask` writes its terminal answers with. Only matters
|
|
4
|
+
* when more than one is available, or to add a key: with exactly one, `align ask` already
|
|
5
|
+
* uses it, and inside a coding agent none of this is used at all.
|
|
6
|
+
*
|
|
7
|
+
* The choice is stored (config `llm`) and read by local-llm (preferredProvider), where an exported
|
|
8
|
+
* value wins - see preferredProvider in local-llm.ts for the full precedence.
|
|
9
|
+
*/
|
|
10
|
+
export declare function registerAiCommand(program: Command): void;
|
|
11
|
+
//# sourceMappingURL=ai.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../src/commands/ai.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBzC;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8FxD"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import * as p from '@clack/prompts';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { createConfigStore } from '../lib/config.js';
|
|
4
|
+
import { listConfiguredCredentials, probeOllama, unusedExportedKeys } from '../lib/local-llm.js';
|
|
5
|
+
import { LLM_PROVIDER_IDS, parseProviderId, PROVIDER_LABEL } from '../lib/llm-providers.js';
|
|
6
|
+
import { detectProviders, promptForProviderKey } from '../lib/ask-key-offer.js';
|
|
7
|
+
import { guardedPrompt } from '../lib/prompt-guard.js';
|
|
8
|
+
/** `--provider auto`: forget the choice and use the default order again. */
|
|
9
|
+
const AUTO = 'auto';
|
|
10
|
+
/** What an exported key for a provider align does not use on its own looks like in a listing. */
|
|
11
|
+
const NOT_USED_YET = 'found in your shell - not used until you choose it';
|
|
12
|
+
function sourceHint(d, unused) {
|
|
13
|
+
if (d.source === 'env' && unused.has(d.id))
|
|
14
|
+
return NOT_USED_YET;
|
|
15
|
+
return d.source === 'env' ? 'env' : d.source === 'saved' ? 'saved' : 'local';
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* `align ai`: which AI provider `align ask` writes its terminal answers with. Only matters
|
|
19
|
+
* when more than one is available, or to add a key: with exactly one, `align ask` already
|
|
20
|
+
* uses it, and inside a coding agent none of this is used at all.
|
|
21
|
+
*
|
|
22
|
+
* The choice is stored (config `llm`) and read by local-llm (preferredProvider), where an exported
|
|
23
|
+
* value wins - see preferredProvider in local-llm.ts for the full precedence.
|
|
24
|
+
*/
|
|
25
|
+
export function registerAiCommand(program) {
|
|
26
|
+
program
|
|
27
|
+
.command('ai')
|
|
28
|
+
.description('Choose the AI model `align ask` writes terminal answers with, or add a key')
|
|
29
|
+
.option('--provider <id>', `Use this provider first: ${[...LLM_PROVIDER_IDS, AUTO].join(', ')}`)
|
|
30
|
+
.option('--model <model>', 'With --provider: the model to ask for')
|
|
31
|
+
.action(async (opts) => {
|
|
32
|
+
const config = createConfigStore();
|
|
33
|
+
if (opts.provider !== undefined) {
|
|
34
|
+
if (opts.provider.trim().toLowerCase() === AUTO) {
|
|
35
|
+
config.clearLlmPreference();
|
|
36
|
+
console.log(` ${chalk.bold('align ask')} now uses the first available provider, in the default order.`);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const id = parseProviderId(opts.provider);
|
|
40
|
+
if (!id) {
|
|
41
|
+
console.error(`Unknown provider "${opts.provider}". Use one of: ${[...LLM_PROVIDER_IDS, AUTO].join(', ')}.`);
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
44
|
+
config.setLlmPreference(opts.model ? { provider: id, model: opts.model } : { provider: id });
|
|
45
|
+
console.log(` ${chalk.bold('align ask')} now tries ${PROVIDER_LABEL[id]}${opts.model ? ` (${opts.model})` : ''} first.`);
|
|
46
|
+
// L4: saved either way, but say when it cannot take effect yet - until then the
|
|
47
|
+
// default order answers, which would otherwise look like the choice was ignored.
|
|
48
|
+
const available = id === 'ollama'
|
|
49
|
+
? Boolean(await probeOllama())
|
|
50
|
+
: listConfiguredCredentials().some((c) => c.id === id);
|
|
51
|
+
if (!available) {
|
|
52
|
+
if (id === 'ollama')
|
|
53
|
+
console.log(' Ollama is not running here yet - until it is, align ask uses the next available provider.');
|
|
54
|
+
else if (id === 'custom')
|
|
55
|
+
console.log(` ALIGN_LLM_BASE_URL is not set yet - export it to point align ask at your endpoint.`);
|
|
56
|
+
else
|
|
57
|
+
console.log(` No ${PROVIDER_LABEL[id]} key found yet - add one with: ${chalk.bold('align ai')}`);
|
|
58
|
+
}
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
if (opts.model !== undefined) {
|
|
62
|
+
console.error('--model needs --provider, so it is clear which provider the model is for.');
|
|
63
|
+
process.exit(1);
|
|
64
|
+
}
|
|
65
|
+
const found = await detectProviders(probeOllama);
|
|
66
|
+
// Exported keys align will not use until chosen (HF_TOKEN exported for model downloads,
|
|
67
|
+
// say) - marked so "found" is never read as "in use".
|
|
68
|
+
const unused = new Set(unusedExportedKeys().map((k) => k.id));
|
|
69
|
+
const current = parseProviderId(config.getLlmPreference().provider ?? '');
|
|
70
|
+
const interactive = Boolean(process.stdin.isTTY && process.stdout.isTTY);
|
|
71
|
+
if (!interactive) {
|
|
72
|
+
console.log('');
|
|
73
|
+
if (!found.length) {
|
|
74
|
+
console.log(' No AI provider found. `align ask` lists matching decisions without one.');
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
console.log(' AI providers align found:');
|
|
78
|
+
for (const d of found) {
|
|
79
|
+
console.log(` ${d.id.padEnd(11)} ${PROVIDER_LABEL[d.id]} (${sourceHint(d, unused)})${d.id === current ? ' - current' : ''}`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
console.log('');
|
|
83
|
+
console.log(` Choose one: ${chalk.bold('align ai --provider <id>')}`);
|
|
84
|
+
console.log('');
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const options = found.map((d) => ({
|
|
88
|
+
value: d.id,
|
|
89
|
+
label: PROVIDER_LABEL[d.id],
|
|
90
|
+
hint: `${sourceHint(d, unused)}${d.id === current ? ' - current' : ''}`,
|
|
91
|
+
}));
|
|
92
|
+
options.push({ value: 'add', label: 'Add another key...' });
|
|
93
|
+
if (current)
|
|
94
|
+
options.push({ value: 'auto', label: 'Automatic', hint: 'first available, in the default order' });
|
|
95
|
+
const choice = await guardedPrompt('AI provider', () => p.select({
|
|
96
|
+
message: `Which AI model should ${chalk.bold('align ask')} write terminal answers with?`,
|
|
97
|
+
options,
|
|
98
|
+
initialValue: current && found.some((d) => d.id === current) ? current : options[0].value,
|
|
99
|
+
}));
|
|
100
|
+
if (choice === null || p.isCancel(choice))
|
|
101
|
+
return;
|
|
102
|
+
if (choice === 'auto') {
|
|
103
|
+
config.clearLlmPreference();
|
|
104
|
+
p.log.success('Back to the default order.');
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
if (choice === 'add') {
|
|
108
|
+
const added = await promptForProviderKey(config);
|
|
109
|
+
if (!added)
|
|
110
|
+
return;
|
|
111
|
+
config.setLlmPreference({ provider: added });
|
|
112
|
+
// A key now exists, so the first-ask offer's remembered "Not now" has nothing left to guard.
|
|
113
|
+
config.setAskKeyOfferDismissed(false);
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
const picked = choice;
|
|
117
|
+
config.setLlmPreference({ provider: picked });
|
|
118
|
+
p.log.success(`${chalk.bold('align ask')} now tries ${PROVIDER_LABEL[picked]} first.`);
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=ai.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../../src/commands/ai.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import pkg from '../../package.json' with { type: 'json' };
|
|
|
4
4
|
import { printBanner } from '../lib/brand.js';
|
|
5
5
|
import { detectWiredEditors, projectMcpAgents } from '../lib/mcp-setup.js';
|
|
6
6
|
import { cardLabel, orderAgents, renderSecondRunCard } from '../lib/next-step.js';
|
|
7
|
-
import { launchIfChosen } from '../lib/launch/launch.js';
|
|
7
|
+
import { launchesAfterWizard, launchIfChosen } from '../lib/launch/launch.js';
|
|
8
8
|
/**
|
|
9
9
|
* What `align` does with no arguments (ALI-773).
|
|
10
10
|
*
|
|
@@ -64,7 +64,7 @@ export async function runDefaultAction() {
|
|
|
64
64
|
// exit 1, which would turn a finished wizard into a failed command. The wizard already
|
|
65
65
|
// said what to install, so a clean exit 0 is the right end.
|
|
66
66
|
const after = createConfigStore();
|
|
67
|
-
if (after.getEnvironment('local').mode === 'local-embedded'
|
|
67
|
+
if (launchesAfterWizard({ localGraph: after.getEnvironment('local').mode === 'local-embedded', agent: after.getAgent(), isTTY: tty })) {
|
|
68
68
|
const launch = await launchIfChosen();
|
|
69
69
|
if (launch.handled)
|
|
70
70
|
process.exit(launch.code);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-action.js","sourceRoot":"","sources":["../../src/commands/default-action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,GAAG,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAkB,WAAW,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"default-action.js","sourceRoot":"","sources":["../../src/commands/default-action.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/commands/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/commands/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6BzC;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,YAAY;IAC3B,qFAAqF;IACrF,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,uFAAuF;IACvF,OAAO,EAAE,OAAO,CAAC;IACjB;mDAC+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACtC;AAED,eAAO,MAAM,gBAAgB,EAAE,SAAS,YAAY,EAsEnD,CAAC;AAEF,oFAAoF;AACpF,eAAO,MAAM,YAAY,kDAAkD,CAAC;AAE5E,wBAAgB,cAAc,IAAI,YAAY,EAAE,CAE/C"}
|
|
@@ -23,6 +23,8 @@ import { registerSetupCommand } from './setup.js';
|
|
|
23
23
|
import { registerExportCommand } from './export.js';
|
|
24
24
|
import { registerInviteCommand } from './invite.js';
|
|
25
25
|
import { registerUseCommand } from './use.js';
|
|
26
|
+
import { registerAgentsCommand } from './agents.js';
|
|
27
|
+
import { registerAiCommand } from './ai.js';
|
|
26
28
|
export const COMMAND_REGISTRY = [
|
|
27
29
|
// Environment targeting
|
|
28
30
|
{ names: ['env'], visible: false, summary: 'Set or show the default environment', register: registerEnvCommand },
|
|
@@ -34,6 +36,9 @@ export const COMMAND_REGISTRY = [
|
|
|
34
36
|
{ names: ['invite'], visible: false, summary: 'Invite a teammate to your graph', register: registerInviteCommand },
|
|
35
37
|
// Customer: ask, then connect - the order `align --help` shows them in.
|
|
36
38
|
{ names: ['ask'], visible: true, summary: 'Ask your decision graph, with sources', register: registerAskCommand },
|
|
39
|
+
// Which AI model `align ask` writes terminal answers with, or add a key. Hidden: the first
|
|
40
|
+
// `align ask` with nothing configured offers it, and names this command.
|
|
41
|
+
{ names: ['ai'], visible: false, summary: 'Choose the AI model align ask uses in the terminal', register: registerAiCommand },
|
|
37
42
|
{ names: ['capture'], visible: false, summary: 'Capture one decision from a URL', register: registerCaptureCommand },
|
|
38
43
|
{
|
|
39
44
|
names: ['connect'],
|
|
@@ -76,6 +81,8 @@ export const COMMAND_REGISTRY = [
|
|
|
76
81
|
{ names: ['push'], visible: false, summary: 'Promote one ratified local decision to the shared graph', register: registerPushCommand },
|
|
77
82
|
// Customer: MCP server
|
|
78
83
|
{ names: ['mcp'], visible: true, summary: 'Serve the graph to your agent (--setup wires it)', register: registerMcpCommand },
|
|
84
|
+
// Phase P: every coding agent Align works with, installed or not, and how to install each.
|
|
85
|
+
{ names: ['agents'], visible: true, summary: 'The coding agents Align opens, and how to install them', register: registerAgentsCommand },
|
|
79
86
|
// Customer: local-first mode (no cloud account required)
|
|
80
87
|
{ names: ['local'], visible: false, summary: 'The local graph: start, status, reset, forget', register: registerLocalCommand },
|
|
81
88
|
// Internal: only registered when ALIGN_INTERNAL=1 (Align team local dev)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/commands/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/commands/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AA2B5C,MAAM,CAAC,MAAM,gBAAgB,GAA4B;IACvD,wBAAwB;IACxB,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,qCAAqC,EAAE,QAAQ,EAAE,kBAAkB,EAAE;IAChH,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,iCAAiC,EAAE,QAAQ,EAAE,wBAAwB,EAAE;IAExH,oBAAoB;IACpB,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,qBAAqB,EAAE;IAC3H,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,0CAA0C,EAAE,QAAQ,EAAE,oBAAoB,EAAE;IACzH,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,4CAA4C,EAAE,QAAQ,EAAE,kBAAkB,EAAE;IACvH,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,iCAAiC,EAAE,QAAQ,EAAE,qBAAqB,EAAE;IAElH,wEAAwE;IACxE,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,uCAAuC,EAAE,QAAQ,EAAE,kBAAkB,EAAE;IACjH,2FAA2F;IAC3F,yEAAyE;IACzE,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,oDAAoD,EAAE,QAAQ,EAAE,iBAAiB,EAAE;IAC7H,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,iCAAiC,EAAE,QAAQ,EAAE,sBAAsB,EAAE;IACpH;QACE,KAAK,EAAE,CAAC,SAAS,CAAC;QAClB,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,2CAA2C;QACpD,QAAQ,EAAE,qBAAqB;KAChC;IACD,0FAA0F;IAC1F,0FAA0F;IAC1F,6FAA6F;IAC7F,kDAAkD;IAClD;QACE,KAAK,EAAE,CAAC,QAAQ,CAAC;QACjB,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,uCAAuC;QAChD,QAAQ,EAAE,4BAA4B;KACvC;IAED,2BAA2B;IAC3B,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,6BAA6B,EAAE,QAAQ,EAAE,qBAAqB,EAAE;IAC9G,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,wBAAwB,EAAE;IAChH,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,qCAAqC,EAAE,QAAQ,EAAE,qBAAqB,EAAE;IACtH,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,qBAAqB,EAAE;IACtG,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,mCAAmC,EAAE,QAAQ,EAAE,oBAAoB,EAAE;IAClH,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,2CAA2C,EAAE,QAAQ,EAAE,oBAAoB,EAAE;IAC1H,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,kCAAkC,EAAE,QAAQ,EAAE,qBAAqB,EAAE;IACnH,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,wCAAwC,EAAE,QAAQ,EAAE,sBAAsB,EAAE;IAE3H,+BAA+B;IAC/B,6FAA6F;IAC7F,wFAAwF;IACxF,0FAA0F;IAC1F;QACE,KAAK,EAAE,CAAC,OAAO,CAAC;QAChB,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,+EAA+E;QACxF,QAAQ,EAAE,oBAAoB;KAC/B;IACD,EAAE,KAAK,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,8CAA8C,EAAE,QAAQ,EAAE,yBAAyB,EAAE;IACvI,2FAA2F;IAC3F,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,qCAAqC,EAAE,QAAQ,EAAE,qBAAqB,EAAE;IACtH,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,yDAAyD,EAAE,QAAQ,EAAE,mBAAmB,EAAE;IAEtI,uBAAuB;IACvB,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,kDAAkD,EAAE,QAAQ,EAAE,kBAAkB,EAAE;IAC5H,2FAA2F;IAC3F,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,wDAAwD,EAAE,QAAQ,EAAE,qBAAqB,EAAE;IAExI,yDAAyD;IACzD,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,+CAA+C,EAAE,QAAQ,EAAE,oBAAoB,EAAE;IAE9H,yEAAyE;IACzE,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,8BAA8B,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,yBAAyB,EAAE;IACtI,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,8BAA8B,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,mBAAmB,EAAE;CAC3H,CAAC;AAEF,oFAAoF;AACpF,MAAM,CAAC,MAAM,YAAY,GAAG,+CAA+C,CAAC;AAE5E,MAAM,UAAU,cAAc;IAC5B,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,OAAO,EAAE,iBAAiB,EAAE,KAAK,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAS/D,OAAO,EAAE,sBAAsB,EAAmB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,OAAO,EAAE,iBAAiB,EAAE,KAAK,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAS/D,OAAO,EAAE,sBAAsB,EAAmB,MAAM,0BAA0B,CAAC;AAgYnF;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAE1E;AA0TD;;;;;;;GAOG;AACH,kGAAkG;AAClG,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;IAC7C,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC7E,WAAW,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;IACpD,OAAO,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;IACnD,OAAO,EAAE,OAAO,CAAC;IACjB,yFAAyF;IACzF,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,kGAAkG;IAClG,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,iGAAiG;IACjG,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,iGAAiG;AACjG,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAK5C;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,EAAE,0BAA0B,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAuNzG;AAuFD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAU3D;AAED;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAC5B,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GACxH,OAAO,CAAC,IAAI,CAAC,CAgDf"}
|