run402 4.95.0 → 4.96.0

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.
Files changed (237) hide show
  1. package/README.md +3 -3
  2. package/cli.mjs +1 -21
  3. package/core-dist/keystore.js +1 -1
  4. package/git-remote-run402.mjs +6 -6
  5. package/lib/cold-start.mjs +2 -2
  6. package/lib/command-manifest.mjs +3 -41
  7. package/lib/credentials.mjs +1 -1
  8. package/lib/daemon-path.mjs +3 -3
  9. package/lib/deploy-v2.mjs +17 -17
  10. package/lib/doctor.mjs +45 -54
  11. package/lib/init.mjs +29 -29
  12. package/lib/next-actions.mjs +1 -1
  13. package/lib/org-context.mjs +9 -9
  14. package/lib/orgs.mjs +19 -19
  15. package/lib/path-lookup.mjs +7 -10
  16. package/lib/path-lookup.test.mjs +19 -21
  17. package/lib/remote-helper-session.mjs +93 -93
  18. package/lib/repos.mjs +174 -175
  19. package/lib/rooms-context.mjs +7 -7
  20. package/lib/up.mjs +14 -14
  21. package/lib/{gitvault-capabilities.mjs → vault-capabilities.mjs} +10 -14
  22. package/lib/{gitvault-daemon-run.mjs → vault-daemon-run.mjs} +2 -2
  23. package/lib/{gitvault-daemon.mjs → vault-daemon.mjs} +23 -23
  24. package/lib/{gitvault-scaffold.mjs → vault-scaffold.mjs} +12 -12
  25. package/lib/{gitvault-target.mjs → vault-target.mjs} +22 -17
  26. package/package.json +2 -2
  27. package/sdk/core-dist/keystore.js +1 -1
  28. package/sdk/dist/errors.d.ts +4 -4
  29. package/sdk/dist/errors.d.ts.map +1 -1
  30. package/sdk/dist/index.d.ts +9 -9
  31. package/sdk/dist/index.d.ts.map +1 -1
  32. package/sdk/dist/index.js +8 -8
  33. package/sdk/dist/index.js.map +1 -1
  34. package/sdk/dist/namespaces/deploy.d.ts +5 -5
  35. package/sdk/dist/namespaces/deploy.d.ts.map +1 -1
  36. package/sdk/dist/namespaces/deploy.js +20 -20
  37. package/sdk/dist/namespaces/deploy.js.map +1 -1
  38. package/sdk/dist/namespaces/deploy.types.d.ts +17 -17
  39. package/sdk/dist/namespaces/deploy.types.d.ts.map +1 -1
  40. package/sdk/dist/namespaces/org.d.ts +2 -2
  41. package/sdk/dist/namespaces/org.js +2 -2
  42. package/sdk/dist/namespaces/org.types.d.ts +3 -3
  43. package/sdk/dist/namespaces/pay.js +1 -1
  44. package/sdk/dist/namespaces/{gitvault.d.ts → repos.d.ts} +436 -449
  45. package/sdk/dist/namespaces/repos.d.ts.map +1 -0
  46. package/sdk/dist/namespaces/{gitvault.js → repos.js} +451 -459
  47. package/sdk/dist/namespaces/repos.js.map +1 -0
  48. package/sdk/dist/namespaces/rooms.js +2 -2
  49. package/sdk/dist/namespaces/rooms.js.map +1 -1
  50. package/sdk/dist/namespaces/session.d.ts +2 -2
  51. package/sdk/dist/namespaces/session.d.ts.map +1 -1
  52. package/sdk/dist/namespaces/session.js +2 -2
  53. package/sdk/dist/namespaces/session.js.map +1 -1
  54. package/sdk/dist/namespaces/tier.d.ts +3 -3
  55. package/sdk/dist/namespaces/tier.d.ts.map +1 -1
  56. package/sdk/dist/namespaces/{gitvault.crypto.d.ts → vault.crypto.d.ts} +141 -141
  57. package/sdk/dist/namespaces/vault.crypto.d.ts.map +1 -0
  58. package/sdk/dist/namespaces/{gitvault.crypto.js → vault.crypto.js} +173 -173
  59. package/sdk/dist/namespaces/vault.crypto.js.map +1 -0
  60. package/sdk/dist/namespaces/{gitvault.types.d.ts → vault.types.d.ts} +136 -136
  61. package/sdk/dist/namespaces/vault.types.d.ts.map +1 -0
  62. package/sdk/dist/namespaces/{gitvault.types.js → vault.types.js} +4 -4
  63. package/sdk/dist/namespaces/vault.types.js.map +1 -0
  64. package/sdk/dist/node/bearer-redeem-key.d.ts +1 -1
  65. package/sdk/dist/node/bearer-redeem-key.js +5 -5
  66. package/sdk/dist/node/bearer-redeem-key.js.map +1 -1
  67. package/sdk/dist/node/http-dispatcher.js +5 -5
  68. package/sdk/dist/node/http-dispatcher.js.map +1 -1
  69. package/sdk/dist/node/index.d.ts +29 -29
  70. package/sdk/dist/node/index.d.ts.map +1 -1
  71. package/sdk/dist/node/index.js +39 -39
  72. package/sdk/dist/node/index.js.map +1 -1
  73. package/sdk/dist/node/{gitvault-address.d.ts → vault-address.d.ts} +42 -42
  74. package/sdk/dist/node/vault-address.d.ts.map +1 -0
  75. package/sdk/dist/node/{gitvault-address.js → vault-address.js} +43 -43
  76. package/sdk/dist/node/vault-address.js.map +1 -0
  77. package/sdk/dist/node/{gitvault-apply.d.ts → vault-apply.d.ts} +27 -27
  78. package/sdk/dist/node/vault-apply.d.ts.map +1 -0
  79. package/sdk/dist/node/{gitvault-apply.js → vault-apply.js} +38 -38
  80. package/sdk/dist/node/vault-apply.js.map +1 -0
  81. package/sdk/dist/node/vault-byo-config.d.ts +29 -0
  82. package/sdk/dist/node/vault-byo-config.d.ts.map +1 -0
  83. package/sdk/dist/node/{gitvault-byo-config.js → vault-byo-config.js} +18 -18
  84. package/sdk/dist/node/vault-byo-config.js.map +1 -0
  85. package/sdk/dist/node/vault-byo-probe.d.ts +20 -0
  86. package/sdk/dist/node/vault-byo-probe.d.ts.map +1 -0
  87. package/sdk/dist/node/vault-byo-probe.js +57 -0
  88. package/sdk/dist/node/vault-byo-probe.js.map +1 -0
  89. package/sdk/dist/node/{gitvault-creation-journal.d.ts → vault-creation-journal.d.ts} +69 -69
  90. package/sdk/dist/node/vault-creation-journal.d.ts.map +1 -0
  91. package/sdk/dist/node/{gitvault-creation-journal.js → vault-creation-journal.js} +54 -54
  92. package/sdk/dist/node/vault-creation-journal.js.map +1 -0
  93. package/sdk/dist/node/{gitvault-degraded-read.d.ts → vault-degraded-read.d.ts} +34 -34
  94. package/sdk/dist/node/vault-degraded-read.d.ts.map +1 -0
  95. package/sdk/dist/node/{gitvault-degraded-read.js → vault-degraded-read.js} +24 -24
  96. package/sdk/dist/node/vault-degraded-read.js.map +1 -0
  97. package/sdk/dist/node/{gitvault-deploy.d.ts → vault-deploy.d.ts} +67 -67
  98. package/sdk/dist/node/vault-deploy.d.ts.map +1 -0
  99. package/sdk/dist/node/{gitvault-deploy.js → vault-deploy.js} +27 -27
  100. package/sdk/dist/node/vault-deploy.js.map +1 -0
  101. package/sdk/dist/node/{gitvault-edge-fetch.d.ts → vault-edge-fetch.d.ts} +9 -9
  102. package/sdk/dist/node/vault-edge-fetch.d.ts.map +1 -0
  103. package/sdk/dist/node/{gitvault-edge-fetch.js → vault-edge-fetch.js} +11 -11
  104. package/sdk/dist/node/vault-edge-fetch.js.map +1 -0
  105. package/sdk/dist/node/{gitvault-handoff.d.ts → vault-handoff.d.ts} +9 -9
  106. package/sdk/dist/node/vault-handoff.d.ts.map +1 -0
  107. package/sdk/dist/node/{gitvault-handoff.js → vault-handoff.js} +24 -24
  108. package/sdk/dist/node/vault-handoff.js.map +1 -0
  109. package/sdk/dist/node/{gitvault-keystore.d.ts → vault-keystore.d.ts} +87 -77
  110. package/sdk/dist/node/vault-keystore.d.ts.map +1 -0
  111. package/sdk/dist/node/{gitvault-keystore.js → vault-keystore.js} +105 -68
  112. package/sdk/dist/node/vault-keystore.js.map +1 -0
  113. package/sdk/dist/node/{gitvault-member-bundle.d.ts → vault-member-bundle.d.ts} +17 -17
  114. package/sdk/dist/node/vault-member-bundle.d.ts.map +1 -0
  115. package/sdk/dist/node/{gitvault-member-bundle.js → vault-member-bundle.js} +11 -11
  116. package/sdk/dist/node/vault-member-bundle.js.map +1 -0
  117. package/sdk/dist/node/{gitvault-mirror-backend.d.ts → vault-mirror-backend.d.ts} +26 -26
  118. package/sdk/dist/node/vault-mirror-backend.d.ts.map +1 -0
  119. package/sdk/dist/node/{gitvault-mirror-backend.js → vault-mirror-backend.js} +25 -25
  120. package/sdk/dist/node/vault-mirror-backend.js.map +1 -0
  121. package/sdk/dist/node/{gitvault-mirror-config.d.ts → vault-mirror-config.d.ts} +23 -23
  122. package/sdk/dist/node/vault-mirror-config.d.ts.map +1 -0
  123. package/sdk/dist/node/{gitvault-mirror-config.js → vault-mirror-config.js} +16 -16
  124. package/sdk/dist/node/vault-mirror-config.js.map +1 -0
  125. package/sdk/dist/node/{gitvault-mirror.d.ts → vault-mirror.d.ts} +36 -36
  126. package/sdk/dist/node/vault-mirror.d.ts.map +1 -0
  127. package/sdk/dist/node/{gitvault-mirror.js → vault-mirror.js} +75 -75
  128. package/sdk/dist/node/vault-mirror.js.map +1 -0
  129. package/sdk/dist/node/{gitvault-native-crypto.d.ts → vault-native-crypto.d.ts} +10 -10
  130. package/sdk/dist/node/vault-native-crypto.d.ts.map +1 -0
  131. package/sdk/dist/node/{gitvault-native-crypto.js → vault-native-crypto.js} +16 -16
  132. package/sdk/dist/node/vault-native-crypto.js.map +1 -0
  133. package/sdk/dist/node/{gitvault-open-or-create.d.ts → vault-open-or-create.d.ts} +16 -16
  134. package/sdk/dist/node/vault-open-or-create.d.ts.map +1 -0
  135. package/sdk/dist/node/{gitvault-open-or-create.js → vault-open-or-create.js} +10 -10
  136. package/sdk/dist/node/vault-open-or-create.js.map +1 -0
  137. package/sdk/dist/node/{gitvault-prewarm.d.ts → vault-prewarm.d.ts} +13 -13
  138. package/sdk/dist/node/vault-prewarm.d.ts.map +1 -0
  139. package/sdk/dist/node/{gitvault-prewarm.js → vault-prewarm.js} +25 -25
  140. package/sdk/dist/node/vault-prewarm.js.map +1 -0
  141. package/sdk/dist/node/{gitvault-profile-scan.d.ts → vault-profile-scan.d.ts} +3 -3
  142. package/sdk/dist/node/vault-profile-scan.d.ts.map +1 -0
  143. package/sdk/dist/node/{gitvault-profile-scan.js → vault-profile-scan.js} +12 -12
  144. package/sdk/dist/node/vault-profile-scan.js.map +1 -0
  145. package/sdk/dist/node/{gitvault-prune.d.ts → vault-prune.d.ts} +61 -61
  146. package/sdk/dist/node/vault-prune.d.ts.map +1 -0
  147. package/sdk/dist/node/{gitvault-prune.js → vault-prune.js} +34 -34
  148. package/sdk/dist/node/vault-prune.js.map +1 -0
  149. package/sdk/dist/node/{gitvault-publication.d.ts → vault-publication.d.ts} +399 -399
  150. package/sdk/dist/node/vault-publication.d.ts.map +1 -0
  151. package/sdk/dist/node/{gitvault-publication.js → vault-publication.js} +584 -584
  152. package/sdk/dist/node/vault-publication.js.map +1 -0
  153. package/sdk/dist/node/{gitvault-push-to-create.d.ts → vault-push-to-create.d.ts} +16 -16
  154. package/sdk/dist/node/vault-push-to-create.d.ts.map +1 -0
  155. package/sdk/dist/node/{gitvault-push-to-create.js → vault-push-to-create.js} +9 -9
  156. package/sdk/dist/node/vault-push-to-create.js.map +1 -0
  157. package/sdk/dist/node/{gitvault-recover.d.ts → vault-recover.d.ts} +50 -50
  158. package/sdk/dist/node/vault-recover.d.ts.map +1 -0
  159. package/sdk/dist/node/{gitvault-recover.js → vault-recover.js} +84 -84
  160. package/sdk/dist/node/vault-recover.js.map +1 -0
  161. package/sdk/dist/node/{gitvault-restore.d.ts → vault-restore.d.ts} +8 -8
  162. package/sdk/dist/node/vault-restore.d.ts.map +1 -0
  163. package/sdk/dist/node/{gitvault-restore.js → vault-restore.js} +11 -11
  164. package/sdk/dist/node/vault-restore.js.map +1 -0
  165. package/sdk/dist/node/{gitvault-snapshot.d.ts → vault-snapshot.d.ts} +48 -48
  166. package/sdk/dist/node/vault-snapshot.d.ts.map +1 -0
  167. package/sdk/dist/node/{gitvault-snapshot.js → vault-snapshot.js} +61 -61
  168. package/sdk/dist/node/vault-snapshot.js.map +1 -0
  169. package/sdk/dist/node/{gitvault-writer-state.d.ts → vault-writer-state.d.ts} +8 -8
  170. package/sdk/dist/node/vault-writer-state.d.ts.map +1 -0
  171. package/sdk/dist/node/{gitvault-writer-state.js → vault-writer-state.js} +15 -15
  172. package/sdk/dist/node/vault-writer-state.js.map +1 -0
  173. package/sdk/dist/node/workflow-output.js +4 -4
  174. package/sdk/dist/node/workflow-output.js.map +1 -1
  175. package/vault-surface.json +40 -0
  176. package/gitvault-surface.json +0 -89
  177. package/lib/gitvault.mjs +0 -163
  178. package/lib/source-access.mjs +0 -70
  179. package/sdk/dist/namespaces/gitvault.crypto.d.ts.map +0 -1
  180. package/sdk/dist/namespaces/gitvault.crypto.js.map +0 -1
  181. package/sdk/dist/namespaces/gitvault.d.ts.map +0 -1
  182. package/sdk/dist/namespaces/gitvault.js.map +0 -1
  183. package/sdk/dist/namespaces/gitvault.types.d.ts.map +0 -1
  184. package/sdk/dist/namespaces/gitvault.types.js.map +0 -1
  185. package/sdk/dist/node/gitvault-address.d.ts.map +0 -1
  186. package/sdk/dist/node/gitvault-address.js.map +0 -1
  187. package/sdk/dist/node/gitvault-apply.d.ts.map +0 -1
  188. package/sdk/dist/node/gitvault-apply.js.map +0 -1
  189. package/sdk/dist/node/gitvault-byo-config.d.ts +0 -29
  190. package/sdk/dist/node/gitvault-byo-config.d.ts.map +0 -1
  191. package/sdk/dist/node/gitvault-byo-config.js.map +0 -1
  192. package/sdk/dist/node/gitvault-byo-probe.d.ts +0 -20
  193. package/sdk/dist/node/gitvault-byo-probe.d.ts.map +0 -1
  194. package/sdk/dist/node/gitvault-byo-probe.js +0 -57
  195. package/sdk/dist/node/gitvault-byo-probe.js.map +0 -1
  196. package/sdk/dist/node/gitvault-creation-journal.d.ts.map +0 -1
  197. package/sdk/dist/node/gitvault-creation-journal.js.map +0 -1
  198. package/sdk/dist/node/gitvault-degraded-read.d.ts.map +0 -1
  199. package/sdk/dist/node/gitvault-degraded-read.js.map +0 -1
  200. package/sdk/dist/node/gitvault-deploy.d.ts.map +0 -1
  201. package/sdk/dist/node/gitvault-deploy.js.map +0 -1
  202. package/sdk/dist/node/gitvault-edge-fetch.d.ts.map +0 -1
  203. package/sdk/dist/node/gitvault-edge-fetch.js.map +0 -1
  204. package/sdk/dist/node/gitvault-handoff.d.ts.map +0 -1
  205. package/sdk/dist/node/gitvault-handoff.js.map +0 -1
  206. package/sdk/dist/node/gitvault-keystore.d.ts.map +0 -1
  207. package/sdk/dist/node/gitvault-keystore.js.map +0 -1
  208. package/sdk/dist/node/gitvault-member-bundle.d.ts.map +0 -1
  209. package/sdk/dist/node/gitvault-member-bundle.js.map +0 -1
  210. package/sdk/dist/node/gitvault-mirror-backend.d.ts.map +0 -1
  211. package/sdk/dist/node/gitvault-mirror-backend.js.map +0 -1
  212. package/sdk/dist/node/gitvault-mirror-config.d.ts.map +0 -1
  213. package/sdk/dist/node/gitvault-mirror-config.js.map +0 -1
  214. package/sdk/dist/node/gitvault-mirror.d.ts.map +0 -1
  215. package/sdk/dist/node/gitvault-mirror.js.map +0 -1
  216. package/sdk/dist/node/gitvault-native-crypto.d.ts.map +0 -1
  217. package/sdk/dist/node/gitvault-native-crypto.js.map +0 -1
  218. package/sdk/dist/node/gitvault-open-or-create.d.ts.map +0 -1
  219. package/sdk/dist/node/gitvault-open-or-create.js.map +0 -1
  220. package/sdk/dist/node/gitvault-prewarm.d.ts.map +0 -1
  221. package/sdk/dist/node/gitvault-prewarm.js.map +0 -1
  222. package/sdk/dist/node/gitvault-profile-scan.d.ts.map +0 -1
  223. package/sdk/dist/node/gitvault-profile-scan.js.map +0 -1
  224. package/sdk/dist/node/gitvault-prune.d.ts.map +0 -1
  225. package/sdk/dist/node/gitvault-prune.js.map +0 -1
  226. package/sdk/dist/node/gitvault-publication.d.ts.map +0 -1
  227. package/sdk/dist/node/gitvault-publication.js.map +0 -1
  228. package/sdk/dist/node/gitvault-push-to-create.d.ts.map +0 -1
  229. package/sdk/dist/node/gitvault-push-to-create.js.map +0 -1
  230. package/sdk/dist/node/gitvault-recover.d.ts.map +0 -1
  231. package/sdk/dist/node/gitvault-recover.js.map +0 -1
  232. package/sdk/dist/node/gitvault-restore.d.ts.map +0 -1
  233. package/sdk/dist/node/gitvault-restore.js.map +0 -1
  234. package/sdk/dist/node/gitvault-snapshot.d.ts.map +0 -1
  235. package/sdk/dist/node/gitvault-snapshot.js.map +0 -1
  236. package/sdk/dist/node/gitvault-writer-state.d.ts.map +0 -1
  237. package/sdk/dist/node/gitvault-writer-state.js.map +0 -1
@@ -1,10 +1,8 @@
1
1
  /**
2
2
  * `path-lookup.mjs` — the tiny, dependency-free "is this executable on
3
- * PATH" check kygit-handoff design D8 needs twice (`run402 doctor` and
4
- * `repos view`, both naming `npm i -g @kychee/kygit` when a `kygit::`
5
- * remote has no `git-remote-kygit` helper installed). No shell, no `which`
6
- * subprocess — a plain directory scan mirrors what the OS loader itself
7
- * does to resolve an unqualified command name.
3
+ * PATH" check behind `repos resume` / `repos join`'s remote-helper next
4
+ * action. No shell, no `which` subprocess — a plain directory scan mirrors
5
+ * what the OS loader itself does to resolve an unqualified command name.
8
6
  */
9
7
  import {accessSync, constants, readFileSync } from "node:fs";
10
8
  import { delimiter, join } from "node:path";
@@ -26,8 +24,7 @@ export function isExecutableOnPath(name, env = process.env) {
26
24
  /**
27
25
  * After a restore into `dir`, the ONE thing that still stands between the
28
26
  * caller and its first `git push` is git finding the remote helper the
29
- * checkout's origin scheme names (`git-remote-kygit` for `kygit::`,
30
- * `git-remote-run402` for `run402::`). A resume or join run through
27
+ * checkout's `run402::` origin names (`git-remote-run402`). A resume or join run through
31
28
  * `npx` has the helper only inside the npx cache, so git cannot see it.
32
29
  * Returns a `next_actions` entry naming the fix, or null when the helper
33
30
  * is on PATH or the checkout's remote cannot be read (never throws).
@@ -42,11 +39,11 @@ export function remoteHelperNextAction(dir, env = process.env) {
42
39
  return null;
43
40
  }
44
41
  if (!url) return null;
45
- const helper = url.startsWith("kygit::") ? "git-remote-kygit" : url.startsWith("run402::") ? "git-remote-run402" : null;
42
+ const helper = url.startsWith("run402::") ? "git-remote-run402" : null;
46
43
  if (!helper || isExecutableOnPath(helper, env)) return null;
47
44
  return {
48
45
  type: "install_remote_helper",
49
- command: "npm i -g @kychee/kygit run402",
50
- why: `git push needs ${helper} on PATH and this session does not have it there (an npx run keeps it inside the npx cache); install both packages once and every git command in this checkout works`,
46
+ command: "npm i -g run402",
47
+ why: `git push needs ${helper} on PATH and this session does not have it there (an npx run keeps it inside the npx cache); install run402 once and every git command in this checkout works`,
51
48
  };
52
49
  }
@@ -1,8 +1,6 @@
1
1
  /**
2
- * `path-lookup.mjs` — the PATH-executable probe `doctor.mjs`/`repos.mjs`'s
3
- * `view()` both use to detect a `kygit::` remote with no `git-remote-kygit`
4
- * helper installed (kygit-handoff design D8, mirroring
5
- * `kygit/kygit.mjs`'s own `findRemoteHelper`).
2
+ * `path-lookup.mjs` — the PATH-executable probe behind `repos resume` /
3
+ * `repos join`'s remote-helper next action.
6
4
  */
7
5
  import { describe, it } from "node:test";
8
6
  import assert from "node:assert/strict";
@@ -15,10 +13,10 @@ describe("isExecutableOnPath", () => {
15
13
  it("finds an executable file on PATH", () => {
16
14
  const dir = mkdtempSync(join(tmpdir(), "path-lookup-"));
17
15
  try {
18
- const bin = join(dir, "git-remote-kygit");
16
+ const bin = join(dir, "git-remote-run402");
19
17
  writeFileSync(bin, "#!/bin/sh\n");
20
18
  chmodSync(bin, 0o755);
21
- assert.equal(isExecutableOnPath("git-remote-kygit", { PATH: dir }), true);
19
+ assert.equal(isExecutableOnPath("git-remote-run402", { PATH: dir }), true);
22
20
  } finally {
23
21
  rmSync(dir, { recursive: true, force: true });
24
22
  }
@@ -27,10 +25,10 @@ describe("isExecutableOnPath", () => {
27
25
  it("returns false when the name exists but is not executable", () => {
28
26
  const dir = mkdtempSync(join(tmpdir(), "path-lookup-"));
29
27
  try {
30
- const bin = join(dir, "git-remote-kygit");
28
+ const bin = join(dir, "git-remote-run402");
31
29
  writeFileSync(bin, "not executable");
32
30
  chmodSync(bin, 0o644);
33
- assert.equal(isExecutableOnPath("git-remote-kygit", { PATH: dir }), false);
31
+ assert.equal(isExecutableOnPath("git-remote-run402", { PATH: dir }), false);
34
32
  } finally {
35
33
  rmSync(dir, { recursive: true, force: true });
36
34
  }
@@ -39,7 +37,7 @@ describe("isExecutableOnPath", () => {
39
37
  it("returns false when the name is nowhere on PATH", () => {
40
38
  const dir = mkdtempSync(join(tmpdir(), "path-lookup-"));
41
39
  try {
42
- assert.equal(isExecutableOnPath("git-remote-kygit", { PATH: dir }), false);
40
+ assert.equal(isExecutableOnPath("git-remote-run402", { PATH: dir }), false);
43
41
  } finally {
44
42
  rmSync(dir, { recursive: true, force: true });
45
43
  }
@@ -49,10 +47,10 @@ describe("isExecutableOnPath", () => {
49
47
  const dirA = mkdtempSync(join(tmpdir(), "path-lookup-a-"));
50
48
  const dirB = mkdtempSync(join(tmpdir(), "path-lookup-b-"));
51
49
  try {
52
- const bin = join(dirB, "git-remote-kygit");
50
+ const bin = join(dirB, "git-remote-run402");
53
51
  writeFileSync(bin, "#!/bin/sh\n");
54
52
  chmodSync(bin, 0o755);
55
- assert.equal(isExecutableOnPath("git-remote-kygit", { PATH: `${dirA}:${dirB}` }), true);
53
+ assert.equal(isExecutableOnPath("git-remote-run402", { PATH: `${dirA}:${dirB}` }), true);
56
54
  } finally {
57
55
  rmSync(dirA, { recursive: true, force: true });
58
56
  rmSync(dirB, { recursive: true, force: true });
@@ -60,29 +58,29 @@ describe("isExecutableOnPath", () => {
60
58
  });
61
59
 
62
60
  it("returns false for an empty or missing PATH rather than throwing", () => {
63
- assert.equal(isExecutableOnPath("git-remote-kygit", {}), false);
64
- assert.equal(isExecutableOnPath("git-remote-kygit", { PATH: "" }), false);
61
+ assert.equal(isExecutableOnPath("git-remote-run402", {}), false);
62
+ assert.equal(isExecutableOnPath("git-remote-run402", { PATH: "" }), false);
65
63
  });
66
64
  });
67
65
 
68
66
  describe("remoteHelperNextAction", () => {
69
- it("names the missing helper for the checkout's remote scheme, and nothing when it is on PATH or the checkout is unreadable", () => {
67
+ it("names the missing helper for a run402:: checkout, and nothing when it is on PATH or the checkout is unreadable", () => {
70
68
  const dir = mkdtempSync(join(tmpdir(), "run402-remote-helper-"));
71
69
  try {
72
70
  mkdirSync(join(dir, ".git"));
73
- writeFileSync(join(dir, ".git", "config"), `[core]\n\trepositoryformatversion = 0\n[remote "origin"]\n\turl = kygit::org/name\n\tfetch = +refs/heads/*:refs/remotes/origin/*\n`);
71
+ writeFileSync(join(dir, ".git", "config"), `[core]\n\trepositoryformatversion = 0\n[remote "origin"]\n\turl = run402::org/name\n\tfetch = +refs/heads/*:refs/remotes/origin/*\n`);
74
72
  const emptyPath = { PATH: dir };
75
73
  const missing = remoteHelperNextAction(dir, emptyPath);
76
74
  assert.equal(missing?.type, "install_remote_helper");
77
- assert.match(missing.why, /git-remote-kygit/);
78
- assert.equal(missing.command, "npm i -g @kychee/kygit run402");
75
+ assert.match(missing.why, /git-remote-run402/);
76
+ assert.equal(missing.command, "npm i -g run402");
79
77
  // present on PATH → nothing to say
80
78
  const bin = join(dir, "bin"); mkdirSync(bin);
81
- writeFileSync(join(bin, "git-remote-kygit"), "#!/bin/sh\n"); chmodSync(join(bin, "git-remote-kygit"), 0o755);
79
+ writeFileSync(join(bin, "git-remote-run402"), "#!/bin/sh\n"); chmodSync(join(bin, "git-remote-run402"), 0o755);
82
80
  assert.equal(remoteHelperNextAction(dir, { PATH: bin }), null);
83
- // run402:: scheme names the other helper
84
- writeFileSync(join(dir, ".git", "config"), `[remote "origin"]\n\turl = run402::org/name\n`);
85
- assert.match(remoteHelperNextAction(dir, emptyPath).why, /git-remote-run402/);
81
+ // any other remote → nothing to say
82
+ writeFileSync(join(dir, ".git", "config"), `[remote "origin"]\n\turl = https://example.com/x.git\n`);
83
+ assert.equal(remoteHelperNextAction(dir, emptyPath), null);
86
84
  // no checkout → null, never a throw
87
85
  assert.equal(remoteHelperNextAction(join(dir, "nope"), emptyPath), null);
88
86
  } finally {