@murphai/hosted-execution 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +24 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/auth.d.ts +24 -0
  5. package/dist/auth.d.ts.map +1 -0
  6. package/dist/auth.js +85 -0
  7. package/dist/auth.js.map +1 -0
  8. package/dist/builders.d.ts +59 -0
  9. package/dist/builders.d.ts.map +1 -0
  10. package/dist/builders.js +104 -0
  11. package/dist/builders.js.map +1 -0
  12. package/dist/bundles.d.ts +14 -0
  13. package/dist/bundles.d.ts.map +1 -0
  14. package/dist/bundles.js +17 -0
  15. package/dist/bundles.js.map +1 -0
  16. package/dist/callback-hosts.d.ts +19 -0
  17. package/dist/callback-hosts.d.ts.map +1 -0
  18. package/dist/callback-hosts.js +19 -0
  19. package/dist/callback-hosts.js.map +1 -0
  20. package/dist/client.d.ts +26 -0
  21. package/dist/client.d.ts.map +1 -0
  22. package/dist/client.js +165 -0
  23. package/dist/client.js.map +1 -0
  24. package/dist/contracts.d.ts +252 -0
  25. package/dist/contracts.d.ts.map +1 -0
  26. package/dist/contracts.js +100 -0
  27. package/dist/contracts.js.map +1 -0
  28. package/dist/dispatch-ref.d.ts +17 -0
  29. package/dist/dispatch-ref.d.ts.map +1 -0
  30. package/dist/dispatch-ref.js +74 -0
  31. package/dist/dispatch-ref.js.map +1 -0
  32. package/dist/env.d.ts +46 -0
  33. package/dist/env.d.ts.map +1 -0
  34. package/dist/env.js +116 -0
  35. package/dist/env.js.map +1 -0
  36. package/dist/hosted-email.d.ts +15 -0
  37. package/dist/hosted-email.d.ts.map +1 -0
  38. package/dist/hosted-email.js +76 -0
  39. package/dist/hosted-email.js.map +1 -0
  40. package/dist/index.d.ts +16 -0
  41. package/dist/index.d.ts.map +1 -0
  42. package/dist/index.js +16 -0
  43. package/dist/index.js.map +1 -0
  44. package/dist/observability.d.ts +65 -0
  45. package/dist/observability.d.ts.map +1 -0
  46. package/dist/observability.js +212 -0
  47. package/dist/observability.js.map +1 -0
  48. package/dist/outbox-payload.d.ts +21 -0
  49. package/dist/outbox-payload.d.ts.map +1 -0
  50. package/dist/outbox-payload.js +72 -0
  51. package/dist/outbox-payload.js.map +1 -0
  52. package/dist/parsers.d.ts +22 -0
  53. package/dist/parsers.d.ts.map +1 -0
  54. package/dist/parsers.js +537 -0
  55. package/dist/parsers.js.map +1 -0
  56. package/dist/routes.d.ts +9 -0
  57. package/dist/routes.d.ts.map +1 -0
  58. package/dist/routes.js +17 -0
  59. package/dist/routes.js.map +1 -0
  60. package/dist/side-effects.d.ts +59 -0
  61. package/dist/side-effects.d.ts.map +1 -0
  62. package/dist/side-effects.js +162 -0
  63. package/dist/side-effects.js.map +1 -0
  64. package/dist/web-control-plane.d.ts +105 -0
  65. package/dist/web-control-plane.d.ts.map +1 -0
  66. package/dist/web-control-plane.js +358 -0
  67. package/dist/web-control-plane.js.map +1 -0
  68. package/package.json +38 -0
@@ -0,0 +1,212 @@
1
+ export const HOSTED_EXECUTION_RUN_PHASES = [
2
+ "claimed",
3
+ "dispatch.running",
4
+ "container.starting",
5
+ "container.ready",
6
+ "runtime.starting",
7
+ "commit.recorded",
8
+ "side-effects.draining",
9
+ "finalize.recorded",
10
+ "completed",
11
+ "retry.scheduled",
12
+ "failed",
13
+ "poisoned",
14
+ ];
15
+ export const HOSTED_EXECUTION_RUN_LEVELS = ["info", "warn", "error"];
16
+ const HOSTED_EXECUTION_SAFE_ERROR_NAMES = new Set([
17
+ "AbortError",
18
+ "Error",
19
+ "EvalError",
20
+ "HostedExecutionConfigurationError",
21
+ "RangeError",
22
+ "ReferenceError",
23
+ "SyntaxError",
24
+ "TypeError",
25
+ "URIError",
26
+ ]);
27
+ const HOSTED_EXECUTION_MAX_OPERATOR_MESSAGE_LENGTH = 200;
28
+ const HOSTED_EXECUTION_SAFE_CONFIGURATION_MESSAGE_PATTERNS = [
29
+ /^(?:[A-Z][A-Z0-9_]{1,127}|CF_[A-Z0-9_]{1,127}|HOSTED_[A-Z0-9_]{1,127}|DEVICE_SYNC_[A-Z0-9_]{1,127})\s+(?:must be|is)\s+configured(?:\s+for [A-Za-z0-9 ._/-]+)?\.?$/u,
30
+ /^Native hosted execution requires a RunnerContainer binding\.$/u,
31
+ ];
32
+ export function isHostedExecutionRunPhase(value) {
33
+ return typeof value === "string" && HOSTED_EXECUTION_RUN_PHASES.includes(value);
34
+ }
35
+ export function isHostedExecutionRunLevel(value) {
36
+ return typeof value === "string" && HOSTED_EXECUTION_RUN_LEVELS.includes(value);
37
+ }
38
+ export function normalizeHostedExecutionErrorMessage(error) {
39
+ if (error instanceof Error) {
40
+ const message = error.message.trim();
41
+ return message.length > 0 ? message : error.name;
42
+ }
43
+ const message = String(error).trim();
44
+ return message.length > 0 ? message : "Unknown hosted execution error.";
45
+ }
46
+ export function normalizeHostedExecutionOperatorMessage(message) {
47
+ const normalized = redactHostedExecutionText(message)
48
+ .replace(/[\r\n\t]+/gu, " ")
49
+ .replace(/\s+/gu, " ")
50
+ .trim();
51
+ if (normalized.length === 0) {
52
+ return "Hosted execution event.";
53
+ }
54
+ if (normalized.length <= HOSTED_EXECUTION_MAX_OPERATOR_MESSAGE_LENGTH) {
55
+ return normalized;
56
+ }
57
+ return `${normalized.slice(0, HOSTED_EXECUTION_MAX_OPERATOR_MESSAGE_LENGTH - 1).trimEnd()}…`;
58
+ }
59
+ export function deriveHostedExecutionErrorCode(error) {
60
+ const name = error instanceof Error ? error.name : "";
61
+ const message = normalizeHostedExecutionErrorMessage(error).toLowerCase();
62
+ if (name === "HostedExecutionConfigurationError"
63
+ || message.includes("not configured")
64
+ || message.includes("configuration")
65
+ || message.includes("missing token")
66
+ || message.includes("requires a runnercontainer binding")
67
+ || message.includes("must be configured")) {
68
+ return "configuration_error";
69
+ }
70
+ if (message.includes("durable commit")) {
71
+ return "durable_commit_error";
72
+ }
73
+ if (message.includes("durable finalize") || message.includes("finalize")) {
74
+ return "durable_finalize_error";
75
+ }
76
+ if (message.includes("returned http")) {
77
+ return "runner_http_error";
78
+ }
79
+ if (message.includes("authorization") || message.includes("unauthorized") || message.includes("forbidden")) {
80
+ return "authorization_error";
81
+ }
82
+ if (message.includes("invalid json")
83
+ || message.includes("invalid request")
84
+ || message.includes("request body must be a json object")
85
+ || message.includes("must be a json object")
86
+ || message.includes("malformed")) {
87
+ return "invalid_request";
88
+ }
89
+ if (name === "AbortError"
90
+ || message.includes("abort")
91
+ || message.includes("timed out")
92
+ || message.includes("timeout")) {
93
+ return "timeout";
94
+ }
95
+ switch (name) {
96
+ case "RangeError":
97
+ return "range_error";
98
+ case "ReferenceError":
99
+ return "reference_error";
100
+ case "SyntaxError":
101
+ return "syntax_error";
102
+ case "TypeError":
103
+ return "type_error";
104
+ case "URIError":
105
+ return "uri_error";
106
+ default:
107
+ return "runtime_error";
108
+ }
109
+ }
110
+ export function summarizeHostedExecutionError(error) {
111
+ const message = normalizeHostedExecutionErrorMessage(error);
112
+ switch (deriveHostedExecutionErrorCode(error)) {
113
+ case "configuration_error":
114
+ return readHostedExecutionSafeConfigurationMessage(message)
115
+ ?? "Hosted execution configuration is invalid.";
116
+ case "durable_commit_error":
117
+ return "Hosted execution failed before recording a durable commit.";
118
+ case "durable_finalize_error":
119
+ return "Hosted execution failed while finalizing a committed run.";
120
+ case "runner_http_error": {
121
+ const status = extractHostedExecutionHttpStatus(message);
122
+ return status
123
+ ? `Hosted runner container returned HTTP ${status}.`
124
+ : "Hosted runner container returned an HTTP error.";
125
+ }
126
+ case "authorization_error":
127
+ return "Hosted execution authorization failed.";
128
+ case "invalid_request":
129
+ return "Hosted execution rejected an invalid request.";
130
+ case "timeout":
131
+ return "Hosted execution timed out.";
132
+ default:
133
+ return "Hosted execution runtime failed.";
134
+ }
135
+ }
136
+ export function buildHostedExecutionStructuredLogRecord(input) {
137
+ const error = input.error;
138
+ const errorName = readHostedExecutionSafeErrorName(error);
139
+ return {
140
+ attempt: input.run?.attempt ?? null,
141
+ component: input.component,
142
+ ...(error === undefined ? {} : {
143
+ errorCode: deriveHostedExecutionErrorCode(error),
144
+ errorMessage: summarizeHostedExecutionError(error),
145
+ ...(errorName ? { errorName } : {}),
146
+ }),
147
+ eventId: input.dispatch?.eventId ?? input.eventId ?? null,
148
+ level: input.level ?? (error === undefined ? "info" : "error"),
149
+ message: normalizeHostedExecutionOperatorMessage(input.message),
150
+ phase: input.phase,
151
+ runId: input.run?.runId ?? null,
152
+ schema: "murph.hosted-execution.log.v1",
153
+ time: input.time ?? new Date().toISOString(),
154
+ userId: input.userId ?? null,
155
+ };
156
+ }
157
+ function shouldEmitHostedExecutionStructuredLogToStdIo(env = process.env) {
158
+ const override = env.MURPH_HOSTED_EXECUTION_STDIO_LOGS?.trim().toLowerCase();
159
+ if (override === "1" || override === "true" || override === "yes" || override === "on") {
160
+ return true;
161
+ }
162
+ if (override === "0" || override === "false" || override === "no" || override === "off") {
163
+ return false;
164
+ }
165
+ return env.VITEST !== "true";
166
+ }
167
+ export function emitHostedExecutionStructuredLog(input) {
168
+ const record = buildHostedExecutionStructuredLogRecord(input);
169
+ if (!shouldEmitHostedExecutionStructuredLogToStdIo()) {
170
+ return record;
171
+ }
172
+ const payload = JSON.stringify(record);
173
+ switch (record.level) {
174
+ case "error":
175
+ console.error(payload);
176
+ break;
177
+ case "warn":
178
+ console.warn(payload);
179
+ break;
180
+ default:
181
+ console.info(payload);
182
+ break;
183
+ }
184
+ return record;
185
+ }
186
+ function readHostedExecutionSafeErrorName(error) {
187
+ if (!(error instanceof Error)) {
188
+ return null;
189
+ }
190
+ const name = error.name.trim();
191
+ return HOSTED_EXECUTION_SAFE_ERROR_NAMES.has(name) ? name : null;
192
+ }
193
+ function extractHostedExecutionHttpStatus(message) {
194
+ const match = /\bhttp\s+(\d{3})\b/iu.exec(message);
195
+ return match?.[1] ?? null;
196
+ }
197
+ function readHostedExecutionSafeConfigurationMessage(message) {
198
+ const normalized = normalizeHostedExecutionOperatorMessage(message);
199
+ return HOSTED_EXECUTION_SAFE_CONFIGURATION_MESSAGE_PATTERNS.some((pattern) => pattern.test(normalized))
200
+ ? normalized
201
+ : null;
202
+ }
203
+ function redactHostedExecutionText(value) {
204
+ return value
205
+ .replace(/\b(authorization)\b\s*:\s*Bearer\s+[A-Za-z0-9._~+/=-]+\b/giu, (_match, key) => `${key}=Bearer [redacted]`)
206
+ .replace(/\bBearer\s+[A-Za-z0-9._~+/=-]+\b/giu, "Bearer [redacted]")
207
+ .replace(/\b([A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,})\b/gu, "[redacted-email]")
208
+ .replace(/\b(authorization)\b\s*[:=]\s*(?!Bearer\b)(?:"[^"]+"|'[^']+'|\S+)/giu, (_match, key) => `${key}=[redacted]`)
209
+ .replace(/\b((?:[A-Z][A-Z0-9_]*_)?(?:token|secret|password|passcode|api[_-]?key|cookie|set-cookie))\b\s*[:=]\s*(?:"[^"]+"|'[^']+'|\S+)/giu, "$1=[redacted]")
210
+ .replace(/\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/gu, "[redacted-token]");
211
+ }
212
+ //# sourceMappingURL=observability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observability.js","sourceRoot":"","sources":["../src/observability.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { HostedExecutionDispatchRequest } from "./contracts.ts";
2
+ import { type HostedExecutionDispatchRef, type HostedExecutionDispatchRefFallback } from "./dispatch-ref.ts";
3
+ export declare const HOSTED_EXECUTION_OUTBOX_PAYLOAD_SCHEMA_VERSION = "murph.execution-outbox.v2";
4
+ export type HostedExecutionOutboxPayloadStorage = "inline" | "reference";
5
+ export interface HostedExecutionInlineOutboxPayload {
6
+ dispatch: HostedExecutionDispatchRequest;
7
+ schemaVersion: typeof HOSTED_EXECUTION_OUTBOX_PAYLOAD_SCHEMA_VERSION;
8
+ storage: "inline";
9
+ }
10
+ export interface HostedExecutionReferenceOutboxPayload {
11
+ dispatchRef: HostedExecutionDispatchRef;
12
+ schemaVersion: typeof HOSTED_EXECUTION_OUTBOX_PAYLOAD_SCHEMA_VERSION;
13
+ storage: "reference";
14
+ }
15
+ export type HostedExecutionOutboxPayload = HostedExecutionInlineOutboxPayload | HostedExecutionReferenceOutboxPayload;
16
+ export declare function buildHostedExecutionOutboxPayload(dispatch: HostedExecutionDispatchRequest, options?: {
17
+ storage?: HostedExecutionOutboxPayloadStorage | "auto";
18
+ }): HostedExecutionOutboxPayload;
19
+ export declare function readHostedExecutionOutboxPayload(payloadJson: unknown, fallback: HostedExecutionDispatchRefFallback): HostedExecutionOutboxPayload | null;
20
+ export declare function resolveHostedExecutionOutboxPayloadStorage(dispatch: HostedExecutionDispatchRequest, requested: HostedExecutionOutboxPayloadStorage | "auto"): HostedExecutionOutboxPayloadStorage;
21
+ //# sourceMappingURL=outbox-payload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outbox-payload.d.ts","sourceRoot":"","sources":["../src/outbox-payload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAC;AAIrE,OAAO,EAGL,KAAK,0BAA0B,EAC/B,KAAK,kCAAkC,EACxC,MAAM,mBAAmB,CAAC;AAE3B,eAAO,MAAM,8CAA8C,8BAA8B,CAAC;AAE1F,MAAM,MAAM,mCAAmC,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEzE,MAAM,WAAW,kCAAkC;IACjD,QAAQ,EAAE,8BAA8B,CAAC;IACzC,aAAa,EAAE,OAAO,8CAA8C,CAAC;IACrE,OAAO,EAAE,QAAQ,CAAC;CACnB;AAED,MAAM,WAAW,qCAAqC;IACpD,WAAW,EAAE,0BAA0B,CAAC;IACxC,aAAa,EAAE,OAAO,8CAA8C,CAAC;IACrE,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,MAAM,4BAA4B,GACpC,kCAAkC,GAClC,qCAAqC,CAAC;AAE1C,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,8BAA8B,EACxC,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,mCAAmC,GAAG,MAAM,CAAC;CACnD,GACL,4BAA4B,CAgB9B;AAED,wBAAgB,gCAAgC,CAC9C,WAAW,EAAE,OAAO,EACpB,QAAQ,EAAE,kCAAkC,GAC3C,4BAA4B,GAAG,IAAI,CA6BrC;AAED,wBAAgB,0CAA0C,CACxD,QAAQ,EAAE,8BAA8B,EACxC,SAAS,EAAE,mCAAmC,GAAG,MAAM,GACtD,mCAAmC,CAmBrC"}
@@ -0,0 +1,72 @@
1
+ import { parseHostedExecutionDispatchRequest, } from "./parsers.js";
2
+ import { buildHostedExecutionDispatchRef, readHostedExecutionDispatchRef, } from "./dispatch-ref.js";
3
+ export const HOSTED_EXECUTION_OUTBOX_PAYLOAD_SCHEMA_VERSION = "murph.execution-outbox.v2";
4
+ export function buildHostedExecutionOutboxPayload(dispatch, options = {}) {
5
+ const storage = resolveHostedExecutionOutboxPayloadStorage(dispatch, options.storage ?? "auto");
6
+ if (storage === "inline") {
7
+ return {
8
+ dispatch: parseHostedExecutionDispatchRequest(dispatch),
9
+ schemaVersion: HOSTED_EXECUTION_OUTBOX_PAYLOAD_SCHEMA_VERSION,
10
+ storage,
11
+ };
12
+ }
13
+ return {
14
+ dispatchRef: buildHostedExecutionDispatchRef(dispatch),
15
+ schemaVersion: HOSTED_EXECUTION_OUTBOX_PAYLOAD_SCHEMA_VERSION,
16
+ storage,
17
+ };
18
+ }
19
+ export function readHostedExecutionOutboxPayload(payloadJson, fallback) {
20
+ const payloadObject = toObject(payloadJson);
21
+ const schemaVersion = readText(payloadObject.schemaVersion);
22
+ if (schemaVersion === HOSTED_EXECUTION_OUTBOX_PAYLOAD_SCHEMA_VERSION) {
23
+ const storage = readText(payloadObject.storage);
24
+ if (storage === "inline") {
25
+ return {
26
+ dispatch: parseHostedExecutionDispatchRequest(payloadObject.dispatch),
27
+ schemaVersion: HOSTED_EXECUTION_OUTBOX_PAYLOAD_SCHEMA_VERSION,
28
+ storage,
29
+ };
30
+ }
31
+ if (storage === "reference") {
32
+ const dispatchRef = readHostedExecutionDispatchRef(payloadObject, fallback);
33
+ return dispatchRef
34
+ ? {
35
+ dispatchRef,
36
+ schemaVersion: HOSTED_EXECUTION_OUTBOX_PAYLOAD_SCHEMA_VERSION,
37
+ storage,
38
+ }
39
+ : null;
40
+ }
41
+ return null;
42
+ }
43
+ return null;
44
+ }
45
+ export function resolveHostedExecutionOutboxPayloadStorage(dispatch, requested) {
46
+ if (requested !== "auto") {
47
+ return requested;
48
+ }
49
+ switch (dispatch.event.kind) {
50
+ case "linq.message.received":
51
+ case "telegram.message.received":
52
+ case "email.message.received":
53
+ return "reference";
54
+ case "member.activated":
55
+ case "assistant.cron.tick":
56
+ case "device-sync.wake":
57
+ case "vault.share.accepted":
58
+ case "gateway.message.send":
59
+ return "inline";
60
+ default:
61
+ throw new TypeError("Unsupported hosted execution event kind.");
62
+ }
63
+ }
64
+ function readText(value) {
65
+ return typeof value === "string" && value.trim().length > 0 ? value : null;
66
+ }
67
+ function toObject(value) {
68
+ return value && typeof value === "object" && !Array.isArray(value)
69
+ ? value
70
+ : {};
71
+ }
72
+ //# sourceMappingURL=outbox-payload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outbox-payload.js","sourceRoot":"","sources":["../src/outbox-payload.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mCAAmC,GACpC,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,+BAA+B,EAC/B,8BAA8B,GAG/B,MAAM,mBAAmB,CAAC;AAE3B,MAAM,CAAC,MAAM,8CAA8C,GAAG,2BAA2B,CAAC;AAoB1F,MAAM,UAAU,iCAAiC,CAC/C,QAAwC,EACxC,UAEI,EAAE;IAEN,MAAM,OAAO,GAAG,0CAA0C,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC;IAEhG,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO;YACL,QAAQ,EAAE,mCAAmC,CAAC,QAAQ,CAAC;YACvD,aAAa,EAAE,8CAA8C;YAC7D,OAAO;SACR,CAAC;IACJ,CAAC;IAED,OAAO;QACL,WAAW,EAAE,+BAA+B,CAAC,QAAQ,CAAC;QACtD,aAAa,EAAE,8CAA8C;QAC7D,OAAO;KACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,WAAoB,EACpB,QAA4C;IAE5C,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IAE5D,IAAI,aAAa,KAAK,8CAA8C,EAAE,CAAC;QACrE,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAEhD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;YACzB,OAAO;gBACL,QAAQ,EAAE,mCAAmC,CAAC,aAAa,CAAC,QAAQ,CAAC;gBACrE,aAAa,EAAE,8CAA8C;gBAC7D,OAAO;aACR,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;YAC5B,MAAM,WAAW,GAAG,8BAA8B,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;YAC5E,OAAO,WAAW;gBAChB,CAAC,CAAC;oBACE,WAAW;oBACX,aAAa,EAAE,8CAA8C;oBAC7D,OAAO;iBACR;gBACH,CAAC,CAAC,IAAI,CAAC;QACX,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,0CAA0C,CACxD,QAAwC,EACxC,SAAuD;IAEvD,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,QAAQ,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC5B,KAAK,uBAAuB,CAAC;QAC7B,KAAK,2BAA2B,CAAC;QACjC,KAAK,wBAAwB;YAC3B,OAAO,WAAW,CAAC;QACrB,KAAK,kBAAkB,CAAC;QACxB,KAAK,qBAAqB,CAAC;QAC3B,KAAK,kBAAkB,CAAC;QACxB,KAAK,sBAAsB,CAAC;QAC5B,KAAK,sBAAsB;YACzB,OAAO,QAAQ,CAAC;QAClB;YACE,MAAM,IAAI,SAAS,CAAC,0CAA0C,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7E,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAChE,CAAC,CAAC,KAAgC;QAClC,CAAC,CAAC,EAAE,CAAC;AACT,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { HostedExecutionBundleRef, HostedExecutionDeviceSyncRuntimeApplyResponse, HostedExecutionDeviceSyncRuntimeSnapshotResponse, HostedExecutionDispatchResult, HostedExecutionDispatchRequest, HostedExecutionEvent, HostedExecutionRunnerRequest, HostedExecutionRunnerResult, HostedExecutionSharePackResponse, HostedExecutionShareReference, HostedExecutionUserEnvStatus, HostedExecutionUserEnvUpdate, HostedExecutionUserStatus } from "./contracts.ts";
2
+ import { type HostedExecutionBundlePayloads, type HostedExecutionBundleRefs } from "./bundles.ts";
3
+ import type { HostedExecutionRunContext, HostedExecutionRunStatus, HostedExecutionTimelineEntry } from "./observability.ts";
4
+ export declare function parseHostedExecutionDispatchRequest(value: unknown): HostedExecutionDispatchRequest;
5
+ export declare function parseHostedExecutionRunnerRequest(value: unknown): HostedExecutionRunnerRequest;
6
+ export declare function parseHostedExecutionRunnerResult(value: unknown): HostedExecutionRunnerResult;
7
+ export declare function parseHostedExecutionDispatchResult(value: unknown): HostedExecutionDispatchResult;
8
+ export declare function parseHostedExecutionUserStatus(value: unknown): HostedExecutionUserStatus;
9
+ export declare function parseHostedExecutionRunContext(value: unknown): HostedExecutionRunContext;
10
+ export declare function parseHostedExecutionRunStatus(value: unknown): HostedExecutionRunStatus;
11
+ export declare function parseHostedExecutionTimelineEntries(value: unknown): HostedExecutionTimelineEntry[];
12
+ export declare function parseHostedExecutionBundlePayloads(value: unknown, label?: string): HostedExecutionBundlePayloads;
13
+ export declare function parseHostedExecutionBundleRefsRecord(value: unknown, label?: string): HostedExecutionBundleRefs;
14
+ export declare function parseHostedExecutionUserEnvStatus(value: unknown): HostedExecutionUserEnvStatus;
15
+ export declare function parseHostedExecutionUserEnvUpdate(value: unknown): HostedExecutionUserEnvUpdate;
16
+ export declare function parseHostedExecutionSharePackResponse(value: unknown): HostedExecutionSharePackResponse;
17
+ export declare function parseHostedExecutionDeviceSyncRuntimeSnapshotResponse(value: unknown): HostedExecutionDeviceSyncRuntimeSnapshotResponse;
18
+ export declare function parseHostedExecutionDeviceSyncRuntimeApplyResponse(value: unknown): HostedExecutionDeviceSyncRuntimeApplyResponse;
19
+ export declare function parseHostedExecutionBundleRef(value: unknown, label?: string): HostedExecutionBundleRef | null;
20
+ export declare function parseHostedExecutionEvent(value: unknown): HostedExecutionEvent;
21
+ export declare function parseHostedExecutionShareReference(value: unknown): HostedExecutionShareReference;
22
+ //# sourceMappingURL=parsers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../src/parsers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,wBAAwB,EAExB,6CAA6C,EAK7C,gDAAgD,EAEhD,6BAA6B,EAC7B,8BAA8B,EAE9B,oBAAoB,EAIpB,4BAA4B,EAC5B,2BAA2B,EAC3B,gCAAgC,EAChC,6BAA6B,EAC7B,4BAA4B,EAC5B,4BAA4B,EAC5B,yBAAyB,EAE1B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEL,KAAK,6BAA6B,EAClC,KAAK,yBAAyB,EAC/B,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EACV,yBAAyB,EACzB,wBAAwB,EACxB,4BAA4B,EAC7B,MAAM,oBAAoB,CAAC;AAM5B,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,OAAO,GAAG,8BAA8B,CAQlG;AAED,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,OAAO,GAAG,4BAA4B,CAa9F;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,GAAG,2BAA2B,CAkB5F;AAED,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,OAAO,GAAG,6BAA6B,CAgBhG;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG,yBAAyB,CA8CxF;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG,yBAAyB,CAQxF;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,OAAO,GAAG,wBAAwB,CAgBtF;AAED,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,OAAO,GAAG,4BAA4B,EAAE,CAkClG;AAED,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,OAAO,EACd,KAAK,SAA6B,GACjC,6BAA6B,CAM/B;AAED,wBAAgB,oCAAoC,CAClD,KAAK,EAAE,OAAO,EACd,KAAK,SAAiC,GACrC,yBAAyB,CAM3B;AAED,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,OAAO,GAAG,4BAA4B,CAU9F;AAED,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,OAAO,GAAG,4BAA4B,CAkB9F;AAED,wBAAgB,qCAAqC,CAAC,KAAK,EAAE,OAAO,GAAG,gCAAgC,CAOtG;AAED,wBAAgB,qDAAqD,CACnE,KAAK,EAAE,OAAO,GACb,gDAAgD,CAclD;AAED,wBAAgB,kDAAkD,CAChE,KAAK,EAAE,OAAO,GACb,6CAA6C,CAW/C;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,OAAO,EACd,KAAK,SAAgC,GACpC,wBAAwB,GAAG,IAAI,CAajC;AA2ID,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,CA2G9E;AAED,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,OAAO,GAAG,6BAA6B,CAOhG"}