run402 4.95.0 → 4.97.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.
- package/README.md +5 -5
- package/cli.mjs +2 -28
- package/core-dist/keystore.js +1 -1
- package/git-remote-run402.mjs +6 -6
- package/lib/buzz.mjs +1 -1
- package/lib/cold-start.mjs +2 -2
- package/lib/command-manifest.mjs +6 -47
- package/lib/credentials.mjs +5 -5
- package/lib/daemon-path.mjs +3 -3
- package/lib/deploy-v2.mjs +44 -44
- package/lib/doctor.mjs +45 -54
- package/lib/errors.mjs +1 -1
- package/lib/events.mjs +1 -1
- package/lib/grants.mjs +148 -46
- package/lib/init.mjs +29 -29
- package/lib/logs.mjs +1 -1
- package/lib/next-actions.mjs +1 -1
- package/lib/org-context.mjs +9 -9
- package/lib/orgs.mjs +19 -19
- package/lib/path-lookup.mjs +7 -10
- package/lib/path-lookup.test.mjs +19 -21
- package/lib/projects.mjs +1 -1
- package/lib/remote-helper-session.mjs +93 -93
- package/lib/repos.mjs +174 -175
- package/lib/rooms-context.mjs +7 -7
- package/lib/sites.mjs +5 -5
- package/lib/up.mjs +14 -14
- package/lib/{gitvault-capabilities.mjs → vault-capabilities.mjs} +10 -14
- package/lib/{gitvault-daemon-run.mjs → vault-daemon-run.mjs} +2 -2
- package/lib/{gitvault-daemon.mjs → vault-daemon.mjs} +23 -23
- package/lib/{gitvault-scaffold.mjs → vault-scaffold.mjs} +12 -12
- package/lib/{gitvault-target.mjs → vault-target.mjs} +22 -17
- package/package.json +2 -2
- package/sdk/core-dist/keystore.js +1 -1
- package/sdk/dist/errors.d.ts +5 -5
- package/sdk/dist/errors.d.ts.map +1 -1
- package/sdk/dist/errors.js +2 -2
- package/sdk/dist/errors.js.map +1 -1
- package/sdk/dist/grant-key-credentials.d.ts +38 -0
- package/sdk/dist/grant-key-credentials.d.ts.map +1 -0
- package/sdk/dist/grant-key-credentials.js +42 -0
- package/sdk/dist/grant-key-credentials.js.map +1 -0
- package/sdk/dist/index.d.ts +16 -23
- package/sdk/dist/index.d.ts.map +1 -1
- package/sdk/dist/index.js +14 -21
- package/sdk/dist/index.js.map +1 -1
- package/sdk/dist/namespaces/billing.d.ts +1 -1
- package/sdk/dist/namespaces/billing.js +1 -1
- package/sdk/dist/namespaces/buzz.js +1 -1
- package/sdk/dist/namespaces/buzz.js.map +1 -1
- package/sdk/dist/namespaces/credentials.d.ts +4 -4
- package/sdk/dist/namespaces/credentials.js +4 -4
- package/sdk/dist/namespaces/deploy.d.ts +5 -5
- package/sdk/dist/namespaces/deploy.d.ts.map +1 -1
- package/sdk/dist/namespaces/deploy.js +25 -25
- package/sdk/dist/namespaces/deploy.js.map +1 -1
- package/sdk/dist/namespaces/deploy.types.d.ts +17 -17
- package/sdk/dist/namespaces/deploy.types.d.ts.map +1 -1
- package/sdk/dist/namespaces/domains.d.ts +1 -1
- package/sdk/dist/namespaces/domains.js +1 -1
- package/sdk/dist/namespaces/errors.d.ts +1 -1
- package/sdk/dist/namespaces/errors.js +2 -2
- package/sdk/dist/namespaces/escalations.d.ts +2 -2
- package/sdk/dist/namespaces/escalations.js +2 -2
- package/sdk/dist/namespaces/escalations.types.d.ts +3 -3
- package/sdk/dist/namespaces/escalations.types.d.ts.map +1 -1
- package/sdk/dist/namespaces/events.d.ts +1 -1
- package/sdk/dist/namespaces/events.js +1 -1
- package/sdk/dist/namespaces/functions.js +1 -1
- package/sdk/dist/namespaces/functions.js.map +1 -1
- package/sdk/dist/namespaces/grants.d.ts +43 -9
- package/sdk/dist/namespaces/grants.d.ts.map +1 -1
- package/sdk/dist/namespaces/grants.js +99 -10
- package/sdk/dist/namespaces/grants.js.map +1 -1
- package/sdk/dist/namespaces/grants.types.d.ts +120 -15
- package/sdk/dist/namespaces/grants.types.d.ts.map +1 -1
- package/sdk/dist/namespaces/grants.types.js +12 -3
- package/sdk/dist/namespaces/grants.types.js.map +1 -1
- package/sdk/dist/namespaces/identity-links.types.d.ts +2 -2
- package/sdk/dist/namespaces/identity-links.types.d.ts.map +1 -1
- package/sdk/dist/namespaces/org.d.ts +3 -3
- package/sdk/dist/namespaces/org.js +3 -3
- package/sdk/dist/namespaces/org.types.d.ts +3 -3
- package/sdk/dist/namespaces/pay.js +1 -1
- package/sdk/dist/namespaces/projects.d.ts +1 -1
- package/sdk/dist/namespaces/projects.js +1 -1
- package/sdk/dist/namespaces/{gitvault.d.ts → repos.d.ts} +436 -449
- package/sdk/dist/namespaces/repos.d.ts.map +1 -0
- package/sdk/dist/namespaces/{gitvault.js → repos.js} +452 -460
- package/sdk/dist/namespaces/repos.js.map +1 -0
- package/sdk/dist/namespaces/rooms.d.ts +3 -3
- package/sdk/dist/namespaces/rooms.js +5 -5
- package/sdk/dist/namespaces/rooms.js.map +1 -1
- package/sdk/dist/namespaces/session.d.ts +2 -2
- package/sdk/dist/namespaces/session.d.ts.map +1 -1
- package/sdk/dist/namespaces/session.js +2 -2
- package/sdk/dist/namespaces/session.js.map +1 -1
- package/sdk/dist/namespaces/tier.d.ts +3 -3
- package/sdk/dist/namespaces/tier.d.ts.map +1 -1
- package/sdk/dist/namespaces/{gitvault.crypto.d.ts → vault.crypto.d.ts} +141 -141
- package/sdk/dist/namespaces/vault.crypto.d.ts.map +1 -0
- package/sdk/dist/namespaces/{gitvault.crypto.js → vault.crypto.js} +173 -173
- package/sdk/dist/namespaces/vault.crypto.js.map +1 -0
- package/sdk/dist/namespaces/{gitvault.types.d.ts → vault.types.d.ts} +136 -136
- package/sdk/dist/namespaces/vault.types.d.ts.map +1 -0
- package/sdk/dist/namespaces/{gitvault.types.js → vault.types.js} +4 -4
- package/sdk/dist/namespaces/vault.types.js.map +1 -0
- package/sdk/dist/node/bearer-redeem-key.d.ts +1 -1
- package/sdk/dist/node/bearer-redeem-key.js +5 -5
- package/sdk/dist/node/bearer-redeem-key.js.map +1 -1
- package/sdk/dist/node/credentials.d.ts +9 -9
- package/sdk/dist/node/credentials.d.ts.map +1 -1
- package/sdk/dist/node/credentials.js +12 -12
- package/sdk/dist/node/credentials.js.map +1 -1
- package/sdk/dist/node/http-dispatcher.js +5 -5
- package/sdk/dist/node/http-dispatcher.js.map +1 -1
- package/sdk/dist/node/index.d.ts +34 -34
- package/sdk/dist/node/index.d.ts.map +1 -1
- package/sdk/dist/node/index.js +41 -41
- package/sdk/dist/node/index.js.map +1 -1
- package/sdk/dist/node/{gitvault-address.d.ts → vault-address.d.ts} +42 -42
- package/sdk/dist/node/vault-address.d.ts.map +1 -0
- package/sdk/dist/node/{gitvault-address.js → vault-address.js} +43 -43
- package/sdk/dist/node/vault-address.js.map +1 -0
- package/sdk/dist/node/{gitvault-apply.d.ts → vault-apply.d.ts} +27 -27
- package/sdk/dist/node/vault-apply.d.ts.map +1 -0
- package/sdk/dist/node/{gitvault-apply.js → vault-apply.js} +38 -38
- package/sdk/dist/node/vault-apply.js.map +1 -0
- package/sdk/dist/node/vault-byo-config.d.ts +29 -0
- package/sdk/dist/node/vault-byo-config.d.ts.map +1 -0
- package/sdk/dist/node/{gitvault-byo-config.js → vault-byo-config.js} +18 -18
- package/sdk/dist/node/vault-byo-config.js.map +1 -0
- package/sdk/dist/node/vault-byo-probe.d.ts +20 -0
- package/sdk/dist/node/vault-byo-probe.d.ts.map +1 -0
- package/sdk/dist/node/vault-byo-probe.js +57 -0
- package/sdk/dist/node/vault-byo-probe.js.map +1 -0
- package/sdk/dist/node/{gitvault-creation-journal.d.ts → vault-creation-journal.d.ts} +69 -69
- package/sdk/dist/node/vault-creation-journal.d.ts.map +1 -0
- package/sdk/dist/node/{gitvault-creation-journal.js → vault-creation-journal.js} +54 -54
- package/sdk/dist/node/vault-creation-journal.js.map +1 -0
- package/sdk/dist/node/{gitvault-degraded-read.d.ts → vault-degraded-read.d.ts} +34 -34
- package/sdk/dist/node/vault-degraded-read.d.ts.map +1 -0
- package/sdk/dist/node/{gitvault-degraded-read.js → vault-degraded-read.js} +24 -24
- package/sdk/dist/node/vault-degraded-read.js.map +1 -0
- package/sdk/dist/node/{gitvault-deploy.d.ts → vault-deploy.d.ts} +67 -67
- package/sdk/dist/node/vault-deploy.d.ts.map +1 -0
- package/sdk/dist/node/{gitvault-deploy.js → vault-deploy.js} +27 -27
- package/sdk/dist/node/vault-deploy.js.map +1 -0
- package/sdk/dist/node/{gitvault-edge-fetch.d.ts → vault-edge-fetch.d.ts} +9 -9
- package/sdk/dist/node/vault-edge-fetch.d.ts.map +1 -0
- package/sdk/dist/node/{gitvault-edge-fetch.js → vault-edge-fetch.js} +11 -11
- package/sdk/dist/node/vault-edge-fetch.js.map +1 -0
- package/sdk/dist/node/{gitvault-handoff.d.ts → vault-handoff.d.ts} +9 -9
- package/sdk/dist/node/vault-handoff.d.ts.map +1 -0
- package/sdk/dist/node/{gitvault-handoff.js → vault-handoff.js} +24 -24
- package/sdk/dist/node/vault-handoff.js.map +1 -0
- package/sdk/dist/node/{gitvault-keystore.d.ts → vault-keystore.d.ts} +87 -77
- package/sdk/dist/node/vault-keystore.d.ts.map +1 -0
- package/sdk/dist/node/{gitvault-keystore.js → vault-keystore.js} +105 -68
- package/sdk/dist/node/vault-keystore.js.map +1 -0
- package/sdk/dist/node/{gitvault-member-bundle.d.ts → vault-member-bundle.d.ts} +17 -17
- package/sdk/dist/node/vault-member-bundle.d.ts.map +1 -0
- package/sdk/dist/node/{gitvault-member-bundle.js → vault-member-bundle.js} +11 -11
- package/sdk/dist/node/vault-member-bundle.js.map +1 -0
- package/sdk/dist/node/{gitvault-mirror-backend.d.ts → vault-mirror-backend.d.ts} +26 -26
- package/sdk/dist/node/vault-mirror-backend.d.ts.map +1 -0
- package/sdk/dist/node/{gitvault-mirror-backend.js → vault-mirror-backend.js} +25 -25
- package/sdk/dist/node/vault-mirror-backend.js.map +1 -0
- package/sdk/dist/node/{gitvault-mirror-config.d.ts → vault-mirror-config.d.ts} +23 -23
- package/sdk/dist/node/vault-mirror-config.d.ts.map +1 -0
- package/sdk/dist/node/{gitvault-mirror-config.js → vault-mirror-config.js} +16 -16
- package/sdk/dist/node/vault-mirror-config.js.map +1 -0
- package/sdk/dist/node/{gitvault-mirror.d.ts → vault-mirror.d.ts} +36 -36
- package/sdk/dist/node/vault-mirror.d.ts.map +1 -0
- package/sdk/dist/node/{gitvault-mirror.js → vault-mirror.js} +75 -75
- package/sdk/dist/node/vault-mirror.js.map +1 -0
- package/sdk/dist/node/{gitvault-native-crypto.d.ts → vault-native-crypto.d.ts} +10 -10
- package/sdk/dist/node/vault-native-crypto.d.ts.map +1 -0
- package/sdk/dist/node/{gitvault-native-crypto.js → vault-native-crypto.js} +16 -16
- package/sdk/dist/node/vault-native-crypto.js.map +1 -0
- package/sdk/dist/node/{gitvault-open-or-create.d.ts → vault-open-or-create.d.ts} +16 -16
- package/sdk/dist/node/vault-open-or-create.d.ts.map +1 -0
- package/sdk/dist/node/{gitvault-open-or-create.js → vault-open-or-create.js} +10 -10
- package/sdk/dist/node/vault-open-or-create.js.map +1 -0
- package/sdk/dist/node/{gitvault-prewarm.d.ts → vault-prewarm.d.ts} +13 -13
- package/sdk/dist/node/vault-prewarm.d.ts.map +1 -0
- package/sdk/dist/node/{gitvault-prewarm.js → vault-prewarm.js} +25 -25
- package/sdk/dist/node/vault-prewarm.js.map +1 -0
- package/sdk/dist/node/{gitvault-profile-scan.d.ts → vault-profile-scan.d.ts} +3 -3
- package/sdk/dist/node/vault-profile-scan.d.ts.map +1 -0
- package/sdk/dist/node/{gitvault-profile-scan.js → vault-profile-scan.js} +12 -12
- package/sdk/dist/node/vault-profile-scan.js.map +1 -0
- package/sdk/dist/node/{gitvault-prune.d.ts → vault-prune.d.ts} +61 -61
- package/sdk/dist/node/vault-prune.d.ts.map +1 -0
- package/sdk/dist/node/{gitvault-prune.js → vault-prune.js} +34 -34
- package/sdk/dist/node/vault-prune.js.map +1 -0
- package/sdk/dist/node/{gitvault-publication.d.ts → vault-publication.d.ts} +399 -399
- package/sdk/dist/node/vault-publication.d.ts.map +1 -0
- package/sdk/dist/node/{gitvault-publication.js → vault-publication.js} +584 -584
- package/sdk/dist/node/vault-publication.js.map +1 -0
- package/sdk/dist/node/{gitvault-push-to-create.d.ts → vault-push-to-create.d.ts} +16 -16
- package/sdk/dist/node/vault-push-to-create.d.ts.map +1 -0
- package/sdk/dist/node/{gitvault-push-to-create.js → vault-push-to-create.js} +9 -9
- package/sdk/dist/node/vault-push-to-create.js.map +1 -0
- package/sdk/dist/node/{gitvault-recover.d.ts → vault-recover.d.ts} +50 -50
- package/sdk/dist/node/vault-recover.d.ts.map +1 -0
- package/sdk/dist/node/{gitvault-recover.js → vault-recover.js} +84 -84
- package/sdk/dist/node/vault-recover.js.map +1 -0
- package/sdk/dist/node/{gitvault-restore.d.ts → vault-restore.d.ts} +8 -8
- package/sdk/dist/node/vault-restore.d.ts.map +1 -0
- package/sdk/dist/node/{gitvault-restore.js → vault-restore.js} +11 -11
- package/sdk/dist/node/vault-restore.js.map +1 -0
- package/sdk/dist/node/{gitvault-snapshot.d.ts → vault-snapshot.d.ts} +48 -48
- package/sdk/dist/node/vault-snapshot.d.ts.map +1 -0
- package/sdk/dist/node/{gitvault-snapshot.js → vault-snapshot.js} +61 -61
- package/sdk/dist/node/vault-snapshot.js.map +1 -0
- package/sdk/dist/node/{gitvault-writer-state.d.ts → vault-writer-state.d.ts} +8 -8
- package/sdk/dist/node/vault-writer-state.d.ts.map +1 -0
- package/sdk/dist/node/{gitvault-writer-state.js → vault-writer-state.js} +15 -15
- package/sdk/dist/node/vault-writer-state.js.map +1 -0
- package/sdk/dist/node/workflow-output.js +4 -4
- package/sdk/dist/node/workflow-output.js.map +1 -1
- package/sdk/dist/project-auth-classification.d.ts +8 -8
- package/sdk/dist/project-auth-classification.d.ts.map +1 -1
- package/sdk/dist/project-auth-classification.js +7 -7
- package/sdk/dist/project-auth-classification.js.map +1 -1
- package/sdk/dist/scoped.d.ts +6 -14
- package/sdk/dist/scoped.d.ts.map +1 -1
- package/sdk/dist/scoped.js +10 -21
- package/sdk/dist/scoped.js.map +1 -1
- package/vault-surface.json +40 -0
- package/gitvault-surface.json +0 -89
- package/lib/delegates.mjs +0 -189
- package/lib/gitvault.mjs +0 -163
- package/lib/source-access.mjs +0 -70
- package/sdk/dist/delegate-credentials.d.ts +0 -37
- package/sdk/dist/delegate-credentials.d.ts.map +0 -1
- package/sdk/dist/delegate-credentials.js +0 -41
- package/sdk/dist/delegate-credentials.js.map +0 -1
- package/sdk/dist/namespaces/delegates.d.ts +0 -50
- package/sdk/dist/namespaces/delegates.d.ts.map +0 -1
- package/sdk/dist/namespaces/delegates.js +0 -99
- package/sdk/dist/namespaces/delegates.js.map +0 -1
- package/sdk/dist/namespaces/delegates.types.d.ts +0 -88
- package/sdk/dist/namespaces/delegates.types.d.ts.map +0 -1
- package/sdk/dist/namespaces/delegates.types.js +0 -10
- package/sdk/dist/namespaces/delegates.types.js.map +0 -1
- package/sdk/dist/namespaces/gitvault.crypto.d.ts.map +0 -1
- package/sdk/dist/namespaces/gitvault.crypto.js.map +0 -1
- package/sdk/dist/namespaces/gitvault.d.ts.map +0 -1
- package/sdk/dist/namespaces/gitvault.js.map +0 -1
- package/sdk/dist/namespaces/gitvault.types.d.ts.map +0 -1
- package/sdk/dist/namespaces/gitvault.types.js.map +0 -1
- package/sdk/dist/node/gitvault-address.d.ts.map +0 -1
- package/sdk/dist/node/gitvault-address.js.map +0 -1
- package/sdk/dist/node/gitvault-apply.d.ts.map +0 -1
- package/sdk/dist/node/gitvault-apply.js.map +0 -1
- package/sdk/dist/node/gitvault-byo-config.d.ts +0 -29
- package/sdk/dist/node/gitvault-byo-config.d.ts.map +0 -1
- package/sdk/dist/node/gitvault-byo-config.js.map +0 -1
- package/sdk/dist/node/gitvault-byo-probe.d.ts +0 -20
- package/sdk/dist/node/gitvault-byo-probe.d.ts.map +0 -1
- package/sdk/dist/node/gitvault-byo-probe.js +0 -57
- package/sdk/dist/node/gitvault-byo-probe.js.map +0 -1
- package/sdk/dist/node/gitvault-creation-journal.d.ts.map +0 -1
- package/sdk/dist/node/gitvault-creation-journal.js.map +0 -1
- package/sdk/dist/node/gitvault-degraded-read.d.ts.map +0 -1
- package/sdk/dist/node/gitvault-degraded-read.js.map +0 -1
- package/sdk/dist/node/gitvault-deploy.d.ts.map +0 -1
- package/sdk/dist/node/gitvault-deploy.js.map +0 -1
- package/sdk/dist/node/gitvault-edge-fetch.d.ts.map +0 -1
- package/sdk/dist/node/gitvault-edge-fetch.js.map +0 -1
- package/sdk/dist/node/gitvault-handoff.d.ts.map +0 -1
- package/sdk/dist/node/gitvault-handoff.js.map +0 -1
- package/sdk/dist/node/gitvault-keystore.d.ts.map +0 -1
- package/sdk/dist/node/gitvault-keystore.js.map +0 -1
- package/sdk/dist/node/gitvault-member-bundle.d.ts.map +0 -1
- package/sdk/dist/node/gitvault-member-bundle.js.map +0 -1
- package/sdk/dist/node/gitvault-mirror-backend.d.ts.map +0 -1
- package/sdk/dist/node/gitvault-mirror-backend.js.map +0 -1
- package/sdk/dist/node/gitvault-mirror-config.d.ts.map +0 -1
- package/sdk/dist/node/gitvault-mirror-config.js.map +0 -1
- package/sdk/dist/node/gitvault-mirror.d.ts.map +0 -1
- package/sdk/dist/node/gitvault-mirror.js.map +0 -1
- package/sdk/dist/node/gitvault-native-crypto.d.ts.map +0 -1
- package/sdk/dist/node/gitvault-native-crypto.js.map +0 -1
- package/sdk/dist/node/gitvault-open-or-create.d.ts.map +0 -1
- package/sdk/dist/node/gitvault-open-or-create.js.map +0 -1
- package/sdk/dist/node/gitvault-prewarm.d.ts.map +0 -1
- package/sdk/dist/node/gitvault-prewarm.js.map +0 -1
- package/sdk/dist/node/gitvault-profile-scan.d.ts.map +0 -1
- package/sdk/dist/node/gitvault-profile-scan.js.map +0 -1
- package/sdk/dist/node/gitvault-prune.d.ts.map +0 -1
- package/sdk/dist/node/gitvault-prune.js.map +0 -1
- package/sdk/dist/node/gitvault-publication.d.ts.map +0 -1
- package/sdk/dist/node/gitvault-publication.js.map +0 -1
- package/sdk/dist/node/gitvault-push-to-create.d.ts.map +0 -1
- package/sdk/dist/node/gitvault-push-to-create.js.map +0 -1
- package/sdk/dist/node/gitvault-recover.d.ts.map +0 -1
- package/sdk/dist/node/gitvault-recover.js.map +0 -1
- package/sdk/dist/node/gitvault-restore.d.ts.map +0 -1
- package/sdk/dist/node/gitvault-restore.js.map +0 -1
- package/sdk/dist/node/gitvault-snapshot.d.ts.map +0 -1
- package/sdk/dist/node/gitvault-snapshot.js.map +0 -1
- package/sdk/dist/node/gitvault-writer-state.d.ts.map +0 -1
- package/sdk/dist/node/gitvault-writer-state.js.map +0 -1
package/lib/path-lookup.mjs
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `path-lookup.mjs` — the tiny, dependency-free "is this executable on
|
|
3
|
-
* PATH" check
|
|
4
|
-
*
|
|
5
|
-
*
|
|
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
|
|
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("
|
|
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
|
|
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
|
|
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
|
}
|
package/lib/path-lookup.test.mjs
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `path-lookup.mjs` — the PATH-executable probe `
|
|
3
|
-
* `
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
64
|
-
assert.equal(isExecutableOnPath("git-remote-
|
|
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
|
|
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 =
|
|
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-
|
|
78
|
-
assert.equal(missing.command, "npm i -g
|
|
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-
|
|
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
|
-
//
|
|
84
|
-
writeFileSync(join(dir, ".git", "config"), `[remote "origin"]\n\turl =
|
|
85
|
-
assert.
|
|
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 {
|
package/lib/projects.mjs
CHANGED
|
@@ -164,7 +164,7 @@ Options:
|
|
|
164
164
|
|
|
165
165
|
Notes:
|
|
166
166
|
- Requires project.tenant_payments.read: org developer+ or a read-scoped
|
|
167
|
-
project grant
|
|
167
|
+
project grant or grant key.
|
|
168
168
|
- Output is the gateway's redacted payment page. Raw X-PAYMENT headers,
|
|
169
169
|
authorization hashes, and internal metadata are never returned.
|
|
170
170
|
`,
|