@ai-hero/sandcastle 0.6.5 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/README.md +137 -62
  2. package/dist/{MountConfig.d.ts → MountConfig-CmXclHA5.d.ts} +3 -2
  3. package/dist/{SandboxProvider.d.ts → SandboxProvider-EkSMuBp8.d.ts} +25 -39
  4. package/dist/chunk-52CIJF45.js +25569 -0
  5. package/dist/chunk-52CIJF45.js.map +1 -0
  6. package/dist/chunk-5VM5QZ26.js +26988 -0
  7. package/dist/chunk-5VM5QZ26.js.map +1 -0
  8. package/dist/chunk-72UVAC7B.js +99 -0
  9. package/dist/chunk-72UVAC7B.js.map +1 -0
  10. package/dist/chunk-BIWNFKGV.js +22 -0
  11. package/dist/chunk-BIWNFKGV.js.map +1 -0
  12. package/dist/chunk-NGBM7T3E.js +76 -0
  13. package/dist/chunk-NGBM7T3E.js.map +1 -0
  14. package/dist/chunk-NSFQW6ML.js +362 -0
  15. package/dist/chunk-NSFQW6ML.js.map +1 -0
  16. package/dist/index.d.ts +920 -22
  17. package/dist/index.js +3212 -9
  18. package/dist/index.js.map +1 -1
  19. package/dist/main.d.ts +0 -2
  20. package/dist/main.js +19349 -13
  21. package/dist/main.js.map +1 -1
  22. package/dist/mountUtils-CCA-bbpK.d.ts +25 -0
  23. package/dist/sandboxes/daytona.d.ts +8 -5
  24. package/dist/sandboxes/daytona.js +118 -124
  25. package/dist/sandboxes/daytona.js.map +1 -1
  26. package/dist/sandboxes/docker.d.ts +10 -8
  27. package/dist/sandboxes/docker.js +8 -255
  28. package/dist/sandboxes/docker.js.map +1 -1
  29. package/dist/sandboxes/no-sandbox.d.ts +7 -4
  30. package/dist/sandboxes/no-sandbox.js +6 -114
  31. package/dist/sandboxes/no-sandbox.js.map +1 -1
  32. package/dist/sandboxes/podman.d.ts +10 -8
  33. package/dist/sandboxes/podman.js +287 -297
  34. package/dist/sandboxes/podman.js.map +1 -1
  35. package/dist/sandboxes/vercel.d.ts +7 -4
  36. package/dist/sandboxes/vercel.js +144 -165
  37. package/dist/sandboxes/vercel.js.map +1 -1
  38. package/dist/templates/sequential-reviewer/implement-prompt.md +2 -2
  39. package/dist/templates/simple-loop/prompt.md +2 -2
  40. package/package.json +15 -14
  41. package/dist/AgentProvider.d.ts +0 -134
  42. package/dist/AgentProvider.d.ts.map +0 -1
  43. package/dist/AgentProvider.js +0 -647
  44. package/dist/AgentProvider.js.map +0 -1
  45. package/dist/AgentStreamEmitter.d.ts +0 -36
  46. package/dist/AgentStreamEmitter.d.ts.map +0 -1
  47. package/dist/AgentStreamEmitter.js +0 -21
  48. package/dist/AgentStreamEmitter.js.map +0 -1
  49. package/dist/CopyToWorktree.d.ts +0 -15
  50. package/dist/CopyToWorktree.d.ts.map +0 -1
  51. package/dist/CopyToWorktree.js +0 -60
  52. package/dist/CopyToWorktree.js.map +0 -1
  53. package/dist/Display.d.ts +0 -58
  54. package/dist/Display.d.ts.map +0 -1
  55. package/dist/Display.js +0 -142
  56. package/dist/Display.js.map +0 -1
  57. package/dist/DockerLifecycle.d.ts +0 -54
  58. package/dist/DockerLifecycle.d.ts.map +0 -1
  59. package/dist/DockerLifecycle.js +0 -123
  60. package/dist/DockerLifecycle.js.map +0 -1
  61. package/dist/EnvResolver.d.ts +0 -11
  62. package/dist/EnvResolver.d.ts.map +0 -1
  63. package/dist/EnvResolver.js +0 -63
  64. package/dist/EnvResolver.js.map +0 -1
  65. package/dist/ErrorHandler.d.ts +0 -15
  66. package/dist/ErrorHandler.d.ts.map +0 -1
  67. package/dist/ErrorHandler.js +0 -85
  68. package/dist/ErrorHandler.js.map +0 -1
  69. package/dist/InitService.d.ts +0 -92
  70. package/dist/InitService.d.ts.map +0 -1
  71. package/dist/InitService.js +0 -836
  72. package/dist/InitService.js.map +0 -1
  73. package/dist/MountConfig.d.ts.map +0 -1
  74. package/dist/MountConfig.js +0 -7
  75. package/dist/MountConfig.js.map +0 -1
  76. package/dist/Orchestrator.d.ts +0 -56
  77. package/dist/Orchestrator.d.ts.map +0 -1
  78. package/dist/Orchestrator.js +0 -293
  79. package/dist/Orchestrator.js.map +0 -1
  80. package/dist/Output.d.ts +0 -107
  81. package/dist/Output.d.ts.map +0 -1
  82. package/dist/Output.js +0 -95
  83. package/dist/Output.js.map +0 -1
  84. package/dist/PodmanLifecycle.d.ts +0 -17
  85. package/dist/PodmanLifecycle.d.ts.map +0 -1
  86. package/dist/PodmanLifecycle.js +0 -45
  87. package/dist/PodmanLifecycle.js.map +0 -1
  88. package/dist/PromptArgumentSubstitution.d.ts +0 -32
  89. package/dist/PromptArgumentSubstitution.d.ts.map +0 -1
  90. package/dist/PromptArgumentSubstitution.js +0 -104
  91. package/dist/PromptArgumentSubstitution.js.map +0 -1
  92. package/dist/PromptPreprocessor.d.ts +0 -15
  93. package/dist/PromptPreprocessor.d.ts.map +0 -1
  94. package/dist/PromptPreprocessor.js +0 -55
  95. package/dist/PromptPreprocessor.js.map +0 -1
  96. package/dist/PromptResolver.d.ts +0 -21
  97. package/dist/PromptResolver.d.ts.map +0 -1
  98. package/dist/PromptResolver.js +0 -27
  99. package/dist/PromptResolver.js.map +0 -1
  100. package/dist/RecoveryMessage.d.ts +0 -15
  101. package/dist/RecoveryMessage.d.ts.map +0 -1
  102. package/dist/RecoveryMessage.js +0 -81
  103. package/dist/RecoveryMessage.js.map +0 -1
  104. package/dist/SandboxFactory.d.ts +0 -90
  105. package/dist/SandboxFactory.d.ts.map +0 -1
  106. package/dist/SandboxFactory.js +0 -324
  107. package/dist/SandboxFactory.js.map +0 -1
  108. package/dist/SandboxLifecycle.d.ts +0 -65
  109. package/dist/SandboxLifecycle.d.ts.map +0 -1
  110. package/dist/SandboxLifecycle.js +0 -296
  111. package/dist/SandboxLifecycle.js.map +0 -1
  112. package/dist/SandboxProvider.d.ts.map +0 -1
  113. package/dist/SandboxProvider.js +0 -28
  114. package/dist/SandboxProvider.js.map +0 -1
  115. package/dist/SessionStore.d.ts +0 -110
  116. package/dist/SessionStore.d.ts.map +0 -1
  117. package/dist/SessionStore.js +0 -330
  118. package/dist/SessionStore.js.map +0 -1
  119. package/dist/TextDeltaBuffer.d.ts +0 -24
  120. package/dist/TextDeltaBuffer.d.ts.map +0 -1
  121. package/dist/TextDeltaBuffer.js +0 -68
  122. package/dist/TextDeltaBuffer.js.map +0 -1
  123. package/dist/WorktreeManager.d.ts +0 -79
  124. package/dist/WorktreeManager.d.ts.map +0 -1
  125. package/dist/WorktreeManager.js +0 -283
  126. package/dist/WorktreeManager.js.map +0 -1
  127. package/dist/boundedTail.d.ts +0 -48
  128. package/dist/boundedTail.d.ts.map +0 -1
  129. package/dist/boundedTail.js +0 -64
  130. package/dist/boundedTail.js.map +0 -1
  131. package/dist/cli.d.ts +0 -30
  132. package/dist/cli.d.ts.map +0 -1
  133. package/dist/cli.js +0 -340
  134. package/dist/cli.js.map +0 -1
  135. package/dist/createSandbox.d.ts +0 -154
  136. package/dist/createSandbox.d.ts.map +0 -1
  137. package/dist/createSandbox.js +0 -476
  138. package/dist/createSandbox.js.map +0 -1
  139. package/dist/createWorktree.d.ts +0 -154
  140. package/dist/createWorktree.d.ts.map +0 -1
  141. package/dist/createWorktree.js +0 -391
  142. package/dist/createWorktree.js.map +0 -1
  143. package/dist/errors.d.ts +0 -227
  144. package/dist/errors.d.ts.map +0 -1
  145. package/dist/errors.js +0 -81
  146. package/dist/errors.js.map +0 -1
  147. package/dist/extractStructuredOutput.d.ts +0 -23
  148. package/dist/extractStructuredOutput.d.ts.map +0 -1
  149. package/dist/extractStructuredOutput.js +0 -102
  150. package/dist/extractStructuredOutput.js.map +0 -1
  151. package/dist/index.d.ts.map +0 -1
  152. package/dist/interactive.d.ts +0 -74
  153. package/dist/interactive.d.ts.map +0 -1
  154. package/dist/interactive.js +0 -279
  155. package/dist/interactive.js.map +0 -1
  156. package/dist/main.d.ts.map +0 -1
  157. package/dist/mergeProviderEnv.d.ts +0 -13
  158. package/dist/mergeProviderEnv.d.ts.map +0 -1
  159. package/dist/mergeProviderEnv.js +0 -23
  160. package/dist/mergeProviderEnv.js.map +0 -1
  161. package/dist/mountUtils.d.ts +0 -146
  162. package/dist/mountUtils.d.ts.map +0 -1
  163. package/dist/mountUtils.js +0 -301
  164. package/dist/mountUtils.js.map +0 -1
  165. package/dist/raceAbortSignal.d.ts +0 -18
  166. package/dist/raceAbortSignal.d.ts.map +0 -1
  167. package/dist/raceAbortSignal.js +0 -32
  168. package/dist/raceAbortSignal.js.map +0 -1
  169. package/dist/resolveCwd.d.ts +0 -24
  170. package/dist/resolveCwd.d.ts.map +0 -1
  171. package/dist/resolveCwd.js +0 -32
  172. package/dist/resolveCwd.js.map +0 -1
  173. package/dist/resumePrecheck.d.ts +0 -26
  174. package/dist/resumePrecheck.d.ts.map +0 -1
  175. package/dist/resumePrecheck.js +0 -40
  176. package/dist/resumePrecheck.js.map +0 -1
  177. package/dist/run.d.ts +0 -216
  178. package/dist/run.d.ts.map +0 -1
  179. package/dist/run.js +0 -313
  180. package/dist/run.js.map +0 -1
  181. package/dist/sandboxExec.d.ts +0 -12
  182. package/dist/sandboxExec.d.ts.map +0 -1
  183. package/dist/sandboxExec.js +0 -26
  184. package/dist/sandboxExec.js.map +0 -1
  185. package/dist/sandboxes/daytona.d.ts.map +0 -1
  186. package/dist/sandboxes/docker.d.ts.map +0 -1
  187. package/dist/sandboxes/no-sandbox.d.ts.map +0 -1
  188. package/dist/sandboxes/podman.d.ts.map +0 -1
  189. package/dist/sandboxes/test-bind-mount.d.ts +0 -17
  190. package/dist/sandboxes/test-bind-mount.d.ts.map +0 -1
  191. package/dist/sandboxes/test-bind-mount.js +0 -92
  192. package/dist/sandboxes/test-bind-mount.js.map +0 -1
  193. package/dist/sandboxes/test-isolated.d.ts +0 -17
  194. package/dist/sandboxes/test-isolated.d.ts.map +0 -1
  195. package/dist/sandboxes/test-isolated.js +0 -98
  196. package/dist/sandboxes/test-isolated.js.map +0 -1
  197. package/dist/sandboxes/vercel.d.ts.map +0 -1
  198. package/dist/shutdownRegistry.d.ts +0 -30
  199. package/dist/shutdownRegistry.d.ts.map +0 -1
  200. package/dist/shutdownRegistry.js +0 -73
  201. package/dist/shutdownRegistry.js.map +0 -1
  202. package/dist/startSandbox.d.ts +0 -50
  203. package/dist/startSandbox.d.ts.map +0 -1
  204. package/dist/startSandbox.js +0 -117
  205. package/dist/startSandbox.js.map +0 -1
  206. package/dist/syncIn.d.ts +0 -24
  207. package/dist/syncIn.d.ts.map +0 -1
  208. package/dist/syncIn.js +0 -107
  209. package/dist/syncIn.js.map +0 -1
  210. package/dist/syncOut.d.ts +0 -27
  211. package/dist/syncOut.d.ts.map +0 -1
  212. package/dist/syncOut.js +0 -271
  213. package/dist/syncOut.js.map +0 -1
  214. package/dist/templates.d.ts +0 -2
  215. package/dist/templates.d.ts.map +0 -1
  216. package/dist/templates.js +0 -26
  217. package/dist/templates.js.map +0 -1
  218. package/dist/terminalCleanup.d.ts +0 -30
  219. package/dist/terminalCleanup.d.ts.map +0 -1
  220. package/dist/terminalCleanup.js +0 -37
  221. package/dist/terminalCleanup.js.map +0 -1
  222. package/dist/testSandbox.d.ts +0 -8
  223. package/dist/testSandbox.d.ts.map +0 -1
  224. package/dist/testSandbox.js +0 -109
  225. package/dist/testSandbox.js.map +0 -1
  226. package/dist/testSetup.d.ts +0 -2
  227. package/dist/testSetup.d.ts.map +0 -1
  228. package/dist/testSetup.js +0 -29
  229. package/dist/testSetup.js.map +0 -1
@@ -1,63 +0,0 @@
1
- import { FileSystem } from "@effect/platform";
2
- import { Effect } from "effect";
3
- import { join } from "node:path";
4
- const parseEnvFile = (filePath) => Effect.gen(function* () {
5
- const fs = yield* FileSystem.FileSystem;
6
- const content = yield* fs
7
- .readFileString(filePath)
8
- .pipe(Effect.catchAll(() => Effect.succeed(null)));
9
- if (content === null)
10
- return {};
11
- const vars = {};
12
- for (const line of content.split("\n")) {
13
- const trimmed = line.trim();
14
- if (!trimmed || trimmed.startsWith("#"))
15
- continue;
16
- const eqIndex = trimmed.indexOf("=");
17
- if (eqIndex === -1)
18
- continue;
19
- const key = trimmed.slice(0, eqIndex).trim();
20
- let value = trimmed.slice(eqIndex + 1).trim();
21
- const isDoubleQuoted = value.length >= 2 &&
22
- value[0] === '"' &&
23
- value[value.length - 1] === '"';
24
- const isSingleQuoted = value.length >= 2 &&
25
- value[0] === "'" &&
26
- value[value.length - 1] === "'";
27
- if (isDoubleQuoted || isSingleQuoted) {
28
- value = value.slice(1, -1);
29
- }
30
- if (isDoubleQuoted) {
31
- value = value.replace(/\\([nrt\\])/g, (_, ch) => {
32
- const escapes = {
33
- n: "\n",
34
- r: "\r",
35
- t: "\t",
36
- "\\": "\\",
37
- };
38
- return escapes[ch] ?? ch;
39
- });
40
- }
41
- vars[key] = value;
42
- }
43
- return vars;
44
- });
45
- /**
46
- * Resolve all env vars from .env files with process.env fallback.
47
- *
48
- * Precedence: .sandcastle/.env > process.env
49
- * Only keys declared in .sandcastle/.env are resolved from process.env.
50
- * Repo root .env is not part of the resolution chain.
51
- */
52
- export const resolveEnv = (repoDir) => Effect.gen(function* () {
53
- const sandcastleEnv = yield* parseEnvFile(join(repoDir, ".sandcastle", ".env"));
54
- const result = {};
55
- for (const key of Object.keys(sandcastleEnv)) {
56
- const value = sandcastleEnv[key] || process.env[key];
57
- if (value) {
58
- result[key] = value;
59
- }
60
- }
61
- return result;
62
- });
63
- //# sourceMappingURL=EnvResolver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EnvResolver.js","sourceRoot":"","sources":["../src/EnvResolver.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- import { Effect } from "effect";
2
- import { Display } from "./Display.js";
3
- import type { SandboxError } from "./errors.js";
4
- /**
5
- * Formats a tagged SandboxError into a user-friendly message with
6
- * context-specific hints about what went wrong and how to recover.
7
- */
8
- export declare const formatErrorMessage: (error: SandboxError) => string;
9
- /**
10
- * Wraps an effect so that any SandboxError is caught, displayed via the
11
- * Display service as an error-severity status message, then exits the process
12
- * with code 1. Non-SandboxError errors pass through unchanged.
13
- */
14
- export declare const withFriendlyErrors: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, Exclude<E, SandboxError>, R | Display>;
15
- //# sourceMappingURL=ErrorHandler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ErrorHandler.d.ts","sourceRoot":"","sources":["../src/ErrorHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,iCAuC9B,CAAC;AASF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,4FA6BqB,CAAC"}
@@ -1,85 +0,0 @@
1
- import { Effect } from "effect";
2
- import { Display } from "./Display.js";
3
- /**
4
- * Formats a tagged SandboxError into a user-friendly message with
5
- * context-specific hints about what went wrong and how to recover.
6
- */
7
- export const formatErrorMessage = (error) => {
8
- switch (error._tag) {
9
- case "ExecError":
10
- return `Command failed in sandbox (${error.command}): ${error.message}`;
11
- case "ExecHostError":
12
- return `Command failed on host (${error.command}): ${error.message}`;
13
- case "CopyError":
14
- return `File copy failed: ${error.message}`;
15
- case "DockerError":
16
- return `Docker operation failed: ${error.message}. Is Docker running?`;
17
- case "PodmanError":
18
- return `Podman operation failed: ${error.message}. Is Podman running?`;
19
- case "SyncError":
20
- return `Git sync failed: ${error.message}`;
21
- case "WorktreeError":
22
- return `Git worktree operation failed: ${error.message}`;
23
- case "PromptError":
24
- return `Failed to resolve prompt: ${error.message}`;
25
- case "AgentError":
26
- return `Agent invocation failed: ${error.message}`;
27
- case "ConfigDirError":
28
- return `${error.message}`;
29
- case "InitError":
30
- return `${error.message}`;
31
- case "AgentIdleTimeoutError":
32
- case "WorktreeTimeoutError":
33
- case "ContainerStartTimeoutError":
34
- case "CopyToWorktreeTimeoutError":
35
- case "CopyToWorktreeError":
36
- case "SyncInTimeoutError":
37
- case "HookTimeoutError":
38
- case "GitSetupTimeoutError":
39
- case "PromptExpansionTimeoutError":
40
- case "CommitCollectionTimeoutError":
41
- case "MergeToHostTimeoutError":
42
- case "SessionCaptureError":
43
- case "CwdError":
44
- return error.message;
45
- }
46
- };
47
- const showErrorAndExit = (error) => Effect.gen(function* () {
48
- const d = yield* Display;
49
- yield* d.status(formatErrorMessage(error), "error");
50
- return yield* Effect.sync(() => process.exit(1));
51
- });
52
- /**
53
- * Wraps an effect so that any SandboxError is caught, displayed via the
54
- * Display service as an error-severity status message, then exits the process
55
- * with code 1. Non-SandboxError errors pass through unchanged.
56
- */
57
- export const withFriendlyErrors = (effect) =>
58
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
59
- Effect.catchTags(effect, {
60
- ExecError: showErrorAndExit,
61
- ExecHostError: showErrorAndExit,
62
- CopyError: showErrorAndExit,
63
- DockerError: showErrorAndExit,
64
- PodmanError: showErrorAndExit,
65
- SyncError: showErrorAndExit,
66
- WorktreeError: showErrorAndExit,
67
- PromptError: showErrorAndExit,
68
- AgentError: showErrorAndExit,
69
- ConfigDirError: showErrorAndExit,
70
- InitError: showErrorAndExit,
71
- AgentIdleTimeoutError: showErrorAndExit,
72
- WorktreeTimeoutError: showErrorAndExit,
73
- ContainerStartTimeoutError: showErrorAndExit,
74
- CopyToWorktreeTimeoutError: showErrorAndExit,
75
- CopyToWorktreeError: showErrorAndExit,
76
- SyncInTimeoutError: showErrorAndExit,
77
- HookTimeoutError: showErrorAndExit,
78
- GitSetupTimeoutError: showErrorAndExit,
79
- PromptExpansionTimeoutError: showErrorAndExit,
80
- CommitCollectionTimeoutError: showErrorAndExit,
81
- MergeToHostTimeoutError: showErrorAndExit,
82
- SessionCaptureError: showErrorAndExit,
83
- CwdError: showErrorAndExit,
84
- });
85
- //# sourceMappingURL=ErrorHandler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ErrorHandler.js","sourceRoot":"","sources":["../src/ErrorHandler.ts"],"names":[],"mappings":"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"}
@@ -1,92 +0,0 @@
1
- import { FileSystem } from "@effect/platform";
2
- import { Effect } from "effect";
3
- export interface TemplateMetadata {
4
- name: string;
5
- description: string;
6
- /**
7
- * Host-side npm packages the template's `main` file imports directly (e.g.
8
- * the planner templates import `zod` for their `<plan>` output schema). Init
9
- * offers to install these with the detected package manager so that
10
- * `npx tsx .sandcastle/main.ts` doesn't crash with ERR_MODULE_NOT_FOUND.
11
- */
12
- dependencies?: readonly string[];
13
- }
14
- export declare const listTemplates: () => TemplateMetadata[];
15
- /**
16
- * Host-side npm packages the given template imports directly. Empty when the
17
- * template name is unknown or the template declares no extra dependencies.
18
- */
19
- export declare const getTemplateDependencies: (templateName: string) => readonly string[];
20
- declare const PACKAGE_MANAGERS: readonly ["npm", "pnpm", "yarn", "bun"];
21
- /** A package manager Sandcastle can detect on the host and build install commands for. */
22
- export type PackageManager = (typeof PACKAGE_MANAGERS)[number];
23
- /**
24
- * Detect the host project's package manager. An explicit corepack-style
25
- * `packageManager` field in package.json wins; otherwise the first matching
26
- * lockfile decides. Defaults to npm when nothing matches.
27
- */
28
- export declare const detectPackageManager: (repoDir: string) => Effect.Effect<"bun" | "npm" | "pnpm" | "yarn", never, FileSystem.FileSystem>;
29
- /** Build the command that adds a runtime dependency for the given package manager. */
30
- export declare const addDependencyCommand: (packageManager: "bun" | "npm" | "pnpm" | "yarn", pkg: string) => string;
31
- /**
32
- * Whether the host package.json already declares `pkg` in any of its dependency
33
- * maps. Used so init doesn't offer to install something already present.
34
- */
35
- export declare const hostHasDependency: (repoDir: string, pkg: string) => Effect.Effect<boolean, never, FileSystem.FileSystem>;
36
- export interface AgentEntry {
37
- readonly name: string;
38
- readonly label: string;
39
- readonly defaultModel: string;
40
- readonly factoryImport: string;
41
- readonly dockerfileTemplate: string;
42
- /** Lines to include in the generated `.env.example` for this agent's API key. */
43
- readonly envExample: string;
44
- /**
45
- * Copy-pasteable interactive command that feeds the custom-issue-tracker
46
- * setup prompt to this agent's CLI on the host. Printed in init's next steps
47
- * when the `custom` issue tracker is selected. Runs on the host (the
48
- * sandbox image isn't built yet), so the user must have the CLI installed.
49
- */
50
- readonly setupCommand: string;
51
- }
52
- export declare const listAgents: () => AgentEntry[];
53
- export interface IssueTrackerEntry {
54
- readonly name: string;
55
- readonly label: string;
56
- readonly templateArgs: {
57
- readonly LIST_TASKS_COMMAND: string;
58
- readonly VIEW_TASK_COMMAND: string;
59
- readonly CLOSE_TASK_COMMAND: string;
60
- readonly ISSUE_TRACKER_TOOLS: string;
61
- };
62
- /** Lines to append to `.env.example` for this issue tracker, or empty string if none needed. */
63
- readonly envExample: string;
64
- }
65
- export declare const listIssueTrackers: () => IssueTrackerEntry[];
66
- export declare const getIssueTracker: (name: string) => IssueTrackerEntry | undefined;
67
- export declare const getAgent: (name: string) => AgentEntry | undefined;
68
- export interface SandboxProviderEntry {
69
- readonly name: string;
70
- readonly label: string;
71
- /** Filename written to .sandcastle/ (e.g. "Dockerfile" or "Containerfile") */
72
- readonly containerfileName: string;
73
- /** CLI namespace for build/remove commands (e.g. "docker" or "podman") */
74
- readonly cliNamespace: string;
75
- }
76
- export declare const listSandboxProviders: () => SandboxProviderEntry[];
77
- export declare const getSandboxProvider: (name: string) => SandboxProviderEntry | undefined;
78
- export declare function getNextStepsLines(template: string, mainFilename: string, issueTracker: IssueTrackerEntry, agent: AgentEntry, packageManager: PackageManager): string[];
79
- export interface ScaffoldOptions {
80
- agent: AgentEntry;
81
- model: string;
82
- templateName?: string;
83
- createLabel?: boolean;
84
- issueTracker?: IssueTrackerEntry;
85
- sandboxProvider?: SandboxProviderEntry;
86
- }
87
- export interface ScaffoldResult {
88
- mainFilename: string;
89
- }
90
- export declare const scaffold: (repoDir: string, options: ScaffoldOptions) => Effect.Effect<ScaffoldResult, Error, FileSystem.FileSystem>;
91
- export {};
92
- //# sourceMappingURL=InitService.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InitService.d.ts","sourceRoot":"","sources":["../src/InitService.ts"],"names":[],"mappings":"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"}