gh-axi 0.1.5 → 0.1.8

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 CHANGED
@@ -2,8 +2,11 @@
2
2
 
3
3
  <p align="center">
4
4
  <a href="https://www.npmjs.com/package/gh-axi"><img alt="npm" src="https://img.shields.io/npm/v/gh-axi?style=flat-square" /></a>
5
+ <a href="https://github.com/kunchenguid/gh-axi/actions/workflows/ci.yml"><img alt="CI" src="https://img.shields.io/github/actions/workflow/status/kunchenguid/gh-axi/ci.yml?style=flat-square&label=ci" /></a>
6
+ <a href="https://github.com/kunchenguid/gh-axi/actions/workflows/release-please.yml"><img alt="Release" src="https://img.shields.io/github/actions/workflow/status/kunchenguid/gh-axi/release-please.yml?style=flat-square&label=release" /></a>
7
+ <a href="https://img.shields.io/badge/platform-macOS%20%7C%20Linux%20%7C%20Windows-blue?style=flat-square"><img alt="Platform" src="https://img.shields.io/badge/platform-macOS%20%7C%20Linux%20%7C%20Windows-blue?style=flat-square" /></a>
5
8
  <a href="https://x.com/kunchenguid"><img alt="X" src="https://img.shields.io/badge/X-@kunchenguid-black?style=flat-square" /></a>
6
- <a href="https://discord.gg/BW4aJuQhTf"><img alt="Discord" src="https://img.shields.io/discord/1439901831038763092?style=flat-square&label=discord" /></a>
9
+ <a href="https://discord.gg/Wsy2NpnZDu"><img alt="Discord" src="https://img.shields.io/discord/1439901831038763092?style=flat-square&label=discord" /></a>
7
10
  </p>
8
11
 
9
12
  GitHub CLI for agents — designed with [AXI](https://github.com/kunchenguid/axi) (Agent eXperience Interface).
@@ -19,6 +22,10 @@ npm install -g gh-axi
19
22
 
20
23
  Requires Node 20+ and [`gh`](https://cli.github.com/) authenticated via `gh auth login`.
21
24
 
25
+ Running `gh-axi` also installs or repairs Claude Code and Codex `SessionStart`
26
+ hooks. Those hooks now invoke `gh-axi` directly; legacy `--session-start`
27
+ invocations are still accepted as a no-op for backward compatibility.
28
+
22
29
  ## Usage
23
30
 
24
31
  ```bash
package/dist/src/cli.js CHANGED
@@ -1,17 +1,17 @@
1
- import { resolveRepo } from './context.js';
2
- import { AxiError, exitCodeForError } from './errors.js';
3
- import { renderError } from './toon.js';
4
- import { ensureHooks } from './hooks.js';
5
- import { homeCommand, sessionStartCommand } from './commands/home.js';
6
- import { issueCommand, ISSUE_HELP } from './commands/issue.js';
7
- import { prCommand, PR_HELP } from './commands/pr.js';
8
- import { runCommand, RUN_HELP } from './commands/run.js';
9
- import { workflowCommand, WORKFLOW_HELP } from './commands/workflow.js';
10
- import { releaseCommand, RELEASE_HELP } from './commands/release.js';
11
- import { repoCommand, REPO_HELP } from './commands/repo.js';
12
- import { labelCommand, LABEL_HELP } from './commands/label.js';
13
- import { searchCommand, SEARCH_HELP } from './commands/search.js';
14
- import { apiCommand, API_HELP } from './commands/api.js';
1
+ import { resolveRepo } from "./context.js";
2
+ import { AxiError, exitCodeForError } from "./errors.js";
3
+ import { renderError } from "./toon.js";
4
+ import { ensureHooks } from "./hooks.js";
5
+ import { homeCommand } from "./commands/home.js";
6
+ import { issueCommand, ISSUE_HELP } from "./commands/issue.js";
7
+ import { prCommand, PR_HELP } from "./commands/pr.js";
8
+ import { runCommand, RUN_HELP } from "./commands/run.js";
9
+ import { workflowCommand, WORKFLOW_HELP } from "./commands/workflow.js";
10
+ import { releaseCommand, RELEASE_HELP } from "./commands/release.js";
11
+ import { repoCommand, REPO_HELP } from "./commands/repo.js";
12
+ import { labelCommand, LABEL_HELP } from "./commands/label.js";
13
+ import { searchCommand, SEARCH_HELP } from "./commands/search.js";
14
+ import { apiCommand, API_HELP } from "./commands/api.js";
15
15
  export const TOP_HELP = `usage: gh-axi [command] [flags]
16
16
  commands[10]:
17
17
  (none)=dashboard, issue, pr, run, workflow, release, repo, label, search, api
@@ -52,21 +52,19 @@ export async function main(argv) {
52
52
  let repoFlag;
53
53
  // Extract --repo / -R
54
54
  for (let i = 0; i < args.length; i++) {
55
- if ((args[i] === '--repo' || args[i] === '-R') && i + 1 < args.length) {
55
+ if ((args[i] === "--repo" || args[i] === "-R") && i + 1 < args.length) {
56
56
  repoFlag = args[i + 1];
57
57
  args.splice(i, 2);
58
58
  i--;
59
59
  }
60
60
  }
61
- // Extract --session-start flag
62
- let sessionStart = false;
63
- const sessionIdx = args.indexOf('--session-start');
61
+ // Strip deprecated --session-start (kept as backward-compatible no-op)
62
+ const sessionIdx = args.indexOf("--session-start");
64
63
  if (sessionIdx !== -1) {
65
- sessionStart = true;
66
64
  args.splice(sessionIdx, 1);
67
65
  }
68
66
  // Top-level --help
69
- if (args.includes('--help') && args.length === 1) {
67
+ if (args.includes("--help") && args.length === 1) {
70
68
  process.stdout.write(TOP_HELP);
71
69
  return;
72
70
  }
@@ -74,25 +72,14 @@ export async function main(argv) {
74
72
  const command = args[0];
75
73
  if (!command) {
76
74
  // No command = home dashboard
77
- if (args.includes('--help')) {
75
+ if (args.includes("--help")) {
78
76
  process.stdout.write(TOP_HELP);
79
77
  return;
80
78
  }
81
- if (sessionStart) {
82
- const ctx = resolveRepo(repoFlag);
83
- try {
84
- const output = await sessionStartCommand(ctx);
85
- process.stdout.write(output + '\n');
86
- }
87
- catch (err) {
88
- writeError(err);
89
- }
90
- return;
91
- }
92
79
  const ctx = resolveRepo(repoFlag);
93
80
  try {
94
81
  const output = await homeCommand(args.slice(1), ctx);
95
- process.stdout.write(output + '\n');
82
+ process.stdout.write(output + "\n");
96
83
  }
97
84
  catch (err) {
98
85
  writeError(err);
@@ -100,7 +87,7 @@ export async function main(argv) {
100
87
  return;
101
88
  }
102
89
  // Command-level --help
103
- if (args.includes('--help')) {
90
+ if (args.includes("--help")) {
104
91
  const help = COMMAND_HELP[command];
105
92
  if (help) {
106
93
  process.stdout.write(help);
@@ -109,16 +96,16 @@ export async function main(argv) {
109
96
  }
110
97
  const handler = COMMANDS[command];
111
98
  if (!handler) {
112
- process.stdout.write(renderError(`Unknown command: ${command}`, 'VALIDATION_ERROR', [
113
- 'Run `gh-axi --help` to see available commands',
114
- ]) + '\n');
99
+ process.stdout.write(renderError(`Unknown command: ${command}`, "VALIDATION_ERROR", [
100
+ "Run `gh-axi --help` to see available commands",
101
+ ]) + "\n");
115
102
  process.exitCode = 2;
116
103
  return;
117
104
  }
118
105
  const ctx = resolveRepo(repoFlag);
119
106
  try {
120
107
  const output = await handler(args.slice(1), ctx);
121
- process.stdout.write(output + '\n');
108
+ process.stdout.write(output + "\n");
122
109
  }
123
110
  catch (err) {
124
111
  writeError(err);
@@ -126,11 +113,11 @@ export async function main(argv) {
126
113
  }
127
114
  function writeError(err) {
128
115
  if (err instanceof AxiError) {
129
- process.stdout.write(renderError(err.message, err.code, err.suggestions) + '\n');
116
+ process.stdout.write(renderError(err.message, err.code, err.suggestions) + "\n");
130
117
  }
131
118
  else {
132
119
  const message = err instanceof Error ? err.message : String(err);
133
- process.stdout.write(renderError(message, 'UNKNOWN') + '\n');
120
+ process.stdout.write(renderError(message, "UNKNOWN") + "\n");
134
121
  }
135
122
  process.exitCode = exitCodeForError(err);
136
123
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,3 @@
1
1
  import type { RepoContext } from "../context.js";
2
2
  export declare const HOME_HELP = "";
3
3
  export declare function homeCommand(_args: string[], ctx?: RepoContext): Promise<string>;
4
- /**
5
- * Compact session-start dashboard — minimal repo context for agent session init.
6
- * Skips bin/description, help suggestions, and verbose count lines.
7
- * Uses compact schemas with fewer fields per entity.
8
- */
9
- export declare function sessionStartCommand(ctx?: RepoContext): Promise<string>;
@@ -20,9 +20,6 @@ const prSchema = [
20
20
  REVIEW_REQUIRED: "required",
21
21
  }, "none", "review"),
22
22
  ];
23
- /* Compact schemas for session-start — fewer fields for minimal token usage */
24
- const compactIssueSchema = [field("number"), field("title")];
25
- const compactPrSchema = [field("number"), field("title")];
26
23
  export async function homeCommand(_args, ctx) {
27
24
  // Run queries in parallel
28
25
  const [issues, prs] = await Promise.all([
@@ -66,24 +63,4 @@ export async function homeCommand(_args, ctx) {
66
63
  blocks.push(renderHelp([...hints, ...suggestions]));
67
64
  return renderOutput(blocks);
68
65
  }
69
- /**
70
- * Compact session-start dashboard — minimal repo context for agent session init.
71
- * Skips bin/description, help suggestions, and verbose count lines.
72
- * Uses compact schemas with fewer fields per entity.
73
- */
74
- export async function sessionStartCommand(ctx) {
75
- const [issues, prs] = await Promise.all([
76
- ghJson(["issue", "list", "--json", "number,title", "--limit", "3"], ctx).catch(() => []),
77
- ghJson(["pr", "list", "--json", "number,title", "--limit", "3"], ctx).catch(() => []),
78
- ]);
79
- const blocks = [];
80
- if (ctx) {
81
- blocks.push(encode({ repo: ctx.nwo }));
82
- }
83
- blocks.push(issues.length
84
- ? renderList("issues", issues, compactIssueSchema)
85
- : "issues: 0 open");
86
- blocks.push(prs.length ? renderList("prs", prs, compactPrSchema) : "prs: 0 open");
87
- return renderOutput(blocks);
88
- }
89
66
  //# sourceMappingURL=home.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"home.js","sourceRoot":"","sources":["../../../src/commands/home.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"home.js","sourceRoot":"","sources":["../../../src/commands/home.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export type ErrorCode = 'REPO_NOT_FOUND' | 'NOT_FOUND' | 'AUTH_REQUIRED' | 'FORBIDDEN' | 'VALIDATION_ERROR' | 'GH_NOT_INSTALLED' | 'UNKNOWN';
1
+ export type ErrorCode = "REPO_NOT_FOUND" | "NOT_FOUND" | "AUTH_REQUIRED" | "FORBIDDEN" | "VALIDATION_ERROR" | "GH_NOT_INSTALLED" | "UNKNOWN";
2
2
  export declare class AxiError extends Error {
3
3
  readonly code: ErrorCode;
4
4
  readonly suggestions: string[];
@@ -5,66 +5,71 @@ export class AxiError extends Error {
5
5
  super(message);
6
6
  this.code = code;
7
7
  this.suggestions = suggestions;
8
- this.name = 'AxiError';
8
+ this.name = "AxiError";
9
9
  }
10
10
  }
11
11
  const patterns = [
12
12
  {
13
13
  pattern: /Could not resolve to a Repository with the name '([^']+)'/,
14
- code: 'REPO_NOT_FOUND',
14
+ code: "REPO_NOT_FOUND",
15
15
  message: (m) => `Repository "${m[1]}" not found`,
16
- suggestions: () => ['Run `gh-axi repo list` to see your repositories'],
16
+ suggestions: () => ["Run `gh-axi repo list` to see your repositories"],
17
17
  },
18
18
  {
19
19
  pattern: /Could not resolve to an? .+? with the number of (\d+)/,
20
- code: 'NOT_FOUND',
20
+ code: "NOT_FOUND",
21
21
  message: (m) => `Item #${m[1]} does not exist in this repository`,
22
22
  suggestions: () => [],
23
23
  },
24
24
  {
25
25
  pattern: /issue (\d+) not found/i,
26
- code: 'NOT_FOUND',
26
+ code: "NOT_FOUND",
27
27
  message: (m) => `Issue #${m[1]} does not exist`,
28
28
  suggestions: () => [],
29
29
  },
30
30
  {
31
31
  pattern: /pull request (\d+) not found/i,
32
- code: 'NOT_FOUND',
32
+ code: "NOT_FOUND",
33
33
  message: (m) => `Pull request #${m[1]} does not exist`,
34
34
  suggestions: () => [],
35
35
  },
36
36
  {
37
37
  pattern: /release with tag "([^"]+)" not found/i,
38
- code: 'NOT_FOUND',
38
+ code: "NOT_FOUND",
39
39
  message: (m) => `Release "${m[1]}" not found`,
40
- suggestions: () => [`Run \`gh-axi release list\` to see available releases`],
40
+ suggestions: () => [
41
+ `Run \`gh-axi release list\` to see available releases`,
42
+ ],
41
43
  },
42
44
  {
43
45
  pattern: /run (\d+) not found/i,
44
- code: 'NOT_FOUND',
46
+ code: "NOT_FOUND",
45
47
  message: (m) => `Run ${m[1]} not found`,
46
48
  suggestions: () => [`Run \`gh-axi run list\` to see recent runs`],
47
49
  },
48
50
  {
49
51
  pattern: /gh auth login/,
50
- code: 'AUTH_REQUIRED',
51
- message: () => 'GitHub auth required — run `gh auth login` first',
52
+ code: "AUTH_REQUIRED",
53
+ message: () => "GitHub auth required — run `gh auth login` first",
52
54
  },
53
55
  {
54
56
  pattern: /HTTP 403/,
55
- code: 'FORBIDDEN',
56
- message: () => 'Insufficient permissions for this action',
57
+ code: "FORBIDDEN",
58
+ message: () => "Insufficient permissions for this action",
57
59
  },
58
60
  {
59
61
  pattern: /HTTP 422/,
60
- code: 'VALIDATION_ERROR',
62
+ code: "VALIDATION_ERROR",
61
63
  message: (_m, stderr) => {
62
64
  // Try to extract a meaningful message from the 422 body
63
65
  const msgMatch = stderr.match(/"message"\s*:\s*"([^"]+)"/);
64
- return msgMatch ? msgMatch[1] : 'Validation error';
66
+ return msgMatch ? msgMatch[1] : "Validation error";
65
67
  },
66
68
  },
67
69
  ];
70
+ function firstErrorLine(stderr) {
71
+ return stderr.trim().split("\n")[0] ?? "";
72
+ }
68
73
  export function mapGhError(stderr, exitCode) {
69
74
  for (const { pattern, code, message, suggestions } of patterns) {
70
75
  const match = stderr.match(pattern);
@@ -73,19 +78,19 @@ export function mapGhError(stderr, exitCode) {
73
78
  }
74
79
  }
75
80
  // Generic not-found for any 404-like message
76
- if (stderr.includes('not found') || stderr.includes('Not Found')) {
77
- return new AxiError(stderr.trim().split('\n')[0], 'NOT_FOUND');
81
+ if (/not found/i.test(stderr)) {
82
+ return new AxiError(firstErrorLine(stderr), "NOT_FOUND");
78
83
  }
79
- return new AxiError(stderr.trim().split('\n')[0] || `gh exited with code ${exitCode}`, 'UNKNOWN');
84
+ return new AxiError(firstErrorLine(stderr) || `gh exited with code ${exitCode}`, "UNKNOWN");
80
85
  }
81
86
  /** Map an error to the appropriate process exit code: 2 for usage errors, 1 for everything else. */
82
87
  export function exitCodeForError(err) {
83
- if (err instanceof AxiError && err.code === 'VALIDATION_ERROR') {
88
+ if (err instanceof AxiError && err.code === "VALIDATION_ERROR") {
84
89
  return 2;
85
90
  }
86
91
  return 1;
87
92
  }
88
93
  export function ghNotInstalledError() {
89
- return new AxiError('gh CLI is not installed — see https://cli.github.com', 'GH_NOT_INSTALLED');
94
+ return new AxiError("gh CLI is not installed — see https://cli.github.com", "GH_NOT_INSTALLED");
90
95
  }
91
96
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,QAAS,SAAQ,KAAK;IAGf;IACA;IAHlB,YACE,OAAe,EACC,IAAe,EACf,cAAwB,EAAE;QAE1C,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAW;QACf,gBAAW,GAAX,WAAW,CAAe;QAG1C,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AASD,MAAM,QAAQ,GAAmB;IAC/B;QACE,OAAO,EAAE,2DAA2D;QACpE,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,aAAa;QAChD,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,iDAAiD,CAAC;KACvE;IACD;QACE,OAAO,EAAE,uDAAuD;QAChE,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,oCAAoC;QACjE,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE;KACtB;IACD;QACE,OAAO,EAAE,wBAAwB;QACjC,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,iBAAiB;QAC/C,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE;KACtB;IACD;QACE,OAAO,EAAE,+BAA+B;QACxC,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,iBAAiB;QACtD,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE;KACtB;IACD;QACE,OAAO,EAAE,uCAAuC;QAChD,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,aAAa;QAC7C,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,uDAAuD,CAAC;KAC7E;IACD;QACE,OAAO,EAAE,sBAAsB;QAC/B,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY;QACvC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,4CAA4C,CAAC;KAClE;IACD;QACE,OAAO,EAAE,eAAe;QACxB,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,GAAG,EAAE,CAAC,kDAAkD;KAClE;IACD;QACE,OAAO,EAAE,UAAU;QACnB,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,GAAG,EAAE,CAAC,0CAA0C;KAC1D;IACD;QACE,OAAO,EAAE,UAAU;QACnB,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE;YACtB,wDAAwD;YACxD,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC3D,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC;QACrD,CAAC;KACF;CACF,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,MAAc,EAAE,QAAgB;IACzD,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IAED,6CAA6C;IAC7C,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACjE,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,uBAAuB,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC;AACpG,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,IAAI,GAAG,YAAY,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QAC/D,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,QAAQ,CACjB,sDAAsD,EACtD,kBAAkB,CACnB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
package/dist/src/hooks.js CHANGED
@@ -3,51 +3,62 @@
3
3
  * Ensures ambient context hooks are installed idempotently.
4
4
  * Failures are non-fatal — errors log to stderr and never throw.
5
5
  */
6
- import { existsSync, readFileSync, writeFileSync } from 'node:fs';
7
- import { homedir } from 'node:os';
8
- import { join } from 'node:path';
6
+ import { existsSync, readFileSync, writeFileSync } from "node:fs";
7
+ import { homedir } from "node:os";
8
+ import { join } from "node:path";
9
9
  /** Marker used to identify our hook entries in config files. */
10
- const HOOK_ID = 'gh-axi';
10
+ const HOOK_ID = "gh-axi";
11
11
  function getExePath() {
12
12
  return process.argv[1];
13
13
  }
14
+ function ensureHookCollection(config) {
15
+ if (!config.hooks) {
16
+ config.hooks = {};
17
+ }
18
+ return config.hooks;
19
+ }
20
+ function ensureSessionStartBlocks(hooks) {
21
+ if (!Array.isArray(hooks.SessionStart)) {
22
+ hooks.SessionStart = [];
23
+ }
24
+ return hooks.SessionStart;
25
+ }
26
+ function isManagedHook(hook) {
27
+ return typeof hook?.command === "string" && hook.command.includes(HOOK_ID);
28
+ }
29
+ function createMatcherBlock(command) {
30
+ return {
31
+ matcher: "",
32
+ hooks: [
33
+ {
34
+ type: "command",
35
+ command,
36
+ timeout: 10,
37
+ },
38
+ ],
39
+ };
40
+ }
14
41
  // ---------------------------------------------------------------------------
15
42
  // Claude Code hooks: ~/.claude/settings.json
16
43
  // ---------------------------------------------------------------------------
17
44
  function ensureClaudeHook(exePath) {
18
- const claudeDir = join(homedir(), '.claude');
45
+ const claudeDir = join(homedir(), ".claude");
19
46
  if (!existsSync(claudeDir))
20
47
  return;
21
- const settingsPath = join(claudeDir, 'settings.json');
48
+ const settingsPath = join(claudeDir, "settings.json");
22
49
  let settings = {};
23
50
  if (existsSync(settingsPath)) {
24
- const raw = readFileSync(settingsPath, 'utf-8');
51
+ const raw = readFileSync(settingsPath, "utf-8");
25
52
  settings = JSON.parse(raw);
26
53
  }
27
- if (!settings.hooks) {
28
- settings.hooks = {};
29
- }
30
- if (!Array.isArray(settings.hooks.SessionStart)) {
31
- settings.hooks.SessionStart = [];
32
- }
33
- const matcherBlocks = settings.hooks.SessionStart;
34
- const hookCommand = `${exePath} --session-start`;
54
+ const matcherBlocks = ensureSessionStartBlocks(ensureHookCollection(settings));
55
+ const hookCommand = exePath;
35
56
  // Find existing gh-axi matcher block (by looking for gh-axi in any nested hook command)
36
- const existingIdx = matcherBlocks.findIndex((block) => Array.isArray(block.hooks) &&
37
- block.hooks.some((h) => typeof h.command === 'string' && h.command.includes(HOOK_ID)));
38
- const matcherBlock = {
39
- matcher: '',
40
- hooks: [
41
- {
42
- type: 'command',
43
- command: hookCommand,
44
- timeout: 10,
45
- },
46
- ],
47
- };
57
+ const existingIdx = matcherBlocks.findIndex((block) => Array.isArray(block.hooks) && block.hooks.some(isManagedHook));
58
+ const matcherBlock = createMatcherBlock(hookCommand);
48
59
  if (existingIdx >= 0) {
49
60
  // Check if command is already correct
50
- const existingHook = matcherBlocks[existingIdx].hooks?.find((h) => typeof h.command === 'string' && h.command.includes(HOOK_ID));
61
+ const existingHook = matcherBlocks[existingIdx].hooks?.find(isManagedHook);
51
62
  if (existingHook?.command === hookCommand) {
52
63
  return; // no-op
53
64
  }
@@ -57,42 +68,77 @@ function ensureClaudeHook(exePath) {
57
68
  else {
58
69
  matcherBlocks.push(matcherBlock);
59
70
  }
60
- writeFileSync(settingsPath, JSON.stringify(settings, null, 2), 'utf-8');
71
+ writeFileSync(settingsPath, JSON.stringify(settings, null, 2), "utf-8");
61
72
  }
62
73
  // ---------------------------------------------------------------------------
63
74
  // Codex hooks: ~/.codex/hooks.json
75
+ // Uses `hooks.SessionStart` matcher blocks and migrates legacy
76
+ // `hooks.session_start` entries when present.
64
77
  // ---------------------------------------------------------------------------
65
78
  function ensureCodexHook(exePath) {
66
- const codexDir = join(homedir(), '.codex');
79
+ const codexDir = join(homedir(), ".codex");
67
80
  if (!existsSync(codexDir))
68
81
  return;
69
- const hooksPath = join(codexDir, 'hooks.json');
82
+ const hooksPath = join(codexDir, "hooks.json");
70
83
  let config = {};
71
84
  if (existsSync(hooksPath)) {
72
- const raw = readFileSync(hooksPath, 'utf-8');
85
+ const raw = readFileSync(hooksPath, "utf-8");
73
86
  config = JSON.parse(raw);
74
87
  }
75
- if (!config.hooks) {
76
- config.hooks = {};
77
- }
78
- if (!Array.isArray(config.hooks.session_start)) {
79
- config.hooks.session_start = [];
88
+ const hooks = ensureHookCollection(config);
89
+ let changed = false;
90
+ const hookCommand = exePath;
91
+ // Migrate our legacy lowercase key if present.
92
+ if (Array.isArray(hooks.session_start)) {
93
+ const filteredLegacyHooks = hooks.session_start.filter((hook) => !isManagedHook(hook));
94
+ if (filteredLegacyHooks.length !== hooks.session_start.length) {
95
+ changed = true;
96
+ }
97
+ if (filteredLegacyHooks.length > 0) {
98
+ hooks.session_start = filteredLegacyHooks;
99
+ }
100
+ else {
101
+ delete hooks.session_start;
102
+ }
80
103
  }
81
- const hooks = config.hooks.session_start;
82
- const existingIdx = hooks.findIndex((h) => typeof h.command === 'string' && h.command.includes(HOOK_ID));
83
- const hookEntry = {
84
- command: exePath,
85
- };
104
+ const matcherBlocks = ensureSessionStartBlocks(hooks);
105
+ const existingIdx = matcherBlocks.findIndex((block) => Array.isArray(block.hooks) && block.hooks.some(isManagedHook));
106
+ const matcherBlock = createMatcherBlock(hookCommand);
86
107
  if (existingIdx >= 0) {
87
- if (hooks[existingIdx].command === exePath) {
88
- return; // no-op
108
+ const existingBlock = matcherBlocks[existingIdx];
109
+ const existingHook = existingBlock.hooks?.find(isManagedHook);
110
+ const matcher = existingBlock?.matcher;
111
+ const matcherIsMatchAll = matcher === "" || matcher === "*" || matcher == null;
112
+ if (existingHook?.command === hookCommand &&
113
+ matcherIsMatchAll &&
114
+ existingHook?.type === "command") {
115
+ if (!changed)
116
+ return; // no-op
117
+ }
118
+ else if (existingHook) {
119
+ existingHook.command = hookCommand;
120
+ existingHook.type = "command";
121
+ changed = true;
122
+ }
123
+ else {
124
+ if (!Array.isArray(existingBlock.hooks)) {
125
+ existingBlock.hooks = [];
126
+ }
127
+ existingBlock.hooks.push({
128
+ type: "command",
129
+ command: hookCommand,
130
+ timeout: 10,
131
+ });
132
+ changed = true;
89
133
  }
90
- hooks[existingIdx] = hookEntry;
91
134
  }
92
135
  else {
93
- hooks.push(hookEntry);
136
+ matcherBlocks.push(matcherBlock);
137
+ changed = true;
94
138
  }
95
- writeFileSync(hooksPath, JSON.stringify(config, null, 2), 'utf-8');
139
+ if (!changed)
140
+ return;
141
+ writeFileSync(hooksPath, JSON.stringify(config, null, 2), "utf-8");
96
142
  }
97
143
  // ---------------------------------------------------------------------------
98
144
  // Public API
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/hooks.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gh-axi",
3
- "version": "0.1.5",
3
+ "version": "0.1.8",
4
4
  "description": "AXI-compliant gh CLI wrapper — token-efficient TOON output, contextual suggestions, idempotent mutations",
5
5
  "type": "module",
6
6
  "repository": {
@@ -41,9 +41,14 @@
41
41
  "@toon-format/toon": "^2.1.0"
42
42
  },
43
43
  "devDependencies": {
44
+ "@eslint/js": "^10.0.1",
44
45
  "@types/node": "^22.0.0",
46
+ "eslint": "^10.1.0",
47
+ "globals": "^17.4.0",
48
+ "prettier": "^3.8.1",
45
49
  "tsx": "^4.0.0",
46
50
  "typescript": "^5.7.0",
51
+ "typescript-eslint": "^8.58.0",
47
52
  "vitest": "^3.0.0"
48
53
  }
49
54
  }