@gajae-code/coding-agent 0.1.1 → 0.1.2

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/src/tools/gh.ts CHANGED
@@ -106,6 +106,34 @@ const GH_PR_CHECKOUT_FIELDS = [
106
106
  "title",
107
107
  "url",
108
108
  ];
109
+
110
+ const PR_CHECKOUT_BRANCH_CONFIG = {
111
+ headRef: "gjcPrHeadRef",
112
+ url: "gjcPrUrl",
113
+ isCrossRepository: "gjcPrIsCrossRepository",
114
+ maintainerCanModify: "gjcPrMaintainerCanModify",
115
+ } as const;
116
+
117
+ const LEGACY_PR_CHECKOUT_BRANCH_CONFIG = {
118
+ headRef: "ompPrHeadRef",
119
+ url: "ompPrUrl",
120
+ isCrossRepository: "ompPrIsCrossRepository",
121
+ maintainerCanModify: "ompPrMaintainerCanModify",
122
+ } as const;
123
+
124
+ type PrCheckoutBranchConfigKey = keyof typeof PR_CHECKOUT_BRANCH_CONFIG;
125
+
126
+ async function getPrCheckoutBranchConfig(
127
+ repoRoot: string,
128
+ localBranch: string,
129
+ key: PrCheckoutBranchConfigKey,
130
+ signal?: AbortSignal,
131
+ ): Promise<string | undefined> {
132
+ return (
133
+ (await git.config.getBranch(repoRoot, localBranch, PR_CHECKOUT_BRANCH_CONFIG[key], signal)) ??
134
+ (await git.config.getBranch(repoRoot, localBranch, LEGACY_PR_CHECKOUT_BRANCH_CONFIG[key], signal))
135
+ );
136
+ }
109
137
  // /search/<endpoint> API response shapes (subset). Used when projecting raw
110
138
  // REST results into the normalized `GhSearch*Result` shapes the formatters
111
139
  // consume. We talk to the API directly because `gh search prs`/`issues`
@@ -1023,21 +1051,21 @@ async function resolvePrBranchPushTarget(
1023
1051
  maintainerCanModify?: boolean;
1024
1052
  isCrossRepository: boolean;
1025
1053
  }> {
1026
- const headRef = await git.config.getBranch(repoRoot, localBranch, "ompPrHeadRef", signal);
1054
+ const headRef = await getPrCheckoutBranchConfig(repoRoot, localBranch, "headRef", signal);
1027
1055
  if (!headRef) {
1028
1056
  throw new ToolError(`branch ${localBranch} has no PR push metadata; check it out via op: pr_checkout first`);
1029
1057
  }
1030
1058
 
1031
1059
  const pushRemote = await git.config.getBranch(repoRoot, localBranch, "pushRemote", signal);
1032
1060
  const remote = await git.config.getBranch(repoRoot, localBranch, "remote", signal);
1033
- const prUrl = await git.config.getBranch(repoRoot, localBranch, "ompPrUrl", signal);
1034
- const maintainerCanModifyValue = await git.config.getBranch(
1061
+ const prUrl = await getPrCheckoutBranchConfig(repoRoot, localBranch, "url", signal);
1062
+ const maintainerCanModifyValue = await getPrCheckoutBranchConfig(
1035
1063
  repoRoot,
1036
1064
  localBranch,
1037
- "ompPrMaintainerCanModify",
1065
+ "maintainerCanModify",
1038
1066
  signal,
1039
1067
  );
1040
- const isCrossRepositoryValue = await git.config.getBranch(repoRoot, localBranch, "ompPrIsCrossRepository", signal);
1068
+ const isCrossRepositoryValue = await getPrCheckoutBranchConfig(repoRoot, localBranch, "isCrossRepository", signal);
1041
1069
 
1042
1070
  const remoteName = pushRemote ?? remote;
1043
1071
  if (!remoteName) {
@@ -2989,19 +3017,19 @@ async function checkoutPullRequest(
2989
3017
  await git.config.setBranch(repoRoot, localBranch, "remote", remote.name, signal);
2990
3018
  await git.config.setBranch(repoRoot, localBranch, "merge", `refs/heads/${headRefName}`, signal);
2991
3019
  await git.config.setBranch(repoRoot, localBranch, "pushRemote", remote.name, signal);
2992
- await git.config.setBranch(repoRoot, localBranch, "ompPrHeadRef", headRefName, signal);
2993
- await git.config.setBranch(repoRoot, localBranch, "ompPrUrl", data.url ?? "", signal);
3020
+ await git.config.setBranch(repoRoot, localBranch, PR_CHECKOUT_BRANCH_CONFIG.headRef, headRefName, signal);
3021
+ await git.config.setBranch(repoRoot, localBranch, PR_CHECKOUT_BRANCH_CONFIG.url, data.url ?? "", signal);
2994
3022
  await git.config.setBranch(
2995
3023
  repoRoot,
2996
3024
  localBranch,
2997
- "ompPrIsCrossRepository",
3025
+ PR_CHECKOUT_BRANCH_CONFIG.isCrossRepository,
2998
3026
  String(Boolean(data.isCrossRepository)),
2999
3027
  signal,
3000
3028
  );
3001
3029
  await git.config.setBranch(
3002
3030
  repoRoot,
3003
3031
  localBranch,
3004
- "ompPrMaintainerCanModify",
3032
+ PR_CHECKOUT_BRANCH_CONFIG.maintainerCanModify,
3005
3033
  String(Boolean(data.maintainerCanModify)),
3006
3034
  signal,
3007
3035
  );
@@ -26,6 +26,7 @@ const INTERNAL_SCHEMES_WITH_SELECTORS: Record<string, true> = {
26
26
  gjc: true,
27
27
  pr: true,
28
28
  rule: true,
29
+ skill: true,
29
30
  };
30
31
  const INTERNAL_URL_SCHEME_RE = /^([a-z][a-z0-9+.-]*):\/\//i;
31
32
  const NARROW_NO_BREAK_SPACE = "\u202F";