naiad-cli 0.2.34 → 0.2.36

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.
@@ -70,6 +70,9 @@ export async function execCommand(config, prompt, opts = {}) {
70
70
  if (process.env.NAIAD_SEER_MODEL) {
71
71
  piEnv.NAIAD_SEER_MODEL = process.env.NAIAD_SEER_MODEL;
72
72
  }
73
+ if (opts.source) {
74
+ piEnv.NAIAD_SOURCE = opts.source;
75
+ }
73
76
  const pi = launchPi({
74
77
  model: ctx.model,
75
78
  models: ctx.allModels.map((m) => m.id),
@@ -1 +1 @@
1
- {"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/commands/exec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/commands/exec.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@ const BLOCKED_ENV_VARS = [
14
14
  "ACTIONS_ID_TOKEN_REQUEST_URL",
15
15
  "ACTIONS_RUNTIME_TOKEN",
16
16
  "GITHUB_TOKEN",
17
+ "GH_TOKEN",
17
18
  "ANTHROPIC_API_KEY",
18
19
  "ANTHROPIC_OAUTH_TOKEN",
19
20
  "OPENAI_API_KEY",
@@ -1 +1 @@
1
- {"version":3,"file":"launcher.js","sourceRoot":"","sources":["../../src/pi/launcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAqB,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,sEAAsE;AACtE,4EAA4E;AAC5E,4EAA4E;AAC5E,kFAAkF;AAClF,MAAM,gBAAgB,GAAG;IACvB,eAAe;IACf,kBAAkB;IAClB,gCAAgC;IAChC,8BAA8B;IAC9B,uBAAuB;IACvB,cAAc;IACd,mBAAmB;IACnB,uBAAuB;IACvB,gBAAgB;IAChB,sBAAsB;IACtB,uBAAuB;IACvB,4BAA4B;IAC5B,0BAA0B;IAC1B,kCAAkC;IAClC,gBAAgB;IAChB,cAAc;IACd,kBAAkB;IAClB,aAAa;IACb,oBAAoB;IACpB,oBAAoB;IACpB,aAAa;IACb,iBAAiB;IACjB,iBAAiB;IACjB,cAAc;IACd,0BAA0B;CAC3B,CAAC;AAEF,SAAS,UAAU,CAAC,SAAiC;IACnD,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC/B,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACnC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IACD,yFAAyF;IACzF,OAAO,GAAG,CAAC,4BAA4B,CAAC;IACxC,OAAO,EAAE,GAAG,GAAG,EAAE,GAAG,SAAS,EAAE,qBAAqB,EAAE,GAAG,EAAE,CAAC;AAC9D,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,KAAa;IAClC,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;IAClD,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACnC,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAChD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAuBD,MAAM,UAAU,QAAQ,CAAC,OAAkB;IACzC,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAE9B,6DAA6D;IAC7D,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC/C,MAAM,cAAc,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1C,OAAO,cAAc,CAAC,gBAAgB,CAAC;IAEvC,IAAI,SAAS,EAAE,CAAC;QACd,cAAc,CAAC,eAAe,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IAC5D,CAAC;IAED,cAAc,CAAC,YAAY,GAAG,MAAM,CAAC;IACrC,cAAc,CAAC,oBAAoB,GAAG,OAAO,CAAC,aAAa,CAAC;IAE5D,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC9B,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE;QACpC,GAAG,EAAE,UAAU,CAAC,cAAc,CAAC;QAC/B,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;KAChC,CAAC,CAAC;IAEH,IAAI,YAAY,GAAyC,IAAI,CAAC;IAC9D,IAAI,UAAU,GAAG,EAAE,CAAC;IAEpB,SAAS,CAAC,MAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;QAC5C,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrC,UAAU,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAAE,SAAS;YAC3B,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAe,CAAC;gBAC7C,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC;YAAC,MAAM,CAAC;gBACP,kCAAkC;gBAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,MAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;QAC5C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,SAAS;QAClB,UAAU,CAAC,MAAc;YACvB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAChE,SAAS,CAAC,KAAM,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;QACrC,CAAC;QACD,KAAK,CAAC,QAAQ;YACZ,gDAAgD;YAChD,SAAS,CAAC,KAAM,CAAC,GAAG,EAAE,CAAC;YACvB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAClC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC9B,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC1B,OAAO,EAAE,CAAC;gBACZ,CAAC,EAAE,IAAI,CAAC,CAAC;gBACT,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;oBACxB,YAAY,CAAC,OAAO,CAAC,CAAC;oBACtB,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC,CAAC;gBACH,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,CAAC,OAAoC;YAC1C,YAAY,GAAG,OAAO,CAAC;QACzB,CAAC;KACF,CAAC;AACJ,CAAC;AAWD,MAAM,UAAU,mBAAmB,CAAC,OAA6B;IAC/D,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAE9B,6DAA6D;IAC7D,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC/C,MAAM,cAAc,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1C,OAAO,cAAc,CAAC,gBAAgB,CAAC;IAEvC,IAAI,SAAS,EAAE,CAAC;QACd,cAAc,CAAC,eAAe,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IAC5D,CAAC;IAED,cAAc,CAAC,YAAY,GAAG,MAAM,CAAC;IACrC,cAAc,CAAC,oBAAoB,GAAG,OAAO,CAAC,aAAa,CAAC;IAE5D,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE;QACpC,GAAG,EAAE,UAAU,CAAC,cAAc,CAAC;QAC/B,KAAK,EAAE,SAAS;KACjB,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,SAAS;QAClB,KAAK,CAAC,QAAQ;YACZ,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAClC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC9B,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC1B,OAAO,EAAE,CAAC;gBACZ,CAAC,EAAE,IAAI,CAAC,CAAC;gBACT,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;oBACxB,YAAY,CAAC,OAAO,CAAC,CAAC;oBACtB,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC,CAAC;gBACH,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5B,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,OAAkB;IACrC,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IACrF,MAAM,IAAI,GAAG;QACX,iBAAiB;QACjB,YAAY,EAAE,aAAa;QAC3B,SAAS,EAAE,eAAe,OAAO,CAAC,KAAK,EAAE;QACzC,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;QAC/B,eAAe,EAAE,OAAO,CAAC,UAAU;QACnC,IAAI,EAAE,OAAO,CAAC,aAAa;KAC5B,CAAC;IACF,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,YAAY;IACnB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC1D,IAAI,UAAU,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IACD,OAAO,IAAI,CAAC,CAAC,oBAAoB;AACnC,CAAC"}
1
+ {"version":3,"file":"launcher.js","sourceRoot":"","sources":["../../src/pi/launcher.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ export declare class SessionUploader {
4
4
  private sessionId;
5
5
  private sessionDir;
6
6
  private pollTimer;
7
+ private finalized;
7
8
  constructor(client: APIClient, sessionId: string, sessionDir: string);
8
9
  start(): void;
9
10
  stop(): Promise<void>;
@@ -7,6 +7,7 @@ export class SessionUploader {
7
7
  sessionId;
8
8
  sessionDir;
9
9
  pollTimer = null;
10
+ finalized = false;
10
11
  constructor(client, sessionId, sessionDir) {
11
12
  this.client = client;
12
13
  this.sessionId = sessionId;
@@ -23,6 +24,8 @@ export class SessionUploader {
23
24
  await this.checkAndUpload();
24
25
  }
25
26
  async checkAndUpload() {
27
+ if (this.finalized)
28
+ return;
26
29
  try {
27
30
  const files = readdirSync(this.sessionDir).filter((f) => f.endsWith(".jsonl"));
28
31
  for (const file of files) {
@@ -62,8 +65,18 @@ export class SessionUploader {
62
65
  throw new Error(`Chunk upload failed: ${res.status}`);
63
66
  }
64
67
  }
65
- // Finalize
66
- await this.client.finalizeSession(this.sessionId, totalBytes, chunkCount, fileHash);
68
+ // Finalize — treat 409 (chunk count mismatch from prior finalize) as already done
69
+ try {
70
+ await this.client.finalizeSession(this.sessionId, totalBytes, chunkCount, fileHash);
71
+ }
72
+ catch (err) {
73
+ if (err.message?.includes("409")) {
74
+ this.finalized = true;
75
+ return;
76
+ }
77
+ throw err;
78
+ }
79
+ this.finalized = true;
67
80
  }
68
81
  }
69
82
  //# sourceMappingURL=session-upload.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-upload.js","sourceRoot":"","sources":["../../src/sync/session-upload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-upload.js","sourceRoot":"","sources":["../../src/sync/session-upload.ts"],"names":[],"mappings":"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"}
@@ -326,6 +326,13 @@ export default function (pi: ExtensionAPI) {
326
326
  body.reasoning_effort = effort;
327
327
  }
328
328
 
329
+ // Combine caller abort signal with a 5-minute timeout to prevent infinite hangs
330
+ const timeoutMs = 5 * 60 * 1000;
331
+ const timeoutSignal = AbortSignal.timeout(timeoutMs);
332
+ const combinedSignal = options?.signal
333
+ ? AbortSignal.any([options.signal, timeoutSignal])
334
+ : timeoutSignal;
335
+
329
336
  const res = await fetch(`${inferenceUrl}/v1/chat/completions`, {
330
337
  method: "POST",
331
338
  headers: {
@@ -335,7 +342,7 @@ export default function (pi: ExtensionAPI) {
335
342
  "X-Naiad-Session-Id": sessionId,
336
343
  },
337
344
  body: JSON.stringify(body),
338
- signal: options?.signal,
345
+ signal: combinedSignal,
339
346
  });
340
347
 
341
348
  if (!res.ok) {
@@ -755,4 +762,371 @@ When you're done, provide a clear, actionable summary the caller can act on.`;
755
762
  },
756
763
  });
757
764
  }
765
+
766
+ // --- GitHub Interaction Tools ---
767
+ if (threadId && inferenceUrl) {
768
+ const isGHA = process.env.GITHUB_ACTIONS === "true";
769
+ const apiBaseUrl = inferenceUrl.replace(/\/api\/v1\/inference$/, "");
770
+
771
+ async function callToolEndpoint(method: string, endpoint: string, body?: unknown): Promise<any> {
772
+ const url = `${apiBaseUrl}/api/v1/threads/${threadId}/github/${endpoint}`;
773
+ const res = await fetch(url, {
774
+ method,
775
+ headers: {
776
+ "Content-Type": "application/json",
777
+ Authorization: `Bearer ${apiKey}`,
778
+ },
779
+ body: body ? JSON.stringify(body) : undefined,
780
+ });
781
+ const data = await res.json();
782
+ if (res.status === 409) {
783
+ return data;
784
+ }
785
+ if (!res.ok) {
786
+ throw new Error(`GitHub tool error: ${res.status} ${JSON.stringify(data)}`);
787
+ }
788
+ return data;
789
+ }
790
+
791
+ // Tool 1: github_context
792
+ pi.registerTool({
793
+ name: "github_context",
794
+ label: "GitHub Context",
795
+ description:
796
+ "Get the current GitHub working state — repo, branch, base branch, existing PR. Like `git status` + `gh pr view`.",
797
+ promptSnippet: "Check GitHub context: repo, branch, PR status.",
798
+ promptGuidelines: [
799
+ "Use github_context early to determine the repo, branch, base branch, and whether a PR already exists before deciding whether to push, open a PR, or leave a review.",
800
+ ],
801
+ parameters: Type.Object({}),
802
+ async execute(toolCallId, params, signal, onUpdate, ctx) {
803
+ if (isGHA) {
804
+ const data = await callToolEndpoint("GET", "context");
805
+ return { content: [{ type: "text" as const, text: JSON.stringify(data, null, 2) }] };
806
+ }
807
+
808
+ // Local fallback: git + gh CLI
809
+ const branch = execFileSync("git", ["rev-parse", "--abbrev-ref", "HEAD"]).toString().trim();
810
+ const rawRemote = execFileSync("git", ["remote", "get-url", "origin"]).toString().trim();
811
+ // Normalize to owner/repo format
812
+ const remote = rawRemote
813
+ .replace(/^https?:\/\/github\.com\//, "")
814
+ .replace(/^git@github\.com:/, "")
815
+ .replace(/\.git$/, "");
816
+ const defaultBranch = (() => {
817
+ try {
818
+ return execFileSync("git", ["rev-parse", "--abbrev-ref", "origin/HEAD"]).toString().trim().replace("origin/", "");
819
+ } catch {
820
+ return "main";
821
+ }
822
+ })();
823
+
824
+ let pr: any = null;
825
+ try {
826
+ const prJson = execFileSync("gh", ["pr", "view", "--json", "number,url,title,state,headRefName,baseRefName"]).toString().trim();
827
+ pr = JSON.parse(prJson);
828
+ } catch {
829
+ // No PR exists
830
+ }
831
+
832
+ const result = {
833
+ repo: remote,
834
+ currentBranch: branch,
835
+ baseBranch: defaultBranch,
836
+ defaultBranch,
837
+ branchCreatedForAgent: false,
838
+ existingPr: pr ?? undefined,
839
+ };
840
+ return { content: [{ type: "text" as const, text: JSON.stringify(result, null, 2) }] };
841
+ },
842
+ });
843
+
844
+ // Tool 2: github_commit_and_push
845
+ pi.registerTool({
846
+ name: "github_commit_and_push",
847
+ label: "GitHub Commit & Push",
848
+ description:
849
+ "Stage changes, commit, and push to the current branch. Like `git add -A && git commit && git push`.",
850
+ promptSnippet: "Commit and push changes to the current branch.",
851
+ promptGuidelines: [
852
+ "Use github_commit_and_push to push your changes after editing files.",
853
+ "Write clear, descriptive commit messages.",
854
+ "If there are no changes, the tool returns { pushed: false, reason: 'no_changes' } — this is not an error.",
855
+ "If the tool returns a typed error (fork_pr, branch_protected, policy_denied), switch to review/comment mode instead of retrying.",
856
+ "If the tool returns sha_mismatch, tell the user to mention you again to retry with current code.",
857
+ ],
858
+ parameters: Type.Object({
859
+ message: Type.String({ description: "Commit message" }),
860
+ files: Type.Optional(
861
+ Type.Array(Type.String(), {
862
+ description: "Specific files to stage. Defaults to all changes (git add -A) when omitted.",
863
+ }),
864
+ ),
865
+ }),
866
+ async execute(toolCallId, params, signal, onUpdate, ctx) {
867
+ // Stage files
868
+ if (params.files && params.files.length > 0) {
869
+ execFileSync("git", ["add", ...params.files]);
870
+ } else {
871
+ execFileSync("git", ["add", "-A"]);
872
+ }
873
+
874
+ // Check if there are changes to commit
875
+ try {
876
+ execFileSync("git", ["diff", "--cached", "--quiet"]);
877
+ // exit 0 means no changes
878
+ return { content: [{ type: "text" as const, text: JSON.stringify({ pushed: false, reason: "no_changes" }) }] };
879
+ } catch {
880
+ // exit non-zero means there are staged changes — continue
881
+ }
882
+
883
+ // Set git identity and commit
884
+ execFileSync("git", ["config", "user.name", "naiad-bot"]);
885
+ execFileSync("git", ["config", "user.email", "bot@naiad.dev"]);
886
+ execFileSync("git", ["commit", "-m", params.message]);
887
+
888
+ const headSha = execFileSync("git", ["rev-parse", "HEAD"]).toString().trim();
889
+
890
+ if (isGHA) {
891
+ // Step 1: Preflight — validate push safety and get expectedRef WITHOUT minting a push token
892
+ const preflight = await callToolEndpoint("POST", "push-preflight", {
893
+ message: params.message,
894
+ commit_sha: headSha,
895
+ });
896
+
897
+ if (preflight.error) {
898
+ return { content: [{ type: "text" as const, text: JSON.stringify(preflight) }] };
899
+ }
900
+
901
+ const { expectedRef, branch: preflightBranch } = preflight;
902
+
903
+ // Step 2: Check for merge commits (pre-push safety) using server-provided expectedRef
904
+ const merges = execFileSync("git", ["rev-list", "--merges", `${expectedRef}..HEAD`]).toString().trim();
905
+ if (merges) {
906
+ return {
907
+ content: [{ type: "text" as const, text: JSON.stringify({ error: "policy_denied", message: "Merge commits are not allowed", retryable: false }) }],
908
+ };
909
+ }
910
+
911
+ // Step 3: Mint push token — only after merge check passes
912
+ const pushData = await callToolEndpoint("POST", "commit-and-push", {
913
+ message: params.message,
914
+ commit_sha: headSha,
915
+ });
916
+
917
+ if (pushData.error) {
918
+ return { content: [{ type: "text" as const, text: JSON.stringify(pushData) }] };
919
+ }
920
+
921
+ const { pushToken, pushUrl, branch } = pushData;
922
+
923
+ // Validate pushUrl matches the expected repo (not just any GitHub URL)
924
+ const rawRemote = execFileSync("git", ["remote", "get-url", "origin"]).toString().trim();
925
+ const expectedRepo = rawRemote
926
+ .replace(/^https?:\/\/github\.com\//, "")
927
+ .replace(/^git@github\.com:/, "")
928
+ .replace(/\.git$/, "");
929
+ const expectedPushUrl = `https://github.com/${expectedRepo}.git`;
930
+ if (!pushUrl || pushUrl !== expectedPushUrl) {
931
+ return {
932
+ content: [{ type: "text" as const, text: JSON.stringify({ error: "policy_denied", message: "Push URL does not match expected repository", retryable: false }) }],
933
+ };
934
+ }
935
+
936
+ const basicAuth = Buffer.from(`x-access-token:${pushToken}`).toString("base64");
937
+
938
+ // Clean-room push
939
+ execFileSync(
940
+ "git",
941
+ [
942
+ "-c", "core.hooksPath=/dev/null",
943
+ "-c", "credential.helper=",
944
+ "-c", "include.path=",
945
+ `-c`, `http.extraheader=Authorization: Basic ${basicAuth}`,
946
+ "push", pushUrl, `HEAD:refs/heads/${branch}`, "--no-force",
947
+ ],
948
+ {
949
+ env: {
950
+ PATH: process.env.PATH,
951
+ HOME: process.env.HOME,
952
+ GIT_CONFIG_NOSYSTEM: "1",
953
+ GIT_CONFIG_GLOBAL: "/dev/null",
954
+ GIT_CONFIG: "/dev/null",
955
+ GIT_TERMINAL_PROMPT: "0",
956
+ },
957
+ },
958
+ );
959
+
960
+ // Post-push verification (defense-in-depth: server checks for merge commits)
961
+ const verifyResult = await callToolEndpoint("POST", "post-push-verify", {
962
+ commit_sha: headSha,
963
+ expected_ref: expectedRef,
964
+ branch,
965
+ });
966
+ if (verifyResult.error) {
967
+ return { content: [{ type: "text" as const, text: JSON.stringify(verifyResult) }] };
968
+ }
969
+
970
+ return { content: [{ type: "text" as const, text: JSON.stringify({ pushed: true, headSha, branch }) }] };
971
+ }
972
+
973
+ // Local fallback: just push
974
+ execFileSync("git", ["push"]);
975
+ const branch = execFileSync("git", ["rev-parse", "--abbrev-ref", "HEAD"]).toString().trim();
976
+ return { content: [{ type: "text" as const, text: JSON.stringify({ pushed: true, headSha, branch }) }] };
977
+ },
978
+ });
979
+
980
+ // Tool 3: github_pr_upsert
981
+ pi.registerTool({
982
+ name: "github_pr_upsert",
983
+ label: "GitHub PR Create/Update",
984
+ description:
985
+ "Create or update a pull request for the current branch.",
986
+ promptSnippet: "Create or update a PR for the current branch.",
987
+ promptGuidelines: [
988
+ "Open a PR when triggered from an issue and you've made code changes (the natural issue → branch → PR flow).",
989
+ "Do NOT open a PR when you only answered a question, left a review, or asked for clarification.",
990
+ "Do NOT open a new PR when you pushed follow-up commits to an existing PR branch — the PR already exists.",
991
+ ],
992
+ parameters: Type.Object({
993
+ title: Type.String({ description: "PR title" }),
994
+ body: Type.String({ description: "PR body (markdown)" }),
995
+ draft: Type.Optional(Type.Boolean({ description: "Create as draft PR. Defaults to false." })),
996
+ }),
997
+ async execute(toolCallId, params, signal, onUpdate, ctx) {
998
+ if (isGHA) {
999
+ const data = await callToolEndpoint("POST", "pr", {
1000
+ title: params.title,
1001
+ body: params.body,
1002
+ draft: params.draft,
1003
+ });
1004
+ return { content: [{ type: "text" as const, text: JSON.stringify(data, null, 2) }] };
1005
+ }
1006
+
1007
+ // Local fallback: gh CLI
1008
+ try {
1009
+ // Try to update existing PR first
1010
+ execFileSync("gh", ["pr", "edit", "--title", params.title, "--body", params.body]);
1011
+ const prJson = execFileSync("gh", ["pr", "view", "--json", "number,url"]).toString().trim();
1012
+ const pr = JSON.parse(prJson);
1013
+ return { content: [{ type: "text" as const, text: JSON.stringify({ prNumber: pr.number, prUrl: pr.url, created: false }) }] };
1014
+ } catch {
1015
+ // No existing PR — create one
1016
+ const createArgs = ["pr", "create", "--title", params.title, "--body", params.body];
1017
+ if (params.draft) createArgs.push("--draft");
1018
+ const prUrl = execFileSync("gh", createArgs).toString().trim();
1019
+ // Fetch PR number from the newly created PR
1020
+ let prNumber: number | undefined;
1021
+ try {
1022
+ const newPrJson = execFileSync("gh", ["pr", "view", "--json", "number"]).toString().trim();
1023
+ prNumber = JSON.parse(newPrJson).number;
1024
+ } catch {}
1025
+ return { content: [{ type: "text" as const, text: JSON.stringify({ prNumber, prUrl, created: true }) }] };
1026
+ }
1027
+ },
1028
+ });
1029
+
1030
+ // Tool 4: github_comment
1031
+ pi.registerTool({
1032
+ name: "github_comment",
1033
+ label: "GitHub Comment",
1034
+ description:
1035
+ "Post a comment on an issue, PR, or PR review thread.",
1036
+ promptSnippet: "Post a comment on an issue or PR.",
1037
+ promptGuidelines: [
1038
+ "On PR surfaces, if the mentioner is not the PR author/contributor and the request is ambiguous, default to review/comments rather than pushing code.",
1039
+ "When asking for clarification or reporting failure, tell the user: 'Reply in a new comment starting with @naiad-bot to continue.'",
1040
+ ],
1041
+ parameters: Type.Object({
1042
+ body: Type.String({ description: "Comment body (markdown)" }),
1043
+ target: Type.Union([
1044
+ Type.Literal("issue"),
1045
+ Type.Literal("pr"),
1046
+ Type.Literal("pr_review_thread"),
1047
+ ], { description: 'Where to post: "issue", "pr", or "pr_review_thread"' }),
1048
+ reviewCommentId: Type.Optional(
1049
+ Type.Integer({ description: "Review comment ID (required when target is pr_review_thread)" }),
1050
+ ),
1051
+ }),
1052
+ async execute(toolCallId, params, signal, onUpdate, ctx) {
1053
+ if (isGHA) {
1054
+ const data = await callToolEndpoint("POST", "comment", {
1055
+ body: params.body,
1056
+ target: params.target,
1057
+ reviewCommentId: params.reviewCommentId,
1058
+ });
1059
+ return { content: [{ type: "text" as const, text: JSON.stringify(data, null, 2) }] };
1060
+ }
1061
+
1062
+ // Local fallback: gh CLI
1063
+ if (params.target === "pr_review_thread") {
1064
+ throw new Error("pr_review_thread target is not supported in local CLI mode — use GHA or reply manually");
1065
+ }
1066
+ if (params.target === "issue") {
1067
+ execFileSync("gh", ["issue", "comment", "--body", params.body]);
1068
+ } else {
1069
+ execFileSync("gh", ["pr", "comment", "--body", params.body]);
1070
+ }
1071
+ return { content: [{ type: "text" as const, text: JSON.stringify({ commentUrl: "comment posted locally" }) }] };
1072
+ },
1073
+ });
1074
+
1075
+ // Tool 5: github_review
1076
+ pi.registerTool({
1077
+ name: "github_review",
1078
+ label: "GitHub Review",
1079
+ description:
1080
+ "Submit a review on the current PR with optional inline comments.",
1081
+ promptSnippet: "Submit a review on the current PR.",
1082
+ promptGuidelines: [
1083
+ "Never approve PRs — only COMMENT or REQUEST_CHANGES events are allowed.",
1084
+ "Target inline comments at lines in the current diff hunk; comments on lines not in the diff will be rejected by the GitHub API.",
1085
+ ],
1086
+ parameters: Type.Object({
1087
+ body: Type.String({ description: "Review body (markdown)" }),
1088
+ event: Type.Union([
1089
+ Type.Literal("COMMENT"),
1090
+ Type.Literal("REQUEST_CHANGES"),
1091
+ ], { description: 'Review event: "COMMENT" or "REQUEST_CHANGES"' }),
1092
+ comments: Type.Optional(
1093
+ Type.Array(
1094
+ Type.Object({
1095
+ path: Type.String({ description: "File path relative to repo root" }),
1096
+ line: Type.Integer({ description: "Line number in the diff" }),
1097
+ side: Type.Optional(Type.Union([
1098
+ Type.Literal("LEFT"),
1099
+ Type.Literal("RIGHT"),
1100
+ ], { description: 'Diff side: "LEFT" or "RIGHT" (default: RIGHT)' })),
1101
+ body: Type.String({ description: "Review comment text" }),
1102
+ }),
1103
+ { description: "Inline review comments" },
1104
+ ),
1105
+ ),
1106
+ }),
1107
+ async execute(toolCallId, params, signal, onUpdate, ctx) {
1108
+ if (isGHA) {
1109
+ const data = await callToolEndpoint("POST", "review", {
1110
+ body: params.body,
1111
+ event: params.event,
1112
+ comments: params.comments,
1113
+ });
1114
+ return { content: [{ type: "text" as const, text: JSON.stringify(data, null, 2) }] };
1115
+ }
1116
+
1117
+ // Local fallback: gh pr review
1118
+ if (params.comments && params.comments.length > 0) {
1119
+ throw new Error("Inline review comments are not supported in local CLI mode — use GHA for inline comments");
1120
+ }
1121
+ const reviewArgs = ["pr", "review", "--body", params.body];
1122
+ if (params.event === "REQUEST_CHANGES") {
1123
+ reviewArgs.push("--request-changes");
1124
+ } else {
1125
+ reviewArgs.push("--comment");
1126
+ }
1127
+ execFileSync("gh", reviewArgs);
1128
+ return { content: [{ type: "text" as const, text: JSON.stringify({ reviewUrl: "review posted locally" }) }] };
1129
+ },
1130
+ });
1131
+ }
758
1132
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "naiad-cli",
3
- "version": "0.2.34",
3
+ "version": "0.2.36",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "naiad": "./dist/index.js"