@osva-ai/cli 1.1.0-rc.1 → 1.1.0-rc.2

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 (196) hide show
  1. package/README.md +178 -0
  2. package/dist/bin/osva.js +83 -5
  3. package/dist/bin/osva.js.map +1 -1
  4. package/dist/commands/index.js +13 -1
  5. package/dist/commands/index.js.map +1 -1
  6. package/dist/doctor/format.d.ts +4 -0
  7. package/dist/doctor/format.d.ts.map +1 -0
  8. package/dist/doctor/format.js +18 -0
  9. package/dist/doctor/format.js.map +1 -0
  10. package/dist/doctor/http-probe.d.ts +17 -0
  11. package/dist/doctor/http-probe.d.ts.map +1 -0
  12. package/dist/doctor/http-probe.js +104 -0
  13. package/dist/doctor/http-probe.js.map +1 -0
  14. package/dist/doctor/index.d.ts +7 -0
  15. package/dist/doctor/index.d.ts.map +1 -0
  16. package/dist/doctor/index.js +15 -0
  17. package/dist/doctor/index.js.map +1 -0
  18. package/dist/doctor/read-env.d.ts +3 -0
  19. package/dist/doctor/read-env.d.ts.map +1 -0
  20. package/dist/doctor/read-env.js +27 -0
  21. package/dist/doctor/read-env.js.map +1 -0
  22. package/dist/doctor/redact.d.ts +2 -0
  23. package/dist/doctor/redact.d.ts.map +1 -0
  24. package/dist/doctor/redact.js +10 -0
  25. package/dist/doctor/redact.js.map +1 -0
  26. package/dist/doctor/run-doctor.d.ts +6 -0
  27. package/dist/doctor/run-doctor.d.ts.map +1 -0
  28. package/dist/doctor/run-doctor.js +250 -0
  29. package/dist/doctor/run-doctor.js.map +1 -0
  30. package/dist/doctor/types.d.ts +22 -0
  31. package/dist/doctor/types.d.ts.map +1 -0
  32. package/dist/doctor/types.js +2 -0
  33. package/dist/doctor/types.js.map +1 -0
  34. package/dist/exit.d.ts +7 -0
  35. package/dist/exit.d.ts.map +1 -0
  36. package/dist/exit.js +9 -0
  37. package/dist/exit.js.map +1 -0
  38. package/dist/init/index.d.ts +7 -0
  39. package/dist/init/index.d.ts.map +1 -0
  40. package/dist/init/index.js +40 -0
  41. package/dist/init/index.js.map +1 -0
  42. package/dist/init/resolve-target.d.ts +2 -0
  43. package/dist/init/resolve-target.d.ts.map +1 -0
  44. package/dist/init/resolve-target.js +15 -0
  45. package/dist/init/resolve-target.js.map +1 -0
  46. package/dist/init/run-init.d.ts +6 -0
  47. package/dist/init/run-init.d.ts.map +1 -0
  48. package/dist/init/run-init.js +34 -0
  49. package/dist/init/run-init.js.map +1 -0
  50. package/dist/init/scaffold.d.ts +6 -0
  51. package/dist/init/scaffold.d.ts.map +1 -0
  52. package/dist/init/scaffold.js +66 -0
  53. package/dist/init/scaffold.js.map +1 -0
  54. package/dist/init/template-root.d.ts +3 -0
  55. package/dist/init/template-root.d.ts.map +1 -0
  56. package/dist/init/template-root.js +8 -0
  57. package/dist/init/template-root.js.map +1 -0
  58. package/dist/init/template-vars.d.ts +4 -0
  59. package/dist/init/template-vars.d.ts.map +1 -0
  60. package/dist/init/template-vars.js +18 -0
  61. package/dist/init/template-vars.js.map +1 -0
  62. package/dist/init/types.d.ts +18 -0
  63. package/dist/init/types.d.ts.map +1 -0
  64. package/dist/init/types.js +2 -0
  65. package/dist/init/types.js.map +1 -0
  66. package/dist/init/validate-project-name.d.ts +3 -0
  67. package/dist/init/validate-project-name.d.ts.map +1 -0
  68. package/dist/init/validate-project-name.js +26 -0
  69. package/dist/init/validate-project-name.js.map +1 -0
  70. package/dist/project/compose-volume.d.ts +11 -0
  71. package/dist/project/compose-volume.d.ts.map +1 -0
  72. package/dist/project/compose-volume.js +66 -0
  73. package/dist/project/compose-volume.js.map +1 -0
  74. package/dist/project/deploy-env.d.ts +12 -0
  75. package/dist/project/deploy-env.d.ts.map +1 -0
  76. package/dist/project/deploy-env.js +50 -0
  77. package/dist/project/deploy-env.js.map +1 -0
  78. package/dist/project/ensure-agent-version.d.ts +17 -0
  79. package/dist/project/ensure-agent-version.d.ts.map +1 -0
  80. package/dist/project/ensure-agent-version.js +105 -0
  81. package/dist/project/ensure-agent-version.js.map +1 -0
  82. package/dist/project/errors.d.ts +10 -0
  83. package/dist/project/errors.d.ts.map +1 -0
  84. package/dist/project/errors.js +19 -0
  85. package/dist/project/errors.js.map +1 -0
  86. package/dist/project/format.d.ts +42 -0
  87. package/dist/project/format.d.ts.map +1 -0
  88. package/dist/project/format.js +66 -0
  89. package/dist/project/format.js.map +1 -0
  90. package/dist/project/index.d.ts +5 -0
  91. package/dist/project/index.d.ts.map +1 -0
  92. package/dist/project/index.js +101 -0
  93. package/dist/project/index.js.map +1 -0
  94. package/dist/project/install-trusted-runtime.d.ts +14 -0
  95. package/dist/project/install-trusted-runtime.d.ts.map +1 -0
  96. package/dist/project/install-trusted-runtime.js +82 -0
  97. package/dist/project/install-trusted-runtime.js.map +1 -0
  98. package/dist/project/load-manifest.d.ts +3 -0
  99. package/dist/project/load-manifest.d.ts.map +1 -0
  100. package/dist/project/load-manifest.js +13 -0
  101. package/dist/project/load-manifest.js.map +1 -0
  102. package/dist/project/manifest.d.ts +4 -0
  103. package/dist/project/manifest.d.ts.map +1 -0
  104. package/dist/project/manifest.js +12 -0
  105. package/dist/project/manifest.js.map +1 -0
  106. package/dist/project/parse-run-input.d.ts +6 -0
  107. package/dist/project/parse-run-input.d.ts.map +1 -0
  108. package/dist/project/parse-run-input.js +43 -0
  109. package/dist/project/parse-run-input.js.map +1 -0
  110. package/dist/project/poll.d.ts +15 -0
  111. package/dist/project/poll.d.ts.map +1 -0
  112. package/dist/project/poll.js +32 -0
  113. package/dist/project/poll.js.map +1 -0
  114. package/dist/project/run-deploy.d.ts +16 -0
  115. package/dist/project/run-deploy.d.ts.map +1 -0
  116. package/dist/project/run-deploy.js +142 -0
  117. package/dist/project/run-deploy.js.map +1 -0
  118. package/dist/project/run-run.d.ts +17 -0
  119. package/dist/project/run-run.d.ts.map +1 -0
  120. package/dist/project/run-run.js +203 -0
  121. package/dist/project/run-run.js.map +1 -0
  122. package/dist/project/run-status.d.ts +15 -0
  123. package/dist/project/run-status.d.ts.map +1 -0
  124. package/dist/project/run-status.js +122 -0
  125. package/dist/project/run-status.js.map +1 -0
  126. package/dist/project/sdk-error.d.ts +10 -0
  127. package/dist/project/sdk-error.d.ts.map +1 -0
  128. package/dist/project/sdk-error.js +49 -0
  129. package/dist/project/sdk-error.js.map +1 -0
  130. package/dist/project/state.d.ts +28 -0
  131. package/dist/project/state.d.ts.map +1 -0
  132. package/dist/project/state.js +54 -0
  133. package/dist/project/state.js.map +1 -0
  134. package/dist/project/workspace-context.d.ts +6 -0
  135. package/dist/project/workspace-context.d.ts.map +1 -0
  136. package/dist/project/workspace-context.js +25 -0
  137. package/dist/project/workspace-context.js.map +1 -0
  138. package/dist/stdout.d.ts +3 -0
  139. package/dist/stdout.d.ts.map +1 -0
  140. package/dist/stdout.js +27 -0
  141. package/dist/stdout.js.map +1 -0
  142. package/dist/tsconfig.tsbuildinfo +1 -1
  143. package/dist/validate/canonical-json.d.ts +2 -0
  144. package/dist/validate/canonical-json.d.ts.map +1 -0
  145. package/dist/validate/canonical-json.js +17 -0
  146. package/dist/validate/canonical-json.js.map +1 -0
  147. package/dist/validate/exit-code.d.ts +3 -0
  148. package/dist/validate/exit-code.d.ts.map +1 -0
  149. package/dist/validate/exit-code.js +4 -0
  150. package/dist/validate/exit-code.js.map +1 -0
  151. package/dist/validate/format.d.ts +4 -0
  152. package/dist/validate/format.d.ts.map +1 -0
  153. package/dist/validate/format.js +23 -0
  154. package/dist/validate/format.js.map +1 -0
  155. package/dist/validate/index.d.ts +6 -0
  156. package/dist/validate/index.d.ts.map +1 -0
  157. package/dist/validate/index.js +29 -0
  158. package/dist/validate/index.js.map +1 -0
  159. package/dist/validate/integrity.d.ts +4 -0
  160. package/dist/validate/integrity.d.ts.map +1 -0
  161. package/dist/validate/integrity.js +24 -0
  162. package/dist/validate/integrity.js.map +1 -0
  163. package/dist/validate/json-schema-draft.d.ts +8 -0
  164. package/dist/validate/json-schema-draft.d.ts.map +1 -0
  165. package/dist/validate/json-schema-draft.js +32 -0
  166. package/dist/validate/json-schema-draft.js.map +1 -0
  167. package/dist/validate/project-config.d.ts +24 -0
  168. package/dist/validate/project-config.d.ts.map +1 -0
  169. package/dist/validate/project-config.js +27 -0
  170. package/dist/validate/project-config.js.map +1 -0
  171. package/dist/validate/resolve-project-dir.d.ts +12 -0
  172. package/dist/validate/resolve-project-dir.d.ts.map +1 -0
  173. package/dist/validate/resolve-project-dir.js +27 -0
  174. package/dist/validate/resolve-project-dir.js.map +1 -0
  175. package/dist/validate/run-validate.d.ts +3 -0
  176. package/dist/validate/run-validate.d.ts.map +1 -0
  177. package/dist/validate/run-validate.js +278 -0
  178. package/dist/validate/run-validate.js.map +1 -0
  179. package/dist/validate/safe-path.d.ts +4 -0
  180. package/dist/validate/safe-path.d.ts.map +1 -0
  181. package/dist/validate/safe-path.js +42 -0
  182. package/dist/validate/safe-path.js.map +1 -0
  183. package/dist/validate/types.d.ts +14 -0
  184. package/dist/validate/types.d.ts.map +1 -0
  185. package/dist/validate/types.js +2 -0
  186. package/dist/validate/types.js.map +1 -0
  187. package/package.json +6 -3
  188. package/templates/agent-typescript/.gitignore +4 -0
  189. package/templates/agent-typescript/README.md.template +56 -0
  190. package/templates/agent-typescript/agent/agent.ts.template +25 -0
  191. package/templates/agent-typescript/contracts/input.v1.schema.json +12 -0
  192. package/templates/agent-typescript/contracts/output.v1.schema.json +12 -0
  193. package/templates/agent-typescript/osva-agent.project.json.template +21 -0
  194. package/templates/agent-typescript/package.json.template +16 -0
  195. package/templates/agent-typescript/scripts/build-manifest.mjs +53 -0
  196. package/templates/agent-typescript/tsconfig.json +19 -0
@@ -0,0 +1,18 @@
1
+ export interface InitTemplateVars {
2
+ readonly agentKey: string;
3
+ readonly agentName: string;
4
+ readonly packageName: string;
5
+ readonly entrypoint: string;
6
+ }
7
+ export interface InitSuccess {
8
+ readonly ok: true;
9
+ readonly projectName: string;
10
+ readonly projectDir: string;
11
+ readonly files: readonly string[];
12
+ }
13
+ export interface InitFailure {
14
+ readonly ok: false;
15
+ readonly error: string;
16
+ }
17
+ export type InitResult = InitSuccess | InitFailure;
18
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/init/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/init/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export declare function validateProjectName(projectName: string): void;
2
+ export declare function displayNameFromProjectName(projectName: string): string;
3
+ //# sourceMappingURL=validate-project-name.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-project-name.d.ts","sourceRoot":"","sources":["../../src/init/validate-project-name.ts"],"names":[],"mappings":"AAEA,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAsB7D;AAED,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAMtE"}
@@ -0,0 +1,26 @@
1
+ const PROJECT_NAME_PATTERN = /^[a-z][a-z0-9-]*[a-z0-9]$|^[a-z]$/;
2
+ export function validateProjectName(projectName) {
3
+ if (projectName.length === 0) {
4
+ throw new Error("Project name is required.");
5
+ }
6
+ if (projectName.length > 64) {
7
+ throw new Error("Project name must be at most 64 characters.");
8
+ }
9
+ if (projectName.includes("/") ||
10
+ projectName.includes("\\") ||
11
+ projectName.includes("..") ||
12
+ projectName.includes("\0")) {
13
+ throw new Error("Project name must not contain path separators or traversal segments.");
14
+ }
15
+ if (!PROJECT_NAME_PATTERN.test(projectName)) {
16
+ throw new Error("Project name must start with a lowercase letter and use only lowercase letters, digits, and hyphens.");
17
+ }
18
+ }
19
+ export function displayNameFromProjectName(projectName) {
20
+ return projectName
21
+ .split("-")
22
+ .filter((segment) => segment.length > 0)
23
+ .map((segment) => segment.charAt(0).toUpperCase() + segment.slice(1))
24
+ .join(" ");
25
+ }
26
+ //# sourceMappingURL=validate-project-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-project-name.js","sourceRoot":"","sources":["../../src/init/validate-project-name.ts"],"names":[],"mappings":"AAAA,MAAM,oBAAoB,GAAG,mCAAmC,CAAC;AAEjE,MAAM,UAAU,mBAAmB,CAAC,WAAmB;IACrD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,WAAW,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IACD,IACE,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC;QACzB,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC1B,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC1B,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC1B,CAAC;QACD,MAAM,IAAI,KAAK,CACb,sEAAsE,CACvE,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CACb,sGAAsG,CACvG,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,WAAmB;IAC5D,OAAO,WAAW;SACf,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;SACvC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACpE,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC"}
@@ -0,0 +1,11 @@
1
+ /** Declared volume key in `deploy/compose/compose.yml` (not the Docker volume name). */
2
+ export declare const COMPOSE_TRUSTED_RUNTIME_VOLUME_KEY = "osva-trusted-runtime";
3
+ export declare function resolveComposeProjectName(input: {
4
+ readonly osvaComposeProject?: string;
5
+ readonly composeProjectNameEnv?: string;
6
+ readonly composeFileNameField?: string;
7
+ }): string;
8
+ export declare function readComposeProjectNameFromFile(composeDir: string): Promise<string | undefined>;
9
+ export declare function parseComposeProjectNameField(composeYaml: string): string | undefined;
10
+ export declare function resolveComposeTrustedRuntimeVolume(projectName: string): string;
11
+ //# sourceMappingURL=compose-volume.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-volume.d.ts","sourceRoot":"","sources":["../../src/project/compose-volume.ts"],"names":[],"mappings":"AAMA,wFAAwF;AACxF,eAAO,MAAM,kCAAkC,yBAAyB,CAAC;AAEzE,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAC/C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACxC,GAAG,MAAM,CAcT;AAED,wBAAsB,8BAA8B,CAClD,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAI7B;AAED,wBAAgB,4BAA4B,CAC1C,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,SAAS,CAGpB;AAED,wBAAgB,kCAAkC,CAChD,WAAW,EAAE,MAAM,GAClB,MAAM,CAyCR"}
@@ -0,0 +1,66 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { spawnSync } from "node:child_process";
4
+ import { ProjectDeployError } from "./errors.js";
5
+ /** Declared volume key in `deploy/compose/compose.yml` (not the Docker volume name). */
6
+ export const COMPOSE_TRUSTED_RUNTIME_VOLUME_KEY = "osva-trusted-runtime";
7
+ export function resolveComposeProjectName(input) {
8
+ const explicit = input.osvaComposeProject?.trim();
9
+ if (explicit !== undefined && explicit.length > 0) {
10
+ return explicit;
11
+ }
12
+ const fromEnv = input.composeProjectNameEnv?.trim();
13
+ if (fromEnv !== undefined && fromEnv.length > 0) {
14
+ return fromEnv;
15
+ }
16
+ const fromFile = input.composeFileNameField?.trim();
17
+ if (fromFile !== undefined && fromFile.length > 0) {
18
+ return fromFile;
19
+ }
20
+ return "osva-self-hosted";
21
+ }
22
+ export async function readComposeProjectNameFromFile(composeDir) {
23
+ const composeFile = path.join(composeDir, "compose.yml");
24
+ const content = await readFile(composeFile, "utf8");
25
+ return parseComposeProjectNameField(content);
26
+ }
27
+ export function parseComposeProjectNameField(composeYaml) {
28
+ const match = composeYaml.match(/^name:\s*([^\s#]+)/m);
29
+ return match?.[1]?.trim();
30
+ }
31
+ export function resolveComposeTrustedRuntimeVolume(projectName) {
32
+ assertDockerAvailableForVolumeLookup();
33
+ const result = spawnSync("docker", [
34
+ "volume",
35
+ "ls",
36
+ "-q",
37
+ "--filter",
38
+ `label=com.docker.compose.project=${projectName}`,
39
+ "--filter",
40
+ `label=com.docker.compose.volume=${COMPOSE_TRUSTED_RUNTIME_VOLUME_KEY}`,
41
+ ], { encoding: "utf8", stdio: "pipe" });
42
+ if (result.status !== 0) {
43
+ throw new ProjectDeployError(`Failed to list Compose trusted-runtime volumes for project '${projectName}'. ${String(result.stderr).trim()}`);
44
+ }
45
+ const volumes = result.stdout
46
+ .split(/\r?\n/)
47
+ .map((line) => line.trim())
48
+ .filter((line) => line.length > 0);
49
+ if (volumes.length === 0) {
50
+ throw new ProjectDeployError(`No trusted-runtime Compose volume found for project '${projectName}'. Start deploy/compose (worker service) so volume '${COMPOSE_TRUSTED_RUNTIME_VOLUME_KEY}' exists. Set OSVA_COMPOSE_PROJECT or COMPOSE_PROJECT_NAME if you use a non-default project name.`);
51
+ }
52
+ if (volumes.length > 1) {
53
+ throw new ProjectDeployError(`Multiple trusted-runtime volumes match project '${projectName}': ${volumes.join(", ")}. Resolve the ambiguity before deploying.`);
54
+ }
55
+ return volumes[0];
56
+ }
57
+ function assertDockerAvailableForVolumeLookup() {
58
+ const result = spawnSync("docker", ["version"], {
59
+ encoding: "utf8",
60
+ stdio: "pipe",
61
+ });
62
+ if (result.status !== 0) {
63
+ throw new ProjectDeployError("Docker is required to resolve the Compose trusted-runtime volume.");
64
+ }
65
+ }
66
+ //# sourceMappingURL=compose-volume.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-volume.js","sourceRoot":"","sources":["../../src/project/compose-volume.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export type TrustedRuntimeDeployMode = "host" | "compose";
2
+ export interface ProjectDeployEnv {
3
+ readonly deployMode: TrustedRuntimeDeployMode;
4
+ readonly trustedRuntimeRoot: string | undefined;
5
+ readonly composeDir: string | undefined;
6
+ readonly composeProject: string | undefined;
7
+ readonly composeProjectNameEnv: string | undefined;
8
+ readonly runPollIntervalMs: number;
9
+ readonly runPollTimeoutMs: number;
10
+ }
11
+ export declare function loadProjectDeployEnv(env?: NodeJS.ProcessEnv): ProjectDeployEnv;
12
+ //# sourceMappingURL=deploy-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-env.d.ts","sourceRoot":"","sources":["../../src/project/deploy-env.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,wBAAwB,GAAG,MAAM,GAAG,SAAS,CAAC;AAE1D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,UAAU,EAAE,wBAAwB,CAAC;IAC9C,QAAQ,CAAC,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,qBAAqB,EAAE,MAAM,GAAG,SAAS,CAAC;IACnD,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAgCD,wBAAgB,oBAAoB,CAClC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,gBAAgB,CA2ClB"}
@@ -0,0 +1,50 @@
1
+ import { ProjectConfigurationError } from "./errors.js";
2
+ function parseDeployMode(raw) {
3
+ const normalized = raw?.trim().toLowerCase();
4
+ if (normalized === undefined || normalized.length === 0) {
5
+ return process.env.OSVA_TRUSTED_RUNTIME_ROOT?.trim() ? "host" : "compose";
6
+ }
7
+ if (normalized === "host" || normalized === "compose") {
8
+ return normalized;
9
+ }
10
+ throw new ProjectConfigurationError(`Invalid OSVA_TRUSTED_RUNTIME_MODE '${raw}'. Expected 'host' or 'compose'.`);
11
+ }
12
+ function parsePositiveInt(raw, fallback, name) {
13
+ if (raw === undefined || raw.trim().length === 0) {
14
+ return fallback;
15
+ }
16
+ const parsed = Number.parseInt(raw, 10);
17
+ if (!Number.isFinite(parsed) || parsed <= 0) {
18
+ throw new ProjectConfigurationError(`Invalid ${name} '${raw}'. Expected a positive integer.`);
19
+ }
20
+ return parsed;
21
+ }
22
+ export function loadProjectDeployEnv(env = process.env) {
23
+ const deployMode = parseDeployMode(env.OSVA_TRUSTED_RUNTIME_MODE);
24
+ const trustedRuntimeRoot = env.OSVA_TRUSTED_RUNTIME_ROOT?.trim();
25
+ if (deployMode === "host") {
26
+ if (trustedRuntimeRoot === undefined || trustedRuntimeRoot.length === 0) {
27
+ throw new ProjectConfigurationError("Host deploy mode requires OSVA_TRUSTED_RUNTIME_ROOT pointing at the directory your worker reads.");
28
+ }
29
+ }
30
+ const composeDir = env.OSVA_COMPOSE_DIR?.trim();
31
+ if (deployMode === "compose") {
32
+ if (composeDir === undefined || composeDir.length === 0) {
33
+ throw new ProjectConfigurationError("Compose deploy mode requires OSVA_COMPOSE_DIR pointing at your deploy/compose directory.");
34
+ }
35
+ }
36
+ return {
37
+ deployMode,
38
+ trustedRuntimeRoot: trustedRuntimeRoot === undefined || trustedRuntimeRoot.length === 0
39
+ ? undefined
40
+ : trustedRuntimeRoot,
41
+ composeDir: composeDir === undefined || composeDir.length === 0
42
+ ? undefined
43
+ : composeDir,
44
+ composeProject: env.OSVA_COMPOSE_PROJECT?.trim(),
45
+ composeProjectNameEnv: env.COMPOSE_PROJECT_NAME?.trim(),
46
+ runPollIntervalMs: parsePositiveInt(env.OSVA_RUN_POLL_INTERVAL_MS, 500, "OSVA_RUN_POLL_INTERVAL_MS"),
47
+ runPollTimeoutMs: parsePositiveInt(env.OSVA_RUN_POLL_TIMEOUT_MS, 120_000, "OSVA_RUN_POLL_TIMEOUT_MS"),
48
+ };
49
+ }
50
+ //# sourceMappingURL=deploy-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-env.js","sourceRoot":"","sources":["../../src/project/deploy-env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAcxD,SAAS,eAAe,CAAC,GAAuB;IAC9C,MAAM,UAAU,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC7C,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxD,OAAO,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,CAAC;IACD,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QACtD,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,MAAM,IAAI,yBAAyB,CACjC,sCAAsC,GAAG,kCAAkC,CAC5E,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CACvB,GAAuB,EACvB,QAAgB,EAChB,IAAY;IAEZ,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,yBAAyB,CACjC,WAAW,IAAI,KAAK,GAAG,iCAAiC,CACzD,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAClE,MAAM,kBAAkB,GAAG,GAAG,CAAC,yBAAyB,EAAE,IAAI,EAAE,CAAC;IACjE,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,IAAI,kBAAkB,KAAK,SAAS,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxE,MAAM,IAAI,yBAAyB,CACjC,kGAAkG,CACnG,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC;IAChD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,yBAAyB,CACjC,0FAA0F,CAC3F,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,UAAU;QACV,kBAAkB,EAChB,kBAAkB,KAAK,SAAS,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC;YACjE,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,kBAAkB;QACxB,UAAU,EACR,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YACjD,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,UAAU;QAChB,cAAc,EAAE,GAAG,CAAC,oBAAoB,EAAE,IAAI,EAAE;QAChD,qBAAqB,EAAE,GAAG,CAAC,oBAAoB,EAAE,IAAI,EAAE;QACvD,iBAAiB,EAAE,gBAAgB,CACjC,GAAG,CAAC,yBAAyB,EAC7B,GAAG,EACH,2BAA2B,CAC5B;QACD,gBAAgB,EAAE,gBAAgB,CAChC,GAAG,CAAC,wBAAwB,EAC5B,OAAO,EACP,0BAA0B,CAC3B;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { AgentId, AgentManifestV1, AgentVersionId } from "@osva-ai/contracts";
2
+ import type { OsvaClient } from "@osva-ai/sdk";
3
+ export declare function ensureAgentVersion(input: {
4
+ readonly client: OsvaClient;
5
+ readonly projectDir: string;
6
+ readonly baseUrl: string;
7
+ readonly workspaceId: string;
8
+ readonly manifest: AgentManifestV1;
9
+ readonly integrity: string;
10
+ readonly deployTarget: string;
11
+ readonly entrypoint: string;
12
+ }): Promise<{
13
+ readonly agentId: AgentId;
14
+ readonly agentVersionId: AgentVersionId;
15
+ readonly reused: boolean;
16
+ }>;
17
+ //# sourceMappingURL=ensure-agent-version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensure-agent-version.d.ts","sourceRoot":"","sources":["../../src/project/ensure-agent-version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,eAAe,EACf,cAAc,EAEf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAiB/C,wBAAsB,kBAAkB,CAAC,KAAK,EAAE;IAC9C,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B,GAAG,OAAO,CAAC;IACV,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B,CAAC,CAiDD"}
@@ -0,0 +1,105 @@
1
+ import { manifestFingerprint, manifestsMatch } from "./manifest.js";
2
+ import { readDeploymentState, writeDeploymentState, } from "./state.js";
3
+ function cloneManifest(manifest) {
4
+ return JSON.parse(JSON.stringify(manifest));
5
+ }
6
+ export async function ensureAgentVersion(input) {
7
+ const fingerprint = manifestFingerprint(input.manifest);
8
+ const agentKey = input.manifest.key;
9
+ const cached = await readDeploymentState(input.projectDir);
10
+ if (cached !== null &&
11
+ cached.baseUrl === input.baseUrl &&
12
+ cached.workspaceId === input.workspaceId &&
13
+ cached.agentKey === agentKey &&
14
+ cached.integrity === input.integrity &&
15
+ cached.manifestFingerprint === fingerprint) {
16
+ const verified = await verifyCachedVersion(input.client, input.workspaceId, cached, input.manifest);
17
+ if (verified !== null) {
18
+ return { ...verified, reused: true };
19
+ }
20
+ }
21
+ const agentId = await ensureAgent(input.client, input.workspaceId, agentKey, input.manifest.name);
22
+ const existingVersion = await findCompatibleVersion(input.client, agentId, input.manifest);
23
+ if (existingVersion !== null) {
24
+ await persistState(input, fingerprint, agentId, existingVersion);
25
+ return {
26
+ agentId,
27
+ agentVersionId: existingVersion,
28
+ reused: true,
29
+ };
30
+ }
31
+ const created = await input.client.agents.createVersion(agentId, {
32
+ manifest: cloneManifest(input.manifest),
33
+ });
34
+ await persistState(input, fingerprint, agentId, created.id);
35
+ return { agentId, agentVersionId: created.id, reused: false };
36
+ }
37
+ async function verifyCachedVersion(client, workspaceId, cached, desiredManifest) {
38
+ try {
39
+ const agent = await client.agents.get(cached.agentId);
40
+ if (agent.workspaceId !== workspaceId) {
41
+ return null;
42
+ }
43
+ const version = await client.agents.getVersion(cached.agentId, cached.agentVersionId);
44
+ if (!manifestsMatch(version.manifest, desiredManifest)) {
45
+ return null;
46
+ }
47
+ return {
48
+ agentId: cached.agentId,
49
+ agentVersionId: cached.agentVersionId,
50
+ };
51
+ }
52
+ catch {
53
+ return null;
54
+ }
55
+ }
56
+ async function ensureAgent(client, workspaceId, agentKey, agentName) {
57
+ const listed = await client.agents.list();
58
+ const existing = listed.agents.find((agent) => agent.key === agentKey);
59
+ if (existing !== undefined) {
60
+ if (existing.workspaceId !== workspaceId) {
61
+ throw new Error(`Agent key '${agentKey}' exists in a different workspace. Use the API key for workspace ${workspaceId}.`);
62
+ }
63
+ return existing.id;
64
+ }
65
+ const created = await client.agents.create({
66
+ key: agentKey,
67
+ name: agentName,
68
+ });
69
+ if (created.workspaceId !== workspaceId) {
70
+ throw new Error("Created Agent workspace does not match the authenticated workspace.");
71
+ }
72
+ return created.id;
73
+ }
74
+ async function findCompatibleVersion(client, agentId, desiredManifest) {
75
+ const listed = await client.agents.listVersions(agentId);
76
+ for (const summary of [...listed.versions].reverse()) {
77
+ if (manifestsMatch(summary.manifest, desiredManifest)) {
78
+ return summary.id;
79
+ }
80
+ }
81
+ return null;
82
+ }
83
+ async function persistState(input, fingerprint, agentId, agentVersionId) {
84
+ const previous = await readDeploymentState(input.projectDir);
85
+ await writeDeploymentState(input.projectDir, {
86
+ schemaVersion: "1",
87
+ baseUrl: input.baseUrl,
88
+ workspaceId: input.workspaceId,
89
+ agentKey: input.manifest.key,
90
+ agentId,
91
+ agentVersionId,
92
+ manifestFingerprint: fingerprint,
93
+ integrity: input.integrity,
94
+ deployTarget: input.deployTarget,
95
+ entrypoint: input.entrypoint,
96
+ updatedAt: new Date().toISOString(),
97
+ ...(previous?.lastRunId === undefined
98
+ ? {}
99
+ : { lastRunId: previous.lastRunId }),
100
+ ...(previous?.lastRunAttemptId === undefined
101
+ ? {}
102
+ : { lastRunAttemptId: previous.lastRunAttemptId }),
103
+ });
104
+ }
105
+ //# sourceMappingURL=ensure-agent-version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensure-agent-version.js","sourceRoot":"","sources":["../../src/project/ensure-agent-version.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare class ProjectDeployError extends Error {
2
+ constructor(message: string);
3
+ }
4
+ export declare class ProjectConfigurationError extends Error {
5
+ constructor(message: string);
6
+ }
7
+ export declare class ProjectStateError extends Error {
8
+ constructor(message: string);
9
+ }
10
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/project/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI5B"}
@@ -0,0 +1,19 @@
1
+ export class ProjectDeployError extends Error {
2
+ constructor(message) {
3
+ super(message);
4
+ this.name = "ProjectDeployError";
5
+ }
6
+ }
7
+ export class ProjectConfigurationError extends Error {
8
+ constructor(message) {
9
+ super(message);
10
+ this.name = "ProjectConfigurationError";
11
+ }
12
+ }
13
+ export class ProjectStateError extends Error {
14
+ constructor(message) {
15
+ super(message);
16
+ this.name = "ProjectStateError";
17
+ }
18
+ }
19
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/project/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAClD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;IAC1C,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF"}
@@ -0,0 +1,42 @@
1
+ export interface DeployResultPayload {
2
+ readonly agentId: string;
3
+ readonly agentVersionId: string;
4
+ readonly deployTarget: string;
5
+ readonly integrity: string;
6
+ readonly reusedAgentVersion: boolean;
7
+ readonly workspaceId: string;
8
+ }
9
+ export interface RunResultPayload {
10
+ readonly runId: string;
11
+ readonly runAttemptId: string;
12
+ readonly agentId: string;
13
+ readonly agentVersionId: string;
14
+ readonly status: string;
15
+ readonly runAttemptStatus: string;
16
+ readonly output: unknown;
17
+ }
18
+ export interface StatusResultPayload {
19
+ readonly deployment: {
20
+ readonly agentId: string;
21
+ readonly agentVersionId: string;
22
+ readonly agentKey: string;
23
+ readonly deployTarget: string;
24
+ readonly integrity: string;
25
+ readonly updatedAt: string;
26
+ readonly lastRunId?: string;
27
+ readonly lastRunAttemptId?: string;
28
+ } | null;
29
+ readonly lastRun?: {
30
+ readonly id: string;
31
+ readonly status: string;
32
+ readonly runAttemptId?: string;
33
+ readonly runAttemptStatus?: string;
34
+ };
35
+ }
36
+ export declare function formatDeployHuman(payload: DeployResultPayload): string;
37
+ export declare function formatDeployJson(payload: DeployResultPayload): string;
38
+ export declare function formatRunHuman(payload: RunResultPayload): string;
39
+ export declare function formatRunJson(payload: RunResultPayload): string;
40
+ export declare function formatStatusHuman(payload: StatusResultPayload): string;
41
+ export declare function formatStatusJson(payload: StatusResultPayload): string;
42
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/project/format.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,EAAE;QACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;KACpC,GAAG,IAAI,CAAC;IACT,QAAQ,CAAC,OAAO,CAAC,EAAE;QACjB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;KACpC,CAAC;CACH;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAatE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAErE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAchE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAE/D;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CA0BtE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAErE"}
@@ -0,0 +1,66 @@
1
+ import { redactSecrets } from "../doctor/redact.js";
2
+ export function formatDeployHuman(payload) {
3
+ const lines = [
4
+ "OSVA Deploy",
5
+ "",
6
+ `Agent ID: ${payload.agentId}`,
7
+ `AgentVersion ID: ${payload.agentVersionId}`,
8
+ `Workspace: ${payload.workspaceId}`,
9
+ `Deploy target: ${payload.deployTarget}`,
10
+ `Integrity: ${payload.integrity}`,
11
+ `AgentVersion: ${payload.reusedAgentVersion ? "reused" : "created"}`,
12
+ "",
13
+ ];
14
+ return `${lines.map(redactSecrets).join("\n")}\n`;
15
+ }
16
+ export function formatDeployJson(payload) {
17
+ return `${JSON.stringify(payload, null, 2)}\n`;
18
+ }
19
+ export function formatRunHuman(payload) {
20
+ const lines = [
21
+ "OSVA Run",
22
+ "",
23
+ `Run ID: ${payload.runId}`,
24
+ `RunAttempt ID: ${payload.runAttemptId}`,
25
+ `Status: ${payload.status}`,
26
+ `RunAttempt: ${payload.runAttemptStatus}`,
27
+ "",
28
+ "Output:",
29
+ JSON.stringify(payload.output, null, 2),
30
+ "",
31
+ ];
32
+ return `${lines.map(redactSecrets).join("\n")}\n`;
33
+ }
34
+ export function formatRunJson(payload) {
35
+ return `${JSON.stringify(payload, null, 2)}\n`;
36
+ }
37
+ export function formatStatusHuman(payload) {
38
+ const lines = ["OSVA Status", ""];
39
+ if (payload.deployment === null) {
40
+ lines.push("No local deployment state. Run osva deploy first.");
41
+ }
42
+ else {
43
+ lines.push(`Agent key: ${payload.deployment.agentKey}`);
44
+ lines.push(`Agent ID: ${payload.deployment.agentId}`);
45
+ lines.push(`AgentVersion ID: ${payload.deployment.agentVersionId}`);
46
+ lines.push(`Deploy target: ${payload.deployment.deployTarget}`);
47
+ lines.push(`Integrity: ${payload.deployment.integrity}`);
48
+ lines.push(`Updated: ${payload.deployment.updatedAt}`);
49
+ if (payload.deployment.lastRunId !== undefined) {
50
+ lines.push(`Last run ID: ${payload.deployment.lastRunId}`);
51
+ }
52
+ }
53
+ if (payload.lastRun !== undefined) {
54
+ lines.push("");
55
+ lines.push(`Latest run: ${payload.lastRun.id} (${payload.lastRun.status})`);
56
+ if (payload.lastRun.runAttemptStatus !== undefined) {
57
+ lines.push(`Latest attempt: ${payload.lastRun.runAttemptStatus}`);
58
+ }
59
+ }
60
+ lines.push("");
61
+ return `${lines.map(redactSecrets).join("\n")}\n`;
62
+ }
63
+ export function formatStatusJson(payload) {
64
+ return `${JSON.stringify(payload, null, 2)}\n`;
65
+ }
66
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/project/format.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { CliConfig } from "../config.js";
2
+ export declare function runDeployCommand(config: CliConfig, flags: Readonly<Record<string, string | boolean>>): Promise<number>;
3
+ export declare function runRunCommand(config: CliConfig, flags: Readonly<Record<string, string | boolean>>): Promise<number>;
4
+ export declare function runStatusCommand(config: CliConfig, flags: Readonly<Record<string, string | boolean>>): Promise<number>;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/project/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAe9C,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAChD,OAAO,CAAC,MAAM,CAAC,CAkCjB;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAChD,OAAO,CAAC,MAAM,CAAC,CAkCjB;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAChD,OAAO,CAAC,MAAM,CAAC,CA4BjB"}