hub-launch 1.30.0 → 1.32.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 +22 -0
- package/README.md +52 -0
- package/dist/commands/errorWatcher.d.ts +2 -0
- package/dist/commands/errorWatcher.d.ts.map +1 -1
- package/dist/commands/errorWatcher.js +13 -0
- package/dist/commands/errorWatcher.js.map +1 -1
- package/dist/commands/init.d.ts +12 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +52 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/launch.d.ts +64 -0
- package/dist/commands/launch.d.ts.map +1 -1
- package/dist/commands/launch.js +317 -36
- package/dist/commands/launch.js.map +1 -1
- package/dist/commands/login.d.ts +14 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +26 -4
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/schedule.d.ts.map +1 -1
- package/dist/commands/schedule.js +12 -0
- package/dist/commands/schedule.js.map +1 -1
- package/dist/commands/script.d.ts +1 -1
- package/dist/commands/script.d.ts.map +1 -1
- package/dist/commands/script.js +3 -0
- package/dist/commands/script.js.map +1 -1
- package/dist/commands/session-hook.d.ts +9 -0
- package/dist/commands/session-hook.d.ts.map +1 -1
- package/dist/commands/session-hook.js +60 -15
- package/dist/commands/session-hook.js.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/scripts/backlog-add.d.ts +2 -0
- package/dist/scripts/backlog-add.d.ts.map +1 -0
- package/dist/scripts/backlog-add.js +145 -0
- package/dist/scripts/backlog-add.js.map +1 -0
- package/dist/scripts/backlog-init.d.ts +2 -0
- package/dist/scripts/backlog-init.d.ts.map +1 -0
- package/dist/scripts/backlog-init.js +84 -0
- package/dist/scripts/backlog-init.js.map +1 -0
- package/dist/scripts/backlog-resync.d.ts +2 -0
- package/dist/scripts/backlog-resync.d.ts.map +1 -0
- package/dist/scripts/backlog-resync.js +156 -0
- package/dist/scripts/backlog-resync.js.map +1 -0
- package/dist/scripts/launch-run.d.ts +1 -0
- package/dist/scripts/launch-run.d.ts.map +1 -1
- package/dist/scripts/launch-run.js +47 -3
- package/dist/scripts/launch-run.js.map +1 -1
- package/dist/scripts/lib/backlog-sync.d.ts +27 -0
- package/dist/scripts/lib/backlog-sync.d.ts.map +1 -0
- package/dist/scripts/lib/backlog-sync.js +48 -0
- package/dist/scripts/lib/backlog-sync.js.map +1 -0
- package/dist/scripts/lib/read-config.d.ts +16 -0
- package/dist/scripts/lib/read-config.d.ts.map +1 -1
- package/dist/scripts/lib/read-config.js +34 -0
- package/dist/scripts/lib/read-config.js.map +1 -1
- package/dist/services/api/HulaApiClient.d.ts +39 -0
- package/dist/services/api/HulaApiClient.d.ts.map +1 -1
- package/dist/services/api/HulaApiClient.js +15 -0
- package/dist/services/api/HulaApiClient.js.map +1 -1
- package/dist/services/github/IssueService.d.ts +3 -1
- package/dist/services/github/IssueService.d.ts.map +1 -1
- package/dist/services/github/IssueService.js +5 -2
- package/dist/services/github/IssueService.js.map +1 -1
- package/dist/services/github/PRService.d.ts +3 -1
- package/dist/services/github/PRService.d.ts.map +1 -1
- package/dist/services/github/PRService.js +2 -2
- package/dist/services/github/PRService.js.map +1 -1
- package/dist/services/plan/GitHubSourcePlanService.d.ts +67 -0
- package/dist/services/plan/GitHubSourcePlanService.d.ts.map +1 -0
- package/dist/services/plan/GitHubSourcePlanService.js +164 -0
- package/dist/services/plan/GitHubSourcePlanService.js.map +1 -0
- package/dist/services/plan/PlanBranchService.d.ts +5 -1
- package/dist/services/plan/PlanBranchService.d.ts.map +1 -1
- package/dist/services/plan/PlanBranchService.js +21 -3
- package/dist/services/plan/PlanBranchService.js.map +1 -1
- package/dist/templates/proceed-instructions.md +2 -1
- package/dist/templates/skills/hula-approve/SKILL.md +31 -0
- package/dist/templates/skills/hula-fix/SKILL.md +10 -0
- package/dist/templates/skills/hula-launch/SKILL.md +40 -1
- package/dist/templates/skills/hula-plan/SKILL.md +39 -4
- package/dist/types/config.schema.d.ts +24 -0
- package/dist/types/config.schema.d.ts.map +1 -1
- package/dist/types/config.schema.js +11 -0
- package/dist/types/config.schema.js.map +1 -1
- package/dist/types/issue.schema.d.ts +6 -0
- package/dist/types/issue.schema.d.ts.map +1 -1
- package/dist/types/issue.schema.js +8 -0
- package/dist/types/issue.schema.js.map +1 -1
- package/dist/types/pr.schema.d.ts +38 -0
- package/dist/types/pr.schema.d.ts.map +1 -1
- package/dist/types/pr.schema.js +7 -0
- package/dist/types/pr.schema.js.map +1 -1
- package/dist/utils/client-session.d.ts +16 -0
- package/dist/utils/client-session.d.ts.map +1 -1
- package/dist/utils/client-session.js +29 -0
- package/dist/utils/client-session.js.map +1 -1
- package/dist/utils/github-cli.d.ts +2 -0
- package/dist/utils/github-cli.d.ts.map +1 -1
- package/dist/utils/github-cli.js +1 -1
- package/dist/utils/github-cli.js.map +1 -1
- package/dist/utils/sandbox-profile.d.ts +44 -0
- package/dist/utils/sandbox-profile.d.ts.map +1 -0
- package/dist/utils/sandbox-profile.js +78 -0
- package/dist/utils/sandbox-profile.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { readFile, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { emitJson, fail, logStderr, runScript } from './lib/io.js';
|
|
5
|
+
import { pushBacklogItemBestEffort, } from './lib/backlog-sync.js';
|
|
6
|
+
import { getHulaApiConfig, resolveRepoRoot } from './lib/read-config.js';
|
|
7
|
+
/**
|
|
8
|
+
* backlog-resync — retry the remote push for every not-yet-synced item in an
|
|
9
|
+
* existing per-chat backlog file. Invoked as:
|
|
10
|
+
* `hula script backlog-resync -- <key> --project <owner>/<repo> [--tracking-name <name>] [--issue <N>]`
|
|
11
|
+
*
|
|
12
|
+
* Run automatically by `/hula-approve`'s Step C once the PR/issue definitely
|
|
13
|
+
* exists server-side, catching up any item added before its tracked `Plan`
|
|
14
|
+
* existed. This step must NEVER fail the calling skill — every outcome
|
|
15
|
+
* (missing file, unconfigured remote, all items still pending) is reported as
|
|
16
|
+
* `status: 'success'`. Exit code 1 is reserved for a genuinely malformed key.
|
|
17
|
+
*/
|
|
18
|
+
/** Same path-traversal guard as backlog-init/backlog-add — mandatory. */
|
|
19
|
+
const KEY_RE = /^bl-[a-z0-9]{6,12}$/;
|
|
20
|
+
/** Mirror of backlog-add's target resolution (kept local so the two scripts stay independent). */
|
|
21
|
+
function resolvePlanTarget(project, trackingName, issue) {
|
|
22
|
+
if (!project)
|
|
23
|
+
return null;
|
|
24
|
+
const slash = project.indexOf('/');
|
|
25
|
+
if (slash <= 0 || slash === project.length - 1)
|
|
26
|
+
return null;
|
|
27
|
+
const owner = project.slice(0, slash);
|
|
28
|
+
const repo = project.slice(slash + 1);
|
|
29
|
+
const issueNumber = issue ? Number.parseInt(issue, 10) : undefined;
|
|
30
|
+
const hasIssue = issueNumber !== undefined && Number.isFinite(issueNumber);
|
|
31
|
+
const hasTrackingName = trackingName.length > 0;
|
|
32
|
+
if (!hasIssue && !hasTrackingName)
|
|
33
|
+
return null;
|
|
34
|
+
return {
|
|
35
|
+
owner,
|
|
36
|
+
repo,
|
|
37
|
+
trackingName: hasTrackingName ? trackingName : undefined,
|
|
38
|
+
issueNumber: hasIssue ? issueNumber : undefined,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export function main(args) {
|
|
42
|
+
return runScript(async () => {
|
|
43
|
+
// ── argument parsing ──────────────────────────────────────────────────
|
|
44
|
+
const positionals = [];
|
|
45
|
+
let project = '';
|
|
46
|
+
let trackingName = '';
|
|
47
|
+
let issue = '';
|
|
48
|
+
for (let i = 0; i < args.length; i++) {
|
|
49
|
+
const a = args[i];
|
|
50
|
+
if (a === '--project') {
|
|
51
|
+
project = args[++i] ?? '';
|
|
52
|
+
}
|
|
53
|
+
else if (a.startsWith('--project=')) {
|
|
54
|
+
project = a.slice('--project='.length);
|
|
55
|
+
}
|
|
56
|
+
else if (a === '--tracking-name') {
|
|
57
|
+
trackingName = args[++i] ?? '';
|
|
58
|
+
}
|
|
59
|
+
else if (a.startsWith('--tracking-name=')) {
|
|
60
|
+
trackingName = a.slice('--tracking-name='.length);
|
|
61
|
+
}
|
|
62
|
+
else if (a === '--issue') {
|
|
63
|
+
issue = args[++i] ?? '';
|
|
64
|
+
}
|
|
65
|
+
else if (a.startsWith('--issue=')) {
|
|
66
|
+
issue = a.slice('--issue='.length);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
positionals.push(a);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
const key = positionals[0] ?? '';
|
|
73
|
+
if (!KEY_RE.test(key)) {
|
|
74
|
+
fail(1, `Invalid backlog key: ${key}`);
|
|
75
|
+
}
|
|
76
|
+
const repoRoot = await resolveRepoRoot();
|
|
77
|
+
const path = join(repoRoot, '.hublaunch', '.backlogs', `${key}.json`);
|
|
78
|
+
// Missing backlog file is a common, valid outcome — most chats have nothing
|
|
79
|
+
// to resync. Report success, not an error.
|
|
80
|
+
if (!existsSync(path)) {
|
|
81
|
+
emitJson({
|
|
82
|
+
status: 'success',
|
|
83
|
+
key,
|
|
84
|
+
resynced: 0,
|
|
85
|
+
skipped: 'no-backlog-file',
|
|
86
|
+
});
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
let data;
|
|
90
|
+
try {
|
|
91
|
+
data = JSON.parse(await readFile(path, 'utf-8'));
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
// A corrupt file must not fail the calling skill either — report and stop.
|
|
95
|
+
emitJson({
|
|
96
|
+
status: 'success',
|
|
97
|
+
key,
|
|
98
|
+
resynced: 0,
|
|
99
|
+
skipped: 'corrupt-backlog-file',
|
|
100
|
+
});
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
const items = Array.isArray(data.items) ? data.items : [];
|
|
104
|
+
const target = resolvePlanTarget(project, trackingName, issue);
|
|
105
|
+
if (!target) {
|
|
106
|
+
emitJson({
|
|
107
|
+
status: 'success',
|
|
108
|
+
key,
|
|
109
|
+
resynced: 0,
|
|
110
|
+
skipped: 'no-plan-target',
|
|
111
|
+
});
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
// getHulaApiConfig is checked inside pushBacklogItemBestEffort, but short-
|
|
115
|
+
// circuit here so an unconfigured remote reports the accurate `skipped`
|
|
116
|
+
// reason and avoids spinning through every item pointlessly.
|
|
117
|
+
const cfg = await getHulaApiConfig(repoRoot);
|
|
118
|
+
if (!cfg) {
|
|
119
|
+
emitJson({
|
|
120
|
+
status: 'success',
|
|
121
|
+
key,
|
|
122
|
+
resynced: 0,
|
|
123
|
+
skipped: 'remote-not-configured',
|
|
124
|
+
});
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
let resynced = 0;
|
|
128
|
+
for (const item of items) {
|
|
129
|
+
if (item.synced === true)
|
|
130
|
+
continue;
|
|
131
|
+
// Attempt every unsynced item independently — one failure never aborts
|
|
132
|
+
// the loop.
|
|
133
|
+
const remoteId = await pushBacklogItemBestEffort(repoRoot, target, item.text, data.sessionId ?? null);
|
|
134
|
+
if (remoteId) {
|
|
135
|
+
item.synced = true;
|
|
136
|
+
item.remoteId = remoteId;
|
|
137
|
+
resynced++;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
// Write once, after processing all items.
|
|
141
|
+
if (resynced > 0) {
|
|
142
|
+
await writeFile(path, JSON.stringify(data), 'utf-8');
|
|
143
|
+
}
|
|
144
|
+
const stillPending = items.filter((i) => i.synced !== true).length;
|
|
145
|
+
if (stillPending > 0) {
|
|
146
|
+
logStderr(`backlog-resync: ${resynced} synced, ${stillPending} still pending`);
|
|
147
|
+
}
|
|
148
|
+
emitJson({
|
|
149
|
+
status: 'success',
|
|
150
|
+
key,
|
|
151
|
+
resynced,
|
|
152
|
+
stillPending,
|
|
153
|
+
});
|
|
154
|
+
}, args);
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=backlog-resync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backlog-resync.js","sourceRoot":"","sources":["../../src/scripts/backlog-resync.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* launch-run — Step 4 of the hula.launch workflow.
|
|
3
3
|
* Invoked as:
|
|
4
4
|
* `hula script launch-run -- <plan-path> <branch-name> [--handoff <username>] [--test] [--skip-regression] [--kill] [--kill-and-relaunch]`
|
|
5
|
+
* `hula script launch-run -- <plan-path> <branch-name> [--issue <ref> | --pr <ref>] [--base <branch>]`
|
|
5
6
|
* `hula script launch-run -- <branch-name> --kill` (cancel only; no plan path)
|
|
6
7
|
* `hula script launch-run -- <branch-name> --folder <path> [--group-id <id>] [--plan <repo>=<path> ...]`
|
|
7
8
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launch-run.d.ts","sourceRoot":"","sources":["../../src/scripts/launch-run.ts"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"launch-run.d.ts","sourceRoot":"","sources":["../../src/scripts/launch-run.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAiLpD"}
|
|
@@ -4,6 +4,7 @@ import { emitJson, fail, logStderr, runScript } from './lib/io.js';
|
|
|
4
4
|
* launch-run — Step 4 of the hula.launch workflow.
|
|
5
5
|
* Invoked as:
|
|
6
6
|
* `hula script launch-run -- <plan-path> <branch-name> [--handoff <username>] [--test] [--skip-regression] [--kill] [--kill-and-relaunch]`
|
|
7
|
+
* `hula script launch-run -- <plan-path> <branch-name> [--issue <ref> | --pr <ref>] [--base <branch>]`
|
|
7
8
|
* `hula script launch-run -- <branch-name> --kill` (cancel only; no plan path)
|
|
8
9
|
* `hula script launch-run -- <branch-name> --folder <path> [--group-id <id>] [--plan <repo>=<path> ...]`
|
|
9
10
|
*
|
|
@@ -30,6 +31,11 @@ export function main(args) {
|
|
|
30
31
|
let killAndRelaunch = false;
|
|
31
32
|
let folder = '';
|
|
32
33
|
let groupId = '';
|
|
34
|
+
// Launch-from-existing source flags, forwarded verbatim to `hula launch`
|
|
35
|
+
// (which validates the combination and the refs themselves).
|
|
36
|
+
let issueRef = '';
|
|
37
|
+
let prRef = '';
|
|
38
|
+
let base = '';
|
|
33
39
|
const planOverrides = [];
|
|
34
40
|
for (let i = 0; i < args.length; i++) {
|
|
35
41
|
const a = args[i];
|
|
@@ -63,6 +69,24 @@ export function main(args) {
|
|
|
63
69
|
else if (a.startsWith('--group-id=')) {
|
|
64
70
|
groupId = a.slice('--group-id='.length);
|
|
65
71
|
}
|
|
72
|
+
else if (a === '--issue') {
|
|
73
|
+
issueRef = args[++i] ?? '';
|
|
74
|
+
}
|
|
75
|
+
else if (a.startsWith('--issue=')) {
|
|
76
|
+
issueRef = a.slice('--issue='.length);
|
|
77
|
+
}
|
|
78
|
+
else if (a === '--pr') {
|
|
79
|
+
prRef = args[++i] ?? '';
|
|
80
|
+
}
|
|
81
|
+
else if (a.startsWith('--pr=')) {
|
|
82
|
+
prRef = a.slice('--pr='.length);
|
|
83
|
+
}
|
|
84
|
+
else if (a === '--base') {
|
|
85
|
+
base = args[++i] ?? '';
|
|
86
|
+
}
|
|
87
|
+
else if (a.startsWith('--base=')) {
|
|
88
|
+
base = a.slice('--base='.length);
|
|
89
|
+
}
|
|
66
90
|
else if (a === '--plan') {
|
|
67
91
|
planOverrides.push(args[++i] ?? '');
|
|
68
92
|
}
|
|
@@ -82,6 +106,9 @@ export function main(args) {
|
|
|
82
106
|
if (kill && killAndRelaunch) {
|
|
83
107
|
fail(1, '--kill and --kill-and-relaunch cannot be used together');
|
|
84
108
|
}
|
|
109
|
+
if ((issueRef || prRef) && (folder || kill)) {
|
|
110
|
+
fail(1, '--issue/--pr cannot be combined with --folder or --kill');
|
|
111
|
+
}
|
|
85
112
|
if (folder || kill) {
|
|
86
113
|
// Folder mode and bare --kill both need ONLY the branch name; if a single
|
|
87
114
|
// positional was given it landed in planPath, so re-home it as the branch.
|
|
@@ -144,6 +171,12 @@ export function main(args) {
|
|
|
144
171
|
launchArgs.push('--kill');
|
|
145
172
|
if (killAndRelaunch)
|
|
146
173
|
launchArgs.push('--kill-and-relaunch');
|
|
174
|
+
if (issueRef)
|
|
175
|
+
launchArgs.push('--issue', issueRef);
|
|
176
|
+
if (prRef)
|
|
177
|
+
launchArgs.push('--pr', prRef);
|
|
178
|
+
if (base)
|
|
179
|
+
launchArgs.push('--base', base);
|
|
147
180
|
const launch = await runHula(launchArgs);
|
|
148
181
|
const launchOutput = `${launch.stdout}${launch.stderr}`;
|
|
149
182
|
if (launch.code !== 0) {
|
|
@@ -151,9 +184,19 @@ export function main(args) {
|
|
|
151
184
|
}
|
|
152
185
|
// Extract issue number from CLI output (e.g. "Created issue #42"). In folder
|
|
153
186
|
// mode issue numbers are per-repo, so this is left empty and the skill
|
|
154
|
-
// renders the group summary from cliOutput instead.
|
|
155
|
-
|
|
156
|
-
|
|
187
|
+
// renders the group summary from cliOutput instead. With --issue the number
|
|
188
|
+
// comes from the ref itself; with --pr alone the CLI output's first `#N`
|
|
189
|
+
// is the PR, not an issue, so it is left empty.
|
|
190
|
+
const refNumber = (ref) => ref.match(/(\d+)\/?$/)?.[1] ?? '';
|
|
191
|
+
let issueNumber = '';
|
|
192
|
+
if (issueRef) {
|
|
193
|
+
issueNumber = refNumber(issueRef);
|
|
194
|
+
}
|
|
195
|
+
else if (!folder && !prRef) {
|
|
196
|
+
const match = launchOutput.match(/#[0-9]+/);
|
|
197
|
+
issueNumber = match ? match[0].replace('#', '') : '';
|
|
198
|
+
}
|
|
199
|
+
const prNumber = prRef ? refNumber(prRef) : '';
|
|
157
200
|
// In folder mode the group id is either supplied or generated by the CLI;
|
|
158
201
|
// recover the generated id from the CLI's roster line ("Feature group: <id>").
|
|
159
202
|
let resolvedGroupId = groupId;
|
|
@@ -166,6 +209,7 @@ export function main(args) {
|
|
|
166
209
|
emitJson({
|
|
167
210
|
status: 'success',
|
|
168
211
|
issueNumber,
|
|
212
|
+
prNumber,
|
|
169
213
|
branchName,
|
|
170
214
|
planPath,
|
|
171
215
|
handoff,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launch-run.js","sourceRoot":"","sources":["../../src/scripts/launch-run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEnE
|
|
1
|
+
{"version":3,"file":"launch-run.js","sourceRoot":"","sources":["../../src/scripts/launch-run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared best-effort remote-push helper for the chat-scoped backlog scripts
|
|
3
|
+
* (`backlog-add`, `backlog-resync`). Keeps the "local file is authoritative,
|
|
4
|
+
* remote sync is a strictly additive side effect" contract in one place.
|
|
5
|
+
*/
|
|
6
|
+
/** Natural-key identification of the server-side `Plan` a backlog item targets. */
|
|
7
|
+
export interface PlanTarget {
|
|
8
|
+
owner: string;
|
|
9
|
+
repo: string;
|
|
10
|
+
trackingName?: string;
|
|
11
|
+
issueNumber?: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Attempt to push a single backlog item to the configured `hula-project`
|
|
15
|
+
* server. Best-effort and non-blocking: returns the server-side item id on
|
|
16
|
+
* success, or `null` on any failure (not configured for remote, network error,
|
|
17
|
+
* a 404 because no matching `Plan` exists yet, or any other error). Never
|
|
18
|
+
* throws — the caller keeps the local write authoritative regardless.
|
|
19
|
+
*
|
|
20
|
+
* @param repoRoot - resolved git repo root (to load `.hublaunch/hublaunch.config.js`)
|
|
21
|
+
* @param target - natural-key identification of the target `Plan`
|
|
22
|
+
* @param text - the backlog item's free text
|
|
23
|
+
* @param clientSessionId - the backlog file's captured session id (or null)
|
|
24
|
+
* @returns the server-side item id, or `null` when the push did not succeed
|
|
25
|
+
*/
|
|
26
|
+
export declare function pushBacklogItemBestEffort(repoRoot: string, target: PlanTarget, text: string, clientSessionId: string | null): Promise<string | null>;
|
|
27
|
+
//# sourceMappingURL=backlog-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backlog-sync.d.ts","sourceRoot":"","sources":["../../../src/scripts/lib/backlog-sync.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AAEH,mFAAmF;AACnF,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,MAAM,EACZ,eAAe,EAAE,MAAM,GAAG,IAAI,GAC7B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA8BxB"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { HulaApiClient, } from '../../services/api/HulaApiClient.js';
|
|
2
|
+
import { logStderr } from './io.js';
|
|
3
|
+
import { getHulaApiConfig } from './read-config.js';
|
|
4
|
+
/**
|
|
5
|
+
* Attempt to push a single backlog item to the configured `hula-project`
|
|
6
|
+
* server. Best-effort and non-blocking: returns the server-side item id on
|
|
7
|
+
* success, or `null` on any failure (not configured for remote, network error,
|
|
8
|
+
* a 404 because no matching `Plan` exists yet, or any other error). Never
|
|
9
|
+
* throws — the caller keeps the local write authoritative regardless.
|
|
10
|
+
*
|
|
11
|
+
* @param repoRoot - resolved git repo root (to load `.hublaunch/hublaunch.config.js`)
|
|
12
|
+
* @param target - natural-key identification of the target `Plan`
|
|
13
|
+
* @param text - the backlog item's free text
|
|
14
|
+
* @param clientSessionId - the backlog file's captured session id (or null)
|
|
15
|
+
* @returns the server-side item id, or `null` when the push did not succeed
|
|
16
|
+
*/
|
|
17
|
+
export async function pushBacklogItemBestEffort(repoRoot, target, text, clientSessionId) {
|
|
18
|
+
const cfg = await getHulaApiConfig(repoRoot);
|
|
19
|
+
if (!cfg) {
|
|
20
|
+
// Not configured for remote sync — the common, expected case. No attempt.
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
const client = new HulaApiClient({
|
|
25
|
+
baseUrl: cfg.baseUrl,
|
|
26
|
+
apiKey: cfg.apiKey,
|
|
27
|
+
});
|
|
28
|
+
const request = {
|
|
29
|
+
owner: target.owner,
|
|
30
|
+
repo: target.repo,
|
|
31
|
+
trackingName: target.trackingName,
|
|
32
|
+
issueNumber: target.issueNumber,
|
|
33
|
+
text,
|
|
34
|
+
clientSessionId,
|
|
35
|
+
};
|
|
36
|
+
const { item } = await client.pushBacklogItem(request);
|
|
37
|
+
return item.id;
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
// Includes NotFoundError (no Plan tracked yet / endpoint absent on an older
|
|
41
|
+
// server), network errors, etc. A stderr debug line only — never stdout,
|
|
42
|
+
// and never a thrown error: local success is independent of remote success.
|
|
43
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
44
|
+
logStderr(`backlog sync: push failed (${message}) — leaving item unsynced`);
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=backlog-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backlog-sync.js","sourceRoot":"","sources":["../../../src/scripts/lib/backlog-sync.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,GAEd,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAgBpD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,QAAgB,EAChB,MAAkB,EAClB,IAAY,EACZ,eAA8B;IAE9B,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,0EAA0E;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC;YAC/B,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,MAAM,EAAE,GAAG,CAAC,MAAM;SACnB,CAAC,CAAC;QACH,MAAM,OAAO,GAA2B;YACtC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,IAAI;YACJ,eAAe;SAChB,CAAC;QACF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,4EAA4E;QAC5E,yEAAyE;QACzE,4EAA4E;QAC5E,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,SAAS,CAAC,8BAA8B,OAAO,2BAA2B,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -23,4 +23,20 @@ export declare function resolveRepoRoot(cwd?: string): Promise<string>;
|
|
|
23
23
|
* silently — no logger/spinner — to preserve the "JSON only on stdout" contract.
|
|
24
24
|
*/
|
|
25
25
|
export declare function getWorktreeBasePath(repoRoot: string): Promise<string>;
|
|
26
|
+
/**
|
|
27
|
+
* Read the hula-project remote config (`hulaApiKey` + `hulaProjectUrl`) from
|
|
28
|
+
* `.hublaunch/hublaunch.config.js`, following the exact loading pattern of
|
|
29
|
+
* {@link getWorktreeBasePath} (cache-busted dynamic import, never hard-fails on
|
|
30
|
+
* a bad config).
|
|
31
|
+
*
|
|
32
|
+
* Returns `null` unless BOTH `hulaApiKey` and `hulaProjectUrl` are non-empty
|
|
33
|
+
* strings — mirroring the gate in `TrackingAdapterFactory.create()`
|
|
34
|
+
* (`src/services/tracking/TrackingAdapterFactory.ts:25`). A missing config file
|
|
35
|
+
* or an unparsable config also yields `null` (remote sync simply doesn't happen
|
|
36
|
+
* — the local backlog remains authoritative).
|
|
37
|
+
*/
|
|
38
|
+
export declare function getHulaApiConfig(repoRoot: string): Promise<{
|
|
39
|
+
apiKey: string;
|
|
40
|
+
baseUrl: string;
|
|
41
|
+
} | null>;
|
|
26
42
|
//# sourceMappingURL=read-config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-config.d.ts","sourceRoot":"","sources":["../../../src/scripts/lib/read-config.ts"],"names":[],"mappings":"AAOA;;;;;GAKG;AAEH;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAWnE;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA8B3E"}
|
|
1
|
+
{"version":3,"file":"read-config.d.ts","sourceRoot":"","sources":["../../../src/scripts/lib/read-config.ts"],"names":[],"mappings":"AAOA;;;;;GAKG;AAEH;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAWnE;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA8B3E;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAiCrD"}
|
|
@@ -62,4 +62,38 @@ export async function getWorktreeBasePath(repoRoot) {
|
|
|
62
62
|
}
|
|
63
63
|
return isAbsolute(basePath) ? basePath : join(repoRoot, basePath);
|
|
64
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* Read the hula-project remote config (`hulaApiKey` + `hulaProjectUrl`) from
|
|
67
|
+
* `.hublaunch/hublaunch.config.js`, following the exact loading pattern of
|
|
68
|
+
* {@link getWorktreeBasePath} (cache-busted dynamic import, never hard-fails on
|
|
69
|
+
* a bad config).
|
|
70
|
+
*
|
|
71
|
+
* Returns `null` unless BOTH `hulaApiKey` and `hulaProjectUrl` are non-empty
|
|
72
|
+
* strings — mirroring the gate in `TrackingAdapterFactory.create()`
|
|
73
|
+
* (`src/services/tracking/TrackingAdapterFactory.ts:25`). A missing config file
|
|
74
|
+
* or an unparsable config also yields `null` (remote sync simply doesn't happen
|
|
75
|
+
* — the local backlog remains authoritative).
|
|
76
|
+
*/
|
|
77
|
+
export async function getHulaApiConfig(repoRoot) {
|
|
78
|
+
const configFile = join(repoRoot, '.hublaunch', 'hublaunch.config.js');
|
|
79
|
+
if (!existsSync(configFile)) {
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
try {
|
|
83
|
+
// Cache-bust so a re-run in the same process picks up edits.
|
|
84
|
+
const url = `${pathToFileURL(configFile).href}?t=${Date.now()}`;
|
|
85
|
+
const mod = (await import(url));
|
|
86
|
+
const cfg = (mod.default ?? mod.config ?? mod);
|
|
87
|
+
const apiKey = typeof cfg?.hulaApiKey === 'string' ? cfg.hulaApiKey.trim() : '';
|
|
88
|
+
const baseUrl = typeof cfg?.hulaProjectUrl === 'string' ? cfg.hulaProjectUrl.trim() : '';
|
|
89
|
+
if (!apiKey || !baseUrl) {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
return { apiKey, baseUrl };
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
// Unparsable/broken config — mirror getWorktreeBasePath's silent fallback.
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
65
99
|
//# sourceMappingURL=read-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-config.js","sourceRoot":"","sources":["../../../src/scripts/lib/read-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC;;;;;GAKG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAY;IAChD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,CAAC,WAAW,EAAE,iBAAiB,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IACpE,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QACzC,SAAS,CAAC,wCAAwC,CAAC,CAAC;QACpD,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;IACvB,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAClC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5D,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,QAAgB;IACxD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,qBAAqB,CAAC,CAAC;IACvE,IAAI,QAAQ,GAAG,EAAE,CAAC;IAElB,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,6DAA6D;YAC7D,MAAM,GAAG,GAAG,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAChE,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,CAI7B,CAAC;YACF,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAE5C,CAAC;YACF,IAAI,OAAO,GAAG,EAAE,gBAAgB,KAAK,QAAQ,EAAE,CAAC;gBAC9C,QAAQ,GAAG,GAAG,CAAC,gBAAgB,CAAC;YAClC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,uEAAuE;YACvE,uDAAuD;QACzD,CAAC;IACH,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,iBAAiB,CAAC;IAC/B,CAAC;IAED,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACpE,CAAC"}
|
|
1
|
+
{"version":3,"file":"read-config.js","sourceRoot":"","sources":["../../../src/scripts/lib/read-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC;;;;;GAKG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAY;IAChD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,CAAC,WAAW,EAAE,iBAAiB,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IACpE,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QACzC,SAAS,CAAC,wCAAwC,CAAC,CAAC;QACpD,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;IACvB,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAClC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5D,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,QAAgB;IACxD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,qBAAqB,CAAC,CAAC;IACvE,IAAI,QAAQ,GAAG,EAAE,CAAC;IAElB,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,6DAA6D;YAC7D,MAAM,GAAG,GAAG,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAChE,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,CAI7B,CAAC;YACF,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAE5C,CAAC;YACF,IAAI,OAAO,GAAG,EAAE,gBAAgB,KAAK,QAAQ,EAAE,CAAC;gBAC9C,QAAQ,GAAG,GAAG,CAAC,gBAAgB,CAAC;YAClC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,uEAAuE;YACvE,uDAAuD;QACzD,CAAC;IACH,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,iBAAiB,CAAC;IAC/B,CAAC;IAED,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACpE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAgB;IAEhB,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,qBAAqB,CAAC,CAAC;IAEvE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,6DAA6D;QAC7D,MAAM,GAAG,GAAG,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAChE,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,CAK7B,CAAC;QACF,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAG5C,CAAC;QACF,MAAM,MAAM,GACV,OAAO,GAAG,EAAE,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,MAAM,OAAO,GACX,OAAO,GAAG,EAAE,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAE3E,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,2EAA2E;QAC3E,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -47,6 +47,31 @@ export interface TrackPlanRequest {
|
|
|
47
47
|
planPath?: string;
|
|
48
48
|
copilotAssigned?: boolean;
|
|
49
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* One backlog item as returned by the server (`POST /api/v1/plans/backlog`,
|
|
52
|
+
* companion `hula-project` plan). `id` is the server-side item id the CLI
|
|
53
|
+
* records locally as `remoteId`.
|
|
54
|
+
*/
|
|
55
|
+
export interface ApiBacklogItem {
|
|
56
|
+
id: string;
|
|
57
|
+
planId: string;
|
|
58
|
+
text: string;
|
|
59
|
+
status: string;
|
|
60
|
+
createdAt: string;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Request body for {@link HulaApiClient.pushBacklogItem}. The target `Plan` is
|
|
64
|
+
* resolved server-side by natural key (`owner`/`repo` + `trackingName` and/or
|
|
65
|
+
* `issueNumber`) — the CLI never learns an internal `Plan.id`.
|
|
66
|
+
*/
|
|
67
|
+
export interface PushBacklogItemRequest {
|
|
68
|
+
owner: string;
|
|
69
|
+
repo: string;
|
|
70
|
+
trackingName?: string;
|
|
71
|
+
issueNumber?: number;
|
|
72
|
+
text: string;
|
|
73
|
+
clientSessionId?: string | null;
|
|
74
|
+
}
|
|
50
75
|
/**
|
|
51
76
|
* One plan entry in a feature-group status response (hula-server PR #505,
|
|
52
77
|
* `GET /api/v1/groups/:groupId`).
|
|
@@ -127,6 +152,20 @@ export declare class HulaApiClient {
|
|
|
127
152
|
trackPlan(data: TrackPlanRequest): Promise<{
|
|
128
153
|
plan: ApiTrackedPlan;
|
|
129
154
|
}>;
|
|
155
|
+
/**
|
|
156
|
+
* Push one chat-scoped backlog item to the server, which resolves the target
|
|
157
|
+
* `Plan` by natural key (see {@link PushBacklogItemRequest}) and attaches the
|
|
158
|
+
* item to it.
|
|
159
|
+
*
|
|
160
|
+
* Deliberately does NOT call `maybeRethrowAsIncompatibleServer`: a 404 here is
|
|
161
|
+
* an expected, routine outcome (the `Plan` isn't tracked yet, or the server
|
|
162
|
+
* predates this brand-new endpoint) — not a version-incompatibility signal. It
|
|
163
|
+
* surfaces as `NotFoundError` via the shared `handleError` interceptor, and the
|
|
164
|
+
* calling script treats that as "not yet trackable" and retries later.
|
|
165
|
+
*/
|
|
166
|
+
pushBacklogItem(data: PushBacklogItemRequest): Promise<{
|
|
167
|
+
item: ApiBacklogItem;
|
|
168
|
+
}>;
|
|
130
169
|
/**
|
|
131
170
|
* Get detailed status for a specific plan
|
|
132
171
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HulaApiClient.d.ts","sourceRoot":"","sources":["../../../src/services/api/HulaApiClient.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"HulaApiClient.d.ts","sourceRoot":"","sources":["../../../src/services/api/HulaApiClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -63,6 +63,21 @@ export class HulaApiClient {
|
|
|
63
63
|
throw err;
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* Push one chat-scoped backlog item to the server, which resolves the target
|
|
68
|
+
* `Plan` by natural key (see {@link PushBacklogItemRequest}) and attaches the
|
|
69
|
+
* item to it.
|
|
70
|
+
*
|
|
71
|
+
* Deliberately does NOT call `maybeRethrowAsIncompatibleServer`: a 404 here is
|
|
72
|
+
* an expected, routine outcome (the `Plan` isn't tracked yet, or the server
|
|
73
|
+
* predates this brand-new endpoint) — not a version-incompatibility signal. It
|
|
74
|
+
* surfaces as `NotFoundError` via the shared `handleError` interceptor, and the
|
|
75
|
+
* calling script treats that as "not yet trackable" and retries later.
|
|
76
|
+
*/
|
|
77
|
+
async pushBacklogItem(data) {
|
|
78
|
+
const response = await this.client.post('/api/v1/plans/backlog', data);
|
|
79
|
+
return response.data;
|
|
80
|
+
}
|
|
66
81
|
/**
|
|
67
82
|
* Get detailed status for a specific plan
|
|
68
83
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HulaApiClient.js","sourceRoot":"","sources":["../../../src/services/api/HulaApiClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"HulaApiClient.js","sourceRoot":"","sources":["../../../src/services/api/HulaApiClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,9 @@ export declare class IssueService {
|
|
|
17
17
|
* Get a specific issue by number.
|
|
18
18
|
* When owner/repo are provided, queries that repo directly instead of the CWD repo.
|
|
19
19
|
*/
|
|
20
|
-
get(issueNumber: number, owner?: string, repo?: string
|
|
20
|
+
get(issueNumber: number, owner?: string, repo?: string, opts?: {
|
|
21
|
+
quiet?: boolean;
|
|
22
|
+
}): Promise<Issue>;
|
|
21
23
|
/**
|
|
22
24
|
* Update issue body
|
|
23
25
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IssueService.d.ts","sourceRoot":"","sources":["../../../src/services/github/IssueService.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,KAAK,EACV,KAAK,iBAAiB,EACtB,KAAK,YAAY,EAGlB,MAAM,sBAAsB,CAAC;AAE9B;;;GAGG;AACH,qBAAa,YAAY;IACvB;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM;IAK9E;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC;IA0BvD;;;OAGG;IACG,GAAG,
|
|
1
|
+
{"version":3,"file":"IssueService.d.ts","sourceRoot":"","sources":["../../../src/services/github/IssueService.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,KAAK,EACV,KAAK,iBAAiB,EACtB,KAAK,YAAY,EAGlB,MAAM,sBAAsB,CAAC;AAE9B;;;GAGG;AACH,qBAAa,YAAY;IACvB;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM;IAK9E;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC;IA0BvD;;;OAGG;IACG,GAAG,CACP,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO,GAC7B,OAAO,CAAC,KAAK,CAAC;IAsBjB;;OAEG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBlE;;OAEG;IACG,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB9E;;OAEG;IACG,IAAI,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAwBxD;;OAEG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAalE;;OAEG;IACG,WAAW,CACf,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAY5F;;OAEG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBrE;;OAEG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBpE;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAuFxD;;OAEG;IACH,OAAO,CAAC,wBAAwB;CAejC"}
|