@nimbus-sh/worker 0.9.0 → 0.11.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/NOTICE.md +5 -0
- package/README.md +10 -0
- package/dist/_shared/session-router.d.ts +7 -0
- package/dist/_shared/session-router.d.ts.map +1 -1
- package/dist/_shared/session-router.js +7 -0
- package/dist/bindings/body.d.ts +6 -0
- package/dist/bindings/body.d.ts.map +1 -0
- package/dist/bindings/body.js +37 -0
- package/dist/bindings/kv.d.ts +0 -2
- package/dist/bindings/kv.d.ts.map +1 -1
- package/dist/bindings/kv.js +3 -42
- package/dist/bindings/r2.d.ts +0 -2
- package/dist/bindings/r2.d.ts.map +1 -1
- package/dist/bindings/r2.js +4 -44
- package/dist/esbuild-cli-artifact.generated.d.ts +18 -0
- package/dist/esbuild-cli-artifact.generated.d.ts.map +1 -0
- package/dist/esbuild-cli-artifact.generated.js +17 -0
- package/dist/esbuild-wasm-bundle.generated.d.ts +24 -24
- package/dist/esbuild-wasm-bundle.generated.d.ts.map +1 -1
- package/dist/esbuild-wasm-bundle.generated.js +24 -24
- package/dist/facets/cirrus-real.d.ts.map +1 -1
- package/dist/facets/cirrus-real.js +11 -6
- package/dist/facets/compose.d.ts +11 -7
- package/dist/facets/compose.d.ts.map +1 -1
- package/dist/facets/compose.js +8 -31
- package/dist/facets/data-plan.d.ts +79 -0
- package/dist/facets/data-plan.d.ts.map +1 -0
- package/dist/facets/data-plan.js +477 -0
- package/dist/facets/esbuild-bundle-pool.d.ts +1 -1
- package/dist/facets/esbuild-bundle-pool.js +3 -3
- package/dist/facets/esbuild-transform.d.ts +38 -8
- package/dist/facets/esbuild-transform.d.ts.map +1 -1
- package/dist/facets/esbuild-transform.js +219 -19
- package/dist/facets/exec-telemetry.d.ts +7 -3
- package/dist/facets/exec-telemetry.d.ts.map +1 -1
- package/dist/facets/manager.d.ts +198 -69
- package/dist/facets/manager.d.ts.map +1 -1
- package/dist/facets/manager.js +1276 -652
- package/dist/facets/opencode-staging.d.ts +0 -2
- package/dist/facets/opencode-staging.d.ts.map +1 -1
- package/dist/facets/opencode-staging.js +5 -11
- package/dist/facets/process.d.ts +4 -0
- package/dist/facets/process.d.ts.map +1 -1
- package/dist/facets/process.js +3 -0
- package/dist/facets/read-profile.d.ts +149 -0
- package/dist/facets/read-profile.d.ts.map +1 -0
- package/dist/facets/read-profile.js +483 -0
- package/dist/facets/real-vite-hmr.d.ts +2 -0
- package/dist/facets/real-vite-hmr.d.ts.map +1 -1
- package/dist/facets/real-vite-hmr.js +3 -2
- package/dist/facets/resident-identity.d.ts +0 -1
- package/dist/facets/resident-identity.d.ts.map +1 -1
- package/dist/facets/resident-identity.js +0 -3
- package/dist/facets/wasm-swap-registry.d.ts +34 -25
- package/dist/facets/wasm-swap-registry.d.ts.map +1 -1
- package/dist/facets/wasm-swap-registry.js +62 -56
- package/dist/facets/ws-terminal.d.ts +4 -4
- package/dist/facets/ws-terminal.d.ts.map +1 -1
- package/dist/facets/ws-terminal.js +4 -5
- package/dist/git/commands.d.ts +33 -10
- package/dist/git/commands.d.ts.map +1 -1
- package/dist/git/commands.js +1891 -197
- package/dist/git/network-facet.d.ts +12 -2
- package/dist/git/network-facet.d.ts.map +1 -1
- package/dist/git/network-facet.js +69 -18
- package/dist/git/unified-diff.d.ts +74 -0
- package/dist/git/unified-diff.d.ts.map +1 -0
- package/dist/git/unified-diff.js +676 -0
- package/dist/git-bundle.generated.d.ts +7 -11
- package/dist/git-bundle.generated.d.ts.map +1 -1
- package/dist/git-bundle.generated.js +7 -11
- package/dist/hosted/commands.d.ts.map +1 -1
- package/dist/hosted/commands.js +64 -245
- package/dist/hosted/runtime.d.ts +22 -15
- package/dist/hosted/runtime.d.ts.map +1 -1
- package/dist/hosted/runtime.js +72 -14
- package/dist/hosted/services.d.ts +8 -1
- package/dist/hosted/services.d.ts.map +1 -1
- package/dist/hosted/services.js +12 -13
- package/dist/hosted/session.d.ts +165 -0
- package/dist/hosted/session.d.ts.map +1 -0
- package/dist/hosted/session.js +132 -0
- package/dist/loaders/generated-workers.d.ts +6 -3
- package/dist/loaders/generated-workers.d.ts.map +1 -1
- package/dist/loaders/generated-workers.js +8 -5
- package/dist/loaders/npm-resolve-preamble.d.ts.map +1 -1
- package/dist/loaders/npm-resolve-preamble.js +0 -27
- package/dist/loaders/pre-bundle-preamble.d.ts +6 -3
- package/dist/loaders/pre-bundle-preamble.d.ts.map +1 -1
- package/dist/loaders/pre-bundle-preamble.js +13 -8
- package/dist/node-shims-artifact.generated.d.ts +13 -4
- package/dist/node-shims-artifact.generated.d.ts.map +1 -1
- package/dist/node-shims-artifact.generated.js +16 -7
- package/dist/npm/bin-links.d.ts +3 -1
- package/dist/npm/bin-links.d.ts.map +1 -1
- package/dist/npm/bin-links.js +32 -8
- package/dist/npm/cache.d.ts +11 -1
- package/dist/npm/cache.d.ts.map +1 -1
- package/dist/npm/cache.js +21 -7
- package/dist/npm/install-batch-facet.d.ts +4 -2
- package/dist/npm/install-batch-facet.d.ts.map +1 -1
- package/dist/npm/install-batch-facet.js +32 -18
- package/dist/npm/installer.d.ts +23 -3
- package/dist/npm/installer.d.ts.map +1 -1
- package/dist/npm/installer.js +330 -131
- package/dist/npm/npx-install.d.ts +3 -1
- package/dist/npm/npx-install.d.ts.map +1 -1
- package/dist/npm/npx-install.js +4 -1
- package/dist/npm/package-lock.d.ts +32 -0
- package/dist/npm/package-lock.d.ts.map +1 -0
- package/dist/npm/package-lock.js +65 -0
- package/dist/npm/placement.d.ts +16 -0
- package/dist/npm/placement.d.ts.map +1 -0
- package/dist/npm/placement.js +33 -0
- package/dist/npm/pre-bundle-facet.d.ts +1 -30
- package/dist/npm/pre-bundle-facet.d.ts.map +1 -1
- package/dist/npm/pre-bundle-facet.js +3 -5
- package/dist/npm/r2-cache.d.ts +12 -6
- package/dist/npm/r2-cache.d.ts.map +1 -1
- package/dist/npm/r2-cache.js +34 -16
- package/dist/npm/resolve-one-facet.d.ts +3 -0
- package/dist/npm/resolve-one-facet.d.ts.map +1 -1
- package/dist/npm/resolve-one-facet.js +15 -3
- package/dist/npm/resolver.d.ts +11 -13
- package/dist/npm/resolver.d.ts.map +1 -1
- package/dist/npm/resolver.js +12 -25
- package/dist/opencode-artifact.generated.js +2 -2
- package/dist/replica/routing.d.ts +2 -38
- package/dist/replica/routing.d.ts.map +1 -1
- package/dist/replica/routing.js +3 -55
- package/dist/router/index.d.ts.map +1 -1
- package/dist/router/index.js +15 -2
- package/dist/router/public-directory.d.ts +18 -0
- package/dist/router/public-directory.d.ts.map +1 -1
- package/dist/router/public-directory.js +1 -1
- package/dist/router/remote-api.d.ts +3 -1
- package/dist/router/remote-api.d.ts.map +1 -1
- package/dist/router/remote-api.js +42 -79
- package/dist/runtime/bash-repl.js +2 -2
- package/dist/runtime/bun-repl.d.ts.map +1 -1
- package/dist/runtime/bun-repl.js +2 -13
- package/dist/runtime/cpython-resident.d.ts.map +1 -1
- package/dist/runtime/cpython-resident.js +2 -10
- package/dist/runtime/esbuild-wasm-bytes.d.ts +37 -18
- package/dist/runtime/esbuild-wasm-bytes.d.ts.map +1 -1
- package/dist/runtime/esbuild-wasm-bytes.js +66 -92
- package/dist/runtime/facet-loader-host.d.ts.map +1 -1
- package/dist/runtime/facet-loader-host.js +0 -7
- package/dist/runtime/git-bundle-artifact.d.ts +17 -0
- package/dist/runtime/git-bundle-artifact.d.ts.map +1 -0
- package/dist/runtime/git-bundle-artifact.js +25 -0
- package/dist/runtime/node-repl.d.ts.map +1 -1
- package/dist/runtime/node-repl.js +2 -13
- package/dist/runtime/node-shims-artifact.d.ts +22 -23
- package/dist/runtime/node-shims-artifact.d.ts.map +1 -1
- package/dist/runtime/node-shims-artifact.js +48 -78
- package/dist/runtime/node-shims.d.ts.map +1 -1
- package/dist/runtime/node-shims.js +2358 -996
- package/dist/runtime/opencode-artifact.d.ts.map +1 -1
- package/dist/runtime/opencode-artifact.js +17 -53
- package/dist/runtime/opencode-facet-runner.d.ts +3 -6
- package/dist/runtime/opencode-facet-runner.d.ts.map +1 -1
- package/dist/runtime/opencode-facet-runner.js +45 -10
- package/dist/runtime/opentui-wasm-bytes.d.ts.map +1 -1
- package/dist/runtime/opentui-wasm-bytes.js +16 -49
- package/dist/runtime/package-manager.d.ts +0 -2
- package/dist/runtime/package-manager.d.ts.map +1 -1
- package/dist/runtime/package-manager.js +0 -3
- package/dist/runtime/python-repl.d.ts.map +1 -1
- package/dist/runtime/python-repl.js +4 -35
- package/dist/runtime/repl-session.d.ts +10 -0
- package/dist/runtime/repl-session.d.ts.map +1 -1
- package/dist/runtime/repl-session.js +7 -0
- package/dist/runtime/ruby-repl.d.ts.map +1 -1
- package/dist/runtime/ruby-repl.js +2 -2
- package/dist/runtime/ruby-resident.d.ts.map +1 -1
- package/dist/runtime/ruby-resident.js +41 -51
- package/dist/runtime/runtime-catalog.d.ts +10 -3
- package/dist/runtime/runtime-catalog.d.ts.map +1 -1
- package/dist/runtime/runtime-catalog.js +125 -15
- package/dist/runtime/sqlite-wasm-bytes.d.ts +4 -4
- package/dist/runtime/sqlite-wasm-bytes.d.ts.map +1 -1
- package/dist/runtime/sqlite-wasm-bytes.js +21 -57
- package/dist/runtime/staged-source.d.ts +67 -0
- package/dist/runtime/staged-source.d.ts.map +1 -0
- package/dist/runtime/staged-source.js +113 -0
- package/dist/runtime/wasi/preamble.d.ts +0 -22
- package/dist/runtime/wasi/preamble.d.ts.map +1 -1
- package/dist/runtime/wasi/preamble.js +98 -1425
- package/dist/runtime-catalog.generated.js +1 -1
- package/dist/session/agent.d.ts +14 -2
- package/dist/session/agent.d.ts.map +1 -1
- package/dist/session/agent.js +57 -19
- package/dist/session/ai.d.ts +0 -11
- package/dist/session/ai.d.ts.map +1 -1
- package/dist/session/ai.js +0 -4
- package/dist/session/fs-watch.d.ts +0 -11
- package/dist/session/fs-watch.d.ts.map +1 -1
- package/dist/session/fs-watch.js +0 -21
- package/dist/session/hibernation.d.ts +68 -2
- package/dist/session/hibernation.d.ts.map +1 -1
- package/dist/session/hibernation.js +95 -1
- package/dist/session/init-phases.d.ts +1 -2
- package/dist/session/init-phases.d.ts.map +1 -1
- package/dist/session/init-phases.js +1 -2
- package/dist/session/init.d.ts.map +1 -1
- package/dist/session/init.js +7 -20
- package/dist/session/keys.d.ts +0 -3
- package/dist/session/keys.d.ts.map +1 -1
- package/dist/session/keys.js +0 -3
- package/dist/session/legacy-reset.d.ts +11 -0
- package/dist/session/legacy-reset.d.ts.map +1 -0
- package/dist/session/legacy-reset.js +16 -0
- package/dist/session/nimbus-session.d.ts +50 -16
- package/dist/session/nimbus-session.d.ts.map +1 -1
- package/dist/session/nimbus-session.js +77 -71
- package/dist/session/npm-install-port.d.ts.map +1 -1
- package/dist/session/npm-install-port.js +2 -0
- package/dist/session/programmatic.d.ts +13 -18
- package/dist/session/programmatic.d.ts.map +1 -1
- package/dist/session/programmatic.js +53 -39
- package/dist/session/replica-routes.d.ts +2 -3
- package/dist/session/replica-routes.d.ts.map +1 -1
- package/dist/session/replica-routes.js +3 -10
- package/dist/session/routes.d.ts.map +1 -1
- package/dist/session/routes.js +11 -12
- package/dist/session/rpc.d.ts +108 -21
- package/dist/session/rpc.d.ts.map +1 -1
- package/dist/session/rpc.js +194 -39
- package/dist/session/start-real-vite.js +2 -2
- package/dist/session/state-store.d.ts +1 -17
- package/dist/session/state-store.d.ts.map +1 -1
- package/dist/session/state-store.js +3 -53
- package/dist/session/supervisor-op.d.ts +7 -0
- package/dist/session/supervisor-op.d.ts.map +1 -1
- package/dist/session/supervisor-op.js +6 -1
- package/dist/session/supervisor-rpc.d.ts +116 -19
- package/dist/session/supervisor-rpc.d.ts.map +1 -1
- package/dist/session/supervisor-rpc.js +194 -84
- package/dist/session/vite-command.d.ts.map +1 -1
- package/dist/session/vite-command.js +17 -14
- package/dist/session/ws.d.ts.map +1 -1
- package/dist/session/ws.js +20 -8
- package/dist/shell/npm-bin-entrypoints.d.ts.map +1 -1
- package/dist/shell/npm-bin-entrypoints.js +30 -5
- package/dist/vfs/facet-resident-limits.d.ts +33 -0
- package/dist/vfs/facet-resident-limits.d.ts.map +1 -0
- package/dist/vfs/facet-resident-limits.js +33 -0
- package/dist/vfs/facet-resident-store.d.ts +2 -10
- package/dist/vfs/facet-resident-store.d.ts.map +1 -1
- package/dist/vfs/facet-resident-store.js +1594 -219
- package/dist/workspace-host.d.ts +3 -1
- package/dist/workspace-host.d.ts.map +1 -1
- package/dist/workspace-host.js +2 -0
- package/dist/wrangler/nimbus-wrangler.d.ts +0 -2
- package/dist/wrangler/nimbus-wrangler.d.ts.map +1 -1
- package/dist/wrangler/nimbus-wrangler.js +8 -22
- package/package.json +34 -7
- package/public/_assets/esbuild-0.24.2.js +2380 -0
- package/public/_assets/opencode/1.16.2/index-attach.js +2 -2
- package/public/_assets/runtime/esbuild-cli-c4fda380d52befc1.js +6892 -0
- package/public/_assets/runtime/git-de3e60c9f3ff006a.js +103 -0
- package/public/_assets/runtime/{node-shims-acaa037e6d26ec0d.js → node-shims-06565b121555c194.js} +2879 -992
- package/public/_assets/runtime/resident-store-6ffb1939c53d982f.js +2264 -0
- package/public/_assets/runtime/vfs-write-ledger-e501e8fc793bc2c1.js +889 -0
- package/scripts/build-opencode-attach-entry.mjs +51 -1
- package/scripts/bundle-esbuild-wasm.mjs +55 -39
- package/scripts/bundle-facet-workers.mjs +159 -10
- package/scripts/bundle-git.mjs +88 -27
- package/scripts/bundle-node-shims.mjs +72 -46
- package/scripts/bundle-runtime.mjs +18 -421
- package/scripts/cf-git-patch.mjs +137 -0
- package/scripts/patch-install-deps.mjs +49 -96
- package/scripts/runtime-specs.mjs +435 -0
- package/vendor/git-http.generated.d.ts +82 -0
- package/vendor/git-upstream.generated.d.ts +4378 -0
- package/vendor/git.LICENSE +7 -0
- package/vendor/git.generated.d.mts +21 -0
- package/vendor/git.generated.mjs +103 -0
- package/dist/replica/suspension.d.ts +0 -36
- package/dist/replica/suspension.d.ts.map +0 -1
- package/dist/replica/suspension.js +0 -49
- package/dist/runtime/static-server.d.ts +0 -3
- package/dist/runtime/static-server.d.ts.map +0 -1
- package/dist/runtime/static-server.js +0 -133
- package/scripts/clean-dist.mjs +0 -7
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* git
|
|
2
|
+
* git/network-facet.ts — Facet-based git clone/fetch/pull.
|
|
3
3
|
*
|
|
4
4
|
* Runs isomorphic-git's network operations (clone/fetch/pull) inside a
|
|
5
5
|
* dynamic worker (LOADER.load) to escape the supervisor DO's CPU budget
|
|
@@ -33,6 +33,8 @@ export interface GitNetworkOpts {
|
|
|
33
33
|
dir: string;
|
|
34
34
|
/** For clone: repository URL */
|
|
35
35
|
url?: string;
|
|
36
|
+
/** `git clone -q`: no progress on the terminal; the result is unchanged. */
|
|
37
|
+
quiet?: boolean;
|
|
36
38
|
/** For fetch/pull: remote name (default "origin") */
|
|
37
39
|
remote?: string;
|
|
38
40
|
/** For clone: branch to clone (default remote HEAD); for pull: branch name (default current) */
|
|
@@ -44,10 +46,18 @@ export interface GitNetworkOpts {
|
|
|
44
46
|
username: string;
|
|
45
47
|
password: string;
|
|
46
48
|
};
|
|
47
|
-
/** Author (for pull merges) */
|
|
49
|
+
/** Author and committer (for pull merges), as the supervisor's git resolved them. */
|
|
48
50
|
author?: {
|
|
49
51
|
name: string;
|
|
50
52
|
email: string;
|
|
53
|
+
timestamp?: number;
|
|
54
|
+
timezoneOffset?: number;
|
|
55
|
+
};
|
|
56
|
+
committer?: {
|
|
57
|
+
name: string;
|
|
58
|
+
email: string;
|
|
59
|
+
timestamp?: number;
|
|
60
|
+
timezoneOffset?: number;
|
|
51
61
|
};
|
|
52
62
|
/** Total operation budget (ms). Clone default 30 min; other ops default 5 min. */
|
|
53
63
|
timeout?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network-facet.d.ts","sourceRoot":"","sources":["../../src/git/network-facet.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;
|
|
1
|
+
{"version":3,"file":"network-facet.d.ts","sourceRoot":"","sources":["../../src/git/network-facet.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* git
|
|
2
|
+
* git/network-facet.ts — Facet-based git clone/fetch/pull.
|
|
3
3
|
*
|
|
4
4
|
* Runs isomorphic-git's network operations (clone/fetch/pull) inside a
|
|
5
5
|
* dynamic worker (LOADER.load) to escape the supervisor DO's CPU budget
|
|
@@ -25,9 +25,10 @@
|
|
|
25
25
|
* in the PR that introduced this file.
|
|
26
26
|
*/
|
|
27
27
|
import { getCtxExports } from '@nimbus-sh/fabric/composition.js';
|
|
28
|
+
import { supervisorBindingProps } from '@nimbus-sh/fabric/supervisor-props.js';
|
|
28
29
|
import { CF_COMPAT_DATE } from '@nimbus-sh/core/constants.js';
|
|
29
30
|
import { MAX_RPC_SAFE_PAYLOAD_BYTES } from '@nimbus-sh/platform/limits.js';
|
|
30
|
-
import {
|
|
31
|
+
import { fetchGitBundleSource } from '../runtime/git-bundle-artifact.js';
|
|
31
32
|
import { W7_FRAME_PREAMBLE } from '../loaders/generated-workers.js';
|
|
32
33
|
import { ESBUILD_NAME_GLOBAL_SHIM } from '@nimbus-sh/core/_shared/esbuild-facet-shim.js';
|
|
33
34
|
import { disposeRpcResource } from '@nimbus-sh/platform/rpc-dispose.js';
|
|
@@ -407,7 +408,7 @@ export async function execGitNetwork(ctx, env, opts) {
|
|
|
407
408
|
const ctxExports = getCtxExports();
|
|
408
409
|
const supervisorBinding = ctxExports?.SupervisorRPC
|
|
409
410
|
? ctxExports.SupervisorRPC({
|
|
410
|
-
props: {
|
|
411
|
+
props: { ...supervisorBindingProps(ctx, opts.pid), mutationOwner },
|
|
411
412
|
})
|
|
412
413
|
: undefined;
|
|
413
414
|
if (!supervisorBinding) {
|
|
@@ -424,6 +425,7 @@ export async function execGitNetwork(ctx, env, opts) {
|
|
|
424
425
|
let worker;
|
|
425
426
|
let entrypoint;
|
|
426
427
|
try {
|
|
428
|
+
const gitBundleSource = await fetchGitBundleSource(env);
|
|
427
429
|
const loadedWorker = env.LOADER.load({
|
|
428
430
|
compatibilityDate: CF_COMPAT_DATE,
|
|
429
431
|
compatibilityFlags: ['nodejs_compat'],
|
|
@@ -436,10 +438,11 @@ export async function execGitNetwork(ctx, env, opts) {
|
|
|
436
438
|
// `preamble` option provides for npm install. This is the
|
|
437
439
|
// W7 v3 emits one bounded record per pull; the receiver owns
|
|
438
440
|
// the aggregate 8 MiB payload-credit and transaction limits.
|
|
439
|
-
// - the pre-bundled isomorphic-git (git-bundle.js)
|
|
441
|
+
// - the pre-bundled isomorphic-git (git-bundle.js), the staged
|
|
442
|
+
// copy of vendor/git.generated.mjs (runtime/git-bundle-artifact.ts)
|
|
440
443
|
modules: {
|
|
441
444
|
'git-network-worker.js': assembleGitNetworkFacetSource(),
|
|
442
|
-
'git-bundle.js':
|
|
445
|
+
'git-bundle.js': gitBundleSource,
|
|
443
446
|
},
|
|
444
447
|
env: { SUPERVISOR: supervisorBinding },
|
|
445
448
|
});
|
|
@@ -482,7 +485,8 @@ export async function execGitNetwork(ctx, env, opts) {
|
|
|
482
485
|
? prepare.result.error
|
|
483
486
|
: 'clone-prepare returned an invalid result', prepare.diagnostic);
|
|
484
487
|
}
|
|
485
|
-
|
|
488
|
+
if (!opts.quiet)
|
|
489
|
+
await writeClonePhaseProgress(supervisorBinding, prepare.diagnostic);
|
|
486
490
|
let checkoutCursor = null;
|
|
487
491
|
let checkoutChunk = 0;
|
|
488
492
|
do {
|
|
@@ -513,7 +517,9 @@ export async function execGitNetwork(ctx, env, opts) {
|
|
|
513
517
|
budgetContext.chunksCompleted++;
|
|
514
518
|
budgetContext.processedEntries += progress.treeEntriesVisited;
|
|
515
519
|
budgetContext.decodedBytes += progress.decodedBytes;
|
|
516
|
-
|
|
520
|
+
if (!opts.quiet) {
|
|
521
|
+
await writeCloneChunkProgress(supervisorBinding, checkout.diagnostic, checkoutChunk, progress);
|
|
522
|
+
}
|
|
517
523
|
} while (checkoutCursor !== null);
|
|
518
524
|
return {
|
|
519
525
|
success: true,
|
|
@@ -550,7 +556,8 @@ export async function execGitNetwork(ctx, env, opts) {
|
|
|
550
556
|
const abort = await invokeFacet(entrypoint, 'clone-abort', crypto.randomUUID(), { ...facetOpts, jobId, optionsHash }, Date.now() + CLONE_ABORT_TIMEOUT_MS, CLONE_ABORT_TIMEOUT_MS);
|
|
551
557
|
phases.push(abort.diagnostic);
|
|
552
558
|
accountResult(abort.result);
|
|
553
|
-
|
|
559
|
+
if (!opts.quiet)
|
|
560
|
+
await writeClonePhaseProgress(supervisorBinding, abort.diagnostic);
|
|
554
561
|
if (abort.result.success !== true) {
|
|
555
562
|
cleanupError = typeof abort.result.error === 'string'
|
|
556
563
|
? abort.result.error
|
|
@@ -1077,6 +1084,18 @@ function enotdir(filepath) {
|
|
|
1077
1084
|
return err;
|
|
1078
1085
|
}
|
|
1079
1086
|
|
|
1087
|
+
function eisdir(filepath) {
|
|
1088
|
+
const err = new Error('EISDIR: illegal operation on a directory, ' + filepath);
|
|
1089
|
+
err.code = 'EISDIR'; err.errno = -21;
|
|
1090
|
+
return err;
|
|
1091
|
+
}
|
|
1092
|
+
|
|
1093
|
+
function enotempty(filepath) {
|
|
1094
|
+
const err = new Error('ENOTEMPTY: directory not empty, ' + filepath);
|
|
1095
|
+
err.code = 'ENOTEMPTY'; err.errno = -39;
|
|
1096
|
+
return err;
|
|
1097
|
+
}
|
|
1098
|
+
|
|
1080
1099
|
function einval(filepath) {
|
|
1081
1100
|
const err = new Error('EINVAL: invalid argument, ' + filepath);
|
|
1082
1101
|
err.code = 'EINVAL'; err.errno = -22;
|
|
@@ -1132,7 +1151,9 @@ function convertSupervisorStat(st) {
|
|
|
1132
1151
|
mtimeMs, mtime: new Date(mtimeMs),
|
|
1133
1152
|
ctimeMs, ctime: new Date(ctimeMs),
|
|
1134
1153
|
atimeMs, atime: new Date(atimeMs),
|
|
1135
|
-
|
|
1154
|
+
// The supervisor's git reports these same fields, so an index either side wrote stays warm.
|
|
1155
|
+
uid: Number(st.uid) || 0, gid: Number(st.gid) || 0,
|
|
1156
|
+
dev: Number(st.dev) || 0, ino: Number(st.ino) || 0, nlink: 1,
|
|
1136
1157
|
};
|
|
1137
1158
|
}
|
|
1138
1159
|
|
|
@@ -1171,7 +1192,7 @@ function emptyMetadataOverlayStats() {
|
|
|
1171
1192
|
* Files + all their parent directories become inodes; file content is
|
|
1172
1193
|
* chunked at CHUNK_SIZE boundaries to match sqlite-vfs.
|
|
1173
1194
|
*/
|
|
1174
|
-
function buildPayload(writeBuffer, dirBuffer, deleteSet, metadata, authoritativeRoot) {
|
|
1195
|
+
function buildPayload(writeBuffer, dirBuffer, deleteSet, metadata, authoritativeRoot, worktreeRoot) {
|
|
1175
1196
|
const inodes = [];
|
|
1176
1197
|
const chunks = [];
|
|
1177
1198
|
const dirs = new Set();
|
|
@@ -1179,12 +1200,12 @@ function buildPayload(writeBuffer, dirBuffer, deleteSet, metadata, authoritative
|
|
|
1179
1200
|
|
|
1180
1201
|
// Collect all parent directories for files.
|
|
1181
1202
|
for (const [path] of writeBuffer) {
|
|
1182
|
-
collectDirectoryPaths(dirs, parentOf(path), authoritativeRoot);
|
|
1203
|
+
collectDirectoryPaths(dirs, parentOf(path), authoritativeRoot, worktreeRoot);
|
|
1183
1204
|
}
|
|
1184
1205
|
// Explicit mkdir entries
|
|
1185
1206
|
for (const d of dirBuffer) {
|
|
1186
1207
|
if (!d) continue;
|
|
1187
|
-
collectDirectoryPaths(dirs, d, authoritativeRoot);
|
|
1208
|
+
collectDirectoryPaths(dirs, d, authoritativeRoot, worktreeRoot);
|
|
1188
1209
|
}
|
|
1189
1210
|
|
|
1190
1211
|
const orderedDirs = [...dirs].sort((left, right) => {
|
|
@@ -1259,12 +1280,19 @@ function buildPayload(writeBuffer, dirBuffer, deleteSet, metadata, authoritative
|
|
|
1259
1280
|
return { inodes, chunks, deletePaths };
|
|
1260
1281
|
}
|
|
1261
1282
|
|
|
1262
|
-
|
|
1283
|
+
// A clone publishes the directories it creates, up to and including its
|
|
1284
|
+
// authoritative root. An operation in an existing worktree (worktreeRoot)
|
|
1285
|
+
// publishes only directories below its top: the top and everything above it
|
|
1286
|
+
// already exist, are followed as git follows them, and are not the worktree's
|
|
1287
|
+
// to rewrite — republishing home is EACCES for the session user, and would
|
|
1288
|
+
// replace a linked ancestor with an empty directory.
|
|
1289
|
+
function collectDirectoryPaths(paths, path, authoritativeRoot, worktreeRoot = null) {
|
|
1263
1290
|
let current = path;
|
|
1264
1291
|
while (current) {
|
|
1265
1292
|
if (authoritativeRoot &&
|
|
1266
1293
|
current !== authoritativeRoot &&
|
|
1267
1294
|
!current.startsWith(authoritativeRoot + '/')) break;
|
|
1295
|
+
if (worktreeRoot !== null && !current.startsWith(worktreeRoot + '/')) break;
|
|
1268
1296
|
paths.add(current);
|
|
1269
1297
|
if (current === authoritativeRoot) break;
|
|
1270
1298
|
current = parentOf(current);
|
|
@@ -1274,6 +1302,14 @@ function collectDirectoryPaths(paths, path, authoritativeRoot) {
|
|
|
1274
1302
|
/**
|
|
1275
1303
|
* Create the buffered fs adapter isomorphic-git will use.
|
|
1276
1304
|
* Writes buffer in-memory; reads check buffer then fall back to supervisor.
|
|
1305
|
+
*
|
|
1306
|
+
* With a worktreeRoot (fetch, pull, push in an existing repository) the
|
|
1307
|
+
* adapter writes that worktree the way git's checkout does (entry.c
|
|
1308
|
+
* create_directories, has_symlink_leading_path): below its top, .git
|
|
1309
|
+
* aside, a leading component that is not a real directory (a link, dangling
|
|
1310
|
+
* or not, or a file) is deleted and replaced by a directory rather than
|
|
1311
|
+
* followed, and a file replaces a link at its own path rather than writing
|
|
1312
|
+
* through it.
|
|
1277
1313
|
*/
|
|
1278
1314
|
function createBufferedFs(
|
|
1279
1315
|
supervisor,
|
|
@@ -1285,6 +1321,7 @@ function createBufferedFs(
|
|
|
1285
1321
|
phaseDeadline = null,
|
|
1286
1322
|
authoritativeFallbackPaths = [],
|
|
1287
1323
|
authoritativeFallbackRoots = [],
|
|
1324
|
+
worktreeRoot = null,
|
|
1288
1325
|
) {
|
|
1289
1326
|
const writeBuffer = new Map(); // path → Uint8Array (insertion ordered = FIFO)
|
|
1290
1327
|
const pendingWriteMetadata = new Map();
|
|
@@ -1477,16 +1514,16 @@ function createBufferedFs(
|
|
|
1477
1514
|
const paths = new Set(deleteBuffer);
|
|
1478
1515
|
for (const path of dirBuffer) {
|
|
1479
1516
|
if (!path) continue;
|
|
1480
|
-
collectDirectoryPaths(paths, path, authoritativeRoot);
|
|
1517
|
+
collectDirectoryPaths(paths, path, authoritativeRoot, worktreeRoot);
|
|
1481
1518
|
}
|
|
1482
1519
|
for (const path of writeBuffer.keys()) {
|
|
1483
1520
|
paths.add(path);
|
|
1484
|
-
collectDirectoryPaths(paths, parentOf(path), authoritativeRoot);
|
|
1521
|
+
collectDirectoryPaths(paths, parentOf(path), authoritativeRoot, worktreeRoot);
|
|
1485
1522
|
}
|
|
1486
1523
|
if (extraPath) {
|
|
1487
1524
|
paths.add(extraPath);
|
|
1488
1525
|
if (includeParents) {
|
|
1489
|
-
collectDirectoryPaths(paths, parentOf(extraPath), authoritativeRoot);
|
|
1526
|
+
collectDirectoryPaths(paths, parentOf(extraPath), authoritativeRoot, worktreeRoot);
|
|
1490
1527
|
}
|
|
1491
1528
|
}
|
|
1492
1529
|
let pathBytes = 0;
|
|
@@ -1574,6 +1611,7 @@ function createBufferedFs(
|
|
|
1574
1611
|
deleteBuffer,
|
|
1575
1612
|
waveMetadata,
|
|
1576
1613
|
authoritativeRoot,
|
|
1614
|
+
worktreeRoot,
|
|
1577
1615
|
);
|
|
1578
1616
|
// Snapshot stats counters BEFORE clearing the buffers so the increments
|
|
1579
1617
|
// below see the wave's true size, not zero.
|
|
@@ -1857,9 +1895,14 @@ function createBufferedFs(
|
|
|
1857
1895
|
});
|
|
1858
1896
|
},
|
|
1859
1897
|
|
|
1898
|
+
// unlink(2) and rmdir(2): a buffered delete removes the whole subtree at
|
|
1899
|
+
// its path, so neither may take a directory it would not take on disk.
|
|
1900
|
+
// unlink refuses a directory; rmdir refuses a non-directory and a
|
|
1901
|
+
// directory that still holds anything (untracked files a checkout leaves).
|
|
1860
1902
|
async unlink(filepath) {
|
|
1861
1903
|
assertFlushHealthy();
|
|
1862
1904
|
const p = normalizePath(filepath);
|
|
1905
|
+
if ((await fs.promises.lstat(filepath)).isDirectory()) throw eisdir(filepath);
|
|
1863
1906
|
return bufferMutation(p, 0, false, async () => {
|
|
1864
1907
|
if (writeBuffer.has(p)) {
|
|
1865
1908
|
bufferBytes -= writeBuffer.get(p).length;
|
|
@@ -1935,9 +1978,13 @@ function createBufferedFs(
|
|
|
1935
1978
|
});
|
|
1936
1979
|
},
|
|
1937
1980
|
|
|
1938
|
-
async rmdir(filepath) {
|
|
1981
|
+
async rmdir(filepath, options) {
|
|
1939
1982
|
assertFlushHealthy();
|
|
1940
1983
|
const p = normalizePath(filepath);
|
|
1984
|
+
if (!(options && options.recursive)) {
|
|
1985
|
+
if (!(await fs.promises.lstat(filepath)).isDirectory()) throw enotdir(filepath);
|
|
1986
|
+
if ((await fs.promises.readdir(filepath)).length > 0) throw enotempty(filepath);
|
|
1987
|
+
}
|
|
1941
1988
|
return bufferMutation(p, 0, false, async () => {
|
|
1942
1989
|
dirBuffer.delete(p);
|
|
1943
1990
|
deleteBuffer.add(p);
|
|
@@ -2185,13 +2232,14 @@ export default {
|
|
|
2185
2232
|
}
|
|
2186
2233
|
}
|
|
2187
2234
|
const log = (msg) => {
|
|
2235
|
+
if (opts.quiet) return;
|
|
2188
2236
|
stats.supervisorRpc.stdout++;
|
|
2189
2237
|
try { useRpcResult(supervisor.stdout(new TextEncoder().encode(msg)), () => undefined).catch(() => {}); } catch {}
|
|
2190
2238
|
};
|
|
2191
2239
|
|
|
2192
2240
|
// Import the pre-bundled isomorphic-git + http/web.
|
|
2193
2241
|
// The bundle is provided via LOADER.load()'s modules record;
|
|
2194
|
-
// see scripts/bundle-git.mjs and src/git-bundle.
|
|
2242
|
+
// see scripts/bundle-git.mjs and src/runtime/git-bundle-artifact.ts.
|
|
2195
2243
|
let git, http;
|
|
2196
2244
|
try {
|
|
2197
2245
|
const bundle = await import('./git-bundle.js');
|
|
@@ -2375,6 +2423,8 @@ export default {
|
|
|
2375
2423
|
phase === 'clone-checkout'
|
|
2376
2424
|
? [normalizePath(opts.dir) + '/.git/nimbus-checkout-index']
|
|
2377
2425
|
: [],
|
|
2426
|
+
// fetch, pull and push work in a repository that already exists.
|
|
2427
|
+
phase === 'operation' ? normalizePath(opts.dir) : null,
|
|
2378
2428
|
);
|
|
2379
2429
|
const fs = bufferedFs.fs;
|
|
2380
2430
|
flushWave = bufferedFs.flushWave;
|
|
@@ -2601,6 +2651,7 @@ export default {
|
|
|
2601
2651
|
ref: opts.ref,
|
|
2602
2652
|
singleBranch: true,
|
|
2603
2653
|
author: opts.author || { name: 'user', email: 'user@nimbus.dev' },
|
|
2654
|
+
committer: opts.committer,
|
|
2604
2655
|
onProgress,
|
|
2605
2656
|
onAuth,
|
|
2606
2657
|
});
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
export declare const DEFAULT_CONTEXT = 3;
|
|
2
|
+
/** One side of a file pair: git's diff_filespec. */
|
|
3
|
+
export interface DiffSpec {
|
|
4
|
+
/** Repo-relative path, or the path as given to --no-index ('/dev/null' for an absent side). */
|
|
5
|
+
path: string;
|
|
6
|
+
/** False on the absent side of an add or a delete. */
|
|
7
|
+
valid: boolean;
|
|
8
|
+
oid: string;
|
|
9
|
+
mode: number;
|
|
10
|
+
data: Uint8Array;
|
|
11
|
+
}
|
|
12
|
+
export interface DiffPair {
|
|
13
|
+
one: DiffSpec;
|
|
14
|
+
two: DiffSpec;
|
|
15
|
+
/** Set when rename detection paired `one` with `two`: similarity out of MAX_SCORE. */
|
|
16
|
+
renameScore?: number;
|
|
17
|
+
}
|
|
18
|
+
export declare function absentSpec(path: string): DiffSpec;
|
|
19
|
+
/** diff_resolve_rename_copy's status letter. */
|
|
20
|
+
export declare function pairStatus(pair: DiffPair): 'A' | 'D' | 'T' | 'R' | 'M';
|
|
21
|
+
export declare function binaryFromBytes(bytes: Uint8Array): string;
|
|
22
|
+
export declare function bytesFromBinary(text: string): Uint8Array;
|
|
23
|
+
/** A path's UTF-8 bytes as a binary string. */
|
|
24
|
+
export declare function binaryPath(path: string): string;
|
|
25
|
+
/** A path as git prints it on a '\n'-ended line: C-quoted if any byte needs it. */
|
|
26
|
+
export declare function quotePath(path: string): string;
|
|
27
|
+
/** One entry of a path list: quoted and '\n'-ended, or raw and NUL-ended under -z. */
|
|
28
|
+
export declare function pathLine(path: string, z: boolean): string;
|
|
29
|
+
/** buffer_is_binary: a NUL in the first 8000 bytes. */
|
|
30
|
+
export declare function isBinary(data: Uint8Array): boolean;
|
|
31
|
+
/** One file's `diff --git` section, exactly as `git diff` prints it without color. */
|
|
32
|
+
export declare function formatPatch(pair: DiffPair, context?: number): string;
|
|
33
|
+
export declare function formatNameOnly(pair: DiffPair, z: boolean): string;
|
|
34
|
+
export declare function formatNameStatus(pair: DiffPair, z: boolean): string;
|
|
35
|
+
export interface StatFile {
|
|
36
|
+
/** Display name: quoted path, or `from => to` when the two sides are named differently. */
|
|
37
|
+
name: string;
|
|
38
|
+
added: number;
|
|
39
|
+
deleted: number;
|
|
40
|
+
binary: boolean;
|
|
41
|
+
}
|
|
42
|
+
export declare function statFile(pair: DiffPair): StatFile;
|
|
43
|
+
/** The --stat block for `columns` terminal columns (git's term_columns: $COLUMNS, else 80). */
|
|
44
|
+
export declare function formatStat(files: readonly StatFile[], columns: number): string;
|
|
45
|
+
export declare const MAX_SCORE = 60000;
|
|
46
|
+
export declare const DEFAULT_RENAME_SCORE = 30000;
|
|
47
|
+
export declare function similarityIndex(score: number): number;
|
|
48
|
+
/** parse_rename_score (`5`, `50%` and `.5` are all 50%), or null when anything follows the number. */
|
|
49
|
+
export declare function parseRenameScore(text: string): number | null;
|
|
50
|
+
export interface RenameSide {
|
|
51
|
+
path: string;
|
|
52
|
+
oid: string;
|
|
53
|
+
mode: number;
|
|
54
|
+
}
|
|
55
|
+
export interface QueuedPair<S extends RenameSide> {
|
|
56
|
+
one: S | null;
|
|
57
|
+
two: S | null;
|
|
58
|
+
renameScore?: number;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* git diff's default rename detection over a path-ordered queue: exact
|
|
62
|
+
* renames, then unique basenames at a higher bar, then the similarity
|
|
63
|
+
* matrix, skipped (as git skips it) past `renameLimit` squared pairs. A
|
|
64
|
+
* rename takes its destination's place in the queue. `neededRenameLimit`
|
|
65
|
+
* is non-zero when the matrix was skipped.
|
|
66
|
+
*/
|
|
67
|
+
export declare function detectRenames<S extends RenameSide>(queue: readonly QueuedPair<S>[], read: (side: S) => Promise<Uint8Array>, { minimumScore, renameLimit }?: {
|
|
68
|
+
minimumScore?: number | undefined;
|
|
69
|
+
renameLimit?: number | undefined;
|
|
70
|
+
}): Promise<{
|
|
71
|
+
queue: QueuedPair<S>[];
|
|
72
|
+
neededRenameLimit: number;
|
|
73
|
+
}>;
|
|
74
|
+
//# sourceMappingURL=unified-diff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unified-diff.d.ts","sourceRoot":"","sources":["../../src/git/unified-diff.ts"],"names":[],"mappings":"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"}
|