@assemblyline-agents/cli 0.1.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 (147) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +19 -0
  3. package/dist/add.d.ts +23 -0
  4. package/dist/add.d.ts.map +1 -0
  5. package/dist/add.js +352 -0
  6. package/dist/add.js.map +1 -0
  7. package/dist/args.d.ts +14 -0
  8. package/dist/args.d.ts.map +1 -0
  9. package/dist/args.js +95 -0
  10. package/dist/args.js.map +1 -0
  11. package/dist/auth.d.ts +8 -0
  12. package/dist/auth.d.ts.map +1 -0
  13. package/dist/auth.js +74 -0
  14. package/dist/auth.js.map +1 -0
  15. package/dist/channels.d.ts +25 -0
  16. package/dist/channels.d.ts.map +1 -0
  17. package/dist/channels.js +76 -0
  18. package/dist/channels.js.map +1 -0
  19. package/dist/checkpoints.d.ts +3 -0
  20. package/dist/checkpoints.d.ts.map +1 -0
  21. package/dist/checkpoints.js +60 -0
  22. package/dist/checkpoints.js.map +1 -0
  23. package/dist/deploy-definition.d.ts +14 -0
  24. package/dist/deploy-definition.d.ts.map +1 -0
  25. package/dist/deploy-definition.js +92 -0
  26. package/dist/deploy-definition.js.map +1 -0
  27. package/dist/deploy-lifecycle.d.ts +17 -0
  28. package/dist/deploy-lifecycle.d.ts.map +1 -0
  29. package/dist/deploy-lifecycle.js +25 -0
  30. package/dist/deploy-lifecycle.js.map +1 -0
  31. package/dist/deploy.d.ts +20 -0
  32. package/dist/deploy.d.ts.map +1 -0
  33. package/dist/deploy.js +462 -0
  34. package/dist/deploy.js.map +1 -0
  35. package/dist/dev.d.ts +13 -0
  36. package/dist/dev.d.ts.map +1 -0
  37. package/dist/dev.js +157 -0
  38. package/dist/dev.js.map +1 -0
  39. package/dist/eval-assertions.d.ts +5 -0
  40. package/dist/eval-assertions.d.ts.map +1 -0
  41. package/dist/eval-assertions.js +99 -0
  42. package/dist/eval-assertions.js.map +1 -0
  43. package/dist/eval-case-runner.d.ts +38 -0
  44. package/dist/eval-case-runner.d.ts.map +1 -0
  45. package/dist/eval-case-runner.js +247 -0
  46. package/dist/eval-case-runner.js.map +1 -0
  47. package/dist/eval-cases.d.ts +6 -0
  48. package/dist/eval-cases.d.ts.map +1 -0
  49. package/dist/eval-cases.js +151 -0
  50. package/dist/eval-cases.js.map +1 -0
  51. package/dist/eval-comparison.d.ts +8 -0
  52. package/dist/eval-comparison.d.ts.map +1 -0
  53. package/dist/eval-comparison.js +90 -0
  54. package/dist/eval-comparison.js.map +1 -0
  55. package/dist/eval-custom.d.ts +15 -0
  56. package/dist/eval-custom.d.ts.map +1 -0
  57. package/dist/eval-custom.js +118 -0
  58. package/dist/eval-custom.js.map +1 -0
  59. package/dist/eval-experiment.d.ts +19 -0
  60. package/dist/eval-experiment.d.ts.map +1 -0
  61. package/dist/eval-experiment.js +122 -0
  62. package/dist/eval-experiment.js.map +1 -0
  63. package/dist/eval-fixtures.d.ts +17 -0
  64. package/dist/eval-fixtures.d.ts.map +1 -0
  65. package/dist/eval-fixtures.js +59 -0
  66. package/dist/eval-fixtures.js.map +1 -0
  67. package/dist/eval-gateway-host.d.ts +34 -0
  68. package/dist/eval-gateway-host.d.ts.map +1 -0
  69. package/dist/eval-gateway-host.js +127 -0
  70. package/dist/eval-gateway-host.js.map +1 -0
  71. package/dist/eval-judge.d.ts +35 -0
  72. package/dist/eval-judge.d.ts.map +1 -0
  73. package/dist/eval-judge.js +105 -0
  74. package/dist/eval-judge.js.map +1 -0
  75. package/dist/eval-mocks.d.ts +10 -0
  76. package/dist/eval-mocks.d.ts.map +1 -0
  77. package/dist/eval-mocks.js +57 -0
  78. package/dist/eval-mocks.js.map +1 -0
  79. package/dist/eval-report.d.ts +7 -0
  80. package/dist/eval-report.d.ts.map +1 -0
  81. package/dist/eval-report.js +89 -0
  82. package/dist/eval-report.js.map +1 -0
  83. package/dist/eval-retry.d.ts +10 -0
  84. package/dist/eval-retry.d.ts.map +1 -0
  85. package/dist/eval-retry.js +37 -0
  86. package/dist/eval-retry.js.map +1 -0
  87. package/dist/eval-trajectory.d.ts +7 -0
  88. package/dist/eval-trajectory.d.ts.map +1 -0
  89. package/dist/eval-trajectory.js +92 -0
  90. package/dist/eval-trajectory.js.map +1 -0
  91. package/dist/eval-turns.d.ts +66 -0
  92. package/dist/eval-turns.d.ts.map +1 -0
  93. package/dist/eval-turns.js +187 -0
  94. package/dist/eval-turns.js.map +1 -0
  95. package/dist/eval-types.d.ts +271 -0
  96. package/dist/eval-types.d.ts.map +1 -0
  97. package/dist/eval-types.js +4 -0
  98. package/dist/eval-types.js.map +1 -0
  99. package/dist/eval.d.ts +26 -0
  100. package/dist/eval.d.ts.map +1 -0
  101. package/dist/eval.js +218 -0
  102. package/dist/eval.js.map +1 -0
  103. package/dist/help.d.ts +12 -0
  104. package/dist/help.d.ts.map +1 -0
  105. package/dist/help.js +323 -0
  106. package/dist/help.js.map +1 -0
  107. package/dist/hosts.d.ts +3 -0
  108. package/dist/hosts.d.ts.map +1 -0
  109. package/dist/hosts.js +51 -0
  110. package/dist/hosts.js.map +1 -0
  111. package/dist/index.d.ts +3 -0
  112. package/dist/index.d.ts.map +1 -0
  113. package/dist/index.js +318 -0
  114. package/dist/index.js.map +1 -0
  115. package/dist/init.d.ts +13 -0
  116. package/dist/init.d.ts.map +1 -0
  117. package/dist/init.js +79 -0
  118. package/dist/init.js.map +1 -0
  119. package/dist/legacy-bin.d.ts +3 -0
  120. package/dist/legacy-bin.d.ts.map +1 -0
  121. package/dist/legacy-bin.js +8 -0
  122. package/dist/legacy-bin.js.map +1 -0
  123. package/dist/models.d.ts +5 -0
  124. package/dist/models.d.ts.map +1 -0
  125. package/dist/models.js +20 -0
  126. package/dist/models.js.map +1 -0
  127. package/dist/operator-client.d.ts +7 -0
  128. package/dist/operator-client.d.ts.map +1 -0
  129. package/dist/operator-client.js +62 -0
  130. package/dist/operator-client.js.map +1 -0
  131. package/dist/pm.d.ts +20 -0
  132. package/dist/pm.d.ts.map +1 -0
  133. package/dist/pm.js +70 -0
  134. package/dist/pm.js.map +1 -0
  135. package/dist/project-env.d.ts +8 -0
  136. package/dist/project-env.d.ts.map +1 -0
  137. package/dist/project-env.js +51 -0
  138. package/dist/project-env.js.map +1 -0
  139. package/dist/secrets.d.ts +3 -0
  140. package/dist/secrets.d.ts.map +1 -0
  141. package/dist/secrets.js +48 -0
  142. package/dist/secrets.js.map +1 -0
  143. package/dist/state.d.ts +3 -0
  144. package/dist/state.d.ts.map +1 -0
  145. package/dist/state.js +85 -0
  146. package/dist/state.js.map +1 -0
  147. package/package.json +67 -0
package/dist/deploy.js ADDED
@@ -0,0 +1,462 @@
1
+ import { spawn } from "node:child_process";
2
+ import { existsSync, mkdirSync, readdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
3
+ import { dirname, resolve } from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ import { buildAgent, compileAgent, planDeployment } from "@assemblyline-agents/compiler";
6
+ import { sanitizeDeployName } from "@assemblyline-agents/core";
7
+ import { installSignalHandlers, listenNodeRuntime, resolveProvider } from "@assemblyline-agents/node";
8
+ import { FileStateAdapter, LocalBlobAdapter, LocalSandboxAdapter, OpenEveRuntime, loadRuntimeBundle } from "@assemblyline-agents/runtime";
9
+ import { booleanFlag, buildOptions, numberFlag, stringFlag } from "./args.js";
10
+ import { printIssues } from "./help.js";
11
+ import { missingPackageFixLines } from "./init.js";
12
+ import { resolveDeployDefinition, resolveDeployEnvironment } from "./deploy-definition.js";
13
+ import { executeDeployLifecycle } from "./deploy-lifecycle.js";
14
+ import { loadProjectEnv, parseEnvSecrets } from "./project-env.js";
15
+ export { parseEnvSecrets } from "./project-env.js";
16
+ export async function runDeployCommand(agentRoot, parsed) {
17
+ loadProjectEnv(agentRoot);
18
+ const deployOptions = {
19
+ environment: "development",
20
+ dryRun: booleanFlag(parsed, "dry-run")
21
+ };
22
+ const target = stringFlag(parsed, "target");
23
+ if (target)
24
+ Object.assign(deployOptions, { target });
25
+ if (deployOptions.dryRun) {
26
+ const manifest = compileAgent({ root: agentRoot });
27
+ deployOptions.environment = resolveDeployEnvironment(manifest, parsed);
28
+ printIssues(manifest.validation.issues.filter((issue) => issue.code === "provider-package-unresolved"), { agentRoot });
29
+ const plan = planDeployment(manifest, deployOptions);
30
+ const definition = resolveDeployDefinition(manifest, plan.target, parsed);
31
+ plan.missingRequirements = await effectiveMissingRequirements(plan, definition);
32
+ printDeployWarnings(plan);
33
+ console.log(JSON.stringify(plan, null, 2));
34
+ return;
35
+ }
36
+ const artifact = buildAgent(buildOptions(parsed, agentRoot));
37
+ deployOptions.environment = resolveDeployEnvironment(artifact.manifest, parsed);
38
+ const plan = planDeployment(artifact.manifest, deployOptions);
39
+ const definition = resolveDeployDefinition(artifact.manifest, plan.target, parsed);
40
+ const effectivePlan = {
41
+ ...plan,
42
+ missingRequirements: await effectiveMissingRequirements(plan, definition),
43
+ canPublish: false
44
+ };
45
+ effectivePlan.canPublish = !effectivePlan.dryRun && effectivePlan.missingRequirements.length === 0;
46
+ printDeployWarnings(effectivePlan);
47
+ console.log(JSON.stringify(effectivePlan, null, 2));
48
+ if (effectivePlan.dryRun)
49
+ return;
50
+ if (effectivePlan.missingRequirements.length > 0) {
51
+ console.error("Missing deploy setup:");
52
+ for (const requirement of effectivePlan.missingRequirements) {
53
+ console.error(`- ${requirement.name}: ${requirement.message}`);
54
+ for (const line of missingPackageFixLines(requirement.adapter, agentRoot))
55
+ console.error(line);
56
+ }
57
+ process.exit(1);
58
+ }
59
+ if (effectivePlan.target === "local") {
60
+ if (booleanFlag(parsed, "destroy")) {
61
+ assertDestroyAllowed(effectivePlan, parsed);
62
+ if (booleanFlag(parsed, "purge-data")) {
63
+ for (const entry of ["deploy-state.json", "blobs", "sandbox"]) {
64
+ rmSync(resolve(artifact.root, entry), { recursive: true, force: true });
65
+ }
66
+ }
67
+ removeDeployReceipts(artifact.root, effectivePlan);
68
+ console.log(`Local deploy environment "${effectivePlan.environment}" destroyed${booleanFlag(parsed, "purge-data") ? " (data purged)" : ""}.`);
69
+ return;
70
+ }
71
+ if (booleanFlag(parsed, "serve") || booleanFlag(parsed, "once")) {
72
+ const runtimeOptions = loadRuntimeBundle(artifact.root);
73
+ if (booleanFlag(parsed, "once")) {
74
+ new OpenEveRuntime({ ...runtimeOptions, devMode: true }).boot();
75
+ writeDeployReceipt(artifact.root, effectivePlan, localDeployReceipt(artifact, effectivePlan, "checked", null));
76
+ console.log(`Local deploy serving revision ${effectivePlan.agentRevision}`);
77
+ console.log("local deploy check completed without binding a socket");
78
+ return;
79
+ }
80
+ const handle = await listenNodeRuntime({
81
+ ...runtimeOptions,
82
+ state: new FileStateAdapter(resolve(artifact.root, "deploy-state.json")),
83
+ blob: new LocalBlobAdapter(resolve(artifact.root, "blobs")),
84
+ sandbox: new LocalSandboxAdapter(resolve(artifact.root, "sandbox")),
85
+ devMode: true,
86
+ port: numberFlag(parsed, "port") ?? 0
87
+ });
88
+ writeDeployReceipt(artifact.root, effectivePlan, localDeployReceipt(artifact, effectivePlan, "serving", handle.url));
89
+ console.log(`Local deploy serving revision ${effectivePlan.agentRevision}`);
90
+ console.log(handle.url);
91
+ // SIGTERM/SIGINT drain in-flight runs before exit; a second signal exits immediately.
92
+ installSignalHandlers(handle);
93
+ await handle.closed;
94
+ return;
95
+ }
96
+ writeDeployReceipt(artifact.root, effectivePlan, localDeployReceipt(artifact, effectivePlan, "prepared", null));
97
+ console.log(`Local deploy prepared for revision ${effectivePlan.agentRevision}. Run assembly-line serve to keep it online.`);
98
+ return;
99
+ }
100
+ await runProviderDeploy(artifact, effectivePlan, definition, parsed, agentRoot);
101
+ }
102
+ /**
103
+ * The canonical receipt is per environment (`deployments/<environment>.json`).
104
+ * The legacy `deployment.json` keeps its exact historical behavior — always
105
+ * written, last deploy wins — so existing readers are unaffected; new readers
106
+ * should prefer the environment-scoped file.
107
+ */
108
+ function environmentReceiptPath(artifactRoot, environment) {
109
+ return resolve(artifactRoot, "deployments", `${sanitizeDeployName(environment)}.json`);
110
+ }
111
+ function writeDeployReceipt(artifactRoot, plan, receipt) {
112
+ writeJson(environmentReceiptPath(artifactRoot, plan.environment), receipt);
113
+ writeJson(resolve(artifactRoot, "deployment.json"), receipt);
114
+ }
115
+ function removeDeployReceipts(artifactRoot, plan) {
116
+ rmSync(environmentReceiptPath(artifactRoot, plan.environment), { force: true });
117
+ // The legacy mirror is last-deploy-wins; drop it only when it belongs to the
118
+ // environment being destroyed, otherwise it still describes a live deploy.
119
+ const legacyPath = resolve(artifactRoot, "deployment.json");
120
+ try {
121
+ const legacy = JSON.parse(readFileSync(legacyPath, "utf8"));
122
+ if (legacy.environment === plan.environment)
123
+ rmSync(legacyPath, { force: true });
124
+ }
125
+ catch {
126
+ // Unreadable or absent legacy receipt: leave it alone.
127
+ }
128
+ }
129
+ function assertDestroyAllowed(plan, parsed) {
130
+ if (plan.environment === plan.defaultEnvironment && !booleanFlag(parsed, "force")) {
131
+ throw new Error(`Refusing to destroy the default environment "${plan.environment}" without --force. Alternate environments (--env <name>) are presumed disposable; the default one is not.`);
132
+ }
133
+ }
134
+ async function effectiveMissingRequirements(plan, definition) {
135
+ let missing = plan.missingRequirements;
136
+ // VPS runtime credentials are validated from the remote 0600 secret file
137
+ // after optional sync. This allows repeat deploys without copying secrets
138
+ // from the VPS back onto the operator machine.
139
+ if (plan.target === "vps" && !plan.dryRun) {
140
+ missing = missing.filter((requirement) => requirement.kind !== "env");
141
+ }
142
+ if (plan.target === "railway" && missing.some((requirement) => requirement.name === "RAILWAY_TOKEN")) {
143
+ const railwayBin = stringOption(definition, "railwayBin") ?? "railway";
144
+ if (await railwayCliAuthenticated(railwayBin)) {
145
+ missing = missing.filter((requirement) => requirement.name !== "RAILWAY_TOKEN");
146
+ }
147
+ }
148
+ if (plan.target === "fly" && !stringOption(definition, "app")) {
149
+ missing = [
150
+ ...missing,
151
+ {
152
+ kind: "deploy",
153
+ name: "fly-app",
154
+ required: true,
155
+ adapter: "fly",
156
+ message: "Fly deploys require --fly-app or FLY_APP_NAME."
157
+ }
158
+ ];
159
+ }
160
+ if (plan.target === "vps") {
161
+ if (!stringOption(definition, "host")) {
162
+ missing = [
163
+ ...missing,
164
+ {
165
+ kind: "deploy",
166
+ name: "vps-host",
167
+ required: true,
168
+ adapter: "vps",
169
+ message: "VPS deploys require a named host through vpsDeploy() or --vps-host."
170
+ }
171
+ ];
172
+ }
173
+ if (!stringOption(definition, "domain")) {
174
+ missing = [
175
+ ...missing,
176
+ {
177
+ kind: "deploy",
178
+ name: "vps-domain",
179
+ required: true,
180
+ adapter: "vps",
181
+ message: "VPS deploys require a public domain through vpsDeploy() or --vps-domain."
182
+ }
183
+ ];
184
+ }
185
+ }
186
+ return missing;
187
+ }
188
+ function printDeployWarnings(plan) {
189
+ if (plan.warnings.length === 0)
190
+ return;
191
+ console.warn("Deploy warnings:");
192
+ for (const warning of plan.warnings)
193
+ console.warn(`- ${warning.name}: ${warning.message}`);
194
+ }
195
+ /**
196
+ * Push the project's local secrets to the deploy target when `--sync-secrets`
197
+ * is set and the publisher supports it. Reads `--secrets-from <path>` or the
198
+ * project `.env`. Logs key names only — never values.
199
+ */
200
+ async function syncDeploySecretsIfRequested(publisher, plan, parsed, agentRoot) {
201
+ if (!booleanFlag(parsed, "sync-secrets"))
202
+ return;
203
+ if (!publisher.syncSecrets) {
204
+ console.warn(`Deploy target ${publisher.target} does not support secret sync; set variables on the target manually.`);
205
+ return;
206
+ }
207
+ const secretsPath = stringFlag(parsed, "secrets-from") ?? resolve(agentRoot, ".env");
208
+ const explicitSecretsPath = stringFlag(parsed, "secrets-from");
209
+ if (explicitSecretsPath && !existsSync(secretsPath)) {
210
+ throw new Error(`Secrets file not found: ${secretsPath}`);
211
+ }
212
+ const fileSecrets = existsSync(secretsPath)
213
+ ? parseEnvSecrets(readFileSync(secretsPath, "utf8"))
214
+ : {};
215
+ const secrets = withDeclaredRuntimeEnv(fileSecrets, plan, process.env);
216
+ const { runtimeSecrets, localDeployKeys } = splitDeploySecrets(secrets, plan);
217
+ if (localDeployKeys.length > 0) {
218
+ console.log(`Kept ${localDeployKeys.length} deploy credential(s) local: ${localDeployKeys.join(", ")}`);
219
+ }
220
+ const receipt = await publisher.syncSecrets(runtimeSecrets, plan);
221
+ console.log(`Synced ${receipt.syncedKeys.length} secret(s) to ${publisher.target}: ${receipt.syncedKeys.join(", ") || "(none)"}`);
222
+ if (receipt.skippedKeys.length > 0) {
223
+ console.log(`Skipped ${receipt.skippedKeys.length} empty key(s): ${receipt.skippedKeys.join(", ")}`);
224
+ }
225
+ }
226
+ export function withDeclaredRuntimeEnv(fileSecrets, plan, env) {
227
+ const secrets = { ...fileSecrets };
228
+ for (const requirement of plan.requirements) {
229
+ if (requirement.kind !== "env" || requirement.adapter === plan.target)
230
+ continue;
231
+ for (const key of [requirement.name, ...(requirement.alternatives ?? [])]) {
232
+ if (env[key] !== undefined)
233
+ secrets[key] = env[key] ?? "";
234
+ }
235
+ }
236
+ return secrets;
237
+ }
238
+ export function splitDeploySecrets(secrets, plan) {
239
+ const deployKeys = new Set(plan.requirements
240
+ .filter((requirement) => requirement.kind === "env" && requirement.adapter === plan.target)
241
+ .flatMap((requirement) => [requirement.name, ...(requirement.alternatives ?? [])]));
242
+ const runtimeKeys = new Set(plan.requirements
243
+ .filter((requirement) => requirement.kind === "env" && requirement.adapter !== plan.target)
244
+ .flatMap((requirement) => [requirement.name, ...(requirement.alternatives ?? [])]));
245
+ const runtimeSecrets = {};
246
+ const localDeployKeys = [];
247
+ for (const [key, value] of Object.entries(secrets)) {
248
+ if (deployKeys.has(key) && !runtimeKeys.has(key)) {
249
+ localDeployKeys.push(key);
250
+ }
251
+ else {
252
+ runtimeSecrets[key] = value;
253
+ }
254
+ }
255
+ return { runtimeSecrets, localDeployKeys };
256
+ }
257
+ async function railwayCliAuthenticated(railwayBin) {
258
+ try {
259
+ const result = await runCommand(railwayBin, ["whoami"], {
260
+ cwd: process.cwd(),
261
+ env: process.env,
262
+ silent: true
263
+ });
264
+ return result.exitCode === 0;
265
+ }
266
+ catch {
267
+ return false;
268
+ }
269
+ }
270
+ /**
271
+ * Every non-local target resolves through the open provider registry. Built-in
272
+ * flags only normalize provider options; publishing follows this single path.
273
+ */
274
+ async function runProviderDeploy(artifact, plan, definition, parsed, agentRoot) {
275
+ const publisher = await resolveProvider("deploy", definition, {
276
+ env: process.env,
277
+ fetch,
278
+ manifest: artifact.manifest,
279
+ artifactRoot: artifact.root,
280
+ providerRoot: fileURLToPath(new URL("..", import.meta.url)),
281
+ devMode: false
282
+ });
283
+ const modeFlags = ["prepare-only", "activate", "rollback", "domains-only", "destroy"]
284
+ .filter((flag) => booleanFlag(parsed, flag));
285
+ if (modeFlags.length > 1) {
286
+ throw new Error(`Deploy lifecycle flags are mutually exclusive: ${modeFlags.map((flag) => `--${flag}`).join(", ")}.`);
287
+ }
288
+ if (booleanFlag(parsed, "destroy")) {
289
+ if (!publisher.destroy)
290
+ throw new Error(`Deploy target ${plan.target} does not support destroy.`);
291
+ assertDestroyAllowed(plan, parsed);
292
+ // No preflight: destroy must not provision anything on the way out.
293
+ const receipt = await publisher.destroy(artifact, plan, { purgeData: booleanFlag(parsed, "purge-data") });
294
+ removeDeployReceipts(artifact.root, plan);
295
+ console.log(`${deployTargetLabel(plan.target)} environment "${plan.environment}" destroyed${booleanFlag(parsed, "purge-data") ? " (data purged)" : ""}.`);
296
+ console.log(JSON.stringify(receipt, null, 2));
297
+ return;
298
+ }
299
+ if (booleanFlag(parsed, "activate")) {
300
+ if (!publisher.activate)
301
+ throw new Error(`Deploy target ${plan.target} does not support separate activation.`);
302
+ await publisher.preflight?.(artifact, plan);
303
+ const receipt = await publisher.activate(artifact, plan);
304
+ writeDeployReceipt(artifact.root, plan, receipt);
305
+ console.log(`${deployTargetLabel(plan.target)} prepared release activated.`);
306
+ console.log(JSON.stringify(receipt, null, 2));
307
+ return;
308
+ }
309
+ if (booleanFlag(parsed, "rollback")) {
310
+ if (!publisher.rollback)
311
+ throw new Error(`Deploy target ${plan.target} does not support rollback.`);
312
+ await publisher.preflight?.(artifact, plan);
313
+ const receipt = await publisher.rollback(artifact, plan);
314
+ writeDeployReceipt(artifact.root, plan, receipt);
315
+ console.log(`${deployTargetLabel(plan.target)} release rolled back.`);
316
+ console.log(JSON.stringify(receipt, null, 2));
317
+ return;
318
+ }
319
+ if (booleanFlag(parsed, "domains-only")) {
320
+ if (!publisher.reconcileDomains)
321
+ throw new Error(`Deploy target ${plan.target} does not support domain reconciliation.`);
322
+ await publisher.preflight?.(artifact, plan);
323
+ const receipt = await publisher.reconcileDomains(artifact, plan);
324
+ writeDeployReceipt(artifact.root, plan, receipt);
325
+ console.log(`${deployTargetLabel(plan.target)} domains reconciled.`);
326
+ console.log(JSON.stringify(receipt, null, 2));
327
+ return;
328
+ }
329
+ const prepareOnly = booleanFlag(parsed, "prepare-only");
330
+ console.log(`${prepareOnly ? "Preparing" : "Publishing"} Assembly Line revision ${plan.agentRevision} with ${plan.target}.`);
331
+ const migrationRequest = configuredMigrationRequest(artifact, parsed);
332
+ const { providerReceipt, migrationStatus, lifecycle } = await executeDeployLifecycle({
333
+ publisher,
334
+ artifact,
335
+ plan,
336
+ migrationRequest,
337
+ activate: !prepareOnly,
338
+ syncSecrets: () => syncDeploySecretsIfRequested(publisher, plan, parsed, agentRoot),
339
+ runFallbackMigrations: () => runConfiguredMigrations(artifact, plan, migrationRequest)
340
+ });
341
+ const receipt = {
342
+ ...providerReceipt,
343
+ migrationStatus,
344
+ ...(Object.keys(lifecycle).length > 0 ? { lifecycle } : {})
345
+ };
346
+ writeDeployReceipt(artifact.root, plan, receipt);
347
+ console.log(`${deployTargetLabel(plan.target)} deploy ${prepareOnly ? "prepared" : "completed"}.`);
348
+ if (artifact.manifest.deploymentRequirements?.remoteExecution) {
349
+ console.log(`Codex CLI and persistent credential storage are provisioned. Run \`assembly-line auth codex <agentRoot> --target ${plan.target} --env ${plan.environment}${prepareOnly ? " --prepared" : ""}\` to complete device authentication; OAuth tokens are not deployment secrets.`);
350
+ }
351
+ console.log(JSON.stringify(receipt, null, 2));
352
+ }
353
+ function deployTargetLabel(target) {
354
+ if (target === "railway")
355
+ return "Railway";
356
+ if (target === "docker")
357
+ return "Docker";
358
+ if (target === "fly")
359
+ return "Fly";
360
+ if (target === "vps")
361
+ return "VPS";
362
+ return target;
363
+ }
364
+ function stringOption(definition, name) {
365
+ const value = definition.options?.[name];
366
+ return typeof value === "string" ? value : undefined;
367
+ }
368
+ function configuredMigrationRequest(artifact, parsed) {
369
+ const entries = migrationEntriesForArtifact(artifact);
370
+ const command = stringFlag(parsed, "migration-command") ?? process.env.OPENEVE_MIGRATION_COMMAND;
371
+ if (entries.length > 0 && !command) {
372
+ throw new Error("Migration files are present, but no migration runner was configured. Pass --migration-command or set ASSEMBLY_LINE_MIGRATION_COMMAND.");
373
+ }
374
+ return {
375
+ entries,
376
+ ...(command ? { command } : {})
377
+ };
378
+ }
379
+ async function runConfiguredMigrations(artifact, plan, request) {
380
+ const entries = request.entries;
381
+ if (entries.length === 0)
382
+ return "none";
383
+ const commandName = request.command;
384
+ console.log(`Running ${entries.length} migration file(s) with ${commandName}.`);
385
+ const result = await runCommand(commandName, [], {
386
+ cwd: artifact.root,
387
+ // Both spellings during the rename compatibility window so migration
388
+ // runners written against either prefix keep working.
389
+ env: {
390
+ ...process.env,
391
+ ASSEMBLY_LINE_ARTIFACT_ROOT: artifact.root,
392
+ ASSEMBLY_LINE_AGENT_REVISION: plan.agentRevision,
393
+ ASSEMBLY_LINE_DEPLOY_ENV: plan.environment,
394
+ ASSEMBLY_LINE_MIGRATION_FILES: JSON.stringify(entries),
395
+ OPENEVE_ARTIFACT_ROOT: artifact.root,
396
+ OPENEVE_AGENT_REVISION: plan.agentRevision,
397
+ OPENEVE_DEPLOY_ENV: plan.environment,
398
+ OPENEVE_MIGRATION_FILES: JSON.stringify(entries)
399
+ }
400
+ });
401
+ if (result.exitCode !== 0) {
402
+ throw new Error(`Migration command failed with exit code ${result.exitCode}.`);
403
+ }
404
+ return `ran:${entries.length}`;
405
+ }
406
+ function migrationEntriesForArtifact(artifact) {
407
+ const migrationsDir = resolve(artifact.root, "migrations");
408
+ if (!existsSync(migrationsDir))
409
+ return [];
410
+ return readdirSync(migrationsDir)
411
+ .filter((entry) => entry !== "README.md" && !entry.startsWith("."))
412
+ .sort();
413
+ }
414
+ export function runCommand(commandName, args, options = {}) {
415
+ return new Promise((resolvePromise, reject) => {
416
+ const child = spawn(commandName, args, {
417
+ cwd: options.cwd ?? process.cwd(),
418
+ env: options.env ?? process.env,
419
+ stdio: ["ignore", "pipe", "pipe"]
420
+ });
421
+ let stdout = "";
422
+ let stderr = "";
423
+ child.stdout.on("data", (chunk) => {
424
+ const text = chunk.toString("utf8");
425
+ stdout += text;
426
+ if (!options.silent)
427
+ process.stdout.write(text);
428
+ });
429
+ child.stderr.on("data", (chunk) => {
430
+ const text = chunk.toString("utf8");
431
+ stderr += text;
432
+ if (!options.silent)
433
+ process.stderr.write(text);
434
+ });
435
+ child.on("error", (error) => {
436
+ if (error.code === "ENOENT") {
437
+ reject(new Error(`${commandName} not found. Install it, or pass the matching --*-bin flag with the executable path.`));
438
+ return;
439
+ }
440
+ reject(error);
441
+ });
442
+ child.on("close", (code) => {
443
+ resolvePromise({ exitCode: code ?? 1, stdout, stderr });
444
+ });
445
+ });
446
+ }
447
+ function localDeployReceipt(artifact, plan, status, deploymentUrl) {
448
+ return {
449
+ target: "local",
450
+ status,
451
+ environment: plan.environment,
452
+ agentRevision: plan.agentRevision,
453
+ artifactRoot: artifact.root,
454
+ deploymentUrl,
455
+ completedAt: new Date().toISOString()
456
+ };
457
+ }
458
+ export function writeJson(path, value) {
459
+ mkdirSync(dirname(path), { recursive: true });
460
+ writeFileSync(path, `${JSON.stringify(value, null, 2)}\n`);
461
+ }
462
+ //# sourceMappingURL=deploy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":"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"}
package/dist/dev.d.ts ADDED
@@ -0,0 +1,13 @@
1
+ import { type ValidateAgentFolderOptions } from "@assemblyline-agents/compiler";
2
+ export interface DevCommandOptions {
3
+ agentRoot: string;
4
+ outDir?: string;
5
+ message?: string;
6
+ toolName?: string;
7
+ approve?: boolean;
8
+ watch?: boolean;
9
+ port?: number;
10
+ modelCatalog?: ValidateAgentFolderOptions["modelCatalog"];
11
+ }
12
+ export declare function runDevCommand(options: DevCommandOptions): Promise<void>;
13
+ //# sourceMappingURL=dev.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../src/dev.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmC,KAAK,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAMjH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,0BAA0B,CAAC,cAAc,CAAC,CAAC;CAC3D;AAID,wBAAsB,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAM7E"}