@assemblyline-agents/cli 1.0.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +21 -1
- package/authoring/skills/assembly-line-authoring/SKILL.md +92 -0
- package/authoring/skills/assembly-line-authoring/agents/openai.yaml +4 -0
- package/dist/add.d.ts +4 -0
- package/dist/add.d.ts.map +1 -1
- package/dist/add.js +191 -48
- package/dist/add.js.map +1 -1
- package/dist/args.d.ts.map +1 -1
- package/dist/args.js +4 -2
- package/dist/args.js.map +1 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +43 -10
- package/dist/auth.js.map +1 -1
- package/dist/authoring.d.ts +18 -0
- package/dist/authoring.d.ts.map +1 -0
- package/dist/authoring.js +129 -0
- package/dist/authoring.js.map +1 -0
- package/dist/channels.d.ts +21 -0
- package/dist/channels.d.ts.map +1 -1
- package/dist/channels.js +104 -0
- package/dist/channels.js.map +1 -1
- package/dist/checkpoints.js +2 -2
- package/dist/checkpoints.js.map +1 -1
- package/dist/connections.d.ts +12 -0
- package/dist/connections.d.ts.map +1 -0
- package/dist/connections.js +55 -0
- package/dist/connections.js.map +1 -0
- package/dist/deploy-definition.d.ts +1 -1
- package/dist/deploy-definition.d.ts.map +1 -1
- package/dist/deploy-definition.js +8 -14
- package/dist/deploy-definition.js.map +1 -1
- package/dist/deploy-lifecycle.d.ts +11 -1
- package/dist/deploy-lifecycle.d.ts.map +1 -1
- package/dist/deploy-lifecycle.js +65 -16
- package/dist/deploy-lifecycle.js.map +1 -1
- package/dist/deploy.d.ts +9 -1
- package/dist/deploy.d.ts.map +1 -1
- package/dist/deploy.js +244 -48
- package/dist/deploy.js.map +1 -1
- package/dist/dev.d.ts +0 -2
- package/dist/dev.d.ts.map +1 -1
- package/dist/dev.js +9 -10
- package/dist/dev.js.map +1 -1
- package/dist/docs.d.ts +3 -0
- package/dist/docs.d.ts.map +1 -0
- package/dist/docs.js +87 -0
- package/dist/docs.js.map +1 -0
- package/dist/eval-case-runner.js +4 -2
- package/dist/eval-case-runner.js.map +1 -1
- package/dist/eval-fixtures.d.ts +5 -5
- package/dist/eval-fixtures.d.ts.map +1 -1
- package/dist/eval-fixtures.js +48 -22
- package/dist/eval-fixtures.js.map +1 -1
- package/dist/eval-judge.js +1 -1
- package/dist/eval-judge.js.map +1 -1
- package/dist/eval.d.ts.map +1 -1
- package/dist/eval.js +5 -3
- package/dist/eval.js.map +1 -1
- package/dist/help.d.ts +19 -0
- package/dist/help.d.ts.map +1 -1
- package/dist/help.js +90 -13
- package/dist/help.js.map +1 -1
- package/dist/hosts.d.ts.map +1 -1
- package/dist/hosts.js +10 -1
- package/dist/hosts.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +103 -23
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +6 -24
- package/dist/init.js.map +1 -1
- package/dist/models.d.ts +0 -3
- package/dist/models.d.ts.map +1 -1
- package/dist/models.js +5 -10
- package/dist/models.js.map +1 -1
- package/dist/operator-client.d.ts +1 -0
- package/dist/operator-client.d.ts.map +1 -1
- package/dist/operator-client.js +158 -3
- package/dist/operator-client.js.map +1 -1
- package/dist/project-env.d.ts +2 -0
- package/dist/project-env.d.ts.map +1 -1
- package/dist/project-env.js +11 -10
- package/dist/project-env.js.map +1 -1
- package/dist/release-history.d.ts +20 -0
- package/dist/release-history.d.ts.map +1 -0
- package/dist/release-history.js +232 -0
- package/dist/release-history.js.map +1 -0
- package/dist/secrets.d.ts +11 -0
- package/dist/secrets.d.ts.map +1 -1
- package/dist/secrets.js +66 -13
- package/dist/secrets.js.map +1 -1
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +1 -2
- package/dist/state.js.map +1 -1
- package/package.json +13 -11
package/dist/args.js
CHANGED
|
@@ -13,15 +13,16 @@ const BOOLEAN_FLAGS = new Set([
|
|
|
13
13
|
"confirm-upgrade",
|
|
14
14
|
"destroy",
|
|
15
15
|
"detach",
|
|
16
|
+
"domains-only",
|
|
16
17
|
"dry-run",
|
|
17
18
|
"fail-fast",
|
|
18
19
|
"force",
|
|
19
20
|
"json",
|
|
21
|
+
"latest",
|
|
20
22
|
"no-install",
|
|
21
|
-
"no-model-check",
|
|
22
23
|
"once",
|
|
23
24
|
"activate",
|
|
24
|
-
"
|
|
25
|
+
"ingress-only",
|
|
25
26
|
"prepare-only",
|
|
26
27
|
"prepared",
|
|
27
28
|
"purge-data",
|
|
@@ -29,6 +30,7 @@ const BOOLEAN_FLAGS = new Set([
|
|
|
29
30
|
"rebuild",
|
|
30
31
|
"rollback",
|
|
31
32
|
"replace-target",
|
|
33
|
+
"replace",
|
|
32
34
|
"run",
|
|
33
35
|
"serve",
|
|
34
36
|
"status",
|
package/dist/args.js.map
CHANGED
|
@@ -1 +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,
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"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"}
|
package/dist/auth.d.ts.map
CHANGED
|
@@ -1 +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,
|
|
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,CA6D9F"}
|
package/dist/auth.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { fileURLToPath } from "node:url";
|
|
2
|
-
import {
|
|
2
|
+
import { buildAgent } from "@assemblyline-agents/compiler";
|
|
3
3
|
import { adapterProviderMetadata } from "@assemblyline-agents/core";
|
|
4
4
|
import { resolveProvider } from "@assemblyline-agents/node";
|
|
5
5
|
import { booleanFlag, stringFlag } from "./args.js";
|
|
@@ -10,9 +10,11 @@ import { resolveDeployDefinition, resolveDeployEnvironment } from "./deploy-defi
|
|
|
10
10
|
* reads, copies, prints, or stores the resulting OAuth tokens.
|
|
11
11
|
*/
|
|
12
12
|
export async function runCodexAuthCommand(agentRoot, parsed) {
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
const artifact = await buildAgent({ root: agentRoot });
|
|
14
|
+
const manifest = artifact.manifest;
|
|
15
|
+
const codexModels = manifest.possibleModels.filter((model) => model.startsWith("openai-codex/"));
|
|
16
|
+
if (codexModels.length === 0) {
|
|
17
|
+
throw new Error(`Agent models ${manifest.possibleModels.join(", ")} do not use the openai-codex provider.`);
|
|
16
18
|
}
|
|
17
19
|
const target = stringFlag(parsed, "target") ?? manifest.gateway.deploy?.kind ?? "local";
|
|
18
20
|
const definition = resolveDeployDefinition(manifest, target, parsed);
|
|
@@ -26,9 +28,9 @@ export async function runCodexAuthCommand(agentRoot, parsed) {
|
|
|
26
28
|
const plan = {
|
|
27
29
|
target,
|
|
28
30
|
environment: resolveDeployEnvironment(manifest, parsed),
|
|
29
|
-
agentRevision: manifest.agentRevision
|
|
31
|
+
agentRevision: manifest.agentRevision,
|
|
32
|
+
buildRevision: artifact.buildRevision
|
|
30
33
|
};
|
|
31
|
-
const artifact = { root: agentRoot, manifest };
|
|
32
34
|
const publisher = await resolveProvider("deploy", definition, {
|
|
33
35
|
env: process.env,
|
|
34
36
|
fetch,
|
|
@@ -43,8 +45,11 @@ export async function runCodexAuthCommand(agentRoot, parsed) {
|
|
|
43
45
|
const remotePublisher = publisher;
|
|
44
46
|
const release = booleanFlag(parsed, "prepared") ? "prepared" : "active";
|
|
45
47
|
if (booleanFlag(parsed, "status")) {
|
|
46
|
-
await
|
|
47
|
-
|
|
48
|
+
const status = await remoteCodexLoginStatus(remotePublisher, artifact, plan, release);
|
|
49
|
+
if (!status.ready) {
|
|
50
|
+
throw new Error(`Codex authentication is not ready on ${plan.target}. Run \`assembly-line auth codex\` and complete device authentication.`);
|
|
51
|
+
}
|
|
52
|
+
printCodexAuthStatus(status, booleanFlag(parsed, "json"));
|
|
48
53
|
return;
|
|
49
54
|
}
|
|
50
55
|
if (!booleanFlag(parsed, "force") && await remoteCodexLoginReady(remotePublisher, artifact, plan, release)) {
|
|
@@ -58,12 +63,40 @@ export async function runCodexAuthCommand(agentRoot, parsed) {
|
|
|
58
63
|
await assertRemoteCodexLogin(remotePublisher, artifact, plan, true, release);
|
|
59
64
|
console.log(`Codex OAuth device authentication completed and persists on ${target}.`);
|
|
60
65
|
}
|
|
61
|
-
async function
|
|
66
|
+
async function remoteCodexLoginStatus(publisher, artifact, plan, release) {
|
|
62
67
|
const result = await publisher.runRemoteCommand(artifact, plan, ["codex", "login", "status"], {
|
|
63
68
|
silent: true,
|
|
64
69
|
release
|
|
65
70
|
});
|
|
66
|
-
|
|
71
|
+
const cliStatus = stripAnsi(`${result.stdout}\n${result.stderr}`).trim();
|
|
72
|
+
const match = cliStatus.match(/Logged in using\s+(.+)/iu);
|
|
73
|
+
return {
|
|
74
|
+
ready: result.exitCode === 0,
|
|
75
|
+
target: plan.target,
|
|
76
|
+
environment: plan.environment,
|
|
77
|
+
release,
|
|
78
|
+
credentialStorage: "persistent",
|
|
79
|
+
authMethod: match?.[1]?.trim() ?? null,
|
|
80
|
+
accountIdentity: null,
|
|
81
|
+
subscriptionPlan: null,
|
|
82
|
+
cliStatus
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
function printCodexAuthStatus(status, json) {
|
|
86
|
+
if (json) {
|
|
87
|
+
console.log(JSON.stringify(status, null, 2));
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
console.log(`Codex authentication is ready on ${status.target} (${status.environment}, ${status.release} release).`);
|
|
91
|
+
console.log(`Authentication method: ${status.authMethod ?? "not reported by the Codex CLI"}.`);
|
|
92
|
+
console.log("Credential storage: persistent.");
|
|
93
|
+
console.log("Account identity and subscription plan: not reported by the Codex CLI.");
|
|
94
|
+
}
|
|
95
|
+
function stripAnsi(value) {
|
|
96
|
+
return value.replace(/\u001b\[[0-9;]*m/gu, "");
|
|
97
|
+
}
|
|
98
|
+
async function remoteCodexLoginReady(publisher, artifact, plan, release) {
|
|
99
|
+
return (await remoteCodexLoginStatus(publisher, artifact, plan, release)).ready;
|
|
67
100
|
}
|
|
68
101
|
async function assertRemoteCodexLogin(publisher, artifact, plan, silent, release) {
|
|
69
102
|
const result = await publisher.runRemoteCommand(artifact, plan, ["codex", "login", "status"], { silent, release });
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type ParsedArgs } from "./args.js";
|
|
2
|
+
type CodingAgent = "codex" | "claude";
|
|
3
|
+
export interface AuthoringStatus {
|
|
4
|
+
schemaVersion: 1;
|
|
5
|
+
root: string;
|
|
6
|
+
agents: Array<{
|
|
7
|
+
agent: CodingAgent;
|
|
8
|
+
skillPath: string;
|
|
9
|
+
installed: boolean;
|
|
10
|
+
}>;
|
|
11
|
+
agentsInstructions: boolean;
|
|
12
|
+
claudeImportsAgents: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare function runAuthoringCommand(parsed: ParsedArgs): void;
|
|
15
|
+
export declare function installAuthoringIntegration(root: string, agents?: CodingAgent[], update?: boolean): AuthoringStatus;
|
|
16
|
+
export declare function authoringStatus(root: string, agents?: CodingAgent[]): AuthoringStatus;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=authoring.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authoring.d.ts","sourceRoot":"","sources":["../src/authoring.ts"],"names":[],"mappings":"AAUA,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAgBzD,KAAK,WAAW,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEtC,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,CAAC,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,KAAK,CAAC;QACZ,KAAK,EAAE,WAAW,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC,CAAC;IACH,kBAAkB,EAAE,OAAO,CAAC;IAC5B,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAsB5D;AAED,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,WAAW,EAAwB,EAC3C,MAAM,UAAQ,GACb,eAAe,CAIjB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,WAAW,EAAwB,GAAG,eAAe,CAa1G"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { cpSync, existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { dirname, join, resolve } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { booleanFlag } from "./args.js";
|
|
5
|
+
const SKILL_NAME = "assembly-line-authoring";
|
|
6
|
+
const MANAGED_START = "<!-- assembly-line:authoring:start -->";
|
|
7
|
+
const MANAGED_END = "<!-- assembly-line:authoring:end -->";
|
|
8
|
+
const AGENTS_BLOCK = [
|
|
9
|
+
MANAGED_START,
|
|
10
|
+
"## Assembly Line authoring",
|
|
11
|
+
"",
|
|
12
|
+
"Use the `assembly-line-authoring` skill for changes to Assembly Line agent folders.",
|
|
13
|
+
"Consult version-matched docs through `assembly-line docs` instead of relying on model memory.",
|
|
14
|
+
"Run `assembly-line validate <agentRoot> --json` after agent changes.",
|
|
15
|
+
MANAGED_END
|
|
16
|
+
].join("\n");
|
|
17
|
+
const CLAUDE_BLOCK = [MANAGED_START, "@AGENTS.md", MANAGED_END].join("\n");
|
|
18
|
+
export function runAuthoringCommand(parsed) {
|
|
19
|
+
const subcommand = parsed.positional[0] ?? "status";
|
|
20
|
+
const selection = parsed.positional[1] ?? "all";
|
|
21
|
+
const root = resolve(process.cwd(), String(parsed.flags.root ?? parsed.positional[2] ?? "."));
|
|
22
|
+
if (!existsSync(root))
|
|
23
|
+
throw new Error(`Authoring project root not found: ${root}.`);
|
|
24
|
+
const agents = codingAgents(selection);
|
|
25
|
+
if (subcommand === "status") {
|
|
26
|
+
const status = authoringStatus(root, agents);
|
|
27
|
+
if (booleanFlag(parsed, "json"))
|
|
28
|
+
console.log(JSON.stringify(status, null, 2));
|
|
29
|
+
else
|
|
30
|
+
printStatus(status);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
if (subcommand !== "install" && subcommand !== "update") {
|
|
34
|
+
throw new Error(`Unknown authoring subcommand: ${subcommand}. Use install, update, or status.`);
|
|
35
|
+
}
|
|
36
|
+
const update = subcommand === "update";
|
|
37
|
+
const status = installAuthoringIntegration(root, agents, update);
|
|
38
|
+
if (booleanFlag(parsed, "json"))
|
|
39
|
+
console.log(JSON.stringify(status, null, 2));
|
|
40
|
+
else {
|
|
41
|
+
for (const item of status.agents)
|
|
42
|
+
console.log(`${update ? "Updated" : "Installed"} ${item.agent} skill at ${item.skillPath}`);
|
|
43
|
+
console.log(`Assembly Line authoring instructions are active at ${root}.`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
export function installAuthoringIntegration(root, agents = ["codex", "claude"], update = false) {
|
|
47
|
+
for (const agent of agents)
|
|
48
|
+
installSkill(root, agent, update);
|
|
49
|
+
installRoutingInstructions(root, agents, update);
|
|
50
|
+
return authoringStatus(root, agents);
|
|
51
|
+
}
|
|
52
|
+
export function authoringStatus(root, agents = ["codex", "claude"]) {
|
|
53
|
+
const agentsPath = join(root, "AGENTS.md");
|
|
54
|
+
const claudePath = join(root, "CLAUDE.md");
|
|
55
|
+
return {
|
|
56
|
+
schemaVersion: 1,
|
|
57
|
+
root,
|
|
58
|
+
agents: agents.map((agent) => {
|
|
59
|
+
const skillPath = targetSkillPath(root, agent);
|
|
60
|
+
return { agent, skillPath, installed: existsSync(join(skillPath, "SKILL.md")) };
|
|
61
|
+
}),
|
|
62
|
+
agentsInstructions: fileContains(agentsPath, MANAGED_START),
|
|
63
|
+
claudeImportsAgents: fileContains(claudePath, "@AGENTS.md")
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function installSkill(root, agent, update) {
|
|
67
|
+
const source = sourceSkillPath();
|
|
68
|
+
const target = targetSkillPath(root, agent);
|
|
69
|
+
if (!existsSync(join(source, "SKILL.md"))) {
|
|
70
|
+
throw new Error(`Assembly Line authoring skill is missing from the CLI package: ${source}.`);
|
|
71
|
+
}
|
|
72
|
+
if (existsSync(target)) {
|
|
73
|
+
if (!update)
|
|
74
|
+
return;
|
|
75
|
+
rmSync(target, { recursive: true, force: true });
|
|
76
|
+
}
|
|
77
|
+
mkdirSync(dirname(target), { recursive: true });
|
|
78
|
+
cpSync(source, target, { recursive: true });
|
|
79
|
+
}
|
|
80
|
+
function installRoutingInstructions(root, agents, update) {
|
|
81
|
+
upsertManagedBlock(join(root, "AGENTS.md"), AGENTS_BLOCK, update);
|
|
82
|
+
if (agents.includes("claude"))
|
|
83
|
+
upsertManagedBlock(join(root, "CLAUDE.md"), CLAUDE_BLOCK, update);
|
|
84
|
+
}
|
|
85
|
+
function upsertManagedBlock(path, block, update) {
|
|
86
|
+
if (!existsSync(path)) {
|
|
87
|
+
writeFileSync(path, `${block}\n`);
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
const source = readFileSync(path, "utf8");
|
|
91
|
+
const start = source.indexOf(MANAGED_START);
|
|
92
|
+
const end = source.indexOf(MANAGED_END);
|
|
93
|
+
if (start >= 0 && end >= start) {
|
|
94
|
+
if (update) {
|
|
95
|
+
const after = end + MANAGED_END.length;
|
|
96
|
+
writeFileSync(path, `${source.slice(0, start)}${block}${source.slice(after)}`);
|
|
97
|
+
}
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
if (path.endsWith("CLAUDE.md") && source.includes("@AGENTS.md"))
|
|
101
|
+
return;
|
|
102
|
+
const separator = source.endsWith("\n\n") ? "" : source.endsWith("\n") ? "\n" : "\n\n";
|
|
103
|
+
writeFileSync(path, `${source}${separator}${block}\n`);
|
|
104
|
+
}
|
|
105
|
+
function codingAgents(value) {
|
|
106
|
+
if (value === "all")
|
|
107
|
+
return ["codex", "claude"];
|
|
108
|
+
if (value === "codex" || value === "claude")
|
|
109
|
+
return [value];
|
|
110
|
+
throw new Error(`Unknown coding agent: ${value}. Use codex, claude, or all.`);
|
|
111
|
+
}
|
|
112
|
+
function sourceSkillPath() {
|
|
113
|
+
return resolve(dirname(fileURLToPath(import.meta.url)), "../authoring/skills", SKILL_NAME);
|
|
114
|
+
}
|
|
115
|
+
function targetSkillPath(root, agent) {
|
|
116
|
+
return join(root, agent === "codex" ? ".agents/skills" : ".claude/skills", SKILL_NAME);
|
|
117
|
+
}
|
|
118
|
+
function fileContains(path, value) {
|
|
119
|
+
return existsSync(path) && readFileSync(path, "utf8").includes(value);
|
|
120
|
+
}
|
|
121
|
+
function printStatus(status) {
|
|
122
|
+
for (const item of status.agents)
|
|
123
|
+
console.log(`${item.installed ? "ready" : "missing"} ${item.agent.padEnd(6)} ${item.skillPath}`);
|
|
124
|
+
console.log(`${status.agentsInstructions ? "ready" : "missing"} AGENTS.md routing instructions`);
|
|
125
|
+
if (status.agents.some((item) => item.agent === "claude")) {
|
|
126
|
+
console.log(`${status.claudeImportsAgents ? "ready" : "missing"} CLAUDE.md imports AGENTS.md`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=authoring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authoring.js","sourceRoot":"","sources":["../src/authoring.ts"],"names":[],"mappings":"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"}
|
package/dist/channels.d.ts
CHANGED
|
@@ -15,11 +15,32 @@ export interface ChannelWireResult {
|
|
|
15
15
|
action: "set" | "manual";
|
|
16
16
|
detail: string;
|
|
17
17
|
}
|
|
18
|
+
export interface ChannelInstallationCheck {
|
|
19
|
+
channel: string;
|
|
20
|
+
provider: string;
|
|
21
|
+
workspace?: string;
|
|
22
|
+
ok: boolean;
|
|
23
|
+
skipped?: boolean;
|
|
24
|
+
grantedScopes: string[];
|
|
25
|
+
missingRequiredScopes: string[];
|
|
26
|
+
missingOptionalScopes: string[];
|
|
27
|
+
detail: string;
|
|
28
|
+
}
|
|
18
29
|
type FetchLike = (url: string, init?: unknown) => Promise<{
|
|
19
30
|
json(): Promise<unknown>;
|
|
20
31
|
}>;
|
|
32
|
+
type InstallationFetchLike = (url: string, init?: RequestInit) => Promise<{
|
|
33
|
+
ok: boolean;
|
|
34
|
+
status: number;
|
|
35
|
+
headers: {
|
|
36
|
+
get(name: string): string | null;
|
|
37
|
+
};
|
|
38
|
+
json(): Promise<unknown>;
|
|
39
|
+
}>;
|
|
21
40
|
/** Absolute ingress URL for a channel from the base URL + its compiled route. */
|
|
22
41
|
export declare function channelIngressUrl(baseUrl: string, channel: CompiledChannel): string;
|
|
23
42
|
export declare function wireChannels(manifest: AgentManifest, baseUrl: string, env: Record<string, string | undefined>, fetchImpl: FetchLike): Promise<ChannelWireResult[]>;
|
|
43
|
+
/** Verify live provider permissions that cannot be proven from source or env names. */
|
|
44
|
+
export declare function checkChannelInstallations(manifest: AgentManifest, env: Record<string, string | undefined>, fetchImpl: InstallationFetchLike): Promise<ChannelInstallationCheck[]>;
|
|
24
45
|
export {};
|
|
25
46
|
//# sourceMappingURL=channels.d.ts.map
|
package/dist/channels.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channels.d.ts","sourceRoot":"","sources":["../src/channels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEhF;;;;;;;;GAQG;AAEH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,KAAK,GAAG,QAAQ,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,KAAK,SAAS,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;IAAE,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;CAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"channels.d.ts","sourceRoot":"","sources":["../src/channels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEhF;;;;;;;;GAQG;AAEH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,KAAK,GAAG,QAAQ,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,KAAK,SAAS,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;IAAE,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;CAAE,CAAC,CAAC;AAExF,KAAK,qBAAqB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC;IACxE,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE;QAAE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAC9C,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1B,CAAC,CAAC;AAOH,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,MAAM,CAKnF;AA+BD,wBAAsB,YAAY,CAChC,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACvC,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAmC9B;AAED,uFAAuF;AACvF,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,aAAa,EACvB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACvC,SAAS,EAAE,qBAAqB,GAC/B,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAsErC"}
|
package/dist/channels.js
CHANGED
|
@@ -73,4 +73,108 @@ export async function wireChannels(manifest, baseUrl, env, fetchImpl) {
|
|
|
73
73
|
}
|
|
74
74
|
return results;
|
|
75
75
|
}
|
|
76
|
+
/** Verify live provider permissions that cannot be proven from source or env names. */
|
|
77
|
+
export async function checkChannelInstallations(manifest, env, fetchImpl) {
|
|
78
|
+
const checks = [];
|
|
79
|
+
for (const channel of manifest.channels) {
|
|
80
|
+
const provider = providerOf(channel);
|
|
81
|
+
if (provider !== "slack")
|
|
82
|
+
continue;
|
|
83
|
+
const installation = recordValue(channel.metadata?.installation);
|
|
84
|
+
const requiredScopes = stringArray(installation?.requiredBotScopes);
|
|
85
|
+
const optionalScopes = stringArray(installation?.optionalBotScopes);
|
|
86
|
+
for (const credential of slackCredentials(env)) {
|
|
87
|
+
if (!credential.token) {
|
|
88
|
+
checks.push({
|
|
89
|
+
channel: channel.name,
|
|
90
|
+
provider,
|
|
91
|
+
...(credential.workspace ? { workspace: credential.workspace } : {}),
|
|
92
|
+
ok: false,
|
|
93
|
+
skipped: true,
|
|
94
|
+
grantedScopes: [],
|
|
95
|
+
missingRequiredScopes: requiredScopes,
|
|
96
|
+
missingOptionalScopes: optionalScopes,
|
|
97
|
+
detail: "No Slack bot token is available locally for a live permission check."
|
|
98
|
+
});
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
const response = await fetchImpl("https://slack.com/api/auth.test", {
|
|
102
|
+
method: "POST",
|
|
103
|
+
headers: {
|
|
104
|
+
authorization: `Bearer ${credential.token}`,
|
|
105
|
+
"content-type": "application/x-www-form-urlencoded"
|
|
106
|
+
},
|
|
107
|
+
body: ""
|
|
108
|
+
});
|
|
109
|
+
const payload = recordValue(await response.json().catch(() => ({})));
|
|
110
|
+
if (!response.ok || payload?.ok !== true) {
|
|
111
|
+
const error = typeof payload?.error === "string" ? payload.error : `HTTP ${response.status}`;
|
|
112
|
+
checks.push({
|
|
113
|
+
channel: channel.name,
|
|
114
|
+
provider,
|
|
115
|
+
...(credential.workspace ? { workspace: credential.workspace } : {}),
|
|
116
|
+
ok: false,
|
|
117
|
+
grantedScopes: [],
|
|
118
|
+
missingRequiredScopes: requiredScopes,
|
|
119
|
+
missingOptionalScopes: optionalScopes,
|
|
120
|
+
detail: `Slack auth.test failed: ${error}`
|
|
121
|
+
});
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
const grantedScopes = (response.headers.get("x-oauth-scopes") ?? "")
|
|
125
|
+
.split(",")
|
|
126
|
+
.map((scope) => scope.trim())
|
|
127
|
+
.filter(Boolean)
|
|
128
|
+
.sort();
|
|
129
|
+
const granted = new Set(grantedScopes);
|
|
130
|
+
const missingRequiredScopes = requiredScopes.filter((scope) => !granted.has(scope));
|
|
131
|
+
const missingOptionalScopes = optionalScopes.filter((scope) => !granted.has(scope));
|
|
132
|
+
const workspace = credential.workspace ?? stringValue(payload.team_id) ?? stringValue(payload.team);
|
|
133
|
+
checks.push({
|
|
134
|
+
channel: channel.name,
|
|
135
|
+
provider,
|
|
136
|
+
...(workspace ? { workspace } : {}),
|
|
137
|
+
ok: missingRequiredScopes.length === 0,
|
|
138
|
+
grantedScopes,
|
|
139
|
+
missingRequiredScopes,
|
|
140
|
+
missingOptionalScopes,
|
|
141
|
+
detail: missingRequiredScopes.length === 0
|
|
142
|
+
? "Slack bot token is valid and all required scopes are granted."
|
|
143
|
+
: `Slack app is missing required bot scopes: ${missingRequiredScopes.join(", ")}. Reinstall the app after adding them.`
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return checks;
|
|
148
|
+
}
|
|
149
|
+
function slackCredentials(env) {
|
|
150
|
+
const credentials = [];
|
|
151
|
+
if (env.SLACK_BOT_TOKEN?.trim())
|
|
152
|
+
credentials.push({ token: env.SLACK_BOT_TOKEN.trim() });
|
|
153
|
+
const encoded = env.SLACK_WORKSPACE_CREDENTIALS_JSON?.trim();
|
|
154
|
+
if (encoded) {
|
|
155
|
+
let parsed;
|
|
156
|
+
try {
|
|
157
|
+
parsed = JSON.parse(encoded);
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
throw new Error("SLACK_WORKSPACE_CREDENTIALS_JSON is not valid JSON.");
|
|
161
|
+
}
|
|
162
|
+
const workspaces = recordValue(parsed);
|
|
163
|
+
for (const [workspace, value] of Object.entries(workspaces ?? {})) {
|
|
164
|
+
const credential = recordValue(value);
|
|
165
|
+
const token = stringValue(credential?.botToken) ?? stringValue(credential?.bot_token);
|
|
166
|
+
credentials.push({ workspace, ...(token ? { token } : {}) });
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return credentials.length > 0 ? credentials : [{}];
|
|
170
|
+
}
|
|
171
|
+
function recordValue(value) {
|
|
172
|
+
return value && typeof value === "object" && !Array.isArray(value) ? value : undefined;
|
|
173
|
+
}
|
|
174
|
+
function stringValue(value) {
|
|
175
|
+
return typeof value === "string" && value.length > 0 ? value : undefined;
|
|
176
|
+
}
|
|
177
|
+
function stringArray(value) {
|
|
178
|
+
return Array.isArray(value) ? value.filter((entry) => typeof entry === "string" && entry.length > 0) : [];
|
|
179
|
+
}
|
|
76
180
|
//# sourceMappingURL=channels.js.map
|
package/dist/channels.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channels.js","sourceRoot":"","sources":["../src/channels.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"channels.js","sourceRoot":"","sources":["../src/channels.ts"],"names":[],"mappings":"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"}
|
package/dist/checkpoints.js
CHANGED
|
@@ -4,7 +4,7 @@ import { resolveProvider } from "@assemblyline-agents/node";
|
|
|
4
4
|
import { FileStateAdapter, LocalBlobAdapter, LocalSandboxAdapter, AssemblyLineRuntime, loadRuntimeBundle } from "@assemblyline-agents/runtime";
|
|
5
5
|
import { booleanFlag, buildOptions, numberFlag, stringFlag } from "./args.js";
|
|
6
6
|
export async function runCheckpointCompactCommand(agentRoot, parsed) {
|
|
7
|
-
const artifact = buildAgent(buildOptions(parsed, agentRoot));
|
|
7
|
+
const artifact = await buildAgent(buildOptions(parsed, agentRoot));
|
|
8
8
|
const runtimeOptions = loadRuntimeBundle(artifact.root);
|
|
9
9
|
const state = await resolveStateForMaintenance(runtimeOptions, artifact.root);
|
|
10
10
|
const runtime = new AssemblyLineRuntime({
|
|
@@ -47,7 +47,7 @@ export async function runCheckpointCompactCommand(agentRoot, parsed) {
|
|
|
47
47
|
async function resolveStateForMaintenance(runtimeOptions, artifactRoot) {
|
|
48
48
|
const definition = runtimeOptions.manifest.gateway.state;
|
|
49
49
|
if (!definition || definition.kind === "local") {
|
|
50
|
-
return new FileStateAdapter(process.env.
|
|
50
|
+
return new FileStateAdapter(process.env.ASSEMBLY_LINE_STATE_FILE ?? resolve(artifactRoot, "runtime-state.json"));
|
|
51
51
|
}
|
|
52
52
|
return resolveProvider("state", definition, {
|
|
53
53
|
env: process.env,
|
package/dist/checkpoints.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoints.js","sourceRoot":"","sources":["../src/checkpoints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EAGlB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAmB,MAAM,WAAW,CAAC;AAE/F,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,SAAiB,EAAE,MAAkB;IACrF,MAAM,QAAQ,GAAG,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"checkpoints.js","sourceRoot":"","sources":["../src/checkpoints.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface ConnectionEventsCommandOptions {
|
|
2
|
+
baseUrl: string;
|
|
3
|
+
token?: string;
|
|
4
|
+
connection?: string;
|
|
5
|
+
userId?: string;
|
|
6
|
+
issuer?: string;
|
|
7
|
+
force?: boolean;
|
|
8
|
+
fetchImpl?: typeof fetch;
|
|
9
|
+
}
|
|
10
|
+
export declare function wireConnectionEvents(options: ConnectionEventsCommandOptions): Promise<unknown>;
|
|
11
|
+
export declare function checkConnectionEventsRemote(options: ConnectionEventsCommandOptions): Promise<unknown>;
|
|
12
|
+
//# sourceMappingURL=connections.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connections.d.ts","sourceRoot":"","sources":["../src/connections.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,8BAA8B,GAAG,OAAO,CAAC,OAAO,CAAC,CAiBpG;AAED,wBAAsB,2BAA2B,CAAC,OAAO,EAAE,8BAA8B,GAAG,OAAO,CAAC,OAAO,CAAC,CAK3G"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export async function wireConnectionEvents(options) {
|
|
2
|
+
const fetchImpl = options.fetchImpl ?? fetch;
|
|
3
|
+
const body = {
|
|
4
|
+
publicUrl: options.baseUrl,
|
|
5
|
+
force: options.force ?? true
|
|
6
|
+
};
|
|
7
|
+
if (options.connection)
|
|
8
|
+
body.connection = options.connection;
|
|
9
|
+
if (options.userId || options.issuer) {
|
|
10
|
+
if (!options.userId || !options.issuer)
|
|
11
|
+
throw new Error("--user-id and --issuer must be provided together.");
|
|
12
|
+
body.userId = options.userId;
|
|
13
|
+
body.issuer = options.issuer;
|
|
14
|
+
}
|
|
15
|
+
return request(fetchImpl, `${trimBase(options.baseUrl)}/assembly-line/connections/events/reconcile`, {
|
|
16
|
+
method: "POST",
|
|
17
|
+
headers: headers(options.token, true),
|
|
18
|
+
body: JSON.stringify(body)
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
export async function checkConnectionEventsRemote(options) {
|
|
22
|
+
const fetchImpl = options.fetchImpl ?? fetch;
|
|
23
|
+
const url = new URL(`${trimBase(options.baseUrl)}/assembly-line/connections/events`);
|
|
24
|
+
if (options.connection)
|
|
25
|
+
url.searchParams.set("connection", options.connection);
|
|
26
|
+
return request(fetchImpl, url.toString(), { headers: headers(options.token, false) });
|
|
27
|
+
}
|
|
28
|
+
function headers(token, json) {
|
|
29
|
+
const value = {};
|
|
30
|
+
if (json)
|
|
31
|
+
value["content-type"] = "application/json";
|
|
32
|
+
if (token?.trim())
|
|
33
|
+
value.authorization = `Bearer ${token.trim()}`;
|
|
34
|
+
return value;
|
|
35
|
+
}
|
|
36
|
+
async function request(fetchImpl, url, init) {
|
|
37
|
+
const response = await fetchImpl(url, init);
|
|
38
|
+
const text = await response.text();
|
|
39
|
+
let body = text;
|
|
40
|
+
try {
|
|
41
|
+
body = text ? JSON.parse(text) : {};
|
|
42
|
+
}
|
|
43
|
+
catch { }
|
|
44
|
+
if (!response.ok)
|
|
45
|
+
throw new Error(`Connection event request failed with HTTP ${response.status}: ${text}`);
|
|
46
|
+
return body;
|
|
47
|
+
}
|
|
48
|
+
function trimBase(value) {
|
|
49
|
+
const url = new URL(value);
|
|
50
|
+
if (url.protocol !== "https:" && url.hostname !== "localhost" && url.hostname !== "127.0.0.1") {
|
|
51
|
+
throw new Error("Connection event public URLs must use HTTPS outside local development.");
|
|
52
|
+
}
|
|
53
|
+
return value.replace(/\/+$/u, "");
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=connections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connections.js","sourceRoot":"","sources":["../src/connections.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { type ParsedArgs } from "./args.js";
|
|
|
3
3
|
/**
|
|
4
4
|
* Resolve deploy configuration once so publish and hosted auth use identical
|
|
5
5
|
* precedence. Environment scoping happens here because only this layer knows
|
|
6
|
-
* whether an identity option (
|
|
6
|
+
* whether an identity option (such as a Fly app) was configured in the
|
|
7
7
|
* manifest — which non-default environments must scope — or passed explicitly
|
|
8
8
|
* on the command line, which is always respected verbatim.
|
|
9
9
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy-definition.d.ts","sourceRoot":"","sources":["../src/deploy-definition.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAc,MAAM,2BAA2B,CAAC;AAC9F,OAAO,EAAuC,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAEjF;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,UAAU,EAClB,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,EACrD,GAAG,SAAgB,GAClB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"deploy-definition.d.ts","sourceRoot":"","sources":["../src/deploy-definition.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAc,MAAM,2BAA2B,CAAC;AAC9F,OAAO,EAAuC,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAEjF;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,UAAU,EAClB,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,EACrD,GAAG,SAAgB,GAClB,iBAAiB,CAkDnB;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,UAAU,EAClB,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,MAAM,CAMR;AAED,sFAAsF;AACtF,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAG/E"}
|