@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
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { buildAmpLaunch } from '../../adapters/amp.js';
|
|
2
|
+
export const amp = {
|
|
3
|
+
name: 'amp',
|
|
4
|
+
label: 'Amp',
|
|
5
|
+
bin: 'amp',
|
|
6
|
+
injection: 'written-once',
|
|
7
|
+
supported: true,
|
|
8
|
+
// @sourcegraph/amp places its native binary in a postinstall script that npm 12 skips without
|
|
9
|
+
// approval (seen in a sandbox install: the `amp` it left only prints an error), so Align
|
|
10
|
+
// prints Amp's documented script installer instead and never runs it.
|
|
11
|
+
install: { kind: 'docs', url: 'https://ampcode.com/manual', text: 'curl -fsSL https://ampcode.com/install.sh | bash' },
|
|
12
|
+
build: (d, base) => buildAmpLaunch({ passthrough: base.passthrough, ...d.readAmpState(d.cwd, d.home, d.env, d.platform, base.passthrough) }),
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=amp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"amp.js","sourceRoot":"","sources":["../../../../../src/lib/launch/registry/agents/amp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,MAAM,CAAC,MAAM,GAAG,GAAc;IAC5B,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,KAAK;IACZ,GAAG,EAAE,KAAK;IACV,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,IAAI;IACf,8FAA8F;IAC9F,yFAAyF;IACzF,sEAAsE;IACtE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,4BAA4B,EAAE,IAAI,EAAE,kDAAkD,EAAE;IACtH,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,YAAa,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;CAC9I,CAAC"}
|
|
@@ -5,7 +5,7 @@ export const claudeCode = {
|
|
|
5
5
|
bin: 'claude',
|
|
6
6
|
injection: 'per-session',
|
|
7
7
|
supported: true,
|
|
8
|
-
install: 'npm i -g @anthropic-ai/claude-code',
|
|
8
|
+
install: { kind: 'npm', argv: ['npm', 'i', '-g', '@anthropic-ai/claude-code'] },
|
|
9
9
|
build: (d, base) => buildClaudeLaunch({ ...base, ...d.readProjectState(d.cwd, d.home) }),
|
|
10
10
|
};
|
|
11
11
|
//# sourceMappingURL=claude-code.js.map
|
|
@@ -1 +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,
|
|
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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../../../src/lib/launch/registry/agents/codex.ts"],"names":[],"mappings":"
|
|
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"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { buildCodexLaunch } from '../../adapters/codex.js';
|
|
1
2
|
export const codex = {
|
|
2
3
|
name: 'codex',
|
|
3
4
|
label: 'Codex',
|
|
4
5
|
bin: 'codex',
|
|
5
6
|
injection: 'per-session',
|
|
6
|
-
supported:
|
|
7
|
-
install: 'npm i -g @openai/codex',
|
|
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) }),
|
|
8
10
|
};
|
|
9
11
|
//# sourceMappingURL=codex.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../../../src/lib/launch/registry/agents/codex.ts"],"names":[],"mappings":"
|
|
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"}
|
|
@@ -5,7 +5,7 @@ export const cursor = {
|
|
|
5
5
|
bin: 'cursor-agent',
|
|
6
6
|
injection: 'written-once',
|
|
7
7
|
supported: true,
|
|
8
|
-
install: 'https://cursor.com/cli',
|
|
8
|
+
install: { kind: 'docs', url: 'https://cursor.com/cli' },
|
|
9
9
|
build: (d, base) => buildCursorLaunch({ ...base, ...d.readCursorState(d.cwd, d.home) }),
|
|
10
10
|
};
|
|
11
11
|
//# sourceMappingURL=cursor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../../../../src/lib/launch/registry/agents/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAG7D,MAAM,CAAC,MAAM,MAAM,GAAc;IAC/B,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,QAAQ;IACf,GAAG,EAAE,cAAc;IACnB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,wBAAwB;
|
|
1
|
+
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../../../../src/lib/launch/registry/agents/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAG7D,MAAM,CAAC,MAAM,MAAM,GAAc;IAC/B,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,QAAQ;IACf,GAAG,EAAE,cAAc;IACnB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,wBAAwB,EAAE;IACxD,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;CACxF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"droid.d.ts","sourceRoot":"","sources":["../../../../../src/lib/launch/registry/agents/droid.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,eAAO,MAAM,KAAK,EAAE,SAUnB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { buildDroidLaunch } from '../../adapters/droid.js';
|
|
2
|
+
export const droid = {
|
|
3
|
+
name: 'droid',
|
|
4
|
+
label: 'Factory Droid',
|
|
5
|
+
bin: 'droid',
|
|
6
|
+
injection: 'per-session',
|
|
7
|
+
supported: true,
|
|
8
|
+
// The npm package's binary arrives by a postinstall script, which npm 12 no longer runs
|
|
9
|
+
// without approval, so the vendor's documented script is what Align prints (never runs).
|
|
10
|
+
install: { kind: 'docs', url: 'https://docs.factory.ai/cli/getting-started/quickstart', text: 'curl -fsSL https://app.factory.ai/cli | sh' },
|
|
11
|
+
build: (d, base) => buildDroidLaunch({ ...base, ...d.readDroidState(d.cwd, d.home, d.env, d.platform, base.passthrough) }),
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=droid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"droid.js","sourceRoot":"","sources":["../../../../../src/lib/launch/registry/agents/droid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG3D,MAAM,CAAC,MAAM,KAAK,GAAc;IAC9B,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,eAAe;IACtB,GAAG,EAAE,OAAO;IACZ,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,IAAI;IACf,wFAAwF;IACxF,yFAAyF;IACzF,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,wDAAwD,EAAE,IAAI,EAAE,4CAA4C,EAAE;IAC5I,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,cAAe,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;CAC5H,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini-cli.d.ts","sourceRoot":"","sources":["../../../../../src/lib/launch/registry/agents/gemini-cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gemini-cli.d.ts","sourceRoot":"","sources":["../../../../../src/lib/launch/registry/agents/gemini-cli.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,eAAO,MAAM,SAAS,EAAE,SAQvB,CAAC"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { buildGeminiLaunch } from '../../adapters/gemini-cli.js';
|
|
1
2
|
export const geminiCli = {
|
|
2
3
|
name: 'gemini-cli',
|
|
3
4
|
label: 'Gemini CLI',
|
|
4
5
|
bin: 'gemini',
|
|
5
6
|
injection: 'per-session',
|
|
6
|
-
supported:
|
|
7
|
-
install: 'npm i -g @google/gemini-cli',
|
|
7
|
+
supported: true,
|
|
8
|
+
install: { kind: 'npm', argv: ['npm', 'i', '-g', '@google/gemini-cli'] },
|
|
9
|
+
build: (d, base) => buildGeminiLaunch({ ...base, env: d.env, platform: d.platform, ...d.readGeminiState(d.cwd, d.home, d.env, d.platform) }),
|
|
8
10
|
};
|
|
9
11
|
//# sourceMappingURL=gemini-cli.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini-cli.js","sourceRoot":"","sources":["../../../../../src/lib/launch/registry/agents/gemini-cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gemini-cli.js","sourceRoot":"","sources":["../../../../../src/lib/launch/registry/agents/gemini-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAGjE,MAAM,CAAC,MAAM,SAAS,GAAc;IAClC,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,YAAY;IACnB,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,oBAAoB,CAAC,EAAE;IACxE,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;CAC7I,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grok-build.d.ts","sourceRoot":"","sources":["../../../../../src/lib/launch/registry/agents/grok-build.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,eAAO,MAAM,SAAS,EAAE,SAUvB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { buildGrokLaunch } from '../../adapters/grok-build.js';
|
|
2
|
+
import { isGrokBuildBin } from '../../grok-state.js';
|
|
3
|
+
export const grokBuild = {
|
|
4
|
+
name: 'grok-build',
|
|
5
|
+
label: 'Grok Build',
|
|
6
|
+
// Generic on its own: `acceptsBin` takes a `grok` only from Grok Build's install locations.
|
|
7
|
+
bin: 'grok',
|
|
8
|
+
injection: 'written-once',
|
|
9
|
+
supported: true,
|
|
10
|
+
install: { kind: 'docs', url: 'https://x.ai/build', text: 'curl -fsSL https://x.ai/cli/install.sh | bash' },
|
|
11
|
+
acceptsBin: (found, env, platform) => isGrokBuildBin(found, env, platform),
|
|
12
|
+
build: (d, base) => buildGrokLaunch({ ...base, ...d.readGrokState(d.cwd, d.home, d.env, d.platform, base.passthrough) }),
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=grok-build.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grok-build.js","sourceRoot":"","sources":["../../../../../src/lib/launch/registry/agents/grok-build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,MAAM,CAAC,MAAM,SAAS,GAAc;IAClC,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,YAAY;IACnB,4FAA4F;IAC5F,GAAG,EAAE,MAAM;IACX,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,oBAAoB,EAAE,IAAI,EAAE,+CAA+C,EAAE;IAC3G,UAAU,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC;IAC1E,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,aAAc,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;CAC1H,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kiro.d.ts","sourceRoot":"","sources":["../../../../../src/lib/launch/registry/agents/kiro.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,eAAO,MAAM,IAAI,EAAE,SAQlB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { buildKiroLaunch } from '../../adapters/kiro.js';
|
|
2
|
+
export const kiro = {
|
|
3
|
+
name: 'kiro',
|
|
4
|
+
label: 'Kiro CLI',
|
|
5
|
+
bin: 'kiro-cli',
|
|
6
|
+
injection: 'written-once',
|
|
7
|
+
supported: true,
|
|
8
|
+
install: { kind: 'docs', url: 'https://kiro.dev/docs/cli/', text: 'curl -fsSL https://cli.kiro.dev/install | bash' },
|
|
9
|
+
build: (d, base) => buildKiroLaunch({ ...base, ...d.readKiroState(d.cwd, d.home, d.env, d.platform) }),
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=kiro.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kiro.js","sourceRoot":"","sources":["../../../../../src/lib/launch/registry/agents/kiro.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,MAAM,CAAC,MAAM,IAAI,GAAc;IAC7B,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,UAAU;IACjB,GAAG,EAAE,UAAU;IACf,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,4BAA4B,EAAE,IAAI,EAAE,gDAAgD,EAAE;IACpH,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,aAAc,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;CACxG,CAAC"}
|
|
@@ -5,7 +5,7 @@ export const opencode = {
|
|
|
5
5
|
bin: 'opencode',
|
|
6
6
|
injection: 'per-session',
|
|
7
7
|
supported: true,
|
|
8
|
-
install: 'npm i -g opencode-ai',
|
|
8
|
+
install: { kind: 'npm', argv: ['npm', 'i', '-g', 'opencode-ai'] },
|
|
9
9
|
build: (d, base) => buildOpenCodeLaunch({ ...base, env: d.env, ...d.readOpenCodeState(d.cwd, d.home) }),
|
|
10
10
|
};
|
|
11
11
|
//# sourceMappingURL=opencode.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../../../../src/lib/launch/registry/agents/opencode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGjE,MAAM,CAAC,MAAM,QAAQ,GAAc;IACjC,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,UAAU;IACjB,GAAG,EAAE,UAAU;IACf,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../../../../src/lib/launch/registry/agents/opencode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGjE,MAAM,CAAC,MAAM,QAAQ,GAAc;IACjC,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,UAAU;IACjB,GAAG,EAAE,UAAU;IACf,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,EAAE;IACjE,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;CACxG,CAAC"}
|
|
@@ -5,7 +5,7 @@ export const pi = {
|
|
|
5
5
|
bin: 'pi',
|
|
6
6
|
injection: 'written-once',
|
|
7
7
|
supported: true,
|
|
8
|
-
install: 'https://pi.dev',
|
|
8
|
+
install: { kind: 'docs', url: 'https://pi.dev' },
|
|
9
9
|
build: (d, base) => buildPiLaunch({ ...base, ...d.readPiState(d.cwd, d.home, d.env) }),
|
|
10
10
|
};
|
|
11
11
|
//# sourceMappingURL=pi.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pi.js","sourceRoot":"","sources":["../../../../../src/lib/launch/registry/agents/pi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,MAAM,CAAC,MAAM,EAAE,GAAc;IAC3B,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;IACX,GAAG,EAAE,IAAI;IACT,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,gBAAgB;
|
|
1
|
+
{"version":3,"file":"pi.js","sourceRoot":"","sources":["../../../../../src/lib/launch/registry/agents/pi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,MAAM,CAAC,MAAM,EAAE,GAAc;IAC3B,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;IACX,GAAG,EAAE,IAAI;IACT,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,EAAE;IAChD,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;CACvF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qwen.d.ts","sourceRoot":"","sources":["../../../../../src/lib/launch/registry/agents/qwen.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,eAAO,MAAM,IAAI,EAAE,SAQlB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { buildQwenLaunch } from '../../adapters/qwen.js';
|
|
2
|
+
export const qwen = {
|
|
3
|
+
name: 'qwen',
|
|
4
|
+
label: 'Qwen Code',
|
|
5
|
+
bin: 'qwen',
|
|
6
|
+
injection: 'per-session',
|
|
7
|
+
supported: true,
|
|
8
|
+
install: { kind: 'npm', argv: ['npm', 'i', '-g', '@qwen-code/qwen-code'] },
|
|
9
|
+
build: (d, base) => buildQwenLaunch({ ...base, env: d.env, platform: d.platform, ...d.readQwenState(d.cwd, d.home, d.env, d.platform) }),
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=qwen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qwen.js","sourceRoot":"","sources":["../../../../../src/lib/launch/registry/agents/qwen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,MAAM,CAAC,MAAM,IAAI,GAAc;IAC7B,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,WAAW;IAClB,GAAG,EAAE,MAAM;IACX,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,sBAAsB,CAAC,EAAE;IAC1E,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,aAAc,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;CAC1I,CAAC"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import type { AgentSpec } from './types.js';
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Table order: the order `LAUNCH_AGENTS` always had, with Copilot in its alphabetical place, then
|
|
4
|
+
* wave B by id. The picker sorts by label itself; this order is what `align agents` prints.
|
|
5
|
+
*/
|
|
3
6
|
export declare const AGENT_REGISTRY: readonly AgentSpec[];
|
|
4
7
|
export declare function specByName(name: string | undefined): AgentSpec | undefined;
|
|
5
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/launch/registry/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/launch/registry/index.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,SAAS,EAAqG,CAAC;AAErJ,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAE1E"}
|
|
@@ -1,11 +1,20 @@
|
|
|
1
|
+
import { amp } from './agents/amp.js';
|
|
1
2
|
import { claudeCode } from './agents/claude-code.js';
|
|
2
3
|
import { codex } from './agents/codex.js';
|
|
4
|
+
import { copilot } from './agents/copilot.js';
|
|
3
5
|
import { cursor } from './agents/cursor.js';
|
|
6
|
+
import { droid } from './agents/droid.js';
|
|
4
7
|
import { geminiCli } from './agents/gemini-cli.js';
|
|
8
|
+
import { grokBuild } from './agents/grok-build.js';
|
|
9
|
+
import { kiro } from './agents/kiro.js';
|
|
5
10
|
import { opencode } from './agents/opencode.js';
|
|
6
11
|
import { pi } from './agents/pi.js';
|
|
7
|
-
|
|
8
|
-
|
|
12
|
+
import { qwen } from './agents/qwen.js';
|
|
13
|
+
/**
|
|
14
|
+
* Table order: the order `LAUNCH_AGENTS` always had, with Copilot in its alphabetical place, then
|
|
15
|
+
* wave B by id. The picker sorts by label itself; this order is what `align agents` prints.
|
|
16
|
+
*/
|
|
17
|
+
export const AGENT_REGISTRY = [claudeCode, codex, copilot, cursor, geminiCli, opencode, pi, amp, droid, grokBuild, kiro, qwen];
|
|
9
18
|
export function specByName(name) {
|
|
10
19
|
return AGENT_REGISTRY.find((a) => a.name === name);
|
|
11
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/launch/registry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/launch/registry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAGxC;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAyB,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAErJ,MAAM,UAAU,UAAU,CAAC,IAAwB;IACjD,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACrD,CAAC"}
|
|
@@ -1,19 +1,35 @@
|
|
|
1
1
|
import type { AgentName } from '../../sessions/types.js';
|
|
2
2
|
import type { LaunchSpec } from '../adapters/claude-code.js';
|
|
3
|
+
import type { AgentInstall } from '../install.js';
|
|
3
4
|
import type { BuildInput, LaunchDeps } from '../launch.js';
|
|
5
|
+
/**
|
|
6
|
+
* Every agent the launcher knows. Wider than the session parsers' AgentName: an agent can be a
|
|
7
|
+
* launch target before align reads its session history (Copilot), and widening AgentName would
|
|
8
|
+
* reach every parser's exhaustive switch for nothing.
|
|
9
|
+
*/
|
|
10
|
+
export type LaunchAgentId = AgentName | 'copilot' | 'qwen' | 'droid' | 'amp' | 'kiro' | 'grok-build';
|
|
4
11
|
/**
|
|
5
12
|
* One launchable (or planned) coding agent. R1 carries today's `LaunchAgent` fields plus the
|
|
6
13
|
* adapter that builds its launch; later phases replace adapters with data.
|
|
7
14
|
*/
|
|
8
15
|
export interface AgentSpec {
|
|
9
|
-
name:
|
|
16
|
+
name: LaunchAgentId;
|
|
10
17
|
label: string;
|
|
11
18
|
bin: string;
|
|
12
19
|
/** per-session: nothing written to the user's config. written-once: later phases. */
|
|
13
20
|
injection: 'per-session' | 'written-once';
|
|
14
21
|
/** A launch target today. Later phases flip more entries to true; nothing else changes. */
|
|
15
22
|
supported: boolean;
|
|
16
|
-
|
|
23
|
+
/**
|
|
24
|
+
* How a user installs it. `npm`: one argv the picker may offer to run after an explicit yes.
|
|
25
|
+
* `docs`: a script or URL installer, which Align only ever prints (plan Decision 4).
|
|
26
|
+
*/
|
|
27
|
+
install: AgentInstall;
|
|
28
|
+
/**
|
|
29
|
+
* For a binary whose name is too generic to trust on its own (`grok`): whether the file PATH
|
|
30
|
+
* found is really this agent. A `bin` on PATH that this refuses counts as not installed.
|
|
31
|
+
*/
|
|
32
|
+
acceptsBin?: (found: string, env: Record<string, string | undefined>, platform: string) => boolean;
|
|
17
33
|
/** The adapter. Absent for agents that are not launch targets yet. */
|
|
18
34
|
build?: (d: LaunchDeps, base: BuildInput) => LaunchSpec;
|
|
19
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/launch/registry/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE3D;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/launch/registry/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE3D;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,YAAY,CAAC;AAErG;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,qFAAqF;IACrF,SAAS,EAAE,aAAa,GAAG,cAAc,CAAC;IAC1C,2FAA2F;IAC3F,SAAS,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,OAAO,EAAE,YAAY,CAAC;IACtB;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IACnG,sEAAsE;IACtE,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,KAAK,UAAU,CAAC;CACzD"}
|
|
@@ -5,7 +5,22 @@ export interface RunDeps {
|
|
|
5
5
|
platform: string;
|
|
6
6
|
/** The process whose signals are forwarded. A parameter so tests need not signal themselves. */
|
|
7
7
|
proc: Pick<typeof process, 'on' | 'off'>;
|
|
8
|
+
/** The env as the user's shell started align with. A parameter so tests can name it. */
|
|
9
|
+
startupEnv: Readonly<Record<string, string | undefined>>;
|
|
8
10
|
}
|
|
11
|
+
/**
|
|
12
|
+
* The child's environment: align's own, with every LLM provider variable reset to what the
|
|
13
|
+
* user's shell had at startup, then the spec's env on top. Defence in depth for H1 - align
|
|
14
|
+
* keeps saved keys out of process.env by design (local-llm reads them as data), and this
|
|
15
|
+
* guarantees that even a future regression writing one cannot hand a saved ANTHROPIC_API_KEY
|
|
16
|
+
* to Claude Code (API billing over a Max subscription), OPENAI_API_KEY to Codex or
|
|
17
|
+
* GEMINI_API_KEY to Gemini CLI. A variable the user exported is restored, never stripped.
|
|
18
|
+
*/
|
|
19
|
+
export declare function childEnv(parent: Record<string, string | undefined>, startup: Readonly<Record<string, string | undefined>>, specEnv: Record<string, string> | undefined): Record<string, string | undefined>;
|
|
20
|
+
export declare function winShimCommand(spec: Pick<LaunchSpec, 'bin' | 'args'>): {
|
|
21
|
+
command: string;
|
|
22
|
+
args: string[];
|
|
23
|
+
};
|
|
9
24
|
/**
|
|
10
25
|
* Run the agent with the terminal handed to it and resolve with the exit code align should
|
|
11
26
|
* leave with. align stays alive until the child is gone:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-agent.d.ts","sourceRoot":"","sources":["../../../src/lib/launch/run-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAsB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAG9F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"run-agent.d.ts","sourceRoot":"","sources":["../../../src/lib/launch/run-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAsB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAG9F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAI5D,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,YAAY,KAAK,YAAY,CAAC;IAChF,QAAQ,EAAE,MAAM,CAAC;IACjB,gGAAgG;IAChG,IAAI,EAAE,IAAI,CAAC,OAAO,OAAO,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC;IACzC,wFAAwF;IACxF,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;CAC1D;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAC1C,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,EACrD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAC1C,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAOpC;AAQD,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,GAAG,MAAM,CAAC,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAW1G;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,GAAE,OAAO,CAAC,OAAO,CAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkC7F"}
|
|
@@ -1,11 +1,31 @@
|
|
|
1
1
|
import { spawn as nodeSpawn } from 'node:child_process';
|
|
2
2
|
import os from 'node:os';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
+
import { PROVIDER_ENV_VARS } from '../llm-providers.js';
|
|
5
|
+
import { STARTUP_ENV } from '../startup-env.js';
|
|
6
|
+
/**
|
|
7
|
+
* The child's environment: align's own, with every LLM provider variable reset to what the
|
|
8
|
+
* user's shell had at startup, then the spec's env on top. Defence in depth for H1 - align
|
|
9
|
+
* keeps saved keys out of process.env by design (local-llm reads them as data), and this
|
|
10
|
+
* guarantees that even a future regression writing one cannot hand a saved ANTHROPIC_API_KEY
|
|
11
|
+
* to Claude Code (API billing over a Max subscription), OPENAI_API_KEY to Codex or
|
|
12
|
+
* GEMINI_API_KEY to Gemini CLI. A variable the user exported is restored, never stripped.
|
|
13
|
+
*/
|
|
14
|
+
export function childEnv(parent, startup, specEnv) {
|
|
15
|
+
const env = { ...parent };
|
|
16
|
+
for (const name of PROVIDER_ENV_VARS) {
|
|
17
|
+
if (startup[name] === undefined)
|
|
18
|
+
delete env[name];
|
|
19
|
+
else
|
|
20
|
+
env[name] = startup[name];
|
|
21
|
+
}
|
|
22
|
+
return { ...env, ...specEnv };
|
|
23
|
+
}
|
|
4
24
|
// cmd.exe re-parses the whole line, so these would run a second command or expand a variable.
|
|
5
25
|
const WIN_SHELL_CHARS = /[&|<>^%"]/;
|
|
6
26
|
/** One CRT-quoted argument: trailing backslashes are doubled so they cannot escape the closing quote. */
|
|
7
27
|
const winQuote = (a) => `"${a.replace(/(\\+)$/, '$1$1')}"`;
|
|
8
|
-
function winShimCommand(spec) {
|
|
28
|
+
export function winShimCommand(spec) {
|
|
9
29
|
const binHit = WIN_SHELL_CHARS.exec(spec.bin);
|
|
10
30
|
if (binHit)
|
|
11
31
|
throw new Error(`the path to ${path.win32.basename(spec.bin)} (${spec.bin}) holds the shell character ${binHit[0]}, which cmd.exe would interpret. Move or reinstall the agent to a path without it.`);
|
|
@@ -35,7 +55,8 @@ export async function runAgent(spec, deps = {}) {
|
|
|
35
55
|
const proc = deps.proc ?? process;
|
|
36
56
|
const isShim = platform === 'win32' && /\.(cmd|bat)$/i.test(spec.bin);
|
|
37
57
|
const { command, args } = isShim ? winShimCommand(spec) : { command: spec.bin, args: spec.args };
|
|
38
|
-
const
|
|
58
|
+
const startupEnv = deps.startupEnv ?? STARTUP_ENV;
|
|
59
|
+
const options = { stdio: 'inherit', env: childEnv(process.env, startupEnv, spec.env) };
|
|
39
60
|
if (isShim)
|
|
40
61
|
options.windowsVerbatimArguments = true;
|
|
41
62
|
const child = spawn(command, args, options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-agent.js","sourceRoot":"","sources":["../../../src/lib/launch/run-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,IAAI,SAAS,EAAqB,MAAM,oBAAoB,CAAC;AAC9F,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"run-agent.js","sourceRoot":"","sources":["../../../src/lib/launch/run-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The strict "Align is already here" test for the wave A agents (Codex, Gemini CLI, Copilot).
|
|
3
|
+
* Project and workspace files are untrusted input, so an entry stands in for the injected
|
|
4
|
+
* `align-local` only when it is EXACTLY align's own local server: the command, the args, and
|
|
5
|
+
* no other key that could change what runs (env, cwd, url, envFile, a timeout, a filter...).
|
|
6
|
+
*
|
|
7
|
+
* Deliberately separate from project-state.ts's isLocalAlignServer (Claude Code, pi, Cursor),
|
|
8
|
+
* which matches any command line that mentions align and mcp.
|
|
9
|
+
*/
|
|
10
|
+
export type StrictHost = 'mcpServers' | 'codex' | 'copilot' | 'droid';
|
|
11
|
+
export interface CanonicalOptions {
|
|
12
|
+
/** Whether a bare `align mcp` reads the local graph on this machine. */
|
|
13
|
+
localIsDefault: boolean;
|
|
14
|
+
platform: string;
|
|
15
|
+
host: StrictHost;
|
|
16
|
+
}
|
|
17
|
+
type Json = Record<string, unknown>;
|
|
18
|
+
export declare function isCanonicalLocalEntry(entry: unknown, o: CanonicalOptions): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* JSON with `//` and block comments removed, the way Gemini reads its settings and
|
|
21
|
+
* trustedFolders.json (strip-json-comments). Comment markers inside strings are kept. Comments
|
|
22
|
+
* become spaces, so line and column numbers in a parse error still point at the right place.
|
|
23
|
+
*/
|
|
24
|
+
export declare function stripJsonComments(text: string): string;
|
|
25
|
+
/** JSON or JSONC as an object; null when it is not one. */
|
|
26
|
+
export declare function parseJsonc(text: string | null): Json | null;
|
|
27
|
+
/** What the agent's loaded config layers already hold for Align, decided by the strict test above. */
|
|
28
|
+
export interface AlignLocalState {
|
|
29
|
+
/** A layer the agent loads already runs align's own local server (align-local or align). */
|
|
30
|
+
present: boolean;
|
|
31
|
+
/** Files whose `align-local` this launch replaces whole with align's own. */
|
|
32
|
+
overridden: string[];
|
|
33
|
+
/** A file whose `align-local` cannot be replaced whole: no graph this session. */
|
|
34
|
+
conflict?: string;
|
|
35
|
+
}
|
|
36
|
+
/** One config layer the agent loads, and its servers object (absent when the file has none). */
|
|
37
|
+
export interface Layer {
|
|
38
|
+
file: string;
|
|
39
|
+
servers: unknown;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Fold the loaded layers, in the agent's merge order, into an AlignLocalState.
|
|
43
|
+
* `replaceable(entry)`: whether this launch's injection overwrites EVERY key of a non-canonical
|
|
44
|
+
* align-local (Gemini: always, its system tier replaces the entry whole; Codex: only when it
|
|
45
|
+
* carries nothing beyond command/args/enabled; Copilot: never known, so never).
|
|
46
|
+
*/
|
|
47
|
+
export declare function foldLayers(layers: Layer[], o: CanonicalOptions, replaceable: (entry: unknown) => boolean): AlignLocalState;
|
|
48
|
+
export {};
|
|
49
|
+
//# sourceMappingURL=strict-entry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strict-entry.d.ts","sourceRoot":"","sources":["../../../src/lib/launch/strict-entry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAEtE,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAiBpC,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAelF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA0BtD;AAED,2DAA2D;AAC3D,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAQ3D;AAED,sGAAsG;AACtG,MAAM,WAAW,eAAe;IAC9B,4FAA4F;IAC5F,OAAO,EAAE,OAAO,CAAC;IACjB,6EAA6E;IAC7E,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,gGAAgG;AAChG,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,GAAG,eAAe,CAY1H"}
|