rampway 0.5.0 → 0.5.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.
@@ -0,0 +1,106 @@
1
+ import { createHash } from "node:crypto";
2
+ import path from "node:path";
3
+ export class ComposeRuntime {
4
+ /** @type {"compose"} */
5
+ static type = "compose";
6
+ /** @type {true} */
7
+ requiresStableState = true;
8
+ /** @returns {"compose"} */
9
+ get type() {
10
+ return "compose";
11
+ }
12
+ /**
13
+ * @param {import("#types").ComposeRuntimeConfig} config
14
+ */
15
+ constructor(config) {
16
+ /** @type {import("#types").ComposeRuntimeConfig} */
17
+ this.config = { ...config, type: "compose" };
18
+ }
19
+ /** @returns {string[]} */
20
+ plan() {
21
+ return ["run configured Compose handoff", "run configured Compose health check"];
22
+ }
23
+ /**
24
+ * Runtime state deliberately records only a hash of trusted commands. The
25
+ * commands themselves may reference credentials through their environment.
26
+ *
27
+ * @returns {Promise<import("#types").RuntimeSnapshot>}
28
+ */
29
+ async prepare() {
30
+ return {
31
+ schemaVersion: 1,
32
+ type: "compose",
33
+ contractDigest: `sha256:${this.contractDigest()}`,
34
+ composeRoot: this.config.composeRoot
35
+ };
36
+ }
37
+ /**
38
+ * @param {import("#types").RuntimeSnapshot} snapshot
39
+ * @returns {void}
40
+ */
41
+ validateSnapshot(snapshot) {
42
+ if (snapshot.type !== "compose")
43
+ throw new Error("Stored Compose runtime state has an invalid runtime type.");
44
+ if (!/^sha256:[0-9a-f]{64}$/u.test(snapshot.contractDigest ?? "")) {
45
+ throw new Error("Stored Compose runtime state is missing a valid known-good contract digest.");
46
+ }
47
+ if (typeof snapshot.composeRoot !== "string" || !isAbsolutePath(snapshot.composeRoot)) {
48
+ throw new Error("Stored Compose runtime state has an unsafe absolute compose root.");
49
+ }
50
+ }
51
+ /**
52
+ * @param {import("#types").Transport} transport
53
+ * @param {{currentSnapshot?: import("#types").RuntimeSnapshot, releaseId?: string, releasePath?: string, targetSnapshot?: import("#types").RuntimeSnapshot}} opts
54
+ * @returns {Promise<{status: string}>}
55
+ */
56
+ async deploy(transport, { currentSnapshot, releaseId, releasePath, targetSnapshot } = {}) {
57
+ if (currentSnapshot)
58
+ this.assertConfiguredContract(currentSnapshot);
59
+ if (targetSnapshot)
60
+ this.assertConfiguredContract(targetSnapshot);
61
+ const env = {
62
+ RAMPWAY_RELEASE_ID: String(releaseId ?? ""),
63
+ RAMPWAY_RELEASE_PATH: String(releasePath ?? "")
64
+ };
65
+ try {
66
+ await transport.run(this.config.handoffCommand, { cwd: this.config.composeRoot, env });
67
+ }
68
+ catch (error) {
69
+ throw new Error(`Compose handoff failed: ${ /** @type {Error} */(error).message}`);
70
+ }
71
+ try {
72
+ await transport.run(this.config.healthCommand, { cwd: this.config.composeRoot, env });
73
+ }
74
+ catch (error) {
75
+ throw new Error(`Compose health check failed: ${ /** @type {Error} */(error).message}`);
76
+ }
77
+ return { status: "deployed" };
78
+ }
79
+ /**
80
+ * @param {import("#types").RuntimeSnapshot} snapshot
81
+ * @returns {void}
82
+ */
83
+ assertConfiguredContract(snapshot) {
84
+ this.validateSnapshot(snapshot);
85
+ if (snapshot.composeRoot !== this.config.composeRoot || snapshot.contractDigest !== `sha256:${this.contractDigest()}`) {
86
+ throw new Error("Stored Compose runtime state does not match the configured Compose contract.");
87
+ }
88
+ }
89
+ /** @returns {string} */
90
+ contractDigest() {
91
+ return createHash("sha256").update(JSON.stringify({
92
+ type: "compose",
93
+ composeRoot: this.config.composeRoot,
94
+ handoffCommand: this.config.handoffCommand,
95
+ healthCommand: this.config.healthCommand
96
+ })).digest("hex");
97
+ }
98
+ }
99
+ /**
100
+ * @param {string} value
101
+ * @returns {boolean}
102
+ */
103
+ function isAbsolutePath(value) {
104
+ return path.posix.isAbsolute(value) || path.win32.isAbsolute(value);
105
+ }
106
+ //# sourceMappingURL=compose-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-runtime.js","sourceRoot":"","sources":["../../../src/runtimes/compose-runtime.js"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtimes/index.js"],"names":[],"mappings":"AAuCA;;;GAGG;AACH,gDAHW,KAAK,CAAC,WAAS,CAAC,MAAM,EAAE,OAAO,QAAQ,EAAE,eAAe,CAAC,CAAC,GACxD;IAAC,QAAQ,WAAW;IAAC,UAAU,WAAW;IAAC,SAAS,WAAU;CAAC,CAmC3E;AAED;;;GAGG;AACH,6CAHW,MAAM,WAAS,YACf,OAAO,QAAQ,EAAE,eAAe,QAI1C;AAED;;;GAGG;AACH,kCAHW,OAAO,QAAQ,EAAE,WAAW,GAC1B,OAAO,QAAQ,EAAE,cAAc,CAI3C;AAED;;GAEG;AACH,oCAFa,MAAM,EAAE,CAIpB;AAhGD;IACE;;OAEG;IACH,qBAFW,OAAO,CAAC,OAAO,QAAQ,EAAE,aAAa,CAAC,EAKjD;IAFC,6CAA6C;IAC7C,QADW,OAAO,QAAQ,EAAE,aAAa,CAC8C;IAGzF,wBAAwB;IACxB,YADc,MAAM,CAGnB;IAED;;OAEG;IACH,QAFa,MAAM,EAAE,CAIpB;IAED;;OAEG;IACH,UAFa,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,CAAC,CAIrC;IAED;;OAEG;IACH,UAFa,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,CAAC,CAInD;CACF;AAiGD;;;;EAA6F"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtimes/index.js"],"names":[],"mappings":"AAwCA;;;GAGG;AACH,gDAHW,KAAK,CAAC,WAAS,CAAC,MAAM,EAAE,OAAO,QAAQ,EAAE,eAAe,CAAC,CAAC,GACxD;IAAC,QAAQ,WAAW;IAAC,UAAU,WAAW;IAAC,SAAS,WAAU;CAAC,CAmC3E;AAED;;;GAGG;AACH,6CAHW,MAAM,WAAS,YACf,OAAO,QAAQ,EAAE,eAAe,QAI1C;AAED;;;GAGG;AACH,kCAHW,OAAO,QAAQ,EAAE,WAAW,GAC1B,OAAO,QAAQ,EAAE,cAAc,CAI3C;AAED;;GAEG;AACH,oCAFa,MAAM,EAAE,CAIpB;AAhGD;IACE;;OAEG;IACH,qBAFW,OAAO,CAAC,OAAO,QAAQ,EAAE,aAAa,CAAC,EAKjD;IAFC,6CAA6C;IAC7C,QADW,OAAO,QAAQ,EAAE,aAAa,CAC8C;IAGzF,wBAAwB;IACxB,YADc,MAAM,CAGnB;IAED;;OAEG;IACH,QAFa,MAAM,EAAE,CAIpB;IAED;;OAEG;IACH,UAFa,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,CAAC,CAIrC;IAED;;OAEG;IACH,UAFa,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,CAAC,CAInD;CACF;AAiGD;;;;EAA6G"}
@@ -1,3 +1,4 @@
1
+ import { ComposeRuntime } from "./compose-runtime.js";
1
2
  import { NoneRuntime } from "./none-runtime.js";
2
3
  import { RollbridgeRuntime } from "./rollbridge-runtime.js";
3
4
  export class BaseRuntime {
@@ -128,5 +129,5 @@ function runtimeForStage(stage, factories) {
128
129
  runtime.plan = () => [];
129
130
  return runtime;
130
131
  }
131
- export const defaultRuntimeRegistry = createRuntimeRegistry([NoneRuntime, RollbridgeRuntime]);
132
+ export const defaultRuntimeRegistry = createRuntimeRegistry([ComposeRuntime, NoneRuntime, RollbridgeRuntime]);
132
133
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtimes/index.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtimes/index.js"],"names":[],"mappings":"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"}
@@ -7,6 +7,32 @@ export type TransportConfig = {
7
7
  sshOptions?: string[] | undefined;
8
8
  extra?: Record<string, unknown> | undefined;
9
9
  };
10
+ export type HttpTransportConfig = {
11
+ /**
12
+ * - Base URL of the mounted control plane, e.g. `https://app.example/rampway/deployments`.
13
+ */
14
+ endpoint: string;
15
+ /**
16
+ * - Bearer token for the control plane.
17
+ */
18
+ accessToken?: string | undefined;
19
+ /**
20
+ * - Environment variable holding the bearer token, when `accessToken` is not inline.
21
+ */
22
+ accessTokenEnv?: string | undefined;
23
+ /**
24
+ * - Control-plane project identifier; defaults to the stage application.
25
+ */
26
+ project?: string | undefined;
27
+ /**
28
+ * - Polling interval while waiting for a run to finish.
29
+ */
30
+ pollIntervalMs?: number | undefined;
31
+ /**
32
+ * - Maximum time to wait for a run to reach a terminal status.
33
+ */
34
+ timeoutMs?: number | undefined;
35
+ };
10
36
  export type LinkedEntry = {
11
37
  path: string;
12
38
  required: boolean;
@@ -27,6 +53,9 @@ export type RuntimeConfig = {
27
53
  socketPath?: string | undefined;
28
54
  versionPath?: string | undefined;
29
55
  env?: Record<string, string> | undefined;
56
+ composeRoot?: string | undefined;
57
+ handoffCommand?: string | undefined;
58
+ healthCommand?: string | undefined;
30
59
  };
31
60
  export type TaskEntry = {
32
61
  name?: string | undefined;
@@ -67,6 +96,7 @@ export type StageConfig = {
67
96
  deployTo: string;
68
97
  strategy: "local-copy" | "remote-git" | "archive-upload";
69
98
  transport: TransportConfig;
99
+ http?: HttpTransportConfig | undefined;
70
100
  hosts?: {
71
101
  host: string;
72
102
  user?: string;
@@ -109,6 +139,7 @@ export type RuntimeSnapshot = {
109
139
  socketPath?: string | undefined;
110
140
  versionPath?: string | undefined;
111
141
  envNames?: string[] | undefined;
142
+ composeRoot?: string | undefined;
112
143
  };
113
144
  export type RuntimeRelease = {
114
145
  releaseId: string;
@@ -139,6 +170,14 @@ export type DeployReport = {
139
170
  healthChecks?: string | undefined;
140
171
  runtime?: object | undefined;
141
172
  cleanupRemoved?: string[] | undefined;
173
+ /**
174
+ * - Control-plane run identifier, when deployed over HTTP.
175
+ */
176
+ runId?: string | undefined;
177
+ /**
178
+ * - Transport actually used for the deploy.
179
+ */
180
+ transport?: "local" | "ssh" | "http" | undefined;
142
181
  };
143
182
  export type RollbackReport = {
144
183
  application: string;
@@ -250,6 +289,10 @@ export type CommandOptions = {
250
289
  to?: string | undefined;
251
290
  releasePath?: string | undefined;
252
291
  dir?: string | undefined;
292
+ /**
293
+ * - Deploy transport selection. `auto` (default) tries the HTTP control plane first and falls back to the direct transport only when the endpoint is unavailable or not deployed.
294
+ */
295
+ transport?: "ssh" | "http" | "auto" | undefined;
253
296
  };
254
297
  export type CommandArgs = {
255
298
  stageName: string;
@@ -385,6 +428,12 @@ export type RollbridgeRuntimeConfig = {
385
428
  versionPath?: string | undefined;
386
429
  env?: Record<string, string> | undefined;
387
430
  };
431
+ export type ComposeRuntimeConfig = {
432
+ type: "compose";
433
+ composeRoot: string;
434
+ handoffCommand: string;
435
+ healthCommand: string;
436
+ };
388
437
  export type SpawnResult = {
389
438
  code: number;
390
439
  output: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.js"],"names":[],"mappings":";UAYc,OAAO,GAAC,KAAK;;;;;;;;;UAab,MAAM;cACN,OAAO;;;;;;;;UAgBP,MAAM;;;;;;;;;;;;;aAiBN,MAAM;;;;;;;UAWN,MAAM;aACN,MAAM;;;;;;UAUN,MAAM;aACN,MAAM;;YAEN,QAAQ,GAAC,QAAQ,GAAC,SAAS;;;;;iBAS3B,MAAM;WACN,MAAM;UACN,MAAM;eACN,MAAM;YACN,QAAQ;;;iBAOR,MAAM;eACN,MAAM;;YAEN,MAAM;;cAEN,MAAM;cACN,YAAY,GAAC,YAAY,GAAC,gBAAgB;eAC1C,eAAe;;cACF,MAAM;eAAS,MAAM;eAAS,MAAM;gBAAU,MAAM,EAAE;;kBACnE,MAAM;iBACN,WAAW,EAAE;gBACb,WAAW,EAAE;WACb,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;sBAC3B,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC;WACtC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;kBAC3B,gBAAgB,EAAE;aAClB,aAAa;;;cAOb,MAAM;kBACN,MAAM;gBACN,MAAM;iBACN,MAAM;cACN,MAAM;eACN,MAAM;iBACN,MAAM;gBACN,MAAM;;;;;UASN,MAAM;;;;;;;;;;;;;;;;eAoBN,MAAM;cACN,MAAM;aACN,eAAe;;;mBAOf,MAAM;YACN,cAAc;cACd,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC;;;WAO9B,MAAM;YACN,MAAM;;YAEN,MAAM;;;iBAON,MAAM;WACN,MAAM;eACN,MAAM;cACN,MAAM;;;WAGN,MAAM;;;;;;;;iBAYN,MAAM;WACN,MAAM;eACN,MAAM;kBACN,MAAM;cACN,MAAM;;WAEN,MAAM;gBACN,MAAM;kBACN,MAAM;aACN,MAAM;;;iBAON,MAAM;WACN,MAAM;aACN,MAAM,GAAC,IAAI;cACX,MAAM,EAAE;kBACR,MAAM;WACN;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAC;;;aAOnC,MAAM;;;;;;;iBAWN,MAAM;WACN,MAAM;oBACN,MAAM;eACN,MAAM;gBACN,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,aAAa,EAAE,CAAA;KAAC,CAAC;;;iBAO7C,MAAM;WACN,MAAM;cACN,MAAM;aACN,MAAM,GAAC,IAAI;cACX,MAAM,EAAE;kBACR,MAAM;mBACN,MAAM,GAAC,SAAS;WAChB;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC;aACjE;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC;;;QAOd,OAAO;gBACP,MAAM;iBACN,MAAM;WACN,MAAM;cACN,MAAM;eACN;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC;cACd,MAAM;aACN;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC;iBACd,MAAM;gBACN,MAAM;gBACN,MAAM;kBACN,MAAM;cACN,MAAM,EAAE;;;iBAOR,MAAM;WACN,MAAM;eACN,MAAM;cACN,MAAM;YACN,MAAM;gBACN,MAAM;gBACN,MAAM;UACN,MAAM;oBACN,MAAM;;;QAON,MAAM;WACN,MAAM;UACN,MAAM;SACN,MAAM;eACN,MAAM;;;;;;;;;;;;;;;;;;;eA2BN,MAAM;aACN,cAAc;;;;YAQd,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC;YACrC,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC;aACxC,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC;cAClE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC;cACrC,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC;iBACvC,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC;QACxC,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC;YACrC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC;eAC3C,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC;wBACpD,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC;yBACvD,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC;cAC/D,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC;UACrC,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;aACzC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC;SAC3C,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAC,KAAK,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,CAAC;yBACxI,MAAM,KAAK,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,OAAO,CAAA;KAAC,GAAC,SAAS,CAAC;;;UAOxE,MAAM,MAAM,EAAE;YACd,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,eAAe,CAAC;QAAC,eAAe,CAAC,EAAE,eAAe,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAC,KAAK,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,CAAC;2BAC7N,SAAS,QAAQ;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAC,KAAK,OAAO,CAAC,eAAe,CAAC;mCAC/H,SAAS,QAAQ;QAAC,QAAQ,EAAE,eAAe,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAC,KAAK,OAAO,CAAC,eAAe,CAAC;kCACnH,SAAS,QAAQ;QAAC,QAAQ,EAAE,eAAe,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAC,KAAK,OAAO,CAAC,IAAI,CAAC;0BACvG,SAAS,QAAQ;QAAC,QAAQ,EAAE,eAAe,CAAA;KAAC,KAAK,OAAO,CAAC,IAAI,CAAC;4BAC9D,SAAS,QAAQ;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,eAAe,CAAA;KAAC,KAAK,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;0BACjG,SAAS,QAAQ;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,eAAe,CAAA;KAAC,KAAK,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;wBACjG,SAAS,QAAQ;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,eAAe,CAAA;KAAC,KAAK,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;2BACjG,SAAS,QAAQ;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,eAAe,CAAA;KAAC,KAAK,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;mCACnH,eAAe,KAAK,IAAI;;;;;aASnC,MAAM;UACN,MAAM,EAAE;;;;eAQR,SAAS;WACT,WAAW;;;;;;;;;;;;;;;;;;;YA2BX,MAAM;gBACN,MAAM;;;UAON,MAAM;aACN,MAAM;gBACN,MAAM;;;;;;;;;;UAcN,MAAM;YACN,MAAM;;8BAMP,CAAC,MAAM,EAAE,aAAa,KAAK,cAAc;;aAOxC,OAAO;UACP,MAAM"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Whether a control-plane failure is eligible for the SSH/direct fallback.
3
+ *
4
+ * The control plane is tried first only while it is unavailable or not
5
+ * deployed; authentication and validation decisions (401/403/409/422) and any
6
+ * failure after a run was admitted are always surfaced instead.
7
+ *
8
+ * @param {unknown} error
9
+ * @returns {boolean}
10
+ */
11
+ export function isFallbackEligible(error: unknown): boolean;
12
+ /**
13
+ * @param {unknown} value
14
+ * @returns {value is string} Whether the value is a full 40-character commit SHA.
15
+ */
16
+ export function isFullCommitSha(value: unknown): value is string;
17
+ /**
18
+ * Resolves the immutable revision a control-plane deploy requires. A full
19
+ * 40-character SHA is used as-is; otherwise the configured release branch is
20
+ * resolved to its current tip with `git ls-remote`.
21
+ *
22
+ * @param {{repo?: string, revision?: string, branch?: string}} args
23
+ * @returns {Promise<string>} Full commit SHA.
24
+ */
25
+ export function resolveControlPlaneRevision({ repo, revision, branch }: {
26
+ repo?: string;
27
+ revision?: string;
28
+ branch?: string;
29
+ }): Promise<string>;
30
+ /**
31
+ * Creates a deployment run on the control plane and classifies the outcome.
32
+ *
33
+ * @param {{endpoint: string, accessToken: string, project: string, stage: string, revision: string, idempotencyKey: string, fetchImpl?: typeof fetch}} args
34
+ * @returns {Promise<{run: DeploymentRun, replayed: boolean}>}
35
+ */
36
+ export function createDeploymentRun({ endpoint, accessToken, project, stage, revision, idempotencyKey, fetchImpl }: {
37
+ endpoint: string;
38
+ accessToken: string;
39
+ project: string;
40
+ stage: string;
41
+ revision: string;
42
+ idempotencyKey: string;
43
+ fetchImpl?: typeof fetch;
44
+ }): Promise<{
45
+ run: DeploymentRun;
46
+ replayed: boolean;
47
+ }>;
48
+ /**
49
+ * Polls a control-plane run until it reaches a terminal status. Any failure
50
+ * after admission (including lost contact) is a hard error: the run exists on
51
+ * the control plane, so there is nothing left to fall back to.
52
+ *
53
+ * @param {{endpoint: string, accessToken: string, runId: string, pollIntervalMs?: number, timeoutMs?: number, fetchImpl?: typeof fetch, now?: () => number, reporter?: Reporter}} args
54
+ * @returns {Promise<DeploymentRun>}
55
+ */
56
+ export function pollDeploymentRun({ endpoint, accessToken, runId, pollIntervalMs, timeoutMs, fetchImpl, now, reporter }: {
57
+ endpoint: string;
58
+ accessToken: string;
59
+ runId: string;
60
+ pollIntervalMs?: number;
61
+ timeoutMs?: number;
62
+ fetchImpl?: typeof fetch;
63
+ now?: () => number;
64
+ reporter?: Reporter;
65
+ }): Promise<DeploymentRun>;
66
+ /**
67
+ * Deploys a stage through the mounted control plane: resolves the immutable
68
+ * revision, creates an idempotent run, polls it to completion, and returns the
69
+ * control-plane deploy report annotated with the run identifier.
70
+ *
71
+ * @param {{stage: import('#types').StageConfig, httpConfig: import('#types').HttpTransportConfig, revision?: string, reporter?: Reporter, fetchImpl?: typeof fetch}} args
72
+ * @returns {Promise<import('#types').DeployReport>}
73
+ */
74
+ export function deployViaControlPlane({ stage, httpConfig, revision, reporter, fetchImpl }: {
75
+ stage: import("#types").StageConfig;
76
+ httpConfig: import("#types").HttpTransportConfig;
77
+ revision?: string;
78
+ reporter?: Reporter;
79
+ fetchImpl?: typeof fetch;
80
+ }): Promise<import("#types").DeployReport>;
81
+ /**
82
+ * Builds a client-generated idempotency key that is stable per invocation, so
83
+ * retrying the same command replays an existing admitted run instead of
84
+ * creating a duplicate.
85
+ *
86
+ * @param {string} project
87
+ * @param {string} stage
88
+ * @param {string} revision
89
+ * @returns {string}
90
+ */
91
+ export function controlPlaneIdempotencyKey(project: string, stage: string, revision: string): string;
92
+ /**
93
+ * @name DeploymentRun
94
+ * @description Public representation of a control-plane deployment run.
95
+ * @typedef {object} DeploymentRun
96
+ * @property {string} id
97
+ * @property {string} status
98
+ * @property {Record<string, any>} [result]
99
+ * @property {{message?: string, recovery?: any}} [error]
100
+ */
101
+ /**
102
+ * Control-plane failure that must not trigger a transport fallback: an
103
+ * authenticated admission decision (401/403/409/422), a 5xx that already
104
+ * admitted a run, or an interruption after a run was admitted.
105
+ */
106
+ export class ControlPlaneError extends Error {
107
+ /**
108
+ * @param {string} message
109
+ * @param {{status?: number, cause?: unknown, runId?: string|null}} [opts]
110
+ */
111
+ constructor(message: string, { status, cause, runId }?: {
112
+ status?: number;
113
+ cause?: unknown;
114
+ runId?: string | null;
115
+ });
116
+ /** @type {number|null} */
117
+ status: number | null;
118
+ /** @type {string|null} */
119
+ runId: string | null;
120
+ }
121
+ /**
122
+ * Control-plane unavailability that may fall back to the direct transport:
123
+ * network-level failure, a not-deployed endpoint/target (404), or a 5xx
124
+ * without any admitted run.
125
+ */
126
+ export class ControlPlaneUnavailableError extends ControlPlaneError {
127
+ /**
128
+ * @param {string} message
129
+ * @param {{status?: number, cause?: unknown}} [opts]
130
+ */
131
+ constructor(message: string, { status, cause }?: {
132
+ status?: number;
133
+ cause?: unknown;
134
+ });
135
+ }
136
+ export type DeploymentRun = {
137
+ id: string;
138
+ status: string;
139
+ result?: Record<string, any> | undefined;
140
+ error?: {
141
+ message?: string;
142
+ recovery?: any;
143
+ } | undefined;
144
+ };
145
+ import { Reporter } from "../core/reporter.js";
146
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/velocious/client.js"],"names":[],"mappings":"AA2DA;;;;;;;;;GASG;AACH,0CAHW,OAAO,GACL,OAAO,CAInB;AAED;;;GAGG;AACH,uCAHW,OAAO,GACL,KAAK,IAAI,MAAM,CAI3B;AAED;;;;;;;GAOG;AACH,wEAHW;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAC,GACjD,OAAO,CAAC,MAAM,CAAC,CAe3B;AAED;;;;;GAKG;AACH,oHAHW;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CAAC,GACzI,OAAO,CAAC;IAAC,GAAG,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAC,CAAC,CAmC5D;AAED;;;;;;;GAOG;AACH,yHAHW;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;CAAC,GACpK,OAAO,CAAC,aAAa,CAAC,CA6BlC;AAED;;;;;;;GAOG;AACH,4FAHW;IAAC,KAAK,EAAE,OAAO,QAAQ,EAAE,WAAW,CAAC;IAAC,UAAU,EAAE,OAAO,QAAQ,EAAE,mBAAmB,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CAAC,GACvJ,OAAO,CAAC,OAAO,QAAQ,EAAE,YAAY,CAAC,CAgClD;AAED;;;;;;;;;GASG;AACH,oDALW,MAAM,SACN,MAAM,YACN,MAAM,GACJ,MAAM,CAIlB;AA3ND;;;;;;;;GAQG;AAEH;;;;GAIG;AACH;IACE;;;OAGG;IACH,qBAHW,MAAM,6BACN;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,GAAC,IAAI,CAAA;KAAC,EAQjE;IAJC,0BAA0B;IAC1B,QADW,MAAM,GAAC,IAAI,CACM;IAC5B,0BAA0B;IAC1B,OADW,MAAM,GAAC,IAAI,CACJ;CAErB;AAED;;;;GAIG;AACH;IACE;;;OAGG;IACH,qBAHW,MAAM,sBACN;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAC,EAI5C;CACF;;QAtCa,MAAM;YACN,MAAM;;;kBAEK,MAAM;mBAAa,GAAG;;;yBAhBxB,qBAAqB"}