@amodalai/amodal 0.3.89 → 0.3.91

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 (75) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/dist/src/commands/audit.d.ts +1 -3
  3. package/dist/src/commands/audit.d.ts.map +1 -1
  4. package/dist/src/commands/audit.js +4 -53
  5. package/dist/src/commands/audit.js.map +1 -1
  6. package/dist/src/commands/build-manifest-types.js +1 -1
  7. package/dist/src/commands/build-tools.d.ts +3 -10
  8. package/dist/src/commands/build-tools.d.ts.map +1 -1
  9. package/dist/src/commands/build-tools.js +5 -118
  10. package/dist/src/commands/build-tools.js.map +1 -1
  11. package/dist/src/commands/build.d.ts +23 -5
  12. package/dist/src/commands/build.d.ts.map +1 -1
  13. package/dist/src/commands/build.js +53 -34
  14. package/dist/src/commands/build.js.map +1 -1
  15. package/dist/src/commands/chat.d.ts +1 -1
  16. package/dist/src/commands/chat.js +5 -5
  17. package/dist/src/commands/chat.js.map +1 -1
  18. package/dist/src/commands/deploy.d.ts +1 -1
  19. package/dist/src/commands/deploy.d.ts.map +1 -1
  20. package/dist/src/commands/deploy.js +3 -61
  21. package/dist/src/commands/deploy.js.map +1 -1
  22. package/dist/src/commands/deployments.d.ts.map +1 -1
  23. package/dist/src/commands/deployments.js +3 -36
  24. package/dist/src/commands/deployments.js.map +1 -1
  25. package/dist/src/commands/dev.d.ts.map +1 -1
  26. package/dist/src/commands/dev.js +7 -10
  27. package/dist/src/commands/dev.js.map +1 -1
  28. package/dist/src/commands/experiment.d.ts +1 -3
  29. package/dist/src/commands/experiment.d.ts.map +1 -1
  30. package/dist/src/commands/experiment.js +4 -102
  31. package/dist/src/commands/experiment.js.map +1 -1
  32. package/dist/src/commands/promote.d.ts.map +1 -1
  33. package/dist/src/commands/promote.js +3 -21
  34. package/dist/src/commands/promote.js.map +1 -1
  35. package/dist/src/commands/rollback.d.ts.map +1 -1
  36. package/dist/src/commands/rollback.js +3 -24
  37. package/dist/src/commands/rollback.js.map +1 -1
  38. package/dist/src/commands/secrets.d.ts.map +1 -1
  39. package/dist/src/commands/secrets.js +2 -102
  40. package/dist/src/commands/secrets.js.map +1 -1
  41. package/dist/src/commands/serve.d.ts +2 -11
  42. package/dist/src/commands/serve.d.ts.map +1 -1
  43. package/dist/src/commands/serve.js +44 -87
  44. package/dist/src/commands/serve.js.map +1 -1
  45. package/dist/src/commands/status.d.ts.map +1 -1
  46. package/dist/src/commands/status.js +3 -49
  47. package/dist/src/commands/status.js.map +1 -1
  48. package/dist/tsconfig.tsbuildinfo +1 -1
  49. package/package.json +7 -8
  50. package/src/commands/audit.ts +4 -71
  51. package/src/commands/build-manifest-types.ts +1 -1
  52. package/src/commands/build-tools.ts +5 -142
  53. package/src/commands/build.test.ts +14 -9
  54. package/src/commands/build.ts +73 -33
  55. package/src/commands/chat.ts +5 -5
  56. package/src/commands/deploy.test.ts +2 -13
  57. package/src/commands/deploy.ts +5 -67
  58. package/src/commands/deployments.ts +3 -39
  59. package/src/commands/dev.ts +7 -10
  60. package/src/commands/experiment.ts +4 -110
  61. package/src/commands/promote.ts +3 -21
  62. package/src/commands/rollback.ts +3 -24
  63. package/src/commands/secrets.test.ts +12 -134
  64. package/src/commands/secrets.ts +2 -116
  65. package/src/commands/serve.ts +46 -93
  66. package/src/commands/status.ts +3 -51
  67. package/src/e2e-commands.test.ts +18 -17
  68. package/dist/src/shared/platform-client.d.ts +0 -123
  69. package/dist/src/shared/platform-client.d.ts.map +0 -1
  70. package/dist/src/shared/platform-client.js +0 -280
  71. package/dist/src/shared/platform-client.js.map +0 -1
  72. package/src/commands/audit.test.ts +0 -92
  73. package/src/commands/experiment.test.ts +0 -125
  74. package/src/shared/platform-client.test.ts +0 -106
  75. package/src/shared/platform-client.ts +0 -367
package/CHANGELOG.md CHANGED
@@ -1,5 +1,51 @@
1
1
  # @amodalai/amodal
2
2
 
3
+ ## 0.3.91
4
+
5
+ ### Patch Changes
6
+
7
+ - 382a16d: Prune cloud-owned setup, draft, marketplace, and hosted deploy implementation details from the OSS packages while keeping Studio source browsing read-only and using product-neutral runtime, source, and auth contracts.
8
+ - Updated dependencies [382a16d]
9
+ - @amodalai/core@0.3.91
10
+ - @amodalai/db@0.3.91
11
+ - @amodalai/runtime@0.3.91
12
+ - @amodalai/studio@0.3.91
13
+ - @amodalai/types@0.3.91
14
+ - @amodalai/runtime-app@0.3.91
15
+
16
+ ## 0.3.90
17
+
18
+ ### Patch Changes
19
+
20
+ - e31c71f: **Hosted runtime now loads agents from disk like OSS does** — same code path, same bundle hydration, same driver discovery. The standalone deploy-snapshot abstraction is gone.
21
+
22
+ Removed:
23
+ - `@amodalai/core` exports `buildSnapshot`, `snapshotToBundle`, `loadSnapshotFromFile`, `serializeSnapshot`, `snapshotSizeBytes`, `parseSurfaceFromSnapshot`, and the entire `packages/core/src/snapshot/` module.
24
+ - `@amodalai/types` exports `DeploySnapshot`, `SnapshotConnection`, `SnapshotSkill`, `SnapshotAutomation`, `SnapshotKnowledge`, `SnapshotTool`, `SnapshotSubagent`, `SnapshotEval`, `BuildSnapshotOptions`.
25
+ - `@amodalai/runtime` exports `createSnapshotServer` / `SnapshotServerConfig`.
26
+ - `@amodalai/amodal` `getActiveSnapshot` / `uploadSnapshot` methods on `PlatformClient`. `SnapshotDeploymentMeta` renamed to `DeploymentMeta`.
27
+
28
+ Added / renamed:
29
+ - `@amodalai/types` `ToolBuildManifest` and `ToolBuildManifestEntry` (moved from `snapshot-types.ts` into `tool-types.ts`; renamed from `SnapshotBuildManifest` / `SnapshotToolManifestEntry`). These describe tool sandbox snapshots, which are a distinct concept from deploy snapshots and survive the deletion.
30
+ - `@amodalai/runtime` `createBundleServer` / `BundleServerConfig` — drop-in replacement for the old snapshot-server, loads from a repo directory (or extracted tarball) via `loadRepoFromDisk`.
31
+ - `@amodalai/types` `RepoLoadOptions.resolvedCredentials?: Record<string, string>` — pre-resolved credentials passed to every `ConnectionDriver.loadConnection()` call as `LoadConnectionOptions.credentials`, and stamped onto the returned `AgentBundle.resolvedCredentials`. Community drivers (SQL, GraphQL, etc.) can resolve `env:KEY` references in their spec.json against deploy-time secrets, not just `process.env`.
32
+
33
+ Changed CLI behavior:
34
+ - `amodal build` now writes `<output>/agent.tar.gz` (the bundle) and `<output>/manifest.json` (audit metadata: deployId, commitSha, branch, agentName, source, optional toolBuildManifest). Default output dir is `./build/` (was `resolved-config.json`).
35
+ - `amodal serve --config <path>` now accepts a bundle directory or a `.tar.gz` (auto-extracted). `--platform` mode dropped; equivalent flow is to download the tarball and pass `--config`.
36
+ - `amodal chat --config <path>` likewise accepts a bundle directory.
37
+ - Deployment-listing endpoints in `PlatformClient` (`listDeployments`, `rollback`, `promote`, `getStatus`) now hit `/api/deployments` (was `/api/snapshot-deployments`). Cloud-side rename to follow.
38
+
39
+ This is the OSS half of a coordinated change. Cloud-side (build-server, platform-api, hosted-runtime) follows: hosted-runtime fetches `repo.tar.gz` from R2 at boot and calls `loadRepoFromDisk`; `CHANNEL_CONFIG` env injection is dropped (channels are read from `bundle.channels`); the deployments table stops storing `snapshot` JSONB.
40
+
41
+ - Updated dependencies [e31c71f]
42
+ - @amodalai/types@0.3.90
43
+ - @amodalai/core@0.3.90
44
+ - @amodalai/runtime@0.3.90
45
+ - @amodalai/db@0.3.90
46
+ - @amodalai/runtime-app@0.3.90
47
+ - @amodalai/studio@0.3.90
48
+
3
49
  ## 0.3.89
4
50
 
5
51
  ### Patch Changes
@@ -7,11 +7,9 @@ import type { CommandModule } from 'yargs';
7
7
  export interface AuditOptions {
8
8
  sessionId: string;
9
9
  format?: 'json' | 'table';
10
- platformUrl?: string;
11
- platformApiKey?: string;
12
10
  }
13
11
  /**
14
- * Retrieve audit trail for a session from the platform.
12
+ * Hosted audit trails are not available from the OSS CLI.
15
13
  */
16
14
  export declare function runAudit(options: AuditOptions): Promise<void>;
17
15
  export declare const auditCommand: CommandModule;
@@ -1 +1 @@
1
- {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../../src/commands/audit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,OAAO,CAAC;AAGzC,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAoEnE;AAED,eAAO,MAAM,YAAY,EAAE,aAuB1B,CAAC"}
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../../src/commands/audit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,OAAO,CAAC;AAEzC,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAInE;AAED,eAAO,MAAM,YAAY,EAAE,aAuB1B,CAAC"}
@@ -3,62 +3,13 @@
3
3
  * Copyright 2025 Amodal Labs, Inc.
4
4
  * SPDX-License-Identifier: MIT
5
5
  */
6
- import { resolvePlatformConfig } from '../shared/platform-client.js';
7
6
  /**
8
- * Retrieve audit trail for a session from the platform.
7
+ * Hosted audit trails are not available from the OSS CLI.
9
8
  */
10
9
  export async function runAudit(options) {
11
- let platformUrl;
12
- let apiKey;
13
- try {
14
- const config = await resolvePlatformConfig({
15
- url: options.platformUrl,
16
- apiKey: options.platformApiKey,
17
- });
18
- platformUrl = config.url;
19
- apiKey = config.apiKey;
20
- }
21
- catch (err) {
22
- const msg = err instanceof Error ? err.message : String(err);
23
- process.stderr.write(`[audit] ${msg}\n`);
24
- process.exit(1);
25
- }
26
- try {
27
- const response = await fetch(`${platformUrl}/api/audit/sessions/${options.sessionId}`, {
28
- headers: { 'Authorization': `Bearer ${apiKey}` },
29
- });
30
- if (!response.ok) {
31
- process.stderr.write(`[audit] HTTP ${response.status}: ${await response.text()}\n`);
32
- process.exit(1);
33
- }
34
- // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- platform response
35
- const data = await response.json();
36
- if (options.format === 'json') {
37
- process.stdout.write(JSON.stringify(data, null, 2) + '\n');
38
- return;
39
- }
40
- // Table format
41
- const events = data.events;
42
- if (events.length === 0) {
43
- process.stdout.write('No audit events found for this session.\n');
44
- return;
45
- }
46
- const typeWidth = Math.max(10, ...events.map((e) => e.eventType.length));
47
- process.stdout.write(`\nSession: ${data.sessionId}\n`);
48
- process.stdout.write(`${'Type'.padEnd(typeWidth)} ${'Time'.padEnd(24)} Details\n`);
49
- process.stdout.write('-'.repeat(typeWidth + 50) + '\n');
50
- for (const event of events) {
51
- const time = event.createdAt.slice(0, 24);
52
- const details = event.durationMs ? `${event.durationMs}ms` : '';
53
- process.stdout.write(`${event.eventType.padEnd(typeWidth)} ${time.padEnd(24)} ${details}\n`);
54
- }
55
- process.stdout.write(`\nTotal: ${events.length} events\n`);
56
- }
57
- catch (err) {
58
- const msg = err instanceof Error ? err.message : String(err);
59
- process.stderr.write(`[audit] Error: ${msg}\n`);
60
- process.exit(1);
61
- }
10
+ void options;
11
+ process.stderr.write('[audit] Hosted audit retrieval is not included in the OSS CLI.\n');
12
+ process.exit(1);
62
13
  }
63
14
  export const auditCommand = {
64
15
  command: 'audit <session-id>',
@@ -1 +1 @@
1
- {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/commands/audit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/commands/audit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAqB;IAClD,KAAK,OAAO,CAAC;IACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACzF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAkB;IACzC,OAAO,EAAE,oBAAoB;IAC7B,QAAQ,EAAE,gCAAgC;IAC1C,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,UAAU,CAAC,YAAY,EAAE;QACxB,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,IAAI;QAClB,QAAQ,EAAE,6CAA6C;KACxD,CAAC;SACD,MAAM,CAAC,QAAQ,EAAE;QAChB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,CAAU;QACnC,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,eAAe;KAC1B,CAAC;IACN,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,uEAAuE;QACvE,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAW,CAAC;QAC9C,uEAAuE;QACvE,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAqB,CAAC;QAClD,MAAM,QAAQ,CAAC,EAAC,SAAS,EAAE,MAAM,EAAC,CAAC,CAAC;IACtC,CAAC;CACF,CAAC"}
@@ -8,7 +8,7 @@ import { z } from 'zod';
8
8
  * Schema for a single tool entry in the build manifest.
9
9
  */
10
10
  export const BuildManifestToolSchema = z.object({
11
- /** Daytona snapshot ID for fast workspace creation */
11
+ /** Sandbox snapshot ID for fast workspace creation */
12
12
  snapshotId: z.string().min(1),
13
13
  /** Content hash of the tool's source files */
14
14
  imageHash: z.string().min(1),
@@ -11,20 +11,13 @@ import type { BuildManifest } from './build-manifest-types.js';
11
11
  */
12
12
  export declare function listFilesRecursive(dir: string, root?: string): string[];
13
13
  /**
14
- * Create a tar.gz archive of the tool directory.
15
- * Excludes node_modules, .git, __pycache__, etc.
16
- */
17
- export declare function createToolArchive(tool: LoadedTool): Buffer;
18
- /**
19
- * Build Daytona sandbox snapshots for custom tools.
14
+ * Build local custom-tool manifest entries.
20
15
  *
21
16
  * For each tool:
22
17
  * 1. Compute a content hash of all files in the tool directory
23
18
  * 2. If hash matches existing manifest entry, skip (cached)
24
- * 3. Otherwise, upload to the platform API which builds the image
25
- * and creates the Daytona snapshot using the platform's Daytona key
26
- *
27
- * The ISV never touches Daytona directly. The platform owns the infra.
19
+ * 3. Otherwise, generate a local placeholder snapshot id. Hosted control
20
+ * planes own sandbox image builds outside the OSS CLI.
28
21
  *
29
22
  * Writes .amodal/build-manifest.json locally for caching.
30
23
  * The manifest is also included in the deploy snapshot.
@@ -1 +1 @@
1
- {"version":3,"file":"build-tools.d.ts","sourceRoot":"","sources":["../../../src/commands/build-tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,2BAA2B,CAAC;AAE7D;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAoBvE;AA4DD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAU1D;AA0FD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,UAAU,EAAE,GAClB,OAAO,CAAC,aAAa,CAAC,CA8DxB"}
1
+ {"version":3,"file":"build-tools.d.ts","sourceRoot":"","sources":["../../../src/commands/build-tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,2BAA2B,CAAC;AAE7D;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAoBvE;AAwCD;;;;;;;;;;;GAWG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,UAAU,EAAE,GAClB,OAAO,CAAC,aAAa,CAAC,CAoDxB"}
@@ -6,7 +6,6 @@
6
6
  import { createHash } from 'node:crypto';
7
7
  import { readFileSync, writeFileSync, mkdirSync, existsSync, readdirSync } from 'node:fs';
8
8
  import { join, relative } from 'node:path';
9
- import { execSync } from 'node:child_process';
10
9
  /**
11
10
  * Recursively list all files in a directory, returning paths relative to root.
12
11
  * Skips node_modules, .git, __pycache__.
@@ -70,115 +69,13 @@ function loadExistingManifest(repoPath) {
70
69
  }
71
70
  }
72
71
  /**
73
- * Read the platform config from amodal.json.
74
- */
75
- function getPlatformConfig(repoPath) {
76
- try {
77
- const configPath = join(repoPath, 'amodal.json');
78
- const raw = JSON.parse(readFileSync(configPath, 'utf-8'));
79
- // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
80
- const config = raw;
81
- // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
82
- const platform = config['platform'];
83
- if (!platform?.apiKey)
84
- return null;
85
- const apiUrl = (process.env['PLATFORM_API_URL'] ?? 'https://api.amodal.dev').replace(/\/$/, '');
86
- return { apiUrl, apiKey: platform.apiKey };
87
- }
88
- catch {
89
- return null;
90
- }
91
- }
92
- /**
93
- * Create a tar.gz archive of the tool directory.
94
- * Excludes node_modules, .git, __pycache__, etc.
95
- */
96
- export function createToolArchive(tool) {
97
- // Use system tar — available on macOS and Linux
98
- const tarOutput = execSync('tar -czf - ' +
99
- '--exclude=node_modules --exclude=.git --exclude=__pycache__ ' +
100
- '--exclude=.venv --exclude=dist ' +
101
- '-C ' + JSON.stringify(tool.location) + ' .', { maxBuffer: 50 * 1024 * 1024 });
102
- return Buffer.from(tarOutput);
103
- }
104
- const POLL_INTERVAL_MS = 3000;
105
- const POLL_TIMEOUT_MS = 5 * 60 * 1000; // 5 minutes max
106
- /**
107
- * Upload a tool bundle to the platform API and wait for the build to complete.
108
- *
109
- * 1. POST /api/tools/build — starts the build (Vercel creates a Daytona
110
- * sandbox, uploads files, kicks off setup commands asynchronously)
111
- * 2. Poll GET /api/tools/build/:id — waits for setup to finish, then
112
- * the platform snapshots the sandbox and returns the snapshotId
113
- *
114
- * The ISV never needs Daytona credentials. The platform owns the infra.
115
- */
116
- async function buildToolOnPlatform(platformUrl, apiKey, tool, imageHash) {
117
- const archive = createToolArchive(tool);
118
- const fileCount = listFilesRecursive(tool.location).length;
119
- process.stderr.write(`[build-tools] ${tool.name}: uploading ${fileCount} files (${(archive.length / 1024).toFixed(1)} KB)\n`);
120
- // 1. Start the build
121
- const startResponse = await fetch(`${platformUrl}/api/tools/build`, {
122
- method: 'POST',
123
- headers: {
124
- 'Authorization': `Bearer ${apiKey}`,
125
- 'Content-Type': 'application/gzip',
126
- 'X-Tool-Name': tool.name,
127
- 'X-Tool-Hash': imageHash,
128
- 'X-Sandbox-Language': tool.sandboxLanguage,
129
- 'X-Has-Setup-Script': String(tool.hasSetupScript),
130
- 'X-Has-Requirements-Txt': String(tool.hasRequirementsTxt),
131
- 'X-Has-Dockerfile': String(tool.hasDockerfile),
132
- 'X-Has-Package-Json': String(tool.hasPackageJson),
133
- },
134
- body: archive,
135
- });
136
- if (!startResponse.ok) {
137
- const text = await startResponse.text().catch(() => '');
138
- throw new Error(`Platform tool build failed to start (${startResponse.status}): ${text}`);
139
- }
140
- // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
141
- const buildResult = await startResponse.json();
142
- // If already complete (no setup needed), return immediately
143
- if (buildResult.status === 'complete' && buildResult.snapshotId) {
144
- return buildResult.snapshotId;
145
- }
146
- if (buildResult.status === 'failed') {
147
- throw new Error(`Tool build failed: ${buildResult.error ?? 'unknown error'}`);
148
- }
149
- // 2. Poll until complete
150
- const buildId = buildResult.id;
151
- const startTime = Date.now();
152
- while (Date.now() - startTime < POLL_TIMEOUT_MS) {
153
- await new Promise((r) => setTimeout(r, POLL_INTERVAL_MS));
154
- const pollResponse = await fetch(`${platformUrl}/api/tools/build/${buildId}`, {
155
- headers: { 'Authorization': `Bearer ${apiKey}` },
156
- });
157
- if (!pollResponse.ok) {
158
- throw new Error(`Failed to poll build status (${pollResponse.status})`);
159
- }
160
- // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
161
- const poll = await pollResponse.json();
162
- if (poll.status === 'complete' && poll.snapshotId) {
163
- return poll.snapshotId;
164
- }
165
- if (poll.status === 'failed') {
166
- throw new Error(`Tool build failed: ${poll.error ?? 'unknown error'}`);
167
- }
168
- process.stderr.write(`[build-tools] ${tool.name}: ${poll.status}...\n`);
169
- }
170
- throw new Error(`Tool build timed out after ${POLL_TIMEOUT_MS / 1000}s`);
171
- }
172
- /**
173
- * Build Daytona sandbox snapshots for custom tools.
72
+ * Build local custom-tool manifest entries.
174
73
  *
175
74
  * For each tool:
176
75
  * 1. Compute a content hash of all files in the tool directory
177
76
  * 2. If hash matches existing manifest entry, skip (cached)
178
- * 3. Otherwise, upload to the platform API which builds the image
179
- * and creates the Daytona snapshot using the platform's Daytona key
180
- *
181
- * The ISV never touches Daytona directly. The platform owns the infra.
77
+ * 3. Otherwise, generate a local placeholder snapshot id. Hosted control
78
+ * planes own sandbox image builds outside the OSS CLI.
182
79
  *
183
80
  * Writes .amodal/build-manifest.json locally for caching.
184
81
  * The manifest is also included in the deploy snapshot.
@@ -186,7 +83,6 @@ async function buildToolOnPlatform(platformUrl, apiKey, tool, imageHash) {
186
83
  export async function buildToolTemplates(repoPath, tools) {
187
84
  const existing = loadExistingManifest(repoPath);
188
85
  const existingTools = existing?.tools ?? {};
189
- const platform = getPlatformConfig(repoPath);
190
86
  const builtTools = {};
191
87
  let skipped = 0;
192
88
  let built = 0;
@@ -205,17 +101,8 @@ export async function buildToolTemplates(repoPath, tools) {
205
101
  else {
206
102
  process.stderr.write(`[build-tools] ${tool.name}: building (${tool.sandboxLanguage})\n`);
207
103
  }
208
- let snapshotId;
209
- if (platform) {
210
- // Upload to platform API → platform builds on Daytona
211
- snapshotId = await buildToolOnPlatform(platform.apiUrl, platform.apiKey, tool, imageHash);
212
- }
213
- else {
214
- // No platform configured — generate a placeholder
215
- // (local dev mode — tools run in-process, snapshots not needed)
216
- snapshotId = `local-${imageHash.slice(0, 16)}`;
217
- process.stderr.write(`[build-tools] ${tool.name}: no platform configured, using local placeholder\n`);
218
- }
104
+ const snapshotId = `local-${imageHash.slice(0, 16)}`;
105
+ process.stderr.write(`[build-tools] ${tool.name}: using local placeholder\n`);
219
106
  builtTools[tool.name] = { snapshotId, imageHash, sandboxLanguage: tool.sandboxLanguage, hasDockerfile: tool.hasDockerfile, hasSetupScript: tool.hasSetupScript };
220
107
  built++;
221
108
  process.stderr.write(`[build-tools] ${tool.name}: snapshot ${snapshotId}\n`);
@@ -1 +1 @@
1
- {"version":3,"file":"build-tools.js","sourceRoot":"","sources":["../../../src/commands/build-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build-tools.js","sourceRoot":"","sources":["../../../src/commands/build-tools.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,40 @@
1
1
  /**
2
2
  * @license
3
- * Copyright 2025 Amodal Labs, Inc.
3
+ * Copyright 2026 Amodal Labs, Inc.
4
4
  * SPDX-License-Identifier: MIT
5
5
  */
6
6
  import type { CommandModule } from 'yargs';
7
+ import type { ToolBuildManifest } from '@amodalai/types';
7
8
  export interface BuildOptions {
8
9
  cwd?: string;
9
10
  output?: string;
10
11
  tools?: boolean;
11
12
  }
12
13
  /**
13
- * Build a deploy snapshot from the local repo.
14
+ * Audit + handoff metadata `amodal build` emits alongside the bundle
15
+ * tarball. Captures who built it, from where, against which commit —
16
+ * the minimum a runtime / platform needs without re-parsing the bundle.
17
+ */
18
+ export interface DeployManifest {
19
+ deployId: string;
20
+ createdAt: string;
21
+ createdBy: string;
22
+ source: 'cli' | 'github' | 'admin-ui';
23
+ commitSha?: string;
24
+ branch?: string;
25
+ message?: string;
26
+ agentName: string;
27
+ toolBuildManifest?: ToolBuildManifest;
28
+ }
29
+ /**
30
+ * Build a deploy artifact (tarball + manifest) from the local repo.
14
31
  *
15
32
  * 1. Find repo root
16
33
  * 2. Validate configuration
17
- * 3. Load and resolve repo
18
- * 4. Build snapshot
19
- * 5. Write to output file
34
+ * 3. Load and resolve repo (verifies it parses)
35
+ * 4. Optionally build tool sandbox snapshots
36
+ * 5. Pack the repo (including `node_modules`) into a tarball
37
+ * 6. Write a manifest describing the build
20
38
  */
21
39
  export declare function runBuild(options?: BuildOptions): Promise<number>;
22
40
  export declare const buildCommand: CommandModule;
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/commands/build.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,OAAO,CAAC;AAMzC,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAwBD;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CA4D1E;AAED,eAAO,MAAM,YAAY,EAAE,aAoB1B,CAAC"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/commands/build.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,OAAO,CAAC;AAEzC,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAKvD,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,UAAU,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC;AA0BD;;;;;;;;;GASG;AACH,wBAAsB,QAAQ,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CA8E1E;AAED,eAAO,MAAM,YAAY,EAAE,aAoB1B,CAAC"}
@@ -1,18 +1,16 @@
1
1
  /**
2
2
  * @license
3
- * Copyright 2025 Amodal Labs, Inc.
3
+ * Copyright 2026 Amodal Labs, Inc.
4
4
  * SPDX-License-Identifier: MIT
5
5
  */
6
- import { writeFileSync } from 'node:fs';
6
+ import { writeFileSync, mkdirSync } from 'node:fs';
7
7
  import { join, resolve } from 'node:path';
8
8
  import { execSync } from 'node:child_process';
9
- import { loadRepo, buildSnapshot, serializeSnapshot, snapshotSizeBytes } from '@amodalai/core';
9
+ import { randomUUID } from 'node:crypto';
10
+ import { loadRepo } from '@amodalai/core';
10
11
  import { buildToolTemplates } from './build-tools.js';
11
12
  import { findRepoRoot } from '../shared/repo-discovery.js';
12
13
  import { runValidate } from './validate.js';
13
- /**
14
- * Get the current user from git config or fallback.
15
- */
16
14
  function getCurrentUser() {
17
15
  try {
18
16
  return execSync('git config user.email', { encoding: 'utf-8' }).trim();
@@ -21,9 +19,6 @@ function getCurrentUser() {
21
19
  return process.env['USER'] ?? 'unknown';
22
20
  }
23
21
  }
24
- /**
25
- * Get the current git commit SHA, or undefined if not in a git repo.
26
- */
27
22
  function getGitSha() {
28
23
  try {
29
24
  return execSync('git rev-parse HEAD', { encoding: 'utf-8' }).trim();
@@ -32,14 +27,23 @@ function getGitSha() {
32
27
  return undefined;
33
28
  }
34
29
  }
30
+ function getGitBranch() {
31
+ try {
32
+ return execSync('git rev-parse --abbrev-ref HEAD', { encoding: 'utf-8' }).trim();
33
+ }
34
+ catch {
35
+ return undefined;
36
+ }
37
+ }
35
38
  /**
36
- * Build a deploy snapshot from the local repo.
39
+ * Build a deploy artifact (tarball + manifest) from the local repo.
37
40
  *
38
41
  * 1. Find repo root
39
42
  * 2. Validate configuration
40
- * 3. Load and resolve repo
41
- * 4. Build snapshot
42
- * 5. Write to output file
43
+ * 3. Load and resolve repo (verifies it parses)
44
+ * 4. Optionally build tool sandbox snapshots
45
+ * 5. Pack the repo (including `node_modules`) into a tarball
46
+ * 6. Write a manifest describing the build
43
47
  */
44
48
  export async function runBuild(options = {}) {
45
49
  let repoPath;
@@ -58,7 +62,7 @@ export async function runBuild(options = {}) {
58
62
  process.stderr.write(`[build] Validation failed with ${errors} error(s). Fix errors before building.\n`);
59
63
  return 1;
60
64
  }
61
- // Load repo
65
+ // Load repo to verify it parses cleanly
62
66
  process.stderr.write('[build] Loading repo...\n');
63
67
  let repo;
64
68
  try {
@@ -70,45 +74,60 @@ export async function runBuild(options = {}) {
70
74
  return 1;
71
75
  }
72
76
  // Build tool sandbox snapshots if requested
73
- let buildManifest;
77
+ let toolBuildManifest;
74
78
  if (options.tools && repo.tools.length > 0) {
75
79
  process.stderr.write(`[build] Building ${repo.tools.length} tool sandbox(es)...\n`);
76
- buildManifest = await buildToolTemplates(repoPath, repo.tools);
80
+ toolBuildManifest = await buildToolTemplates(repoPath, repo.tools);
77
81
  }
78
82
  else if (options.tools && repo.tools.length === 0) {
79
83
  process.stderr.write('[build] No tools found in tools/ directory\n');
80
84
  }
81
- // Build snapshot (includes tool metadata + build manifest if available)
82
- const snapshot = buildSnapshot(repo, {
85
+ const outDir = options.output ? resolve(options.output) : join(repoPath, 'build');
86
+ mkdirSync(outDir, { recursive: true });
87
+ // Pack the repo into a tarball. Excludes things that don't belong in
88
+ // a deploy artifact: VCS dir, prior build output, environment files.
89
+ const tarballPath = join(outDir, 'agent.tar.gz');
90
+ process.stderr.write(`[build] Packing ${repoPath} → ${tarballPath}\n`);
91
+ try {
92
+ execSync(`tar -czf "${tarballPath}" ` +
93
+ `--exclude='.git' --exclude='build' --exclude='.env' --exclude='.env.local' ` +
94
+ `-C "${repoPath}" .`, { stdio: 'pipe' });
95
+ }
96
+ catch (err) {
97
+ const msg = err instanceof Error ? err.message : String(err);
98
+ process.stderr.write(`[build] tar failed: ${msg}\n`);
99
+ return 1;
100
+ }
101
+ const manifest = {
102
+ deployId: randomUUID(),
103
+ createdAt: new Date().toISOString(),
83
104
  createdBy: getCurrentUser(),
84
105
  source: 'cli',
85
- commitSha: getGitSha(),
86
- buildManifest,
87
- });
88
- // Serialize and write
89
- const serialized = serializeSnapshot(snapshot);
90
- const size = snapshotSizeBytes(serialized);
91
- const outputPath = options.output
92
- ? resolve(options.output)
93
- : join(repoPath, 'resolved-config.json');
94
- writeFileSync(outputPath, serialized);
95
- process.stderr.write(`[build] Snapshot ${snapshot.deployId} written to ${outputPath}\n`);
96
- process.stderr.write(`[build] Size: ${(size / 1024).toFixed(1)} KB\n`);
97
- process.stderr.write(`[build] Connections: ${Object.keys(snapshot.connections).length}, Skills: ${snapshot.skills.length}, Automations: ${snapshot.automations.length}, Knowledge: ${snapshot.knowledge.length}, Tools: ${repo.tools.length}\n`);
106
+ agentName: repo.config.name,
107
+ ...(getGitSha() ? { commitSha: getGitSha() } : {}),
108
+ ...(getGitBranch() ? { branch: getGitBranch() } : {}),
109
+ ...(toolBuildManifest ? { toolBuildManifest } : {}),
110
+ };
111
+ const manifestPath = join(outDir, 'manifest.json');
112
+ writeFileSync(manifestPath, JSON.stringify(manifest, null, 2));
113
+ process.stderr.write(`[build] Wrote tarball ${tarballPath}\n`);
114
+ process.stderr.write(`[build] Wrote manifest ${manifestPath}\n`);
115
+ process.stderr.write(`[build] deployId=${manifest.deployId} commit=${manifest.commitSha ?? '(no git)'} branch=${manifest.branch ?? '-'}\n`);
116
+ process.stderr.write(`[build] Bundle: connections=${repo.connections.size + repo.externalConnections.size}, skills=${repo.skills.length}, automations=${repo.automations.length}, knowledge=${repo.knowledge.length}, tools=${repo.tools.length}\n`);
98
117
  return 0;
99
118
  }
100
119
  export const buildCommand = {
101
120
  command: 'build',
102
- describe: 'Build a deploy snapshot from the local repo',
121
+ describe: 'Pack a deploy artifact (tarball + manifest) from the local repo',
103
122
  builder: (yargs) => yargs
104
123
  .option('output', {
105
124
  type: 'string',
106
125
  alias: 'o',
107
- describe: 'Output file path (default: resolved-config.json)',
126
+ describe: 'Output directory (default: ./build)',
108
127
  })
109
128
  .option('tools', {
110
129
  type: 'boolean',
111
- describe: 'Build Daytona sandbox snapshots for custom tools',
130
+ describe: 'Include local custom-tool build metadata',
112
131
  default: false,
113
132
  }),
114
133
  handler: async (argv) => {
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/commands/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/commands/build.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@ export interface ChatOptions {
18
18
  *
19
19
  * Three modes:
20
20
  * --url <remote> → connect to an already-running server (no local boot)
21
- * --config <file> → boot from a snapshot file
21
+ * --config <dir> → boot from an extracted bundle directory (offline replay)
22
22
  * (default) → boot from the local repo
23
23
  */
24
24
  export declare function runChat(options: ChatOptions): Promise<void>;