@assemblyline-agents/cli 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +19 -0
  3. package/dist/add.d.ts +23 -0
  4. package/dist/add.d.ts.map +1 -0
  5. package/dist/add.js +352 -0
  6. package/dist/add.js.map +1 -0
  7. package/dist/args.d.ts +14 -0
  8. package/dist/args.d.ts.map +1 -0
  9. package/dist/args.js +95 -0
  10. package/dist/args.js.map +1 -0
  11. package/dist/auth.d.ts +8 -0
  12. package/dist/auth.d.ts.map +1 -0
  13. package/dist/auth.js +74 -0
  14. package/dist/auth.js.map +1 -0
  15. package/dist/channels.d.ts +25 -0
  16. package/dist/channels.d.ts.map +1 -0
  17. package/dist/channels.js +76 -0
  18. package/dist/channels.js.map +1 -0
  19. package/dist/checkpoints.d.ts +3 -0
  20. package/dist/checkpoints.d.ts.map +1 -0
  21. package/dist/checkpoints.js +60 -0
  22. package/dist/checkpoints.js.map +1 -0
  23. package/dist/deploy-definition.d.ts +14 -0
  24. package/dist/deploy-definition.d.ts.map +1 -0
  25. package/dist/deploy-definition.js +92 -0
  26. package/dist/deploy-definition.js.map +1 -0
  27. package/dist/deploy-lifecycle.d.ts +17 -0
  28. package/dist/deploy-lifecycle.d.ts.map +1 -0
  29. package/dist/deploy-lifecycle.js +25 -0
  30. package/dist/deploy-lifecycle.js.map +1 -0
  31. package/dist/deploy.d.ts +20 -0
  32. package/dist/deploy.d.ts.map +1 -0
  33. package/dist/deploy.js +462 -0
  34. package/dist/deploy.js.map +1 -0
  35. package/dist/dev.d.ts +13 -0
  36. package/dist/dev.d.ts.map +1 -0
  37. package/dist/dev.js +157 -0
  38. package/dist/dev.js.map +1 -0
  39. package/dist/eval-assertions.d.ts +5 -0
  40. package/dist/eval-assertions.d.ts.map +1 -0
  41. package/dist/eval-assertions.js +99 -0
  42. package/dist/eval-assertions.js.map +1 -0
  43. package/dist/eval-case-runner.d.ts +38 -0
  44. package/dist/eval-case-runner.d.ts.map +1 -0
  45. package/dist/eval-case-runner.js +247 -0
  46. package/dist/eval-case-runner.js.map +1 -0
  47. package/dist/eval-cases.d.ts +6 -0
  48. package/dist/eval-cases.d.ts.map +1 -0
  49. package/dist/eval-cases.js +151 -0
  50. package/dist/eval-cases.js.map +1 -0
  51. package/dist/eval-comparison.d.ts +8 -0
  52. package/dist/eval-comparison.d.ts.map +1 -0
  53. package/dist/eval-comparison.js +90 -0
  54. package/dist/eval-comparison.js.map +1 -0
  55. package/dist/eval-custom.d.ts +15 -0
  56. package/dist/eval-custom.d.ts.map +1 -0
  57. package/dist/eval-custom.js +118 -0
  58. package/dist/eval-custom.js.map +1 -0
  59. package/dist/eval-experiment.d.ts +19 -0
  60. package/dist/eval-experiment.d.ts.map +1 -0
  61. package/dist/eval-experiment.js +122 -0
  62. package/dist/eval-experiment.js.map +1 -0
  63. package/dist/eval-fixtures.d.ts +17 -0
  64. package/dist/eval-fixtures.d.ts.map +1 -0
  65. package/dist/eval-fixtures.js +59 -0
  66. package/dist/eval-fixtures.js.map +1 -0
  67. package/dist/eval-gateway-host.d.ts +34 -0
  68. package/dist/eval-gateway-host.d.ts.map +1 -0
  69. package/dist/eval-gateway-host.js +127 -0
  70. package/dist/eval-gateway-host.js.map +1 -0
  71. package/dist/eval-judge.d.ts +35 -0
  72. package/dist/eval-judge.d.ts.map +1 -0
  73. package/dist/eval-judge.js +105 -0
  74. package/dist/eval-judge.js.map +1 -0
  75. package/dist/eval-mocks.d.ts +10 -0
  76. package/dist/eval-mocks.d.ts.map +1 -0
  77. package/dist/eval-mocks.js +57 -0
  78. package/dist/eval-mocks.js.map +1 -0
  79. package/dist/eval-report.d.ts +7 -0
  80. package/dist/eval-report.d.ts.map +1 -0
  81. package/dist/eval-report.js +89 -0
  82. package/dist/eval-report.js.map +1 -0
  83. package/dist/eval-retry.d.ts +10 -0
  84. package/dist/eval-retry.d.ts.map +1 -0
  85. package/dist/eval-retry.js +37 -0
  86. package/dist/eval-retry.js.map +1 -0
  87. package/dist/eval-trajectory.d.ts +7 -0
  88. package/dist/eval-trajectory.d.ts.map +1 -0
  89. package/dist/eval-trajectory.js +92 -0
  90. package/dist/eval-trajectory.js.map +1 -0
  91. package/dist/eval-turns.d.ts +66 -0
  92. package/dist/eval-turns.d.ts.map +1 -0
  93. package/dist/eval-turns.js +187 -0
  94. package/dist/eval-turns.js.map +1 -0
  95. package/dist/eval-types.d.ts +271 -0
  96. package/dist/eval-types.d.ts.map +1 -0
  97. package/dist/eval-types.js +4 -0
  98. package/dist/eval-types.js.map +1 -0
  99. package/dist/eval.d.ts +26 -0
  100. package/dist/eval.d.ts.map +1 -0
  101. package/dist/eval.js +218 -0
  102. package/dist/eval.js.map +1 -0
  103. package/dist/help.d.ts +12 -0
  104. package/dist/help.d.ts.map +1 -0
  105. package/dist/help.js +323 -0
  106. package/dist/help.js.map +1 -0
  107. package/dist/hosts.d.ts +3 -0
  108. package/dist/hosts.d.ts.map +1 -0
  109. package/dist/hosts.js +51 -0
  110. package/dist/hosts.js.map +1 -0
  111. package/dist/index.d.ts +3 -0
  112. package/dist/index.d.ts.map +1 -0
  113. package/dist/index.js +318 -0
  114. package/dist/index.js.map +1 -0
  115. package/dist/init.d.ts +13 -0
  116. package/dist/init.d.ts.map +1 -0
  117. package/dist/init.js +79 -0
  118. package/dist/init.js.map +1 -0
  119. package/dist/legacy-bin.d.ts +3 -0
  120. package/dist/legacy-bin.d.ts.map +1 -0
  121. package/dist/legacy-bin.js +8 -0
  122. package/dist/legacy-bin.js.map +1 -0
  123. package/dist/models.d.ts +5 -0
  124. package/dist/models.d.ts.map +1 -0
  125. package/dist/models.js +20 -0
  126. package/dist/models.js.map +1 -0
  127. package/dist/operator-client.d.ts +7 -0
  128. package/dist/operator-client.d.ts.map +1 -0
  129. package/dist/operator-client.js +62 -0
  130. package/dist/operator-client.js.map +1 -0
  131. package/dist/pm.d.ts +20 -0
  132. package/dist/pm.d.ts.map +1 -0
  133. package/dist/pm.js +70 -0
  134. package/dist/pm.js.map +1 -0
  135. package/dist/project-env.d.ts +8 -0
  136. package/dist/project-env.d.ts.map +1 -0
  137. package/dist/project-env.js +51 -0
  138. package/dist/project-env.js.map +1 -0
  139. package/dist/secrets.d.ts +3 -0
  140. package/dist/secrets.d.ts.map +1 -0
  141. package/dist/secrets.js +48 -0
  142. package/dist/secrets.js.map +1 -0
  143. package/dist/state.d.ts +3 -0
  144. package/dist/state.d.ts.map +1 -0
  145. package/dist/state.js +85 -0
  146. package/dist/state.js.map +1 -0
  147. package/package.json +67 -0
package/dist/auth.js ADDED
@@ -0,0 +1,74 @@
1
+ import { fileURLToPath } from "node:url";
2
+ import { compileAgent } from "@assemblyline-agents/compiler";
3
+ import { adapterProviderMetadata } from "@assemblyline-agents/core";
4
+ import { resolveProvider } from "@assemblyline-agents/node";
5
+ import { booleanFlag, stringFlag } from "./args.js";
6
+ import { resolveDeployDefinition, resolveDeployEnvironment } from "./deploy-definition.js";
7
+ /**
8
+ * Bootstrap hosted Codex OAuth through the selected deployment publisher. The
9
+ * remote Codex CLI owns the device exchange and credential cache; Assembly Line never
10
+ * reads, copies, prints, or stores the resulting OAuth tokens.
11
+ */
12
+ export async function runCodexAuthCommand(agentRoot, parsed) {
13
+ const manifest = compileAgent({ root: agentRoot });
14
+ if (!manifest.agent.model.startsWith("openai-codex/")) {
15
+ throw new Error(`Agent model ${manifest.agent.model} does not use the openai-codex provider.`);
16
+ }
17
+ const target = stringFlag(parsed, "target") ?? manifest.gateway.deploy?.kind ?? "local";
18
+ const definition = resolveDeployDefinition(manifest, target, parsed);
19
+ const metadata = adapterProviderMetadata(target, "deploy")
20
+ ?? manifest.providerMetadata?.find((entry) => entry.kind === target && entry.role === "deploy");
21
+ const capabilities = new Set(metadata?.capabilities ?? []);
22
+ const missing = ["persistent-storage", "remote-exec"].filter((capability) => !capabilities.has(capability));
23
+ if (missing.length > 0) {
24
+ throw new Error(`Deploy target ${target} cannot host Codex OAuth because it lacks: ${missing.join(", ")}.`);
25
+ }
26
+ const plan = {
27
+ target,
28
+ environment: resolveDeployEnvironment(manifest, parsed),
29
+ agentRevision: manifest.agentRevision
30
+ };
31
+ const artifact = { root: agentRoot, manifest };
32
+ const publisher = await resolveProvider("deploy", definition, {
33
+ env: process.env,
34
+ fetch,
35
+ manifest,
36
+ artifactRoot: agentRoot,
37
+ providerRoot: fileURLToPath(new URL("..", import.meta.url)),
38
+ devMode: false
39
+ });
40
+ if (!publisher.runRemoteCommand) {
41
+ throw new Error(`Deploy target ${target} advertises remote execution but its publisher does not implement runRemoteCommand().`);
42
+ }
43
+ const remotePublisher = publisher;
44
+ const release = booleanFlag(parsed, "prepared") ? "prepared" : "active";
45
+ if (booleanFlag(parsed, "status")) {
46
+ await assertRemoteCodexLogin(remotePublisher, artifact, plan, false, release);
47
+ console.log(`Codex OAuth is ready on ${target} and its credential cache is persistent.`);
48
+ return;
49
+ }
50
+ if (!booleanFlag(parsed, "force") && await remoteCodexLoginReady(remotePublisher, artifact, plan, release)) {
51
+ console.log(`Codex OAuth is already ready on ${target} and its credential cache is persistent.`);
52
+ return;
53
+ }
54
+ console.log(`Starting Codex device authentication on ${target}. Complete the browser prompt; no OAuth token is copied through Assembly Line or deployment secrets.`);
55
+ const login = await remotePublisher.runRemoteCommand(artifact, plan, ["codex", "login", "--device-auth"], { interactive: true, release });
56
+ if (login.exitCode !== 0)
57
+ throw new Error(`Remote Codex device authentication failed with exit code ${login.exitCode}.`);
58
+ await assertRemoteCodexLogin(remotePublisher, artifact, plan, true, release);
59
+ console.log(`Codex OAuth device authentication completed and persists on ${target}.`);
60
+ }
61
+ async function remoteCodexLoginReady(publisher, artifact, plan, release) {
62
+ const result = await publisher.runRemoteCommand(artifact, plan, ["codex", "login", "status"], {
63
+ silent: true,
64
+ release
65
+ });
66
+ return result.exitCode === 0;
67
+ }
68
+ async function assertRemoteCodexLogin(publisher, artifact, plan, silent, release) {
69
+ const result = await publisher.runRemoteCommand(artifact, plan, ["codex", "login", "status"], { silent, release });
70
+ if (result.exitCode !== 0) {
71
+ throw new Error(`Codex authentication is not ready on ${plan.target}. Run \`assembly-line auth codex\` and complete device authentication.`);
72
+ }
73
+ }
74
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +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,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EACL,uBAAuB,EAIxB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,UAAU,EAAmB,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAE3F;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,SAAiB,EAAE,MAAkB;IAC7E,MAAM,QAAQ,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IACnD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,eAAe,QAAQ,CAAC,KAAK,CAAC,KAAK,0CAA0C,CAAC,CAAC;IACjG,CAAC;IACD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,IAAI,OAAO,CAAC;IACxF,MAAM,UAAU,GAAG,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACrE,MAAM,QAAQ,GAAG,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC;WACrD,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IAClG,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,YAAY,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,CAAC,oBAAoB,EAAE,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IAC5G,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,iBAAiB,MAAM,8CAA8C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9G,CAAC;IAED,MAAM,IAAI,GAAe;QACvB,MAAM;QACN,WAAW,EAAE,wBAAwB,CAAC,QAAQ,EAAE,MAAM,CAAC;QACvD,aAAa,EAAE,QAAQ,CAAC,aAAa;KACtC,CAAC;IACF,MAAM,QAAQ,GAAmB,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;IAC/D,MAAM,SAAS,GAAG,MAAM,eAAe,CAAkB,QAAQ,EAAE,UAAU,EAAE;QAC7E,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK;QACL,QAAQ;QACR,YAAY,EAAE,SAAS;QACvB,YAAY,EAAE,aAAa,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3D,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;IACH,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,iBAAiB,MAAM,uFAAuF,CAAC,CAAC;IAClI,CAAC;IACD,MAAM,eAAe,GAAG,SAAkF,CAAC;IAC3G,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;IAExE,IAAI,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;QAClC,MAAM,sBAAsB,CAAC,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAC9E,OAAO,CAAC,GAAG,CAAC,2BAA2B,MAAM,0CAA0C,CAAC,CAAC;QACzF,OAAO;IACT,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,MAAM,qBAAqB,CAAC,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;QAC3G,OAAO,CAAC,GAAG,CAAC,mCAAmC,MAAM,0CAA0C,CAAC,CAAC;QACjG,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,2CAA2C,MAAM,sGAAsG,CAAC,CAAC;IACrK,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,gBAAgB,CAClD,QAAQ,EACR,IAAI,EACJ,CAAC,OAAO,EAAE,OAAO,EAAE,eAAe,CAAC,EACnC,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,CAC/B,CAAC;IACF,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,4DAA4D,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;IACzH,MAAM,sBAAsB,CAAC,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,+DAA+D,MAAM,GAAG,CAAC,CAAC;AACxF,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,SAAgF,EAChF,QAAwB,EACxB,IAAgB,EAChB,OAA8B;IAE9B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE;QAC5F,MAAM,EAAE,IAAI;QACZ,OAAO;KACR,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,SAAgF,EAChF,QAAwB,EACxB,IAAgB,EAChB,MAAe,EACf,OAA8B;IAE9B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACnH,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,wCAAwC,IAAI,CAAC,MAAM,wEAAwE,CAAC,CAAC;IAC/I,CAAC;AACH,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { AgentManifest, CompiledChannel } from "@assemblyline-agents/core";
2
+ /**
3
+ * `assembly-line channels wire` — point each configured channel's provider at the
4
+ * deployed ingress URL. Only Telegram can be set fully via API (setWebhook);
5
+ * the others return the exact URL/instructions to apply in the provider console.
6
+ *
7
+ * The channel-specific API call (Telegram) lives here rather than pulling a
8
+ * channel package into the CLI — it mirrors `@assemblyline-agents/telegram`'s
9
+ * `setTelegramWebhook`.
10
+ */
11
+ export interface ChannelWireResult {
12
+ channel: string;
13
+ provider: string;
14
+ url: string;
15
+ action: "set" | "manual";
16
+ detail: string;
17
+ }
18
+ type FetchLike = (url: string, init?: unknown) => Promise<{
19
+ json(): Promise<unknown>;
20
+ }>;
21
+ /** Absolute ingress URL for a channel from the base URL + its compiled route. */
22
+ export declare function channelIngressUrl(baseUrl: string, channel: CompiledChannel): string;
23
+ export declare function wireChannels(manifest: AgentManifest, baseUrl: string, env: Record<string, string | undefined>, fetchImpl: FetchLike): Promise<ChannelWireResult[]>;
24
+ export {};
25
+ //# sourceMappingURL=channels.d.ts.map
@@ -0,0 +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;AAOxF,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"}
@@ -0,0 +1,76 @@
1
+ function providerOf(channel) {
2
+ const meta = channel.metadata;
3
+ return typeof meta?.provider === "string" ? meta.provider : channel.name;
4
+ }
5
+ /** Absolute ingress URL for a channel from the base URL + its compiled route. */
6
+ export function channelIngressUrl(baseUrl, channel) {
7
+ const base = baseUrl.replace(/\/+$/, "");
8
+ const route = channel.route ?? "";
9
+ if (!route)
10
+ return base;
11
+ return `${base}${route.startsWith("/") ? "" : "/"}${route}`;
12
+ }
13
+ async function setTelegramWebhook(env, fetchImpl, url) {
14
+ const token = env.TELEGRAM_BOT_TOKEN;
15
+ if (!token)
16
+ return { ok: false, detail: "TELEGRAM_BOT_TOKEN is not set — can't call setWebhook." };
17
+ const body = { url };
18
+ const secret = env.TELEGRAM_WEBHOOK_SECRET?.trim();
19
+ if (secret)
20
+ body.secret_token = secret;
21
+ const res = await fetchImpl(`https://api.telegram.org/bot${token}/setWebhook`, {
22
+ method: "POST",
23
+ headers: { "content-type": "application/json" },
24
+ body: JSON.stringify(body),
25
+ });
26
+ const json = (await res.json());
27
+ return { ok: json.ok === true, detail: json.description ?? (json.ok ? "webhook set" : JSON.stringify(json)) };
28
+ }
29
+ // Keys are the compiled `metadata.provider` values (see compiler
30
+ // channel-metadata.ts: teams → "microsoft-teams", photon → "photon-spectrum").
31
+ const MANUAL_INSTRUCTIONS = {
32
+ slack: "Set this as the Slack Events API Request URL in your app config, then reinstall the app.",
33
+ discord: "Set this as the Interactions Endpoint URL in your Discord application settings.",
34
+ "microsoft-teams": "Set this as the messaging endpoint in your Azure Bot / Bot Framework registration.",
35
+ "photon-spectrum": "Point your Photon/Spectrum webhook at this URL.",
36
+ github: "Set this as the webhook Payload URL in your GitHub App/repo webhook settings.",
37
+ };
38
+ export async function wireChannels(manifest, baseUrl, env, fetchImpl) {
39
+ const results = [];
40
+ for (const channel of manifest.channels) {
41
+ const provider = providerOf(channel);
42
+ const url = channelIngressUrl(baseUrl, channel);
43
+ if (provider === "telegram") {
44
+ try {
45
+ const res = await setTelegramWebhook(env, fetchImpl, url);
46
+ results.push({
47
+ channel: channel.name,
48
+ provider,
49
+ url,
50
+ action: res.ok ? "set" : "manual",
51
+ detail: res.detail,
52
+ });
53
+ }
54
+ catch (error) {
55
+ results.push({
56
+ channel: channel.name,
57
+ provider,
58
+ url,
59
+ action: "manual",
60
+ detail: `setWebhook failed: ${error instanceof Error ? error.message : String(error)}`,
61
+ });
62
+ }
63
+ }
64
+ else {
65
+ results.push({
66
+ channel: channel.name,
67
+ provider,
68
+ url,
69
+ action: "manual",
70
+ detail: MANUAL_INSTRUCTIONS[provider] ?? `Point your ${provider} provider at this URL.`,
71
+ });
72
+ }
73
+ }
74
+ return results;
75
+ }
76
+ //# sourceMappingURL=channels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channels.js","sourceRoot":"","sources":["../src/channels.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type ParsedArgs } from "./args.js";
2
+ export declare function runCheckpointCompactCommand(agentRoot: string, parsed: ParsedArgs): Promise<void>;
3
+ //# sourceMappingURL=checkpoints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpoints.d.ts","sourceRoot":"","sources":["../src/checkpoints.ts"],"names":[],"mappings":"AAYA,OAAO,EAAqD,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAE/F,wBAAsB,2BAA2B,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAmCtG"}
@@ -0,0 +1,60 @@
1
+ import { resolve } from "node:path";
2
+ import { buildAgent } from "@assemblyline-agents/compiler";
3
+ import { resolveProvider } from "@assemblyline-agents/node";
4
+ import { FileStateAdapter, LocalBlobAdapter, LocalSandboxAdapter, OpenEveRuntime, loadRuntimeBundle } from "@assemblyline-agents/runtime";
5
+ import { booleanFlag, buildOptions, numberFlag, stringFlag } from "./args.js";
6
+ export async function runCheckpointCompactCommand(agentRoot, parsed) {
7
+ const artifact = buildAgent(buildOptions(parsed, agentRoot));
8
+ const runtimeOptions = loadRuntimeBundle(artifact.root);
9
+ const state = await resolveStateForMaintenance(runtimeOptions, artifact.root);
10
+ const runtime = new OpenEveRuntime({
11
+ ...runtimeOptions,
12
+ state,
13
+ blob: new LocalBlobAdapter(resolve(artifact.root, "blobs")),
14
+ sandbox: new LocalSandboxAdapter(resolve(artifact.root, "sandbox")),
15
+ devMode: true
16
+ });
17
+ const options = {
18
+ dryRun: booleanFlag(parsed, "dry-run") || !booleanFlag(parsed, "apply")
19
+ };
20
+ const runId = stringFlag(parsed, "run-id");
21
+ if (runId)
22
+ options.runId = runId;
23
+ const maxActive = numberFlag(parsed, "max-active-per-run-name");
24
+ if (maxActive !== undefined)
25
+ options.maxActivePerRunName = maxActive;
26
+ const terminalTtl = numberFlag(parsed, "terminal-ttl-ms");
27
+ if (terminalTtl !== undefined)
28
+ options.terminalTtlMs = terminalTtl;
29
+ const failedTtl = numberFlag(parsed, "failed-ttl-ms");
30
+ if (failedTtl !== undefined)
31
+ options.failedRunTtlMs = failedTtl;
32
+ const scheduledTtl = numberFlag(parsed, "scheduled-ttl-ms");
33
+ if (scheduledTtl !== undefined)
34
+ options.scheduledRunTtlMs = scheduledTtl;
35
+ try {
36
+ const result = await runtime.compactCheckpoints(options);
37
+ console.log(JSON.stringify({
38
+ mode: options.dryRun ? "dry-run" : "apply",
39
+ agentRevision: runtimeOptions.manifest.agentRevision,
40
+ result
41
+ }, null, 2));
42
+ }
43
+ finally {
44
+ await state.close?.();
45
+ }
46
+ }
47
+ async function resolveStateForMaintenance(runtimeOptions, artifactRoot) {
48
+ const definition = runtimeOptions.manifest.gateway.state;
49
+ if (!definition || definition.kind === "local") {
50
+ return new FileStateAdapter(process.env.OPENEVE_STATE_FILE ?? resolve(artifactRoot, "runtime-state.json"));
51
+ }
52
+ return resolveProvider("state", definition, {
53
+ env: process.env,
54
+ fetch: fetch,
55
+ manifest: runtimeOptions.manifest,
56
+ artifactRoot,
57
+ devMode: false
58
+ });
59
+ }
60
+ //# sourceMappingURL=checkpoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpoints.js","sourceRoot":"","sources":["../src/checkpoints.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { AdapterDefinition, AgentManifest } from "@assemblyline-agents/core";
2
+ import { type ParsedArgs } from "./args.js";
3
+ /**
4
+ * Resolve deploy configuration once so publish and hosted auth use identical
5
+ * precedence. Environment scoping happens here because only this layer knows
6
+ * whether an identity option (fly app, vps domain) was configured in the
7
+ * manifest — which non-default environments must scope — or passed explicitly
8
+ * on the command line, which is always respected verbatim.
9
+ */
10
+ export declare function resolveDeployDefinition(manifest: AgentManifest, target: string, parsed: ParsedArgs, env?: Record<string, string | undefined>, cwd?: string): AdapterDefinition;
11
+ export declare function resolveDeployEnvironment(manifest: AgentManifest, parsed: ParsedArgs, env?: Record<string, string | undefined>): string;
12
+ /** The environment deploys land in when --env/ASSEMBLY_LINE_DEPLOY_ENV are absent. */
13
+ export declare function resolveDefaultDeployEnvironment(manifest: AgentManifest): string;
14
+ //# sourceMappingURL=deploy-definition.d.ts.map
@@ -0,0 +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,CAsDnB;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"}
@@ -0,0 +1,92 @@
1
+ import { environmentScopedName, sanitizeDeployName } from "@assemblyline-agents/core";
2
+ import { booleanFlag, numberFlag, stringFlag } from "./args.js";
3
+ /**
4
+ * Resolve deploy configuration once so publish and hosted auth use identical
5
+ * precedence. Environment scoping happens here because only this layer knows
6
+ * whether an identity option (fly app, vps domain) was configured in the
7
+ * manifest — which non-default environments must scope — or passed explicitly
8
+ * on the command line, which is always respected verbatim.
9
+ */
10
+ export function resolveDeployDefinition(manifest, target, parsed, env = process.env, cwd = process.cwd()) {
11
+ const configured = manifest.gateway.deploy?.kind === target ? manifest.gateway.deploy : undefined;
12
+ const options = { ...(configured?.options ?? {}) };
13
+ const environment = resolveDeployEnvironment(manifest, parsed, env);
14
+ const defaultEnvironment = resolveDefaultDeployEnvironment(manifest);
15
+ const scope = { environment, defaultEnvironment };
16
+ if (target === "railway") {
17
+ setString(options, "railwayBin", stringFlag(parsed, "railway-bin"));
18
+ setString(options, "project", stringFlag(parsed, "railway-project") ?? env.RAILWAY_PROJECT_ID ?? jsonString(options.project));
19
+ setString(options, "service", stringFlag(parsed, "railway-service") ?? env.RAILWAY_SERVICE_ID ?? jsonString(options.service));
20
+ setBoolean(options, "json", flagBoolean(parsed, "railway-json"));
21
+ setBoolean(options, "detach", flagBoolean(parsed, "detach"));
22
+ }
23
+ else if (target === "docker") {
24
+ setString(options, "dockerBin", stringFlag(parsed, "docker-bin"));
25
+ setString(options, "image", stringFlag(parsed, "docker-image") ?? env.OPENEVE_DOCKER_IMAGE ?? jsonString(options.image));
26
+ const serve = flagBoolean(parsed, "serve") ?? flagBoolean(parsed, "run");
27
+ setBoolean(options, "serve", serve);
28
+ setNumber(options, "port", numberFlag(parsed, "port"));
29
+ }
30
+ else if (target === "fly") {
31
+ setString(options, "flyBin", stringFlag(parsed, "fly-bin"));
32
+ const explicitApp = stringFlag(parsed, "fly-app") ?? env.FLY_APP_NAME;
33
+ const manifestApp = jsonString(options.app);
34
+ setString(options, "app", explicitApp ?? (manifestApp ? environmentScopedName(manifestApp, scope) : undefined));
35
+ setString(options, "org", stringFlag(parsed, "fly-org") ?? env.FLY_ORG ?? jsonString(options.org));
36
+ setString(options, "region", stringFlag(parsed, "fly-region") ?? env.FLY_REGION ?? jsonString(options.region));
37
+ setString(options, "memory", stringFlag(parsed, "fly-memory"));
38
+ setString(options, "vmSize", stringFlag(parsed, "fly-vm-size"));
39
+ setNumber(options, "internalPort", numberFlag(parsed, "fly-internal-port"));
40
+ setBoolean(options, "detach", flagBoolean(parsed, "detach"));
41
+ }
42
+ else if (target === "vps") {
43
+ setString(options, "host", stringFlag(parsed, "vps-host") ?? jsonString(options.host));
44
+ const explicitDomain = stringFlag(parsed, "vps-domain");
45
+ const manifestDomain = jsonString(options.domain);
46
+ // Non-default environments get a derived subdomain so a test deploy never
47
+ // contends for the production domain claim. DNS for it (a wildcard or an
48
+ // explicit record) is the operator's prerequisite.
49
+ const scopedDomain = manifestDomain && environment !== defaultEnvironment
50
+ ? `${sanitizeDeployName(environment, 20)}.${manifestDomain}`
51
+ : manifestDomain;
52
+ setString(options, "domain", explicitDomain ?? scopedDomain);
53
+ setString(options, "hostsFile", stringFlag(parsed, "vps-hosts-file") ?? env.OPENEVE_VPS_HOSTS_FILE ?? jsonString(options.hostsFile));
54
+ }
55
+ options.cwd = cwd;
56
+ return {
57
+ kind: target,
58
+ options,
59
+ ...(configured?.packageName ? { packageName: configured.packageName } : {})
60
+ };
61
+ }
62
+ export function resolveDeployEnvironment(manifest, parsed, env = process.env) {
63
+ const configured = manifest.gateway.deploy?.options?.environment;
64
+ return stringFlag(parsed, "env")
65
+ ?? env.OPENEVE_DEPLOY_ENV
66
+ ?? (typeof configured === "string" ? configured : undefined)
67
+ ?? "development";
68
+ }
69
+ /** The environment deploys land in when --env/ASSEMBLY_LINE_DEPLOY_ENV are absent. */
70
+ export function resolveDefaultDeployEnvironment(manifest) {
71
+ const configured = manifest.gateway.deploy?.options?.environment;
72
+ return typeof configured === "string" ? configured : "development";
73
+ }
74
+ function flagBoolean(parsed, name) {
75
+ return parsed.flags[name] === undefined ? undefined : booleanFlag(parsed, name);
76
+ }
77
+ function jsonString(value) {
78
+ return typeof value === "string" ? value : undefined;
79
+ }
80
+ function setString(options, name, value) {
81
+ if (value !== undefined)
82
+ options[name] = value;
83
+ }
84
+ function setNumber(options, name, value) {
85
+ if (value !== undefined)
86
+ options[name] = value;
87
+ }
88
+ function setBoolean(options, name, value) {
89
+ if (value !== undefined)
90
+ options[name] = value;
91
+ }
92
+ //# sourceMappingURL=deploy-definition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-definition.js","sourceRoot":"","sources":["../src/deploy-definition.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { DeployArtifact, DeployMigrationRequest, DeployPlan, DeployPublisher, DeployReceipt } from "@assemblyline-agents/core";
2
+ export interface DeployLifecycleResult {
3
+ providerReceipt: DeployReceipt;
4
+ migrationStatus: string;
5
+ lifecycle: Record<string, DeployReceipt>;
6
+ }
7
+ /** Execute the provider lifecycle in the one supported hosted-deploy order. */
8
+ export declare function executeDeployLifecycle(input: {
9
+ publisher: DeployPublisher;
10
+ artifact: DeployArtifact;
11
+ plan: DeployPlan;
12
+ migrationRequest: DeployMigrationRequest;
13
+ syncSecrets: () => Promise<void>;
14
+ runFallbackMigrations: () => Promise<string>;
15
+ activate?: boolean;
16
+ }): Promise<DeployLifecycleResult>;
17
+ //# sourceMappingURL=deploy-lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-lifecycle.d.ts","sourceRoot":"","sources":["../src/deploy-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,sBAAsB,EACtB,UAAU,EACV,eAAe,EACf,aAAa,EACd,MAAM,2BAA2B,CAAC;AAEnC,MAAM,WAAW,qBAAqB;IACpC,eAAe,EAAE,aAAa,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAC1C;AAED,+EAA+E;AAC/E,wBAAsB,sBAAsB,CAAC,KAAK,EAAE;IAClD,SAAS,EAAE,eAAe,CAAC;IAC3B,QAAQ,EAAE,cAAc,CAAC;IACzB,IAAI,EAAE,UAAU,CAAC;IACjB,gBAAgB,EAAE,sBAAsB,CAAC;IACzC,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,qBAAqB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAwBjC"}
@@ -0,0 +1,25 @@
1
+ /** Execute the provider lifecycle in the one supported hosted-deploy order. */
2
+ export async function executeDeployLifecycle(input) {
3
+ const lifecycle = {};
4
+ const preflight = await input.publisher.preflight?.(input.artifact, input.plan);
5
+ if (preflight)
6
+ lifecycle.preflight = preflight;
7
+ const preparation = await input.publisher.prepare?.(input.artifact, input.plan);
8
+ if (preparation)
9
+ lifecycle.preparation = preparation;
10
+ await input.syncSecrets();
11
+ const migrationStatus = input.publisher.runMigrations
12
+ ? await input.publisher.runMigrations(input.artifact, input.plan, input.migrationRequest)
13
+ : await input.runFallbackMigrations();
14
+ const providerReceipt = input.activate === false
15
+ ? {
16
+ ...(preparation ?? {}),
17
+ target: input.publisher.target,
18
+ status: "prepared",
19
+ environment: input.plan.environment,
20
+ agentRevision: input.plan.agentRevision
21
+ }
22
+ : await (input.publisher.activate ?? input.publisher.publish).call(input.publisher, input.artifact, input.plan);
23
+ return { providerReceipt, migrationStatus, lifecycle };
24
+ }
25
+ //# sourceMappingURL=deploy-lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-lifecycle.js","sourceRoot":"","sources":["../src/deploy-lifecycle.ts"],"names":[],"mappings":"AAcA,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,KAQ5C;IACC,MAAM,SAAS,GAAkC,EAAE,CAAC;IACpD,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAChF,IAAI,SAAS;QAAE,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/C,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAChF,IAAI,WAAW;QAAE,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC;IACrD,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC;IAC1B,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC,aAAa;QACnD,CAAC,CAAC,MAAM,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,gBAAgB,CAAC;QACzF,CAAC,CAAC,MAAM,KAAK,CAAC,qBAAqB,EAAE,CAAC;IACxC,MAAM,eAAe,GAAG,KAAK,CAAC,QAAQ,KAAK,KAAK;QAC9C,CAAC,CAAC;YACE,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;YACtB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM;YAC9B,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW;YACnC,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa;SACxC;QACH,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAC9D,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,IAAI,CACX,CAAC;IACN,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;AACzD,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { type DeploymentPlan } from "@assemblyline-agents/compiler";
2
+ import { type ParsedArgs } from "./args.js";
3
+ export { parseEnvSecrets } from "./project-env.js";
4
+ export declare function runDeployCommand(agentRoot: string, parsed: ParsedArgs): Promise<void>;
5
+ export declare function withDeclaredRuntimeEnv(fileSecrets: Record<string, string>, plan: DeploymentPlan, env: Record<string, string | undefined>): Record<string, string>;
6
+ export declare function splitDeploySecrets(secrets: Record<string, string>, plan: DeploymentPlan): {
7
+ runtimeSecrets: Record<string, string>;
8
+ localDeployKeys: string[];
9
+ };
10
+ export declare function runCommand(commandName: string, args: string[], options?: {
11
+ cwd?: string;
12
+ env?: NodeJS.ProcessEnv;
13
+ silent?: boolean;
14
+ }): Promise<{
15
+ exitCode: number;
16
+ stdout: string;
17
+ stderr: string;
18
+ }>;
19
+ export declare function writeJson(path: string, value: unknown): void;
20
+ //# sourceMappingURL=deploy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":"AAIA,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,+BAA+B,CAAC;AAgBvC,OAAO,EAAqD,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAO/F,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAqF3F;AAuID,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,IAAI,EAAE,cAAc,EACpB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GACtC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CASxB;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,IAAI,EAAE,cAAc,GACnB;IAAE,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,eAAe,EAAE,MAAM,EAAE,CAAA;CAAE,CAqBvE;AAqKD,wBAAgB,UAAU,CACxB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACxE,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA8B/D;AAcD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAG5D"}