@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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 OpenEve contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,19 @@
1
+ # @assemblyline-agents/cli
2
+
3
+ The Assembly Line command-line interface (the `assembly-line` binary; the legacy `openeve` alias still runs and warns once).
4
+
5
+ It provides the developer workflow around the framework: project initialization, local development, compiling and deploying agents to configured deploy providers, adding connection and channel plugins, managing auth and channels, inspecting checkpoints, and running evals (cases, judges, experiments, comparisons, reports). It builds on `@assemblyline-agents/compiler`, `@assemblyline-agents/runtime`, and the deploy plugins such as `@assemblyline-agents/docker`, `@assemblyline-agents/fly`, `@assemblyline-agents/railway`, and `@assemblyline-agents/vps`. Most users get it via the umbrella `@assemblyline-agents/sdk` package.
6
+
7
+ ## Install
8
+
9
+ ```sh
10
+ npm install @assemblyline-agents/cli
11
+ ```
12
+
13
+ ## Part of Assembly Line
14
+
15
+ This package is part of [Assembly Line](https://github.com/jasonbadeaux/openeve), a vendor-neutral, filesystem-first framework for durable AI agents. See the developer documentation in [docs/developers/](https://github.com/jasonbadeaux/openeve/tree/main/docs/developers) for setup, agent authoring, and deployment guides.
16
+
17
+ ## License
18
+
19
+ MIT
package/dist/add.d.ts ADDED
@@ -0,0 +1,23 @@
1
+ /**
2
+ * `assembly-line add <kind|package>` — install a plugin package and wire its provider
3
+ * contribution into the agent folder (gateway slot or channel file).
4
+ * File edits are targeted string surgery; when a file cannot be edited with
5
+ * confidence the exact snippet is printed instead so files are never corrupted.
6
+ */
7
+ export interface AddCommandOptions {
8
+ thing: string;
9
+ agentRoot: string;
10
+ role?: string | undefined;
11
+ pmOverride?: string | undefined;
12
+ /** false with --no-install: print the install command instead of running it. */
13
+ install: boolean;
14
+ runCommand(command: string, args: string[], options?: {
15
+ cwd?: string;
16
+ }): Promise<{
17
+ exitCode: number;
18
+ }>;
19
+ }
20
+ export declare function runAddCommand(options: AddCommandOptions): Promise<void>;
21
+ /** The default gateway scaffold shared by `assembly-line init` and `assembly-line add`. */
22
+ export declare function gatewayScaffoldSource(overrides?: Record<string, string>): string;
23
+ //# sourceMappingURL=add.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../src/add.ts"],"names":[],"mappings":"AAeA;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,gFAAgF;IAChF,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxG;AAiBD,wBAAsB,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB7E;AA6SD,2FAA2F;AAC3F,wBAAgB,qBAAqB,CAAC,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAAG,MAAM,CAkBpF"}
package/dist/add.js ADDED
@@ -0,0 +1,352 @@
1
+ import { cpSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { createRequire } from "node:module";
3
+ import { dirname, join, resolve } from "node:path";
4
+ import { fileURLToPath, pathToFileURL } from "node:url";
5
+ import { allAdapterProviderMetadata, connectionPluginMetadata, pluginModuleFromImport, providerModuleFromImport } from "@assemblyline-agents/core";
6
+ import { detectPackageManager } from "./pm.js";
7
+ const GATEWAY_ROLES = new Set(["deploy", "runtime", "state", "blob", "sandbox", "scheduler"]);
8
+ /** Channel scaffold helpers, verified against each channel package's exports. */
9
+ const CHANNEL_SCAFFOLDS = {
10
+ slack: { helper: "defineSlackChannel", packageName: "@assemblyline-agents/slack" },
11
+ discord: { helper: "defineDiscordChannel", packageName: "@assemblyline-agents/discord" },
12
+ telegram: { helper: "defineTelegramChannel", packageName: "@assemblyline-agents/telegram" },
13
+ teams: { helper: "defineTeamsChannel", packageName: "@assemblyline-agents/teams" }
14
+ };
15
+ export async function runAddCommand(options) {
16
+ const detection = detectPackageManager(options.agentRoot);
17
+ const pm = normalizePm(options.pmOverride) ?? detection.pm;
18
+ const installDir = detection.projectDir ?? process.cwd();
19
+ let metadata;
20
+ if (options.thing.includes("/")) {
21
+ // Scoped/path plugin package: install first, then read kind/role from its openeveProvider export.
22
+ await installPackage(options, pm, installDir, options.thing);
23
+ metadata = await metadataFromPackage(options.thing, options.agentRoot, installDir, options.role);
24
+ }
25
+ else {
26
+ metadata = registryMetadata(options.thing, options.role);
27
+ if (metadata.packageName)
28
+ await installPackage(options, pm, installDir, metadata.packageName);
29
+ }
30
+ const outcome = wireDeclaration(metadata, options.agentRoot);
31
+ for (const line of outcome.lines)
32
+ console.log(line);
33
+ for (const line of copyPluginSkills(metadata, options.agentRoot, installDir))
34
+ console.log(line);
35
+ printNextSteps(metadata, options.agentRoot, pm);
36
+ }
37
+ function normalizePm(pmOverride) {
38
+ if (pmOverride === undefined)
39
+ return undefined;
40
+ if (pmOverride === "pnpm" || pmOverride === "yarn" || pmOverride === "npm")
41
+ return pmOverride;
42
+ throw new Error(`Unknown package manager "${pmOverride}". Use --pm pnpm, yarn, or npm.`);
43
+ }
44
+ async function installPackage(options, pm, installDir, packageName) {
45
+ const installCommand = `${pm} add ${packageName}`;
46
+ if (!options.install) {
47
+ console.log(`Install (skipped by --no-install): ${installCommand}`);
48
+ return;
49
+ }
50
+ console.log(`Installing plugin ${packageName} with ${pm} in ${installDir}.`);
51
+ const result = await options.runCommand(pm, ["add", packageName], { cwd: installDir });
52
+ if (result.exitCode !== 0) {
53
+ throw new Error(`"${installCommand}" failed with exit code ${result.exitCode}.`);
54
+ }
55
+ }
56
+ function registryMetadata(kind, role) {
57
+ const all = allAdapterProviderMetadata();
58
+ const entries = all.filter((entry) => entry.kind === kind);
59
+ if (entries.length === 0) {
60
+ throw new Error([`Unknown plugin or adapter kind "${kind}". Available plugin contributions by role:`, ...kindsByRoleLines(all)].join("\n"));
61
+ }
62
+ if (role) {
63
+ const match = entries.find((entry) => entry.role === role);
64
+ if (!match) {
65
+ throw new Error(`"${kind}" has no ${role} provider. Roles for "${kind}": ${roleList(entries)}.`);
66
+ }
67
+ return match;
68
+ }
69
+ // Prefer installable entries so e.g. `add postgres` means the state package,
70
+ // not the package-less state-backed scheduler variant.
71
+ const installable = entries.filter((entry) => entry.packageName);
72
+ const pool = installable.length > 0 ? installable : entries;
73
+ const roles = [...new Set(pool.map((entry) => entry.role))];
74
+ const first = pool[0];
75
+ const existingContribution = pool.filter((entry) => entry.role !== "connection");
76
+ if (roles.length > 1 && existingContribution.length === 1)
77
+ return existingContribution[0];
78
+ if (roles.length > 1 || !first) {
79
+ throw new Error(`"${kind}" provides multiple roles: ${roles.join(", ")}. Pass --role <role>, e.g. assembly-line add ${kind} --role ${roles[0]}.`);
80
+ }
81
+ return first;
82
+ }
83
+ function roleList(entries) {
84
+ return [...new Set(entries.map((entry) => entry.role))].sort().join(", ");
85
+ }
86
+ function kindsByRoleLines(all) {
87
+ const byRole = new Map();
88
+ for (const entry of all) {
89
+ const kinds = byRole.get(entry.role) ?? new Set();
90
+ kinds.add(entry.kind);
91
+ byRole.set(entry.role, kinds);
92
+ }
93
+ return [...byRole.entries()]
94
+ .sort(([a], [b]) => a.localeCompare(b))
95
+ .map(([role, kinds]) => ` ${role}: ${[...kinds].sort().join(", ")}`);
96
+ }
97
+ async function metadataFromPackage(packageName, agentRoot, installDir, role) {
98
+ const imported = await importPackage(packageName, [agentRoot, installDir]);
99
+ const pluginModule = pluginModuleFromImport(imported);
100
+ const pluginEntries = pluginModule?.connections?.map((connection) => ({
101
+ ...connection,
102
+ packageName: connection.packageName ?? packageName
103
+ })) ?? [];
104
+ const providerModule = providerModuleFromImport(imported);
105
+ if (!providerModule && pluginEntries.length === 0) {
106
+ throw new Error(`Plugin package ${packageName} does not export assemblyLinePlugin/openevePlugin or assemblyLineProvider/openeveProvider, so its contributions cannot be determined.`);
107
+ }
108
+ const entries = [...pluginEntries, ...(providerModule?.providers ?? []).map((registration) => ({
109
+ ...registration.metadata,
110
+ packageName: registration.metadata.packageName ?? packageName
111
+ }))];
112
+ if (role) {
113
+ const match = entries.find((entry) => entry.role === role);
114
+ if (!match) {
115
+ throw new Error(`Package ${packageName} has no ${role} provider. Available: ${entries.map((entry) => `${entry.role}:${entry.kind}`).join(", ")}.`);
116
+ }
117
+ return match;
118
+ }
119
+ const roles = [...new Set(entries.map((entry) => entry.role))];
120
+ const first = entries[0];
121
+ if (roles.length > 1 || !first) {
122
+ throw new Error(`Package ${packageName} provides multiple roles: ${roles.join(", ")}. Pass --role <role>.`);
123
+ }
124
+ return first;
125
+ }
126
+ async function importPackage(packageName, startDirs) {
127
+ const errors = [];
128
+ const specifiers = [packageName];
129
+ for (const dir of startDirs) {
130
+ try {
131
+ const requireFrom = createRequire(pathToFileURL(join(dir, "package.json")).href);
132
+ specifiers.push(pathToFileURL(requireFrom.resolve(packageName)).href);
133
+ }
134
+ catch (error) {
135
+ errors.push(error instanceof Error ? error.message : String(error));
136
+ }
137
+ }
138
+ for (const specifier of [...new Set(specifiers)]) {
139
+ try {
140
+ return await import(specifier);
141
+ }
142
+ catch (error) {
143
+ errors.push(error instanceof Error ? error.message : String(error));
144
+ }
145
+ }
146
+ throw new Error(`Failed to load plugin package ${packageName}: ${errors.join("; ")}. Install it first (or rerun without --no-install).`);
147
+ }
148
+ function wireDeclaration(metadata, agentRoot) {
149
+ if (GATEWAY_ROLES.has(metadata.role))
150
+ return wireGatewaySlot(agentRoot, metadata.role, metadata.kind);
151
+ if (metadata.role === "channel")
152
+ return wireChannel(agentRoot, metadata.kind, metadata.packageName);
153
+ if (metadata.role === "connection") {
154
+ const plugin = asConnectionPluginMetadata(metadata) ?? connectionPluginMetadata(metadata.kind);
155
+ if (plugin)
156
+ return wireConnection(agentRoot, plugin);
157
+ }
158
+ return {
159
+ lines: [
160
+ `${metadata.role} providers are declared in ${metadata.role}s/*.ts, so nothing was wired automatically.`,
161
+ `Create ${metadata.role}s/${metadata.kind}.ts using the helper exported by ${metadata.packageName ?? "the plugin package"}.`
162
+ ]
163
+ };
164
+ }
165
+ function wireConnection(agentRoot, plugin) {
166
+ const relativePath = `connections/${plugin.kind}.ts`;
167
+ const path = join(agentRoot, relativePath);
168
+ if (existsSync(path))
169
+ return { lines: [`${relativePath} already exists. Leaving it unchanged.`], already: true };
170
+ mkdirSync(join(agentRoot, "connections"), { recursive: true });
171
+ writeFileSync(path, [
172
+ `import { ${plugin.helper} } from "${plugin.packageName}";`,
173
+ "",
174
+ `export default ${plugin.helper}({`,
175
+ " access: {",
176
+ " read: true,",
177
+ " // Change to { approval: \"always\" } only after reviewing this plugin's write tools.",
178
+ " write: false",
179
+ " }",
180
+ "});",
181
+ ""
182
+ ].join("\n"));
183
+ return { lines: [`Created ${relativePath} using ${plugin.helper}() with explicit read-only access.`] };
184
+ }
185
+ function copyPluginSkills(metadata, agentRoot, installDir) {
186
+ const connection = asConnectionPluginMetadata(metadata)
187
+ ?? (metadata.role === "connection" ? connectionPluginMetadata(metadata.kind) : undefined);
188
+ const packageName = connection?.packageName;
189
+ const skills = connection?.skills ?? (connection?.skill ? [connection.skill] : []);
190
+ if (!packageName || skills.length === 0)
191
+ return [];
192
+ const packageRoot = resolvePluginPackageRoot(packageName, metadata.kind, [agentRoot, installDir]);
193
+ if (!packageRoot)
194
+ return skills.map((skill) => `Skill ${skill} will be available after ${packageName} is installed.`);
195
+ return skills.map((skill) => {
196
+ const target = join(agentRoot, "skills", skill);
197
+ if (existsSync(target)) {
198
+ return `skills/${skill}/ already exists. Leaving it unchanged.`;
199
+ }
200
+ const source = join(packageRoot, "skills", skill);
201
+ if (!existsSync(join(source, "SKILL.md")))
202
+ return `Plugin ${packageName} does not include skills/${skill}/SKILL.md.`;
203
+ mkdirSync(dirname(target), { recursive: true });
204
+ cpSync(source, target, { recursive: true });
205
+ return `Copied skills/${skill}/ from ${packageName}.`;
206
+ });
207
+ }
208
+ function resolvePluginPackageRoot(packageName, kind, startDirs) {
209
+ for (const startDir of startDirs) {
210
+ try {
211
+ let current = dirname(createRequire(pathToFileURL(join(startDir, "package.json")).href).resolve(packageName));
212
+ while (current !== dirname(current)) {
213
+ const packageJson = join(current, "package.json");
214
+ if (existsSync(packageJson))
215
+ return current;
216
+ current = dirname(current);
217
+ }
218
+ }
219
+ catch {
220
+ // Try the next project root, then the monorepo fallback used by local development.
221
+ }
222
+ }
223
+ const packagesDir = resolve(dirname(fileURLToPath(import.meta.url)), "..", "..");
224
+ const workspaceCandidate = join(packagesDir, kind);
225
+ return existsSync(join(workspaceCandidate, "package.json")) ? workspaceCandidate : undefined;
226
+ }
227
+ function asConnectionPluginMetadata(metadata) {
228
+ const candidate = metadata;
229
+ return candidate.role === "connection" && typeof candidate.helper === "string"
230
+ && (candidate.protocol === "mcp" || candidate.protocol === "openapi" || candidate.protocol === "cli")
231
+ ? candidate
232
+ : undefined;
233
+ }
234
+ function wireGatewaySlot(agentRoot, role, kind) {
235
+ const path = join(agentRoot, "gateway.ts");
236
+ const snippet = ` ${role}: adapter("${kind}"),`;
237
+ if (!existsSync(path)) {
238
+ writeFileSync(path, gatewayScaffoldSource({ [role]: kind }));
239
+ return { lines: [`Created gateway.ts with ${role}: adapter("${kind}").`] };
240
+ }
241
+ const source = readFileSync(path, "utf8");
242
+ const slotPattern = new RegExp(`(\\b${role}\\s*:\\s*adapter\\(\\s*)(["'])([^"']*)\\2`, "u");
243
+ const match = slotPattern.exec(source);
244
+ if (match) {
245
+ if (match[3] === kind) {
246
+ return { lines: [`gateway.ts already sets ${role}: adapter("${kind}"). Nothing to change.`], already: true };
247
+ }
248
+ writeFileSync(path, source.replace(slotPattern, `$1$2${kind}$2`));
249
+ return { lines: [`gateway.ts: ${role} now uses adapter("${kind}") (was "${match[3]}").`] };
250
+ }
251
+ const inserted = insertProperty(source, /defineGateway\(\s*\{/u, snippet);
252
+ if (inserted) {
253
+ writeFileSync(path, inserted);
254
+ return { lines: [`gateway.ts: added ${role}: adapter("${kind}").`] };
255
+ }
256
+ return manualEditOutcome("gateway.ts", "defineGateway({ ... })", snippet);
257
+ }
258
+ function wireChannel(agentRoot, kind, packageName) {
259
+ const relativePath = `channels/${kind}.ts`;
260
+ const path = join(agentRoot, "channels", `${kind}.ts`);
261
+ if (existsSync(path)) {
262
+ return { lines: [`${relativePath} already exists. Leaving it unchanged.`], already: true };
263
+ }
264
+ const scaffold = CHANNEL_SCAFFOLDS[kind];
265
+ if (!scaffold) {
266
+ return {
267
+ lines: [
268
+ `No channel scaffold is known for "${kind}", so nothing was wired automatically.`,
269
+ `Create ${relativePath} exporting a ChannelDefinition from ${packageName ?? "the plugin package"}.`
270
+ ]
271
+ };
272
+ }
273
+ mkdirSync(join(agentRoot, "channels"), { recursive: true });
274
+ writeFileSync(path, [
275
+ `import { ${scaffold.helper} } from "${scaffold.packageName}";`,
276
+ "",
277
+ `export default ${scaffold.helper}();`,
278
+ ""
279
+ ].join("\n"));
280
+ return { lines: [`Created ${relativePath} using ${scaffold.helper}().`] };
281
+ }
282
+ /** Never guess when the file shape is unexpected: print the exact snippet instead. */
283
+ function manualEditOutcome(file, callShape, snippet) {
284
+ return {
285
+ lines: [
286
+ `Could not confidently edit ${file}; paste this into the ${callShape} call yourself:`,
287
+ snippet
288
+ ]
289
+ };
290
+ }
291
+ /**
292
+ * Inserts a property right after the config call's opening brace. Requires the
293
+ * `adapter` helper to be importable from the existing @assemblyline-agents/core import;
294
+ * returns undefined (caller prints the snippet) when either edit is unsafe.
295
+ */
296
+ function insertProperty(source, openPattern, propertyLine) {
297
+ const withImport = ensureCoreImport(source, "adapter");
298
+ if (!withImport)
299
+ return undefined;
300
+ const match = openPattern.exec(withImport);
301
+ if (!match)
302
+ return undefined;
303
+ const index = match.index + match[0].length;
304
+ return `${withImport.slice(0, index)}\n${propertyLine}${withImport.slice(index)}`;
305
+ }
306
+ function ensureCoreImport(source, importName) {
307
+ // The gateway file is user-authored and may import core under either scope;
308
+ // preserve whichever spelling the file already uses.
309
+ const importPattern = /import\s*\{([^}]*)\}\s*from\s*(["'])(@assemblyline-agents\/core|@openeve\/core)\2/u;
310
+ const match = importPattern.exec(source);
311
+ if (!match || match[1] === undefined)
312
+ return undefined;
313
+ const names = match[1].split(",").map((name) => name.trim()).filter(Boolean);
314
+ if (names.includes(importName))
315
+ return source;
316
+ return source.replace(importPattern, `import { ${[...names, importName].sort().join(", ")} } from ${match[2]}${match[3]}${match[2]}`);
317
+ }
318
+ function printNextSteps(metadata, agentRoot, pm) {
319
+ const required = metadata.requiredEnv ?? [];
320
+ if (required.length > 0)
321
+ console.log(`Set: ${required.join(", ")}`);
322
+ const optional = metadata.optionalEnv ?? [];
323
+ if (optional.length > 0)
324
+ console.log(`Optional: ${optional.join(", ")}`);
325
+ for (const setup of metadata.setup ?? []) {
326
+ if (setup.required)
327
+ console.log(`Setup: ${setup.message}`);
328
+ }
329
+ const runner = pm === "pnpm" ? "pnpm assembly-line" : pm === "yarn" ? "yarn assembly-line" : "npx assembly-line";
330
+ console.log(`Run: ${runner} validate ${agentRoot}`);
331
+ }
332
+ /** The default gateway scaffold shared by `assembly-line init` and `assembly-line add`. */
333
+ export function gatewayScaffoldSource(overrides = {}) {
334
+ const slots = {
335
+ deploy: "local",
336
+ runtime: "node",
337
+ state: "local",
338
+ blob: "local",
339
+ sandbox: "local",
340
+ scheduler: "local",
341
+ ...overrides
342
+ };
343
+ return [
344
+ 'import { adapter, defineGateway } from "@assemblyline-agents/core";',
345
+ "",
346
+ "export default defineGateway({",
347
+ Object.entries(slots).map(([role, kind]) => ` ${role}: adapter("${kind}")`).join(",\n"),
348
+ "});",
349
+ ""
350
+ ].join("\n");
351
+ }
352
+ //# sourceMappingURL=add.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../src/add.ts"],"names":[],"mappings":"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"}
package/dist/args.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ export interface ParsedArgs {
2
+ command: string;
3
+ positional: string[];
4
+ flags: Record<string, string | boolean>;
5
+ }
6
+ export declare function parseArgs(argv: string[]): ParsedArgs;
7
+ export declare function stringFlag(parsed: ParsedArgs, name: string): string | undefined;
8
+ export declare function booleanFlag(parsed: ParsedArgs, name: string): boolean;
9
+ export declare function numberFlag(parsed: ParsedArgs, name: string): number | undefined;
10
+ export declare function buildOptions(parsed: ParsedArgs, root: string): {
11
+ root: string;
12
+ outDir?: string;
13
+ };
14
+ //# sourceMappingURL=args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;CACzC;AAyCD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CA+BpD;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG/E;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAErE;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAK/E;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAKhG"}
package/dist/args.js ADDED
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Flags that are always boolean. Without this, `--dry-run ./agent` would treat
3
+ * the agent-root positional as the flag's value (and booleanFlag() would then
4
+ * read false), so `assembly-line deploy --dry-run ./agent` silently performed a real
5
+ * deploy and lost the agent root. Known boolean flags never consume the next
6
+ * token; unknown flags keep the `--flag value` behaviour for valued options.
7
+ * Declared before the top-level parseArgs() call to avoid a TDZ ReferenceError.
8
+ */
9
+ const BOOLEAN_FLAGS = new Set([
10
+ "apply",
11
+ "approve",
12
+ "allow-global-ssh",
13
+ "confirm-upgrade",
14
+ "destroy",
15
+ "detach",
16
+ "dry-run",
17
+ "fail-fast",
18
+ "force",
19
+ "json",
20
+ "no-install",
21
+ "no-model-check",
22
+ "once",
23
+ "activate",
24
+ "domains-only",
25
+ "prepare-only",
26
+ "prepared",
27
+ "purge-data",
28
+ "railway-json",
29
+ "rebuild",
30
+ "rollback",
31
+ "replace-target",
32
+ "run",
33
+ "serve",
34
+ "status",
35
+ "source-quiesced",
36
+ "sync-secrets",
37
+ "watch"
38
+ ]);
39
+ export function parseArgs(argv) {
40
+ const [command = "help", ...rest] = argv;
41
+ const positional = [];
42
+ const flags = {};
43
+ for (let i = 0; i < rest.length; i += 1) {
44
+ const value = rest[i];
45
+ if (!value)
46
+ continue;
47
+ if (!value.startsWith("--")) {
48
+ positional.push(value);
49
+ continue;
50
+ }
51
+ const keyValue = value.slice(2);
52
+ const [key, inline] = keyValue.split("=", 2);
53
+ if (!key)
54
+ continue;
55
+ if (inline !== undefined) {
56
+ flags[key] = inline;
57
+ continue;
58
+ }
59
+ if (BOOLEAN_FLAGS.has(key)) {
60
+ flags[key] = true;
61
+ continue;
62
+ }
63
+ const next = rest[i + 1];
64
+ if (next && !next.startsWith("--")) {
65
+ flags[key] = next;
66
+ i += 1;
67
+ }
68
+ else {
69
+ flags[key] = true;
70
+ }
71
+ }
72
+ return { command, positional, flags };
73
+ }
74
+ export function stringFlag(parsed, name) {
75
+ const value = parsed.flags[name];
76
+ return typeof value === "string" ? value : undefined;
77
+ }
78
+ export function booleanFlag(parsed, name) {
79
+ return parsed.flags[name] === true || parsed.flags[name] === "true";
80
+ }
81
+ export function numberFlag(parsed, name) {
82
+ const value = stringFlag(parsed, name);
83
+ if (!value)
84
+ return undefined;
85
+ const parsedNumber = Number(value);
86
+ return Number.isFinite(parsedNumber) ? parsedNumber : undefined;
87
+ }
88
+ export function buildOptions(parsed, root) {
89
+ const options = { root };
90
+ const outDir = stringFlag(parsed, "out");
91
+ if (outDir)
92
+ options.outDir = outDir;
93
+ return options;
94
+ }
95
+ //# sourceMappingURL=args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.js","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAMA;;;;;;;GAOG;AACH,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,OAAO;IACP,SAAS;IACT,kBAAkB;IAClB,iBAAiB;IACjB,SAAS;IACT,QAAQ;IACR,SAAS;IACT,WAAW;IACX,OAAO;IACP,MAAM;IACN,YAAY;IACZ,gBAAgB;IAChB,MAAM;IACN,UAAU;IACV,cAAc;IACd,cAAc;IACd,UAAU;IACV,YAAY;IACZ,cAAc;IACd,SAAS;IACT,UAAU;IACV,gBAAgB;IAChB,KAAK;IACL,OAAO;IACP,QAAQ;IACR,iBAAiB;IACjB,cAAc;IACd,OAAO;CACR,CAAC,CAAC;AAEH,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,MAAM,CAAC,OAAO,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACzC,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,KAAK,GAAqC,EAAE,CAAC;IACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvB,SAAS;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;YACpB,SAAS;QACX,CAAC;QACD,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YAClB,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YAClB,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAkB,EAAE,IAAY;IACzD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAkB,EAAE,IAAY;IAC1D,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAkB,EAAE,IAAY;IACzD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAkB,EAAE,IAAY;IAC3D,MAAM,OAAO,GAAsC,EAAE,IAAI,EAAE,CAAC;IAC5D,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACzC,IAAI,MAAM;QAAE,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;IACpC,OAAO,OAAO,CAAC;AACjB,CAAC"}
package/dist/auth.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ import { type ParsedArgs } from "./args.js";
2
+ /**
3
+ * Bootstrap hosted Codex OAuth through the selected deployment publisher. The
4
+ * remote Codex CLI owns the device exchange and credential cache; Assembly Line never
5
+ * reads, copies, prints, or stores the resulting OAuth tokens.
6
+ */
7
+ export declare function runCodexAuthCommand(agentRoot: string, parsed: ParsedArgs): Promise<void>;
8
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AASA,OAAO,EAA2B,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAGrE;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAwD9F"}