@renaiss-shipflow/cli 0.15.1 → 0.16.1
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/dist/commands/activity.d.ts.map +1 -1
- package/dist/commands/activity.js +20 -28
- package/dist/commands/activity.js.map +1 -1
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +6 -2
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/channels.d.ts.map +1 -1
- package/dist/commands/channels.js +28 -42
- package/dist/commands/channels.js.map +1 -1
- package/dist/commands/claims.d.ts.map +1 -1
- package/dist/commands/claims.js +14 -25
- package/dist/commands/claims.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +23 -6
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/features.d.ts.map +1 -1
- package/dist/commands/features.js +27 -38
- package/dist/commands/features.js.map +1 -1
- package/dist/commands/helpers.d.ts +84 -4
- package/dist/commands/helpers.d.ts.map +1 -1
- package/dist/commands/helpers.js +77 -24
- package/dist/commands/helpers.js.map +1 -1
- package/dist/commands/inbox.d.ts.map +1 -1
- package/dist/commands/inbox.js +17 -28
- package/dist/commands/inbox.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +5 -11
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/issue.d.ts.map +1 -1
- package/dist/commands/issue.js +29 -52
- package/dist/commands/issue.js.map +1 -1
- package/dist/commands/issues.d.ts.map +1 -1
- package/dist/commands/issues.js +13 -25
- package/dist/commands/issues.js.map +1 -1
- package/dist/commands/pr.d.ts.map +1 -1
- package/dist/commands/pr.js +53 -118
- package/dist/commands/pr.js.map +1 -1
- package/dist/commands/regression.d.ts.map +1 -1
- package/dist/commands/regression.js +4 -22
- package/dist/commands/regression.js.map +1 -1
- package/dist/commands/release.d.ts.map +1 -1
- package/dist/commands/release.js +11 -22
- package/dist/commands/release.js.map +1 -1
- package/dist/commands/repos.d.ts.map +1 -1
- package/dist/commands/repos.js +45 -65
- package/dist/commands/repos.js.map +1 -1
- package/dist/commands/stats.d.ts.map +1 -1
- package/dist/commands/stats.js +35 -43
- package/dist/commands/stats.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +16 -27
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/test.d.ts.map +1 -1
- package/dist/commands/test.js +20 -5
- package/dist/commands/test.js.map +1 -1
- package/dist/commands/trigger.d.ts.map +1 -1
- package/dist/commands/trigger.js +11 -17
- package/dist/commands/trigger.js.map +1 -1
- package/dist/commands/workflows.d.ts.map +1 -1
- package/dist/commands/workflows.js +38 -67
- package/dist/commands/workflows.js.map +1 -1
- package/dist/packet.d.ts +77 -1
- package/dist/packet.d.ts.map +1 -1
- package/dist/packet.js +87 -16
- package/dist/packet.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../src/commands/activity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../src/commands/activity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+B9D"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getApiCtx, runAction } from "./helpers.js";
|
|
2
2
|
import { formatOutput, printTable } from "../output.js";
|
|
3
3
|
export function registerActivityCommand(program) {
|
|
4
4
|
program
|
|
@@ -7,32 +7,24 @@ export function registerActivityCommand(program) {
|
|
|
7
7
|
.option("--last <n>", "Number of recent events to show", "10")
|
|
8
8
|
.option("--json", "Output as JSON")
|
|
9
9
|
.option("--yaml", "Output as YAML")
|
|
10
|
-
.action(async
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
e.triggerEvent || "-",
|
|
30
|
-
]));
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
catch (err) {
|
|
34
|
-
handleError(err);
|
|
35
|
-
}
|
|
36
|
-
});
|
|
10
|
+
.action(runAction(async (opts, cmd) => {
|
|
11
|
+
const { client, org, format } = getApiCtx(cmd);
|
|
12
|
+
const limit = parseInt(opts.last, 10) || 10;
|
|
13
|
+
const result = await client.listActivity(org, { limit });
|
|
14
|
+
const events = result.data;
|
|
15
|
+
formatOutput(format, events, () => {
|
|
16
|
+
if (events.length === 0) {
|
|
17
|
+
console.log("No recent activity.");
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
printTable(["Time", "Repo", "Workflow", "Status", "Trigger"], events.map((e) => [
|
|
21
|
+
e.startedAt,
|
|
22
|
+
e.repoName || e.repositoryId || "-",
|
|
23
|
+
e.workflowType,
|
|
24
|
+
e.status,
|
|
25
|
+
e.triggerEvent || "-",
|
|
26
|
+
]));
|
|
27
|
+
});
|
|
28
|
+
}));
|
|
37
29
|
}
|
|
38
30
|
//# sourceMappingURL=activity.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity.js","sourceRoot":"","sources":["../../src/commands/activity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"activity.js","sourceRoot":"","sources":["../../src/commands/activity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAExD,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,+BAA+B,CAAC;SAC5C,MAAM,CAAC,YAAY,EAAE,iCAAiC,EAAE,IAAI,CAAC;SAC7D,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,IAAsB,EAAE,GAAY,EAAE,EAAE;QAC/D,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;QAE5C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;QAE3B,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE;YAChC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;gBACnC,OAAO;YACT,CAAC;YACD,UAAU,CACR,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,EACjD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBAChB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,QAAQ,IAAK,CAAS,CAAC,YAAY,IAAI,GAAG;gBAC5C,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,MAAM;gBACP,CAAS,CAAC,YAAY,IAAI,GAAG;aAC/B,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8D3D"}
|
package/dist/commands/auth.js
CHANGED
|
@@ -5,7 +5,7 @@ export function registerAuthCommands(program) {
|
|
|
5
5
|
.description("Manage authentication");
|
|
6
6
|
auth
|
|
7
7
|
.command("login")
|
|
8
|
-
.description("Authenticate with an API key")
|
|
8
|
+
.description("[deprecated] Authenticate with an API key — prefer `renaiss-shipflow login`")
|
|
9
9
|
.argument("[api-key]", "API key (sfk_...)")
|
|
10
10
|
.action(async (apiKey) => {
|
|
11
11
|
if (!apiKey) {
|
|
@@ -27,6 +27,10 @@ export function registerAuthCommands(program) {
|
|
|
27
27
|
config.apiKey = apiKey;
|
|
28
28
|
saveConfig(config);
|
|
29
29
|
console.log("API key saved. You can now use renaiss-shipflow commands.");
|
|
30
|
+
// One auth path now: `login` (GitHub-based JWT) signs you in for every
|
|
31
|
+
// command. Keep this alias working for existing sfk_ keys, but point users
|
|
32
|
+
// at the unified command.
|
|
33
|
+
console.log("Note: `auth login` is deprecated — prefer `renaiss-shipflow login` (GitHub sign-in, works for every command).");
|
|
30
34
|
});
|
|
31
35
|
auth
|
|
32
36
|
.command("logout")
|
|
@@ -51,7 +55,7 @@ export function registerAuthCommands(program) {
|
|
|
51
55
|
}
|
|
52
56
|
}
|
|
53
57
|
else {
|
|
54
|
-
console.log("Not authenticated. Run: renaiss-shipflow
|
|
58
|
+
console.log("Not authenticated. Run: renaiss-shipflow login");
|
|
55
59
|
}
|
|
56
60
|
});
|
|
57
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElF,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,MAAM,IAAI,GAAG,OAAO;SACjB,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,uBAAuB,CAAC,CAAC;IAExC,IAAI;SACD,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElF,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,MAAM,IAAI,GAAG,OAAO;SACjB,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,uBAAuB,CAAC,CAAC;IAExC,IAAI;SACD,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,6EAA6E,CAAC;SAC1F,QAAQ,CAAC,WAAW,EAAE,mBAAmB,CAAC;SAC1C,MAAM,CAAC,KAAK,EAAE,MAAe,EAAE,EAAE;QAChC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,+BAA+B;YAC/B,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;YAC1D,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7E,MAAM,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;gBAC7C,EAAE,CAAC,QAAQ,CAAC,gDAAgD,EAAE,CAAC,MAAM,EAAE,EAAE;oBACvE,EAAE,CAAC,KAAK,EAAE,CAAC;oBACX,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;gBACzB,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,UAAU,CAAC,MAAM,CAAC,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;QACzE,uEAAuE;QACvE,2EAA2E;QAC3E,0BAA0B;QAC1B,OAAO,CAAC,GAAG,CAAC,+GAA+G,CAAC,CAAC;IAC/H,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,GAAG,EAAE;QACX,WAAW,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,oCAAoC,CAAC;SACjD,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;QAC5B,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC3E,OAAO,CAAC,GAAG,CAAC,2BAA2B,MAAM,EAAE,CAAC,CAAC;YACjD,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;gBACjC,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;YACnD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;QAChE,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channels.d.ts","sourceRoot":"","sources":["../../src/commands/channels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"channels.d.ts","sourceRoot":"","sources":["../../src/commands/channels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkD9D"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getApiCtx, runAction } from "./helpers.js";
|
|
2
2
|
import { formatOutput, printTable } from "../output.js";
|
|
3
3
|
export function registerChannelCommands(program) {
|
|
4
4
|
const channels = program
|
|
@@ -9,52 +9,38 @@ export function registerChannelCommands(program) {
|
|
|
9
9
|
.description("List notification channels")
|
|
10
10
|
.option("--json", "Output as JSON")
|
|
11
11
|
.option("--yaml", "Output as YAML")
|
|
12
|
-
.action(async
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
]));
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
catch (err) {
|
|
33
|
-
handleError(err);
|
|
34
|
-
}
|
|
35
|
-
});
|
|
12
|
+
.action(runAction(async (_opts, cmd) => {
|
|
13
|
+
const { client, org, format } = getApiCtx(cmd);
|
|
14
|
+
const data = await client.listChannels(org);
|
|
15
|
+
formatOutput(format, data, () => {
|
|
16
|
+
if (data.length === 0) {
|
|
17
|
+
console.log("No notification channels configured.");
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
printTable(["ID", "Type", "Label", "Identifier", "Created"], data.map((c) => [
|
|
21
|
+
c.id,
|
|
22
|
+
c.channelType,
|
|
23
|
+
c.label,
|
|
24
|
+
c.channelIdentifier,
|
|
25
|
+
c.createdAt,
|
|
26
|
+
]));
|
|
27
|
+
});
|
|
28
|
+
}));
|
|
36
29
|
channels
|
|
37
30
|
.command("add")
|
|
38
31
|
.description("Add a notification channel")
|
|
39
32
|
.requiredOption("--type <type>", "Channel type (discord, slack, webhook, email)")
|
|
40
33
|
.requiredOption("--identifier <id>", "Channel identifier (e.g. channel ID, URL)")
|
|
41
34
|
.requiredOption("--label <name>", "Display label")
|
|
42
|
-
.action(async
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
console.log(`Channel "${channel.label}" (${channel.channelType}) added.`);
|
|
53
|
-
console.log(` ID: ${channel.id}`);
|
|
54
|
-
}
|
|
55
|
-
catch (err) {
|
|
56
|
-
handleError(err);
|
|
57
|
-
}
|
|
58
|
-
});
|
|
35
|
+
.action(runAction(async (opts, cmd) => {
|
|
36
|
+
const { client, org } = getApiCtx(cmd);
|
|
37
|
+
const channel = await client.addChannel(org, {
|
|
38
|
+
channelType: opts.type,
|
|
39
|
+
channelIdentifier: opts.identifier,
|
|
40
|
+
label: opts.label,
|
|
41
|
+
});
|
|
42
|
+
console.log(`Channel "${channel.label}" (${channel.channelType}) added.`);
|
|
43
|
+
console.log(` ID: ${channel.id}`);
|
|
44
|
+
}));
|
|
59
45
|
}
|
|
60
46
|
//# sourceMappingURL=channels.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channels.js","sourceRoot":"","sources":["../../src/commands/channels.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"channels.js","sourceRoot":"","sources":["../../src/commands/channels.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAExD,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,MAAM,QAAQ,GAAG,OAAO;SACrB,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,8BAA8B,CAAC,CAAC;IAE/C,QAAQ;SACL,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,4BAA4B,CAAC;SACzC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,KAAc,EAAE,GAAY,EAAE,EAAE;QACvD,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAE5C,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE;YAC9B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;gBACpD,OAAO;YACT,CAAC;YACD,UAAU,CACR,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,CAAC,EAChD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBACd,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,iBAAiB;gBACnB,CAAC,CAAC,SAAS;aACZ,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC,CAAC;IAEN,QAAQ;SACL,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,4BAA4B,CAAC;SACzC,cAAc,CAAC,eAAe,EAAE,+CAA+C,CAAC;SAChF,cAAc,CAAC,mBAAmB,EAAE,2CAA2C,CAAC;SAChF,cAAc,CAAC,gBAAgB,EAAE,eAAe,CAAC;SACjD,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,IAAyD,EAAE,GAAY,EAAE,EAAE;QAClG,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAEvC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;YAC3C,WAAW,EAAE,IAAI,CAAC,IAAI;YACtB,iBAAiB,EAAE,IAAI,CAAC,UAAU;YAClC,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,KAAK,MAAM,OAAO,CAAC,WAAW,UAAU,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claims.d.ts","sourceRoot":"","sources":["../../src/commands/claims.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"claims.d.ts","sourceRoot":"","sources":["../../src/commands/claims.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiB5D"}
|
package/dist/commands/claims.js
CHANGED
|
@@ -1,33 +1,22 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { resolveApiUrl, resolveAuthToken, loadCredentials, refreshOpts } from "../config.js";
|
|
3
|
-
import { resolveProject } from "../project.js";
|
|
1
|
+
import { emit, loadCtx, runAction } from "./helpers.js";
|
|
4
2
|
export function registerClaimsCommand(program) {
|
|
5
3
|
program
|
|
6
4
|
.command("claims")
|
|
7
5
|
.description("List active agent claims (who is working on what)")
|
|
8
6
|
.option("--json", "Output JSON")
|
|
9
|
-
.action(async (opts) => {
|
|
10
|
-
const
|
|
11
|
-
const creds = loadCredentials();
|
|
12
|
-
if (!auth || !creds) {
|
|
13
|
-
console.error("Not signed in. Run: renaiss-shipflow login");
|
|
14
|
-
process.exit(1);
|
|
15
|
-
}
|
|
16
|
-
const client = new ShipFlowClient({ baseUrl: resolveApiUrl(program.opts().apiUrl), jwt: auth.token, ...refreshOpts(creds) });
|
|
17
|
-
const project = await resolveProject(client, creds);
|
|
7
|
+
.action(runAction(async (opts) => {
|
|
8
|
+
const { creds, client, project } = await loadCtx(program);
|
|
18
9
|
const claims = await client.listClaims(creds.org, project.projectId);
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
});
|
|
10
|
+
emit(opts, { claims }, () => {
|
|
11
|
+
if (claims.length === 0) {
|
|
12
|
+
console.log("No active claims — every open issue is up for grabs.");
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
for (const c of claims) {
|
|
16
|
+
const agent = c.agent ? ` (${c.agent})` : "";
|
|
17
|
+
console.log(`#${c.issueNumber} ${c.repo} — ${c.actor}${agent}, expires ${c.expiresAt}`);
|
|
18
|
+
}
|
|
19
|
+
}, { pretty: true });
|
|
20
|
+
}));
|
|
32
21
|
}
|
|
33
22
|
//# sourceMappingURL=claims.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claims.js","sourceRoot":"","sources":["../../src/commands/claims.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"claims.js","sourceRoot":"","sources":["../../src/commands/claims.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAExD,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,mDAAmD,CAAC;SAChE,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC;SAC/B,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,IAAwB,EAAE,EAAE;QACnD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;QAE1D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACrE,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE;YAC1B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAAC,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;YACzG,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvB,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,GAAG,KAAK,aAAa,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;YAC1F,CAAC;QACH,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4EzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyD5D"}
|
package/dist/commands/config.js
CHANGED
|
@@ -33,8 +33,14 @@ const SETTINGS = [
|
|
|
33
33
|
];
|
|
34
34
|
const byKey = new Map(SETTINGS.map((s) => [s.key, s]));
|
|
35
35
|
const KEYS = SETTINGS.map((s) => s.key);
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
// JSON-aware so `config get/set <bad-key> --json` keeps the machine-readable
|
|
37
|
+
// error envelope contract (PR #178 review).
|
|
38
|
+
function unknownKey(key, json) {
|
|
39
|
+
const message = `Unknown key: ${key} (supported: ${KEYS.join(", ")})`;
|
|
40
|
+
if (json)
|
|
41
|
+
console.log(JSON.stringify({ error: message }));
|
|
42
|
+
else
|
|
43
|
+
console.error(message);
|
|
38
44
|
process.exit(1);
|
|
39
45
|
}
|
|
40
46
|
export function registerConfigCommand(program) {
|
|
@@ -42,18 +48,29 @@ export function registerConfigCommand(program) {
|
|
|
42
48
|
config
|
|
43
49
|
.command("set <key> <value>")
|
|
44
50
|
.description(`Set a preference. Keys: ${KEYS.join(", ")}`)
|
|
45
|
-
.
|
|
46
|
-
|
|
51
|
+
.option("--json", "Output JSON")
|
|
52
|
+
.action((key, value, opts) => {
|
|
53
|
+
const s = byKey.get(key) ?? unknownKey(key, opts.json);
|
|
47
54
|
const cfg = loadConfig();
|
|
48
55
|
let echo;
|
|
49
56
|
try {
|
|
50
57
|
echo = s.set(value, cfg);
|
|
51
58
|
}
|
|
52
59
|
catch (e) {
|
|
53
|
-
|
|
60
|
+
if (opts.json) {
|
|
61
|
+
console.log(JSON.stringify({ error: e.message }));
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
console.error(e.message);
|
|
65
|
+
}
|
|
54
66
|
process.exit(1);
|
|
55
67
|
}
|
|
56
68
|
saveConfig(cfg);
|
|
69
|
+
if (opts.json) {
|
|
70
|
+
// Echo the resolved (env > config > default) value — same shape as `config get --json`.
|
|
71
|
+
console.log(JSON.stringify({ [s.field]: s.effective() ?? null }));
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
57
74
|
console.log(`${key} = ${echo}`);
|
|
58
75
|
});
|
|
59
76
|
config
|
|
@@ -61,7 +78,7 @@ export function registerConfigCommand(program) {
|
|
|
61
78
|
.description("Read a preference (env vars override stored config)")
|
|
62
79
|
.option("--json", "Output JSON")
|
|
63
80
|
.action((key, opts) => {
|
|
64
|
-
const s = byKey.get(key) ?? unknownKey(key);
|
|
81
|
+
const s = byKey.get(key) ?? unknownKey(key, opts.json);
|
|
65
82
|
const v = s.effective();
|
|
66
83
|
if (opts.json) {
|
|
67
84
|
console.log(JSON.stringify({ [s.field]: v ?? null }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../../src/commands/features.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../../src/commands/features.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoC9D"}
|
|
@@ -1,50 +1,39 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { resolveApiUrl, resolveAuthToken, loadCredentials, refreshOpts } from "../config.js";
|
|
3
|
-
import { resolveProject } from "../project.js";
|
|
1
|
+
import { emit, loadCtx, runAction } from "./helpers.js";
|
|
4
2
|
export function registerFeaturesCommand(program) {
|
|
5
3
|
program
|
|
6
4
|
.command("features")
|
|
7
5
|
.description("ShipFlow's feature map for this project (features → file paths/test info) — the reviewer's whole-system view")
|
|
8
6
|
.option("--json", "Output the raw feature map")
|
|
9
7
|
.option("--category <name>", "Filter to one category")
|
|
10
|
-
.action(async (opts) => {
|
|
11
|
-
const
|
|
12
|
-
const creds = loadCredentials();
|
|
13
|
-
if (!auth || !creds) {
|
|
14
|
-
console.error("Not signed in. Run: renaiss-shipflow login");
|
|
15
|
-
process.exit(1);
|
|
16
|
-
}
|
|
17
|
-
const client = new ShipFlowClient({ baseUrl: resolveApiUrl(program.opts().apiUrl), jwt: auth.token, ...refreshOpts(creds) });
|
|
18
|
-
const project = await resolveProject(client, creds);
|
|
8
|
+
.action(runAction(async (opts) => {
|
|
9
|
+
const { creds, client, project } = await loadCtx(program);
|
|
19
10
|
const fm = await client.getFeatureMapping(creds.org, project.projectId);
|
|
20
11
|
const features = fm.features ?? {};
|
|
21
12
|
const keys = Object.keys(features).filter((k) => !opts.category || (features[k].category ?? "") === opts.category);
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
if (!keys.length) {
|
|
28
|
-
console.log("No feature map for this project yet. Generate it from the ShipFlow dashboard.");
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
const byCat = new Map();
|
|
32
|
-
for (const k of keys) {
|
|
33
|
-
const cat = features[k].category || "uncategorized";
|
|
34
|
-
if (!byCat.has(cat))
|
|
35
|
-
byCat.set(cat, []);
|
|
36
|
-
byCat.get(cat).push(k);
|
|
37
|
-
}
|
|
38
|
-
console.log(`🗺️ Feature map — ${keys.length} feature(s)${fm.lastUpdated ? ` (updated ${fm.lastUpdated})` : ""}`);
|
|
39
|
-
for (const [cat, ks] of [...byCat].sort((a, b) => a[0].localeCompare(b[0]))) {
|
|
40
|
-
console.log(`\n${cat}`);
|
|
41
|
-
for (const k of ks.sort()) {
|
|
42
|
-
const f = features[k];
|
|
43
|
-
const paths = f.paths ?? [];
|
|
44
|
-
const shown = paths.slice(0, 3).join(", ");
|
|
45
|
-
console.log(` • ${f.name || k}${f.test_priority ? ` [${f.test_priority}]` : ""}${shown ? ` — ${shown}${paths.length > 3 ? " …" : ""}` : ""}`);
|
|
13
|
+
const jsonOut = opts.category ? { ...fm, features: Object.fromEntries(keys.map((k) => [k, features[k]])) } : fm;
|
|
14
|
+
emit(opts, jsonOut, () => {
|
|
15
|
+
if (!keys.length) {
|
|
16
|
+
console.log("No feature map for this project yet. Generate it from the ShipFlow dashboard.");
|
|
17
|
+
return;
|
|
46
18
|
}
|
|
47
|
-
|
|
48
|
-
|
|
19
|
+
const byCat = new Map();
|
|
20
|
+
for (const k of keys) {
|
|
21
|
+
const cat = features[k].category || "uncategorized";
|
|
22
|
+
if (!byCat.has(cat))
|
|
23
|
+
byCat.set(cat, []);
|
|
24
|
+
byCat.get(cat).push(k);
|
|
25
|
+
}
|
|
26
|
+
console.log(`🗺️ Feature map — ${keys.length} feature(s)${fm.lastUpdated ? ` (updated ${fm.lastUpdated})` : ""}`);
|
|
27
|
+
for (const [cat, ks] of [...byCat].sort((a, b) => a[0].localeCompare(b[0]))) {
|
|
28
|
+
console.log(`\n${cat}`);
|
|
29
|
+
for (const k of ks.sort()) {
|
|
30
|
+
const f = features[k];
|
|
31
|
+
const paths = f.paths ?? [];
|
|
32
|
+
const shown = paths.slice(0, 3).join(", ");
|
|
33
|
+
console.log(` • ${f.name || k}${f.test_priority ? ` [${f.test_priority}]` : ""}${shown ? ` — ${shown}${paths.length > 3 ? " …" : ""}` : ""}`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}, { pretty: true });
|
|
37
|
+
}));
|
|
49
38
|
}
|
|
50
39
|
//# sourceMappingURL=features.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features.js","sourceRoot":"","sources":["../../src/commands/features.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"features.js","sourceRoot":"","sources":["../../src/commands/features.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,42 @@
|
|
|
1
1
|
import type { Command } from "commander";
|
|
2
|
-
import { ShipFlowClient } from "../client.js";
|
|
2
|
+
import { ShipFlowClient, type RefreshedTokens } from "../client.js";
|
|
3
|
+
import { type StoredCredentials } from "../config.js";
|
|
3
4
|
import type { OutputFormat } from "../output.js";
|
|
4
|
-
/**
|
|
5
|
+
/** The auth half of a ShipFlowClient's options, resolved from the one shared
|
|
6
|
+
* credential context. A `login` JWT wires transparent refresh so a signed-in
|
|
7
|
+
* session stays valid across the 30-day window; a legacy `sfk_` API key is sent
|
|
8
|
+
* as-is. Both go out as Bearer tokens — so `login` signs a user in for EVERY
|
|
9
|
+
* command, not just the JWT/loop ones. Pure + testable (no process/global reads). */
|
|
10
|
+
export type ClientAuth = {
|
|
11
|
+
jwt: string;
|
|
12
|
+
refreshToken: string;
|
|
13
|
+
onRefreshed: (t: RefreshedTokens) => void;
|
|
14
|
+
} | {
|
|
15
|
+
apiKey: string;
|
|
16
|
+
};
|
|
17
|
+
export declare function buildClientAuth(auth: {
|
|
18
|
+
token: string;
|
|
19
|
+
kind: "jwt" | "apiKey";
|
|
20
|
+
}, creds: StoredCredentials | null): ClientAuth;
|
|
21
|
+
/** A client for the API-key-style commands (repos/workflows/channels/activity/
|
|
22
|
+
* stats/trigger). Resolves credentials through the SAME context as the loop's
|
|
23
|
+
* JWT commands (resolveAuthToken → buildClientAuth), so running `login` is
|
|
24
|
+
* enough to use everything. Exits 1 when nothing is signed in. */
|
|
5
25
|
export declare function getClient(cmd: Command): ShipFlowClient;
|
|
26
|
+
/** Resolve a JWT-authenticated client + the shared credential context WITHOUT
|
|
27
|
+
* resolving a project — the project-less core of {@link loadCtx}. For commands
|
|
28
|
+
* that hit an org-scoped endpoint but don't need the cwd's project (e.g.
|
|
29
|
+
* `regression status`), or that must run other checks before the project is
|
|
30
|
+
* resolved (`regression` trigger resolves the ref first). Exits 1 when not
|
|
31
|
+
* signed in. */
|
|
32
|
+
export declare function loadJwtCtx(program: Command): {
|
|
33
|
+
auth: {
|
|
34
|
+
token: string;
|
|
35
|
+
kind: "jwt" | "apiKey";
|
|
36
|
+
};
|
|
37
|
+
creds: StoredCredentials;
|
|
38
|
+
client: ShipFlowClient;
|
|
39
|
+
};
|
|
6
40
|
/** Bootstrap a JWT-authenticated client + resolved project for the loop-facing
|
|
7
41
|
* `pr`/`issue` commands. Signs in from stored credentials (JWT + refresh),
|
|
8
42
|
* wiring transparent token refresh, and resolves the active project from the
|
|
@@ -12,13 +46,59 @@ export declare function loadCtx(program: Command): Promise<{
|
|
|
12
46
|
token: string;
|
|
13
47
|
kind: "jwt" | "apiKey";
|
|
14
48
|
};
|
|
15
|
-
creds:
|
|
49
|
+
creds: StoredCredentials;
|
|
16
50
|
client: ShipFlowClient;
|
|
17
51
|
project: import("../project.js").ResolvedProject;
|
|
18
52
|
}>;
|
|
53
|
+
/** Best-effort `signal`: on failure, warn (prefixing the message with `label` —
|
|
54
|
+
* e.g. "Merged but ShipFlow signal failed") and continue instead of throwing,
|
|
55
|
+
* so a transient signal blip never fails the surrounding command. Returns
|
|
56
|
+
* whether the signal landed. Omit `label` to swallow silently (no warning).
|
|
57
|
+
* The warn-and-continue semantics are load-bearing for the loop — keep exact. */
|
|
58
|
+
export declare function signalBestEffort(ctx: {
|
|
59
|
+
client: ShipFlowClient;
|
|
60
|
+
creds: {
|
|
61
|
+
org: string;
|
|
62
|
+
};
|
|
63
|
+
project: {
|
|
64
|
+
projectId: string;
|
|
65
|
+
};
|
|
66
|
+
}, refKind: "issues" | "prs", n: number, action: "claim" | "release-claim" | "opened" | "merged", body: Record<string, unknown>, label?: string): Promise<boolean>;
|
|
67
|
+
/** Resolve the shared context for the API-key-style commands in one call: an
|
|
68
|
+
* authenticated {@link getClient}, the target {@link getOrg}, and the requested
|
|
69
|
+
* {@link getFormat}. Preserves the getClient-first order so an unsigned-in
|
|
70
|
+
* invocation still exits 1 before anything else runs. */
|
|
71
|
+
export declare function getApiCtx(cmd: Command): {
|
|
72
|
+
client: ShipFlowClient;
|
|
73
|
+
org: string;
|
|
74
|
+
format: OutputFormat;
|
|
75
|
+
};
|
|
76
|
+
/** Unpack a `<number>` positional + optional `--repo` override into the numeric
|
|
77
|
+
* issue/PR number and the resolved repo (defaulting to the active project's).
|
|
78
|
+
* Collapses the `parseInt(numberStr, 10)` + `opts.repo ?? ctx.project.repoFullName`
|
|
79
|
+
* pair repeated across the `pr`/`issue` subcommands. */
|
|
80
|
+
export declare function resolveTarget(ctx: {
|
|
81
|
+
project: {
|
|
82
|
+
repoFullName: string;
|
|
83
|
+
};
|
|
84
|
+
}, numberStr: string, opts: {
|
|
85
|
+
repo?: string;
|
|
86
|
+
}): {
|
|
87
|
+
number: number;
|
|
88
|
+
repo: string;
|
|
89
|
+
};
|
|
90
|
+
/** Print a command's result once, honoring `--json`. In JSON mode, serializes
|
|
91
|
+
* `jsonValue` (compact by default; pretty-printed with 2-space indent when
|
|
92
|
+
* `pretty`) and returns; otherwise runs `humanPrint`. Replaces the hand-rolled
|
|
93
|
+
* `if (opts.json) { console.log(JSON.stringify(x)); return; }` branches across
|
|
94
|
+
* the commands — JSON output stays byte-identical. */
|
|
95
|
+
export declare function emit(opts: {
|
|
96
|
+
json?: boolean;
|
|
97
|
+
}, jsonValue: unknown, humanPrint: () => void, { pretty }?: {
|
|
98
|
+
pretty?: boolean;
|
|
99
|
+
}): void;
|
|
19
100
|
export declare function getOrg(cmd: Command): string;
|
|
20
101
|
export declare function getFormat(cmd: Command): OutputFormat;
|
|
21
|
-
export declare function handleError(err: unknown): never;
|
|
22
102
|
/**
|
|
23
103
|
* Reserved exit code for an unexpected/transient CLI failure (an unhandled throw
|
|
24
104
|
* — a network blip, a `gh`/`git` hiccup, etc.). It's deliberately distinct from
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/commands/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/commands/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAiE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAErH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD;;;;qFAIqF;AACrF,MAAM,MAAM,UAAU,GAClB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,CAAC,CAAC,EAAE,eAAe,KAAK,IAAI,CAAA;CAAE,GAChF;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvB,wBAAgB,eAAe,CAC7B,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAA;CAAE,EAC/C,KAAK,EAAE,iBAAiB,GAAG,IAAI,GAC9B,UAAU,CAMZ;AAED;;;kEAGkE;AAClE,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,CAQtD;AAED;;;;;gBAKgB;AAChB,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG;IAC5C,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAA;KAAE,CAAC;IAChD,KAAK,EAAE,iBAAiB,CAAC;IACzB,MAAM,EAAE,cAAc,CAAC;CACxB,CAQA;AAED;;;6CAG6C;AAC7C,wBAAsB,OAAO,CAAC,OAAO,EAAE,OAAO;;eAjB7B,MAAM;cAAQ,KAAK,GAAG,QAAQ;;;;;GAqB9C;AAED;;;;iFAIiF;AACjF,wBAAsB,gBAAgB,CACpC,GAAG,EAAE;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EACvF,OAAO,EAAE,QAAQ,GAAG,KAAK,EACzB,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,OAAO,GAAG,eAAe,GAAG,QAAQ,GAAG,QAAQ,EACvD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CAQlB;AAED;;;yDAGyD;AACzD,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,CAErG;AAED;;;wDAGwD;AACxD,wBAAgB,aAAa,CAC3B,GAAG,EAAE;IAAE,OAAO,EAAE;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EAC1C,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACtB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAElC;AAED;;;;sDAIsD;AACtD,wBAAgB,IAAI,CAClB,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,EACxB,SAAS,EAAE,OAAO,EAClB,UAAU,EAAE,MAAM,IAAI,EACtB,EAAE,MAAc,EAAE,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAC5C,IAAI,CAMN;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAE3C;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAKpD;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,EAC3C,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACvC,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAgB/B"}
|