@vertesia/cli 0.78.0-dev-9372725 → 0.78.0-dev.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 (161) hide show
  1. package/lib/agent/commands.d.ts +11 -0
  2. package/lib/agent/commands.d.ts.map +1 -0
  3. package/lib/agent/commands.js +173 -0
  4. package/lib/agent/commands.js.map +1 -0
  5. package/lib/agent/connect.d.ts +7 -0
  6. package/lib/agent/connect.d.ts.map +1 -0
  7. package/lib/agent/connect.js +68 -0
  8. package/lib/agent/connect.js.map +1 -0
  9. package/lib/agent/docker-credential.d.ts +2 -0
  10. package/lib/agent/docker-credential.d.ts.map +1 -0
  11. package/lib/agent/docker-credential.js +50 -0
  12. package/lib/agent/docker-credential.js.map +1 -0
  13. package/lib/agent/docker.d.ts +10 -0
  14. package/lib/agent/docker.d.ts.map +1 -0
  15. package/lib/agent/docker.js +93 -0
  16. package/lib/agent/docker.js.map +1 -0
  17. package/lib/agent/index.d.ts +3 -0
  18. package/lib/agent/index.d.ts.map +1 -0
  19. package/lib/agent/index.js +89 -0
  20. package/lib/agent/index.js.map +1 -0
  21. package/lib/agent/project.d.ts +58 -0
  22. package/lib/agent/project.d.ts.map +1 -0
  23. package/lib/agent/project.js +148 -0
  24. package/lib/agent/project.js.map +1 -0
  25. package/lib/agent/refresh.d.ts +6 -0
  26. package/lib/agent/refresh.d.ts.map +1 -0
  27. package/lib/agent/refresh.js +47 -0
  28. package/lib/agent/refresh.js.map +1 -0
  29. package/lib/agent/registry.d.ts +7 -0
  30. package/lib/agent/registry.d.ts.map +1 -0
  31. package/lib/agent/registry.js +47 -0
  32. package/lib/agent/registry.js.map +1 -0
  33. package/lib/agent/version.d.ts +2 -0
  34. package/lib/agent/version.d.ts.map +1 -0
  35. package/lib/agent/version.js +4 -0
  36. package/lib/agent/version.js.map +1 -0
  37. package/lib/client.d.ts +4 -0
  38. package/lib/client.d.ts.map +1 -0
  39. package/lib/client.js +22 -0
  40. package/lib/client.js.map +1 -0
  41. package/lib/codegen/CodeBuilder.d.ts +16 -0
  42. package/lib/codegen/CodeBuilder.d.ts.map +1 -0
  43. package/lib/codegen/CodeBuilder.js +115 -0
  44. package/lib/codegen/CodeBuilder.js.map +1 -0
  45. package/lib/codegen/InteractionVersion.d.ts +29 -0
  46. package/lib/codegen/InteractionVersion.d.ts.map +1 -0
  47. package/lib/codegen/InteractionVersion.js +94 -0
  48. package/lib/codegen/InteractionVersion.js.map +1 -0
  49. package/lib/codegen/index.d.ts +3 -0
  50. package/lib/codegen/index.d.ts.map +1 -0
  51. package/lib/codegen/index.js +30 -0
  52. package/lib/codegen/index.js.map +1 -0
  53. package/lib/codegen/template.d.ts +3 -0
  54. package/lib/codegen/template.d.ts.map +1 -0
  55. package/lib/codegen/template.js +28 -0
  56. package/lib/codegen/template.js.map +1 -0
  57. package/lib/codegen/utils.d.ts +2 -0
  58. package/lib/codegen/utils.d.ts.map +1 -0
  59. package/lib/codegen/utils.js +4 -0
  60. package/lib/codegen/utils.js.map +1 -0
  61. package/lib/datagen/index.d.ts +3 -0
  62. package/lib/datagen/index.d.ts.map +1 -0
  63. package/lib/datagen/index.js +80 -0
  64. package/lib/datagen/index.js.map +1 -0
  65. package/lib/envs/index.d.ts +3 -0
  66. package/lib/envs/index.d.ts.map +1 -0
  67. package/lib/envs/index.js +24 -0
  68. package/lib/envs/index.js.map +1 -0
  69. package/lib/index.d.ts +2 -0
  70. package/lib/index.d.ts.map +1 -0
  71. package/lib/index.js +177 -0
  72. package/lib/index.js.map +1 -0
  73. package/lib/interactions/index.d.ts +3 -0
  74. package/lib/interactions/index.d.ts.map +1 -0
  75. package/lib/interactions/index.js +37 -0
  76. package/lib/interactions/index.js.map +1 -0
  77. package/lib/memory/index.d.ts +3 -0
  78. package/lib/memory/index.d.ts.map +1 -0
  79. package/lib/memory/index.js +15 -0
  80. package/lib/memory/index.js.map +1 -0
  81. package/lib/objects/commands.d.ts +14 -0
  82. package/lib/objects/commands.d.ts.map +1 -0
  83. package/lib/objects/commands.js +240 -0
  84. package/lib/objects/commands.js.map +1 -0
  85. package/lib/objects/index.d.ts +3 -0
  86. package/lib/objects/index.d.ts.map +1 -0
  87. package/lib/objects/index.js +37 -0
  88. package/lib/objects/index.js.map +1 -0
  89. package/lib/package.d.ts +8 -0
  90. package/lib/package.d.ts.map +1 -0
  91. package/lib/package.js +63 -0
  92. package/lib/package.js.map +1 -0
  93. package/lib/profiles/commands.d.ts +20 -0
  94. package/lib/profiles/commands.d.ts.map +1 -0
  95. package/lib/profiles/commands.js +191 -0
  96. package/lib/profiles/commands.js.map +1 -0
  97. package/lib/profiles/index.d.ts +65 -0
  98. package/lib/profiles/index.d.ts.map +1 -0
  99. package/lib/profiles/index.js +324 -0
  100. package/lib/profiles/index.js.map +1 -0
  101. package/lib/profiles/server/cors.d.ts +3 -0
  102. package/lib/profiles/server/cors.d.ts.map +1 -0
  103. package/lib/profiles/server/cors.js +18 -0
  104. package/lib/profiles/server/cors.js.map +1 -0
  105. package/lib/profiles/server/index.d.ts +12 -0
  106. package/lib/profiles/server/index.d.ts.map +1 -0
  107. package/lib/profiles/server/index.js +134 -0
  108. package/lib/profiles/server/index.js.map +1 -0
  109. package/lib/profiles/server/server.d.ts +4 -0
  110. package/lib/profiles/server/server.d.ts.map +1 -0
  111. package/lib/profiles/server/server.js +32 -0
  112. package/lib/profiles/server/server.js.map +1 -0
  113. package/lib/projects/index.d.ts +3 -0
  114. package/lib/projects/index.d.ts.map +1 -0
  115. package/lib/projects/index.js +17 -0
  116. package/lib/projects/index.js.map +1 -0
  117. package/lib/run/executor.d.ts +22 -0
  118. package/lib/run/executor.d.ts.map +1 -0
  119. package/lib/run/executor.js +182 -0
  120. package/lib/run/executor.js.map +1 -0
  121. package/lib/run/index.d.ts +3 -0
  122. package/lib/run/index.d.ts.map +1 -0
  123. package/lib/run/index.js +192 -0
  124. package/lib/run/index.js.map +1 -0
  125. package/lib/runs/index.d.ts +3 -0
  126. package/lib/runs/index.d.ts.map +1 -0
  127. package/lib/runs/index.js +48 -0
  128. package/lib/runs/index.js.map +1 -0
  129. package/lib/utils/console.d.ts +42 -0
  130. package/lib/utils/console.d.ts.map +1 -0
  131. package/lib/utils/console.js +256 -0
  132. package/lib/utils/console.js.map +1 -0
  133. package/lib/utils/stdio.d.ts +7 -0
  134. package/lib/utils/stdio.d.ts.map +1 -0
  135. package/lib/utils/stdio.js +35 -0
  136. package/lib/utils/stdio.js.map +1 -0
  137. package/lib/workflows/commands.d.ts +14 -0
  138. package/lib/workflows/commands.d.ts.map +1 -0
  139. package/lib/workflows/commands.js +232 -0
  140. package/lib/workflows/commands.js.map +1 -0
  141. package/lib/workflows/index.d.ts +3 -0
  142. package/lib/workflows/index.d.ts.map +1 -0
  143. package/lib/workflows/index.js +117 -0
  144. package/lib/workflows/index.js.map +1 -0
  145. package/lib/workflows/json-loader.d.ts +3 -0
  146. package/lib/workflows/json-loader.d.ts.map +1 -0
  147. package/lib/workflows/json-loader.js +16 -0
  148. package/lib/workflows/json-loader.js.map +1 -0
  149. package/lib/workflows/streams.d.ts +2 -0
  150. package/lib/workflows/streams.d.ts.map +1 -0
  151. package/lib/workflows/streams.js +419 -0
  152. package/lib/workflows/streams.js.map +1 -0
  153. package/lib/workflows/ts-loader.d.ts +3 -0
  154. package/lib/workflows/ts-loader.d.ts.map +1 -0
  155. package/lib/workflows/ts-loader.js +94 -0
  156. package/lib/workflows/ts-loader.js.map +1 -0
  157. package/lib/workflows/validation.d.ts +6 -0
  158. package/lib/workflows/validation.d.ts.map +1 -0
  159. package/lib/workflows/validation.js +22 -0
  160. package/lib/workflows/validation.js.map +1 -0
  161. package/package.json +71 -71
@@ -0,0 +1,11 @@
1
+ export declare enum PublishMode {
2
+ Push = 1,
3
+ Deploy = 2,
4
+ PushAndDeploy = 3
5
+ }
6
+ export declare function publish(version: string, mode: PublishMode): Promise<void>;
7
+ export declare function build(contextDir?: string): Promise<void>;
8
+ export declare function release(version: string): Promise<void>;
9
+ export declare function run(version?: string): void;
10
+ export declare function listVersions(): Promise<void>;
11
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/agent/commands.ts"],"names":[],"mappings":"AAYA,oBAAY,WAAW;IACnB,IAAI,IAAI;IACR,MAAM,IAAI;IACV,aAAa,IAAI;CACpB;AA0CD,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,iBAiB/D;AAED,wBAAsB,KAAK,CAAC,UAAU,SAAM,iBAgB3C;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,iBAU5C;AAED,wBAAgB,GAAG,CAAC,OAAO,GAAE,MAAuB,QAmBnD;AAED,wBAAsB,YAAY,kBAmCjC"}
@@ -0,0 +1,173 @@
1
+ import colors from "ansi-colors";
2
+ import fs from "fs";
3
+ import os from "os";
4
+ import { join } from "path";
5
+ import { getClient } from "../client.js";
6
+ import { config, getCloudTypeFromConfigUrl } from "../profiles/index.js";
7
+ import { runDocker, runDockerWithAgentConfig, runDockerWithOutput } from "./docker.js";
8
+ import { AgentProject } from './project.js';
9
+ import { tryRefreshProjectToken } from './refresh.js';
10
+ import { updateNpmrc } from "./registry.js";
11
+ import { validateVersion } from './version.js';
12
+ export var PublishMode;
13
+ (function (PublishMode) {
14
+ PublishMode[PublishMode["Push"] = 1] = "Push";
15
+ PublishMode[PublishMode["Deploy"] = 2] = "Deploy";
16
+ PublishMode[PublishMode["PushAndDeploy"] = 3] = "PushAndDeploy";
17
+ })(PublishMode || (PublishMode = {}));
18
+ function shouldDeploy(mode) {
19
+ return mode & PublishMode.Deploy;
20
+ }
21
+ function shouldPush(mode) {
22
+ return mode & PublishMode.Push;
23
+ }
24
+ // we need to build for the linux/amd64 platform (this is the platform used in Vertesia k8s)
25
+ const TARGET_PLATFORM = "linux/amd64";
26
+ const LATEST_VERSION = "latest";
27
+ async function pushImage(project, version) {
28
+ // we need to refresh the profile token if needed since
29
+ // the docker credentials helper are connecting to studio.
30
+ // this will refresh the profile token if needed by asking the user to reconnect
31
+ await tryRefreshProjectToken(project);
32
+ const localTag = project.getLocalDockerTag(version);
33
+ const remoteTag = project.getVertesiaDockerTag(version);
34
+ // push the image to the registry
35
+ console.log(`Pushing docker image ${remoteTag}`);
36
+ runDocker(['tag', localTag, remoteTag]);
37
+ runDockerWithAgentConfig(['push', remoteTag]);
38
+ }
39
+ async function triggerDeploy(profile, project, version) {
40
+ const environment = getCloudTypeFromConfigUrl(profile.config_url);
41
+ const client = getClient();
42
+ const agentId = project.getAgentId();
43
+ console.log(`Deploy agent ${agentId}:${version} to ${environment}`);
44
+ await client.store.agents.deploy({
45
+ environment,
46
+ agentId: project.getAgentId(),
47
+ version,
48
+ });
49
+ }
50
+ export async function publish(version, mode) {
51
+ if (!validateVersion(version)) {
52
+ console.log("Invalid version format: " + version + ". Use major.minor.patch[-modifier] format.");
53
+ process.exit(1);
54
+ }
55
+ if (!config.current) {
56
+ console.log("No active profile is defined.");
57
+ process.exit(1);
58
+ }
59
+ const profile = config.current;
60
+ const project = new AgentProject();
61
+ if (shouldPush(mode)) {
62
+ await pushImage(project, version);
63
+ }
64
+ if (shouldDeploy(mode)) {
65
+ await triggerDeploy(profile, project, version);
66
+ }
67
+ }
68
+ export async function build(contextDir = '.') {
69
+ const project = new AgentProject();
70
+ const refreshResult = await tryRefreshProjectToken(project);
71
+ if (refreshResult) {
72
+ await updateNpmrc(project, refreshResult.profile);
73
+ }
74
+ const tag = project.getLocalDockerTag(LATEST_VERSION);
75
+ const args = ['buildx', 'build', '--platform', TARGET_PLATFORM, '-t', tag];
76
+ if (contextDir !== '.') { // not the working directory
77
+ // use the dockerfile in the current working directory
78
+ args.push('-f', 'Dockerfile');
79
+ }
80
+ console.log(`Building docker image: ${tag}`);
81
+ runDocker([...args, contextDir]);
82
+ }
83
+ export async function release(version) {
84
+ if (!validateVersion(version)) {
85
+ console.log("Invalid version format: " + version + ". Use major.minor.patch[-modifier] format.");
86
+ process.exit(1);
87
+ }
88
+ const project = new AgentProject();
89
+ const latestTag = project.getLocalDockerTag(LATEST_VERSION);
90
+ const versionTag = project.getLocalDockerTag(version);
91
+ runDocker(['tag', latestTag, versionTag]);
92
+ }
93
+ export function run(version = LATEST_VERSION) {
94
+ if (version !== LATEST_VERSION && !validateVersion(version)) {
95
+ console.log("Invalid version format: " + version + ". Use major.minor.patch[-modifier] format.");
96
+ process.exit(1);
97
+ }
98
+ const project = new AgentProject();
99
+ const tag = project.getLocalDockerTag(version);
100
+ // we need to inject the .env file into the container
101
+ // and to get the google credentials needed by the worker
102
+ // TODO: the google credentials will only work with vertesia users ...
103
+ // we need to specify the target platform to force qemu emulation for user on other platforms
104
+ const args = ['run', '--platform', TARGET_PLATFORM, '--env-file', '.env'];
105
+ const googleCredsFile = getGoogleCredentialsFile();
106
+ if (googleCredsFile) {
107
+ args.push('-v', `${googleCredsFile}:/tmp/google-credentials.json`);
108
+ args.push('-e', 'GOOGLE_APPLICATION_CREDENTIALS=/tmp/google-credentials.json');
109
+ }
110
+ args.push(tag);
111
+ runDocker(args);
112
+ }
113
+ export async function listVersions() {
114
+ const project = new AgentProject();
115
+ if (!project.packageJson.vertesia?.image) {
116
+ console.error("Invalid package.json. Missing vertesia.image configuration.");
117
+ process.exit(1);
118
+ }
119
+ const out = runDockerWithOutput(["images", "--format", "{{.Repository}}:{{.Tag}}"]);
120
+ const lines = out.trim().split('\n');
121
+ const localTagPrefix = project.getLocalDockerTag("");
122
+ const remoteTagPrefix = project.getVertesiaDockerTag("");
123
+ const localTags = {};
124
+ const remoteTags = {};
125
+ const versions = new Set();
126
+ for (const line of lines) {
127
+ const i = line.indexOf(':');
128
+ if (i > 0) {
129
+ const name = line.substring(0, i);
130
+ const version = line.substring(i + 1);
131
+ if (line.startsWith(localTagPrefix)) {
132
+ localTags[version] = { version, name };
133
+ versions.add(version);
134
+ }
135
+ else if (line.startsWith(remoteTagPrefix)) {
136
+ remoteTags[version] = { version, name };
137
+ versions.add(version);
138
+ } // else ignore
139
+ }
140
+ }
141
+ versions.delete(LATEST_VERSION);
142
+ printVersion(LATEST_VERSION, localTags[LATEST_VERSION], remoteTags[LATEST_VERSION]);
143
+ // sort desc
144
+ Array.from(versions).sort((a, b) => b.localeCompare(a)).forEach(v => {
145
+ printVersion(v, localTags[v], remoteTags[v]);
146
+ });
147
+ }
148
+ function printVersion(version, local, remote) {
149
+ if (!local && !remote)
150
+ return;
151
+ const isLatest = version === LATEST_VERSION;
152
+ console.log(colors.bold(isLatest ? version : `v${version}`));
153
+ console.log(`\t${colors.green("Local tag:")} ${local ? local.name + ':' + version : 'N/A'}`);
154
+ if (remote) {
155
+ console.log(`\t${colors.green("published to:")} ${remote.name}:${version}`);
156
+ }
157
+ else if (isLatest) {
158
+ console.log(colors.dim("\tcannot be published"));
159
+ }
160
+ else {
161
+ console.log(colors.dim("\tnot published"));
162
+ }
163
+ }
164
+ function getGoogleCredentialsFile() {
165
+ const file = join(os.homedir(), '.config/gcloud/application_default_credentials.json');
166
+ if (fs.existsSync(file)) {
167
+ return file;
168
+ }
169
+ else {
170
+ return null;
171
+ }
172
+ }
173
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/agent/commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ interface ConnectOptions {
2
+ nonInteractive?: boolean;
3
+ profile?: string;
4
+ }
5
+ export declare function connectToProject(options: ConnectOptions): Promise<void>;
6
+ export {};
7
+ //# sourceMappingURL=connect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/agent/connect.ts"],"names":[],"mappings":"AASA,UAAU,cAAc;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AACD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,cAAc,iBAwC7D"}
@@ -0,0 +1,68 @@
1
+ import enquirer from "enquirer";
2
+ import { createProfile, updateProfile } from "../profiles/commands.js";
3
+ import { config, shouldRefreshProfileToken } from "../profiles/index.js";
4
+ import { AgentProject } from "./project.js";
5
+ import { updateNpmrc } from "./registry.js";
6
+ const { prompt } = enquirer;
7
+ export async function connectToProject(options) {
8
+ const allowInteraction = !options.nonInteractive;
9
+ const project = new AgentProject();
10
+ const pkg = project.packageJson;
11
+ let profileName = options.profile || pkg.vertesia.profile;
12
+ const onAuthenticationDone = async (result) => {
13
+ if (result) {
14
+ await updateNpmrc(project, result.profile);
15
+ }
16
+ };
17
+ try {
18
+ if (allowInteraction && !profileName) {
19
+ profileName = await askProfileName();
20
+ if (!profileName) {
21
+ // create a new profile
22
+ profileName = await createProfile(undefined, { onResult: onAuthenticationDone });
23
+ }
24
+ }
25
+ if (!profileName) {
26
+ console.log('Profile not specified. When using --non-interactive mode you may want to specify a profile');
27
+ process.exit(1);
28
+ }
29
+ const profile = config.getProfile(profileName);
30
+ if (!profile) {
31
+ console.log('Profile not found:', profileName);
32
+ process.exit(1);
33
+ }
34
+ if (allowInteraction && shouldRefreshProfileToken(profile, 10)) {
35
+ console.log("Refreshing auth token for profile:", profileName);
36
+ await updateProfile(profileName, onAuthenticationDone);
37
+ }
38
+ else {
39
+ await updateNpmrc(project, profileName);
40
+ }
41
+ }
42
+ finally {
43
+ if (pkg.vertesia.profile !== profileName) {
44
+ // save package.json
45
+ pkg.vertesia.profile = profileName;
46
+ pkg.save();
47
+ }
48
+ }
49
+ }
50
+ async function askProfileName() {
51
+ const profiles = config.profiles.map(p => p.name);
52
+ if (profiles.length > 0) {
53
+ const newProfile = 'Create new profile';
54
+ profiles.push(newProfile);
55
+ const answer = await prompt({
56
+ name: 'profile',
57
+ type: 'select',
58
+ message: "Select a profile to use when connecting.",
59
+ initial: profiles.length - 1,
60
+ choices: profiles,
61
+ });
62
+ if (newProfile !== answer.profile) {
63
+ return answer.profile; // use existing
64
+ }
65
+ }
66
+ return undefined; // create new profile
67
+ }
68
+ //# sourceMappingURL=connect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/agent/connect.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEzE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;AAM5B,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAuB;IAC1D,MAAM,gBAAgB,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC;IACjD,MAAM,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;IACnC,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;IAChC,IAAI,WAAW,GAAuB,OAAO,CAAC,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;IAC9E,MAAM,oBAAoB,GAAG,KAAK,EAAE,MAAgC,EAAE,EAAE;QACpE,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/C,CAAC;IACL,CAAC,CAAA;IACD,IAAI,CAAC;QACD,IAAI,gBAAgB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnC,WAAW,GAAG,MAAM,cAAc,EAAE,CAAC;YACrC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACf,uBAAuB;gBACvB,WAAW,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAC,CAAC;YACrF,CAAC;QACL,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,4FAA4F,CAAC,CAAC;YAC1G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QACD,IAAI,gBAAgB,IAAI,yBAAyB,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE,WAAW,CAAC,CAAC;YAC/D,MAAM,aAAa,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;QAC3D,CAAC;aAAM,CAAC;YACJ,MAAM,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC5C,CAAC;IACL,CAAC;YAAS,CAAC;QACP,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;YACvC,oBAAoB;YACpB,GAAG,CAAC,QAAQ,CAAC,OAAO,GAAG,WAAW,CAAC;YACnC,GAAG,CAAC,IAAI,EAAE,CAAC;QACf,CAAC;IACL,CAAC;AACL,CAAC;AAED,KAAK,UAAU,cAAc;IACzB,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,UAAU,GAAG,oBAAoB,CAAC;QACxC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1B,MAAM,MAAM,GAAwB,MAAM,MAAM,CAAC;YAC7C,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,0CAA0C;YACnD,OAAO,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC;YAC5B,OAAO,EAAE,QAAQ;SACpB,CAAC,CAAC;QACH,IAAI,UAAU,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC;YAChC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,eAAe;QAC1C,CAAC;IACL,CAAC;IACD,OAAO,SAAS,CAAC,CAAC,qBAAqB;AAC3C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=docker-credential.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker-credential.d.ts","sourceRoot":"","sources":["../../src/agent/docker-credential.ts"],"names":[],"mappings":""}
@@ -0,0 +1,50 @@
1
+ import { getDockerCredentials } from "./docker.js";
2
+ import fs from "node:fs";
3
+ // Function to handle other commands (`store`, `erase`, `list`)
4
+ function handleNoOp() {
5
+ // Docker expects these commands to exit with 0
6
+ process.exit(0);
7
+ }
8
+ // Function to handle the `get` command
9
+ async function handleGet(serverUrl) {
10
+ // we support us-docker.pkg.dev for now
11
+ if (!serverUrl.endsWith("-docker.pkg.dev")) {
12
+ process.exit(0); // ignore
13
+ }
14
+ try {
15
+ const credentials = await getDockerCredentials(serverUrl);
16
+ if (process.env.DEBUG_DOCKER_CREDS) {
17
+ fs.writeFileSync("./docker-creds-helper.log", "Get token for registry " + serverUrl + " => " + JSON.stringify(credentials, null, 2), "utf8");
18
+ }
19
+ process.stdout.write(JSON.stringify(credentials));
20
+ }
21
+ catch (error) {
22
+ fs.writeFileSync("./docker-creds-helper-error.log", "Get token for registry " + serverUrl + " => " + JSON.stringify(error, null, 2), "utf8");
23
+ console.error("Error fetching credentials:", error.message);
24
+ process.exit(1);
25
+ }
26
+ }
27
+ // Main function to handle input
28
+ function main() {
29
+ const command = process.argv[2];
30
+ if (!command) {
31
+ console.error("No command provided");
32
+ process.exit(1);
33
+ }
34
+ switch (command) {
35
+ case "get":
36
+ const stdin = fs.readFileSync(0, "utf-8");
37
+ handleGet(stdin.trim());
38
+ break;
39
+ case "store":
40
+ case "erase":
41
+ case "list":
42
+ handleNoOp();
43
+ break;
44
+ default:
45
+ console.error(`Unknown command: ${command}`);
46
+ process.exit(1);
47
+ }
48
+ }
49
+ main();
50
+ //# sourceMappingURL=docker-credential.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker-credential.js","sourceRoot":"","sources":["../../src/agent/docker-credential.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,+DAA+D;AAC/D,SAAS,UAAU;IACf,+CAA+C;IAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,uCAAuC;AACvC,KAAK,UAAU,SAAS,CAAC,SAAiB;IACtC,uCAAuC;IACvC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;IAC9B,CAAC;IACD,IAAI,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAC1D,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;YACjC,EAAE,CAAC,aAAa,CAAC,2BAA2B,EAAE,yBAAyB,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACjJ,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QAClB,EAAE,CAAC,aAAa,CAAC,iCAAiC,EAAE,yBAAyB,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC7I,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC;AAGD,gCAAgC;AAChC,SAAS,IAAI;IACT,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEhC,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,QAAQ,OAAO,EAAE,CAAC;QACd,KAAK,KAAK;YACN,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAC1C,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACxB,MAAM;QAEV,KAAK,OAAO,CAAC;QACb,KAAK,OAAO,CAAC;QACb,KAAK,MAAM;YACP,UAAU,EAAE,CAAC;YACb,MAAM;QAEV;YACI,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;AACL,CAAC;AAED,IAAI,EAAE,CAAC"}
@@ -0,0 +1,10 @@
1
+ export declare function generateDockerConfig(): string;
2
+ export declare function getDockerCredentials(serverUrl: string): Promise<{
3
+ ServerURL: string;
4
+ Username: string;
5
+ Secret: string;
6
+ }>;
7
+ export declare function runDockerWithAgentConfig(args: string[]): import("child_process").SpawnSyncReturns<Buffer<ArrayBufferLike>>;
8
+ export declare function runDocker(args: string[]): import("child_process").SpawnSyncReturns<Buffer<ArrayBufferLike>>;
9
+ export declare function runDockerWithOutput(args: string[]): string;
10
+ //# sourceMappingURL=docker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../src/agent/docker.ts"],"names":[],"mappings":"AAWA,wBAAgB,oBAAoB,WAMnC;AAeD,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,MAAM;;;;GAO3D;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,qEAOtD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,qEA0BvC;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,UA0BjD"}
@@ -0,0 +1,93 @@
1
+ import ansiColors from "ansi-colors";
2
+ import { spawnSync } from "node:child_process";
3
+ import { existsSync } from "node:fs";
4
+ import { join } from "node:path";
5
+ import { getClient } from "../client.js";
6
+ import { config } from "../profiles/index.js";
7
+ import { AgentProject } from "./project.js";
8
+ const LOCAL_DOCKER_CONFIG_DIR = '.docker';
9
+ export function generateDockerConfig() {
10
+ return JSON.stringify({
11
+ "credHelpers": {
12
+ "us-central1-docker.pkg.dev": "vertesia"
13
+ }
14
+ }, undefined, 2);
15
+ }
16
+ async function getGoogleToken(pkgDir) {
17
+ const project = new AgentProject(pkgDir);
18
+ const pkg = project.packageJson;
19
+ if (!pkg.vertesia.profile) {
20
+ throw new Error("Profile entry not found in package.json");
21
+ }
22
+ config.use(pkg.vertesia.profile); // will exit if profile not found
23
+ const client = getClient();
24
+ const r = await client.account.getGoogleToken();
25
+ return r.token;
26
+ }
27
+ export async function getDockerCredentials(serverUrl) {
28
+ const token = await getGoogleToken();
29
+ return {
30
+ ServerURL: serverUrl,
31
+ Username: "oauth2accesstoken",
32
+ Secret: token,
33
+ };
34
+ }
35
+ export function runDockerWithAgentConfig(args) {
36
+ const config = join(process.cwd(), LOCAL_DOCKER_CONFIG_DIR);
37
+ const baseArgs = [];
38
+ if (existsSync(config)) {
39
+ baseArgs.push("--config", config);
40
+ }
41
+ return runDocker(baseArgs.concat(args));
42
+ }
43
+ export function runDocker(args) {
44
+ const verbose = process.argv.includes("--verbose");
45
+ if (verbose) {
46
+ const cmd = `docker ${args.join(' ')}`;
47
+ console.log(`Running: ${ansiColors.magenta(cmd)}`);
48
+ }
49
+ const r = spawnSync('docker', args, {
50
+ stdio: 'inherit',
51
+ env: {
52
+ ...process.env,
53
+ DOCKER_BUILDKIT: "1"
54
+ }
55
+ });
56
+ // check for errors
57
+ if (r.error) {
58
+ console.error(`Failed to execute command "docker ${args.join(' ')}":`, r.error);
59
+ process.exit(2);
60
+ }
61
+ // Check for non-zero exit code
62
+ if (r.status !== 0) {
63
+ console.error(`Command "docker ${args.join(' ')}" failed with exit code ${r.status}`);
64
+ process.exit(r.status ?? 1);
65
+ }
66
+ return r;
67
+ }
68
+ export function runDockerWithOutput(args) {
69
+ const verbose = process.argv.includes("--verbose");
70
+ if (verbose) {
71
+ const cmd = `docker ${args.join(' ')}`;
72
+ console.log(`Running: ${ansiColors.magenta(cmd)}`);
73
+ }
74
+ const r = spawnSync('docker', args, {
75
+ encoding: 'utf-8',
76
+ env: {
77
+ ...process.env,
78
+ DOCKER_BUILDKIT: "1"
79
+ }
80
+ });
81
+ // check for errors
82
+ if (r.error) {
83
+ console.error(`Failed to execute command "docker ${args.join(' ')}":`, r.error);
84
+ process.exit(2);
85
+ }
86
+ // Check for non-zero exit code
87
+ if (r.status !== 0) {
88
+ console.error(`Command "docker ${args.join(' ')}" failed with exit code ${r.status}\n${r.stderr}`);
89
+ process.exit(r.status ?? 1);
90
+ }
91
+ return r.stdout.trim();
92
+ }
93
+ //# sourceMappingURL=docker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/agent/docker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerAgentCommand(program: Command): void;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,QA2FpD"}
@@ -0,0 +1,89 @@
1
+ import { build, listVersions, publish, PublishMode, release, run } from "./commands.js";
2
+ import { connectToProject } from "./connect.js";
3
+ import { getGooglePrincipal, getGoogleToken } from "./registry.js";
4
+ export function registerAgentCommand(program) {
5
+ const agent = program.command("agent");
6
+ agent.command("connect [pkgDir]")
7
+ .description("Connect a node package to a Vertesia project. If no packageDir is specified the current dir will be used.")
8
+ .option("-I, --non-interactive", "Don't do interactions with the user. Assume the user is already authenticated.")
9
+ .option("-p, --profile [profile]", "The profile name to use. If not specified the one from the package.json will be used.")
10
+ .action(async (pkgDir, options = {}) => {
11
+ if (pkgDir) {
12
+ process.chdir(pkgDir);
13
+ }
14
+ await connectToProject(options);
15
+ });
16
+ agent.command("publish <version>")
17
+ .description("Deploy a custom workflow worker. The user will be asked for a target image version.")
18
+ .option("-d, --dir [project_dir]", "Use this as the current directory.")
19
+ .option("--push-only", "If used the docker image will be push only. The deployment will not be triggered.")
20
+ .option("--deploy-only", "If used the docker is assumed to be already pushed and only the deploy will be triggered.")
21
+ .option("--verbose", "Print more information.")
22
+ //.option("-p, --profile [profile]", "The profile name to use. If not specified the one from the package.json will be used.")
23
+ .action(async (version, options = {}) => {
24
+ if (options.dir) {
25
+ process.chdir(options.dir);
26
+ }
27
+ let mode;
28
+ if (options.pushOnly) {
29
+ mode = PublishMode.Push;
30
+ }
31
+ else if (options.deployOnly) {
32
+ mode = PublishMode.Deploy;
33
+ }
34
+ else {
35
+ mode = PublishMode.PushAndDeploy;
36
+ }
37
+ await publish(version, mode);
38
+ });
39
+ agent.command("build")
40
+ .description("Build a local docker image using 'latest' as version.")
41
+ .option("-d, --dir [project_dir]", "Use this as the current directory.")
42
+ .option("-c, --context [context]", "The docker build context to use. Defaults to the project directory.")
43
+ .option("--verbose", "Print more information.")
44
+ .action(async (options) => {
45
+ if (options.dir) {
46
+ process.chdir(options.dir);
47
+ }
48
+ await build(options.context);
49
+ });
50
+ agent.command("release [version]")
51
+ .description("Promote the latest version to a named version (tag it).")
52
+ .option("-d, --dir [project_dir]", "Use this as the current directory.")
53
+ .option("--verbose", "Print more information.")
54
+ .action(async (version, options) => {
55
+ if (options.dir) {
56
+ process.chdir(options.dir);
57
+ }
58
+ await release(version);
59
+ });
60
+ agent.command("run [version]")
61
+ .description("Run the docker image identified by the given version or the 'latest' version if no version is given.")
62
+ .option("-d, --dir [project_dir]", "Use this as the current directory.")
63
+ .option("--verbose", "Print more information.")
64
+ .action(async (version, options) => {
65
+ if (options.dir) {
66
+ process.chdir(options.dir);
67
+ }
68
+ await run(version);
69
+ });
70
+ agent.command("versions")
71
+ .description("List existing versions.")
72
+ .option("--verbose", "Print more information.")
73
+ .action(async (_options) => {
74
+ await listVersions();
75
+ });
76
+ agent.command("gtoken")
77
+ .description("Get a google cloud token for the current vertesia project.")
78
+ .option("-p, --profile", "The profile name to use. If specified it will be used instead of the current profile.")
79
+ .action(async (options = {}) => {
80
+ await getGoogleToken(program, options.profile);
81
+ });
82
+ agent.command("gprincipal")
83
+ .description("Get the google cloud principal for the current project.")
84
+ .option("-p, --profile", "The profile name to use. If specified it will be used instead of the current profile.")
85
+ .action(async (options = {}) => {
86
+ await getGooglePrincipal(program, options.profile);
87
+ });
88
+ }
89
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Manage docker images:
3
+ * - build the latest image: vertesia agent build => agent_org/agent_name:latest
4
+ * - promote the latest build to a version => vertesia agent release 1.0.0 => agent_org/agent_name:1.0.0
5
+ * - list available versions => vertesia agent versions --remote
6
+ * - publish a specific image version => vertesia agent publish 1.0.0
7
+ */
8
+ export interface AgentConfig {
9
+ profile?: string;
10
+ pm?: string;
11
+ image?: {
12
+ repository: string;
13
+ organization: string;
14
+ name: string;
15
+ };
16
+ }
17
+ export interface AgentPackageJson {
18
+ name: string;
19
+ version: string;
20
+ vertesia?: AgentConfig;
21
+ }
22
+ export declare class PackageJson implements AgentPackageJson {
23
+ file: string;
24
+ data: Record<string, any>;
25
+ constructor(file: string, data: Record<string, any>);
26
+ get name(): string;
27
+ set name(value: string);
28
+ get version(): string;
29
+ set version(value: string);
30
+ get pm(): any;
31
+ get profile(): string;
32
+ set profile(value: string);
33
+ getAgentId(): string;
34
+ getLocalDockerTag(version: string): string;
35
+ getVertesiaDockerTag(version: string): string;
36
+ get latestPublishedVersion(): string;
37
+ set latestPublishedVersion(version: string);
38
+ get vertesia(): any;
39
+ set vertesia(value: any);
40
+ save(): void;
41
+ }
42
+ export declare class AgentProject {
43
+ dir: string;
44
+ packageJsonFile: string;
45
+ _pkg?: PackageJson;
46
+ constructor(pkgDir?: string);
47
+ get npmrcFile(): string;
48
+ get dockerConfigFile(): string;
49
+ get packageJson(): PackageJson;
50
+ getAgentId(): string;
51
+ getVertesiaDockerTag(version: string): string;
52
+ getLocalDockerTag(version: string): string;
53
+ /**
54
+ * Build the project sources using the configured package manager.
55
+ */
56
+ buildSources(): void;
57
+ }
58
+ //# sourceMappingURL=project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/agent/project.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH,MAAM,WAAW,WAAW;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE;QACJ,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;KAChB,CAAA;CACJ;AAED,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,WAAW,CAAC;CAC1B;AAED,qBAAa,WAAY,YAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM;IAAS,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;gBAA9C,IAAI,EAAE,MAAM,EAAS,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAMjE,IAAI,IAAI,IAIQ,MAAM,CAFrB;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAErB;IAED,IAAI,OAAO,IAIQ,MAAM,CAFxB;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAExB;IAED,IAAI,EAAE,QAEL;IAED,IAAI,OAAO,IAIQ,MAAM,CAFxB;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAExB;IAED,UAAU;IASV,iBAAiB,CAAC,OAAO,EAAE,MAAM;IAKjC,oBAAoB,CAAC,OAAO,EAAE,MAAM;IASpC,IAAI,sBAAsB,IAIU,MAAM,CAFzC;IAED,IAAI,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAEzC;IAED,IAAI,QAAQ,IAIQ,GAAG,CAFtB;IAED,IAAI,QAAQ,CAAC,KAAK,EAAE,GAAG,EAEtB;IAED,IAAI;CAGP;AAED,qBAAa,YAAY;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,WAAW,CAAC;gBAEP,MAAM,CAAC,EAAE,MAAM;IAkB3B,IAAI,SAAS,WAEZ;IAED,IAAI,gBAAgB,WAEnB;IAED,IAAI,WAAW,gBAMd;IAED,UAAU;IAIV,oBAAoB,CAAC,OAAO,EAAE,MAAM;IAIpC,iBAAiB,CAAC,OAAO,EAAE,MAAM;IAIjC;;OAEG;IACH,YAAY;CAQf"}