hub-launch 1.29.0 → 1.31.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 (97) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +53 -1
  3. package/dist/commands/errorWatcher.d.ts +2 -0
  4. package/dist/commands/errorWatcher.d.ts.map +1 -1
  5. package/dist/commands/errorWatcher.js +13 -0
  6. package/dist/commands/errorWatcher.js.map +1 -1
  7. package/dist/commands/init.d.ts +12 -0
  8. package/dist/commands/init.d.ts.map +1 -1
  9. package/dist/commands/init.js +55 -4
  10. package/dist/commands/init.js.map +1 -1
  11. package/dist/commands/launch.d.ts +36 -0
  12. package/dist/commands/launch.d.ts.map +1 -1
  13. package/dist/commands/launch.js +267 -6
  14. package/dist/commands/launch.js.map +1 -1
  15. package/dist/commands/login.d.ts +14 -1
  16. package/dist/commands/login.d.ts.map +1 -1
  17. package/dist/commands/login.js +26 -4
  18. package/dist/commands/login.js.map +1 -1
  19. package/dist/commands/schedule.d.ts +15 -0
  20. package/dist/commands/schedule.d.ts.map +1 -1
  21. package/dist/commands/schedule.js +81 -2
  22. package/dist/commands/schedule.js.map +1 -1
  23. package/dist/commands/script.d.ts +1 -1
  24. package/dist/commands/script.d.ts.map +1 -1
  25. package/dist/commands/script.js +3 -0
  26. package/dist/commands/script.js.map +1 -1
  27. package/dist/commands/session-hook.d.ts +9 -0
  28. package/dist/commands/session-hook.d.ts.map +1 -1
  29. package/dist/commands/session-hook.js +60 -15
  30. package/dist/commands/session-hook.js.map +1 -1
  31. package/dist/index.js +2 -1
  32. package/dist/index.js.map +1 -1
  33. package/dist/scripts/backlog-add.d.ts +2 -0
  34. package/dist/scripts/backlog-add.d.ts.map +1 -0
  35. package/dist/scripts/backlog-add.js +145 -0
  36. package/dist/scripts/backlog-add.js.map +1 -0
  37. package/dist/scripts/backlog-init.d.ts +2 -0
  38. package/dist/scripts/backlog-init.d.ts.map +1 -0
  39. package/dist/scripts/backlog-init.js +84 -0
  40. package/dist/scripts/backlog-init.js.map +1 -0
  41. package/dist/scripts/backlog-resync.d.ts +2 -0
  42. package/dist/scripts/backlog-resync.d.ts.map +1 -0
  43. package/dist/scripts/backlog-resync.js +156 -0
  44. package/dist/scripts/backlog-resync.js.map +1 -0
  45. package/dist/scripts/launch-run.d.ts +1 -0
  46. package/dist/scripts/launch-run.d.ts.map +1 -1
  47. package/dist/scripts/launch-run.js +47 -3
  48. package/dist/scripts/launch-run.js.map +1 -1
  49. package/dist/scripts/lib/backlog-sync.d.ts +27 -0
  50. package/dist/scripts/lib/backlog-sync.d.ts.map +1 -0
  51. package/dist/scripts/lib/backlog-sync.js +48 -0
  52. package/dist/scripts/lib/backlog-sync.js.map +1 -0
  53. package/dist/scripts/lib/read-config.d.ts +16 -0
  54. package/dist/scripts/lib/read-config.d.ts.map +1 -1
  55. package/dist/scripts/lib/read-config.js +34 -0
  56. package/dist/scripts/lib/read-config.js.map +1 -1
  57. package/dist/services/api/HulaApiClient.d.ts +39 -0
  58. package/dist/services/api/HulaApiClient.d.ts.map +1 -1
  59. package/dist/services/api/HulaApiClient.js +15 -0
  60. package/dist/services/api/HulaApiClient.js.map +1 -1
  61. package/dist/services/github/IssueService.d.ts.map +1 -1
  62. package/dist/services/github/IssueService.js +3 -0
  63. package/dist/services/github/IssueService.js.map +1 -1
  64. package/dist/services/plan/GitHubSourcePlanService.d.ts +67 -0
  65. package/dist/services/plan/GitHubSourcePlanService.d.ts.map +1 -0
  66. package/dist/services/plan/GitHubSourcePlanService.js +148 -0
  67. package/dist/services/plan/GitHubSourcePlanService.js.map +1 -0
  68. package/dist/services/plan/PlanBranchService.d.ts +5 -1
  69. package/dist/services/plan/PlanBranchService.d.ts.map +1 -1
  70. package/dist/services/plan/PlanBranchService.js +21 -3
  71. package/dist/services/plan/PlanBranchService.js.map +1 -1
  72. package/dist/templates/proceed-instructions.md +2 -1
  73. package/dist/templates/skills/hula-approve/SKILL.md +31 -0
  74. package/dist/templates/skills/hula-fix/SKILL.md +10 -0
  75. package/dist/templates/skills/hula-launch/SKILL.md +40 -1
  76. package/dist/templates/skills/hula-plan/SKILL.md +39 -4
  77. package/dist/types/config.schema.d.ts +24 -0
  78. package/dist/types/config.schema.d.ts.map +1 -1
  79. package/dist/types/config.schema.js +11 -0
  80. package/dist/types/config.schema.js.map +1 -1
  81. package/dist/types/issue.schema.d.ts +6 -0
  82. package/dist/types/issue.schema.d.ts.map +1 -1
  83. package/dist/types/issue.schema.js +8 -0
  84. package/dist/types/issue.schema.js.map +1 -1
  85. package/dist/types/pr.schema.d.ts +38 -0
  86. package/dist/types/pr.schema.d.ts.map +1 -1
  87. package/dist/types/pr.schema.js +7 -0
  88. package/dist/types/pr.schema.js.map +1 -1
  89. package/dist/utils/client-session.d.ts +16 -0
  90. package/dist/utils/client-session.d.ts.map +1 -1
  91. package/dist/utils/client-session.js +29 -0
  92. package/dist/utils/client-session.js.map +1 -1
  93. package/dist/utils/sandbox-profile.d.ts +44 -0
  94. package/dist/utils/sandbox-profile.d.ts.map +1 -0
  95. package/dist/utils/sandbox-profile.js +78 -0
  96. package/dist/utils/sandbox-profile.js.map +1 -0
  97. package/package.json +1 -1
@@ -2,7 +2,7 @@
2
2
  name: hula-plan
3
3
  description: "Plan (step 1 of 2): describe what you want built — drafts an implementation plan, validates it until it stands on its own, then offers to launch. Use when the user asks to plan, build, or implement something."
4
4
  disable-model-invocation: true
5
- argument-hint: <what you want built> [--folder <subfolder>] [--autoLaunch [--test] [--handoff <username>]]
5
+ argument-hint: <what you want built> [--issue <n> | --pr <n>] [--folder <subfolder>] [--autoLaunch [--test] [--handoff <username>]]
6
6
  allowed-tools: Bash Read
7
7
  ---
8
8
 
@@ -31,8 +31,24 @@ The user will describe a feature or issue. Your job is to:
31
31
 
32
32
  Issue description: $ARGUMENTS
33
33
  Folder (optional): Parsed from $ARGUMENTS if --folder flag is provided
34
+ Source (optional): Parsed from $ARGUMENTS if `--issue <ref>` or `--pr <ref>` is provided — see "Starting From an Existing Issue or PR" below. The rest of $ARGUMENTS is then the user's extra instructions on top of that issue or PR.
34
35
  Auto-launch (optional): Parsed from $ARGUMENTS if --autoLaunch flag is provided (optionally combined with --test and/or --handoff <username>, both otherwise unused until the Launch Offer)
35
36
 
37
+ ## Starting From an Existing Issue or PR
38
+
39
+ `--issue <ref>` plans work on an issue already on the repo; `--pr <ref>` plans more changes to an open pull request. `<ref>` is a number, `#number`, or a GitHub URL for **this** repository. Without either flag, skip this section.
40
+
41
+ 1. **Exactly one source.** If both `--issue` and `--pr` are present, stop with:
42
+ ```
43
+ ❌ Pass --issue or --pr to /hula-plan, not both. To work an issue on an existing PR without a plan, run: hula launch --issue <n> --pr <m>
44
+ ```
45
+ 2. **Read the source** (read-only — never comment on, edit, or assign it):
46
+ - `--issue`: `gh issue view <ref> --json number,title,body,state,url,comments`. If `state` is not `OPEN`, stop with `❌ Issue #<n> is closed.` If `gh` reports it is a pull request, stop with `❌ #<n> is a pull request — use --pr <n>.`
47
+ - `--pr`: `gh pr view <ref> --json number,title,body,state,url,headRefName,baseRefName,isCrossRepository,files` and `gh pr diff <ref>`. If `state` is not `OPEN`, stop with `❌ PR #<n> is not open.` If `isCrossRepository` is `true`, stop with `❌ PR #<n> comes from a fork; HubLaunch can only continue same-repo PRs.`
48
+ 3. **Treat it as the feature description.** The issue/PR title, body, and comments (plus the PR's current diff) are what the user wants built; the rest of `$ARGUMENTS` is extra instructions that take precedence where they conflict. Run the Deep Analysis and clarifying questions below as usual.
49
+ 4. **Say where the plan came from.** Add a `## Source` section directly under the Plan Summary: `Issue #<n> — <url>` or `Pull request #<n> — <url> (branch <headRefName> → <baseRefName>)`. For a PR, the plan must describe only the **new** work: its existing commits stay as they are and new commits go on top.
50
+ 5. **Default name.** Unless the user names it, the tracking/branch name is `issue-<n>` or `pr-<n>` (the same default `hula launch --issue/--pr` uses).
51
+
36
52
  ## Additional Context
37
53
 
38
54
  Use the `#codebase` tool to search for relevant existing code:
@@ -122,11 +138,27 @@ The plan should be immediately actionable by a developer familiar with the codeb
122
138
 
123
139
  **⚠️ NEVER create plan files in the project root directory.** The plan file MUST always be inside the `.hublaunch/plans/` directory (or a subfolder of it). If you cannot read the config file, use the default path `.hublaunch/plans/`.
124
140
 
141
+ ### Step 1.5: Create the Chat Backlog (if not already created)
142
+
143
+ Every `/hula-plan` chat gets one backlog: a running list of things that come up during the conversation that should NOT be folded into the plan being drafted right now.
144
+
145
+ 1. **Check if this chat already has one.** Scan this conversation's own history for a prior `<!-- hula-backlog: <key> -->` HTML comment (emitted by an earlier `/hula-plan`, `/hula-fix`, or `/hula-approve` in the same chat). If found, reuse that `<key>` — do not create a second backlog.
146
+ 2. **If none found, create one:**
147
+ - Generate `<key>` as `bl-` followed by 8 lowercase base-36 characters (e.g. `bl-m3x9k2p1`).
148
+ - Run: `hula script backlog-init -- <key>`
149
+ - Parse the JSON output: `{"status":"success","key":"<key>","path":"<path>","created":true|false}`. If `status` is `"error"`, log a one-line warning and continue — a backlog failure must never block planning.
150
+ 3. **Emit the tracking comment** in this response's output, alongside the existing `<!-- hula-plan -->` / `<!-- hula-branch -->` comments: `<!-- hula-backlog: <key> -->`
151
+ 4. **During the rest of this planning conversation**, whenever something surfaces that should be tracked but is not part of the plan being drafted right now (a follow-up idea, a deferred concern, something the user mentions in passing that isn't this plan's scope), run `hula script backlog-add -- <key> "<one-line item text>" --project <owner>/<repo> --tracking-name <issueName>` and continue silently — do not interrupt the flow to announce this each time. It surfaces later in the `/hula-approve` summary.
152
+ - `<issueName>` is the branch/tracking name resolved in Step 2 (or, if Step 2 hasn't run yet, the same name you'll resolve there). `<owner>/<repo>` comes from `gh repo view --json nameWithOwner -q .nameWithOwner`.
153
+ - The `--project`/`--tracking-name` args let the item sync to the `hula-project` dashboard when the repo is configured for remote (`hulaApiKey` + `hulaProjectUrl`). They're optional: if you can't resolve either value, omit them and just run `hula script backlog-add -- <key> "<one-line item text>"` — the local backlog still works, and any unsynced item is retried automatically at `/hula-approve` time.
154
+
125
155
  ### Step 2: Create the Plan Branch
126
156
 
127
157
  Right after saving the plan file, create the feature branch on origin with the plan committed to it. This is the **plan-branch flow**: the git branch exists from plan time onward, so branch-scoped infrastructure (Vercel Preview env vars, per-branch databases, beforeLaunch hooks) can rely on it well before the launch.
128
158
 
129
- 1. **Resolve `<issueName>`** using the same rules as the Launch Offer's "Resolve the issue name" step in `hula instructions proceed`: a name the user specified anywhere in this conversation wins (most recent first); otherwise derive the default from the plan file's basename (strip the `YYYY-MM-DD-HH:MM-` prefix and `.md`, shorten a >3-word slug to its 2–3 most distinctive words, always kebab-case).
159
+ **With `--pr`, skip this step.** The work branch is the PR's own head branch, which already exists; `hula launch --pr` commits the plan to it at launch time. Do not run `hula upload`, and print `🌿 Branch: PR head `<headRefName>` (plan committed at launch)` in place of the 🌿 line in Step 3, omitting the `hula-branch` comment.
160
+
161
+ 1. **Resolve `<issueName>`** using the same rules as the Launch Offer's "Resolve the issue name" step in `hula instructions proceed`: a name the user specified anywhere in this conversation wins (most recent first); otherwise, with `--issue`, use `issue-<n>`; otherwise derive the default from the plan file's basename (strip the `YYYY-MM-DD-HH:MM-` prefix and `.md`, shorten a >3-word slug to its 2–3 most distinctive words, always kebab-case).
130
162
  2. **Create the branch** by running:
131
163
 
132
164
  `hula upload <planPath> --branch <issueName>`
@@ -143,11 +175,13 @@ Right after saving the plan file, create the feature branch on origin with the p
143
175
  🌿 Branch created: `feature-name` (plan pushed to origin)
144
176
  <!-- hula-plan: .hublaunch/plans/2025-12-29-14:30-feature-name.md -->
145
177
  <!-- hula-branch: feature-name -->
178
+ <!-- hula-backlog: bl-m3x9k2p1 -->
179
+ <!-- hula-source: --issue 42 -->
146
180
 
147
181
  📋 **Proceeding to validation now…**
148
182
  ```
149
183
 
150
- (Substitute the actual resolved `<issueName>` in the branch line and the `hula-branch` comment. If branch creation failed in Step 2, replace the 🌿 line with `⚠️ Branch creation deferred to launch time` and omit the `hula-branch` comment.)
184
+ (Substitute the actual resolved `<issueName>` in the branch line and the `hula-branch` comment, and the actual `<key>` from Step 1.5 in the `hula-backlog` comment. Emit the `hula-source` comment only when `--issue` or `--pr` was given, as `<!-- hula-source: --issue <n> -->` or `<!-- hula-source: --pr <n> -->` with the resolved number — `/hula-launch` reads it to launch against that issue or PR. If branch creation failed in Step 2, replace the 🌿 line with `⚠️ Branch creation deferred to launch time` and omit the `hula-branch` comment. If Step 1.5 reused an existing backlog key or its `backlog-init` failed, still emit the `hula-backlog` comment with the resolved/reused `<key>`.)
151
185
 
152
186
  Now proceed directly to plan validation **without waiting for the user**. The plan file was just created in this session — the path is already known.
153
187
 
@@ -167,9 +201,10 @@ Read `hula instructions proceed` and execute the full validation workflow agains
167
201
  - **`--autoLaunch` skips the Launch Offer's confirmation sub-step only.** If `--autoLaunch` was present in `$ARGUMENTS`:
168
202
  1. Still perform the Launch Offer's "1. Resolve the issue name" step exactly as documented there (conversation-mention wins, else the plan-filename-slug default) — resolution itself is unchanged.
169
203
  2. Skip "2. Ask the launch question" and "3. Interpret the reply" entirely — do not ask, do not wait.
170
- 3. Print exactly (substituting the resolved name): `🚀 --autoLaunch set — launching as \`<issueName>\`…`
204
+ 3. Print exactly (substituting the resolved name): `🚀 --autoLaunch set — launching as `<issueName>`…`
171
205
  4. Immediately perform the Launch Offer's "4. Execute the launch" step: read `.agents/skills/hula-launch/SKILL.md` and execute its workflow with `<issueName> <planPath>`.
172
206
  5. If `--test` and/or `--handoff <username>` were also present in `$ARGUMENTS`, pass them through to the launch — same as the Launch Offer's reply table does for a manual reply containing those flags.
207
+ 6. If `--issue` or `--pr` was given, pass `--issue <n>` / `--pr <n>` through to the launch as well.
173
208
  - **Without `--autoLaunch`**, behavior is completely unchanged: ask and wait as today.
174
209
 
175
210
  **Note:** The plan is saved locally AND pushed to its feature branch on origin (Step 2). When you run `/hula-launch`, the plan branch is re-synced automatically (covering validation edits and renames) before the GitHub issue is created and the implementation begins — no separate upload step needed. Because validation ends with the Launch Offer, an affirmative reply runs the `/hula-launch` workflow for the user automatically; they can also decline and run `/hula-launch` themselves later. `/hula-confirm` remains available as a standalone command for re-validation at any time. If `--autoLaunch` was passed to `/hula-plan`, the launch runs automatically once validation completes — no reply needed.
@@ -181,6 +181,22 @@ export declare const ConfigSchema: z.ZodObject<{
181
181
  memory?: number | undefined;
182
182
  disk?: number | undefined;
183
183
  }>>;
184
+ sandboxProfile: z.ZodOptional<z.ZodEffects<z.ZodObject<{
185
+ type: z.ZodEnum<["base", "android"]>;
186
+ jdk: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<17>, z.ZodLiteral<21>]>>;
187
+ }, "strip", z.ZodTypeAny, {
188
+ type: "base" | "android";
189
+ jdk?: 17 | 21 | undefined;
190
+ }, {
191
+ type: "base" | "android";
192
+ jdk?: 17 | 21 | undefined;
193
+ }>, {
194
+ type: "base" | "android";
195
+ jdk?: 17 | 21 | undefined;
196
+ }, {
197
+ type: "base" | "android";
198
+ jdk?: 17 | 21 | undefined;
199
+ }>>;
184
200
  updateNotificationUrl: z.ZodOptional<z.ZodString>;
185
201
  updateNotificationNameTag: z.ZodOptional<z.ZodString>;
186
202
  commandAliases: z.ZodOptional<z.ZodObject<{
@@ -515,6 +531,10 @@ export declare const ConfigSchema: z.ZodObject<{
515
531
  memory?: number | undefined;
516
532
  disk?: number | undefined;
517
533
  } | undefined;
534
+ sandboxProfile?: {
535
+ type: "base" | "android";
536
+ jdk?: 17 | 21 | undefined;
537
+ } | undefined;
518
538
  updateNotificationUrl?: string | undefined;
519
539
  updateNotificationNameTag?: string | undefined;
520
540
  commandAliases?: {
@@ -627,6 +647,10 @@ export declare const ConfigSchema: z.ZodObject<{
627
647
  memory?: number | undefined;
628
648
  disk?: number | undefined;
629
649
  } | undefined;
650
+ sandboxProfile?: {
651
+ type: "base" | "android";
652
+ jdk?: 17 | 21 | undefined;
653
+ } | undefined;
630
654
  updateNotificationUrl?: string | undefined;
631
655
  updateNotificationNameTag?: string | undefined;
632
656
  commandAliases?: {
@@ -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;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkLvB,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6LvB,CAAC;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAGlD,eAAO,MAAM,cAAc,EAAE,MAc5B,CAAC"}
@@ -113,6 +113,17 @@ export const ConfigSchema = z.object({
113
113
  disk: z.number().int().min(5).max(200).optional(),
114
114
  })
115
115
  .optional(),
116
+ // Which prebuilt sandbox image this repo's tasks launch in (see
117
+ // utils/sandbox-profile.ts). Asked once by `hula init`; absent means base.
118
+ sandboxProfile: z
119
+ .object({
120
+ type: z.enum(['base', 'android']),
121
+ jdk: z.union([z.literal(17), z.literal(21)]).optional(),
122
+ })
123
+ .refine((p) => p.jdk === undefined || p.type === 'android', {
124
+ message: 'sandboxProfile.jdk requires sandboxProfile.type "android"',
125
+ })
126
+ .optional(),
116
127
  updateNotificationUrl: z.string().optional(),
117
128
  updateNotificationNameTag: z.string().optional(),
118
129
  // Command aliases
@@ -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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"}
@@ -27,6 +27,7 @@ export declare const GitHubIssueSchema: z.ZodObject<{
27
27
  name: string;
28
28
  color: string;
29
29
  }>, "many">;
30
+ pull_request: z.ZodOptional<z.ZodUnknown>;
30
31
  }, "strip", z.ZodTypeAny, {
31
32
  number: number;
32
33
  title: string;
@@ -43,6 +44,7 @@ export declare const GitHubIssueSchema: z.ZodObject<{
43
44
  name: string;
44
45
  color: string;
45
46
  }[];
47
+ pull_request?: unknown;
46
48
  }, {
47
49
  number: number;
48
50
  title: string;
@@ -59,6 +61,7 @@ export declare const GitHubIssueSchema: z.ZodObject<{
59
61
  name: string;
60
62
  color: string;
61
63
  }[];
64
+ pull_request?: unknown;
62
65
  }>;
63
66
  export type GitHubIssue = z.infer<typeof GitHubIssueSchema>;
64
67
  export declare const IssueSchema: z.ZodObject<{
@@ -72,6 +75,7 @@ export declare const IssueSchema: z.ZodObject<{
72
75
  assignees: z.ZodArray<z.ZodString, "many">;
73
76
  priority: z.ZodOptional<z.ZodEnum<["Critical", "High", "Medium", "Low", "Minimal"]>>;
74
77
  status: z.ZodOptional<z.ZodEnum<["unassigned", "initialWaiting", "waiting", "ready"]>>;
78
+ isPullRequest: z.ZodOptional<z.ZodBoolean>;
75
79
  }, "strip", z.ZodTypeAny, {
76
80
  number: number;
77
81
  title: string;
@@ -83,6 +87,7 @@ export declare const IssueSchema: z.ZodObject<{
83
87
  status?: "unassigned" | "initialWaiting" | "waiting" | "ready" | undefined;
84
88
  priority?: "Critical" | "High" | "Medium" | "Low" | "Minimal" | undefined;
85
89
  body?: string | undefined;
90
+ isPullRequest?: boolean | undefined;
86
91
  }, {
87
92
  number: number;
88
93
  title: string;
@@ -94,6 +99,7 @@ export declare const IssueSchema: z.ZodObject<{
94
99
  status?: "unassigned" | "initialWaiting" | "waiting" | "ready" | undefined;
95
100
  priority?: "Critical" | "High" | "Medium" | "Low" | "Minimal" | undefined;
96
101
  body?: string | undefined;
102
+ isPullRequest?: boolean | undefined;
97
103
  }>;
98
104
  export type Issue = z.infer<typeof IssueSchema>;
99
105
  export declare const CreateIssueParamsSchema: z.ZodObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"issue.schema.d.ts","sourceRoot":"","sources":["../../src/types/issue.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoB5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAG5D,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWtB,CAAC;AACH,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAGhD,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;EAMlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAGxE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;EAK7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
1
+ {"version":3,"file":"issue.schema.d.ts","sourceRoot":"","sources":["../../src/types/issue.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwB5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAG5D,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAetB,CAAC;AACH,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAGhD,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;EAMlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAGxE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;EAK7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
@@ -17,6 +17,10 @@ export const GitHubIssueSchema = z.object({
17
17
  name: z.string(),
18
18
  color: z.string(),
19
19
  })),
20
+ // Present (an object) only when the "issue" is actually a pull request —
21
+ // the GitHub issues endpoint returns PRs too. Used to reject `--issue <n>`
22
+ // where <n> is a PR. Optional/unknown so normal issues still parse.
23
+ pull_request: z.unknown().optional(),
20
24
  });
21
25
  // Internal Issue representation
22
26
  export const IssueSchema = z.object({
@@ -30,6 +34,10 @@ export const IssueSchema = z.object({
30
34
  assignees: z.array(z.string()),
31
35
  priority: PrioritySchema.optional(),
32
36
  status: IssueStatusSchema.optional(),
37
+ // True when the underlying GitHub "issue" is actually a pull request
38
+ // (the issues endpoint returns both). Set from `pull_request` on the API
39
+ // payload; used to reject `--issue <n>` where <n> is a PR.
40
+ isPullRequest: z.boolean().optional(),
33
41
  });
34
42
  // Create issue params
35
43
  export const CreateIssueParamsSchema = z.object({
@@ -1 +1 @@
1
- {"version":3,"file":"issue.schema.js","sourceRoot":"","sources":["../../src/types/issue.schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"issue.schema.js","sourceRoot":"","sources":["../../src/types/issue.schema.ts"],"names":[],"mappings":"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"}
@@ -9,19 +9,45 @@ export declare const PullRequestSchema: z.ZodObject<{
9
9
  head: z.ZodObject<{
10
10
  ref: z.ZodString;
11
11
  sha: z.ZodString;
12
+ repo: z.ZodOptional<z.ZodNullable<z.ZodObject<{
13
+ full_name: z.ZodString;
14
+ }, "strip", z.ZodTypeAny, {
15
+ full_name: string;
16
+ }, {
17
+ full_name: string;
18
+ }>>>;
12
19
  }, "strip", z.ZodTypeAny, {
13
20
  ref: string;
14
21
  sha: string;
22
+ repo?: {
23
+ full_name: string;
24
+ } | null | undefined;
15
25
  }, {
16
26
  ref: string;
17
27
  sha: string;
28
+ repo?: {
29
+ full_name: string;
30
+ } | null | undefined;
18
31
  }>;
19
32
  base: z.ZodObject<{
20
33
  ref: z.ZodString;
34
+ repo: z.ZodOptional<z.ZodObject<{
35
+ full_name: z.ZodString;
36
+ }, "strip", z.ZodTypeAny, {
37
+ full_name: string;
38
+ }, {
39
+ full_name: string;
40
+ }>>;
21
41
  }, "strip", z.ZodTypeAny, {
22
42
  ref: string;
43
+ repo?: {
44
+ full_name: string;
45
+ } | undefined;
23
46
  }, {
24
47
  ref: string;
48
+ repo?: {
49
+ full_name: string;
50
+ } | undefined;
25
51
  }>;
26
52
  created_at: z.ZodString;
27
53
  updated_at: z.ZodString;
@@ -45,9 +71,15 @@ export declare const PullRequestSchema: z.ZodObject<{
45
71
  head: {
46
72
  ref: string;
47
73
  sha: string;
74
+ repo?: {
75
+ full_name: string;
76
+ } | null | undefined;
48
77
  };
49
78
  base: {
50
79
  ref: string;
80
+ repo?: {
81
+ full_name: string;
82
+ } | undefined;
51
83
  };
52
84
  merged_at: string | null;
53
85
  user: {
@@ -66,9 +98,15 @@ export declare const PullRequestSchema: z.ZodObject<{
66
98
  head: {
67
99
  ref: string;
68
100
  sha: string;
101
+ repo?: {
102
+ full_name: string;
103
+ } | null | undefined;
69
104
  };
70
105
  base: {
71
106
  ref: string;
107
+ repo?: {
108
+ full_name: string;
109
+ } | undefined;
72
110
  };
73
111
  merged_at: string | null;
74
112
  user: {
@@ -1 +1 @@
1
- {"version":3,"file":"pr.schema.d.ts","sourceRoot":"","sources":["../../src/types/pr.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqB5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAG5D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;EAK7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAG9D,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;EAM1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
1
+ {"version":3,"file":"pr.schema.d.ts","sourceRoot":"","sources":["../../src/types/pr.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4B5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAG5D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;EAK7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAG9D,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;EAM1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -10,9 +10,16 @@ export const PullRequestSchema = z.object({
10
10
  head: z.object({
11
11
  ref: z.string(), // branch name
12
12
  sha: z.string(),
13
+ // Repository the head branch lives in. `null` when the source fork was
14
+ // deleted. Optional so existing fixtures (which omit it) still parse. Used
15
+ // to detect fork PRs: head.repo.full_name !== base.repo.full_name.
16
+ repo: z.object({ full_name: z.string() }).nullable().optional(),
13
17
  }),
14
18
  base: z.object({
15
19
  ref: z.string(),
20
+ // Repository the base branch lives in (always this repo for a non-fork
21
+ // PR). Optional so existing fixtures still parse.
22
+ repo: z.object({ full_name: z.string() }).optional(),
16
23
  }),
17
24
  created_at: z.string(),
18
25
  updated_at: z.string(),
@@ -1 +1 @@
1
- {"version":3,"file":"pr.schema.js","sourceRoot":"","sources":["../../src/types/pr.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,sBAAsB;AACtB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC3C,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC7B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC1B,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,cAAc;QAC/B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;KAChB,CAAC;IACF,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;KAChB,CAAC;IACF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC5C,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;KAClB,CAAC;CACH,CAAC,CAAC;AAGH,gBAAgB;AAChB,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACpE,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACvC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC;AAGH,aAAa;AACb,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;IACnD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC7E,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC9C,CAAC,CAAC"}
1
+ {"version":3,"file":"pr.schema.js","sourceRoot":"","sources":["../../src/types/pr.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,sBAAsB;AACtB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC3C,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC7B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC1B,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,cAAc;QAC/B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;QACf,uEAAuE;QACvE,2EAA2E;QAC3E,mEAAmE;QACnE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;KAChE,CAAC;IACF,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;QACf,uEAAuE;QACvE,kDAAkD;QAClD,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE;KACrD,CAAC;IACF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC5C,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;KAClB,CAAC;CACH,CAAC,CAAC;AAGH,gBAAgB;AAChB,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACpE,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACvC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC;AAGH,aAAa;AACb,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;IACnD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC7E,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC9C,CAAC,CAAC"}
@@ -20,4 +20,20 @@
20
20
  * mapping directory by the repo directory's basename)
21
21
  */
22
22
  export declare function readClientSessionId(branchName: string, projectRoot?: string): string | undefined;
23
+ /**
24
+ * Return the Claude Code session id recorded by the hook for a chat-scoped
25
+ * backlog init (`hula script backlog-init -- <key>`), or undefined when none
26
+ * was captured (hook not registered, capture race lost, or malformed file).
27
+ * Never throws — provenance capture is best-effort and must not block.
28
+ *
29
+ * Reads `$HOME/.hublaunch-sessions/<repo-dir-name>/<key>-backlog.json`, the
30
+ * companion file written by the backlog marker family in session-hook.ts.
31
+ * No branch sanitization is needed: `key` is already constrained to
32
+ * `/^bl-[a-z0-9]{6,12}$/` by backlog-init before this is ever called.
33
+ *
34
+ * @param key - the `bl-...` backlog key
35
+ * @param projectRoot - consumer repo root (defaults to cwd; the hook keys the
36
+ * mapping directory by the repo directory's basename)
37
+ */
38
+ export declare function readBacklogSessionId(key: string, projectRoot?: string): string | undefined;
23
39
  //# sourceMappingURL=client-session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client-session.d.ts","sourceRoot":"","sources":["../../src/utils/client-session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAWH;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,WAAW,GAAE,MAAsB,GAClC,MAAM,GAAG,SAAS,CAmBpB"}
1
+ {"version":3,"file":"client-session.d.ts","sourceRoot":"","sources":["../../src/utils/client-session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAWH;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,WAAW,GAAE,MAAsB,GAClC,MAAM,GAAG,SAAS,CAmBpB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,WAAW,GAAE,MAAsB,GAClC,MAAM,GAAG,SAAS,CAmBpB"}
@@ -40,4 +40,33 @@ export function readClientSessionId(branchName, projectRoot = process.cwd()) {
40
40
  return undefined;
41
41
  }
42
42
  }
43
+ /**
44
+ * Return the Claude Code session id recorded by the hook for a chat-scoped
45
+ * backlog init (`hula script backlog-init -- <key>`), or undefined when none
46
+ * was captured (hook not registered, capture race lost, or malformed file).
47
+ * Never throws — provenance capture is best-effort and must not block.
48
+ *
49
+ * Reads `$HOME/.hublaunch-sessions/<repo-dir-name>/<key>-backlog.json`, the
50
+ * companion file written by the backlog marker family in session-hook.ts.
51
+ * No branch sanitization is needed: `key` is already constrained to
52
+ * `/^bl-[a-z0-9]{6,12}$/` by backlog-init before this is ever called.
53
+ *
54
+ * @param key - the `bl-...` backlog key
55
+ * @param projectRoot - consumer repo root (defaults to cwd; the hook keys the
56
+ * mapping directory by the repo directory's basename)
57
+ */
58
+ export function readBacklogSessionId(key, projectRoot = process.cwd()) {
59
+ try {
60
+ const mappingPath = join(homedir(), '.hublaunch-sessions', basename(projectRoot), `${key}-backlog.json`);
61
+ if (!existsSync(mappingPath))
62
+ return undefined;
63
+ const parsed = JSON.parse(readFileSync(mappingPath, 'utf-8'));
64
+ return typeof parsed.sessionId === 'string' && parsed.sessionId
65
+ ? parsed.sessionId
66
+ : undefined;
67
+ }
68
+ catch {
69
+ return undefined;
70
+ }
71
+ }
43
72
  //# sourceMappingURL=client-session.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client-session.js","sourceRoot":"","sources":["../../src/utils/client-session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAEtC,sFAAsF;AACtF,SAAS,cAAc,CAAC,MAAc;IACpC,OAAO,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACrE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CACjC,UAAkB,EAClB,cAAsB,OAAO,CAAC,GAAG,EAAE;IAEnC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,CACtB,OAAO,EAAE,EACT,qBAAqB,EACrB,QAAQ,CAAC,WAAW,CAAC,EACrB,GAAG,cAAc,CAAC,UAAU,CAAC,OAAO,CACrC,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;YAAE,OAAO,SAAS,CAAC;QAE/C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAE3D,CAAC;QACF,OAAO,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS;YAC7D,CAAC,CAAC,MAAM,CAAC,SAAS;YAClB,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"client-session.js","sourceRoot":"","sources":["../../src/utils/client-session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAEtC,sFAAsF;AACtF,SAAS,cAAc,CAAC,MAAc;IACpC,OAAO,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACrE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CACjC,UAAkB,EAClB,cAAsB,OAAO,CAAC,GAAG,EAAE;IAEnC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,CACtB,OAAO,EAAE,EACT,qBAAqB,EACrB,QAAQ,CAAC,WAAW,CAAC,EACrB,GAAG,cAAc,CAAC,UAAU,CAAC,OAAO,CACrC,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;YAAE,OAAO,SAAS,CAAC;QAE/C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAE3D,CAAC;QACF,OAAO,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS;YAC7D,CAAC,CAAC,MAAM,CAAC,SAAS;YAClB,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,oBAAoB,CAClC,GAAW,EACX,cAAsB,OAAO,CAAC,GAAG,EAAE;IAEnC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,CACtB,OAAO,EAAE,EACT,qBAAqB,EACrB,QAAQ,CAAC,WAAW,CAAC,EACrB,GAAG,GAAG,eAAe,CACtB,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;YAAE,OAAO,SAAS,CAAC;QAE/C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAE3D,CAAC;QACF,OAAO,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS;YAC7D,CAAC,CAAC,MAAM,CAAC,SAAS;YAClB,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Per-repo sandbox profile: which prebuilt sandbox image the server launches a
3
+ * task in. Mirrors hula-server's `SandboxProfile` (services/queue/sandbox-profile.ts).
4
+ * Clients send only the `type` enum (plus optional `jdk`); the server maps it to
5
+ * an image, so an unknown type is a 400 there.
6
+ *
7
+ * - `base`: Node, Python 3.12, PHP 8.3 (the default; omitted from requests).
8
+ * - `android`: adds JDK 17 & 21, the Android SDK, Ruby 3.3 + fastlane.
9
+ */
10
+ export type SandboxProfileType = 'base' | 'android';
11
+ export interface SandboxProfile {
12
+ type: SandboxProfileType;
13
+ /** JDK major version — android only. The sandbox defaults to 17 when absent. */
14
+ jdk?: 17 | 21;
15
+ }
16
+ export declare const SANDBOX_PROFILE_TYPES: readonly SandboxProfileType[];
17
+ export declare const SANDBOX_PROFILE_JDKS: readonly [17, 21];
18
+ /**
19
+ * Parse the `--sandbox-profile` flag value: `base`, `android`, `android:17`, or
20
+ * `android:21`. Throws with a user-facing message on anything else.
21
+ */
22
+ export declare function parseSandboxProfileFlag(value: string): SandboxProfile;
23
+ /**
24
+ * Resolve the effective profile: the `--sandbox-profile` flag wins, then the
25
+ * repo config's `sandboxProfile`, then `base`. Returns an `error` (never throws)
26
+ * so callers can apply their own exit/group-mode failure handling.
27
+ */
28
+ export declare function resolveSandboxProfile(flag: string | undefined, configProfile: SandboxProfile | undefined): {
29
+ profile: SandboxProfile;
30
+ error?: undefined;
31
+ } | {
32
+ profile?: undefined;
33
+ error: string;
34
+ };
35
+ /**
36
+ * The `sandboxProfile` value to put on a request body, or `undefined` for
37
+ * `base` — the server default — so base launches keep byte-identical bodies and
38
+ * older servers never see the field.
39
+ */
40
+ export declare function sandboxProfileForRequest(profile: SandboxProfile | undefined): SandboxProfile | undefined;
41
+ /** Human-readable label, e.g. `android (JDK 21)`. */
42
+ export declare function describeSandboxProfile(profile: SandboxProfile): string;
43
+ export declare function detectAndroidProject(repoRoot: string): boolean;
44
+ //# sourceMappingURL=sandbox-profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-profile.d.ts","sourceRoot":"","sources":["../../src/utils/sandbox-profile.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,SAAS,CAAC;AAEpD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,kBAAkB,CAAC;IACzB,gFAAgF;IAChF,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC;CACf;AAED,eAAO,MAAM,qBAAqB,EAAE,SAAS,kBAAkB,EAG9D,CAAC;AACF,eAAO,MAAM,oBAAoB,mBAAoB,CAAC;AAEtD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CAiBrE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,aAAa,EAAE,cAAc,GAAG,SAAS,GACxC;IAAE,OAAO,EAAE,cAAc,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,OAAO,CAAC,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CASzF;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,cAAc,GAAG,SAAS,GAClC,cAAc,GAAG,SAAS,CAG5B;AAED,qDAAqD;AACrD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAItE;AAiBD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE9D"}
@@ -0,0 +1,78 @@
1
+ import { existsSync } from 'fs';
2
+ import { join } from 'path';
3
+ export const SANDBOX_PROFILE_TYPES = [
4
+ 'base',
5
+ 'android',
6
+ ];
7
+ export const SANDBOX_PROFILE_JDKS = [17, 21];
8
+ /**
9
+ * Parse the `--sandbox-profile` flag value: `base`, `android`, `android:17`, or
10
+ * `android:21`. Throws with a user-facing message on anything else.
11
+ */
12
+ export function parseSandboxProfileFlag(value) {
13
+ const [rawType, rawJdk, ...rest] = value.trim().toLowerCase().split(':');
14
+ if (rest.length > 0 || !SANDBOX_PROFILE_TYPES.includes(rawType)) {
15
+ throw new Error(`--sandbox-profile must be one of: base, android, android:17, android:21 (got "${value}")`);
16
+ }
17
+ const type = rawType;
18
+ if (rawJdk === undefined)
19
+ return { type };
20
+ if (type !== 'android') {
21
+ throw new Error('--sandbox-profile: a JDK version is only valid with "android"');
22
+ }
23
+ const jdk = Number(rawJdk);
24
+ if (jdk !== 17 && jdk !== 21) {
25
+ throw new Error('--sandbox-profile: JDK must be 17 or 21');
26
+ }
27
+ return { type, jdk };
28
+ }
29
+ /**
30
+ * Resolve the effective profile: the `--sandbox-profile` flag wins, then the
31
+ * repo config's `sandboxProfile`, then `base`. Returns an `error` (never throws)
32
+ * so callers can apply their own exit/group-mode failure handling.
33
+ */
34
+ export function resolveSandboxProfile(flag, configProfile) {
35
+ if (flag !== undefined) {
36
+ try {
37
+ return { profile: parseSandboxProfileFlag(flag) };
38
+ }
39
+ catch (error) {
40
+ return { error: error instanceof Error ? error.message : String(error) };
41
+ }
42
+ }
43
+ return { profile: configProfile ?? { type: 'base' } };
44
+ }
45
+ /**
46
+ * The `sandboxProfile` value to put on a request body, or `undefined` for
47
+ * `base` — the server default — so base launches keep byte-identical bodies and
48
+ * older servers never see the field.
49
+ */
50
+ export function sandboxProfileForRequest(profile) {
51
+ if (!profile || profile.type === 'base')
52
+ return undefined;
53
+ return profile.jdk !== undefined ? { type: profile.type, jdk: profile.jdk } : { type: profile.type };
54
+ }
55
+ /** Human-readable label, e.g. `android (JDK 21)`. */
56
+ export function describeSandboxProfile(profile) {
57
+ return profile.type === 'android'
58
+ ? `android (JDK ${profile.jdk ?? 17})`
59
+ : profile.type;
60
+ }
61
+ /**
62
+ * Files whose presence marks a repo as a native Android / React Native project.
63
+ * Used only to preselect the `hula init` answer — a greenfield repo has none of
64
+ * these, so the user's choice is what decides there.
65
+ */
66
+ const ANDROID_MARKERS = [
67
+ 'android/build.gradle',
68
+ 'android/build.gradle.kts',
69
+ 'android/settings.gradle',
70
+ 'android/settings.gradle.kts',
71
+ 'settings.gradle',
72
+ 'settings.gradle.kts',
73
+ 'gradlew',
74
+ ];
75
+ export function detectAndroidProject(repoRoot) {
76
+ return ANDROID_MARKERS.some((marker) => existsSync(join(repoRoot, marker)));
77
+ }
78
+ //# sourceMappingURL=sandbox-profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-profile.js","sourceRoot":"","sources":["../../src/utils/sandbox-profile.ts"],"names":[],"mappings":"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"}