hub-launch 1.9.0 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/README.md +64 -17
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +11 -8
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/launch.d.ts.map +1 -1
- package/dist/commands/launch.js +22 -0
- package/dist/commands/launch.js.map +1 -1
- package/dist/commands/logs.d.ts +27 -2
- package/dist/commands/logs.d.ts.map +1 -1
- package/dist/commands/logs.js +35 -2
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/merge.d.ts.map +1 -1
- package/dist/commands/merge.js +25 -8
- package/dist/commands/merge.js.map +1 -1
- package/dist/commands/schedule.d.ts +7 -0
- package/dist/commands/schedule.d.ts.map +1 -0
- package/dist/commands/{execute.js → schedule.js} +17 -9
- package/dist/commands/schedule.js.map +1 -0
- package/dist/commands/upload.js +1 -1
- package/dist/commands/upload.js.map +1 -1
- package/dist/config/command-names.d.ts +1 -1
- package/dist/config/command-names.js +1 -1
- package/dist/config/command-names.js.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/services/api/HulaApiClient.d.ts +7 -0
- package/dist/services/api/HulaApiClient.d.ts.map +1 -1
- package/dist/services/api/HulaApiClient.js +8 -0
- package/dist/services/api/HulaApiClient.js.map +1 -1
- package/dist/services/git/FilePublishService.d.ts +1 -1
- package/dist/services/git/FilePublishService.js +1 -1
- package/dist/templates/scripts/hula-launch-run.sh +14 -7
- package/dist/templates/scripts/hula-merge-remote.sh +24 -4
- package/dist/templates/scripts/{hula-execute-manage.sh → hula-schedule-manage.sh} +13 -13
- package/dist/templates/scripts/{hula-execute-run.sh → hula-schedule-run.sh} +8 -8
- package/dist/templates/skill-creation-instructions.md +12 -12
- package/dist/templates/skills/hula-launch/SKILL.md +15 -2
- package/dist/templates/skills/hula-merge/SKILL.md +35 -3
- package/dist/templates/skills/{hula-execute → hula-schedule}/SKILL.md +21 -21
- package/dist/types/config.schema.d.ts +3 -0
- package/dist/types/config.schema.d.ts.map +1 -1
- package/dist/types/config.schema.js +1 -0
- package/dist/types/config.schema.js.map +1 -1
- package/package.json +5 -2
- package/dist/commands/execute.d.ts +0 -7
- package/dist/commands/execute.d.ts.map +0 -1
- package/dist/commands/execute.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
# hula-launch-run.sh — Step 4 of the hula.launch workflow
|
|
3
|
-
# Usage: bash .github/scripts/hula-launch-run.sh <plan-path> <branch-name> [--handoff <username>]
|
|
3
|
+
# Usage: bash .github/scripts/hula-launch-run.sh <plan-path> <branch-name> [--handoff <username>] [--test]
|
|
4
4
|
#
|
|
5
5
|
# Performs: hula launch (which handles plan upload automatically)
|
|
6
6
|
# Outputs structured JSON to stdout; all other output goes to stderr.
|
|
@@ -36,6 +36,7 @@ die() {
|
|
|
36
36
|
PLAN_PATH=''
|
|
37
37
|
BRANCH_NAME=''
|
|
38
38
|
HANDOFF=''
|
|
39
|
+
TEST=''
|
|
39
40
|
|
|
40
41
|
while [[ $# -gt 0 ]]; do
|
|
41
42
|
case "$1" in
|
|
@@ -43,6 +44,8 @@ while [[ $# -gt 0 ]]; do
|
|
|
43
44
|
HANDOFF="$2"; shift 2 ;;
|
|
44
45
|
--handoff=*)
|
|
45
46
|
HANDOFF="${1#--handoff=}"; shift ;;
|
|
47
|
+
--test)
|
|
48
|
+
TEST=1; shift ;;
|
|
46
49
|
*)
|
|
47
50
|
if [[ -z "$PLAN_PATH" ]]; then
|
|
48
51
|
PLAN_PATH="$1"
|
|
@@ -56,7 +59,7 @@ while [[ $# -gt 0 ]]; do
|
|
|
56
59
|
done
|
|
57
60
|
|
|
58
61
|
if [[ -z "$PLAN_PATH" || -z "$BRANCH_NAME" ]]; then
|
|
59
|
-
die 1 "Usage: bash .github/scripts/hula-launch-run.sh <plan-path> <branch-name> [--handoff <username>]"
|
|
62
|
+
die 1 "Usage: bash .github/scripts/hula-launch-run.sh <plan-path> <branch-name> [--handoff <username>] [--test]"
|
|
60
63
|
fi
|
|
61
64
|
|
|
62
65
|
# Reject paths with directory traversal sequences
|
|
@@ -68,13 +71,17 @@ fi
|
|
|
68
71
|
|
|
69
72
|
printf '🚀 Launching issue from plan: %s\n' "$PLAN_PATH" >&2
|
|
70
73
|
|
|
74
|
+
# Build the launch invocation as an args array so --handoff and --test compose
|
|
75
|
+
# without combinatorial if/else branching.
|
|
76
|
+
LAUNCH_ARGS=("$BRANCH_NAME" "$PLAN_PATH")
|
|
71
77
|
if [[ -n "$HANDOFF" ]]; then
|
|
72
|
-
|
|
73
|
-
|| die 2 "Launch failed: $LAUNCH_OUTPUT"
|
|
74
|
-
else
|
|
75
|
-
LAUNCH_OUTPUT=$(hula launch "$BRANCH_NAME" "$PLAN_PATH" 2>&1) \
|
|
76
|
-
|| die 2 "Launch failed: $LAUNCH_OUTPUT"
|
|
78
|
+
LAUNCH_ARGS+=(--handoff "$HANDOFF")
|
|
77
79
|
fi
|
|
80
|
+
if [[ -n "$TEST" ]]; then
|
|
81
|
+
LAUNCH_ARGS+=(--test)
|
|
82
|
+
fi
|
|
83
|
+
LAUNCH_OUTPUT=$(hula launch "${LAUNCH_ARGS[@]}" 2>&1) \
|
|
84
|
+
|| die 2 "Launch failed: $LAUNCH_OUTPUT"
|
|
78
85
|
|
|
79
86
|
# Extract issue number from CLI output (e.g. "Created issue #42" or "issue #42")
|
|
80
87
|
ISSUE_NUMBER=$(printf '%s' "$LAUNCH_OUTPUT" | grep -oE '#[0-9]+' | head -1 | tr -d '#') || true
|
|
@@ -48,8 +48,27 @@ fi
|
|
|
48
48
|
|
|
49
49
|
printf '🔀 Merging PR for issue #%s (remote-only)...\n' "$ISSUE_NUMBER" >&2
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
# Capture the CLI output so we can detect whether the local default branch was
|
|
52
|
+
# fast-forwarded, while still surfacing it live to the user (on stderr — stdout
|
|
53
|
+
# is reserved for the structured JSON result).
|
|
54
|
+
set +e
|
|
55
|
+
MERGE_OUTPUT=$(hula merge "$ISSUE_NUMBER" 2>&1)
|
|
56
|
+
MERGE_EXIT=$?
|
|
57
|
+
set -e
|
|
58
|
+
|
|
59
|
+
printf '%s\n' "$MERGE_OUTPUT" >&2
|
|
60
|
+
|
|
61
|
+
if [[ $MERGE_EXIT -ne 0 ]]; then
|
|
62
|
+
die 2 "Failed to merge PR for issue #${ISSUE_NUMBER}. Check the PR on GitHub."
|
|
63
|
+
fi
|
|
64
|
+
|
|
65
|
+
# Detect whether `hula merge` actually fast-forwarded the local default branch.
|
|
66
|
+
# The CLI prints "✓ Local <branch> fast-forwarded to origin/<branch>" on success
|
|
67
|
+
# and a specific warning (with remediation) on each skip/failure mode.
|
|
68
|
+
LOCAL_UPDATED=false
|
|
69
|
+
if printf '%s' "$MERGE_OUTPUT" | grep -q "Local.*fast-forwarded"; then
|
|
70
|
+
LOCAL_UPDATED=true
|
|
71
|
+
fi
|
|
53
72
|
|
|
54
73
|
# ── Step B2: Clean up stale session file (if applicable) ─────────────────────
|
|
55
74
|
|
|
@@ -69,6 +88,7 @@ fi
|
|
|
69
88
|
|
|
70
89
|
# ── Output result ─────────────────────────────────────────────────────────────
|
|
71
90
|
|
|
72
|
-
printf '{"status":"success","issueNumber":%s,"sessionCleaned":%s}\n' \
|
|
91
|
+
printf '{"status":"success","issueNumber":%s,"sessionCleaned":%s,"localUpdated":%s}\n' \
|
|
73
92
|
"$ISSUE_NUMBER" \
|
|
74
|
-
"$([ "$SESSION_CLEANED" == true ] && echo 'true' || echo 'false')"
|
|
93
|
+
"$([ "$SESSION_CLEANED" == true ] && echo 'true' || echo 'false')" \
|
|
94
|
+
"$([ "$LOCAL_UPDATED" == true ] && echo 'true' || echo 'false')"
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# hula-
|
|
2
|
+
# hula-schedule-manage.sh — management surface for the /hula-schedule skill
|
|
3
3
|
# Usage (exactly one action per call):
|
|
4
|
-
# bash .github/scripts/hula-
|
|
5
|
-
# bash .github/scripts/hula-
|
|
6
|
-
# bash .github/scripts/hula-
|
|
7
|
-
# bash .github/scripts/hula-
|
|
8
|
-
# bash .github/scripts/hula-
|
|
9
|
-
# bash .github/scripts/hula-
|
|
10
|
-
# bash .github/scripts/hula-
|
|
4
|
+
# bash .github/scripts/hula-schedule-manage.sh --list
|
|
5
|
+
# bash .github/scripts/hula-schedule-manage.sh --list-schedules
|
|
6
|
+
# bash .github/scripts/hula-schedule-manage.sh --show <runId>
|
|
7
|
+
# bash .github/scripts/hula-schedule-manage.sh --run-now <scheduleId>
|
|
8
|
+
# bash .github/scripts/hula-schedule-manage.sh --cancel-schedule <scheduleId>
|
|
9
|
+
# bash .github/scripts/hula-schedule-manage.sh --publish-skill <repo-relative-path>
|
|
10
|
+
# bash .github/scripts/hula-schedule-manage.sh --delete-skill <repo-relative-path>
|
|
11
11
|
#
|
|
12
|
-
# Each invocation maps to the corresponding `hula
|
|
12
|
+
# Each invocation maps to the corresponding `hula schedule …` call, captures its
|
|
13
13
|
# output, and emits a single structured JSON object to stdout; all other output
|
|
14
14
|
# goes to stderr.
|
|
15
15
|
#
|
|
@@ -99,7 +99,7 @@ while [[ $# -gt 0 ]]; do
|
|
|
99
99
|
done
|
|
100
100
|
|
|
101
101
|
if [[ -z "$ACTION" ]]; then
|
|
102
|
-
die 1 "Usage: bash .github/scripts/hula-
|
|
102
|
+
die 1 "Usage: bash .github/scripts/hula-schedule-manage.sh (--list | --list-schedules | --show <id> | --run-now <id> | --cancel-schedule <id> | --publish-skill <path> | --delete-skill <path>)"
|
|
103
103
|
fi
|
|
104
104
|
|
|
105
105
|
# Actions that require an argument.
|
|
@@ -113,7 +113,7 @@ case "$ACTION" in
|
|
|
113
113
|
publish-skill|delete-skill) validate_skill_path "$ARG" ;;
|
|
114
114
|
esac
|
|
115
115
|
|
|
116
|
-
# ── Build and run the hula
|
|
116
|
+
# ── Build and run the hula schedule invocation ────────────────────────────────
|
|
117
117
|
|
|
118
118
|
CLI_ARGS=()
|
|
119
119
|
case "$ACTION" in
|
|
@@ -126,9 +126,9 @@ case "$ACTION" in
|
|
|
126
126
|
delete-skill) CLI_ARGS=(--delete-skill "$ARG") ;;
|
|
127
127
|
esac
|
|
128
128
|
|
|
129
|
-
printf '⚙️ hula
|
|
129
|
+
printf '⚙️ hula schedule --%s...\n' "$ACTION" >&2
|
|
130
130
|
|
|
131
|
-
OUTPUT=$(hula
|
|
131
|
+
OUTPUT=$(hula schedule "${CLI_ARGS[@]}" 2>&1) || die 2 "Management action failed: $OUTPUT"
|
|
132
132
|
|
|
133
133
|
SAFE_OUTPUT=$(json_escape "$OUTPUT")
|
|
134
134
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# hula-
|
|
2
|
+
# hula-schedule-run.sh — runs the hula schedule workflow for the /hula-schedule skill
|
|
3
3
|
# Usage:
|
|
4
|
-
# bash .github/scripts/hula-
|
|
4
|
+
# bash .github/scripts/hula-schedule-run.sh \
|
|
5
5
|
# (--built-in <name> | --action-path <path>) \
|
|
6
6
|
# [--entry-point <path>] [--outcome-type <pr|plan|feedback>] [--schedule "<cron>"] \
|
|
7
7
|
# [--pr-policy <always|skip-if-open|close-previous>] [--update-notification-url <url>]
|
|
8
8
|
#
|
|
9
|
-
# Performs: hula
|
|
9
|
+
# Performs: hula schedule (one-off run, or a recurring schedule when --schedule is given).
|
|
10
10
|
# Outputs a single structured JSON object to stdout; all other output goes to stderr.
|
|
11
11
|
#
|
|
12
12
|
# JSON contract (stdout):
|
|
@@ -79,7 +79,7 @@ if [[ -n "$BUILT_IN" && -n "$ACTION_PATH" ]]; then
|
|
|
79
79
|
die 1 "Provide either --built-in or --action-path, not both."
|
|
80
80
|
fi
|
|
81
81
|
if [[ -z "$BUILT_IN" && -z "$ACTION_PATH" ]]; then
|
|
82
|
-
die 1 "Usage: bash .github/scripts/hula-
|
|
82
|
+
die 1 "Usage: bash .github/scripts/hula-schedule-run.sh (--built-in <name> | --action-path <path>) [--entry-point <path>] [--outcome-type <pr|plan|feedback>] [--schedule \"<cron>\"] [--pr-policy <always|skip-if-open|close-previous>]"
|
|
83
83
|
fi
|
|
84
84
|
|
|
85
85
|
# Reject directory-traversal in --action-path, except for https:// URLs.
|
|
@@ -89,7 +89,7 @@ if [[ -n "$ACTION_PATH" ]] && [[ "$ACTION_PATH" != https://* ]]; then
|
|
|
89
89
|
fi
|
|
90
90
|
fi
|
|
91
91
|
|
|
92
|
-
# ── Run hula
|
|
92
|
+
# ── Run hula schedule ─────────────────────────────────────────────────────────
|
|
93
93
|
|
|
94
94
|
ARGS=()
|
|
95
95
|
if [[ -n "$BUILT_IN" ]]; then
|
|
@@ -104,12 +104,12 @@ fi
|
|
|
104
104
|
[[ -n "$UPDATE_NOTIFICATION_URL" ]] && ARGS+=(--update-notification-url "$UPDATE_NOTIFICATION_URL")
|
|
105
105
|
|
|
106
106
|
if [[ -n "$SCHEDULE" ]]; then
|
|
107
|
-
printf '⏰ Scheduling
|
|
107
|
+
printf '⏰ Scheduling action (%s)...\n' "$SCHEDULE" >&2
|
|
108
108
|
else
|
|
109
|
-
printf '🚀 Running
|
|
109
|
+
printf '🚀 Running action...\n' >&2
|
|
110
110
|
fi
|
|
111
111
|
|
|
112
|
-
OUTPUT=$(hula
|
|
112
|
+
OUTPUT=$(hula schedule "${ARGS[@]}" 2>&1) || die 2 "Execute failed: $OUTPUT"
|
|
113
113
|
|
|
114
114
|
# ── Parse identifiers from the human-readable CLI output ─────────────────────
|
|
115
115
|
# Parsing is intentionally tolerant: a missing identifier becomes an empty
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Schedule Skill Creation Instructions
|
|
2
2
|
|
|
3
3
|
These instructions drive the **create-from-description** mode of the
|
|
4
|
-
`/hula-
|
|
5
|
-
action file that `hula
|
|
4
|
+
`/hula-schedule` skill: turning a plain-language description into a published
|
|
5
|
+
action file that `hula schedule` can run or schedule.
|
|
6
6
|
|
|
7
7
|
The action file is plain instruction markdown that the hula-project server reads
|
|
8
8
|
from `origin/<uploadBranch>` (default `main`) at run time. It is **not** an Agent
|
|
@@ -10,7 +10,7 @@ Skill and is never registered as a slash command — it lives under
|
|
|
10
10
|
`.hublaunch/skills/`.
|
|
11
11
|
|
|
12
12
|
Follow these steps in order. Do **not** skip the question step, and do **not**
|
|
13
|
-
run `hula
|
|
13
|
+
run `hula schedule` before the file is successfully published.
|
|
14
14
|
|
|
15
15
|
## Step 1: Ask clarifying questions first (then STOP)
|
|
16
16
|
|
|
@@ -88,13 +88,13 @@ branch at run time (and re-reads it on every scheduled fire). The file MUST be o
|
|
|
88
88
|
the branch before the run, so publish it first:
|
|
89
89
|
|
|
90
90
|
```bash
|
|
91
|
-
bash .github/scripts/hula-
|
|
91
|
+
bash .github/scripts/hula-schedule-manage.sh --publish-skill .hublaunch/skills/<filename>
|
|
92
92
|
```
|
|
93
93
|
|
|
94
94
|
Parse the single JSON object it prints:
|
|
95
95
|
|
|
96
96
|
- If `status` is `"error"`: display `❌ <message>` and **STOP**. Do **not** run
|
|
97
|
-
`hula
|
|
97
|
+
`hula schedule` — the file is not on the branch, so the run would fail.
|
|
98
98
|
- If `status` is `"success"`: continue to Step 7.
|
|
99
99
|
|
|
100
100
|
## Step 7: Run or schedule the action
|
|
@@ -103,7 +103,7 @@ Only after a successful publish, invoke the run wrapper with `--action-path`
|
|
|
103
103
|
pointing at the committed file:
|
|
104
104
|
|
|
105
105
|
```bash
|
|
106
|
-
bash .github/scripts/hula-
|
|
106
|
+
bash .github/scripts/hula-schedule-run.sh --action-path .hublaunch/skills/<filename> [--entry-point <path>] [--outcome-type <type>] [--schedule "<cron>"]
|
|
107
107
|
```
|
|
108
108
|
|
|
109
109
|
Pass only the flags you resolved. Quote the cron expression.
|
|
@@ -116,10 +116,10 @@ Parse the run wrapper's JSON (same contract as the normal run flow) and report:
|
|
|
116
116
|
published to `origin/<uploadBranch>`.
|
|
117
117
|
- The **run or schedule result**:
|
|
118
118
|
- One-off run → the Run ID and PR link (if any), plus
|
|
119
|
-
`hula
|
|
119
|
+
`hula schedule --show <runId>` to check status.
|
|
120
120
|
- Schedule → the Schedule ID and cron expression, plus a note that you can
|
|
121
|
-
manage it with `/hula-
|
|
122
|
-
`/hula-
|
|
121
|
+
manage it with `/hula-schedule list`, `/hula-schedule run now <id>`,
|
|
122
|
+
`/hula-schedule cancel <id>`, or `/hula-schedule update <id> …`.
|
|
123
123
|
|
|
124
124
|
Example success report:
|
|
125
125
|
|
|
@@ -130,7 +130,7 @@ Example success report:
|
|
|
130
130
|
🔖 **Schedule ID**: sch_abc123
|
|
131
131
|
⏰ **Cron**: 0 3 * * * (every day at 3:00 AM)
|
|
132
132
|
|
|
133
|
-
Manage it with: /hula-
|
|
133
|
+
Manage it with: /hula-schedule list · /hula-schedule run now sch_abc123 · /hula-schedule cancel sch_abc123
|
|
134
134
|
```
|
|
135
135
|
|
|
136
136
|
## Notes
|
|
@@ -139,4 +139,4 @@ Manage it with: /hula-execute list · /hula-execute run now sch_abc123 · /hula-
|
|
|
139
139
|
- The action file is committed to `origin/<uploadBranch>` via a temporary
|
|
140
140
|
worktree — the user's current branch and working tree are never touched.
|
|
141
141
|
- If the publish succeeds but the run fails, the file remains on the branch; the
|
|
142
|
-
user can re-run it later with `/hula-
|
|
142
|
+
user can re-run it later with `/hula-schedule .hublaunch/skills/<filename>`.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: hula-launch
|
|
3
3
|
description: Launch a GitHub issue from the current plan. Use when the user asks to launch or assign the plan to a remote agent.
|
|
4
4
|
disable-model-invocation: true
|
|
5
|
-
argument-hint: <branch-name> [<plan-path>]
|
|
5
|
+
argument-hint: <branch-name> [<plan-path>] [--handoff <username>] [--test]
|
|
6
6
|
allowed-tools: Bash Read
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -14,10 +14,11 @@ From `$ARGUMENTS`:
|
|
|
14
14
|
- **Branch name** (required): the first word (e.g., `feature-auth`).
|
|
15
15
|
- **Plan path** (optional): the second word, if present (e.g., `.hublaunch/plans/2026-06-10-14:00-feature-auth.md`).
|
|
16
16
|
- **--handoff** (optional): a `--handoff <username>` flag anywhere in `$ARGUMENTS`.
|
|
17
|
+
- **--test** (optional): the bare flag `--test`, anywhere in `$ARGUMENTS`. Sets test mode (server uses a mock Claude — fast E2E run; a real PR is still created).
|
|
17
18
|
|
|
18
19
|
If no branch name is provided, stop with:
|
|
19
20
|
```
|
|
20
|
-
❌ Branch name required. Usage: /hula-launch <branch-name> [<plan-path>] [--handoff <username>]
|
|
21
|
+
❌ Branch name required. Usage: /hula-launch <branch-name> [<plan-path>] [--handoff <username>] [--test]
|
|
21
22
|
```
|
|
22
23
|
|
|
23
24
|
If no plan path was given in `$ARGUMENTS`, look in the current chat history for the HTML comment:
|
|
@@ -45,6 +46,18 @@ With handoff:
|
|
|
45
46
|
bash .github/scripts/hula-launch-run.sh <plan-path> <branch-name> --handoff <username>
|
|
46
47
|
```
|
|
47
48
|
|
|
49
|
+
With test mode:
|
|
50
|
+
```bash
|
|
51
|
+
bash .github/scripts/hula-launch-run.sh <plan-path> <branch-name> --test
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
With handoff + test mode:
|
|
55
|
+
```bash
|
|
56
|
+
bash .github/scripts/hula-launch-run.sh <plan-path> <branch-name> --handoff <username> --test
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Append `--test` whenever the user passed it; it composes with `--handoff`.
|
|
60
|
+
|
|
48
61
|
## Step 3: Show the result
|
|
49
62
|
|
|
50
63
|
Parse the JSON output from the script:
|
|
@@ -212,16 +212,42 @@ Run the remote-merge script — it merges the PR directly on GitHub and cleans u
|
|
|
212
212
|
bash .github/scripts/hula-merge-remote.sh <issue-number>
|
|
213
213
|
```
|
|
214
214
|
|
|
215
|
-
The script outputs JSON with `status`, `issueNumber`, and `
|
|
215
|
+
The script outputs JSON with `status`, `issueNumber`, `sessionCleaned`, and `localUpdated`.
|
|
216
|
+
|
|
217
|
+
The script captures the `hula merge` CLI output and streams it to your terminal,
|
|
218
|
+
so the **specific reason and remediation** for any skipped local update appears
|
|
219
|
+
above the JSON line. Read it — that's the source of truth for what happened.
|
|
216
220
|
|
|
217
221
|
Parse the JSON output:
|
|
218
222
|
- If `status` is `"error"`, display the `message` and stop.
|
|
219
|
-
- If `status` is `"success"`, proceed
|
|
223
|
+
- If `status` is `"success"`, proceed through the display below, then Step B2a.
|
|
220
224
|
|
|
221
225
|
Display:
|
|
222
226
|
- If `sessionCleaned` is `true`: `🧹 Cleaned up stale session file`
|
|
227
|
+
- Based on the `localUpdated` field:
|
|
228
|
+
- If `localUpdated` is `true`:
|
|
229
|
+
```
|
|
230
|
+
✓ Local main updated to latest origin
|
|
231
|
+
```
|
|
232
|
+
- If `localUpdated` is `false`:
|
|
233
|
+
```
|
|
234
|
+
⚠️ Could not update local main (uncommitted changes, different branch, or git config issue)
|
|
235
|
+
See the output above for the specific reason and how to fix it.
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### Step B2a: About Local Main Update
|
|
239
|
+
|
|
240
|
+
The local main branch may not be fast-forwarded after the remote merge if:
|
|
223
241
|
|
|
224
|
-
|
|
242
|
+
- Your project root has uncommitted changes (skipped to avoid disrupting your work)
|
|
243
|
+
- Your project root is checked out on a different branch (not the default)
|
|
244
|
+
- The git repository has a non-standard/multi-worktree configuration
|
|
245
|
+
- `git pull --ff-only` could not fast-forward (e.g. network issue or diverged history)
|
|
246
|
+
|
|
247
|
+
This is non-critical — the PR is already merged on GitHub. When skipped, the CLI
|
|
248
|
+
output above shows the exact reason and the command to run to fix it.
|
|
249
|
+
|
|
250
|
+
### Step B2b: Delete Local Branch (if applicable)
|
|
225
251
|
|
|
226
252
|
Check whether the branch exists locally:
|
|
227
253
|
|
|
@@ -252,6 +278,9 @@ Display: `ℹ️ No local branch to clean up`
|
|
|
252
278
|
|
|
253
279
|
### Step B3: Success Summary
|
|
254
280
|
|
|
281
|
+
Tailor the summary to what actually happened — in particular, the local main
|
|
282
|
+
line depends on the `localUpdated` field from Step B1.
|
|
283
|
+
|
|
255
284
|
```
|
|
256
285
|
✨ Merge completed successfully!
|
|
257
286
|
|
|
@@ -259,6 +288,8 @@ Summary:
|
|
|
259
288
|
- Merged PR for issue #42 on GitHub ✅
|
|
260
289
|
- Closed issue #42 ✅
|
|
261
290
|
- Deleted local branch: <prBranch> ✅ (or: No local branch to clean up)
|
|
291
|
+
- [IF localUpdated == true] Local main updated to latest origin ✅
|
|
292
|
+
- [IF localUpdated == false] ⚠️ Local main was NOT updated — see the reason above.
|
|
262
293
|
|
|
263
294
|
No local worktree was involved — PR was merged directly on GitHub.
|
|
264
295
|
```
|
|
@@ -381,6 +412,7 @@ On failure, the worktree is preserved so you can:
|
|
|
381
412
|
- ✅ Path B: PR merged directly on GitHub without any local branch/worktree operations
|
|
382
413
|
- ✅ Path B: Stale session files cleaned up if present
|
|
383
414
|
- ✅ Path B: Local branch deleted if it existed locally
|
|
415
|
+
- ✅ Path B: Local main update status reported accurately (updated, or skipped with reason)
|
|
384
416
|
- ✅ PR merged successfully (both paths)
|
|
385
417
|
- ✅ Issue closed automatically (both paths)
|
|
386
418
|
- ✅ Main working tree never modified (both paths)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: hula-
|
|
2
|
+
name: hula-schedule
|
|
3
3
|
description: Run, schedule, create, or manage execute-actions on the hula-project server. Use to run a built-in action (e.g. harden) or custom action file, author a new action from a plain description, or list/show/run-now/cancel/update runs and schedules.
|
|
4
4
|
disable-model-invocation: true
|
|
5
5
|
argument-hint: <action | description | list | show <id> | run now <id> | cancel <id> | update ...> [on <entry-point>] [outcome pr|plan|feedback] [schedule <when>] [pr-policy always|skip-if-open|close-previous]
|
|
@@ -7,7 +7,7 @@ allowed-tools: Bash Read Write Edit
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
You are an expert HubLaunch workflow assistant. You turn the user's free-form
|
|
10
|
-
request into the right `hula
|
|
10
|
+
request into the right `hula schedule` operation — running or scheduling an
|
|
11
11
|
action, authoring a new action file from a description, or managing existing
|
|
12
12
|
runs and schedules — running everything through wrapper scripts and confirming
|
|
13
13
|
any cron expression before sending it.
|
|
@@ -66,7 +66,7 @@ guess between "run an existing action" and "create a new one". Likewise, if an
|
|
|
66
66
|
|
|
67
67
|
- If neither a built-in name nor an action path can be determined, stop with:
|
|
68
68
|
```
|
|
69
|
-
❌ Action required. Usage: /hula-
|
|
69
|
+
❌ Action required. Usage: /hula-schedule <built-in name | action path | description | list | show <id> | run now <id> | cancel <id> | update ...>
|
|
70
70
|
```
|
|
71
71
|
- If BOTH a built-in name and an action path are detected, stop and ask which
|
|
72
72
|
one they intend (the CLI rejects both).
|
|
@@ -76,13 +76,13 @@ guess between "run an existing action" and "create a new one". Likewise, if an
|
|
|
76
76
|
Run exactly one Bash command. Use `--built-in` OR `--action-path`, never both:
|
|
77
77
|
|
|
78
78
|
```bash
|
|
79
|
-
bash .github/scripts/hula-
|
|
79
|
+
bash .github/scripts/hula-schedule-run.sh --built-in <name> [--entry-point <path>] [--outcome-type <type>] [--schedule "<cron>"] [--pr-policy <always|skip-if-open|close-previous>]
|
|
80
80
|
```
|
|
81
81
|
|
|
82
82
|
or, for a custom action file:
|
|
83
83
|
|
|
84
84
|
```bash
|
|
85
|
-
bash .github/scripts/hula-
|
|
85
|
+
bash .github/scripts/hula-schedule-run.sh --action-path <path> [--entry-point <path>] [--outcome-type <type>] [--schedule "<cron>"] [--pr-policy <always|skip-if-open|close-previous>]
|
|
86
86
|
```
|
|
87
87
|
|
|
88
88
|
Pass only the flags you resolved. Quote the cron expression. Only include
|
|
@@ -100,9 +100,9 @@ summary it has you: ask clarifying questions first (then STOP), confirm the
|
|
|
100
100
|
action name, resolve+confirm any cron, write a free-form instruction markdown
|
|
101
101
|
file to `.hublaunch/skills/<YYYY-MM-DD-HH:MM-slug>.md`, **publish it to
|
|
102
102
|
origin/main BEFORE running** via
|
|
103
|
-
`bash .github/scripts/hula-
|
|
103
|
+
`bash .github/scripts/hula-schedule-manage.sh --publish-skill <path>` (abort if
|
|
104
104
|
that returns `status:"error"`), then run/schedule it with
|
|
105
|
-
`bash .github/scripts/hula-
|
|
105
|
+
`bash .github/scripts/hula-schedule-run.sh --action-path <path> …`, and report the
|
|
106
106
|
created file path plus the run/schedule result.
|
|
107
107
|
|
|
108
108
|
---
|
|
@@ -113,8 +113,8 @@ Run via the management wrapper:
|
|
|
113
113
|
|
|
114
114
|
- `list` (no qualifier) → show **both** recent runs and active schedules:
|
|
115
115
|
```bash
|
|
116
|
-
bash .github/scripts/hula-
|
|
117
|
-
bash .github/scripts/hula-
|
|
116
|
+
bash .github/scripts/hula-schedule-manage.sh --list
|
|
117
|
+
bash .github/scripts/hula-schedule-manage.sh --list-schedules
|
|
118
118
|
```
|
|
119
119
|
- "list runs" → only `--list`. "list schedules" → only `--list-schedules`.
|
|
120
120
|
|
|
@@ -123,7 +123,7 @@ Display the `cliOutput` from each result.
|
|
|
123
123
|
## Mode: show
|
|
124
124
|
|
|
125
125
|
```bash
|
|
126
|
-
bash .github/scripts/hula-
|
|
126
|
+
bash .github/scripts/hula-schedule-manage.sh --show <runId>
|
|
127
127
|
```
|
|
128
128
|
|
|
129
129
|
Display the `cliOutput`.
|
|
@@ -131,7 +131,7 @@ Display the `cliOutput`.
|
|
|
131
131
|
## Mode: run-now
|
|
132
132
|
|
|
133
133
|
```bash
|
|
134
|
-
bash .github/scripts/hula-
|
|
134
|
+
bash .github/scripts/hula-schedule-manage.sh --run-now <scheduleId>
|
|
135
135
|
```
|
|
136
136
|
|
|
137
137
|
Report the new run id (`runId`) from the JSON, falling back to `cliOutput`.
|
|
@@ -140,19 +140,19 @@ Report the new run id (`runId`) from the JSON, falling back to `cliOutput`.
|
|
|
140
140
|
|
|
141
141
|
1. Cancel the schedule:
|
|
142
142
|
```bash
|
|
143
|
-
bash .github/scripts/hula-
|
|
143
|
+
bash .github/scripts/hula-schedule-manage.sh --cancel-schedule <scheduleId>
|
|
144
144
|
```
|
|
145
145
|
2. If the cancelled schedule referenced an `actionPath` under
|
|
146
146
|
`.hublaunch/skills/`, **ask the user whether to also delete that file.**
|
|
147
147
|
3. If they opt in, FIRST verify no other active schedule still uses it:
|
|
148
148
|
```bash
|
|
149
|
-
bash .github/scripts/hula-
|
|
149
|
+
bash .github/scripts/hula-schedule-manage.sh --list-schedules
|
|
150
150
|
```
|
|
151
151
|
- If another active schedule references the same `actionPath`, **refuse** and
|
|
152
152
|
report which schedule id(s) still use it. Leave the file on the branch.
|
|
153
153
|
- Otherwise delete it:
|
|
154
154
|
```bash
|
|
155
|
-
bash .github/scripts/hula-
|
|
155
|
+
bash .github/scripts/hula-schedule-manage.sh --delete-skill <actionPath>
|
|
156
156
|
```
|
|
157
157
|
|
|
158
158
|
## Mode: update-skill-file
|
|
@@ -167,7 +167,7 @@ schedule.
|
|
|
167
167
|
it with `Write` for a large change), keeping the free-form template format.
|
|
168
168
|
3. Re-publish it:
|
|
169
169
|
```bash
|
|
170
|
-
bash .github/scripts/hula-
|
|
170
|
+
bash .github/scripts/hula-schedule-manage.sh --publish-skill <actionPath>
|
|
171
171
|
```
|
|
172
172
|
4. No schedule change is needed. Inform the user that the **next scheduled run
|
|
173
173
|
will use the updated content** (the server re-reads the file on every fire).
|
|
@@ -180,14 +180,14 @@ update-schedule endpoint, so cancel + recreate on the same action:
|
|
|
180
180
|
1. Read the existing schedule's `actionPath` (or `builtIn`), `entryPoint`, and
|
|
181
181
|
`outcomeType` via:
|
|
182
182
|
```bash
|
|
183
|
-
bash .github/scripts/hula-
|
|
183
|
+
bash .github/scripts/hula-schedule-manage.sh --list-schedules
|
|
184
184
|
```
|
|
185
185
|
2. Resolve the new cron and **confirm the readback** (see Cron table).
|
|
186
186
|
3. Cancel the old schedule, then recreate with the new cron on the **same**
|
|
187
187
|
action:
|
|
188
188
|
```bash
|
|
189
|
-
bash .github/scripts/hula-
|
|
190
|
-
bash .github/scripts/hula-
|
|
189
|
+
bash .github/scripts/hula-schedule-manage.sh --cancel-schedule <old-id>
|
|
190
|
+
bash .github/scripts/hula-schedule-run.sh --action-path <same-path> [--entry-point <path>] [--outcome-type <type>] --schedule "<new-cron>"
|
|
191
191
|
```
|
|
192
192
|
(Use `--built-in <name>` instead of `--action-path` if the schedule used a
|
|
193
193
|
built-in.)
|
|
@@ -241,7 +241,7 @@ display `❌ <message>` and stop.
|
|
|
241
241
|
🔖 **Run ID**: <runId>
|
|
242
242
|
🔗 **PR**: <prUrl> (omit this line if prUrl is empty)
|
|
243
243
|
|
|
244
|
-
Check status with: /hula-
|
|
244
|
+
Check status with: /hula-schedule show <runId>
|
|
245
245
|
```
|
|
246
246
|
- schedule (`kind:"schedule"`):
|
|
247
247
|
```
|
|
@@ -250,7 +250,7 @@ display `❌ <message>` and stop.
|
|
|
250
250
|
🔖 **Schedule ID**: <scheduleId>
|
|
251
251
|
⏰ **Cron**: <cronExpr>
|
|
252
252
|
|
|
253
|
-
Manage with: /hula-
|
|
253
|
+
Manage with: /hula-schedule list · /hula-schedule run now <scheduleId> · /hula-schedule cancel <scheduleId>
|
|
254
254
|
```
|
|
255
255
|
|
|
256
256
|
If an identifier is empty, fall back to showing the `cliOutput` field.
|
|
@@ -263,5 +263,5 @@ If an identifier is empty, fall back to showing the `cliOutput` field.
|
|
|
263
263
|
- Do NOT echo secrets.
|
|
264
264
|
- Generated action files live under `.hublaunch/skills/` and are committed to
|
|
265
265
|
`origin/main` via a temporary worktree — never on the user's current branch.
|
|
266
|
-
- Never run `hula
|
|
266
|
+
- Never run `hula schedule` before a `--publish-skill` succeeds.
|
|
267
267
|
- Slack/webhook notifications are sent automatically when `updateNotificationUrl` is configured in `.hublaunch/hublaunch.config.js` — no extra flag needed in the skill. The CLI reads it from config on every run and forwards it to the server.
|
|
@@ -158,6 +158,7 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
158
158
|
disk?: number | undefined;
|
|
159
159
|
}>>;
|
|
160
160
|
updateNotificationUrl: z.ZodOptional<z.ZodString>;
|
|
161
|
+
updateNotificationNameTag: z.ZodOptional<z.ZodString>;
|
|
161
162
|
commandAliases: z.ZodOptional<z.ZodObject<{
|
|
162
163
|
primary: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
163
164
|
shortcuts: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
@@ -328,6 +329,7 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
328
329
|
disk?: number | undefined;
|
|
329
330
|
} | undefined;
|
|
330
331
|
updateNotificationUrl?: string | undefined;
|
|
332
|
+
updateNotificationNameTag?: string | undefined;
|
|
331
333
|
commandAliases?: {
|
|
332
334
|
primary: string[];
|
|
333
335
|
shortcuts?: Record<string, string> | undefined;
|
|
@@ -400,6 +402,7 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
400
402
|
disk?: number | undefined;
|
|
401
403
|
} | undefined;
|
|
402
404
|
updateNotificationUrl?: string | undefined;
|
|
405
|
+
updateNotificationNameTag?: string | undefined;
|
|
403
406
|
commandAliases?: {
|
|
404
407
|
primary?: string[] | undefined;
|
|
405
408
|
shortcuts?: Record<string, string> | 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
|
|
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmGvB,CAAC;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAGlD,eAAO,MAAM,cAAc,EAAE,MAe5B,CAAC"}
|
|
@@ -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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hub-launch",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.10.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",
|
|
@@ -24,6 +24,8 @@
|
|
|
24
24
|
"dev": "tsx src/index.ts",
|
|
25
25
|
"debug": "tsx --inspect-brk src/index.ts",
|
|
26
26
|
"typecheck": "tsc --noEmit",
|
|
27
|
+
"test": "vitest run",
|
|
28
|
+
"test:watch": "vitest",
|
|
27
29
|
"test:scripts": "bats src/templates/scripts/__tests__/*.test.sh",
|
|
28
30
|
"regression": "tsc --noEmit && tsc && shx chmod +x dist/index.js && npm run copy-templates",
|
|
29
31
|
"clean": "shx rm -rf dist",
|
|
@@ -66,7 +68,8 @@
|
|
|
66
68
|
"bats": "^1.11.0",
|
|
67
69
|
"shx": "^0.4.0",
|
|
68
70
|
"tsx": "^4.20.6",
|
|
69
|
-
"typescript": "^5.3.3"
|
|
71
|
+
"typescript": "^5.3.3",
|
|
72
|
+
"vitest": "^3.2.4"
|
|
70
73
|
},
|
|
71
74
|
"engines": {
|
|
72
75
|
"node": ">=18.0.0"
|