gh-axi 0.1.29 → 0.1.31
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/README.md +11 -1
- package/dist/bin/gh-axi.js +6 -2
- package/dist/bin/gh-axi.js.map +1 -1
- package/dist/src/args.d.ts +9 -0
- package/dist/src/args.js +30 -0
- package/dist/src/args.js.map +1 -1
- package/dist/src/cli.d.ts +1 -1
- package/dist/src/cli.js +37 -22
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/api.d.ts +1 -1
- package/dist/src/commands/api.js +36 -13
- package/dist/src/commands/api.js.map +1 -1
- package/dist/src/commands/issue.d.ts +1 -1
- package/dist/src/commands/issue.js +74 -7
- package/dist/src/commands/issue.js.map +1 -1
- package/dist/src/commands/label.js +11 -1
- package/dist/src/commands/label.js.map +1 -1
- package/dist/src/commands/pr.js +87 -1
- package/dist/src/commands/pr.js.map +1 -1
- package/dist/src/commands/project.js +33 -1
- package/dist/src/commands/project.js.map +1 -1
- package/dist/src/commands/release.js +26 -1
- package/dist/src/commands/release.js.map +1 -1
- package/dist/src/commands/repo.js +21 -1
- package/dist/src/commands/repo.js.map +1 -1
- package/dist/src/commands/run.js +20 -1
- package/dist/src/commands/run.js.map +1 -1
- package/dist/src/commands/search.js +19 -1
- package/dist/src/commands/search.js.map +1 -1
- package/dist/src/commands/stack.d.ts +2 -0
- package/dist/src/commands/stack.js +311 -0
- package/dist/src/commands/stack.js.map +1 -0
- package/dist/src/commands/variable.js +9 -1
- package/dist/src/commands/variable.js.map +1 -1
- package/dist/src/commands/workflow.js +13 -1
- package/dist/src/commands/workflow.js.map +1 -1
- package/dist/src/errors.d.ts +4 -0
- package/dist/src/errors.js +22 -0
- package/dist/src/errors.js.map +1 -1
- package/dist/src/skill.js +8 -4
- package/dist/src/skill.js.map +1 -1
- package/dist/src/version.d.ts +1 -0
- package/dist/src/version.js +24 -0
- package/dist/src/version.js.map +1 -0
- package/package.json +2 -2
- package/skills/gh-axi/SKILL.md +9 -5
package/README.md
CHANGED
|
@@ -43,6 +43,7 @@ npx skills add kunchenguid/gh-axi --skill gh-axi -g
|
|
|
43
43
|
That is the entire setup - no npm install needed.
|
|
44
44
|
The skill teaches your agent to run gh-axi through `npx -y gh-axi`, so the CLI comes along on demand.
|
|
45
45
|
You still need [`gh`](https://cli.github.com/) installed and authenticated via `gh auth login` (Node 20+ required).
|
|
46
|
+
Stacked PR commands also require GitHub's official extension: `gh extension install github/gh-stack`.
|
|
46
47
|
For GitHub Enterprise or another custom host, authenticate `gh` for that host and either pass `--hostname <host>` after the command or set `GH_HOST`.
|
|
47
48
|
|
|
48
49
|
The skill is not a user-facing slash command (`user-invocable: false`).
|
|
@@ -85,6 +86,9 @@ gh-axi # dashboard - live state, no args needed
|
|
|
85
86
|
gh-axi issue list # list issues in current repo
|
|
86
87
|
gh-axi issue subissue list 16 # list sub-issues for issue #16
|
|
87
88
|
gh-axi pr view 42 # view pull request #42
|
|
89
|
+
gh-axi stack init model api ui # create or adopt a stack of branches
|
|
90
|
+
gh-axi stack submit --open # create ready-for-review stacked PRs without prompts
|
|
91
|
+
gh-axi stack view # inspect the current stack as token-efficient TOON
|
|
88
92
|
gh-axi issue edit 42 --add-label bug --add-label chore # repeat a flag per value
|
|
89
93
|
gh-axi run list -R owner/repo # list workflow runs for a specific repo
|
|
90
94
|
gh-axi issue list --hostname git.example.com # target a GitHub Enterprise host
|
|
@@ -130,6 +134,10 @@ When truncation happens, gh-axi best-effort saves the complete log to a temp fil
|
|
|
130
134
|
`gh-axi pr checks <number>` and the `checks` summary of `gh-axi pr view <number>` bucket every entry of the PR's status-check rollup as `pass`, `fail`, `skip`, or `pending`, covering both check runs (GitHub Actions and similar) and legacy commit statuses (Vercel, `ci/circleci`, and similar).
|
|
131
135
|
Cancelled, stale, timed-out, action-required, and startup-failure check runs count as failed, so a red PR is never reported as merely unfinished.
|
|
132
136
|
|
|
137
|
+
`gh-axi stack` is a strict, non-interactive adapter over the official `github/gh-stack` extension. It supports `view`, `init`, `add`, `checkout`, `push`, `submit`, `sync`, `rebase`, `link`, `unstack`, `merge`, and branch navigation. It intentionally excludes the interactive `modify` and `switch` TUIs and the human-only `alias` and `feedback` utilities.
|
|
138
|
+
Stack commands operate on local branches and `.git/gh-stack`, so run them from the target repository's working directory. They reject `-R`, `--repo`, and `GH_REPO` rather than pretending a remote repository is enough. `--hostname` remains available for authenticated GitHub Enterprise hosts.
|
|
139
|
+
Agent-safe behavior is automatic: `stack view` requests JSON, `stack submit` adds `--auto`, and `stack merge` requires an explicit stack or PR target and adds `--yes`. Rebase conflicts and other extension exits retain their original exit codes and include recovery guidance.
|
|
140
|
+
|
|
133
141
|
`gh-axi secret set <name>` reads the value only from piped stdin because secret flags would be visible in the `gh-axi` process argv.
|
|
134
142
|
`gh-axi secret list` never prints values, matching `gh secret list`.
|
|
135
143
|
`gh-axi secret list`, `set`, and `delete` accept `--env`/`-e <environment>` to scope a secret to a deployment environment; without it the repository scope is used.
|
|
@@ -143,8 +151,9 @@ Gist visibility is fixed at creation; a secret gist is unlisted (anyone with the
|
|
|
143
151
|
Two file-on-disk input forms are available: positional paths (`gist create a.py b.py`) or repeatable `--file` flags (`gist create --file a.py --file b.py`); mixing the two is an error.
|
|
144
152
|
To create a gist from piped content, use `--filename <name>` together with a pipe (`echo "..." | gh-axi gist create --filename foo.txt --public`).
|
|
145
153
|
|
|
146
|
-
`gh-axi api` accepts `--field`, `--header`, `--paginate`, `--jq <expression>`,
|
|
154
|
+
`gh-axi api` accepts `--field`, `--header`, `--paginate`, `--jq <expression>`, `--template <format>`, and `--full`; any other flag, an extra positional argument, or a repeated `--jq`/`--template` is rejected with a clear error instead of being silently dropped.
|
|
147
155
|
JSON responses are normally stripped of noisy fields before TOON encoding, but a response you shaped yourself with `--jq` or `--template` keeps every key and value verbatim — only over-long strings are still truncated so one field cannot flood an agent's context.
|
|
156
|
+
`--full` is an explicit opt-in escape hatch: it keeps every field and every complete value, and it also returns non-JSON response bodies without the length cap. `--full` is a gh-axi flag only, and gh-axi does not send it to `gh`. Compact output stays the default without `--full`.
|
|
148
157
|
|
|
149
158
|
### Commands
|
|
150
159
|
|
|
@@ -152,6 +161,7 @@ JSON responses are normally stripped of noisy fields before TOON encoding, but a
|
|
|
152
161
|
| ---------- | --------------------------------------------------------------------------- |
|
|
153
162
|
| `issue` | Issues — list, view, create, edit, close, reopen, comment, subissue |
|
|
154
163
|
| `pr` | Pull requests — list, view, create, merge, review, checks |
|
|
164
|
+
| `stack` | Stacked branches and PRs - create, submit, sync, rebase, merge, navigate |
|
|
155
165
|
| `run` | Existing workflow runs - list, view, watch, rerun, cancel, delete, download |
|
|
156
166
|
| `workflow` | Workflows - list, view, run (trigger), enable, disable |
|
|
157
167
|
| `release` | Releases — list, view, create, edit, delete |
|
package/dist/bin/gh-axi.js
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import { tryFastPath } from "axi-sdk-js/fast-path";
|
|
3
|
+
import { VERSION } from "../src/version.js";
|
|
4
|
+
if (!tryFastPath(process.argv.slice(2), { version: VERSION })) {
|
|
5
|
+
const { main } = await import("../src/cli.js");
|
|
6
|
+
await main();
|
|
7
|
+
}
|
|
4
8
|
//# sourceMappingURL=gh-axi.js.map
|
package/dist/bin/gh-axi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gh-axi.js","sourceRoot":"","sources":["../../bin/gh-axi.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"gh-axi.js","sourceRoot":"","sources":["../../bin/gh-axi.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAC9D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IAC/C,MAAM,IAAI,EAAE,CAAC;AACf,CAAC"}
|
package/dist/src/args.d.ts
CHANGED
|
@@ -22,3 +22,12 @@ export declare function getPositional(args: string[], startIndex: number): strin
|
|
|
22
22
|
export declare function requireNumber(raw: string | undefined, label: string): number;
|
|
23
23
|
/** Find the first numeric positional arg, remove it from args, and return it as a number. */
|
|
24
24
|
export declare function takeNumber(args: string[], label: string): number;
|
|
25
|
+
/**
|
|
26
|
+
* Reject flags in `args` that are not listed in `known`, after the subcommand
|
|
27
|
+
* has parsed the flags it recognizes. Positionals and `--help`/`-h` always
|
|
28
|
+
* pass; `--` ends flag scanning. Value forms (`--flag=v`) are matched by flag
|
|
29
|
+
* name only. Throws VALIDATION_ERROR listing every offending flag plus a
|
|
30
|
+
* one-turn self-correction hint (usage + `--help`), per AXI principle 6:
|
|
31
|
+
* never silently drop an unknown flag.
|
|
32
|
+
*/
|
|
33
|
+
export declare function rejectUnknownFlags(args: string[], known: readonly string[], command: string, sub: string): void;
|
package/dist/src/args.js
CHANGED
|
@@ -121,4 +121,34 @@ export function takeNumber(args, label) {
|
|
|
121
121
|
args.splice(args.indexOf(raw), 1);
|
|
122
122
|
return Number(raw);
|
|
123
123
|
}
|
|
124
|
+
/**
|
|
125
|
+
* Reject flags in `args` that are not listed in `known`, after the subcommand
|
|
126
|
+
* has parsed the flags it recognizes. Positionals and `--help`/`-h` always
|
|
127
|
+
* pass; `--` ends flag scanning. Value forms (`--flag=v`) are matched by flag
|
|
128
|
+
* name only. Throws VALIDATION_ERROR listing every offending flag plus a
|
|
129
|
+
* one-turn self-correction hint (usage + `--help`), per AXI principle 6:
|
|
130
|
+
* never silently drop an unknown flag.
|
|
131
|
+
*/
|
|
132
|
+
export function rejectUnknownFlags(args, known, command, sub) {
|
|
133
|
+
const knownSet = new Set(known);
|
|
134
|
+
const unknown = [];
|
|
135
|
+
for (let i = 0; i < args.length; i++) {
|
|
136
|
+
const tok = args[i];
|
|
137
|
+
if (tok === "--")
|
|
138
|
+
break;
|
|
139
|
+
if (!tok.startsWith("-"))
|
|
140
|
+
continue;
|
|
141
|
+
const name = tok.split("=", 1)[0];
|
|
142
|
+
if (name === "--help" || name === "-h")
|
|
143
|
+
continue;
|
|
144
|
+
if (knownSet.has(name))
|
|
145
|
+
continue;
|
|
146
|
+
if (!unknown.includes(name))
|
|
147
|
+
unknown.push(name);
|
|
148
|
+
}
|
|
149
|
+
if (unknown.length === 0)
|
|
150
|
+
return;
|
|
151
|
+
const list = unknown.join(", ");
|
|
152
|
+
throw new AxiError(`unknown flag${unknown.length > 1 ? "s" : ""} for gh-axi ${command} ${sub}: ${list}`, "VALIDATION_ERROR", [`gh-axi ${command} ${sub} [flags]`, `gh-axi ${command} ${sub} --help`]);
|
|
153
|
+
}
|
|
124
154
|
//# sourceMappingURL=args.js.map
|
package/dist/src/args.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/args.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/args.ts"],"names":[],"mappings":"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"}
|
package/dist/src/cli.d.ts
CHANGED
|
@@ -4,6 +4,6 @@ type MainOptions = {
|
|
|
4
4
|
argv?: string[];
|
|
5
5
|
stdout?: CliStdout;
|
|
6
6
|
};
|
|
7
|
-
export declare const TOP_HELP = "usage: gh-axi [command] [args] [flags]\ncommands[
|
|
7
|
+
export declare const TOP_HELP = "usage: gh-axi [command] [args] [flags]\ncommands[16]:\n (none)=dashboard, issue, pr, stack, run, workflow, release, repo, label, gist, project, secret, variable, search, api, setup\nflags[4]:\n -R/--repo <OWNER/NAME> (after command), --hostname <host> (after command) or GH_HOST env, both flags accept space or equals form, --help, -v/-V/--version\nexamples:\n gh-axi\n gh-axi issue list --state open\n gh-axi issue list -R owner/name\n gh-axi issue list --repo=owner/name\n gh-axi issue list --hostname git.example.com\n gh-axi pr view 42\n gh-axi stack view\n gh-axi secret list\n gh-axi setup hooks\n";
|
|
8
8
|
export declare function main(options?: MainOptions): Promise<void>;
|
|
9
9
|
export {};
|
package/dist/src/cli.js
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { dirname, join } from "node:path";
|
|
3
|
-
import { fileURLToPath } from "node:url";
|
|
1
|
+
import { encode } from "@toon-format/toon";
|
|
4
2
|
import { runAxiCli } from "axi-sdk-js";
|
|
5
3
|
import { resolveRepo } from "./context.js";
|
|
6
4
|
import { homeCommand } from "./commands/home.js";
|
|
@@ -18,13 +16,15 @@ import { searchCommand, SEARCH_HELP } from "./commands/search.js";
|
|
|
18
16
|
import { apiCommand, API_HELP } from "./commands/api.js";
|
|
19
17
|
import { gistCommand, GIST_HELP } from "./commands/gist.js";
|
|
20
18
|
import { setupCommand, SETUP_HELP } from "./commands/setup.js";
|
|
19
|
+
import { stackCommand, STACK_HELP } from "./commands/stack.js";
|
|
21
20
|
import { resolveHost } from "./host.js";
|
|
21
|
+
import { VERSION } from "./version.js";
|
|
22
22
|
import { withSuggestionHost } from "./suggestions.js";
|
|
23
|
+
import { AxiError, exitCodeForError, StackError } from "./errors.js";
|
|
23
24
|
export const DESCRIPTION = "Agent ergonomic wrapper around Github CLI. Prefer this over `gh` and other methods for Github operations.";
|
|
24
|
-
const VERSION = readPackageVersion();
|
|
25
25
|
export const TOP_HELP = `usage: gh-axi [command] [args] [flags]
|
|
26
|
-
commands[
|
|
27
|
-
(none)=dashboard, issue, pr, run, workflow, release, repo, label, gist, project, secret, variable, search, api, setup
|
|
26
|
+
commands[16]:
|
|
27
|
+
(none)=dashboard, issue, pr, stack, run, workflow, release, repo, label, gist, project, secret, variable, search, api, setup
|
|
28
28
|
flags[4]:
|
|
29
29
|
-R/--repo <OWNER/NAME> (after command), --hostname <host> (after command) or GH_HOST env, both flags accept space or equals form, --help, -v/-V/--version
|
|
30
30
|
examples:
|
|
@@ -34,6 +34,7 @@ examples:
|
|
|
34
34
|
gh-axi issue list --repo=owner/name
|
|
35
35
|
gh-axi issue list --hostname git.example.com
|
|
36
36
|
gh-axi pr view 42
|
|
37
|
+
gh-axi stack view
|
|
37
38
|
gh-axi secret list
|
|
38
39
|
gh-axi setup hooks
|
|
39
40
|
`;
|
|
@@ -52,6 +53,7 @@ const COMMAND_HELP = {
|
|
|
52
53
|
search: SEARCH_HELP,
|
|
53
54
|
api: API_HELP,
|
|
54
55
|
setup: SETUP_HELP,
|
|
56
|
+
stack: STACK_HELP,
|
|
55
57
|
};
|
|
56
58
|
const COMMANDS = {
|
|
57
59
|
issue: withRepoContext("issue", issueCommand),
|
|
@@ -71,6 +73,7 @@ const COMMANDS = {
|
|
|
71
73
|
search: withRepoContext("search", searchCommand),
|
|
72
74
|
api: withRepoContext("api", apiCommand),
|
|
73
75
|
setup: setupCommand,
|
|
76
|
+
stack: withLocalRepoContext(stackCommand),
|
|
74
77
|
};
|
|
75
78
|
export async function main(options = {}) {
|
|
76
79
|
await runAxiCli({
|
|
@@ -82,6 +85,25 @@ export async function main(options = {}) {
|
|
|
82
85
|
home: withRepoContext(undefined, homeCommand),
|
|
83
86
|
commands: COMMANDS,
|
|
84
87
|
getCommandHelp: (command) => COMMAND_HELP[command],
|
|
88
|
+
formatError: (error) => {
|
|
89
|
+
const axiError = error instanceof AxiError
|
|
90
|
+
? error
|
|
91
|
+
: new AxiError(error instanceof Error ? error.message : String(error), "UNKNOWN");
|
|
92
|
+
// Mirrors the SDK's defaultFormatError output byte-for-byte; the only
|
|
93
|
+
// difference this hook introduces is StackError's upstream exit code.
|
|
94
|
+
return {
|
|
95
|
+
output: `${encode({
|
|
96
|
+
error: axiError.message,
|
|
97
|
+
code: axiError.code,
|
|
98
|
+
...(axiError.suggestions.length > 0
|
|
99
|
+
? { help: axiError.suggestions }
|
|
100
|
+
: {}),
|
|
101
|
+
})}\n`,
|
|
102
|
+
exitCode: error instanceof StackError
|
|
103
|
+
? error.exitCode
|
|
104
|
+
: exitCodeForError(axiError),
|
|
105
|
+
};
|
|
106
|
+
},
|
|
85
107
|
resolveContext: ({ command, args }) => {
|
|
86
108
|
const { repoFlag, hostFlag } = parseRepoContextArgs(command, args);
|
|
87
109
|
// Explicit --hostname wins over the GH_HOST env var. Setting GH_HOST here
|
|
@@ -101,25 +123,18 @@ export async function main(options = {}) {
|
|
|
101
123
|
},
|
|
102
124
|
});
|
|
103
125
|
}
|
|
104
|
-
function readPackageVersion() {
|
|
105
|
-
const here = dirname(fileURLToPath(import.meta.url));
|
|
106
|
-
for (const candidate of [
|
|
107
|
-
join(here, "..", "package.json"),
|
|
108
|
-
join(here, "..", "..", "package.json"),
|
|
109
|
-
]) {
|
|
110
|
-
if (!existsSync(candidate)) {
|
|
111
|
-
continue;
|
|
112
|
-
}
|
|
113
|
-
const parsed = JSON.parse(readFileSync(candidate, "utf-8"));
|
|
114
|
-
if (typeof parsed.version === "string" && parsed.version.length > 0) {
|
|
115
|
-
return parsed.version;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
throw new Error("Could not determine gh-axi package version");
|
|
119
|
-
}
|
|
120
126
|
function withRepoContext(command, handler) {
|
|
121
127
|
return (args, ctx) => withSuggestionHost(ctx?.host, () => handler(parseRepoContextArgs(command, args).strippedArgs, repoContext(ctx)));
|
|
122
128
|
}
|
|
129
|
+
function withLocalRepoContext(handler) {
|
|
130
|
+
return (args, ctx) => {
|
|
131
|
+
const parsed = parseRepoContextArgs("stack", args);
|
|
132
|
+
if (parsed.repoFlag !== undefined || process.env["GH_REPO"]) {
|
|
133
|
+
throw new AxiError("stack commands operate on the repository in the current working directory and do not support -R, --repo, or GH_REPO", "VALIDATION_ERROR");
|
|
134
|
+
}
|
|
135
|
+
return withSuggestionHost(ctx?.host, () => handler(parsed.strippedArgs));
|
|
136
|
+
};
|
|
137
|
+
}
|
|
123
138
|
function repoContext(ctx) {
|
|
124
139
|
return ctx && "nwo" in ctx ? ctx : undefined;
|
|
125
140
|
}
|
package/dist/src/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { RepoContext } from '../context.js';
|
|
2
|
-
export declare const API_HELP = "usage: gh-axi api [<method>] <path>\ndescription: Make an authenticated GitHub API request. Defaults to GET if no method specified.\nmethods[6]:\n GET, POST, PUT, PATCH, DELETE, HEAD\nflags[
|
|
2
|
+
export declare const API_HELP = "usage: gh-axi api [<method>] <path>\ndescription: Make an authenticated GitHub API request. Defaults to GET if no method specified.\nmethods[6]:\n GET, POST, PUT, PATCH, DELETE, HEAD\nflags[6]:\n --field <key=value> (repeatable), --header <key:value> (repeatable), --paginate, --jq <expression>, --template <format>, --full (preserve complete field values and response bodies without truncation)\nexamples:\n gh-axi api /repos/{owner}/{repo}\n gh-axi api POST /repos/{owner}/{repo}/issues --field title=\"Bug report\"\n gh-axi api /repos/{owner}/{repo}/pulls --paginate\n gh-axi api /repos/{owner}/{repo}/issues/1 --jq '[.labels[].name]'";
|
|
3
3
|
export declare function apiCommand(args: string[], ctx?: RepoContext): Promise<string>;
|
package/dist/src/commands/api.js
CHANGED
|
@@ -6,8 +6,8 @@ export const API_HELP = `usage: gh-axi api [<method>] <path>
|
|
|
6
6
|
description: Make an authenticated GitHub API request. Defaults to GET if no method specified.
|
|
7
7
|
methods[6]:
|
|
8
8
|
GET, POST, PUT, PATCH, DELETE, HEAD
|
|
9
|
-
flags[
|
|
10
|
-
--field <key=value> (repeatable), --header <key:value> (repeatable), --paginate, --jq <expression>, --template <format
|
|
9
|
+
flags[6]:
|
|
10
|
+
--field <key=value> (repeatable), --header <key:value> (repeatable), --paginate, --jq <expression>, --template <format>, --full (preserve complete field values and response bodies without truncation)
|
|
11
11
|
examples:
|
|
12
12
|
gh-axi api /repos/{owner}/{repo}
|
|
13
13
|
gh-axi api POST /repos/{owner}/{repo}/issues --field title="Bug report"
|
|
@@ -18,9 +18,16 @@ const HTTP_METHODS = new Set(['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD']);
|
|
|
18
18
|
const REPEATABLE_VALUE_FLAGS = new Set(['--field', '--header']);
|
|
19
19
|
/** Value flags that gh accepts only one of, so a repeat is a caller mistake. */
|
|
20
20
|
const SINGLE_VALUE_FLAGS = new Set(['--jq', '--template']);
|
|
21
|
-
/** Flags that stand alone and must not consume the following argument. */
|
|
21
|
+
/** Flags that stand alone and must not consume the following argument, and are forwarded to gh. */
|
|
22
22
|
const BOOL_FLAGS = new Set(['--paginate']);
|
|
23
|
-
|
|
23
|
+
/** Flags that stand alone, are gh-axi-only, and must not be forwarded to gh. */
|
|
24
|
+
const LOCAL_BOOL_FLAGS = new Set(['--full']);
|
|
25
|
+
const SUPPORTED_FLAGS = [
|
|
26
|
+
...REPEATABLE_VALUE_FLAGS,
|
|
27
|
+
...SINGLE_VALUE_FLAGS,
|
|
28
|
+
...BOOL_FLAGS,
|
|
29
|
+
...LOCAL_BOOL_FLAGS,
|
|
30
|
+
];
|
|
24
31
|
/** The flag's name without any `=value` suffix, so errors never echo a value. */
|
|
25
32
|
function flagName(arg) {
|
|
26
33
|
const equals = arg.indexOf('=');
|
|
@@ -47,6 +54,7 @@ function parseArgs(args) {
|
|
|
47
54
|
fields: [],
|
|
48
55
|
headers: [],
|
|
49
56
|
paginate: false,
|
|
57
|
+
full: false,
|
|
50
58
|
};
|
|
51
59
|
for (let i = 0; i < args.length; i++) {
|
|
52
60
|
const arg = args[i];
|
|
@@ -61,6 +69,12 @@ function parseArgs(args) {
|
|
|
61
69
|
parsed.paginate = true;
|
|
62
70
|
continue;
|
|
63
71
|
}
|
|
72
|
+
if (LOCAL_BOOL_FLAGS.has(name)) {
|
|
73
|
+
if (name !== arg)
|
|
74
|
+
throw new AxiError(`${name} does not take a value`, 'VALIDATION_ERROR');
|
|
75
|
+
parsed.full = true;
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
64
78
|
if (!REPEATABLE_VALUE_FLAGS.has(name) && !SINGLE_VALUE_FLAGS.has(name)) {
|
|
65
79
|
throw new AxiError(`unknown flag ${name} for gh-axi api. Supported flags: ${SUPPORTED_FLAGS.join(', ')}`, 'VALIDATION_ERROR');
|
|
66
80
|
}
|
|
@@ -104,7 +118,7 @@ const STRING_VALUE_TRUNCATION_LIMIT = 2000;
|
|
|
104
118
|
export async function apiCommand(args, ctx) {
|
|
105
119
|
if (args[0] === '--help' || args.length === 0)
|
|
106
120
|
return API_HELP;
|
|
107
|
-
const { positionals, fields, headers, jq, template, paginate } = parseArgs(args);
|
|
121
|
+
const { positionals, fields, headers, jq, template, paginate, full } = parseArgs(args);
|
|
108
122
|
const pathRequired = new AxiError('API path is required: gh-axi api [<method>] <path>', 'VALIDATION_ERROR');
|
|
109
123
|
if (positionals.length === 0)
|
|
110
124
|
throw pathRequired;
|
|
@@ -136,16 +150,21 @@ export async function apiCommand(args, ctx) {
|
|
|
136
150
|
// for by name (`url`, `node_id`, ...). The length clamp still applies, so a
|
|
137
151
|
// selected field cannot blow the caller's context with an unbounded blob.
|
|
138
152
|
const callerShapedOutput = jq !== undefined || template !== undefined;
|
|
153
|
+
// --full is an explicit opt-in escape hatch: it keeps every field (like
|
|
154
|
+
// caller-shaped output) and additionally lifts the string-length clamp, so
|
|
155
|
+
// compact output stays the default everywhere --full is not given.
|
|
156
|
+
const stripNoisyKeys = !callerShapedOutput && !full;
|
|
157
|
+
const truncateValues = !full;
|
|
139
158
|
// Try to parse as JSON, strip noisy fields, encode to TOON; fall back to raw output
|
|
140
159
|
const raw = await ghExec(ghArgs, ctx);
|
|
141
160
|
try {
|
|
142
161
|
const data = JSON.parse(raw);
|
|
143
|
-
return encode(shapeOutput(data,
|
|
162
|
+
return encode(shapeOutput(data, stripNoisyKeys, truncateValues));
|
|
144
163
|
}
|
|
145
164
|
catch {
|
|
146
165
|
// Not JSON — wrap in TOON envelope with truncation metadata
|
|
147
166
|
const trimmed = raw.trim();
|
|
148
|
-
const truncated = trimmed.length > RAW_OUTPUT_TRUNCATION_LIMIT;
|
|
167
|
+
const truncated = !full && trimmed.length > RAW_OUTPUT_TRUNCATION_LIMIT;
|
|
149
168
|
const result = {
|
|
150
169
|
api_response: {
|
|
151
170
|
body: truncated ? trimmed.slice(0, RAW_OUTPUT_TRUNCATION_LIMIT) : trimmed,
|
|
@@ -210,20 +229,21 @@ function clampString(value) {
|
|
|
210
229
|
* With `stripNoisyKeys` the noisy keys are dropped and long strings are cleaned
|
|
211
230
|
* as well. Output the caller shaped with --jq/--template keeps both its keys and
|
|
212
231
|
* its content verbatim and is only length-bounded, since rewriting a field they
|
|
213
|
-
* selected by name is the same silent mutation as deleting it.
|
|
232
|
+
* selected by name is the same silent mutation as deleting it. With
|
|
233
|
+
* `truncateValues` false (--full), string values pass through untouched.
|
|
214
234
|
*/
|
|
215
|
-
function shapeOutput(obj, stripNoisyKeys, depth = 0) {
|
|
235
|
+
function shapeOutput(obj, stripNoisyKeys, truncateValues, depth = 0) {
|
|
216
236
|
if (depth > 8)
|
|
217
237
|
return obj;
|
|
218
238
|
if (Array.isArray(obj)) {
|
|
219
|
-
return obj.map((item) => shapeOutput(item, stripNoisyKeys, depth + 1));
|
|
239
|
+
return obj.map((item) => shapeOutput(item, stripNoisyKeys, truncateValues, depth + 1));
|
|
220
240
|
}
|
|
221
241
|
if (obj !== null && typeof obj === 'object') {
|
|
222
242
|
const record = obj;
|
|
223
243
|
const result = {};
|
|
224
244
|
for (const [key, value] of Object.entries(record)) {
|
|
225
245
|
if (!stripNoisyKeys) {
|
|
226
|
-
result[key] = shapeOutput(value, stripNoisyKeys, depth + 1);
|
|
246
|
+
result[key] = shapeOutput(value, stripNoisyKeys, truncateValues, depth + 1);
|
|
227
247
|
continue;
|
|
228
248
|
}
|
|
229
249
|
if (NOISY_KEYS.has(key))
|
|
@@ -240,12 +260,15 @@ function shapeOutput(obj, stripNoisyKeys, depth = 0) {
|
|
|
240
260
|
result[key] = collapseRepo(value);
|
|
241
261
|
continue;
|
|
242
262
|
}
|
|
243
|
-
result[key] = shapeOutput(value, stripNoisyKeys, depth + 1);
|
|
263
|
+
result[key] = shapeOutput(value, stripNoisyKeys, truncateValues, depth + 1);
|
|
244
264
|
}
|
|
245
265
|
return result;
|
|
246
266
|
}
|
|
247
|
-
if (typeof obj === 'string')
|
|
267
|
+
if (typeof obj === 'string') {
|
|
268
|
+
if (!truncateValues)
|
|
269
|
+
return obj;
|
|
248
270
|
return stripNoisyKeys ? clampString(obj) : truncateString(obj);
|
|
271
|
+
}
|
|
249
272
|
return obj;
|
|
250
273
|
}
|
|
251
274
|
//# sourceMappingURL=api.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/commands/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;;;oEAU4C,CAAC;AAErE,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AAEhF,qFAAqF;AACrF,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAEhE,gFAAgF;AAChF,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;AAE3D,
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/commands/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { RepoContext } from "../context.js";
|
|
2
|
-
export declare const ISSUE_HELP = "usage: gh-axi issue <subcommand> [flags]\nsubcommands[14]:\n list, view <number>, create, edit <number>, close <number>, reopen <number>, comment <number>, delete <number>, lock <number>, unlock <number>, pin <number>, unpin <number>, transfer <number>, subissue <add|remove|list>\nflags{list}:\n --state <open|closed|all>, --label <name> (repeatable), --assignee <login>, --author <login>, --milestone <name>, --sort <created|updated|comments>, --limit <n> (default 30), --fields <a,b,c>\nflags{view}:\n --comments, --full (show complete body without truncation)\nflags{create}:\n --title <text> (required), --body <text> or --body-file <path>, --assignee <login> (repeatable), --label <name> (repeatable), --milestone <name>, --project <name> (repeatable), --type <name>\nflags{edit}:\n --title, --body <text> or --body-file <path>, --add-label <name> (repeatable), --remove-label <name> (repeatable), --add-assignee <login> (repeatable), --remove-assignee <login> (repeatable), --milestone, --type <name>, --no-type\nflags{close}:\n --reason <completed|not_planned>, --comment <text>\nflags{comment}:\n --body <text> or --body-file <path> (required)\nflags{transfer}:\n --to-repo <owner/name> (required)\nsubissue:\n add <parent> <child> [<child> ...], remove <parent> <child>, list <parent>\nexamples:\n gh-axi issue list --state closed --label bug\n gh-axi issue view 42 --comments\n gh-axi issue create --title \"Fix login\" --body \"Steps to reproduce...\"\n gh-axi issue comment 42 --body-file comment.md\n gh-axi issue close 42 --reason completed\n gh-axi issue transfer 42 -R source/repo --to-repo dest/repo\n gh-axi issue subissue add 16 20 101 125\n gh-axi issue subissue list 16";
|
|
2
|
+
export declare const ISSUE_HELP = "usage: gh-axi issue <subcommand> [flags]\nsubcommands[14]:\n list, view <number>, create, edit <number>, close <number>, reopen <number>, comment <number>, delete <number>, lock <number>, unlock <number>, pin <number>, unpin <number>, transfer <number>, subissue <add|remove|list>\nflags{list}:\n --state <open|closed|all>, --label <name> (repeatable), --assignee <login>, --author <login>, --milestone <name>, --sort <created|updated|comments>, --limit <n> (default 30), --fields <a,b,c>\nflags{view}:\n --comments, --full (show the complete issue body and comment bodies without truncation)\nflags{create}:\n --title <text> (required), --body <text> or --body-file <path>, --assignee <login> (repeatable), --label <name> (repeatable), --milestone <name>, --project <name> (repeatable), --type <name>\nflags{edit}:\n --title, --body <text> or --body-file <path>, --add-label <name> (repeatable), --remove-label <name> (repeatable), --add-assignee <login> (repeatable), --remove-assignee <login> (repeatable), --milestone, --type <name>, --no-type\nflags{close}:\n --reason <completed|not_planned>, --comment <text>\nflags{comment}:\n --body <text> or --body-file <path> (required)\nflags{transfer}:\n --to-repo <owner/name> (required)\nsubissue:\n add <parent> <child> [<child> ...], remove <parent> <child>, list <parent>\nexamples:\n gh-axi issue list --state closed --label bug\n gh-axi issue view 42 --comments\n gh-axi issue create --title \"Fix login\" --body \"Steps to reproduce...\"\n gh-axi issue comment 42 --body-file comment.md\n gh-axi issue close 42 --reason completed\n gh-axi issue transfer 42 -R source/repo --to-repo dest/repo\n gh-axi issue subissue add 16 20 101 125\n gh-axi issue subissue list 16";
|
|
3
3
|
export declare const SUBISSUE_HELP = "usage: gh-axi issue subissue <add|remove|list> <parent> [child...]\nsubcommands[3]:\n add <parent> <child> [<child> ...], remove <parent> <child>, list <parent>\nexamples:\n gh-axi issue subissue add 16 20 101 125\n gh-axi issue subissue remove 16 101\n gh-axi issue subissue list 16";
|
|
4
4
|
export declare function issueCommand(args: string[], ctx?: RepoContext): Promise<string>;
|