@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.
Files changed (220) hide show
  1. package/README.md +6 -5
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +9 -18
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/agents.d.ts +20 -0
  6. package/dist/commands/agents.d.ts.map +1 -0
  7. package/dist/commands/agents.js +62 -0
  8. package/dist/commands/agents.js.map +1 -0
  9. package/dist/commands/ai.d.ts +11 -0
  10. package/dist/commands/ai.d.ts.map +1 -0
  11. package/dist/commands/ai.js +121 -0
  12. package/dist/commands/ai.js.map +1 -0
  13. package/dist/commands/default-action.js +2 -2
  14. package/dist/commands/default-action.js.map +1 -1
  15. package/dist/commands/registry.d.ts.map +1 -1
  16. package/dist/commands/registry.js +7 -0
  17. package/dist/commands/registry.js.map +1 -1
  18. package/dist/commands/setup.d.ts.map +1 -1
  19. package/dist/commands/setup.js +53 -191
  20. package/dist/commands/setup.js.map +1 -1
  21. package/dist/commands/use.js +1 -1
  22. package/dist/commands/use.js.map +1 -1
  23. package/dist/commands/why.d.ts.map +1 -1
  24. package/dist/commands/why.js +21 -0
  25. package/dist/commands/why.js.map +1 -1
  26. package/dist/index.d.ts +1 -1
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +1 -0
  29. package/dist/index.js.map +1 -1
  30. package/dist/lib/ask-key-offer.d.ts +38 -0
  31. package/dist/lib/ask-key-offer.d.ts.map +1 -0
  32. package/dist/lib/ask-key-offer.js +130 -0
  33. package/dist/lib/ask-key-offer.js.map +1 -0
  34. package/dist/lib/config.d.ts +25 -24
  35. package/dist/lib/config.d.ts.map +1 -1
  36. package/dist/lib/config.js +37 -45
  37. package/dist/lib/config.js.map +1 -1
  38. package/dist/lib/launch/adapters/amp.d.ts +18 -0
  39. package/dist/lib/launch/adapters/amp.d.ts.map +1 -0
  40. package/dist/lib/launch/adapters/amp.js +29 -0
  41. package/dist/lib/launch/adapters/amp.js.map +1 -0
  42. package/dist/lib/launch/adapters/claude-code.d.ts +8 -0
  43. package/dist/lib/launch/adapters/claude-code.d.ts.map +1 -1
  44. package/dist/lib/launch/adapters/claude-code.js.map +1 -1
  45. package/dist/lib/launch/adapters/codex.d.ts +17 -0
  46. package/dist/lib/launch/adapters/codex.d.ts.map +1 -0
  47. package/dist/lib/launch/adapters/codex.js +44 -0
  48. package/dist/lib/launch/adapters/codex.js.map +1 -0
  49. package/dist/lib/launch/adapters/copilot.d.ts +17 -0
  50. package/dist/lib/launch/adapters/copilot.d.ts.map +1 -0
  51. package/dist/lib/launch/adapters/copilot.js +29 -0
  52. package/dist/lib/launch/adapters/copilot.js.map +1 -0
  53. package/dist/lib/launch/adapters/droid.d.ts +19 -0
  54. package/dist/lib/launch/adapters/droid.d.ts.map +1 -0
  55. package/dist/lib/launch/adapters/droid.js +38 -0
  56. package/dist/lib/launch/adapters/droid.js.map +1 -0
  57. package/dist/lib/launch/adapters/gemini-cli.d.ts +25 -0
  58. package/dist/lib/launch/adapters/gemini-cli.d.ts.map +1 -0
  59. package/dist/lib/launch/adapters/gemini-cli.js +73 -0
  60. package/dist/lib/launch/adapters/gemini-cli.js.map +1 -0
  61. package/dist/lib/launch/adapters/grok-build.d.ts +16 -0
  62. package/dist/lib/launch/adapters/grok-build.d.ts.map +1 -0
  63. package/dist/lib/launch/adapters/grok-build.js +25 -0
  64. package/dist/lib/launch/adapters/grok-build.js.map +1 -0
  65. package/dist/lib/launch/adapters/kiro.d.ts +17 -0
  66. package/dist/lib/launch/adapters/kiro.d.ts.map +1 -0
  67. package/dist/lib/launch/adapters/kiro.js +25 -0
  68. package/dist/lib/launch/adapters/kiro.js.map +1 -0
  69. package/dist/lib/launch/adapters/qwen.d.ts +25 -0
  70. package/dist/lib/launch/adapters/qwen.d.ts.map +1 -0
  71. package/dist/lib/launch/adapters/qwen.js +67 -0
  72. package/dist/lib/launch/adapters/qwen.js.map +1 -0
  73. package/dist/lib/launch/agents.d.ts +16 -3
  74. package/dist/lib/launch/agents.d.ts.map +1 -1
  75. package/dist/lib/launch/agents.js +26 -4
  76. package/dist/lib/launch/agents.js.map +1 -1
  77. package/dist/lib/launch/amp-state.d.ts +21 -0
  78. package/dist/lib/launch/amp-state.d.ts.map +1 -0
  79. package/dist/lib/launch/amp-state.js +61 -0
  80. package/dist/lib/launch/amp-state.js.map +1 -0
  81. package/dist/lib/launch/codex-state.d.ts +31 -0
  82. package/dist/lib/launch/codex-state.d.ts.map +1 -0
  83. package/dist/lib/launch/codex-state.js +92 -0
  84. package/dist/lib/launch/codex-state.js.map +1 -0
  85. package/dist/lib/launch/config-writes.d.ts +7 -1
  86. package/dist/lib/launch/config-writes.d.ts.map +1 -1
  87. package/dist/lib/launch/config-writes.js +60 -7
  88. package/dist/lib/launch/config-writes.js.map +1 -1
  89. package/dist/lib/launch/copilot-state.d.ts +19 -0
  90. package/dist/lib/launch/copilot-state.d.ts.map +1 -0
  91. package/dist/lib/launch/copilot-state.js +51 -0
  92. package/dist/lib/launch/copilot-state.js.map +1 -0
  93. package/dist/lib/launch/detect.d.ts.map +1 -1
  94. package/dist/lib/launch/detect.js +2 -1
  95. package/dist/lib/launch/detect.js.map +1 -1
  96. package/dist/lib/launch/droid-state.d.ts +24 -0
  97. package/dist/lib/launch/droid-state.d.ts.map +1 -0
  98. package/dist/lib/launch/droid-state.js +74 -0
  99. package/dist/lib/launch/droid-state.js.map +1 -0
  100. package/dist/lib/launch/gemini-state.d.ts +32 -0
  101. package/dist/lib/launch/gemini-state.d.ts.map +1 -0
  102. package/dist/lib/launch/gemini-state.js +59 -0
  103. package/dist/lib/launch/gemini-state.js.map +1 -0
  104. package/dist/lib/launch/gemini-trust.d.ts +26 -0
  105. package/dist/lib/launch/gemini-trust.d.ts.map +1 -0
  106. package/dist/lib/launch/gemini-trust.js +103 -0
  107. package/dist/lib/launch/gemini-trust.js.map +1 -0
  108. package/dist/lib/launch/grok-state.d.ts +42 -0
  109. package/dist/lib/launch/grok-state.d.ts.map +1 -0
  110. package/dist/lib/launch/grok-state.js +128 -0
  111. package/dist/lib/launch/grok-state.js.map +1 -0
  112. package/dist/lib/launch/install.d.ts +33 -0
  113. package/dist/lib/launch/install.d.ts.map +1 -0
  114. package/dist/lib/launch/install.js +48 -0
  115. package/dist/lib/launch/install.js.map +1 -0
  116. package/dist/lib/launch/kiro-state.d.ts +22 -0
  117. package/dist/lib/launch/kiro-state.d.ts.map +1 -0
  118. package/dist/lib/launch/kiro-state.js +59 -0
  119. package/dist/lib/launch/kiro-state.js.map +1 -0
  120. package/dist/lib/launch/launch-files.d.ts +15 -0
  121. package/dist/lib/launch/launch-files.d.ts.map +1 -1
  122. package/dist/lib/launch/launch-files.js +64 -4
  123. package/dist/lib/launch/launch-files.js.map +1 -1
  124. package/dist/lib/launch/launch.d.ts +61 -6
  125. package/dist/lib/launch/launch.d.ts.map +1 -1
  126. package/dist/lib/launch/launch.js +98 -31
  127. package/dist/lib/launch/launch.js.map +1 -1
  128. package/dist/lib/launch/layer-files.d.ts +12 -0
  129. package/dist/lib/launch/layer-files.d.ts.map +1 -0
  130. package/dist/lib/launch/layer-files.js +43 -0
  131. package/dist/lib/launch/layer-files.js.map +1 -0
  132. package/dist/lib/launch/pick-agent.d.ts +12 -5
  133. package/dist/lib/launch/pick-agent.d.ts.map +1 -1
  134. package/dist/lib/launch/pick-agent.js +47 -19
  135. package/dist/lib/launch/pick-agent.js.map +1 -1
  136. package/dist/lib/launch/picker-options.d.ts +30 -0
  137. package/dist/lib/launch/picker-options.d.ts.map +1 -0
  138. package/dist/lib/launch/picker-options.js +42 -0
  139. package/dist/lib/launch/picker-options.js.map +1 -0
  140. package/dist/lib/launch/prompts.d.ts +11 -0
  141. package/dist/lib/launch/prompts.d.ts.map +1 -0
  142. package/dist/lib/launch/prompts.js +27 -0
  143. package/dist/lib/launch/prompts.js.map +1 -0
  144. package/dist/lib/launch/qwen-state.d.ts +30 -0
  145. package/dist/lib/launch/qwen-state.d.ts.map +1 -0
  146. package/dist/lib/launch/qwen-state.js +57 -0
  147. package/dist/lib/launch/qwen-state.js.map +1 -0
  148. package/dist/lib/launch/qwen-trust.d.ts +24 -0
  149. package/dist/lib/launch/qwen-trust.d.ts.map +1 -0
  150. package/dist/lib/launch/qwen-trust.js +100 -0
  151. package/dist/lib/launch/qwen-trust.js.map +1 -0
  152. package/dist/lib/launch/registry/agents/amp.d.ts +3 -0
  153. package/dist/lib/launch/registry/agents/amp.d.ts.map +1 -0
  154. package/dist/lib/launch/registry/agents/amp.js +14 -0
  155. package/dist/lib/launch/registry/agents/amp.js.map +1 -0
  156. package/dist/lib/launch/registry/agents/claude-code.js +1 -1
  157. package/dist/lib/launch/registry/agents/claude-code.js.map +1 -1
  158. package/dist/lib/launch/registry/agents/codex.d.ts.map +1 -1
  159. package/dist/lib/launch/registry/agents/codex.js +4 -2
  160. package/dist/lib/launch/registry/agents/codex.js.map +1 -1
  161. package/dist/lib/launch/registry/agents/copilot.d.ts +3 -0
  162. package/dist/lib/launch/registry/agents/copilot.d.ts.map +1 -0
  163. package/dist/lib/launch/registry/agents/copilot.js +11 -0
  164. package/dist/lib/launch/registry/agents/copilot.js.map +1 -0
  165. package/dist/lib/launch/registry/agents/cursor.js +1 -1
  166. package/dist/lib/launch/registry/agents/cursor.js.map +1 -1
  167. package/dist/lib/launch/registry/agents/droid.d.ts +3 -0
  168. package/dist/lib/launch/registry/agents/droid.d.ts.map +1 -0
  169. package/dist/lib/launch/registry/agents/droid.js +13 -0
  170. package/dist/lib/launch/registry/agents/droid.js.map +1 -0
  171. package/dist/lib/launch/registry/agents/gemini-cli.d.ts.map +1 -1
  172. package/dist/lib/launch/registry/agents/gemini-cli.js +4 -2
  173. package/dist/lib/launch/registry/agents/gemini-cli.js.map +1 -1
  174. package/dist/lib/launch/registry/agents/grok-build.d.ts +3 -0
  175. package/dist/lib/launch/registry/agents/grok-build.d.ts.map +1 -0
  176. package/dist/lib/launch/registry/agents/grok-build.js +14 -0
  177. package/dist/lib/launch/registry/agents/grok-build.js.map +1 -0
  178. package/dist/lib/launch/registry/agents/kiro.d.ts +3 -0
  179. package/dist/lib/launch/registry/agents/kiro.d.ts.map +1 -0
  180. package/dist/lib/launch/registry/agents/kiro.js +11 -0
  181. package/dist/lib/launch/registry/agents/kiro.js.map +1 -0
  182. package/dist/lib/launch/registry/agents/opencode.js +1 -1
  183. package/dist/lib/launch/registry/agents/opencode.js.map +1 -1
  184. package/dist/lib/launch/registry/agents/pi.js +1 -1
  185. package/dist/lib/launch/registry/agents/pi.js.map +1 -1
  186. package/dist/lib/launch/registry/agents/qwen.d.ts +3 -0
  187. package/dist/lib/launch/registry/agents/qwen.d.ts.map +1 -0
  188. package/dist/lib/launch/registry/agents/qwen.js +11 -0
  189. package/dist/lib/launch/registry/agents/qwen.js.map +1 -0
  190. package/dist/lib/launch/registry/index.d.ts +4 -1
  191. package/dist/lib/launch/registry/index.d.ts.map +1 -1
  192. package/dist/lib/launch/registry/index.js +11 -2
  193. package/dist/lib/launch/registry/index.js.map +1 -1
  194. package/dist/lib/launch/registry/types.d.ts +18 -2
  195. package/dist/lib/launch/registry/types.d.ts.map +1 -1
  196. package/dist/lib/launch/run-agent.d.ts +15 -0
  197. package/dist/lib/launch/run-agent.d.ts.map +1 -1
  198. package/dist/lib/launch/run-agent.js +23 -2
  199. package/dist/lib/launch/run-agent.js.map +1 -1
  200. package/dist/lib/launch/strict-entry.d.ts +49 -0
  201. package/dist/lib/launch/strict-entry.d.ts.map +1 -0
  202. package/dist/lib/launch/strict-entry.js +108 -0
  203. package/dist/lib/launch/strict-entry.js.map +1 -0
  204. package/dist/lib/llm-providers.d.ts +66 -0
  205. package/dist/lib/llm-providers.d.ts.map +1 -0
  206. package/dist/lib/llm-providers.js +150 -0
  207. package/dist/lib/llm-providers.js.map +1 -0
  208. package/dist/lib/local-llm.d.ts +63 -12
  209. package/dist/lib/local-llm.d.ts.map +1 -1
  210. package/dist/lib/local-llm.js +229 -104
  211. package/dist/lib/local-llm.js.map +1 -1
  212. package/dist/lib/safe-config-write.d.ts +12 -1
  213. package/dist/lib/safe-config-write.d.ts.map +1 -1
  214. package/dist/lib/safe-config-write.js +123 -7
  215. package/dist/lib/safe-config-write.js.map +1 -1
  216. package/dist/lib/startup-env.d.ts +8 -0
  217. package/dist/lib/startup-env.d.ts.map +1 -0
  218. package/dist/lib/startup-env.js +8 -0
  219. package/dist/lib/startup-env.js.map +1 -0
  220. 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,oCAAoC;IAC7C,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
+ {"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":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,eAAO,MAAM,KAAK,EAAE,SAOnB,CAAC"}
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: false,
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":"AAEA,MAAM,CAAC,MAAM,KAAK,GAAc;IAC9B,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,OAAO;IACZ,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,KAAK;IAChB,OAAO,EAAE,wBAAwB;CAClC,CAAC"}
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,3 @@
1
+ import type { AgentSpec } from '../types.js';
2
+ export declare const copilot: AgentSpec;
3
+ //# sourceMappingURL=copilot.d.ts.map
@@ -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;IACjC,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"}
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,3 @@
1
+ import type { AgentSpec } from '../types.js';
2
+ export declare const droid: AgentSpec;
3
+ //# sourceMappingURL=droid.d.ts.map
@@ -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":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,eAAO,MAAM,SAAS,EAAE,SAOvB,CAAC"}
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: false,
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":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAc;IAClC,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,YAAY;IACnB,GAAG,EAAE,QAAQ;IACb,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,KAAK;IAChB,OAAO,EAAE,6BAA6B;CACvC,CAAC"}
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,3 @@
1
+ import type { AgentSpec } from '../types.js';
2
+ export declare const grokBuild: AgentSpec;
3
+ //# sourceMappingURL=grok-build.d.ts.map
@@ -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,3 @@
1
+ import type { AgentSpec } from '../types.js';
2
+ export declare const kiro: AgentSpec;
3
+ //# sourceMappingURL=kiro.d.ts.map
@@ -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,sBAAsB;IAC/B,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"}
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;IACzB,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"}
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,3 @@
1
+ import type { AgentSpec } from '../types.js';
2
+ export declare const qwen: AgentSpec;
3
+ //# sourceMappingURL=qwen.d.ts.map
@@ -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
- /** Picker order. Same order `LAUNCH_AGENTS` always had. */
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":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,2DAA2D;AAC3D,eAAO,MAAM,cAAc,EAAE,SAAS,SAAS,EAAyD,CAAC;AAEzG,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAE1E"}
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
- /** Picker order. Same order `LAUNCH_AGENTS` always had. */
8
- export const AGENT_REGISTRY = [claudeCode, codex, cursor, geminiCli, opencode, pi];
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;AAGpC,2DAA2D;AAC3D,MAAM,CAAC,MAAM,cAAc,GAAyB,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;AAEzG,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
+ {"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: AgentName;
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
- install: string;
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,SAAS,CAAC;IAChB,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,OAAO,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,KAAK,UAAU,CAAC;CACzD"}
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;AAE5D,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;CAC1C;AAqBD;;;;;;;;;;GAUG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,GAAE,OAAO,CAAC,OAAO,CAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAiC7F"}
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 options = { stdio: 'inherit', env: { ...process.env, ...spec.env } };
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":"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"}
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"}