@assemblyline-agents/cli 5.0.10 → 6.0.1

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 (93) hide show
  1. package/authoring/skills/assembly-line-authoring/SKILL.md +24 -21
  2. package/dist/add.d.ts +2 -13
  3. package/dist/add.d.ts.map +1 -1
  4. package/dist/add.js +169 -478
  5. package/dist/add.js.map +1 -1
  6. package/dist/args.d.ts.map +1 -1
  7. package/dist/args.js +1 -2
  8. package/dist/args.js.map +1 -1
  9. package/dist/auth.d.ts +1 -2
  10. package/dist/auth.d.ts.map +1 -1
  11. package/dist/auth.js +38 -45
  12. package/dist/auth.js.map +1 -1
  13. package/dist/channels.d.ts +7 -30
  14. package/dist/channels.d.ts.map +1 -1
  15. package/dist/channels.js +21 -161
  16. package/dist/channels.js.map +1 -1
  17. package/dist/deploy-definition.d.ts +1 -8
  18. package/dist/deploy-definition.d.ts.map +1 -1
  19. package/dist/deploy-definition.js +18 -66
  20. package/dist/deploy-definition.js.map +1 -1
  21. package/dist/deploy-migrations.d.ts +15 -0
  22. package/dist/deploy-migrations.d.ts.map +1 -0
  23. package/dist/deploy-migrations.js +72 -0
  24. package/dist/deploy-migrations.js.map +1 -0
  25. package/dist/deploy-preflight.d.ts +6 -0
  26. package/dist/deploy-preflight.d.ts.map +1 -0
  27. package/dist/deploy-preflight.js +40 -0
  28. package/dist/deploy-preflight.js.map +1 -0
  29. package/dist/deploy-receipts.d.ts +9 -0
  30. package/dist/deploy-receipts.d.ts.map +1 -0
  31. package/dist/deploy-receipts.js +45 -0
  32. package/dist/deploy-receipts.js.map +1 -0
  33. package/dist/deploy-sandbox-environments.d.ts +6 -0
  34. package/dist/deploy-sandbox-environments.d.ts.map +1 -0
  35. package/dist/deploy-sandbox-environments.js +109 -0
  36. package/dist/deploy-sandbox-environments.js.map +1 -0
  37. package/dist/deploy-secrets.d.ts +21 -0
  38. package/dist/deploy-secrets.d.ts.map +1 -0
  39. package/dist/deploy-secrets.js +83 -0
  40. package/dist/deploy-secrets.js.map +1 -0
  41. package/dist/deploy.d.ts +5 -31
  42. package/dist/deploy.d.ts.map +1 -1
  43. package/dist/deploy.js +50 -636
  44. package/dist/deploy.js.map +1 -1
  45. package/dist/eval-case-runner.d.ts +1 -1
  46. package/dist/eval-case-runner.d.ts.map +1 -1
  47. package/dist/eval-case-runner.js.map +1 -1
  48. package/dist/help.d.ts.map +1 -1
  49. package/dist/help.js +41 -89
  50. package/dist/help.js.map +1 -1
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +89 -32
  53. package/dist/index.js.map +1 -1
  54. package/dist/init.d.ts +1 -3
  55. package/dist/init.d.ts.map +1 -1
  56. package/dist/init.js +36 -39
  57. package/dist/init.js.map +1 -1
  58. package/dist/inspection.d.ts +44 -0
  59. package/dist/inspection.d.ts.map +1 -0
  60. package/dist/inspection.js +144 -0
  61. package/dist/inspection.js.map +1 -0
  62. package/dist/models.d.ts +2 -1
  63. package/dist/models.d.ts.map +1 -1
  64. package/dist/models.js +7 -13
  65. package/dist/models.js.map +1 -1
  66. package/dist/plugin-add.d.ts +36 -0
  67. package/dist/plugin-add.d.ts.map +1 -0
  68. package/dist/plugin-add.js +283 -0
  69. package/dist/plugin-add.js.map +1 -0
  70. package/dist/plugin-init.d.ts +2 -0
  71. package/dist/plugin-init.d.ts.map +1 -0
  72. package/dist/plugin-init.js +34 -0
  73. package/dist/plugin-init.js.map +1 -0
  74. package/dist/provider-deploy.d.ts +7 -0
  75. package/dist/provider-deploy.d.ts.map +1 -0
  76. package/dist/provider-deploy.js +163 -0
  77. package/dist/provider-deploy.js.map +1 -0
  78. package/dist/secrets.d.ts.map +1 -1
  79. package/dist/secrets.js +8 -28
  80. package/dist/secrets.js.map +1 -1
  81. package/package.json +9 -11
  82. package/dist/hosts.d.ts +0 -3
  83. package/dist/hosts.d.ts.map +0 -1
  84. package/dist/hosts.js +0 -60
  85. package/dist/hosts.js.map +0 -1
  86. package/dist/model-providers.d.ts +0 -5
  87. package/dist/model-providers.d.ts.map +0 -1
  88. package/dist/model-providers.js +0 -17
  89. package/dist/model-providers.js.map +0 -1
  90. package/dist/state.d.ts +0 -3
  91. package/dist/state.d.ts.map +0 -1
  92. package/dist/state.js +0 -79
  93. package/dist/state.js.map +0 -1
@@ -0,0 +1,144 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { resolve } from "node:path";
3
+ import { buildAgent } from "@assemblyline-agents/compiler";
4
+ import { inspectAgentCapabilities, loadRuntimeBundle } from "@assemblyline-agents/runtime";
5
+ import { booleanFlag, buildOptions } from "./args.js";
6
+ export async function runInspectCommand(agentRoot, parsed) {
7
+ const artifact = await buildAgent(buildOptions(parsed, agentRoot));
8
+ if (!booleanFlag(parsed, "resolved")) {
9
+ console.log(JSON.stringify({
10
+ schemaVersion: 1,
11
+ agentRevision: artifact.manifest.agentRevision,
12
+ source: sourceInspection(artifact.manifest)
13
+ }, null, 2));
14
+ return;
15
+ }
16
+ const bundle = loadRuntimeBundle(artifact.root);
17
+ const capabilities = await inspectAgentCapabilities({
18
+ manifest: bundle.manifest,
19
+ ...(bundle.sourceBundle ? { sourceBundle: bundle.sourceBundle } : {}),
20
+ cacheRoot: resolve(artifact.root, ".assembly-line", "module-cache")
21
+ });
22
+ console.log(JSON.stringify(resolvedInspection(artifact, capabilities), null, 2));
23
+ }
24
+ export function explainManifestTarget(manifest, target) {
25
+ const capability = manifest.capabilities.find((entry) => entry.id === target || entry.name === target);
26
+ if (capability) {
27
+ return { target, kind: "capability", capability, provenance: capability.source ?? null };
28
+ }
29
+ const pluginName = target.startsWith("plugins.") ? target.slice("plugins.".length) : undefined;
30
+ const plugin = pluginName ? manifest.plugins?.find((entry) => entry.name === pluginName) : undefined;
31
+ if (plugin)
32
+ return {
33
+ target,
34
+ kind: "plugin",
35
+ plugin,
36
+ authority: plugin.authority,
37
+ provenance: plugin.manifest
38
+ };
39
+ const file = manifest.files.find((entry) => entry.path === target || entry.path.endsWith(`/${target}`));
40
+ if (file) {
41
+ return { target, kind: "source", file, provenance: sourceReferencesForPath(manifest, file.path) };
42
+ }
43
+ throw new Error(`No compiled capability or source path matches "${target}".`);
44
+ }
45
+ export function readManifestForExplanation(agentRoot) {
46
+ const path = resolve(agentRoot, ".assembly-line", "manifest.json");
47
+ return JSON.parse(readFileSync(path, "utf8"));
48
+ }
49
+ export function sourceInspection(manifest) {
50
+ const plugins = (manifest.plugins ?? []).map(pluginSummary);
51
+ return {
52
+ path: "agent.md",
53
+ composition: manifest.composition,
54
+ instructions: manifest.instructions.text,
55
+ files: manifest.files,
56
+ plugins,
57
+ localPlugins: plugins.filter((plugin) => plugin.source.type === "local"),
58
+ publishedPlugins: plugins.filter((plugin) => plugin.source.type === "package"),
59
+ resources: manifest.files.filter((file) => /^(?:assets|skills)\//u.test(file.path)),
60
+ skills: manifest.skills.map((skill) => ({ name: skill.name, source: skill.source, bundle: skill.bundle ?? null })),
61
+ tools: manifest.tools.map((tool) => ({
62
+ name: tool.name,
63
+ source: tool.source,
64
+ ...(tool.requiredConfig?.length ? { requiredConfig: tool.requiredConfig } : {}),
65
+ ...(tool.optionalConfig?.length ? { optionalConfig: tool.optionalConfig } : {})
66
+ })),
67
+ channels: manifest.channels,
68
+ gateway: manifest.gateway,
69
+ automations: manifest.automations,
70
+ automationRegistrations: manifest.automationRegistrations,
71
+ subagents: manifest.subagents,
72
+ conventions: {
73
+ skills: "auto-discovered from skills/",
74
+ localPlugins: "auto-discovered from plugins/",
75
+ publishedPlugins: "selected in agent.md and pinned in plugins.lock",
76
+ frameworkTools: "loaded from the pinned framework version"
77
+ },
78
+ inferred: {
79
+ preflight: manifest.preflight
80
+ }
81
+ };
82
+ }
83
+ export function resolvedInspection(artifact, capabilities) {
84
+ const manifest = artifact.manifest;
85
+ return {
86
+ schemaVersion: 1,
87
+ agentRevision: artifact.manifest.agentRevision,
88
+ manifest: artifact.manifest,
89
+ inventory: {
90
+ plugins: (manifest.plugins ?? []).map(pluginSummary),
91
+ skills: manifest.skills.map((skill) => ({ name: skill.name, source: skill.source, bundle: skill.bundle ?? null })),
92
+ tools: manifest.tools,
93
+ channels: manifest.channels,
94
+ routes: manifest.routeTable,
95
+ gateway: manifest.gateway,
96
+ automations: manifest.automations,
97
+ automationRegistrations: manifest.automationRegistrations,
98
+ subagents: manifest.subagents,
99
+ preflight: manifest.preflight
100
+ },
101
+ resolved: capabilities.resolved,
102
+ defaults: capabilities.defaults,
103
+ additions: capabilities.additions
104
+ };
105
+ }
106
+ function pluginSummary(plugin) {
107
+ return {
108
+ name: plugin.name,
109
+ surface: plugin.surface ?? "root",
110
+ version: plugin.version,
111
+ integrity: plugin.integrity,
112
+ source: plugin.source,
113
+ manifest: plugin.manifest,
114
+ skills: plugin.skills,
115
+ mcpServers: plugin.mcpServers,
116
+ authority: plugin.authority,
117
+ ...(plugin.config ? { config: plugin.config } : {}),
118
+ exceptions: plugin.exceptions
119
+ };
120
+ }
121
+ function sourceReferencesForPath(manifest, path) {
122
+ const references = [];
123
+ const visit = (value) => {
124
+ if (!value || typeof value !== "object")
125
+ return;
126
+ if (Array.isArray(value)) {
127
+ for (const item of value)
128
+ visit(item);
129
+ return;
130
+ }
131
+ const record = value;
132
+ const source = record.source;
133
+ if (source && typeof source === "object" && source.path === path) {
134
+ references.push(source);
135
+ }
136
+ for (const [key, child] of Object.entries(record)) {
137
+ if (key !== "source")
138
+ visit(child);
139
+ }
140
+ };
141
+ visit(manifest);
142
+ return references;
143
+ }
144
+ //# sourceMappingURL=inspection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspection.js","sourceRoot":"","sources":["../src/inspection.ts"],"names":[],"mappings":"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"}
package/dist/models.d.ts CHANGED
@@ -1,2 +1,3 @@
1
- export declare function loadModelSpecs(): Promise<string[]>;
1
+ /** List models from exactly the model plugins locked by one agent. */
2
+ export declare function loadModelSpecs(agentRoot: string): Promise<string[]>;
2
3
  //# sourceMappingURL=models.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAKA,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAQxD"}
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAGA,sEAAsE;AACtE,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAIzE"}
package/dist/models.js CHANGED
@@ -1,15 +1,9 @@
1
- const BUILT_IN_MODEL_SPECS = [
2
- "openai-codex/gpt-5.6-sol",
3
- "openai-codex/gpt-5.6-terra"
4
- ];
5
- export async function loadModelSpecs() {
6
- try {
7
- // Provider discovery and its bundled offline fallback live in @assemblyline-agents/pi.
8
- const pi = await import("@assemblyline-agents/pi");
9
- return [...new Set([...await pi.listPiModelSpecs(), ...BUILT_IN_MODEL_SPECS])].sort();
10
- }
11
- catch {
12
- return [...BUILT_IN_MODEL_SPECS];
13
- }
1
+ import { compileAgent } from "@assemblyline-agents/compiler";
2
+ import { createPiModels, listPiModelSpecs } from "@assemblyline-agents/pi";
3
+ /** List models from exactly the model plugins locked by one agent. */
4
+ export async function loadModelSpecs(agentRoot) {
5
+ const manifest = compileAgent({ root: agentRoot });
6
+ const models = await createPiModels(process.env, globalThis.fetch, manifest.modelProviders, undefined, agentRoot);
7
+ return listPiModelSpecs(models);
14
8
  }
15
9
  //# sourceMappingURL=models.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA,MAAM,oBAAoB,GAAG;IAC3B,0BAA0B;IAC1B,4BAA4B;CACpB,CAAC;AAEX,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,CAAC;QACH,uFAAuF;QACvF,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,gBAAgB,EAAE,EAAE,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACxF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,oBAAoB,CAAC,CAAC;IACnC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3E,sEAAsE;AACtE,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,SAAiB;IACpD,MAAM,QAAQ,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,cAAc,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAClH,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { type PluginsLock, type ResolvedPluginEntry } from "@assemblyline-agents/compiler";
2
+ export interface MdPluginAddOptions {
3
+ thing: string;
4
+ agentRoot: string;
5
+ pmOverride?: string | undefined;
6
+ install: boolean;
7
+ confirmUpgrade: boolean;
8
+ /** Select under capabilities after locking. Typed role selectors set this false. */
9
+ selectCapability?: boolean;
10
+ runCommand(command: string, args: string[], options?: {
11
+ cwd?: string;
12
+ }): Promise<{
13
+ exitCode: number;
14
+ }>;
15
+ }
16
+ export interface PluginLockOptions {
17
+ agentRoot: string;
18
+ confirmUpgrade: boolean;
19
+ }
20
+ export interface PluginLockRefreshResult {
21
+ lock: PluginsLock;
22
+ changes: string[];
23
+ }
24
+ export interface MdPluginAddResult {
25
+ name: string;
26
+ packageName?: string;
27
+ root: string;
28
+ entry?: ResolvedPluginEntry;
29
+ }
30
+ /** Recompute plugins.lock from checked-in plugins and already locked packages. */
31
+ export declare function refreshPluginLock(options: PluginLockOptions): PluginLockRefreshResult;
32
+ export declare function runMdPluginAdd(options: MdPluginAddOptions): Promise<MdPluginAddResult | undefined>;
33
+ export declare function appendPluginSelection(agentRoot: string, name: string): void;
34
+ export declare function assertAuthorityChange(current: PluginsLock | undefined, next: PluginsLock, confirm: boolean, allowNew?: boolean): string[];
35
+ export declare function pluginLockChangeLines(current: PluginsLock | undefined, next: PluginsLock): string[];
36
+ //# sourceMappingURL=plugin-add.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-add.d.ts","sourceRoot":"","sources":["../src/plugin-add.ts"],"names":[],"mappings":"AAIA,OAAO,EAML,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACzB,MAAM,+BAA+B,CAAC;AAGvC,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,OAAO,CAAC;IACxB,oFAAoF;IACpF,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,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;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,mBAAmB,CAAC;CAC7B;AAED,kFAAkF;AAClF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,uBAAuB,CAmBrF;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CA2ExG;AAED,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAqB3E;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,UAAQ,GAAG,MAAM,EAAE,CAwBvI;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM,EAAE,CAoBnG"}
@@ -0,0 +1,283 @@
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 { pathToFileURL } from "node:url";
5
+ import { createPluginsLock, discoverAgentPlugins, discoverInstalledAgentPlugins, readPluginsLock, resolvePluginEntry } from "@assemblyline-agents/compiler";
6
+ import { detectPackageManager } from "./pm.js";
7
+ /** Recompute plugins.lock from checked-in plugins and already locked packages. */
8
+ export function refreshPluginLock(options) {
9
+ const lockPath = join(options.agentRoot, "plugins.lock");
10
+ const current = readPluginsLock(lockPath);
11
+ if (!current.valid)
12
+ throw new Error(current.diagnostics.map((diagnostic) => `${diagnostic.code}: ${diagnostic.message}`).join("\n"));
13
+ const packageAliases = {};
14
+ for (const [name, entry] of Object.entries(current.lock?.plugins ?? {})) {
15
+ if (entry.source.type === "package")
16
+ packageAliases[name] = entry.source.packageName;
17
+ }
18
+ const local = discoverAgentPlugins(options.agentRoot);
19
+ const installed = discoverInstalledAgentPlugins(options.agentRoot, packageAliases);
20
+ const diagnostics = [...local.diagnostics, ...installed.diagnostics];
21
+ if (diagnostics.some((diagnostic) => diagnostic.level === "error")) {
22
+ throw new Error(diagnostics.map((diagnostic) => `${diagnostic.code}: ${diagnostic.message}`).join("\n"));
23
+ }
24
+ const next = createPluginsLock(options.agentRoot, [...local.plugins, ...installed.plugins]);
25
+ const changes = assertAuthorityChange(current.lock, next, options.confirmUpgrade);
26
+ mkdirSync(options.agentRoot, { recursive: true });
27
+ writeFileSync(lockPath, `${JSON.stringify(next, null, 2)}\n`);
28
+ return { lock: next, changes };
29
+ }
30
+ export async function runMdPluginAdd(options) {
31
+ const sourcePath = resolve(options.thing);
32
+ const sourceIsLocal = existsSync(join(sourcePath, "plugin.json"));
33
+ const packageName = sourceIsLocal ? undefined : options.thing;
34
+ const detection = detectPackageManager(options.agentRoot);
35
+ const pm = normalizePackageManager(options.pmOverride) ?? detection.pm;
36
+ const installDir = detection.projectDir ?? process.cwd();
37
+ if (packageName) {
38
+ if (!options.install) {
39
+ console.log(`Install (skipped by --no-install): ${pm} add ${packageName}`);
40
+ return undefined;
41
+ }
42
+ const result = await options.runCommand(pm, ["add", packageName], { cwd: installDir });
43
+ if (result.exitCode !== 0)
44
+ throw new Error(`"${pm} add ${packageName}" failed with exit code ${result.exitCode}.`);
45
+ }
46
+ const resolvedSource = sourceIsLocal ? sourcePath : resolveInstalledPlugin(packageName, [options.agentRoot, installDir]);
47
+ const pluginManifest = JSON.parse(readFileSync(join(resolvedSource, "plugin.json"), "utf8"));
48
+ const name = pluginManifest.name;
49
+ if (!name)
50
+ throw new Error(`Plugin at ${resolvedSource} has no valid plugin.json name.`);
51
+ const target = join(options.agentRoot, "plugins", name);
52
+ if (sourceIsLocal) {
53
+ if (existsSync(target))
54
+ throw new Error(`Plugin ${name} is already selected at plugins/${name}; refusing to overwrite it.`);
55
+ mkdirSync(join(options.agentRoot, "plugins"), { recursive: true });
56
+ // Local plugins are copied into the agent-owned source tree. Published
57
+ // packages remain in the dependency graph and are never vendored.
58
+ cpSync(resolvedSource, target, { recursive: true, errorOnExist: true });
59
+ }
60
+ // Checked-in plugins are active by folder convention. Published packages
61
+ // require an explicit agent.md selection.
62
+ if (!sourceIsLocal && options.selectCapability !== false)
63
+ appendPluginSelection(options.agentRoot, name);
64
+ const current = readPluginsLock(join(options.agentRoot, "plugins.lock"));
65
+ if (!current.valid)
66
+ throw new Error(current.diagnostics.map((diagnostic) => `${diagnostic.code}: ${diagnostic.message}`).join("\n"));
67
+ const packageAliases = {};
68
+ for (const [pluginName, entry] of Object.entries(current.lock?.plugins ?? {})) {
69
+ if (entry.source.type === "package")
70
+ packageAliases[pluginName] = entry.source.packageName;
71
+ }
72
+ if (!sourceIsLocal) {
73
+ packageAliases[name] = packageName;
74
+ for (const [dependencyName, dependencyPackage] of Object.entries(installedPluginDependencies(resolvedSource, [options.agentRoot, installDir]))) {
75
+ const existing = packageAliases[dependencyName];
76
+ if (existing && existing !== dependencyPackage) {
77
+ throw new Error(`Plugin dependency ${dependencyName} resolves to both ${existing} and ${dependencyPackage}.`);
78
+ }
79
+ packageAliases[dependencyName] = dependencyPackage;
80
+ }
81
+ }
82
+ const local = discoverAgentPlugins(options.agentRoot);
83
+ const installed = discoverInstalledAgentPlugins(options.agentRoot, packageAliases);
84
+ const discovered = {
85
+ plugins: [...local.plugins, ...installed.plugins],
86
+ diagnostics: [...local.diagnostics, ...installed.diagnostics]
87
+ };
88
+ if (discovered.diagnostics.some((diagnostic) => diagnostic.level === "error")) {
89
+ throw new Error(discovered.diagnostics.map((diagnostic) => `${diagnostic.code}: ${diagnostic.message}`).join("\n"));
90
+ }
91
+ const nextLock = createPluginsLock(options.agentRoot, discovered.plugins);
92
+ const changes = assertAuthorityChange(current.lock, nextLock, options.confirmUpgrade, true);
93
+ writeFileSync(join(options.agentRoot, "plugins.lock"), `${JSON.stringify(nextLock, null, 2)}\n`);
94
+ for (const change of changes)
95
+ console.log(`Plugin lock: ${change}`);
96
+ console.log(sourceIsLocal
97
+ ? `Added local Agent Plugin ${name} and updated plugins.lock.`
98
+ : `Selected Agent Plugin ${name} and updated plugins.lock.`);
99
+ const discoveredPlugin = discovered.plugins.find((plugin) => plugin.name === name);
100
+ const entryPath = discoveredPlugin?.extensions.find((extension) => extension.namespace === "ai.assemblyline")?.entry;
101
+ const entryResult = entryPath ? resolvePluginEntry(entryPath) : undefined;
102
+ if (entryResult?.error)
103
+ throw new Error(`Plugin ${name}: ${entryResult.error}`);
104
+ return {
105
+ name,
106
+ ...(packageName ? { packageName } : {}),
107
+ root: resolvedSource,
108
+ ...(entryResult?.entry ? { entry: entryResult.entry } : {})
109
+ };
110
+ }
111
+ export function appendPluginSelection(agentRoot, name) {
112
+ const path = join(agentRoot, "agent.md");
113
+ const source = readFileSync(path, "utf8");
114
+ if (new RegExp(`^\\s*-\\s*${escapeRegExp(name)}\\s*$`, "mu").test(source)
115
+ || new RegExp(`^\\s*${escapeRegExp(name)}\\s*:\\s*`, "mu").test(source))
116
+ return;
117
+ const existing = /^(capabilities):[ \t]*(?:\r?\n)?((?:[ \t]+.*(?:\r?\n|$))*)/mu.exec(source.slice(4));
118
+ if (existing && existing.index !== undefined) {
119
+ const block = existing[2] ?? "";
120
+ const lineStart = 4 + existing.index + existing[0].length;
121
+ if (/^\s*-\s*/mu.test(block)) {
122
+ writeFileSync(path, `${source.slice(0, lineStart)} - ${name}\n${source.slice(lineStart)}`);
123
+ return;
124
+ }
125
+ writeFileSync(path, `${source.slice(0, lineStart)} ${name}: {}\n${source.slice(lineStart)}`);
126
+ return;
127
+ }
128
+ const closing = /^---[ \t]*\r?$/mu.exec(source.slice(4));
129
+ if (!closing || closing.index === undefined)
130
+ throw new Error("agent.md frontmatter is malformed; cannot select a plugin safely.");
131
+ const offset = 4 + closing.index;
132
+ const selection = `capabilities:\n - ${name}\n`;
133
+ writeFileSync(path, `${source.slice(0, offset)}${selection}${source.slice(offset)}`);
134
+ }
135
+ export function assertAuthorityChange(current, next, confirm, allowNew = false) {
136
+ const changes = pluginLockChangeLines(current, next);
137
+ if (!current)
138
+ return changes;
139
+ for (const [name, entry] of Object.entries(next.plugins)) {
140
+ const previous = current.plugins[name];
141
+ if (!previous) {
142
+ if (!allowNew && entry.source.type === "package" && hasExecutableAuthority(entry) && !confirm) {
143
+ throw new Error(`Plugin ${name} adds executable authority; review the resolved lock diff and rerun with --confirm-upgrade.\n${changes.join("\n")}`);
144
+ }
145
+ continue;
146
+ }
147
+ // Editing a checked-in plugin is already an explicit source change by the
148
+ // agent developer. Report and hash that diff without adding a second
149
+ // confirmation ceremony. Registry packages remain dependency authority,
150
+ // so their capability changes continue to fail closed.
151
+ if (entry.source.type === "local" && previous.source.type === "local")
152
+ continue;
153
+ const oldSkills = new Set(previous.capabilities.skills);
154
+ const oldServers = new Set(previous.capabilities.mcpServers.map((server) => `${server.name}:${server.type}`));
155
+ const expanded = entry.capabilities.skills.some((skill) => !oldSkills.has(skill))
156
+ || entry.capabilities.mcpServers.some((server) => !oldServers.has(`${server.name}:${server.type}`))
157
+ || entry.authority.hash !== previous.authority.hash;
158
+ if (expanded && !confirm)
159
+ throw new Error(`Plugin ${name} capability/authority change detected; review the resolved lock diff and rerun with --confirm-upgrade.\n${changes.join("\n")}`);
160
+ }
161
+ return changes;
162
+ }
163
+ export function pluginLockChangeLines(current, next) {
164
+ if (!current)
165
+ return Object.keys(next.plugins).sort().map((name) => `${name}: added`);
166
+ const changes = [];
167
+ const names = [...new Set([...Object.keys(current.plugins), ...Object.keys(next.plugins)])].sort();
168
+ for (const name of names) {
169
+ const before = current.plugins[name];
170
+ const after = next.plugins[name];
171
+ if (!before) {
172
+ changes.push(`${name}: added`);
173
+ continue;
174
+ }
175
+ if (!after) {
176
+ changes.push(`${name}: removed`);
177
+ continue;
178
+ }
179
+ if (before.version !== after.version)
180
+ changes.push(`${name}: version ${before.version} -> ${after.version}`);
181
+ appendSetChange(changes, name, "skills", before.capabilities.skills, after.capabilities.skills);
182
+ appendSetChange(changes, name, "MCP servers", before.capabilities.mcpServers.map(mcpKey), after.capabilities.mcpServers.map(mcpKey));
183
+ for (const key of ["tools", "connections", "lifecycle", "composition", "contexts", "instrumentation", "channels", "providers", "models", "channelHooks"]) {
184
+ appendSetChange(changes, name, key, before.authority[key], after.authority[key]);
185
+ }
186
+ appendSetChange(changes, name, "hook events", hookKeys(before), hookKeys(after));
187
+ if (before.authority.hash !== after.authority.hash)
188
+ changes.push(`${name}: executable descriptor changed`);
189
+ if (before.integrity !== after.integrity)
190
+ changes.push(`${name}: content integrity changed`);
191
+ }
192
+ return [...new Set(changes)];
193
+ }
194
+ function appendSetChange(lines, plugin, label, before, after) {
195
+ const prior = new Set(before);
196
+ const next = new Set(after);
197
+ const added = [...next].filter((value) => !prior.has(value)).sort();
198
+ const removed = [...prior].filter((value) => !next.has(value)).sort();
199
+ if (added.length)
200
+ lines.push(`${plugin}: ${label} +${added.join(",")}`);
201
+ if (removed.length)
202
+ lines.push(`${plugin}: ${label} -${removed.join(",")}`);
203
+ }
204
+ function hookKeys(entry) {
205
+ return entry.authority.hooks.flatMap((hook) => hook.eventTypes.map((event) => `${hook.name}:${event}`));
206
+ }
207
+ function mcpKey(server) { return `${server.name}:${server.type}`; }
208
+ function hasExecutableAuthority(entry) {
209
+ return entry.capabilities.mcpServers.length > 0
210
+ || entry.authority.hooks.length > 0
211
+ || entry.authority.tools.length > 0
212
+ || entry.authority.connections.length > 0
213
+ || entry.authority.lifecycle.length > 0
214
+ || entry.authority.composition.length > 0
215
+ || entry.authority.contexts.length > 0
216
+ || entry.authority.instrumentation.length > 0
217
+ || entry.authority.channels.length > 0
218
+ || entry.authority.providers.length > 0
219
+ || entry.authority.models.length > 0
220
+ || entry.authority.channelHooks.length > 0;
221
+ }
222
+ function resolveInstalledPlugin(packageName, starts) {
223
+ for (const start of starts) {
224
+ try {
225
+ const requireFrom = createRequire(pathToFileURL(join(start, "package.json")).href);
226
+ try {
227
+ return dirname(requireFrom.resolve(`${packageName}/plugin.json`));
228
+ }
229
+ catch {
230
+ let current = dirname(requireFrom.resolve(packageName));
231
+ for (;;) {
232
+ const manifestPath = join(current, "package.json");
233
+ if (existsSync(manifestPath)) {
234
+ const manifest = JSON.parse(readFileSync(manifestPath, "utf8"));
235
+ if (manifest.name === packageName && existsSync(join(current, "plugin.json")))
236
+ return current;
237
+ }
238
+ const parent = dirname(current);
239
+ if (parent === current)
240
+ break;
241
+ current = parent;
242
+ }
243
+ }
244
+ }
245
+ catch {
246
+ // Try the next package resolution root.
247
+ }
248
+ }
249
+ throw new Error(`Installed plugin package ${packageName} does not expose plugin.json.`);
250
+ }
251
+ /** Discover package dependencies that are themselves Agent Plugins and lock them without activating capabilities. */
252
+ function installedPluginDependencies(packageRoot, starts, visitedPackages = new Set()) {
253
+ const packageJson = JSON.parse(readFileSync(join(packageRoot, "package.json"), "utf8"));
254
+ const aliases = {};
255
+ const dependencies = { ...packageJson.dependencies, ...packageJson.optionalDependencies };
256
+ for (const packageName of Object.keys(dependencies).sort()) {
257
+ if (visitedPackages.has(packageName))
258
+ continue;
259
+ visitedPackages.add(packageName);
260
+ let dependencyRoot;
261
+ try {
262
+ dependencyRoot = resolveInstalledPlugin(packageName, [packageRoot, ...starts]);
263
+ }
264
+ catch {
265
+ continue;
266
+ }
267
+ const manifest = JSON.parse(readFileSync(join(dependencyRoot, "plugin.json"), "utf8"));
268
+ if (typeof manifest.name !== "string" || !manifest.name)
269
+ continue;
270
+ aliases[manifest.name] = packageName;
271
+ Object.assign(aliases, installedPluginDependencies(dependencyRoot, starts, visitedPackages));
272
+ }
273
+ return aliases;
274
+ }
275
+ function normalizePackageManager(value) {
276
+ if (value === undefined)
277
+ return undefined;
278
+ if (value === "pnpm" || value === "yarn" || value === "npm")
279
+ return value;
280
+ throw new Error(`Unknown package manager "${value}". Use --pm pnpm, yarn, or npm.`);
281
+ }
282
+ function escapeRegExp(value) { return value.replace(/[.*+?^${}()|[\]\\]/gu, "\\$&"); }
283
+ //# sourceMappingURL=plugin-add.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-add.js","sourceRoot":"","sources":["../src/plugin-add.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function initPlugin(agentRootInput: string, name: string): string;
2
+ //# sourceMappingURL=plugin-init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-init.d.ts","sourceRoot":"","sources":["../src/plugin-init.ts"],"names":[],"mappings":"AAMA,wBAAgB,UAAU,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CA2BvE"}
@@ -0,0 +1,34 @@
1
+ import { existsSync, mkdirSync, writeFileSync } from "node:fs";
2
+ import { join, resolve } from "node:path";
3
+ import { refreshPluginLock } from "./plugin-add.js";
4
+ const PLUGIN_SCHEMA = "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json";
5
+ export function initPlugin(agentRootInput, name) {
6
+ if (!/^[a-z0-9](?:[a-z0-9.-]{0,62}[a-z0-9])?$/u.test(name) || /--|\.\./u.test(name)) {
7
+ throw new Error(`Invalid plugin name "${name}". Use lowercase letters, numbers, hyphens, and periods.`);
8
+ }
9
+ const root = resolve(agentRootInput);
10
+ const pluginRoot = join(root, "plugins", name);
11
+ if (existsSync(pluginRoot))
12
+ throw new Error(`Plugin ${name} already exists at ${pluginRoot}.`);
13
+ mkdirSync(join(pluginRoot, "ai.assemblyline"), { recursive: true });
14
+ writeFileSync(join(pluginRoot, "plugin.json"), `${JSON.stringify({
15
+ $schema: PLUGIN_SCHEMA,
16
+ name,
17
+ version: "0.1.0",
18
+ description: `${name} Assembly Line plugin`,
19
+ extensions: { "ai.assemblyline": { entry: "./ai.assemblyline/index.ts" } }
20
+ }, null, 2)}\n`);
21
+ writeFileSync(join(pluginRoot, "ai.assemblyline", "index.ts"), [
22
+ 'import { defineAssemblyLinePlugin } from "@assemblyline-agents/core";',
23
+ "",
24
+ "// Add native tools, connections, hooks, or lifecycle handlers here.",
25
+ "export default defineAssemblyLinePlugin({});",
26
+ ""
27
+ ].join("\n"));
28
+ // A new checked-in plugin joins the existing graph. Re-lock the complete
29
+ // graph so package plugins (including the selected model provider) cannot
30
+ // disappear as a side effect of local scaffolding.
31
+ refreshPluginLock({ agentRoot: root, confirmUpgrade: false });
32
+ return pluginRoot;
33
+ }
34
+ //# sourceMappingURL=plugin-init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-init.js","sourceRoot":"","sources":["../src/plugin-init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,aAAa,GAAG,4DAA4D,CAAC;AAEnF,MAAM,UAAU,UAAU,CAAC,cAAsB,EAAE,IAAY;IAC7D,IAAI,CAAC,0CAA0C,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpF,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,0DAA0D,CAAC,CAAC;IAC1G,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAC/C,IAAI,UAAU,CAAC,UAAU,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,UAAU,IAAI,sBAAsB,UAAU,GAAG,CAAC,CAAC;IAC/F,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAC/D,OAAO,EAAE,aAAa;QACtB,IAAI;QACJ,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,GAAG,IAAI,uBAAuB;QAC3C,UAAU,EAAE,EAAE,iBAAiB,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,EAAE;KAC3E,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACjB,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE;QAC7D,uEAAuE;QACvE,EAAE;QACF,sEAAsE;QACtE,8CAA8C;QAC9C,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACd,yEAAyE;IACzE,0EAA0E;IAC1E,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9D,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { BuildArtifact, DeploymentPlan } from "@assemblyline-agents/compiler";
2
+ import type { AdapterDefinition } from "@assemblyline-agents/core";
3
+ import { type ParsedArgs } from "./args.js";
4
+ import { type ReleaseSnapshot } from "./release-history.js";
5
+ /** Run a non-kernel deployment through the selected plugin's publisher. */
6
+ export declare function runProviderDeploy(artifact: BuildArtifact, plan: DeploymentPlan, definition: AdapterDefinition, parsed: ParsedArgs, agentRoot: string, release: ReleaseSnapshot | undefined, deployEnv: NodeJS.ProcessEnv): Promise<void>;
7
+ //# sourceMappingURL=provider-deploy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-deploy.d.ts","sourceRoot":"","sources":["../src/provider-deploy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACnF,OAAO,KAAK,EACV,iBAAiB,EAIlB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAkBzD,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,sBAAsB,CAAC;AAE9B,2EAA2E;AAC3E,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,cAAc,EACpB,UAAU,EAAE,iBAAiB,EAC7B,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,eAAe,GAAG,SAAS,EACpC,SAAS,EAAE,MAAM,CAAC,UAAU,GAC3B,OAAO,CAAC,IAAI,CAAC,CA8If"}