@ai-hero/sandcastle 0.6.5 → 0.6.6
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 +123 -54
- package/dist/{MountConfig.d.ts → MountConfig-CmXclHA5.d.ts} +3 -2
- package/dist/{SandboxProvider.d.ts → SandboxProvider-EkSMuBp8.d.ts} +25 -39
- package/dist/chunk-72UVAC7B.js +99 -0
- package/dist/chunk-72UVAC7B.js.map +1 -0
- package/dist/chunk-BIWNFKGV.js +22 -0
- package/dist/chunk-BIWNFKGV.js.map +1 -0
- package/dist/chunk-NGBM7T3E.js +76 -0
- package/dist/chunk-NGBM7T3E.js.map +1 -0
- package/dist/chunk-Q5W3WQVU.js +25569 -0
- package/dist/chunk-Q5W3WQVU.js.map +1 -0
- package/dist/chunk-UPDEQ2U7.js +362 -0
- package/dist/chunk-UPDEQ2U7.js.map +1 -0
- package/dist/chunk-Z7O2WNRU.js +26934 -0
- package/dist/chunk-Z7O2WNRU.js.map +1 -0
- package/dist/index.d.ts +920 -22
- package/dist/index.js +3212 -9
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts +0 -2
- package/dist/main.js +19256 -13
- package/dist/main.js.map +1 -1
- package/dist/mountUtils-CCA-bbpK.d.ts +25 -0
- package/dist/sandboxes/daytona.d.ts +8 -5
- package/dist/sandboxes/daytona.js +118 -124
- package/dist/sandboxes/daytona.js.map +1 -1
- package/dist/sandboxes/docker.d.ts +10 -8
- package/dist/sandboxes/docker.js +8 -255
- package/dist/sandboxes/docker.js.map +1 -1
- package/dist/sandboxes/no-sandbox.d.ts +7 -4
- package/dist/sandboxes/no-sandbox.js +6 -114
- package/dist/sandboxes/no-sandbox.js.map +1 -1
- package/dist/sandboxes/podman.d.ts +10 -8
- package/dist/sandboxes/podman.js +287 -297
- package/dist/sandboxes/podman.js.map +1 -1
- package/dist/sandboxes/vercel.d.ts +7 -4
- package/dist/sandboxes/vercel.js +144 -165
- package/dist/sandboxes/vercel.js.map +1 -1
- package/package.json +15 -14
- package/dist/AgentProvider.d.ts +0 -134
- package/dist/AgentProvider.d.ts.map +0 -1
- package/dist/AgentProvider.js +0 -647
- package/dist/AgentProvider.js.map +0 -1
- package/dist/AgentStreamEmitter.d.ts +0 -36
- package/dist/AgentStreamEmitter.d.ts.map +0 -1
- package/dist/AgentStreamEmitter.js +0 -21
- package/dist/AgentStreamEmitter.js.map +0 -1
- package/dist/CopyToWorktree.d.ts +0 -15
- package/dist/CopyToWorktree.d.ts.map +0 -1
- package/dist/CopyToWorktree.js +0 -60
- package/dist/CopyToWorktree.js.map +0 -1
- package/dist/Display.d.ts +0 -58
- package/dist/Display.d.ts.map +0 -1
- package/dist/Display.js +0 -142
- package/dist/Display.js.map +0 -1
- package/dist/DockerLifecycle.d.ts +0 -54
- package/dist/DockerLifecycle.d.ts.map +0 -1
- package/dist/DockerLifecycle.js +0 -123
- package/dist/DockerLifecycle.js.map +0 -1
- package/dist/EnvResolver.d.ts +0 -11
- package/dist/EnvResolver.d.ts.map +0 -1
- package/dist/EnvResolver.js +0 -63
- package/dist/EnvResolver.js.map +0 -1
- package/dist/ErrorHandler.d.ts +0 -15
- package/dist/ErrorHandler.d.ts.map +0 -1
- package/dist/ErrorHandler.js +0 -85
- package/dist/ErrorHandler.js.map +0 -1
- package/dist/InitService.d.ts +0 -92
- package/dist/InitService.d.ts.map +0 -1
- package/dist/InitService.js +0 -836
- package/dist/InitService.js.map +0 -1
- package/dist/MountConfig.d.ts.map +0 -1
- package/dist/MountConfig.js +0 -7
- package/dist/MountConfig.js.map +0 -1
- package/dist/Orchestrator.d.ts +0 -56
- package/dist/Orchestrator.d.ts.map +0 -1
- package/dist/Orchestrator.js +0 -293
- package/dist/Orchestrator.js.map +0 -1
- package/dist/Output.d.ts +0 -107
- package/dist/Output.d.ts.map +0 -1
- package/dist/Output.js +0 -95
- package/dist/Output.js.map +0 -1
- package/dist/PodmanLifecycle.d.ts +0 -17
- package/dist/PodmanLifecycle.d.ts.map +0 -1
- package/dist/PodmanLifecycle.js +0 -45
- package/dist/PodmanLifecycle.js.map +0 -1
- package/dist/PromptArgumentSubstitution.d.ts +0 -32
- package/dist/PromptArgumentSubstitution.d.ts.map +0 -1
- package/dist/PromptArgumentSubstitution.js +0 -104
- package/dist/PromptArgumentSubstitution.js.map +0 -1
- package/dist/PromptPreprocessor.d.ts +0 -15
- package/dist/PromptPreprocessor.d.ts.map +0 -1
- package/dist/PromptPreprocessor.js +0 -55
- package/dist/PromptPreprocessor.js.map +0 -1
- package/dist/PromptResolver.d.ts +0 -21
- package/dist/PromptResolver.d.ts.map +0 -1
- package/dist/PromptResolver.js +0 -27
- package/dist/PromptResolver.js.map +0 -1
- package/dist/RecoveryMessage.d.ts +0 -15
- package/dist/RecoveryMessage.d.ts.map +0 -1
- package/dist/RecoveryMessage.js +0 -81
- package/dist/RecoveryMessage.js.map +0 -1
- package/dist/SandboxFactory.d.ts +0 -90
- package/dist/SandboxFactory.d.ts.map +0 -1
- package/dist/SandboxFactory.js +0 -324
- package/dist/SandboxFactory.js.map +0 -1
- package/dist/SandboxLifecycle.d.ts +0 -65
- package/dist/SandboxLifecycle.d.ts.map +0 -1
- package/dist/SandboxLifecycle.js +0 -296
- package/dist/SandboxLifecycle.js.map +0 -1
- package/dist/SandboxProvider.d.ts.map +0 -1
- package/dist/SandboxProvider.js +0 -28
- package/dist/SandboxProvider.js.map +0 -1
- package/dist/SessionStore.d.ts +0 -110
- package/dist/SessionStore.d.ts.map +0 -1
- package/dist/SessionStore.js +0 -330
- package/dist/SessionStore.js.map +0 -1
- package/dist/TextDeltaBuffer.d.ts +0 -24
- package/dist/TextDeltaBuffer.d.ts.map +0 -1
- package/dist/TextDeltaBuffer.js +0 -68
- package/dist/TextDeltaBuffer.js.map +0 -1
- package/dist/WorktreeManager.d.ts +0 -79
- package/dist/WorktreeManager.d.ts.map +0 -1
- package/dist/WorktreeManager.js +0 -283
- package/dist/WorktreeManager.js.map +0 -1
- package/dist/boundedTail.d.ts +0 -48
- package/dist/boundedTail.d.ts.map +0 -1
- package/dist/boundedTail.js +0 -64
- package/dist/boundedTail.js.map +0 -1
- package/dist/cli.d.ts +0 -30
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -340
- package/dist/cli.js.map +0 -1
- package/dist/createSandbox.d.ts +0 -154
- package/dist/createSandbox.d.ts.map +0 -1
- package/dist/createSandbox.js +0 -476
- package/dist/createSandbox.js.map +0 -1
- package/dist/createWorktree.d.ts +0 -154
- package/dist/createWorktree.d.ts.map +0 -1
- package/dist/createWorktree.js +0 -391
- package/dist/createWorktree.js.map +0 -1
- package/dist/errors.d.ts +0 -227
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -81
- package/dist/errors.js.map +0 -1
- package/dist/extractStructuredOutput.d.ts +0 -23
- package/dist/extractStructuredOutput.d.ts.map +0 -1
- package/dist/extractStructuredOutput.js +0 -102
- package/dist/extractStructuredOutput.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/interactive.d.ts +0 -74
- package/dist/interactive.d.ts.map +0 -1
- package/dist/interactive.js +0 -279
- package/dist/interactive.js.map +0 -1
- package/dist/main.d.ts.map +0 -1
- package/dist/mergeProviderEnv.d.ts +0 -13
- package/dist/mergeProviderEnv.d.ts.map +0 -1
- package/dist/mergeProviderEnv.js +0 -23
- package/dist/mergeProviderEnv.js.map +0 -1
- package/dist/mountUtils.d.ts +0 -146
- package/dist/mountUtils.d.ts.map +0 -1
- package/dist/mountUtils.js +0 -301
- package/dist/mountUtils.js.map +0 -1
- package/dist/raceAbortSignal.d.ts +0 -18
- package/dist/raceAbortSignal.d.ts.map +0 -1
- package/dist/raceAbortSignal.js +0 -32
- package/dist/raceAbortSignal.js.map +0 -1
- package/dist/resolveCwd.d.ts +0 -24
- package/dist/resolveCwd.d.ts.map +0 -1
- package/dist/resolveCwd.js +0 -32
- package/dist/resolveCwd.js.map +0 -1
- package/dist/resumePrecheck.d.ts +0 -26
- package/dist/resumePrecheck.d.ts.map +0 -1
- package/dist/resumePrecheck.js +0 -40
- package/dist/resumePrecheck.js.map +0 -1
- package/dist/run.d.ts +0 -216
- package/dist/run.d.ts.map +0 -1
- package/dist/run.js +0 -313
- package/dist/run.js.map +0 -1
- package/dist/sandboxExec.d.ts +0 -12
- package/dist/sandboxExec.d.ts.map +0 -1
- package/dist/sandboxExec.js +0 -26
- package/dist/sandboxExec.js.map +0 -1
- package/dist/sandboxes/daytona.d.ts.map +0 -1
- package/dist/sandboxes/docker.d.ts.map +0 -1
- package/dist/sandboxes/no-sandbox.d.ts.map +0 -1
- package/dist/sandboxes/podman.d.ts.map +0 -1
- package/dist/sandboxes/test-bind-mount.d.ts +0 -17
- package/dist/sandboxes/test-bind-mount.d.ts.map +0 -1
- package/dist/sandboxes/test-bind-mount.js +0 -92
- package/dist/sandboxes/test-bind-mount.js.map +0 -1
- package/dist/sandboxes/test-isolated.d.ts +0 -17
- package/dist/sandboxes/test-isolated.d.ts.map +0 -1
- package/dist/sandboxes/test-isolated.js +0 -98
- package/dist/sandboxes/test-isolated.js.map +0 -1
- package/dist/sandboxes/vercel.d.ts.map +0 -1
- package/dist/shutdownRegistry.d.ts +0 -30
- package/dist/shutdownRegistry.d.ts.map +0 -1
- package/dist/shutdownRegistry.js +0 -73
- package/dist/shutdownRegistry.js.map +0 -1
- package/dist/startSandbox.d.ts +0 -50
- package/dist/startSandbox.d.ts.map +0 -1
- package/dist/startSandbox.js +0 -117
- package/dist/startSandbox.js.map +0 -1
- package/dist/syncIn.d.ts +0 -24
- package/dist/syncIn.d.ts.map +0 -1
- package/dist/syncIn.js +0 -107
- package/dist/syncIn.js.map +0 -1
- package/dist/syncOut.d.ts +0 -27
- package/dist/syncOut.d.ts.map +0 -1
- package/dist/syncOut.js +0 -271
- package/dist/syncOut.js.map +0 -1
- package/dist/templates.d.ts +0 -2
- package/dist/templates.d.ts.map +0 -1
- package/dist/templates.js +0 -26
- package/dist/templates.js.map +0 -1
- package/dist/terminalCleanup.d.ts +0 -30
- package/dist/terminalCleanup.d.ts.map +0 -1
- package/dist/terminalCleanup.js +0 -37
- package/dist/terminalCleanup.js.map +0 -1
- package/dist/testSandbox.d.ts +0 -8
- package/dist/testSandbox.d.ts.map +0 -1
- package/dist/testSandbox.js +0 -109
- package/dist/testSandbox.js.map +0 -1
- package/dist/testSetup.d.ts +0 -2
- package/dist/testSetup.d.ts.map +0 -1
- package/dist/testSetup.js +0 -29
- package/dist/testSetup.js.map +0 -1
package/dist/syncIn.js
DELETED
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Sync-in: transfer a host git repo into an isolated sandbox via git bundle.
|
|
3
|
-
*
|
|
4
|
-
* Creates a git bundle capturing all refs from the host repo,
|
|
5
|
-
* copies it into the sandbox via the provider's copyIn, and
|
|
6
|
-
* clones from the bundle inside the sandbox.
|
|
7
|
-
*/
|
|
8
|
-
import { mkdtemp, rm } from "node:fs/promises";
|
|
9
|
-
import { tmpdir } from "node:os";
|
|
10
|
-
import { join } from "node:path";
|
|
11
|
-
import { Effect } from "effect";
|
|
12
|
-
import { SyncError } from "./errors.js";
|
|
13
|
-
/**
|
|
14
|
-
* Execute a command on the host side, returning stdout.
|
|
15
|
-
* Fails with SyncError on non-zero exit.
|
|
16
|
-
*/
|
|
17
|
-
const execHost = (command, cwd) => Effect.tryPromise({
|
|
18
|
-
try: async () => {
|
|
19
|
-
const { exec } = await import("node:child_process");
|
|
20
|
-
const { promisify } = await import("node:util");
|
|
21
|
-
const execAsync = promisify(exec);
|
|
22
|
-
const { stdout } = await execAsync(command, {
|
|
23
|
-
cwd,
|
|
24
|
-
maxBuffer: 10 * 1024 * 1024,
|
|
25
|
-
});
|
|
26
|
-
return stdout;
|
|
27
|
-
},
|
|
28
|
-
catch: (e) => new SyncError({
|
|
29
|
-
message: `Host command failed: ${command}\n${e instanceof Error ? e.message : String(e)}`,
|
|
30
|
-
}),
|
|
31
|
-
});
|
|
32
|
-
/**
|
|
33
|
-
* Execute a command in the sandbox, failing with SyncError if it exits non-zero.
|
|
34
|
-
*/
|
|
35
|
-
const execOk = (handle, command, options) => Effect.tryPromise({
|
|
36
|
-
try: () => handle.exec(command, options),
|
|
37
|
-
catch: (e) => new SyncError({
|
|
38
|
-
message: `Sandbox exec failed: ${command}\n${e instanceof Error ? e.message : String(e)}`,
|
|
39
|
-
}),
|
|
40
|
-
}).pipe(Effect.flatMap((result) => result.exitCode !== 0
|
|
41
|
-
? Effect.fail(new SyncError({
|
|
42
|
-
message: `Sandbox command failed (exit ${result.exitCode}): ${command}\n${result.stderr}`,
|
|
43
|
-
}))
|
|
44
|
-
: Effect.succeed(result)));
|
|
45
|
-
/**
|
|
46
|
-
* Sync a host git repo into an isolated sandbox.
|
|
47
|
-
*
|
|
48
|
-
* 1. `git bundle create --all` on the host
|
|
49
|
-
* 2. `copyIn` the bundle to the sandbox
|
|
50
|
-
* 3. `git clone` from the bundle inside the sandbox
|
|
51
|
-
* 4. Verify HEAD matches
|
|
52
|
-
*
|
|
53
|
-
* @returns The branch name that was checked out
|
|
54
|
-
*/
|
|
55
|
-
export const syncIn = (hostRepoDir, handle) => Effect.gen(function* () {
|
|
56
|
-
// Get current branch from host
|
|
57
|
-
const branch = (yield* execHost("git rev-parse --abbrev-ref HEAD", hostRepoDir)).trim();
|
|
58
|
-
// Create git bundle on host capturing all refs
|
|
59
|
-
const bundleDir = yield* Effect.tryPromise({
|
|
60
|
-
try: () => mkdtemp(join(tmpdir(), "sandcastle-bundle-")),
|
|
61
|
-
catch: (e) => new SyncError({
|
|
62
|
-
message: `Failed to create temp dir: ${e instanceof Error ? e.message : String(e)}`,
|
|
63
|
-
}),
|
|
64
|
-
});
|
|
65
|
-
const bundleHostPath = join(bundleDir, "repo.bundle");
|
|
66
|
-
yield* Effect.ensuring(Effect.gen(function* () {
|
|
67
|
-
yield* execHost(`git bundle create "${bundleHostPath}" --all`, hostRepoDir);
|
|
68
|
-
// Create temp dir in sandbox and copy bundle in
|
|
69
|
-
const mkTempResult = yield* execOk(handle, "mktemp -d -t sandcastle-XXXXXX");
|
|
70
|
-
const sandboxTmpDir = mkTempResult.stdout.trim();
|
|
71
|
-
const bundleSandboxPath = `${sandboxTmpDir}/repo.bundle`;
|
|
72
|
-
yield* Effect.tryPromise({
|
|
73
|
-
try: () => handle.copyIn(bundleHostPath, bundleSandboxPath),
|
|
74
|
-
catch: (e) => new SyncError({
|
|
75
|
-
message: `Failed to copy bundle into sandbox: ${e instanceof Error ? e.message : String(e)}`,
|
|
76
|
-
}),
|
|
77
|
-
});
|
|
78
|
-
// Clone from bundle into the worktree
|
|
79
|
-
const worktreePath = handle.worktreePath;
|
|
80
|
-
yield* execOk(handle, `git clone "${bundleSandboxPath}" "${worktreePath}_clone"`);
|
|
81
|
-
// Move contents from clone into worktree (git clone requires empty target)
|
|
82
|
-
yield* execOk(handle, `rm -rf "${worktreePath}" && mv "${worktreePath}_clone" "${worktreePath}"`);
|
|
83
|
-
// Checkout the correct branch
|
|
84
|
-
yield* execOk(handle, `git checkout "${branch}"`, {
|
|
85
|
-
cwd: worktreePath,
|
|
86
|
-
});
|
|
87
|
-
// Clean up sandbox temp files
|
|
88
|
-
yield* Effect.tryPromise({
|
|
89
|
-
try: () => handle.exec(`rm -rf "${sandboxTmpDir}"`),
|
|
90
|
-
catch: () => new SyncError({ message: "Failed to clean up sandbox temp dir" }),
|
|
91
|
-
});
|
|
92
|
-
// Verify sync succeeded
|
|
93
|
-
const hostHead = (yield* execHost("git rev-parse HEAD", hostRepoDir)).trim();
|
|
94
|
-
const sandboxHead = (yield* execOk(handle, "git rev-parse HEAD", {
|
|
95
|
-
cwd: worktreePath,
|
|
96
|
-
})).stdout.trim();
|
|
97
|
-
if (hostHead !== sandboxHead) {
|
|
98
|
-
yield* Effect.fail(new SyncError({
|
|
99
|
-
message: `HEAD mismatch after sync-in: host=${hostHead} sandbox=${sandboxHead}`,
|
|
100
|
-
}));
|
|
101
|
-
}
|
|
102
|
-
}),
|
|
103
|
-
// Clean up host-side bundle temp dir (runs regardless of success/failure)
|
|
104
|
-
Effect.promise(() => rm(bundleDir, { recursive: true, force: true })));
|
|
105
|
-
return { branch };
|
|
106
|
-
});
|
|
107
|
-
//# sourceMappingURL=syncIn.js.map
|
package/dist/syncIn.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"syncIn.js","sourceRoot":"","sources":["../src/syncIn.ts"],"names":[],"mappings":"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"}
|
package/dist/syncOut.d.ts
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Sync-out: extract changes from an isolated sandbox back to the host.
|
|
3
|
-
*
|
|
4
|
-
* Two-phase approach:
|
|
5
|
-
* 1. Save phase: eagerly save all artifacts (patches, diff, untracked files)
|
|
6
|
-
* to `.sandcastle/patches/<timestamp>/` before attempting to apply.
|
|
7
|
-
* 2. Apply phase: apply from the saved directory.
|
|
8
|
-
* - On success: clean up the patch directory.
|
|
9
|
-
* - On failure: preserve the patch directory and print recovery commands.
|
|
10
|
-
*
|
|
11
|
-
* Three-prong extraction within each phase:
|
|
12
|
-
* 1. Committed changes: `git format-patch` + `git am --3way`
|
|
13
|
-
* 2. Uncommitted changes (staged + unstaged): `git diff HEAD` + `git apply`
|
|
14
|
-
* 3. Untracked files: `git ls-files --others` + `copyFileOut` each file
|
|
15
|
-
*/
|
|
16
|
-
import { Effect } from "effect";
|
|
17
|
-
import type { IsolatedSandboxHandle } from "./SandboxProvider.js";
|
|
18
|
-
import { SyncError } from "./errors.js";
|
|
19
|
-
/**
|
|
20
|
-
* Sync changes from an isolated sandbox back to the host repo.
|
|
21
|
-
*
|
|
22
|
-
* Two-phase extraction with artifact persistence:
|
|
23
|
-
* 1. Save all artifacts to `.sandcastle/patches/<timestamp>/`
|
|
24
|
-
* 2. Apply from saved directory; on failure, preserve artifacts and print recovery
|
|
25
|
-
*/
|
|
26
|
-
export declare const syncOut: (hostRepoDir: string, handle: IsolatedSandboxHandle) => Effect.Effect<void, SyncError, never>;
|
|
27
|
-
//# sourceMappingURL=syncOut.d.ts.map
|
package/dist/syncOut.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"syncOut.d.ts","sourceRoot":"","sources":["../src/syncOut.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAYH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAElE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AA+HxC;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,+FAgNhB,CAAC"}
|
package/dist/syncOut.js
DELETED
|
@@ -1,271 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Sync-out: extract changes from an isolated sandbox back to the host.
|
|
3
|
-
*
|
|
4
|
-
* Two-phase approach:
|
|
5
|
-
* 1. Save phase: eagerly save all artifacts (patches, diff, untracked files)
|
|
6
|
-
* to `.sandcastle/patches/<timestamp>/` before attempting to apply.
|
|
7
|
-
* 2. Apply phase: apply from the saved directory.
|
|
8
|
-
* - On success: clean up the patch directory.
|
|
9
|
-
* - On failure: preserve the patch directory and print recovery commands.
|
|
10
|
-
*
|
|
11
|
-
* Three-prong extraction within each phase:
|
|
12
|
-
* 1. Committed changes: `git format-patch` + `git am --3way`
|
|
13
|
-
* 2. Uncommitted changes (staged + unstaged): `git diff HEAD` + `git apply`
|
|
14
|
-
* 3. Untracked files: `git ls-files --others` + `copyFileOut` each file
|
|
15
|
-
*/
|
|
16
|
-
import { existsSync } from "node:fs";
|
|
17
|
-
import { mkdir, readdir, readFile, rm, stat, writeFile, } from "node:fs/promises";
|
|
18
|
-
import { basename, dirname, join } from "node:path";
|
|
19
|
-
import { Effect } from "effect";
|
|
20
|
-
import { buildRecoveryMessage } from "./RecoveryMessage.js";
|
|
21
|
-
import { SyncError } from "./errors.js";
|
|
22
|
-
/**
|
|
23
|
-
* Execute a command on the host side, returning stdout.
|
|
24
|
-
* Fails with SyncError on non-zero exit.
|
|
25
|
-
*/
|
|
26
|
-
const execHost = (command, cwd) => Effect.tryPromise({
|
|
27
|
-
try: async () => {
|
|
28
|
-
const { exec } = await import("node:child_process");
|
|
29
|
-
const { promisify } = await import("node:util");
|
|
30
|
-
const execAsync = promisify(exec);
|
|
31
|
-
const { stdout } = await execAsync(command, {
|
|
32
|
-
cwd,
|
|
33
|
-
maxBuffer: 10 * 1024 * 1024,
|
|
34
|
-
});
|
|
35
|
-
return stdout;
|
|
36
|
-
},
|
|
37
|
-
catch: (e) => new SyncError({
|
|
38
|
-
message: `Host command failed: ${command}\n${e instanceof Error ? e.message : String(e)}`,
|
|
39
|
-
}),
|
|
40
|
-
});
|
|
41
|
-
/**
|
|
42
|
-
* Execute a command in the sandbox, failing with SyncError if it exits non-zero.
|
|
43
|
-
*/
|
|
44
|
-
const execOk = (handle, command, options) => Effect.tryPromise({
|
|
45
|
-
try: () => handle.exec(command, options),
|
|
46
|
-
catch: (e) => new SyncError({
|
|
47
|
-
message: `Sandbox exec failed: ${command}\n${e instanceof Error ? e.message : String(e)}`,
|
|
48
|
-
}),
|
|
49
|
-
}).pipe(Effect.flatMap((result) => result.exitCode !== 0
|
|
50
|
-
? Effect.fail(new SyncError({
|
|
51
|
-
message: `Sandbox command failed (exit ${result.exitCode}): ${command}\n${result.stderr}`,
|
|
52
|
-
}))
|
|
53
|
-
: Effect.succeed(result)));
|
|
54
|
-
/**
|
|
55
|
-
* Execute a command in the sandbox, returning the result without failing on non-zero exit.
|
|
56
|
-
*/
|
|
57
|
-
const execSandbox = (handle, command, options) => Effect.tryPromise({
|
|
58
|
-
try: () => handle.exec(command, options),
|
|
59
|
-
catch: (e) => new SyncError({
|
|
60
|
-
message: `Sandbox exec failed: ${command}\n${e instanceof Error ? e.message : String(e)}`,
|
|
61
|
-
}),
|
|
62
|
-
});
|
|
63
|
-
/**
|
|
64
|
-
* Check if a patch file is empty or header-only.
|
|
65
|
-
* Merge commits produce patches with headers but no diff content.
|
|
66
|
-
* A patch is considered empty if it has no lines starting with "diff --git".
|
|
67
|
-
*/
|
|
68
|
-
const isEmptyPatch = (patchPath) => Effect.tryPromise({
|
|
69
|
-
try: async () => {
|
|
70
|
-
const info = await stat(patchPath);
|
|
71
|
-
if (info.size === 0)
|
|
72
|
-
return true;
|
|
73
|
-
const content = await readFile(patchPath, "utf-8");
|
|
74
|
-
return !content.includes("diff --git");
|
|
75
|
-
},
|
|
76
|
-
catch: (e) => new SyncError({
|
|
77
|
-
message: `Failed to check patch ${patchPath}: ${e instanceof Error ? e.message : String(e)}`,
|
|
78
|
-
}),
|
|
79
|
-
});
|
|
80
|
-
/**
|
|
81
|
-
* Generate a YYYYMMDD-HHMMSS timestamp directory name.
|
|
82
|
-
* Appends a counter suffix (-1, -2, ...) if the directory already exists.
|
|
83
|
-
*/
|
|
84
|
-
const createPatchDir = (hostRepoDir) => Effect.tryPromise({
|
|
85
|
-
try: async () => {
|
|
86
|
-
const now = new Date();
|
|
87
|
-
const pad = (n) => String(n).padStart(2, "0");
|
|
88
|
-
const base = `${now.getFullYear()}${pad(now.getMonth() + 1)}${pad(now.getDate())}-${pad(now.getHours())}${pad(now.getMinutes())}${pad(now.getSeconds())}`;
|
|
89
|
-
const patchesRoot = join(hostRepoDir, ".sandcastle", "patches");
|
|
90
|
-
await mkdir(patchesRoot, { recursive: true });
|
|
91
|
-
let dirName = base;
|
|
92
|
-
let counter = 0;
|
|
93
|
-
while (existsSync(join(patchesRoot, dirName))) {
|
|
94
|
-
counter++;
|
|
95
|
-
dirName = `${base}-${counter}`;
|
|
96
|
-
}
|
|
97
|
-
const patchDir = join(patchesRoot, dirName);
|
|
98
|
-
await mkdir(patchDir, { recursive: true });
|
|
99
|
-
return patchDir;
|
|
100
|
-
},
|
|
101
|
-
catch: (e) => new SyncError({
|
|
102
|
-
message: `Failed to create patch directory: ${e instanceof Error ? e.message : String(e)}`,
|
|
103
|
-
}),
|
|
104
|
-
});
|
|
105
|
-
/**
|
|
106
|
-
* Sync changes from an isolated sandbox back to the host repo.
|
|
107
|
-
*
|
|
108
|
-
* Two-phase extraction with artifact persistence:
|
|
109
|
-
* 1. Save all artifacts to `.sandcastle/patches/<timestamp>/`
|
|
110
|
-
* 2. Apply from saved directory; on failure, preserve artifacts and print recovery
|
|
111
|
-
*/
|
|
112
|
-
export const syncOut = (hostRepoDir, handle) => Effect.gen(function* () {
|
|
113
|
-
const worktreePath = handle.worktreePath;
|
|
114
|
-
const hostHead = (yield* execHost("git rev-parse HEAD", hostRepoDir)).trim();
|
|
115
|
-
const sandboxHead = (yield* execOk(handle, "git rev-parse HEAD", {
|
|
116
|
-
cwd: worktreePath,
|
|
117
|
-
})).stdout.trim();
|
|
118
|
-
const hasCommits = hostHead !== sandboxHead;
|
|
119
|
-
// Check for uncommitted changes
|
|
120
|
-
const diffResult = yield* execSandbox(handle, "git diff HEAD", {
|
|
121
|
-
cwd: worktreePath,
|
|
122
|
-
});
|
|
123
|
-
const hasDiff = diffResult.exitCode === 0 && diffResult.stdout.trim().length > 0;
|
|
124
|
-
// Check for untracked files
|
|
125
|
-
const lsFilesResult = yield* execSandbox(handle, "git ls-files --others --exclude-standard", { cwd: worktreePath });
|
|
126
|
-
const hasUntracked = lsFilesResult.exitCode === 0 && lsFilesResult.stdout.trim().length > 0;
|
|
127
|
-
const untrackedFiles = hasUntracked
|
|
128
|
-
? lsFilesResult.stdout
|
|
129
|
-
.trim()
|
|
130
|
-
.split("\n")
|
|
131
|
-
.filter((f) => f.length > 0)
|
|
132
|
-
: [];
|
|
133
|
-
// Nothing to sync
|
|
134
|
-
if (!hasCommits && !hasDiff && !hasUntracked) {
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
// --- Phase 1: Save all artifacts ---
|
|
138
|
-
const patchDir = yield* createPatchDir(hostRepoDir);
|
|
139
|
-
const relativePatchDir = join(".sandcastle", "patches", basename(patchDir));
|
|
140
|
-
const nonEmptyPatches = [];
|
|
141
|
-
// Save committed patches
|
|
142
|
-
if (hasCommits) {
|
|
143
|
-
const mkTempResult = yield* execOk(handle, "mktemp -d -t sandcastle-patches-XXXXXX");
|
|
144
|
-
const sandboxPatchDir = mkTempResult.stdout.trim();
|
|
145
|
-
try {
|
|
146
|
-
yield* execOk(handle, `git format-patch "${hostHead}..HEAD" -o "${sandboxPatchDir}"`, { cwd: worktreePath });
|
|
147
|
-
const lsResult = yield* execOk(handle, `ls -1 "${sandboxPatchDir}"`);
|
|
148
|
-
const patchNames = lsResult.stdout
|
|
149
|
-
.trim()
|
|
150
|
-
.split("\n")
|
|
151
|
-
.filter((name) => name.length > 0);
|
|
152
|
-
for (const patchName of patchNames) {
|
|
153
|
-
const sandboxPatchPath = `${sandboxPatchDir}/${patchName}`;
|
|
154
|
-
const hostPatchPath = join(patchDir, patchName);
|
|
155
|
-
yield* Effect.tryPromise({
|
|
156
|
-
try: () => handle.copyFileOut(sandboxPatchPath, hostPatchPath),
|
|
157
|
-
catch: (e) => new SyncError({
|
|
158
|
-
message: `Failed to copy patch ${patchName}: ${e instanceof Error ? e.message : String(e)}`,
|
|
159
|
-
}),
|
|
160
|
-
});
|
|
161
|
-
if (!(yield* isEmptyPatch(hostPatchPath))) {
|
|
162
|
-
nonEmptyPatches.push(hostPatchPath);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
finally {
|
|
167
|
-
yield* execSandbox(handle, `rm -rf "${sandboxPatchDir}"`);
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
// Save uncommitted diff
|
|
171
|
-
if (hasDiff) {
|
|
172
|
-
const diffPath = join(patchDir, "changes.patch");
|
|
173
|
-
yield* Effect.tryPromise({
|
|
174
|
-
try: () => writeFile(diffPath, diffResult.stdout),
|
|
175
|
-
catch: (e) => new SyncError({
|
|
176
|
-
message: `Failed to write diff patch: ${e instanceof Error ? e.message : String(e)}`,
|
|
177
|
-
}),
|
|
178
|
-
});
|
|
179
|
-
}
|
|
180
|
-
// Save untracked files
|
|
181
|
-
if (hasUntracked) {
|
|
182
|
-
const untrackedDir = join(patchDir, "untracked");
|
|
183
|
-
for (const relPath of untrackedFiles) {
|
|
184
|
-
const sandboxFilePath = `${worktreePath}/${relPath}`;
|
|
185
|
-
const hostFilePath = join(untrackedDir, relPath);
|
|
186
|
-
yield* Effect.tryPromise({
|
|
187
|
-
try: async () => {
|
|
188
|
-
await mkdir(dirname(hostFilePath), { recursive: true });
|
|
189
|
-
await handle.copyFileOut(sandboxFilePath, hostFilePath);
|
|
190
|
-
},
|
|
191
|
-
catch: (e) => new SyncError({
|
|
192
|
-
message: `Failed to save untracked file ${relPath}: ${e instanceof Error ? e.message : String(e)}`,
|
|
193
|
-
}),
|
|
194
|
-
});
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
// --- Phase 2: Apply from saved directory ---
|
|
198
|
-
let failedStep;
|
|
199
|
-
// Apply committed patches
|
|
200
|
-
if (nonEmptyPatches.length > 0) {
|
|
201
|
-
const abortResult = yield* Effect.either(execHost("git am --abort", hostRepoDir));
|
|
202
|
-
void abortResult; // ignore abort failures
|
|
203
|
-
const patchArgs = nonEmptyPatches.map((p) => `"${p}"`).join(" ");
|
|
204
|
-
const applyResult = yield* Effect.either(execHost(`git am --3way ${patchArgs}`, hostRepoDir));
|
|
205
|
-
if (applyResult._tag === "Left") {
|
|
206
|
-
failedStep = "commits";
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
// Apply uncommitted diff
|
|
210
|
-
if (!failedStep && hasDiff) {
|
|
211
|
-
const diffPath = join(patchDir, "changes.patch");
|
|
212
|
-
const applyResult = yield* Effect.either(execHost(`git apply "${diffPath}"`, hostRepoDir));
|
|
213
|
-
if (applyResult._tag === "Left") {
|
|
214
|
-
failedStep = "diff";
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
// Copy untracked files
|
|
218
|
-
if (!failedStep && hasUntracked) {
|
|
219
|
-
const copyResult = yield* Effect.either(Effect.tryPromise({
|
|
220
|
-
try: async () => {
|
|
221
|
-
const untrackedDir = join(patchDir, "untracked");
|
|
222
|
-
for (const relPath of untrackedFiles) {
|
|
223
|
-
const srcPath = join(untrackedDir, relPath);
|
|
224
|
-
const destPath = join(hostRepoDir, relPath);
|
|
225
|
-
await mkdir(dirname(destPath), { recursive: true });
|
|
226
|
-
const content = await readFile(srcPath);
|
|
227
|
-
await writeFile(destPath, content);
|
|
228
|
-
}
|
|
229
|
-
},
|
|
230
|
-
catch: (e) => new SyncError({
|
|
231
|
-
message: `Failed to copy untracked files: ${e instanceof Error ? e.message : String(e)}`,
|
|
232
|
-
}),
|
|
233
|
-
}));
|
|
234
|
-
if (copyResult._tag === "Left") {
|
|
235
|
-
failedStep = "untracked";
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
// --- Cleanup or preserve ---
|
|
239
|
-
if (failedStep) {
|
|
240
|
-
const msg = buildRecoveryMessage({
|
|
241
|
-
patchDir: relativePatchDir,
|
|
242
|
-
failedStep,
|
|
243
|
-
hasCommits: nonEmptyPatches.length > 0,
|
|
244
|
-
hasDiff,
|
|
245
|
-
hasUntracked,
|
|
246
|
-
});
|
|
247
|
-
console.error(`\n${msg}`);
|
|
248
|
-
}
|
|
249
|
-
else {
|
|
250
|
-
yield* Effect.tryPromise({
|
|
251
|
-
try: async () => {
|
|
252
|
-
await rm(patchDir, { recursive: true, force: true });
|
|
253
|
-
const patchesRoot = join(hostRepoDir, ".sandcastle", "patches");
|
|
254
|
-
try {
|
|
255
|
-
const remaining = await readdir(patchesRoot);
|
|
256
|
-
if (remaining.length === 0) {
|
|
257
|
-
await rm(patchesRoot, {
|
|
258
|
-
recursive: true,
|
|
259
|
-
force: true,
|
|
260
|
-
});
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
catch {
|
|
264
|
-
// ignore
|
|
265
|
-
}
|
|
266
|
-
},
|
|
267
|
-
catch: () => new SyncError({ message: "Failed to clean up patch directory" }),
|
|
268
|
-
});
|
|
269
|
-
}
|
|
270
|
-
});
|
|
271
|
-
//# sourceMappingURL=syncOut.js.map
|
package/dist/syncOut.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"syncOut.js","sourceRoot":"","sources":["../src/syncOut.ts"],"names":[],"mappings":"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"}
|
package/dist/templates.d.ts
DELETED
package/dist/templates.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,QAyB3B,CAAC"}
|
package/dist/templates.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
export const SKELETON_PROMPT = `# Context
|
|
2
|
-
|
|
3
|
-
<!-- Use !` +
|
|
4
|
-
"`" +
|
|
5
|
-
`command` +
|
|
6
|
-
"`" +
|
|
7
|
-
` to pull in dynamic context. Commands run inside the sandbox. -->
|
|
8
|
-
<!-- Example: !` +
|
|
9
|
-
"`" +
|
|
10
|
-
`git log --oneline -10` +
|
|
11
|
-
"`" +
|
|
12
|
-
` or !` +
|
|
13
|
-
"`" +
|
|
14
|
-
`gh issue list --label Sandcastle --json number,title` +
|
|
15
|
-
"`" +
|
|
16
|
-
` -->
|
|
17
|
-
|
|
18
|
-
# Task
|
|
19
|
-
|
|
20
|
-
<!-- Describe what the agent should do. -->
|
|
21
|
-
|
|
22
|
-
# Done
|
|
23
|
-
|
|
24
|
-
<!-- When the task is complete, output <promise>COMPLETE</promise> to signal early termination. -->
|
|
25
|
-
`;
|
|
26
|
-
//# sourceMappingURL=templates.js.map
|
package/dist/templates.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAC1B;;WAES;IACT,GAAG;IACH,SAAS;IACT,GAAG;IACH;gBACc;IACd,GAAG;IACH,uBAAuB;IACvB,GAAG;IACH,OAAO;IACP,GAAG;IACH,sDAAsD;IACtD,GAAG;IACH;;;;;;;;;CASD,CAAC"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Terminal cleanup for abrupt exits.
|
|
3
|
-
*
|
|
4
|
-
* @clack/prompts' spinner and taskLog call stdin.setRawMode(true) and hide
|
|
5
|
-
* the cursor via escape sequences. When the process is killed by a signal
|
|
6
|
-
* handler that calls process.exit() directly (e.g. during Ctrl-C cleanup in
|
|
7
|
-
* SandboxFactory), clack's own cleanup is bypassed and the terminal is left
|
|
8
|
-
* in raw mode with the cursor hidden.
|
|
9
|
-
*
|
|
10
|
-
* Registering a process 'exit' listener that restores these guarantees the
|
|
11
|
-
* terminal is always left in a usable state.
|
|
12
|
-
*/
|
|
13
|
-
/** Escape sequence to show the cursor (DECTCEM). */
|
|
14
|
-
export declare const SHOW_CURSOR = "\u001B[?25h";
|
|
15
|
-
/**
|
|
16
|
-
* Creates a synchronous exit handler that restores terminal state.
|
|
17
|
-
* Extracted as a pure function so it can be unit-tested without side effects.
|
|
18
|
-
*/
|
|
19
|
-
export declare const makeTerminalCleanupHandler: (stdin: {
|
|
20
|
-
isTTY?: boolean | undefined;
|
|
21
|
-
setRawMode?: ((raw: boolean) => void) | undefined;
|
|
22
|
-
}, stdout: {
|
|
23
|
-
write: (data: string) => boolean;
|
|
24
|
-
}) => () => void;
|
|
25
|
-
/**
|
|
26
|
-
* Registers the terminal cleanup handler on process 'exit'.
|
|
27
|
-
* Call once at program startup (main.ts).
|
|
28
|
-
*/
|
|
29
|
-
export declare const setupTerminalCleanup: () => void;
|
|
30
|
-
//# sourceMappingURL=terminalCleanup.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"terminalCleanup.d.ts","sourceRoot":"","sources":["../src/terminalCleanup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,oDAAoD;AACpD,eAAO,MAAM,WAAW,gBAAc,CAAC;AAEvC;;;GAGG;AACH,eAAO,MAAM,0BAA0B;;;;;gBAcpC,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,oBAAoB,YAEhC,CAAC"}
|
package/dist/terminalCleanup.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Terminal cleanup for abrupt exits.
|
|
3
|
-
*
|
|
4
|
-
* @clack/prompts' spinner and taskLog call stdin.setRawMode(true) and hide
|
|
5
|
-
* the cursor via escape sequences. When the process is killed by a signal
|
|
6
|
-
* handler that calls process.exit() directly (e.g. during Ctrl-C cleanup in
|
|
7
|
-
* SandboxFactory), clack's own cleanup is bypassed and the terminal is left
|
|
8
|
-
* in raw mode with the cursor hidden.
|
|
9
|
-
*
|
|
10
|
-
* Registering a process 'exit' listener that restores these guarantees the
|
|
11
|
-
* terminal is always left in a usable state.
|
|
12
|
-
*/
|
|
13
|
-
/** Escape sequence to show the cursor (DECTCEM). */
|
|
14
|
-
export const SHOW_CURSOR = "\x1b[?25h";
|
|
15
|
-
/**
|
|
16
|
-
* Creates a synchronous exit handler that restores terminal state.
|
|
17
|
-
* Extracted as a pure function so it can be unit-tested without side effects.
|
|
18
|
-
*/
|
|
19
|
-
export const makeTerminalCleanupHandler = (stdin, stdout) => () => {
|
|
20
|
-
if (stdin.isTTY && stdin.setRawMode) {
|
|
21
|
-
try {
|
|
22
|
-
stdin.setRawMode(false);
|
|
23
|
-
}
|
|
24
|
-
catch {
|
|
25
|
-
// Best-effort — may fail if stdin is already closed
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
stdout.write(SHOW_CURSOR);
|
|
29
|
-
};
|
|
30
|
-
/**
|
|
31
|
-
* Registers the terminal cleanup handler on process 'exit'.
|
|
32
|
-
* Call once at program startup (main.ts).
|
|
33
|
-
*/
|
|
34
|
-
export const setupTerminalCleanup = () => {
|
|
35
|
-
process.on("exit", makeTerminalCleanupHandler(process.stdin, process.stdout));
|
|
36
|
-
};
|
|
37
|
-
//# sourceMappingURL=terminalCleanup.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"terminalCleanup.js","sourceRoot":"","sources":["../src/terminalCleanup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,oDAAoD;AACpD,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAC;AAEvC;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GACrC,CACE,KAA+D,EAC/D,MAA4C,EAC5C,EAAE,CACJ,GAAS,EAAE;IACT,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,oDAAoD;QACtD,CAAC;IACH,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AAC5B,CAAC,CAAC;AAEJ;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAS,EAAE;IAC7C,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,0BAA0B,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAChF,CAAC,CAAC"}
|
package/dist/testSandbox.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Test helper: creates a local (filesystem-based) Sandbox layer for unit tests.
|
|
3
|
-
* This replaces FilesystemSandbox which has been removed.
|
|
4
|
-
*/
|
|
5
|
-
import { Layer } from "effect";
|
|
6
|
-
import { Sandbox } from "./SandboxFactory.js";
|
|
7
|
-
export declare const makeLocalSandboxLayer: (sandboxDir: string) => Layer.Layer<Sandbox, never, never>;
|
|
8
|
-
//# sourceMappingURL=testSandbox.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"testSandbox.d.ts","sourceRoot":"","sources":["../src/testSandbox.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAU,KAAK,EAAE,MAAM,QAAQ,CAAC;AASvC,OAAO,EAAmB,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAa/D,eAAO,MAAM,qBAAqB,4DAsGjC,CAAC"}
|