@usestatemachines/sdk 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/README.md +67 -17
  2. package/agents/SKILL.md +10 -7
  3. package/agents/index.js +6 -6
  4. package/agents/llms.txt +16 -9
  5. package/agents/prompt.md +1 -1
  6. package/esm/extensions/client.d.ts +11 -1
  7. package/esm/extensions/client.js +12 -2
  8. package/esm/extensions/running-environment.d.ts +16 -2
  9. package/esm/extensions/running-environment.js +24 -2
  10. package/esm/extensions/wait.d.ts +3 -1
  11. package/esm/extensions/wait.js +16 -1
  12. package/esm/funcs/environments-resume.d.ts +11 -0
  13. package/esm/funcs/environments-resume.js +92 -0
  14. package/esm/funcs/environments-suspend.d.ts +11 -0
  15. package/esm/funcs/environments-suspend.js +92 -0
  16. package/esm/funcs/get-environment-exchange.d.ts +11 -0
  17. package/esm/funcs/get-environment-exchange.js +96 -0
  18. package/esm/funcs/get-environment-position.d.ts +11 -0
  19. package/esm/funcs/get-environment-position.js +92 -0
  20. package/esm/funcs/list-environment-history.d.ts +11 -0
  21. package/esm/funcs/list-environment-history.js +97 -0
  22. package/esm/lib/config.d.ts +2 -2
  23. package/esm/lib/config.js +2 -2
  24. package/esm/models/environment-app.d.ts +10 -0
  25. package/esm/models/environment-app.js +12 -0
  26. package/esm/models/environment-exchange.d.ts +116 -0
  27. package/esm/models/environment-exchange.js +126 -0
  28. package/esm/models/environment-position.d.ts +25 -0
  29. package/esm/models/environment-position.js +32 -0
  30. package/esm/models/environment-snapshot.d.ts +3 -2
  31. package/esm/models/environment-snapshot.js +3 -2
  32. package/esm/models/environment.d.ts +4 -0
  33. package/esm/models/environment.js +4 -0
  34. package/esm/models/error-response.d.ts +8 -0
  35. package/esm/models/error-response.js +8 -0
  36. package/esm/models/history-body.d.ts +28 -0
  37. package/esm/models/history-body.js +33 -0
  38. package/esm/models/history-cause.d.ts +48 -0
  39. package/esm/models/history-cause.js +63 -0
  40. package/esm/models/history-position.d.ts +11 -0
  41. package/esm/models/history-position.js +15 -0
  42. package/esm/models/history-transaction.d.ts +16 -0
  43. package/esm/models/history-transaction.js +20 -0
  44. package/esm/models/index.d.ts +6 -0
  45. package/esm/models/index.js +6 -0
  46. package/esm/models/operations/create-environment-definition.d.ts +92 -10
  47. package/esm/models/operations/create-environment-definition.js +63 -4
  48. package/esm/models/operations/get-environment-exchange.d.ts +25 -0
  49. package/esm/models/operations/get-environment-exchange.js +21 -0
  50. package/esm/models/operations/get-environment-position.d.ts +23 -0
  51. package/esm/models/operations/get-environment-position.js +20 -0
  52. package/esm/models/operations/index.d.ts +5 -0
  53. package/esm/models/operations/index.js +5 -0
  54. package/esm/models/operations/list-environment-history.d.ts +28 -0
  55. package/esm/models/operations/list-environment-history.js +24 -0
  56. package/esm/models/operations/resume-environment.d.ts +23 -0
  57. package/esm/models/operations/resume-environment.js +20 -0
  58. package/esm/models/operations/stop-environment.d.ts +1 -1
  59. package/esm/models/operations/suspend-environment.d.ts +23 -0
  60. package/esm/models/operations/suspend-environment.js +20 -0
  61. package/esm/models/release.d.ts +11 -0
  62. package/esm/models/release.js +10 -0
  63. package/esm/sdk/environments.d.ts +2 -0
  64. package/esm/sdk/environments.js +8 -0
  65. package/esm/sdk/sdk.d.ts +3 -0
  66. package/esm/sdk/sdk.js +12 -0
  67. package/esm/types/discriminated-union.d.ts +24 -0
  68. package/esm/types/discriminated-union.js +60 -0
  69. package/esm/types/smart-union.js +2 -1
  70. package/openapi.json +1433 -142
  71. package/package.json +3 -2
@@ -6,7 +6,7 @@ import { Connection } from './connection.js';
6
6
  import { CallerAbortedError, EnvironmentFailedError, SnapshotFailedError, SnapshotTimeoutError, StateMachinesError, TimeoutError, toStateMachinesError, } from './errors.js';
7
7
  import { RunningEnvironment } from './running-environment.js';
8
8
  import { linkSignal } from './signal.js';
9
- import { backoff, defaultTimeoutMs, disposed, poll, pollUntil, ready, sleep, snapshotReady, } from './wait.js';
9
+ import { backoff, defaultTimeoutMs, disposed, poll, pollUntil, ready, sleep, snapshotReady, suspended, } from './wait.js';
10
10
  const stopAfterFailureMs = 30000;
11
11
  const busyBudgetMs = 60000;
12
12
  export class StateMachines {
@@ -127,15 +127,25 @@ export class StateMachines {
127
127
  throw new StateMachinesError(error, { idempotencyKey });
128
128
  }
129
129
  },
130
+ /** Ends the environment and discards its data. Safe to repeat. */
130
131
  stop: (environmentId, options) => this.#unwrap(options, (call) => this.#sdk.environments.stop({ environmentId }, call)),
132
+ /**
133
+ * Suspends a running environment: its sandboxes end and its data stays for `resume`.
134
+ * Its lifetime is paused meanwhile. Use `stop` to end it.
135
+ */
136
+ suspend: (environmentId, options) => this.#unwrap(options, (call) => this.#sdk.environments.suspend({ environmentId }, call)),
137
+ /** Queues a suspended environment to run again on the data it was suspended with. */
138
+ resume: (environmentId, options) => this.#unwrap(options, (call) => this.#sdk.environments.resume({ environmentId }, call)),
131
139
  events: (environmentId, query = {}, options) => this.#call(options, (call) => this.#sdk.environments.events({ ...query, environmentId }, call)),
132
140
  /** The app's users, in the release's order. */
133
141
  actors: async (environmentId, appKey, options) => (await this.environments.getConnection(environmentId, appKey, options))
134
142
  .actors,
135
143
  getConnection: (environmentId, appKey, options) => this.#unwrap(options, (call) => this.#sdk.environments.getConnection({ environmentId, appKey }, call)),
136
144
  reveal: (environmentId, appKey, actorId, options) => this.#reveal(environmentId, appKey, { actorId }, options),
137
- /** Resolves when the environment is running. Never stops it. */
145
+ /** Resolves when the environment is running. Never suspends or stops it. */
138
146
  waitUntilReady: (environmentId, options) => poll((signal) => this.#poll(environmentId, signal), ready, options),
147
+ /** Resolves when the environment is suspended and can resume. */
148
+ waitUntilSuspended: (environmentId, options) => poll((signal) => this.#poll(environmentId, signal), suspended, options),
139
149
  /** Resolves when the environment ended and every sandbox is confirmed disposed. */
140
150
  waitUntilStopped: (environmentId, options) => poll((signal) => this.#poll(environmentId, signal), disposed, options),
141
151
  /**
@@ -4,7 +4,7 @@ import type { ReleaseActor } from '../models/release-actor.js';
4
4
  import type { CallOptions, CaptureInput, CaptureOptions, ConnectOptions, StateMachines } from './client.js';
5
5
  import type { Connection } from './connection.js';
6
6
  import type { WaitOptions } from './wait.js';
7
- /** A started environment. It remains the handle after `stop()`. */
7
+ /** A started environment. It remains the handle after `suspend()` and `stop()`. */
8
8
  export declare class RunningEnvironment {
9
9
  #private;
10
10
  readonly id: string;
@@ -21,7 +21,21 @@ export declare class RunningEnvironment {
21
21
  actors(appKey: string, options?: CallOptions): Promise<ReleaseActor[]>;
22
22
  /** Captures a snapshot in the environment's own workspace and waits until it's `ready`. */
23
23
  snapshot(input?: CaptureInput, options?: CaptureOptions): Promise<EnvironmentSnapshot>;
24
- /** Safe to call twice. Doesn't wait for disposal: use `waitUntilStopped()`. */
24
+ /**
25
+ * Ends the sandboxes and keeps the data for `resume()`. Doesn't wait: use
26
+ * `waitUntilSuspended()` before resuming.
27
+ */
28
+ suspend(options?: CallOptions): Promise<Environment>;
29
+ /** Resolves when the environment is suspended and can resume. */
30
+ waitUntilSuspended(options?: WaitOptions): Promise<Environment>;
31
+ /** Runs a suspended environment again on its data. Use `waitUntilReady()` before connecting. */
32
+ resume(options?: CallOptions): Promise<Environment>;
33
+ /** Resolves when the environment is running again. */
34
+ waitUntilReady(options?: WaitOptions): Promise<Environment>;
35
+ /**
36
+ * Ends the environment and discards its data. Safe to call twice. Doesn't wait for
37
+ * disposal: use `waitUntilStopped()`.
38
+ */
25
39
  stop(options?: CallOptions): Promise<Environment>;
26
40
  /** Resolves when the environment ended and every sandbox is confirmed disposed. */
27
41
  waitUntilStopped(options?: WaitOptions): Promise<Environment>;
@@ -1,4 +1,4 @@
1
- /** A started environment. It remains the handle after `stop()`. */
1
+ /** A started environment. It remains the handle after `suspend()` and `stop()`. */
2
2
  export class RunningEnvironment {
3
3
  id;
4
4
  /** The record when `start()` resolved. Use `sm.environments.get(id)` for fresh state. */
@@ -30,7 +30,29 @@ export class RunningEnvironment {
30
30
  workspaceId: options.workspaceId ?? this.environment.workspaceId,
31
31
  });
32
32
  }
33
- /** Safe to call twice. Doesn't wait for disposal: use `waitUntilStopped()`. */
33
+ /**
34
+ * Ends the sandboxes and keeps the data for `resume()`. Doesn't wait: use
35
+ * `waitUntilSuspended()` before resuming.
36
+ */
37
+ suspend(options) {
38
+ return this.#environments.suspend(this.id, options);
39
+ }
40
+ /** Resolves when the environment is suspended and can resume. */
41
+ waitUntilSuspended(options) {
42
+ return this.#environments.waitUntilSuspended(this.id, options);
43
+ }
44
+ /** Runs a suspended environment again on its data. Use `waitUntilReady()` before connecting. */
45
+ resume(options) {
46
+ return this.#environments.resume(this.id, options);
47
+ }
48
+ /** Resolves when the environment is running again. */
49
+ waitUntilReady(options) {
50
+ return this.#environments.waitUntilReady(this.id, options);
51
+ }
52
+ /**
53
+ * Ends the environment and discards its data. Safe to call twice. Doesn't wait for
54
+ * disposal: use `waitUntilStopped()`.
55
+ */
34
56
  stop(options) {
35
57
  return this.#environments.stop(this.id, options);
36
58
  }
@@ -15,8 +15,10 @@ export declare function poll(read: Read<Environment>, done: Decide<Environment>,
15
15
  * Transient read failures are retried with backoff until the deadline.
16
16
  */
17
17
  export declare function pollUntil<T>(read: Read<T>, done: Decide<T>, options: WaitOptions | undefined, timeout: (timeoutMs: number, last: T | null) => Error): Promise<T>;
18
- /** Resolves on `running`. Never stops the environment. */
18
+ /** Resolves on `running`. Never suspends or stops the environment. */
19
19
  export declare function ready(environment: Environment): boolean;
20
+ /** Resolves on `suspended`, when the environment can resume. */
21
+ export declare function suspended(environment: Environment): boolean;
20
22
  /** Resolves once the environment ended and every app's sandbox is confirmed disposed. */
21
23
  export declare function disposed(environment: Environment): boolean;
22
24
  /** Resolves on `ready`. A failed or deleted snapshot ends the wait. */
@@ -58,12 +58,27 @@ export async function pollUntil(read, done, options = {}, timeout) {
58
58
  await sleep(Math.min(waitMs, deadline - Date.now()), signal);
59
59
  }
60
60
  }
61
- /** Resolves on `running`. Never stops the environment. */
61
+ /** Resolves on `running`. Never suspends or stops the environment. */
62
62
  export function ready(environment) {
63
63
  switch (environment.status) {
64
64
  case 'running':
65
65
  return true;
66
66
  case 'failed':
67
+ case 'suspending':
68
+ case 'suspended':
69
+ case 'stopping':
70
+ case 'stopped':
71
+ throw new EnvironmentFailedError(environment);
72
+ default:
73
+ return false;
74
+ }
75
+ }
76
+ /** Resolves on `suspended`, when the environment can resume. */
77
+ export function suspended(environment) {
78
+ switch (environment.status) {
79
+ case 'suspended':
80
+ return true;
81
+ case 'failed':
67
82
  case 'stopping':
68
83
  case 'stopped':
69
84
  throw new EnvironmentFailedError(environment);
@@ -0,0 +1,11 @@
1
+ import { StateMachinesCore } from "../core.js";
2
+ import { RequestOptions } from "../lib/sdks.js";
3
+ import { ConnectionError, InvalidRequestError, RequestAbortedError, RequestTimeoutError, UnexpectedClientError } from "../models/errors/http-client-errors.js";
4
+ import * as errors from "../models/errors/index.js";
5
+ import { ResponseValidationError } from "../models/errors/response-validation-error.js";
6
+ import { SDKValidationError } from "../models/errors/sdk-validation-error.js";
7
+ import { StateMachinesHTTPError } from "../models/errors/state-machines-http-error.js";
8
+ import * as operations from "../models/operations/index.js";
9
+ import { APIPromise } from "../types/async.js";
10
+ import { Result } from "../types/fp.js";
11
+ export declare function environmentsResume(client: StateMachinesCore, request: operations.ResumeEnvironmentRequest, options?: RequestOptions): APIPromise<Result<operations.ResumeEnvironmentResponse, errors.ErrorResponse | StateMachinesHTTPError | ResponseValidationError | ConnectionError | RequestAbortedError | RequestTimeoutError | InvalidRequestError | UnexpectedClientError | SDKValidationError>>;
@@ -0,0 +1,92 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ */
4
+ import * as z from "zod/v4-mini";
5
+ import { encodeSimple } from "../lib/encodings.js";
6
+ import { matchStatusCode } from "../lib/http.js";
7
+ import * as M from "../lib/matchers.js";
8
+ import { compactMap } from "../lib/primitives.js";
9
+ import { safeParse } from "../lib/schemas.js";
10
+ import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js";
11
+ import { pathToFunc } from "../lib/url.js";
12
+ import * as errors from "../models/errors/index.js";
13
+ import * as operations from "../models/operations/index.js";
14
+ import { APIPromise } from "../types/async.js";
15
+ export function environmentsResume(client, request, options) {
16
+ return new APIPromise($do(client, request, options));
17
+ }
18
+ async function $do(client, request, options) {
19
+ const parsed = safeParse(request, (value) => z.parse(operations.ResumeEnvironmentRequest$outboundSchema, value), "Input validation failed");
20
+ if (!parsed.ok) {
21
+ return [parsed, { status: "invalid" }];
22
+ }
23
+ const payload = parsed.value;
24
+ const body = null;
25
+ const pathParams = {
26
+ environmentId: encodeSimple("environmentId", payload.environmentId, {
27
+ explode: false,
28
+ charEncoding: "percent",
29
+ }),
30
+ };
31
+ const path = pathToFunc("/v1/environments/{environmentId}/resume")(pathParams);
32
+ const headers = new Headers(compactMap({
33
+ Accept: "application/json",
34
+ }));
35
+ const secConfig = await extractSecurity(client._options.apiKey);
36
+ const securityInput = secConfig == null ? {} : { apiKey: secConfig };
37
+ const requestSecurity = resolveGlobalSecurity(securityInput);
38
+ const context = {
39
+ options: client._options,
40
+ baseURL: options?.serverURL ?? client._baseURL ?? "",
41
+ operationID: "resumeEnvironment",
42
+ oAuth2Scopes: null,
43
+ resolvedSecurity: requestSecurity,
44
+ securitySource: client._options.apiKey,
45
+ retryConfig: options?.retries
46
+ || client._options.retryConfig
47
+ || {
48
+ strategy: "backoff",
49
+ backoff: {
50
+ initialInterval: 1000,
51
+ maxInterval: 5000,
52
+ exponent: 1.5,
53
+ maxElapsedTime: 600000,
54
+ },
55
+ retryConnectionErrors: true,
56
+ }
57
+ || { strategy: "none" },
58
+ retryCodes: options?.retryCodes || ["502", "503", "504"],
59
+ };
60
+ const requestRes = client._createRequest(context, {
61
+ security: requestSecurity,
62
+ method: "POST",
63
+ baseURL: options?.serverURL,
64
+ path: path,
65
+ headers: headers,
66
+ body: body,
67
+ userAgent: client._options.userAgent,
68
+ timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1,
69
+ }, options);
70
+ if (!requestRes.ok) {
71
+ return [requestRes, { status: "invalid" }];
72
+ }
73
+ const req = requestRes.value;
74
+ const doResult = await client._do(req, {
75
+ context,
76
+ isErrorStatusCode: (statusCode) => matchStatusCode({ status: statusCode }, ["4XX", "5XX"]),
77
+ retryConfig: context.retryConfig,
78
+ retryCodes: context.retryCodes,
79
+ });
80
+ if (!doResult.ok) {
81
+ return [doResult, { status: "request-error", request: req }];
82
+ }
83
+ const response = doResult.value;
84
+ const responseFields = {
85
+ HttpMeta: { Response: response, Request: req },
86
+ };
87
+ const [result] = await M.match(M.json(200, operations.ResumeEnvironmentResponse$inboundSchema), M.jsonErr([400, 401, 403, 404, 409, 413, 422, 429], errors.ErrorResponse$inboundSchema), M.jsonErr([500, 503], errors.ErrorResponse$inboundSchema), M.fail("4XX"), M.fail("5XX"))(response, req, { extraFields: responseFields });
88
+ if (!result.ok) {
89
+ return [result, { status: "complete", request: req, response }];
90
+ }
91
+ return [result, { status: "complete", request: req, response }];
92
+ }
@@ -0,0 +1,11 @@
1
+ import { StateMachinesCore } from "../core.js";
2
+ import { RequestOptions } from "../lib/sdks.js";
3
+ import { ConnectionError, InvalidRequestError, RequestAbortedError, RequestTimeoutError, UnexpectedClientError } from "../models/errors/http-client-errors.js";
4
+ import * as errors from "../models/errors/index.js";
5
+ import { ResponseValidationError } from "../models/errors/response-validation-error.js";
6
+ import { SDKValidationError } from "../models/errors/sdk-validation-error.js";
7
+ import { StateMachinesHTTPError } from "../models/errors/state-machines-http-error.js";
8
+ import * as operations from "../models/operations/index.js";
9
+ import { APIPromise } from "../types/async.js";
10
+ import { Result } from "../types/fp.js";
11
+ export declare function environmentsSuspend(client: StateMachinesCore, request: operations.SuspendEnvironmentRequest, options?: RequestOptions): APIPromise<Result<operations.SuspendEnvironmentResponse, errors.ErrorResponse | StateMachinesHTTPError | ResponseValidationError | ConnectionError | RequestAbortedError | RequestTimeoutError | InvalidRequestError | UnexpectedClientError | SDKValidationError>>;
@@ -0,0 +1,92 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ */
4
+ import * as z from "zod/v4-mini";
5
+ import { encodeSimple } from "../lib/encodings.js";
6
+ import { matchStatusCode } from "../lib/http.js";
7
+ import * as M from "../lib/matchers.js";
8
+ import { compactMap } from "../lib/primitives.js";
9
+ import { safeParse } from "../lib/schemas.js";
10
+ import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js";
11
+ import { pathToFunc } from "../lib/url.js";
12
+ import * as errors from "../models/errors/index.js";
13
+ import * as operations from "../models/operations/index.js";
14
+ import { APIPromise } from "../types/async.js";
15
+ export function environmentsSuspend(client, request, options) {
16
+ return new APIPromise($do(client, request, options));
17
+ }
18
+ async function $do(client, request, options) {
19
+ const parsed = safeParse(request, (value) => z.parse(operations.SuspendEnvironmentRequest$outboundSchema, value), "Input validation failed");
20
+ if (!parsed.ok) {
21
+ return [parsed, { status: "invalid" }];
22
+ }
23
+ const payload = parsed.value;
24
+ const body = null;
25
+ const pathParams = {
26
+ environmentId: encodeSimple("environmentId", payload.environmentId, {
27
+ explode: false,
28
+ charEncoding: "percent",
29
+ }),
30
+ };
31
+ const path = pathToFunc("/v1/environments/{environmentId}/suspend")(pathParams);
32
+ const headers = new Headers(compactMap({
33
+ Accept: "application/json",
34
+ }));
35
+ const secConfig = await extractSecurity(client._options.apiKey);
36
+ const securityInput = secConfig == null ? {} : { apiKey: secConfig };
37
+ const requestSecurity = resolveGlobalSecurity(securityInput);
38
+ const context = {
39
+ options: client._options,
40
+ baseURL: options?.serverURL ?? client._baseURL ?? "",
41
+ operationID: "suspendEnvironment",
42
+ oAuth2Scopes: null,
43
+ resolvedSecurity: requestSecurity,
44
+ securitySource: client._options.apiKey,
45
+ retryConfig: options?.retries
46
+ || client._options.retryConfig
47
+ || {
48
+ strategy: "backoff",
49
+ backoff: {
50
+ initialInterval: 1000,
51
+ maxInterval: 5000,
52
+ exponent: 1.5,
53
+ maxElapsedTime: 600000,
54
+ },
55
+ retryConnectionErrors: true,
56
+ }
57
+ || { strategy: "none" },
58
+ retryCodes: options?.retryCodes || ["502", "503", "504"],
59
+ };
60
+ const requestRes = client._createRequest(context, {
61
+ security: requestSecurity,
62
+ method: "POST",
63
+ baseURL: options?.serverURL,
64
+ path: path,
65
+ headers: headers,
66
+ body: body,
67
+ userAgent: client._options.userAgent,
68
+ timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1,
69
+ }, options);
70
+ if (!requestRes.ok) {
71
+ return [requestRes, { status: "invalid" }];
72
+ }
73
+ const req = requestRes.value;
74
+ const doResult = await client._do(req, {
75
+ context,
76
+ isErrorStatusCode: (statusCode) => matchStatusCode({ status: statusCode }, ["4XX", "5XX"]),
77
+ retryConfig: context.retryConfig,
78
+ retryCodes: context.retryCodes,
79
+ });
80
+ if (!doResult.ok) {
81
+ return [doResult, { status: "request-error", request: req }];
82
+ }
83
+ const response = doResult.value;
84
+ const responseFields = {
85
+ HttpMeta: { Response: response, Request: req },
86
+ };
87
+ const [result] = await M.match(M.json(200, operations.SuspendEnvironmentResponse$inboundSchema), M.jsonErr([400, 401, 403, 404, 409, 413, 422, 429], errors.ErrorResponse$inboundSchema), M.jsonErr([500, 503], errors.ErrorResponse$inboundSchema), M.fail("4XX"), M.fail("5XX"))(response, req, { extraFields: responseFields });
88
+ if (!result.ok) {
89
+ return [result, { status: "complete", request: req, response }];
90
+ }
91
+ return [result, { status: "complete", request: req, response }];
92
+ }
@@ -0,0 +1,11 @@
1
+ import { StateMachinesCore } from "../core.js";
2
+ import { RequestOptions } from "../lib/sdks.js";
3
+ import { ConnectionError, InvalidRequestError, RequestAbortedError, RequestTimeoutError, UnexpectedClientError } from "../models/errors/http-client-errors.js";
4
+ import * as errors from "../models/errors/index.js";
5
+ import { ResponseValidationError } from "../models/errors/response-validation-error.js";
6
+ import { SDKValidationError } from "../models/errors/sdk-validation-error.js";
7
+ import { StateMachinesHTTPError } from "../models/errors/state-machines-http-error.js";
8
+ import * as operations from "../models/operations/index.js";
9
+ import { APIPromise } from "../types/async.js";
10
+ import { Result } from "../types/fp.js";
11
+ export declare function getEnvironmentExchange(client: StateMachinesCore, request: operations.GetEnvironmentExchangeRequest, options?: RequestOptions): APIPromise<Result<operations.GetEnvironmentExchangeResponse, errors.ErrorResponse | StateMachinesHTTPError | ResponseValidationError | ConnectionError | RequestAbortedError | RequestTimeoutError | InvalidRequestError | UnexpectedClientError | SDKValidationError>>;
@@ -0,0 +1,96 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ */
4
+ import * as z from "zod/v4-mini";
5
+ import { encodeSimple } from "../lib/encodings.js";
6
+ import { matchStatusCode } from "../lib/http.js";
7
+ import * as M from "../lib/matchers.js";
8
+ import { compactMap } from "../lib/primitives.js";
9
+ import { safeParse } from "../lib/schemas.js";
10
+ import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js";
11
+ import { pathToFunc } from "../lib/url.js";
12
+ import * as errors from "../models/errors/index.js";
13
+ import * as operations from "../models/operations/index.js";
14
+ import { APIPromise } from "../types/async.js";
15
+ export function getEnvironmentExchange(client, request, options) {
16
+ return new APIPromise($do(client, request, options));
17
+ }
18
+ async function $do(client, request, options) {
19
+ const parsed = safeParse(request, (value) => z.parse(operations.GetEnvironmentExchangeRequest$outboundSchema, value), "Input validation failed");
20
+ if (!parsed.ok) {
21
+ return [parsed, { status: "invalid" }];
22
+ }
23
+ const payload = parsed.value;
24
+ const body = null;
25
+ const pathParams = {
26
+ environmentId: encodeSimple("environmentId", payload.environmentId, {
27
+ explode: false,
28
+ charEncoding: "percent",
29
+ }),
30
+ exchangeId: encodeSimple("exchangeId", payload.exchangeId, {
31
+ explode: false,
32
+ charEncoding: "percent",
33
+ }),
34
+ };
35
+ const path = pathToFunc("/v1/environments/{environmentId}/history/{exchangeId}")(pathParams);
36
+ const headers = new Headers(compactMap({
37
+ Accept: "application/json",
38
+ }));
39
+ const secConfig = await extractSecurity(client._options.apiKey);
40
+ const securityInput = secConfig == null ? {} : { apiKey: secConfig };
41
+ const requestSecurity = resolveGlobalSecurity(securityInput);
42
+ const context = {
43
+ options: client._options,
44
+ baseURL: options?.serverURL ?? client._baseURL ?? "",
45
+ operationID: "getEnvironmentExchange",
46
+ oAuth2Scopes: null,
47
+ resolvedSecurity: requestSecurity,
48
+ securitySource: client._options.apiKey,
49
+ retryConfig: options?.retries
50
+ || client._options.retryConfig
51
+ || {
52
+ strategy: "backoff",
53
+ backoff: {
54
+ initialInterval: 1000,
55
+ maxInterval: 5000,
56
+ exponent: 1.5,
57
+ maxElapsedTime: 600000,
58
+ },
59
+ retryConnectionErrors: true,
60
+ }
61
+ || { strategy: "none" },
62
+ retryCodes: options?.retryCodes || ["502", "503", "504"],
63
+ };
64
+ const requestRes = client._createRequest(context, {
65
+ security: requestSecurity,
66
+ method: "GET",
67
+ baseURL: options?.serverURL,
68
+ path: path,
69
+ headers: headers,
70
+ body: body,
71
+ userAgent: client._options.userAgent,
72
+ timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1,
73
+ }, options);
74
+ if (!requestRes.ok) {
75
+ return [requestRes, { status: "invalid" }];
76
+ }
77
+ const req = requestRes.value;
78
+ const doResult = await client._do(req, {
79
+ context,
80
+ isErrorStatusCode: (statusCode) => matchStatusCode({ status: statusCode }, ["4XX", "5XX"]),
81
+ retryConfig: context.retryConfig,
82
+ retryCodes: context.retryCodes,
83
+ });
84
+ if (!doResult.ok) {
85
+ return [doResult, { status: "request-error", request: req }];
86
+ }
87
+ const response = doResult.value;
88
+ const responseFields = {
89
+ HttpMeta: { Response: response, Request: req },
90
+ };
91
+ const [result] = await M.match(M.json(200, operations.GetEnvironmentExchangeResponse$inboundSchema), M.jsonErr([400, 401, 403, 404, 409, 413, 422, 429], errors.ErrorResponse$inboundSchema), M.jsonErr([500, 503], errors.ErrorResponse$inboundSchema), M.fail("4XX"), M.fail("5XX"))(response, req, { extraFields: responseFields });
92
+ if (!result.ok) {
93
+ return [result, { status: "complete", request: req, response }];
94
+ }
95
+ return [result, { status: "complete", request: req, response }];
96
+ }
@@ -0,0 +1,11 @@
1
+ import { StateMachinesCore } from "../core.js";
2
+ import { RequestOptions } from "../lib/sdks.js";
3
+ import { ConnectionError, InvalidRequestError, RequestAbortedError, RequestTimeoutError, UnexpectedClientError } from "../models/errors/http-client-errors.js";
4
+ import * as errors from "../models/errors/index.js";
5
+ import { ResponseValidationError } from "../models/errors/response-validation-error.js";
6
+ import { SDKValidationError } from "../models/errors/sdk-validation-error.js";
7
+ import { StateMachinesHTTPError } from "../models/errors/state-machines-http-error.js";
8
+ import * as operations from "../models/operations/index.js";
9
+ import { APIPromise } from "../types/async.js";
10
+ import { Result } from "../types/fp.js";
11
+ export declare function getEnvironmentPosition(client: StateMachinesCore, request: operations.GetEnvironmentPositionRequest, options?: RequestOptions): APIPromise<Result<operations.GetEnvironmentPositionResponse, errors.ErrorResponse | StateMachinesHTTPError | ResponseValidationError | ConnectionError | RequestAbortedError | RequestTimeoutError | InvalidRequestError | UnexpectedClientError | SDKValidationError>>;
@@ -0,0 +1,92 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ */
4
+ import * as z from "zod/v4-mini";
5
+ import { encodeSimple } from "../lib/encodings.js";
6
+ import { matchStatusCode } from "../lib/http.js";
7
+ import * as M from "../lib/matchers.js";
8
+ import { compactMap } from "../lib/primitives.js";
9
+ import { safeParse } from "../lib/schemas.js";
10
+ import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js";
11
+ import { pathToFunc } from "../lib/url.js";
12
+ import * as errors from "../models/errors/index.js";
13
+ import * as operations from "../models/operations/index.js";
14
+ import { APIPromise } from "../types/async.js";
15
+ export function getEnvironmentPosition(client, request, options) {
16
+ return new APIPromise($do(client, request, options));
17
+ }
18
+ async function $do(client, request, options) {
19
+ const parsed = safeParse(request, (value) => z.parse(operations.GetEnvironmentPositionRequest$outboundSchema, value), "Input validation failed");
20
+ if (!parsed.ok) {
21
+ return [parsed, { status: "invalid" }];
22
+ }
23
+ const payload = parsed.value;
24
+ const body = null;
25
+ const pathParams = {
26
+ environmentId: encodeSimple("environmentId", payload.environmentId, {
27
+ explode: false,
28
+ charEncoding: "percent",
29
+ }),
30
+ };
31
+ const path = pathToFunc("/v1/environments/{environmentId}/history/position")(pathParams);
32
+ const headers = new Headers(compactMap({
33
+ Accept: "application/json",
34
+ }));
35
+ const secConfig = await extractSecurity(client._options.apiKey);
36
+ const securityInput = secConfig == null ? {} : { apiKey: secConfig };
37
+ const requestSecurity = resolveGlobalSecurity(securityInput);
38
+ const context = {
39
+ options: client._options,
40
+ baseURL: options?.serverURL ?? client._baseURL ?? "",
41
+ operationID: "getEnvironmentPosition",
42
+ oAuth2Scopes: null,
43
+ resolvedSecurity: requestSecurity,
44
+ securitySource: client._options.apiKey,
45
+ retryConfig: options?.retries
46
+ || client._options.retryConfig
47
+ || {
48
+ strategy: "backoff",
49
+ backoff: {
50
+ initialInterval: 1000,
51
+ maxInterval: 5000,
52
+ exponent: 1.5,
53
+ maxElapsedTime: 600000,
54
+ },
55
+ retryConnectionErrors: true,
56
+ }
57
+ || { strategy: "none" },
58
+ retryCodes: options?.retryCodes || ["502", "503", "504"],
59
+ };
60
+ const requestRes = client._createRequest(context, {
61
+ security: requestSecurity,
62
+ method: "GET",
63
+ baseURL: options?.serverURL,
64
+ path: path,
65
+ headers: headers,
66
+ body: body,
67
+ userAgent: client._options.userAgent,
68
+ timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1,
69
+ }, options);
70
+ if (!requestRes.ok) {
71
+ return [requestRes, { status: "invalid" }];
72
+ }
73
+ const req = requestRes.value;
74
+ const doResult = await client._do(req, {
75
+ context,
76
+ isErrorStatusCode: (statusCode) => matchStatusCode({ status: statusCode }, ["4XX", "5XX"]),
77
+ retryConfig: context.retryConfig,
78
+ retryCodes: context.retryCodes,
79
+ });
80
+ if (!doResult.ok) {
81
+ return [doResult, { status: "request-error", request: req }];
82
+ }
83
+ const response = doResult.value;
84
+ const responseFields = {
85
+ HttpMeta: { Response: response, Request: req },
86
+ };
87
+ const [result] = await M.match(M.json(200, operations.GetEnvironmentPositionResponse$inboundSchema), M.jsonErr([400, 401, 403, 404, 409, 413, 422, 429], errors.ErrorResponse$inboundSchema), M.jsonErr([500, 503], errors.ErrorResponse$inboundSchema), M.fail("4XX"), M.fail("5XX"))(response, req, { extraFields: responseFields });
88
+ if (!result.ok) {
89
+ return [result, { status: "complete", request: req, response }];
90
+ }
91
+ return [result, { status: "complete", request: req, response }];
92
+ }
@@ -0,0 +1,11 @@
1
+ import { StateMachinesCore } from "../core.js";
2
+ import { RequestOptions } from "../lib/sdks.js";
3
+ import { ConnectionError, InvalidRequestError, RequestAbortedError, RequestTimeoutError, UnexpectedClientError } from "../models/errors/http-client-errors.js";
4
+ import * as errors from "../models/errors/index.js";
5
+ import { ResponseValidationError } from "../models/errors/response-validation-error.js";
6
+ import { SDKValidationError } from "../models/errors/sdk-validation-error.js";
7
+ import { StateMachinesHTTPError } from "../models/errors/state-machines-http-error.js";
8
+ import * as operations from "../models/operations/index.js";
9
+ import { APIPromise } from "../types/async.js";
10
+ import { Result } from "../types/fp.js";
11
+ export declare function listEnvironmentHistory(client: StateMachinesCore, request: operations.ListEnvironmentHistoryRequest, options?: RequestOptions): APIPromise<Result<operations.ListEnvironmentHistoryResponse, errors.ErrorResponse | StateMachinesHTTPError | ResponseValidationError | ConnectionError | RequestAbortedError | RequestTimeoutError | InvalidRequestError | UnexpectedClientError | SDKValidationError>>;