@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/pm.js ADDED
@@ -0,0 +1,70 @@
1
+ import { existsSync } from "node:fs";
2
+ import { createRequire } from "node:module";
3
+ import { dirname, join } from "node:path";
4
+ import { pathToFileURL } from "node:url";
5
+ const LOCKFILES = [
6
+ ["pnpm-lock.yaml", "pnpm"],
7
+ ["yarn.lock", "yarn"],
8
+ ["package-lock.json", "npm"]
9
+ ];
10
+ /** Detects the package manager from lockfiles, walking up from the agent root and then the cwd. */
11
+ export function detectPackageManager(agentRoot, cwd = process.cwd()) {
12
+ for (const start of [agentRoot, cwd]) {
13
+ for (const dir of ancestorDirs(start)) {
14
+ for (const [lockfile, pm] of LOCKFILES) {
15
+ if (existsSync(join(dir, lockfile)))
16
+ return { pm, projectDir: dir };
17
+ }
18
+ }
19
+ }
20
+ for (const start of [agentRoot, cwd]) {
21
+ for (const dir of ancestorDirs(start)) {
22
+ if (existsSync(join(dir, "package.json")))
23
+ return { pm: "npm", projectDir: dir };
24
+ }
25
+ }
26
+ return { pm: "npm" };
27
+ }
28
+ /** The literal install command for a plugin package, e.g. "pnpm add @assemblyline-agents/postgres". */
29
+ export function suggestInstallCommand(packageName, agentRoot) {
30
+ return `${detectPackageManager(agentRoot).pm} add ${packageName}`;
31
+ }
32
+ /** "Fix:" lines appended wherever the CLI surfaces a missing plugin package. */
33
+ export function installFixLines(packageName, agentRoot, registryKind) {
34
+ const lines = [` Fix: ${suggestInstallCommand(packageName, agentRoot)}`];
35
+ if (registryKind)
36
+ lines.push(` Or: assembly-line add ${registryKind} (installs and wires it in one step)`);
37
+ return lines;
38
+ }
39
+ /** True when the package resolves from any of the given directories (or the CLI itself). */
40
+ export function packageResolvableFrom(packageName, dirs) {
41
+ for (const dir of dirs) {
42
+ try {
43
+ createRequire(pathToFileURL(join(dir, "package.json")).href).resolve(packageName);
44
+ return true;
45
+ }
46
+ catch {
47
+ // keep trying
48
+ }
49
+ }
50
+ try {
51
+ createRequire(import.meta.url).resolve(packageName);
52
+ return true;
53
+ }
54
+ catch {
55
+ return false;
56
+ }
57
+ }
58
+ function ancestorDirs(start) {
59
+ const dirs = [];
60
+ let current = start;
61
+ for (;;) {
62
+ dirs.push(current);
63
+ const parent = dirname(current);
64
+ if (parent === current)
65
+ break;
66
+ current = parent;
67
+ }
68
+ return dirs;
69
+ }
70
+ //# sourceMappingURL=pm.js.map
package/dist/pm.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pm.js","sourceRoot":"","sources":["../src/pm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /** Parse `KEY=VALUE` lines (quotes stripped, `#` comments ignored). */
2
+ export declare function parseEnvSecrets(text: string): Record<string, string>;
3
+ /**
4
+ * Load the project-root `.env` into a process-like environment. Existing
5
+ * variables win so explicit shell/host configuration remains authoritative.
6
+ */
7
+ export declare function loadProjectEnv(projectRoot?: string, env?: Record<string, string | undefined>): string[];
8
+ //# sourceMappingURL=project-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-env.d.ts","sourceRoot":"","sources":["../src/project-env.ts"],"names":[],"mappings":"AAIA,uEAAuE;AACvE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmBpE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,WAAW,SAAgB,EAC3B,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,MAAM,EAAE,CAgBV"}
@@ -0,0 +1,51 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import { resolve } from "node:path";
3
+ import { mirrorEnvAliasesInPlace } from "@assemblyline-agents/core";
4
+ /** Parse `KEY=VALUE` lines (quotes stripped, `#` comments ignored). */
5
+ export function parseEnvSecrets(text) {
6
+ const out = {};
7
+ for (const rawLine of text.split("\n")) {
8
+ const line = rawLine.trim();
9
+ if (!line || line.startsWith("#"))
10
+ continue;
11
+ const assignment = line.startsWith("export ") ? line.slice("export ".length).trimStart() : line;
12
+ const eq = assignment.indexOf("=");
13
+ if (eq <= 0)
14
+ continue;
15
+ const key = assignment.slice(0, eq).trim();
16
+ if (!/^[A-Za-z_][A-Za-z0-9_]*$/u.test(key))
17
+ continue;
18
+ let value = assignment.slice(eq + 1).trim();
19
+ if ((value.startsWith('"') && value.endsWith('"')) || (value.startsWith("'") && value.endsWith("'"))) {
20
+ value = value.slice(1, -1);
21
+ }
22
+ else {
23
+ value = value.replace(/\s+#.*$/u, "").trim();
24
+ }
25
+ out[key] = value;
26
+ }
27
+ return out;
28
+ }
29
+ /**
30
+ * Load the project-root `.env` into a process-like environment. Existing
31
+ * variables win so explicit shell/host configuration remains authoritative.
32
+ */
33
+ export function loadProjectEnv(projectRoot = process.cwd(), env = process.env) {
34
+ const path = resolve(projectRoot, ".env");
35
+ if (!existsSync(path)) {
36
+ mirrorEnvAliasesInPlace(env);
37
+ return [];
38
+ }
39
+ const loaded = [];
40
+ for (const [key, value] of Object.entries(parseEnvSecrets(readFileSync(path, "utf8")))) {
41
+ if (env[key] !== undefined)
42
+ continue;
43
+ env[key] = value;
44
+ loaded.push(key);
45
+ }
46
+ // Rename compatibility: expose every branded variable under both its
47
+ // ASSEMBLY_LINE_* and OPENEVE_* spellings after the .env merge.
48
+ mirrorEnvAliasesInPlace(env);
49
+ return loaded;
50
+ }
51
+ //# sourceMappingURL=project-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-env.js","sourceRoot":"","sources":["../src/project-env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,uEAAuE;AACvE,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAChG,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,EAAE,IAAI,CAAC;YAAE,SAAS;QACtB,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3C,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,SAAS;QACrD,IAAI,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACrG,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/C,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACnB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,EAC3B,MAA0C,OAAO,CAAC,GAAG;IAErD,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC1C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,uBAAuB,CAAC,GAAG,CAAC,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACvF,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS;YAAE,SAAS;QACrC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IACD,qEAAqE;IACrE,gEAAgE;IAChE,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ParsedArgs } from "./args.js";
2
+ export declare function runSecretsCommand(agentRoot: string, parsed: ParsedArgs): Promise<void>;
3
+ //# sourceMappingURL=secrets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../src/secrets.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAG5C,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAuC5F"}
@@ -0,0 +1,48 @@
1
+ import { fileURLToPath } from "node:url";
2
+ import { compileAgent, planDeployment } from "@assemblyline-agents/compiler";
3
+ import { resolveProvider } from "@assemblyline-agents/node";
4
+ import { resolveDeployDefinition, resolveDeployEnvironment } from "./deploy-definition.js";
5
+ export async function runSecretsCommand(agentRoot, parsed) {
6
+ const subcommand = parsed.positional[0];
7
+ if (subcommand !== "diff")
8
+ throw new Error("Usage: assembly-line secrets diff <agentRoot> [--target vps] [--env <name>]");
9
+ const manifest = compileAgent({ root: agentRoot });
10
+ const target = typeof parsed.flags.target === "string" ? parsed.flags.target : manifest.gateway.deploy?.kind;
11
+ const plan = planDeployment(manifest, {
12
+ ...(target ? { target } : {}),
13
+ environment: resolveDeployEnvironment(manifest, parsed),
14
+ dryRun: false
15
+ });
16
+ const definition = resolveDeployDefinition(manifest, plan.target, parsed);
17
+ const artifact = { root: agentRoot, manifest };
18
+ const publisher = await resolveProvider("deploy", definition, {
19
+ env: process.env,
20
+ fetch,
21
+ manifest,
22
+ artifactRoot: agentRoot,
23
+ providerRoot: fileURLToPath(new URL("..", import.meta.url)),
24
+ devMode: false
25
+ });
26
+ if (!publisher.inspectSecrets)
27
+ throw new Error(`Deploy target ${plan.target} does not support secret inventory.`);
28
+ const remote = new Set(await publisher.inspectSecrets(artifact, plan));
29
+ const required = plan.requirements
30
+ .filter((requirement) => requirement.kind === "env" && requirement.adapter !== plan.target)
31
+ .map((requirement) => requirement.name)
32
+ .sort();
33
+ const missingRemote = required.filter((name) => !remote.has(name));
34
+ const extraRemote = [...remote].filter((name) => !required.includes(name)).sort();
35
+ const missingLocal = required.filter((name) => !process.env[name]);
36
+ console.log(JSON.stringify({
37
+ target: plan.target,
38
+ required,
39
+ configuredRemote: [...remote].sort(),
40
+ missingRemote,
41
+ missingLocal,
42
+ extraRemote,
43
+ valuesExposed: false
44
+ }, null, 2));
45
+ if (missingRemote.length > 0)
46
+ process.exitCode = 2;
47
+ }
48
+ //# sourceMappingURL=secrets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secrets.js","sourceRoot":"","sources":["../src/secrets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE7E,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAE3F,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,SAAiB,EAAE,MAAkB;IAC3E,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACxC,IAAI,UAAU,KAAK,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;IAC1H,MAAM,QAAQ,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;IAC7G,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,EAAE;QACpC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,WAAW,EAAE,wBAAwB,CAAC,QAAQ,EAAE,MAAM,CAAC;QACvD,MAAM,EAAE,KAAK;KACd,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,uBAAuB,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAmB,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;IAC/D,MAAM,SAAS,GAAG,MAAM,eAAe,CAAkB,QAAQ,EAAE,UAAU,EAAE;QAC7E,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK;QACL,QAAQ;QACR,YAAY,EAAE,SAAS;QACvB,YAAY,EAAE,aAAa,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3D,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;IACH,IAAI,CAAC,SAAS,CAAC,cAAc;QAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,CAAC,MAAM,qCAAqC,CAAC,CAAC;IAClH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,SAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY;SAC/B,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,KAAK,KAAK,IAAI,WAAW,CAAC,OAAO,KAAK,IAAI,CAAC,MAAM,CAAC;SAC1F,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;SACtC,IAAI,EAAE,CAAC;IACV,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAClF,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;QACzB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ;QACR,gBAAgB,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE;QACpC,aAAa;QACb,YAAY;QACZ,WAAW;QACX,aAAa,EAAE,KAAK;KACrB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACb,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACrD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type ParsedArgs } from "./args.js";
2
+ export declare function runStateCommand(agentRoot: string, parsed: ParsedArgs): Promise<void>;
3
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAcA,OAAO,EAA2B,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAKrE,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAoE1F"}
package/dist/state.js ADDED
@@ -0,0 +1,85 @@
1
+ import { compileAgent } from "@assemblyline-agents/compiler";
2
+ import { ARTIFACT_DIR_NAME, resolveArtifactDirName } from "@assemblyline-agents/core";
3
+ import { existsSync } from "node:fs";
4
+ import { join } from "node:path";
5
+ import { createSshTransport, hostPostgresUpgradeScript, resolveVpsDeployOptions, resolveVpsHost, transferPostgresToVps, vpsDeploymentNames, ROOT_SCRIPT, assertCommand } from "@assemblyline-agents/vps";
6
+ import { booleanFlag, stringFlag } from "./args.js";
7
+ import { resolveDeployDefinition, resolveDeployEnvironment } from "./deploy-definition.js";
8
+ import { writeJson } from "./deploy.js";
9
+ import { dirname, resolve } from "node:path";
10
+ export async function runStateCommand(agentRoot, parsed) {
11
+ const subcommand = parsed.positional[0];
12
+ if (subcommand !== "migrate-postgres" && subcommand !== "upgrade-postgres") {
13
+ throw new Error(`Unknown state subcommand: ${subcommand ?? "(none)"}. Usage: assembly-line state migrate-postgres|upgrade-postgres <agentRoot> ...`);
14
+ }
15
+ const manifest = compileAgent({ root: agentRoot });
16
+ const definition = resolveDeployDefinition(manifest, "vps", parsed);
17
+ const deploy = resolveVpsDeployOptions(definition.options ?? {}, process.cwd());
18
+ if (deploy.database.mode !== "host")
19
+ throw new Error("Postgres transfer requires VPS database.mode to be host.");
20
+ const host = resolveVpsHost({
21
+ host: deploy.host,
22
+ agentRoot,
23
+ cwd: deploy.cwd,
24
+ ...(deploy.hostsFile ? { hostsFile: deploy.hostsFile } : {}),
25
+ env: process.env
26
+ });
27
+ const transport = createSshTransport(host);
28
+ if (subcommand === "upgrade-postgres") {
29
+ if (!booleanFlag(parsed, "confirm-upgrade")) {
30
+ throw new Error("Postgres cluster upgrade requires --confirm-upgrade after reviewing the logical backup, rollback-volume, and downtime plan.");
31
+ }
32
+ const result = await transport.runScript(ROOT_SCRIPT + hostPostgresUpgradeScript({ postgresImage: deploy.postgresImage }), [], { silent: true });
33
+ assertCommand(result, "upgrading host Postgres");
34
+ const receipt = {
35
+ target: "vps",
36
+ operation: "upgrade-postgres",
37
+ host: host.ref,
38
+ image: deploy.postgresImage,
39
+ result: result.stdout.trim(),
40
+ completedAt: new Date().toISOString()
41
+ };
42
+ writeJson(resolve(dirname(agentRoot), artifactDirName(agentRoot), "postgres-upgrade.json"), receipt);
43
+ console.log(JSON.stringify(receipt, null, 2));
44
+ return;
45
+ }
46
+ const sourceEnv = stringFlag(parsed, "source-url-env") ?? "DATABASE_URL";
47
+ if (!/^[A-Z_][A-Z0-9_]*$/u.test(sourceEnv)) {
48
+ throw new Error("--source-url-env must be an uppercase environment variable name.");
49
+ }
50
+ const sourceUrl = process.env[sourceEnv];
51
+ if (!sourceUrl)
52
+ throw new Error(`Source Postgres URL environment variable ${sourceEnv} is not set.`);
53
+ const agentId = manifest.agent.id;
54
+ if (!agentId)
55
+ throw new Error("Postgres transfer requires a stable agent.id.");
56
+ const environment = resolveDeployEnvironment(manifest, parsed);
57
+ const dockerBin = stringFlag(parsed, "docker-bin");
58
+ const names = vpsDeploymentNames({
59
+ agentId,
60
+ environment,
61
+ hostRef: host.ref,
62
+ revision: manifest.agentRevision,
63
+ domain: deploy.domain
64
+ });
65
+ const receipt = await transferPostgresToVps({
66
+ sourceUrl,
67
+ sourceLabel: sourceEnv,
68
+ postgresImage: deploy.postgresImage,
69
+ names,
70
+ transport,
71
+ sourceQuiesced: booleanFlag(parsed, "source-quiesced"),
72
+ replaceTarget: booleanFlag(parsed, "replace-target"),
73
+ ...(dockerBin ? { dockerBin } : {})
74
+ });
75
+ writeJson(resolve(dirname(agentRoot), artifactDirName(agentRoot), "postgres-transfer.json"), receipt);
76
+ console.log(JSON.stringify(receipt, null, 2));
77
+ }
78
+ /** Sibling artifact dir name for receipts, dual-reading both spellings. */
79
+ function artifactDirName(agentRoot) {
80
+ return resolveArtifactDirName(dirname(resolve(agentRoot)), {
81
+ exists: (parentDir, name) => existsSync(join(parentDir, name)),
82
+ defaultName: ARTIFACT_DIR_NAME
83
+ });
84
+ }
85
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,67 @@
1
+ {
2
+ "name": "@assemblyline-agents/cli",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "bin": {
6
+ "assembly-line": "./dist/index.js",
7
+ "openeve": "./dist/legacy-bin.js"
8
+ },
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "default": "./dist/index.js"
13
+ },
14
+ "./eval": {
15
+ "types": "./dist/eval.d.ts",
16
+ "default": "./dist/eval.js"
17
+ }
18
+ },
19
+ "dependencies": {
20
+ "esbuild": "^0.28.1",
21
+ "@assemblyline-agents/docker": "0.1.0",
22
+ "@assemblyline-agents/node": "0.1.0",
23
+ "@assemblyline-agents/pi": "0.1.0",
24
+ "@assemblyline-agents/compiler": "0.1.0",
25
+ "@assemblyline-agents/runtime": "0.1.0",
26
+ "@assemblyline-agents/core": "0.1.0",
27
+ "@assemblyline-agents/fly": "0.1.0",
28
+ "@assemblyline-agents/railway": "0.1.0",
29
+ "@assemblyline-agents/vps": "0.1.0"
30
+ },
31
+ "description": "Vendor-neutral, filesystem-first framework for durable AI agents.",
32
+ "files": [
33
+ "dist"
34
+ ],
35
+ "engines": {
36
+ "node": ">=22.19.0"
37
+ },
38
+ "license": "MIT",
39
+ "repository": {
40
+ "type": "git",
41
+ "url": "git+https://github.com/jasonbadeaux/openeve.git",
42
+ "directory": "packages/cli"
43
+ },
44
+ "bugs": {
45
+ "url": "https://github.com/jasonbadeaux/openeve/issues"
46
+ },
47
+ "homepage": "https://github.com/jasonbadeaux/openeve#readme",
48
+ "author": "OpenEve contributors",
49
+ "keywords": [
50
+ "openeve",
51
+ "ai",
52
+ "agents",
53
+ "cli",
54
+ "framework",
55
+ "durable-agents",
56
+ "scaffolding"
57
+ ],
58
+ "publishConfig": {
59
+ "access": "public"
60
+ },
61
+ "scripts": {
62
+ "build": "tsc -p tsconfig.json",
63
+ "check": "tsc -p tsconfig.json --noEmit",
64
+ "dev": "node dist/index.js dev",
65
+ "validate": "node dist/index.js validate"
66
+ }
67
+ }