hub-launch 1.22.0 → 1.24.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 (43) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +5 -1
  3. package/dist/commands/init.d.ts.map +1 -1
  4. package/dist/commands/init.js +66 -23
  5. package/dist/commands/init.js.map +1 -1
  6. package/dist/commands/launch.d.ts +14 -2
  7. package/dist/commands/launch.d.ts.map +1 -1
  8. package/dist/commands/launch.js +209 -70
  9. package/dist/commands/launch.js.map +1 -1
  10. package/dist/commands/schedule.d.ts.map +1 -1
  11. package/dist/commands/schedule.js +8 -7
  12. package/dist/commands/schedule.js.map +1 -1
  13. package/dist/config/index.d.ts.map +1 -1
  14. package/dist/config/index.js +4 -1
  15. package/dist/config/index.js.map +1 -1
  16. package/dist/templates/proceed-instructions.md +2 -0
  17. package/dist/templates/skills/hula-confirm/SKILL.md +1 -1
  18. package/dist/templates/skills/hula-help/SKILL.md +1 -1
  19. package/dist/templates/skills/hula-plan/SKILL.md +1 -0
  20. package/dist/templates/skills/hula-schedule/SKILL.md +3 -3
  21. package/dist/types/config.schema.d.ts +34 -3
  22. package/dist/types/config.schema.d.ts.map +1 -1
  23. package/dist/types/config.schema.js +35 -1
  24. package/dist/types/config.schema.js.map +1 -1
  25. package/dist/utils/config-file-edit.d.ts +8 -4
  26. package/dist/utils/config-file-edit.d.ts.map +1 -1
  27. package/dist/utils/config-file-edit.js +13 -9
  28. package/dist/utils/config-file-edit.js.map +1 -1
  29. package/dist/utils/config-parser.d.ts.map +1 -1
  30. package/dist/utils/config-parser.js +4 -0
  31. package/dist/utils/config-parser.js.map +1 -1
  32. package/dist/utils/env-vars.d.ts.map +1 -1
  33. package/dist/utils/env-vars.js +4 -0
  34. package/dist/utils/env-vars.js.map +1 -1
  35. package/dist/utils/provider-credentials.d.ts +54 -0
  36. package/dist/utils/provider-credentials.d.ts.map +1 -0
  37. package/dist/utils/provider-credentials.js +83 -0
  38. package/dist/utils/provider-credentials.js.map +1 -0
  39. package/package.json +2 -2
  40. package/dist/utils/ephemeral-credentials.d.ts +0 -32
  41. package/dist/utils/ephemeral-credentials.d.ts.map +0 -1
  42. package/dist/utils/ephemeral-credentials.js +0 -26
  43. package/dist/utils/ephemeral-credentials.js.map +0 -1
@@ -1,4 +1,20 @@
1
1
  import { z } from 'zod';
2
+ export declare const LlmProviderTypeSchema: z.ZodEnum<["claude", "openai", "openrouter"]>;
3
+ export type LlmProviderType = z.infer<typeof LlmProviderTypeSchema>;
4
+ /**
5
+ * Friendly migration error for the removed `anthropicApiKey` config key. The
6
+ * hard rename to the `provider` block ships in lockstep with hula-server, so a
7
+ * leftover `anthropicApiKey` is a configuration error, not a silently-stripped
8
+ * unknown key.
9
+ */
10
+ export declare const LEGACY_ANTHROPIC_KEY_ERROR = "Config key `anthropicApiKey` is no longer supported \u2014 use provider: { type: 'claude', apiKey: '\u2026' } in .hublaunch/hublaunch.config.js. See CHANGELOG.md.";
11
+ /**
12
+ * Detect the removed `anthropicApiKey` key on a RAW (pre-parse) config object
13
+ * and throw the migration error. Zod's `z.object` strips unknown keys before
14
+ * any refinement runs, so this must run against the raw object — call it before
15
+ * `ConfigSchema.parse`. Pure and side-effect free.
16
+ */
17
+ export declare function assertNoLegacyProviderKeys(raw: unknown): void;
2
18
  declare const DeploymentServiceSchema: z.ZodObject<{
3
19
  provider: z.ZodDefault<z.ZodEnum<["vercel", "netlify", "railway", "custom"]>>;
4
20
  customPath: z.ZodOptional<z.ZodString>;
@@ -141,7 +157,16 @@ export declare const ConfigSchema: z.ZodObject<{
141
157
  hulaProjectUrl: z.ZodOptional<z.ZodString>;
142
158
  hulaApiKey: z.ZodOptional<z.ZodString>;
143
159
  hulaProject: z.ZodOptional<z.ZodString>;
144
- anthropicApiKey: z.ZodOptional<z.ZodString>;
160
+ provider: z.ZodOptional<z.ZodObject<{
161
+ type: z.ZodDefault<z.ZodEnum<["claude", "openai", "openrouter"]>>;
162
+ apiKey: z.ZodOptional<z.ZodString>;
163
+ }, "strip", z.ZodTypeAny, {
164
+ type: "claude" | "openai" | "openrouter";
165
+ apiKey?: string | undefined;
166
+ }, {
167
+ type?: "claude" | "openai" | "openrouter" | undefined;
168
+ apiKey?: string | undefined;
169
+ }>>;
145
170
  containerResources: z.ZodOptional<z.ZodObject<{
146
171
  cpu: z.ZodOptional<z.ZodNumber>;
147
172
  memory: z.ZodOptional<z.ZodNumber>;
@@ -473,13 +498,16 @@ export declare const ConfigSchema: z.ZodObject<{
473
498
  worktreeBasePath: string;
474
499
  projectOwner?: string | undefined;
475
500
  version?: string | undefined;
501
+ provider?: {
502
+ type: "claude" | "openai" | "openrouter";
503
+ apiKey?: string | undefined;
504
+ } | undefined;
476
505
  teamMembers?: string[] | undefined;
477
506
  projectNumber?: number | undefined;
478
507
  projectId?: string | undefined;
479
508
  hulaProjectUrl?: string | undefined;
480
509
  hulaApiKey?: string | undefined;
481
510
  hulaProject?: string | undefined;
482
- anthropicApiKey?: string | undefined;
483
511
  containerResources?: {
484
512
  cpu?: number | undefined;
485
513
  memory?: number | undefined;
@@ -571,6 +599,10 @@ export declare const ConfigSchema: z.ZodObject<{
571
599
  planPath?: string | undefined;
572
600
  projectOwner?: string | undefined;
573
601
  version?: string | undefined;
602
+ provider?: {
603
+ type?: "claude" | "openai" | "openrouter" | undefined;
604
+ apiKey?: string | undefined;
605
+ } | undefined;
574
606
  editorCommand?: "cursor" | "vsCode" | "other" | undefined;
575
607
  trackingFile?: string | undefined;
576
608
  createIssuesPreference?: "alwaysLatest" | "chooseRecentPlan" | undefined;
@@ -587,7 +619,6 @@ export declare const ConfigSchema: z.ZodObject<{
587
619
  hulaProjectUrl?: string | undefined;
588
620
  hulaApiKey?: string | undefined;
589
621
  hulaProject?: string | undefined;
590
- anthropicApiKey?: string | undefined;
591
622
  containerResources?: {
592
623
  cpu?: number | undefined;
593
624
  memory?: number | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"config.schema.d.ts","sourceRoot":"","sources":["../../src/types/config.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,QAAA,MAAM,uBAAuB;;;;;;;;;EAK3B,CAAC;AAEH,QAAA,MAAM,iBAAiB;;;;;;;;;EAGrB,CAAC;AAEH,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGlB,CAAC;AAEH,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;EAOf,CAAC;AAGH,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYrB,CAAC;AAGH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAC9E,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAClE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAC5D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AACtD,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAGlE,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoKvB,CAAC;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAGlD,eAAO,MAAM,cAAc,EAAE,MAc5B,CAAC"}
1
+ {"version":3,"file":"config.schema.d.ts","sourceRoot":"","sources":["../../src/types/config.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,eAAO,MAAM,qBAAqB,+CAA6C,CAAC;AAChF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,uKACqH,CAAC;AAE7J;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAQ7D;AAGD,QAAA,MAAM,uBAAuB;;;;;;;;;EAK3B,CAAC;AAEH,QAAA,MAAM,iBAAiB;;;;;;;;;EAGrB,CAAC;AAEH,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGlB,CAAC;AAEH,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;EAOf,CAAC;AAGH,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYrB,CAAC;AAGH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAC9E,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAClE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAC5D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AACtD,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAGlE,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6KvB,CAAC;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAGlD,eAAO,MAAM,cAAc,EAAE,MAc5B,CAAC"}
@@ -1,5 +1,31 @@
1
1
  import { z } from 'zod';
2
2
  import { PriorityLevelSchema, DEFAULT_POLL_INTERVAL_SECONDS, MIN_POLL_INTERVAL_SECONDS, } from './common.schema.js';
3
+ // LLM provider selection. The `provider` config block dispatches to a native
4
+ // agent harness server-side (Claude Code for `claude`; OpenAI Codex CLI for
5
+ // `openai`/`openrouter`). Shaped as an object (not a bare string) so a future
6
+ // per-step `steps.<step>.provider` override can be added without breaking
7
+ // existing configs.
8
+ export const LlmProviderTypeSchema = z.enum(['claude', 'openai', 'openrouter']);
9
+ /**
10
+ * Friendly migration error for the removed `anthropicApiKey` config key. The
11
+ * hard rename to the `provider` block ships in lockstep with hula-server, so a
12
+ * leftover `anthropicApiKey` is a configuration error, not a silently-stripped
13
+ * unknown key.
14
+ */
15
+ export const LEGACY_ANTHROPIC_KEY_ERROR = "Config key `anthropicApiKey` is no longer supported — use provider: { type: 'claude', apiKey: '…' } in .hublaunch/hublaunch.config.js. See CHANGELOG.md.";
16
+ /**
17
+ * Detect the removed `anthropicApiKey` key on a RAW (pre-parse) config object
18
+ * and throw the migration error. Zod's `z.object` strips unknown keys before
19
+ * any refinement runs, so this must run against the raw object — call it before
20
+ * `ConfigSchema.parse`. Pure and side-effect free.
21
+ */
22
+ export function assertNoLegacyProviderKeys(raw) {
23
+ if (raw &&
24
+ typeof raw === 'object' &&
25
+ Object.prototype.hasOwnProperty.call(raw, 'anthropicApiKey')) {
26
+ throw new Error(LEGACY_ANTHROPIC_KEY_ERROR);
27
+ }
28
+ }
3
29
  // Service provider schemas
4
30
  const DeploymentServiceSchema = z.object({
5
31
  provider: z
@@ -67,7 +93,15 @@ export const ConfigSchema = z.object({
67
93
  hulaProjectUrl: z.string().optional(),
68
94
  hulaApiKey: z.string().optional(),
69
95
  hulaProject: z.string().optional(), // Format: "owner/repo" - set during login when API key is project-scoped
70
- anthropicApiKey: z.string().optional(),
96
+ // LLM provider selection + credential. Absent means `claude` (consistent with
97
+ // `anthropicApiKey` being absent before the multi-provider rename). The key is
98
+ // optional here and can instead come from --provider-key or PROVIDER_AUTH_TOKEN.
99
+ provider: z
100
+ .object({
101
+ type: LlmProviderTypeSchema.default('claude'),
102
+ apiKey: z.string().optional(),
103
+ })
104
+ .optional(),
71
105
  containerResources: z
72
106
  .object({
73
107
  cpu: z.number().int().min(1).max(32).optional(),
@@ -1 +1 @@
1
- {"version":3,"file":"config.schema.js","sourceRoot":"","sources":["../../src/types/config.schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.schema.js","sourceRoot":"","sources":["../../src/types/config.schema.ts"],"names":[],"mappings":"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"}
@@ -6,18 +6,22 @@
6
6
  * writing the file.
7
7
  */
8
8
  /**
9
- * Insert or replace the `anthropicApiKey` line in a config file's source text.
9
+ * Insert or replace the `provider` block in a config file's source text.
10
10
  *
11
11
  * Mirrors the comment-out-then-insert approach used by `saveApiKeyToConfig` in
12
12
  * `src/commands/login.ts` for `hulaApiKey`:
13
- * - Any existing `anthropicApiKey:` line — whether active or commented out
14
- * (including the placeholder init writes) — is commented out.
13
+ * - Any existing `provider:` line — whether active or commented out (including
14
+ * the placeholder init writes) — is commented out.
15
15
  * - The new active line is inserted immediately after the config opening
16
16
  * (`export const config = {` or `export default {`).
17
17
  *
18
+ * The block is written on a SINGLE line (`provider: { type: '…', apiKey: '…' },`)
19
+ * so the comment-out regex is robust — a multi-line object would leave dangling
20
+ * inner lines. `init` emits the same single-line shape.
21
+ *
18
22
  * If no config opening is found the content is returned unchanged (the caller
19
23
  * degrades gracefully rather than corrupting the file). Never echoes the key
20
24
  * anywhere but the returned string.
21
25
  */
22
- export declare function upsertAnthropicApiKey(content: string, key: string): string;
26
+ export declare function upsertProviderApiKey(content: string, providerType: string, key: string): string;
23
27
  //# sourceMappingURL=config-file-edit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-file-edit.d.ts","sourceRoot":"","sources":["../../src/utils/config-file-edit.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAuB1E"}
1
+ {"version":3,"file":"config-file-edit.d.ts","sourceRoot":"","sources":["../../src/utils/config-file-edit.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,MAAM,GACV,MAAM,CAuBR"}
@@ -6,25 +6,29 @@
6
6
  * writing the file.
7
7
  */
8
8
  /**
9
- * Insert or replace the `anthropicApiKey` line in a config file's source text.
9
+ * Insert or replace the `provider` block in a config file's source text.
10
10
  *
11
11
  * Mirrors the comment-out-then-insert approach used by `saveApiKeyToConfig` in
12
12
  * `src/commands/login.ts` for `hulaApiKey`:
13
- * - Any existing `anthropicApiKey:` line — whether active or commented out
14
- * (including the placeholder init writes) — is commented out.
13
+ * - Any existing `provider:` line — whether active or commented out (including
14
+ * the placeholder init writes) — is commented out.
15
15
  * - The new active line is inserted immediately after the config opening
16
16
  * (`export const config = {` or `export default {`).
17
17
  *
18
+ * The block is written on a SINGLE line (`provider: { type: '…', apiKey: '…' },`)
19
+ * so the comment-out regex is robust — a multi-line object would leave dangling
20
+ * inner lines. `init` emits the same single-line shape.
21
+ *
18
22
  * If no config opening is found the content is returned unchanged (the caller
19
23
  * degrades gracefully rather than corrupting the file). Never echoes the key
20
24
  * anywhere but the returned string.
21
25
  */
22
- export function upsertAnthropicApiKey(content, key) {
26
+ export function upsertProviderApiKey(content, providerType, key) {
23
27
  let result = content;
24
- if (/^(\s*)(?:\/\/\s*)?anthropicApiKey:/m.test(result)) {
25
- // Comment out ALL existing anthropicApiKey lines (commented or not) so we
26
- // never leave two active declarations behind.
27
- result = result.replace(/^(\s*)(?:\/\/\s*)?anthropicApiKey:\s*.*$/gm, (match, indent) => `${indent}// ${match.trim()}`);
28
+ if (/^(\s*)(?:\/\/\s*)?provider:/m.test(result)) {
29
+ // Comment out ALL existing provider lines (commented or not) so we never
30
+ // leave two active declarations behind.
31
+ result = result.replace(/^(\s*)(?:\/\/\s*)?provider:\s*.*$/gm, (match, indent) => `${indent}// ${match.trim()}`);
28
32
  }
29
33
  // Match both real config openings: `export const config = {` and
30
34
  // `export default {` (the latter has no `=`). The `= ` is therefore optional.
@@ -32,6 +36,6 @@ export function upsertAnthropicApiKey(content, key) {
32
36
  if (!configStart) {
33
37
  return content;
34
38
  }
35
- return result.replace(configStart[0], `${configStart[0]}\n anthropicApiKey: '${key}',`);
39
+ return result.replace(configStart[0], `${configStart[0]}\n provider: { type: '${providerType}', apiKey: '${key}' },`);
36
40
  }
37
41
  //# sourceMappingURL=config-file-edit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-file-edit.js","sourceRoot":"","sources":["../../src/utils/config-file-edit.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAe,EAAE,GAAW;IAChE,IAAI,MAAM,GAAG,OAAO,CAAC;IAErB,IAAI,qCAAqC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACvD,0EAA0E;QAC1E,8CAA8C;QAC9C,MAAM,GAAG,MAAM,CAAC,OAAO,CACrB,4CAA4C,EAC5C,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,MAAM,MAAM,KAAK,CAAC,IAAI,EAAE,EAAE,CACjD,CAAC;IACJ,CAAC;IAED,iEAAiE;IACjE,8EAA8E;IAC9E,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAC/E,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,CACnB,WAAW,CAAC,CAAC,CAAC,EACd,GAAG,WAAW,CAAC,CAAC,CAAC,yBAAyB,GAAG,IAAI,CAClD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config-file-edit.js","sourceRoot":"","sources":["../../src/utils/config-file-edit.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAe,EACf,YAAoB,EACpB,GAAW;IAEX,IAAI,MAAM,GAAG,OAAO,CAAC;IAErB,IAAI,8BAA8B,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAChD,yEAAyE;QACzE,wCAAwC;QACxC,MAAM,GAAG,MAAM,CAAC,OAAO,CACrB,qCAAqC,EACrC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,MAAM,MAAM,KAAK,CAAC,IAAI,EAAE,EAAE,CACjD,CAAC;IACJ,CAAC;IAED,iEAAiE;IACjE,8EAA8E;IAC9E,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAC/E,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,CACnB,WAAW,CAAC,CAAC,CAAC,EACd,GAAG,WAAW,CAAC,CAAC,CAAC,0BAA0B,YAAY,eAAe,GAAG,MAAM,CAChF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"config-parser.d.ts","sourceRoot":"","sources":["../../src/utils/config-parser.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,0BAA0B,CAAC;AAElE;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAyC9C;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,EAC7C,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAkBrB"}
1
+ {"version":3,"file":"config-parser.d.ts","sourceRoot":"","sources":["../../src/utils/config-parser.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,0BAA0B,CAAC;AAElE;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CA6C9C;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,EAC7C,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAkBrB"}
@@ -1,6 +1,7 @@
1
1
  import { existsSync } from 'fs';
2
2
  import { pathToFileURL } from 'url';
3
3
  import { logger } from './logger.js';
4
+ import { assertNoLegacyProviderKeys } from '../types/config.schema.js';
4
5
  /**
5
6
  * Prefix used to mark errors that originate from a failed dynamic `import()` of
6
7
  * an existing config file (i.e. a syntactically broken config). Callers can test
@@ -55,6 +56,9 @@ export async function parseExistingConfig(configPath) {
55
56
  throw new Error('Config key `hulaRepository` is no longer supported. Rename it to ' +
56
57
  '`hulaProject` in .hublaunch/hublaunch.config.js. See CHANGELOG.md.');
57
58
  }
59
+ // Detect the removed `anthropicApiKey` key and fail fast with the same
60
+ // friendly migration guidance the runtime loader uses.
61
+ assertNoLegacyProviderKeys(parsed);
58
62
  return parsed;
59
63
  }
60
64
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"config-parser.js","sourceRoot":"","sources":["../../src/utils/config-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAuB,CAAC;AAElE;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,UAAkB;IAElB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;IAEpE,IAAI,MAA2B,CAAC;IAChC,IAAI,CAAC;QACH,yEAAyE;QACzE,sDAAsD;QACtD,MAAM,SAAS,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;QACjD,MAAM,SAAS,GAAG,GAAG,SAAS,UAAU,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QACrD,MAAM,YAAY,GAAG,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,CAG5C,CAAC;QAEF,MAAM,GAAG,CAAC,YAAY,CAAC,OAAO;YAC5B,YAAY,CAAC,MAAM;YACnB,YAAY,CAAwB,CAAC;IACzC,CAAC;IAAC,OAAO,WAAW,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,MAAM,OAAO,GACX,WAAW,YAAY,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3E,MAAM,IAAI,KAAK,CAAC,GAAG,0BAA0B,GAAG,OAAO,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,CAAC,IAAI,EAAE,CAAC;IAEf,wEAAwE;IACxE,6EAA6E;IAC7E,UAAU;IACV,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,CAAC;QAC7E,MAAM,IAAI,KAAK,CACb,mEAAmE;YACjE,oEAAoE,CACvE,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAC1B,QAA6C,EAC7C,SAA8B;IAE9B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,GAAG,SAAS;QACZ,GAAG,QAAQ;QACX,gCAAgC;QAChC,QAAQ,EAAE;YACR,GAAG,SAAS,CAAC,QAAQ;YACrB,GAAG,QAAQ,CAAC,QAAQ;SACrB;QACD,KAAK,EAAE;YACL,GAAG,SAAS,CAAC,KAAK;YAClB,GAAG,QAAQ,CAAC,KAAK;SAClB;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config-parser.js","sourceRoot":"","sources":["../../src/utils/config-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAuB,CAAC;AAElE;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,UAAkB;IAElB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;IAEpE,IAAI,MAA2B,CAAC;IAChC,IAAI,CAAC;QACH,yEAAyE;QACzE,sDAAsD;QACtD,MAAM,SAAS,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;QACjD,MAAM,SAAS,GAAG,GAAG,SAAS,UAAU,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QACrD,MAAM,YAAY,GAAG,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,CAG5C,CAAC;QAEF,MAAM,GAAG,CAAC,YAAY,CAAC,OAAO;YAC5B,YAAY,CAAC,MAAM;YACnB,YAAY,CAAwB,CAAC;IACzC,CAAC;IAAC,OAAO,WAAW,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,MAAM,OAAO,GACX,WAAW,YAAY,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3E,MAAM,IAAI,KAAK,CAAC,GAAG,0BAA0B,GAAG,OAAO,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,CAAC,IAAI,EAAE,CAAC;IAEf,wEAAwE;IACxE,6EAA6E;IAC7E,UAAU;IACV,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,CAAC;QAC7E,MAAM,IAAI,KAAK,CACb,mEAAmE;YACjE,oEAAoE,CACvE,CAAC;IACJ,CAAC;IAED,uEAAuE;IACvE,uDAAuD;IACvD,0BAA0B,CAAC,MAAM,CAAC,CAAC;IAEnC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAC1B,QAA6C,EAC7C,SAA8B;IAE9B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,GAAG,SAAS;QACZ,GAAG,QAAQ;QACX,gCAAgC;QAChC,QAAQ,EAAE;YACR,GAAG,SAAS,CAAC,QAAQ;YACrB,GAAG,QAAQ,CAAC,QAAQ;SACrB;QACD,KAAK,EAAE;YACL,GAAG,SAAS,CAAC,KAAK;YAClB,GAAG,QAAQ,CAAC,KAAK;SAClB;KACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"env-vars.d.ts","sourceRoot":"","sources":["../../src/utils/env-vars.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,aA+C5B,CAAC;AAEH;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,CAQpE;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EAAE,GACtB;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAmC3B"}
1
+ {"version":3,"file":"env-vars.d.ts","sourceRoot":"","sources":["../../src/utils/env-vars.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,aAmD5B,CAAC;AAEH;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,CAQpE;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EAAE,GACtB;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAmC3B"}
@@ -37,6 +37,10 @@ export const RESERVED_ENV_VARS = new Set([
37
37
  'DAYTONA_WORKSPACE_ID',
38
38
  'CLAUDE_CODE_OAUTH_TOKEN',
39
39
  'ANTHROPIC_API_KEY',
40
+ 'OPENAI_API_KEY',
41
+ 'OPENROUTER_API_KEY',
42
+ 'CODEX_API_KEY',
43
+ 'PROVIDER_AUTH_TOKEN',
40
44
  'HULA_PROJECT_URL',
41
45
  'HULA_API_KEY',
42
46
  // Node/npm
@@ -1 +1 @@
1
- {"version":3,"file":"env-vars.js","sourceRoot":"","sources":["../../src/utils/env-vars.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAS;IAC/C,2BAA2B;IAC3B,MAAM;IACN,iBAAiB;IACjB,YAAY;IACZ,mBAAmB;IACnB,KAAK;IACL,QAAQ;IACR,QAAQ;IAER,aAAa;IACb,MAAM;IACN,MAAM;IACN,SAAS;IACT,OAAO;IACP,MAAM;IACN,MAAM;IACN,QAAQ;IACR,UAAU;IAEV,UAAU;IACV,eAAe;IACf,eAAe;IACf,gBAAgB;IAEhB,cAAc;IACd,SAAS;IACT,YAAY;IAEZ,wCAAwC;IACxC,iBAAiB;IACjB,wBAAwB;IACxB,sBAAsB;IACtB,yBAAyB;IACzB,mBAAmB;IACnB,kBAAkB;IAClB,cAAc;IAEd,WAAW;IACX,UAAU;IACV,cAAc;IACd,uBAAuB;IAEvB,uBAAuB;IACvB,uBAAuB;IACvB,mBAAmB;IACnB,mBAAmB;CACpB,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,aAAuB;IAC5D,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,kDAAkD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YACtE,uFAAuF,CAC1F,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAClC,WAAmB,EACnB,aAAuB;IAEvB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAE1C,oBAAoB;IACpB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,6DAA6D,OAAO,IAAI;YACtE,iBAAiB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC9C,CAAC;IACJ,CAAC;IAED,kBAAkB;IAClB,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;IAEjC,iCAAiC;IACjC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC;IAC5D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,8CAA8C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YAClE,wBAAwB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACrD,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,iEAAiE;IACjE,MAAM,MAAM,GAA8B,EAAE,CAAC;IAC7C,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"env-vars.js","sourceRoot":"","sources":["../../src/utils/env-vars.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAS;IAC/C,2BAA2B;IAC3B,MAAM;IACN,iBAAiB;IACjB,YAAY;IACZ,mBAAmB;IACnB,KAAK;IACL,QAAQ;IACR,QAAQ;IAER,aAAa;IACb,MAAM;IACN,MAAM;IACN,SAAS;IACT,OAAO;IACP,MAAM;IACN,MAAM;IACN,QAAQ;IACR,UAAU;IAEV,UAAU;IACV,eAAe;IACf,eAAe;IACf,gBAAgB;IAEhB,cAAc;IACd,SAAS;IACT,YAAY;IAEZ,wCAAwC;IACxC,iBAAiB;IACjB,wBAAwB;IACxB,sBAAsB;IACtB,yBAAyB;IACzB,mBAAmB;IACnB,gBAAgB;IAChB,oBAAoB;IACpB,eAAe;IACf,qBAAqB;IACrB,kBAAkB;IAClB,cAAc;IAEd,WAAW;IACX,UAAU;IACV,cAAc;IACd,uBAAuB;IAEvB,uBAAuB;IACvB,uBAAuB;IACvB,mBAAmB;IACnB,mBAAmB;CACpB,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,aAAuB;IAC5D,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,kDAAkD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YACtE,uFAAuF,CAC1F,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAClC,WAAmB,EACnB,aAAuB;IAEvB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAE1C,oBAAoB;IACpB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,6DAA6D,OAAO,IAAI;YACtE,iBAAiB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC9C,CAAC;IACJ,CAAC;IAED,kBAAkB;IAClB,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;IAEjC,iCAAiC;IACjC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC;IAC5D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,8CAA8C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YAClE,wBAAwB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACrD,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,iEAAiE;IACjE,MAAM,MAAM,GAA8B,EAAE,CAAC;IAC7C,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,54 @@
1
+ import type { Config } from '../types/index.js';
2
+ import type { LlmProviderType } from '../types/config.schema.js';
3
+ export interface ProviderCredentialOptions {
4
+ /** --provider-key: the credential (ephemeral). */
5
+ providerKey?: string;
6
+ /** --provider: the provider type (claude | openai | openrouter). */
7
+ provider?: string;
8
+ }
9
+ export interface ResolvedProviderCredentials {
10
+ /** The resolved provider type (defaults to 'claude'). */
11
+ providerType: LlmProviderType;
12
+ /** The resolved credential. Empty string when none was supplied. */
13
+ authToken: string;
14
+ /** Human-readable error strings. Empty when the credential is valid. */
15
+ errors: string[];
16
+ /**
17
+ * True only when no token was supplied at all (via flag, config, or env) —
18
+ * NOT for the wrong-format case. Lets interactive callers (e.g. `hula launch`)
19
+ * distinguish "prompt the user for a key" from other errors. Purely additive:
20
+ * `errors` behavior is unchanged, so non-interactive callers such as `hula
21
+ * schedule` are unaffected.
22
+ */
23
+ missingToken: boolean;
24
+ }
25
+ /**
26
+ * Per-provider token format validation. Returns an error string when the token
27
+ * does not match the provider's expected format, or `null` when it is
28
+ * acceptable. `claude` and `openrouter` enforce a prefix (which catches
29
+ * cross-provider paste mistakes before any network call); `openai` only
30
+ * requires a non-empty string (formats vary — live validation catches bad keys).
31
+ */
32
+ export declare function validateTokenFormat(providerType: LlmProviderType, authToken: string): string | null;
33
+ /**
34
+ * Resolve the ephemeral LLM provider credential required to launch a hula-server
35
+ * sandbox, via a single precedence chain shared by every command that POSTs to
36
+ * the sandbox APIs.
37
+ *
38
+ * Provider type (highest precedence first):
39
+ * 1. explicit CLI flag (--provider)
40
+ * 2. .hublaunch/hublaunch.config.js (config.provider.type)
41
+ * 3. default 'claude'
42
+ *
43
+ * Credential (highest precedence first):
44
+ * 1. explicit CLI flag (--provider-key)
45
+ * 2. .hublaunch/hublaunch.config.js (config.provider.apiKey)
46
+ * 3. environment variable (PROVIDER_AUTH_TOKEN)
47
+ *
48
+ * Pure and side-effect free: returns the resolved values plus a list of
49
+ * human-readable error strings. Callers choose how to present errors (logger,
50
+ * chalk) and whether to exit. This keeps resolution + validation in ONE place
51
+ * (DRY) while leaving presentation to each command. Never echoes secret values.
52
+ */
53
+ export declare function resolveProviderCredentials(options: ProviderCredentialOptions, config: Config): ResolvedProviderCredentials;
54
+ //# sourceMappingURL=provider-credentials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-credentials.d.ts","sourceRoot":"","sources":["../../src/utils/provider-credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAGjE,MAAM,WAAW,yBAAyB;IACxC,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,2BAA2B;IAC1C,yDAAyD;IACzD,YAAY,EAAE,eAAe,CAAC;IAC9B,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;;;;;OAMG;IACH,YAAY,EAAE,OAAO,CAAC;CACvB;AAKD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,eAAe,EAC7B,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CAkBf;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,yBAAyB,EAClC,MAAM,EAAE,MAAM,GACb,2BAA2B,CAwC7B"}
@@ -0,0 +1,83 @@
1
+ import { LlmProviderTypeSchema } from '../types/config.schema.js';
2
+ /** The three valid provider types, for error messages. */
3
+ const VALID_PROVIDER_TYPES = LlmProviderTypeSchema.options;
4
+ /**
5
+ * Per-provider token format validation. Returns an error string when the token
6
+ * does not match the provider's expected format, or `null` when it is
7
+ * acceptable. `claude` and `openrouter` enforce a prefix (which catches
8
+ * cross-provider paste mistakes before any network call); `openai` only
9
+ * requires a non-empty string (formats vary — live validation catches bad keys).
10
+ */
11
+ export function validateTokenFormat(providerType, authToken) {
12
+ switch (providerType) {
13
+ case 'claude':
14
+ if (!authToken.startsWith('sk-ant-')) {
15
+ return 'Claude credential must be a subscription OAuth token (sk-ant-oat01-…, from https://claude.ai/settings) or an Anthropic API key (sk-ant-api03-…, from https://platform.claude.com).';
16
+ }
17
+ return null;
18
+ case 'openrouter':
19
+ if (!authToken.startsWith('sk-or-')) {
20
+ return 'OpenRouter key must start with sk-or- (create one at https://openrouter.ai/settings/keys).';
21
+ }
22
+ return null;
23
+ case 'openai':
24
+ if (authToken.length === 0) {
25
+ return 'OpenAI API key required (create one at https://platform.openai.com/api-keys).';
26
+ }
27
+ return null;
28
+ }
29
+ }
30
+ /**
31
+ * Resolve the ephemeral LLM provider credential required to launch a hula-server
32
+ * sandbox, via a single precedence chain shared by every command that POSTs to
33
+ * the sandbox APIs.
34
+ *
35
+ * Provider type (highest precedence first):
36
+ * 1. explicit CLI flag (--provider)
37
+ * 2. .hublaunch/hublaunch.config.js (config.provider.type)
38
+ * 3. default 'claude'
39
+ *
40
+ * Credential (highest precedence first):
41
+ * 1. explicit CLI flag (--provider-key)
42
+ * 2. .hublaunch/hublaunch.config.js (config.provider.apiKey)
43
+ * 3. environment variable (PROVIDER_AUTH_TOKEN)
44
+ *
45
+ * Pure and side-effect free: returns the resolved values plus a list of
46
+ * human-readable error strings. Callers choose how to present errors (logger,
47
+ * chalk) and whether to exit. This keeps resolution + validation in ONE place
48
+ * (DRY) while leaving presentation to each command. Never echoes secret values.
49
+ */
50
+ export function resolveProviderCredentials(options, config) {
51
+ const errors = [];
52
+ // --- Provider type resolution ---
53
+ const rawProvider = options.provider ?? config.provider?.type ?? 'claude';
54
+ const parsedType = LlmProviderTypeSchema.safeParse(rawProvider);
55
+ if (!parsedType.success) {
56
+ errors.push(`Unknown provider '${rawProvider}'. Valid providers are: ${VALID_PROVIDER_TYPES.join(', ')}.`);
57
+ // Return early with a safe default type; the token is not meaningful yet.
58
+ return {
59
+ providerType: 'claude',
60
+ authToken: '',
61
+ errors,
62
+ missingToken: false,
63
+ };
64
+ }
65
+ const providerType = parsedType.data;
66
+ // --- Credential resolution ---
67
+ const authToken = options.providerKey ||
68
+ config.provider?.apiKey ||
69
+ process.env.PROVIDER_AUTH_TOKEN ||
70
+ '';
71
+ const missingToken = !authToken;
72
+ if (!authToken) {
73
+ errors.push(`No credential found for provider '${providerType}'. Pass --provider-key, set provider.apiKey in .hublaunch/hublaunch.config.js, or export PROVIDER_AUTH_TOKEN.`);
74
+ }
75
+ else {
76
+ const formatError = validateTokenFormat(providerType, authToken);
77
+ if (formatError) {
78
+ errors.push(formatError);
79
+ }
80
+ }
81
+ return { providerType, authToken, errors, missingToken };
82
+ }
83
+ //# sourceMappingURL=provider-credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-credentials.js","sourceRoot":"","sources":["../../src/utils/provider-credentials.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AA0BlE,0DAA0D;AAC1D,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,OAAO,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CACjC,YAA6B,EAC7B,SAAiB;IAEjB,QAAQ,YAAY,EAAE,CAAC;QACrB,KAAK,QAAQ;YACX,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBACrC,OAAO,oLAAoL,CAAC;YAC9L,CAAC;YACD,OAAO,IAAI,CAAC;QACd,KAAK,YAAY;YACf,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACpC,OAAO,4FAA4F,CAAC;YACtG,CAAC;YACD,OAAO,IAAI,CAAC;QACd,KAAK,QAAQ;YACX,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO,+EAA+E,CAAC;YACzF,CAAC;YACD,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,0BAA0B,CACxC,OAAkC,EAClC,MAAc;IAEd,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,mCAAmC;IACnC,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,IAAI,IAAI,QAAQ,CAAC;IAC1E,MAAM,UAAU,GAAG,qBAAqB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAChE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CACT,qBAAqB,WAAW,2BAA2B,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC9F,CAAC;QACF,0EAA0E;QAC1E,OAAO;YACL,YAAY,EAAE,QAAQ;YACtB,SAAS,EAAE,EAAE;YACb,MAAM;YACN,YAAY,EAAE,KAAK;SACpB,CAAC;IACJ,CAAC;IACD,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC;IAErC,gCAAgC;IAChC,MAAM,SAAS,GACb,OAAO,CAAC,WAAW;QACnB,MAAM,CAAC,QAAQ,EAAE,MAAM;QACvB,OAAO,CAAC,GAAG,CAAC,mBAAmB;QAC/B,EAAE,CAAC;IACL,MAAM,YAAY,GAAG,CAAC,SAAS,CAAC;IAEhC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CACT,qCAAqC,YAAY,+GAA+G,CACjK,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,WAAW,GAAG,mBAAmB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QACjE,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;AAC3D,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hub-launch",
3
- "version": "1.22.0",
3
+ "version": "1.24.0",
4
4
  "description": "GitHub Issue and PR automation CLI tool with plugin/hook system for project-specific customizations",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -18,7 +18,7 @@
18
18
  "url": "https://github.com/NoStackApp/hub-launch/issues"
19
19
  },
20
20
  "scripts": {
21
- "build": "tsc && shx chmod +x dist/index.js && npm run copy-templates",
21
+ "build": "tsc && shx chmod +x dist/index.js && npm run copy-templates && shx echo Build complete",
22
22
  "postbuild": "node scripts/postinstall.mjs",
23
23
  "postinstall": "node scripts/postinstall.mjs",
24
24
  "copy-templates": "shx mkdir -p dist/templates && shx cp src/templates/*.md dist/templates/ && shx mkdir -p dist/templates/skills && shx cp -r src/templates/skills/* dist/templates/skills/",
@@ -1,32 +0,0 @@
1
- import type { Config } from '../types/index.js';
2
- export interface EphemeralCredentialOptions {
3
- anthropicKey?: string;
4
- }
5
- export interface ResolvedEphemeralCredentials {
6
- anthropicApiKey?: string;
7
- /** Human-readable error strings. Empty when the credential is valid. */
8
- errors: string[];
9
- /**
10
- * True only when no token was supplied at all (via flag, config, or env) —
11
- * NOT for the wrong-prefix case. Lets interactive callers (e.g. `hula
12
- * launch`) distinguish "prompt the user for a key" from other errors. Purely
13
- * additive: `errors` behavior is unchanged, so non-interactive callers such
14
- * as `hula schedule` are unaffected.
15
- */
16
- missingAnthropicKey: boolean;
17
- }
18
- /**
19
- * Resolve the ephemeral Anthropic OAuth token required to launch a hula-server
20
- * sandbox via a single precedence chain shared by every command that POSTs to
21
- * the sandbox APIs:
22
- * 1. explicit CLI flag (--anthropic-key)
23
- * 2. .hublaunch/hublaunch.config.js (config.anthropicApiKey)
24
- * 3. environment variable (ANTHROPIC_API_KEY)
25
- *
26
- * Pure and side-effect free: returns the resolved value plus a list of
27
- * human-readable error strings. Callers choose how to present errors (logger,
28
- * chalk) and whether to exit. This keeps resolution + validation in ONE place
29
- * (DRY) while leaving presentation to each command. Never echoes secret values.
30
- */
31
- export declare function resolveEphemeralCredentials(options: EphemeralCredentialOptions, config: Config): ResolvedEphemeralCredentials;
32
- //# sourceMappingURL=ephemeral-credentials.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ephemeral-credentials.d.ts","sourceRoot":"","sources":["../../src/utils/ephemeral-credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,WAAW,0BAA0B;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,4BAA4B;IAC3C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wEAAwE;IACxE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;;;;;OAMG;IACH,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,0BAA0B,EACnC,MAAM,EAAE,MAAM,GACb,4BAA4B,CAiB9B"}
@@ -1,26 +0,0 @@
1
- /**
2
- * Resolve the ephemeral Anthropic OAuth token required to launch a hula-server
3
- * sandbox via a single precedence chain shared by every command that POSTs to
4
- * the sandbox APIs:
5
- * 1. explicit CLI flag (--anthropic-key)
6
- * 2. .hublaunch/hublaunch.config.js (config.anthropicApiKey)
7
- * 3. environment variable (ANTHROPIC_API_KEY)
8
- *
9
- * Pure and side-effect free: returns the resolved value plus a list of
10
- * human-readable error strings. Callers choose how to present errors (logger,
11
- * chalk) and whether to exit. This keeps resolution + validation in ONE place
12
- * (DRY) while leaving presentation to each command. Never echoes secret values.
13
- */
14
- export function resolveEphemeralCredentials(options, config) {
15
- const errors = [];
16
- const anthropicApiKey = options.anthropicKey || config.anthropicApiKey || process.env.ANTHROPIC_API_KEY;
17
- const missingAnthropicKey = !anthropicApiKey;
18
- if (!anthropicApiKey) {
19
- errors.push('No Anthropic OAuth token configured. Set anthropicApiKey in .hublaunch/hublaunch.config.js, use --anthropic-key, or set ANTHROPIC_API_KEY. Get a token at https://claude.ai/settings (requires a paid Claude.ai plan — Pro or Max).');
20
- }
21
- else if (!anthropicApiKey.startsWith('sk-ant-oat')) {
22
- errors.push('Anthropic credential must be an OAuth token (starts with sk-ant-oat01-…). Standard API keys (sk-ant-api03-…) are not supported — the container requires CLAUDE_CODE_OAUTH_TOKEN.');
23
- }
24
- return { anthropicApiKey, errors, missingAnthropicKey };
25
- }
26
- //# sourceMappingURL=ephemeral-credentials.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ephemeral-credentials.js","sourceRoot":"","sources":["../../src/utils/ephemeral-credentials.ts"],"names":[],"mappings":"AAoBA;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,2BAA2B,CACzC,OAAmC,EACnC,MAAc;IAEd,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,MAAM,eAAe,GACnB,OAAO,CAAC,YAAY,IAAI,MAAM,CAAC,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAClF,MAAM,mBAAmB,GAAG,CAAC,eAAe,CAAC;IAC7C,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CACT,qOAAqO,CACtO,CAAC;IACJ,CAAC;SAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACrD,MAAM,CAAC,IAAI,CACT,kLAAkL,CACnL,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;AAC1D,CAAC"}