@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.
- package/LICENSE +21 -0
- package/README.md +19 -0
- package/dist/add.d.ts +23 -0
- package/dist/add.d.ts.map +1 -0
- package/dist/add.js +352 -0
- package/dist/add.js.map +1 -0
- package/dist/args.d.ts +14 -0
- package/dist/args.d.ts.map +1 -0
- package/dist/args.js +95 -0
- package/dist/args.js.map +1 -0
- package/dist/auth.d.ts +8 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +74 -0
- package/dist/auth.js.map +1 -0
- package/dist/channels.d.ts +25 -0
- package/dist/channels.d.ts.map +1 -0
- package/dist/channels.js +76 -0
- package/dist/channels.js.map +1 -0
- package/dist/checkpoints.d.ts +3 -0
- package/dist/checkpoints.d.ts.map +1 -0
- package/dist/checkpoints.js +60 -0
- package/dist/checkpoints.js.map +1 -0
- package/dist/deploy-definition.d.ts +14 -0
- package/dist/deploy-definition.d.ts.map +1 -0
- package/dist/deploy-definition.js +92 -0
- package/dist/deploy-definition.js.map +1 -0
- package/dist/deploy-lifecycle.d.ts +17 -0
- package/dist/deploy-lifecycle.d.ts.map +1 -0
- package/dist/deploy-lifecycle.js +25 -0
- package/dist/deploy-lifecycle.js.map +1 -0
- package/dist/deploy.d.ts +20 -0
- package/dist/deploy.d.ts.map +1 -0
- package/dist/deploy.js +462 -0
- package/dist/deploy.js.map +1 -0
- package/dist/dev.d.ts +13 -0
- package/dist/dev.d.ts.map +1 -0
- package/dist/dev.js +157 -0
- package/dist/dev.js.map +1 -0
- package/dist/eval-assertions.d.ts +5 -0
- package/dist/eval-assertions.d.ts.map +1 -0
- package/dist/eval-assertions.js +99 -0
- package/dist/eval-assertions.js.map +1 -0
- package/dist/eval-case-runner.d.ts +38 -0
- package/dist/eval-case-runner.d.ts.map +1 -0
- package/dist/eval-case-runner.js +247 -0
- package/dist/eval-case-runner.js.map +1 -0
- package/dist/eval-cases.d.ts +6 -0
- package/dist/eval-cases.d.ts.map +1 -0
- package/dist/eval-cases.js +151 -0
- package/dist/eval-cases.js.map +1 -0
- package/dist/eval-comparison.d.ts +8 -0
- package/dist/eval-comparison.d.ts.map +1 -0
- package/dist/eval-comparison.js +90 -0
- package/dist/eval-comparison.js.map +1 -0
- package/dist/eval-custom.d.ts +15 -0
- package/dist/eval-custom.d.ts.map +1 -0
- package/dist/eval-custom.js +118 -0
- package/dist/eval-custom.js.map +1 -0
- package/dist/eval-experiment.d.ts +19 -0
- package/dist/eval-experiment.d.ts.map +1 -0
- package/dist/eval-experiment.js +122 -0
- package/dist/eval-experiment.js.map +1 -0
- package/dist/eval-fixtures.d.ts +17 -0
- package/dist/eval-fixtures.d.ts.map +1 -0
- package/dist/eval-fixtures.js +59 -0
- package/dist/eval-fixtures.js.map +1 -0
- package/dist/eval-gateway-host.d.ts +34 -0
- package/dist/eval-gateway-host.d.ts.map +1 -0
- package/dist/eval-gateway-host.js +127 -0
- package/dist/eval-gateway-host.js.map +1 -0
- package/dist/eval-judge.d.ts +35 -0
- package/dist/eval-judge.d.ts.map +1 -0
- package/dist/eval-judge.js +105 -0
- package/dist/eval-judge.js.map +1 -0
- package/dist/eval-mocks.d.ts +10 -0
- package/dist/eval-mocks.d.ts.map +1 -0
- package/dist/eval-mocks.js +57 -0
- package/dist/eval-mocks.js.map +1 -0
- package/dist/eval-report.d.ts +7 -0
- package/dist/eval-report.d.ts.map +1 -0
- package/dist/eval-report.js +89 -0
- package/dist/eval-report.js.map +1 -0
- package/dist/eval-retry.d.ts +10 -0
- package/dist/eval-retry.d.ts.map +1 -0
- package/dist/eval-retry.js +37 -0
- package/dist/eval-retry.js.map +1 -0
- package/dist/eval-trajectory.d.ts +7 -0
- package/dist/eval-trajectory.d.ts.map +1 -0
- package/dist/eval-trajectory.js +92 -0
- package/dist/eval-trajectory.js.map +1 -0
- package/dist/eval-turns.d.ts +66 -0
- package/dist/eval-turns.d.ts.map +1 -0
- package/dist/eval-turns.js +187 -0
- package/dist/eval-turns.js.map +1 -0
- package/dist/eval-types.d.ts +271 -0
- package/dist/eval-types.d.ts.map +1 -0
- package/dist/eval-types.js +4 -0
- package/dist/eval-types.js.map +1 -0
- package/dist/eval.d.ts +26 -0
- package/dist/eval.d.ts.map +1 -0
- package/dist/eval.js +218 -0
- package/dist/eval.js.map +1 -0
- package/dist/help.d.ts +12 -0
- package/dist/help.d.ts.map +1 -0
- package/dist/help.js +323 -0
- package/dist/help.js.map +1 -0
- package/dist/hosts.d.ts +3 -0
- package/dist/hosts.d.ts.map +1 -0
- package/dist/hosts.js +51 -0
- package/dist/hosts.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +318 -0
- package/dist/index.js.map +1 -0
- package/dist/init.d.ts +13 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +79 -0
- package/dist/init.js.map +1 -0
- package/dist/legacy-bin.d.ts +3 -0
- package/dist/legacy-bin.d.ts.map +1 -0
- package/dist/legacy-bin.js +8 -0
- package/dist/legacy-bin.js.map +1 -0
- package/dist/models.d.ts +5 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +20 -0
- package/dist/models.js.map +1 -0
- package/dist/operator-client.d.ts +7 -0
- package/dist/operator-client.d.ts.map +1 -0
- package/dist/operator-client.js +62 -0
- package/dist/operator-client.js.map +1 -0
- package/dist/pm.d.ts +20 -0
- package/dist/pm.d.ts.map +1 -0
- package/dist/pm.js +70 -0
- package/dist/pm.js.map +1 -0
- package/dist/project-env.d.ts +8 -0
- package/dist/project-env.d.ts.map +1 -0
- package/dist/project-env.js +51 -0
- package/dist/project-env.js.map +1 -0
- package/dist/secrets.d.ts +3 -0
- package/dist/secrets.d.ts.map +1 -0
- package/dist/secrets.js +48 -0
- package/dist/secrets.js.map +1 -0
- package/dist/state.d.ts +3 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +85 -0
- package/dist/state.js.map +1 -0
- 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"}
|