@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.
- package/LICENSE +674 -0
- package/README.md +24 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/auth.d.ts +24 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +85 -0
- package/dist/auth.js.map +1 -0
- package/dist/builders.d.ts +59 -0
- package/dist/builders.d.ts.map +1 -0
- package/dist/builders.js +104 -0
- package/dist/builders.js.map +1 -0
- package/dist/bundles.d.ts +14 -0
- package/dist/bundles.d.ts.map +1 -0
- package/dist/bundles.js +17 -0
- package/dist/bundles.js.map +1 -0
- package/dist/callback-hosts.d.ts +19 -0
- package/dist/callback-hosts.d.ts.map +1 -0
- package/dist/callback-hosts.js +19 -0
- package/dist/callback-hosts.js.map +1 -0
- package/dist/client.d.ts +26 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +165 -0
- package/dist/client.js.map +1 -0
- package/dist/contracts.d.ts +252 -0
- package/dist/contracts.d.ts.map +1 -0
- package/dist/contracts.js +100 -0
- package/dist/contracts.js.map +1 -0
- package/dist/dispatch-ref.d.ts +17 -0
- package/dist/dispatch-ref.d.ts.map +1 -0
- package/dist/dispatch-ref.js +74 -0
- package/dist/dispatch-ref.js.map +1 -0
- package/dist/env.d.ts +46 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +116 -0
- package/dist/env.js.map +1 -0
- package/dist/hosted-email.d.ts +15 -0
- package/dist/hosted-email.d.ts.map +1 -0
- package/dist/hosted-email.js +76 -0
- package/dist/hosted-email.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/observability.d.ts +65 -0
- package/dist/observability.d.ts.map +1 -0
- package/dist/observability.js +212 -0
- package/dist/observability.js.map +1 -0
- package/dist/outbox-payload.d.ts +21 -0
- package/dist/outbox-payload.d.ts.map +1 -0
- package/dist/outbox-payload.js +72 -0
- package/dist/outbox-payload.js.map +1 -0
- package/dist/parsers.d.ts +22 -0
- package/dist/parsers.d.ts.map +1 -0
- package/dist/parsers.js +537 -0
- package/dist/parsers.js.map +1 -0
- package/dist/routes.d.ts +9 -0
- package/dist/routes.d.ts.map +1 -0
- package/dist/routes.js +17 -0
- package/dist/routes.js.map +1 -0
- package/dist/side-effects.d.ts +59 -0
- package/dist/side-effects.d.ts.map +1 -0
- package/dist/side-effects.js +162 -0
- package/dist/side-effects.js.map +1 -0
- package/dist/web-control-plane.d.ts +105 -0
- package/dist/web-control-plane.d.ts.map +1 -0
- package/dist/web-control-plane.js +358 -0
- package/dist/web-control-plane.js.map +1 -0
- package/package.json +38 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { HOSTED_EXECUTION_EVENT_KINDS } from "./contracts.js";
|
|
2
|
+
const HOSTED_EXECUTION_EVENT_KIND_SET = new Set(HOSTED_EXECUTION_EVENT_KINDS);
|
|
3
|
+
const HOSTED_EXECUTION_OUTBOX_PAYLOAD_SCHEMA_VERSION = "murph.execution-outbox.v2";
|
|
4
|
+
export function buildHostedExecutionDispatchRef(dispatch) {
|
|
5
|
+
return {
|
|
6
|
+
eventId: dispatch.eventId,
|
|
7
|
+
eventKind: dispatch.event.kind,
|
|
8
|
+
occurredAt: dispatch.occurredAt,
|
|
9
|
+
...(dispatch.event.kind === "vault.share.accepted"
|
|
10
|
+
? {
|
|
11
|
+
share: {
|
|
12
|
+
shareCode: dispatch.event.share.shareCode,
|
|
13
|
+
shareId: dispatch.event.share.shareId,
|
|
14
|
+
},
|
|
15
|
+
}
|
|
16
|
+
: {}),
|
|
17
|
+
userId: dispatch.event.userId,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export function readHostedExecutionDispatchRef(payloadJson, fallback) {
|
|
21
|
+
const payloadObject = toHostedExecutionObject(payloadJson);
|
|
22
|
+
const nestedRef = toHostedExecutionObject(payloadObject.dispatchRef);
|
|
23
|
+
const schemaVersion = readHostedExecutionText(payloadObject.schemaVersion);
|
|
24
|
+
const storage = readHostedExecutionText(payloadObject.storage);
|
|
25
|
+
if (schemaVersion !== HOSTED_EXECUTION_OUTBOX_PAYLOAD_SCHEMA_VERSION || storage !== "reference") {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
const eventId = readHostedExecutionText(nestedRef.eventId) ?? fallback.eventId;
|
|
29
|
+
const eventKind = readHostedExecutionEventKind(nestedRef.eventKind) ?? readHostedExecutionEventKind(fallback.eventKind);
|
|
30
|
+
const occurredAt = readHostedExecutionText(nestedRef.occurredAt) ?? fallback.occurredAt;
|
|
31
|
+
const share = readHostedExecutionShareReference(nestedRef.share);
|
|
32
|
+
const userId = readHostedExecutionText(nestedRef.userId) ?? fallback.userId;
|
|
33
|
+
if (!eventId || !eventKind || !occurredAt || !userId) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
eventId,
|
|
38
|
+
eventKind,
|
|
39
|
+
occurredAt,
|
|
40
|
+
...(share ? { share } : {}),
|
|
41
|
+
userId,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function readHostedExecutionEventKind(value) {
|
|
45
|
+
return typeof value === "string" && HOSTED_EXECUTION_EVENT_KIND_SET.has(value)
|
|
46
|
+
? value
|
|
47
|
+
: null;
|
|
48
|
+
}
|
|
49
|
+
function readHostedExecutionShareReference(value) {
|
|
50
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
const record = value;
|
|
54
|
+
const shareId = readHostedExecutionText(record.shareId);
|
|
55
|
+
const shareCode = readHostedExecutionText(record.shareCode);
|
|
56
|
+
if (!shareId || !shareCode) {
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
shareCode,
|
|
61
|
+
shareId,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
function readHostedExecutionText(value) {
|
|
65
|
+
return typeof value === "string" && value.trim().length > 0
|
|
66
|
+
? value
|
|
67
|
+
: null;
|
|
68
|
+
}
|
|
69
|
+
function toHostedExecutionObject(value) {
|
|
70
|
+
return value && typeof value === "object" && !Array.isArray(value)
|
|
71
|
+
? value
|
|
72
|
+
: {};
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=dispatch-ref.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatch-ref.js","sourceRoot":"","sources":["../src/dispatch-ref.ts"],"names":[],"mappings":"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"}
|
package/dist/env.d.ts
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export interface HostedExecutionDispatchEnvironment {
|
|
2
|
+
dispatchTimeoutMs: number;
|
|
3
|
+
dispatchUrl: string | null;
|
|
4
|
+
signingSecret: string | null;
|
|
5
|
+
}
|
|
6
|
+
export interface HostedExecutionControlEnvironment {
|
|
7
|
+
baseUrl: string | null;
|
|
8
|
+
controlToken: string | null;
|
|
9
|
+
}
|
|
10
|
+
export interface HostedExecutionWebControlPlaneEnvironment {
|
|
11
|
+
deviceSyncRuntimeBaseUrl: string | null;
|
|
12
|
+
internalToken: string | null;
|
|
13
|
+
schedulerToken: string | null;
|
|
14
|
+
shareBaseUrl: string | null;
|
|
15
|
+
shareToken: string | null;
|
|
16
|
+
usageBaseUrl?: string | null;
|
|
17
|
+
}
|
|
18
|
+
export interface HostedExecutionWorkerEnvironment {
|
|
19
|
+
allowedUserEnvKeys: string | null;
|
|
20
|
+
allowedUserEnvPrefixes: string | null;
|
|
21
|
+
bundleEncryptionKeyBase64: string;
|
|
22
|
+
bundleEncryptionKeyId: string;
|
|
23
|
+
bundleEncryptionKeyringJson: string | null;
|
|
24
|
+
controlToken: string | null;
|
|
25
|
+
defaultAlarmDelayMs: number;
|
|
26
|
+
dispatchSigningSecret: string;
|
|
27
|
+
maxEventAttempts: number;
|
|
28
|
+
retryDelayMs: number;
|
|
29
|
+
runnerControlToken: string | null;
|
|
30
|
+
runnerTimeoutMs: number;
|
|
31
|
+
}
|
|
32
|
+
type EnvSource = Readonly<Record<string, string | undefined>>;
|
|
33
|
+
export interface HostedExecutionBaseUrlNormalizationOptions {
|
|
34
|
+
allowHttpHosts?: readonly string[];
|
|
35
|
+
allowHttpLocalhost?: boolean;
|
|
36
|
+
}
|
|
37
|
+
export declare function readHostedExecutionDispatchEnvironment(source?: EnvSource): HostedExecutionDispatchEnvironment;
|
|
38
|
+
export declare function readHostedExecutionControlEnvironment(source?: EnvSource): HostedExecutionControlEnvironment;
|
|
39
|
+
export declare function readHostedExecutionWebControlPlaneEnvironment(source?: EnvSource, options?: HostedExecutionBaseUrlNormalizationOptions): HostedExecutionWebControlPlaneEnvironment;
|
|
40
|
+
export declare function readHostedExecutionVercelProductionBaseUrl(source?: EnvSource, options?: HostedExecutionBaseUrlNormalizationOptions): string | null;
|
|
41
|
+
export declare function readHostedExecutionWorkerEnvironment(source?: EnvSource): HostedExecutionWorkerEnvironment;
|
|
42
|
+
export declare function normalizeHostedExecutionBaseUrl(value: string | null | undefined, options?: HostedExecutionBaseUrlNormalizationOptions): string | null;
|
|
43
|
+
export declare function hostedAssistantAutomationEnabledFromEnv(env: Readonly<Record<string, string | undefined>>): boolean;
|
|
44
|
+
export declare function normalizeHostedExecutionString(value: string | null | undefined): string | null;
|
|
45
|
+
export {};
|
|
46
|
+
//# sourceMappingURL=env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kCAAkC;IACjD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,iCAAiC;IAChD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,yCAAyC;IACxD,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,gCAAgC;IAC/C,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,yBAAyB,EAAE,MAAM,CAAC;IAClC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,2BAA2B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,KAAK,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AAE9D,MAAM,WAAW,0CAA0C;IACzD,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAgB,sCAAsC,CACpD,MAAM,GAAE,SAAuB,GAC9B,kCAAkC,CAcpC;AAED,wBAAgB,qCAAqC,CACnD,MAAM,GAAE,SAAuB,GAC9B,iCAAiC,CAOnC;AAED,wBAAgB,6CAA6C,CAC3D,MAAM,GAAE,SAAuB,EAC/B,OAAO,CAAC,EAAE,0CAA0C,GACnD,yCAAyC,CAmB3C;AAED,wBAAgB,0CAA0C,CACxD,MAAM,GAAE,SAAuB,EAC/B,OAAO,CAAC,EAAE,0CAA0C,GACnD,MAAM,GAAG,IAAI,CAYf;AAED,wBAAgB,oCAAoC,CAClD,MAAM,GAAE,SAAuB,GAC9B,gCAAgC,CAyClC;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,OAAO,CAAC,EAAE,0CAA0C,GACnD,MAAM,GAAG,IAAI,CA+Bf;AAED,wBAAgB,uCAAuC,CACrD,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,GAChD,OAAO,CAcT;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAO9F"}
|
package/dist/env.js
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
export function readHostedExecutionDispatchEnvironment(source = process.env) {
|
|
2
|
+
const dispatchUrl = normalizeHostedExecutionBaseUrl(source.HOSTED_EXECUTION_DISPATCH_URL);
|
|
3
|
+
const signingSecret = normalizeHostedExecutionString(source.HOSTED_EXECUTION_SIGNING_SECRET);
|
|
4
|
+
const dispatchTimeout = normalizeHostedExecutionString(source.HOSTED_EXECUTION_DISPATCH_TIMEOUT_MS);
|
|
5
|
+
return {
|
|
6
|
+
dispatchTimeoutMs: parsePositiveInteger(dispatchTimeout, 30_000, "HOSTED_EXECUTION_DISPATCH_TIMEOUT_MS"),
|
|
7
|
+
dispatchUrl,
|
|
8
|
+
signingSecret,
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export function readHostedExecutionControlEnvironment(source = process.env) {
|
|
12
|
+
const dispatchUrl = normalizeHostedExecutionBaseUrl(source.HOSTED_EXECUTION_DISPATCH_URL);
|
|
13
|
+
return {
|
|
14
|
+
baseUrl: dispatchUrl,
|
|
15
|
+
controlToken: normalizeHostedExecutionString(source.HOSTED_EXECUTION_CONTROL_TOKEN),
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export function readHostedExecutionWebControlPlaneEnvironment(source = process.env, options) {
|
|
19
|
+
const sharedBaseUrl = normalizeHostedExecutionBaseUrl(source.HOSTED_WEB_BASE_URL, options)
|
|
20
|
+
?? readHostedExecutionVercelProductionBaseUrl(source, options);
|
|
21
|
+
return {
|
|
22
|
+
deviceSyncRuntimeBaseUrl: normalizeHostedExecutionBaseUrl(source.HOSTED_DEVICE_SYNC_CONTROL_BASE_URL, options) ?? sharedBaseUrl,
|
|
23
|
+
internalToken: normalizeHostedExecutionString(source.HOSTED_EXECUTION_INTERNAL_TOKEN),
|
|
24
|
+
schedulerToken: normalizeHostedExecutionString(source.CRON_SECRET),
|
|
25
|
+
shareBaseUrl: normalizeHostedExecutionBaseUrl(source.HOSTED_SHARE_API_BASE_URL, options) ?? sharedBaseUrl,
|
|
26
|
+
shareToken: normalizeHostedExecutionString(source.HOSTED_SHARE_INTERNAL_TOKEN),
|
|
27
|
+
usageBaseUrl: normalizeHostedExecutionBaseUrl(source.HOSTED_AI_USAGE_BASE_URL, options) ?? sharedBaseUrl,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export function readHostedExecutionVercelProductionBaseUrl(source = process.env, options) {
|
|
31
|
+
const productionUrl = normalizeHostedExecutionString(source.VERCEL_PROJECT_PRODUCTION_URL);
|
|
32
|
+
if (!productionUrl) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
const normalizedInput = /^[a-z][a-z\d+.-]*:\/\//iu.test(productionUrl)
|
|
36
|
+
? productionUrl
|
|
37
|
+
: `https://${productionUrl}`;
|
|
38
|
+
return normalizeHostedExecutionBaseUrl(normalizedInput, options);
|
|
39
|
+
}
|
|
40
|
+
export function readHostedExecutionWorkerEnvironment(source = process.env) {
|
|
41
|
+
return {
|
|
42
|
+
allowedUserEnvKeys: normalizeHostedExecutionString(source.HOSTED_EXECUTION_ALLOWED_USER_ENV_KEYS),
|
|
43
|
+
allowedUserEnvPrefixes: normalizeHostedExecutionString(source.HOSTED_EXECUTION_ALLOWED_USER_ENV_PREFIXES),
|
|
44
|
+
bundleEncryptionKeyBase64: requireHostedExecutionString(source.HOSTED_EXECUTION_BUNDLE_ENCRYPTION_KEY, "HOSTED_EXECUTION_BUNDLE_ENCRYPTION_KEY"),
|
|
45
|
+
bundleEncryptionKeyId: normalizeHostedExecutionString(source.HOSTED_EXECUTION_BUNDLE_ENCRYPTION_KEY_ID) ?? "v1",
|
|
46
|
+
bundleEncryptionKeyringJson: normalizeHostedExecutionString(source.HOSTED_EXECUTION_BUNDLE_ENCRYPTION_KEYRING_JSON),
|
|
47
|
+
controlToken: normalizeHostedExecutionString(source.HOSTED_EXECUTION_CONTROL_TOKEN),
|
|
48
|
+
defaultAlarmDelayMs: parsePositiveInteger(normalizeHostedExecutionString(source.HOSTED_EXECUTION_DEFAULT_ALARM_DELAY_MS), 15 * 60 * 1000, "HOSTED_EXECUTION_DEFAULT_ALARM_DELAY_MS"),
|
|
49
|
+
dispatchSigningSecret: requireHostedExecutionString(normalizeHostedExecutionString(source.HOSTED_EXECUTION_SIGNING_SECRET), "HOSTED_EXECUTION_SIGNING_SECRET"),
|
|
50
|
+
maxEventAttempts: parsePositiveInteger(normalizeHostedExecutionString(source.HOSTED_EXECUTION_MAX_EVENT_ATTEMPTS), 3, "HOSTED_EXECUTION_MAX_EVENT_ATTEMPTS"),
|
|
51
|
+
retryDelayMs: parsePositiveInteger(normalizeHostedExecutionString(source.HOSTED_EXECUTION_RETRY_DELAY_MS), 30_000, "HOSTED_EXECUTION_RETRY_DELAY_MS"),
|
|
52
|
+
runnerControlToken: normalizeHostedExecutionString(source.HOSTED_EXECUTION_RUNNER_CONTROL_TOKEN),
|
|
53
|
+
runnerTimeoutMs: parsePositiveInteger(normalizeHostedExecutionString(source.HOSTED_EXECUTION_RUNNER_TIMEOUT_MS), 60_000, "HOSTED_EXECUTION_RUNNER_TIMEOUT_MS"),
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
export function normalizeHostedExecutionBaseUrl(value, options) {
|
|
57
|
+
const normalized = normalizeHostedExecutionString(value);
|
|
58
|
+
if (!normalized) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
const url = new URL(normalized);
|
|
62
|
+
const protocol = url.protocol.toLowerCase();
|
|
63
|
+
const hostname = url.hostname.toLowerCase();
|
|
64
|
+
const allowHttpHosts = new Set((options?.allowHttpHosts ?? []).map((entry) => entry.toLowerCase()));
|
|
65
|
+
const allowHttp = protocol === "http:"
|
|
66
|
+
&& (allowHttpHosts.has(hostname)
|
|
67
|
+
|| (options?.allowHttpLocalhost === true && isHostedExecutionLoopbackHost(hostname)));
|
|
68
|
+
if (protocol !== "https:" && !allowHttp) {
|
|
69
|
+
throw new TypeError("Hosted execution base URLs must use HTTPS unless the host is explicitly allowlisted for HTTP.");
|
|
70
|
+
}
|
|
71
|
+
if (url.username || url.password) {
|
|
72
|
+
throw new TypeError("Hosted execution base URLs must not include embedded credentials.");
|
|
73
|
+
}
|
|
74
|
+
url.hash = "";
|
|
75
|
+
url.search = "";
|
|
76
|
+
return url.toString().replace(/\/$/u, "");
|
|
77
|
+
}
|
|
78
|
+
export function hostedAssistantAutomationEnabledFromEnv(env) {
|
|
79
|
+
const normalized = normalizeHostedExecutionString(env.HOSTED_EXECUTION_ENABLE_ASSISTANT_AUTOMATION)?.toLowerCase();
|
|
80
|
+
if (!normalized) {
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
return normalized !== "0"
|
|
84
|
+
&& normalized !== "false"
|
|
85
|
+
&& normalized !== "no"
|
|
86
|
+
&& normalized !== "off"
|
|
87
|
+
&& normalized !== "disabled";
|
|
88
|
+
}
|
|
89
|
+
export function normalizeHostedExecutionString(value) {
|
|
90
|
+
if (typeof value !== "string") {
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
const normalized = value.trim();
|
|
94
|
+
return normalized.length > 0 ? normalized : null;
|
|
95
|
+
}
|
|
96
|
+
function requireHostedExecutionString(value, label) {
|
|
97
|
+
const normalized = normalizeHostedExecutionString(value);
|
|
98
|
+
if (!normalized) {
|
|
99
|
+
throw new TypeError(`${label} is required.`);
|
|
100
|
+
}
|
|
101
|
+
return normalized;
|
|
102
|
+
}
|
|
103
|
+
function parsePositiveInteger(value, fallback, label) {
|
|
104
|
+
if (!value) {
|
|
105
|
+
return fallback;
|
|
106
|
+
}
|
|
107
|
+
const parsed = Number.parseInt(value, 10);
|
|
108
|
+
if (!Number.isInteger(parsed) || parsed < 1) {
|
|
109
|
+
throw new RangeError(`${label} must be a positive integer.`);
|
|
110
|
+
}
|
|
111
|
+
return parsed;
|
|
112
|
+
}
|
|
113
|
+
function isHostedExecutionLoopbackHost(hostname) {
|
|
114
|
+
return hostname === "localhost" || hostname === "127.0.0.1" || hostname === "::1" || hostname === "[::1]";
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=env.js.map
|
package/dist/env.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
type EnvSource = Readonly<Record<string, string | undefined>>;
|
|
2
|
+
export interface HostedEmailCapabilities {
|
|
3
|
+
ingressReady: boolean;
|
|
4
|
+
sendReady: boolean;
|
|
5
|
+
senderIdentity: string | null;
|
|
6
|
+
}
|
|
7
|
+
export declare function readHostedEmailCapabilities(source?: EnvSource): HostedEmailCapabilities;
|
|
8
|
+
export declare function resolveHostedEmailSenderIdentity(source?: EnvSource): string | null;
|
|
9
|
+
export declare function resolveHostedEmailSelfAddresses(input: {
|
|
10
|
+
envelopeTo?: string | null;
|
|
11
|
+
extra?: ReadonlyArray<string | null | undefined> | null;
|
|
12
|
+
senderIdentity?: string | null;
|
|
13
|
+
}): string[];
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=hosted-email.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hosted-email.d.ts","sourceRoot":"","sources":["../src/hosted-email.ts"],"names":[],"mappings":"AAEA,KAAK,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AAE9D,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,wBAAgB,2BAA2B,CACzC,MAAM,GAAE,SAAuB,GAC9B,uBAAuB,CAoBzB;AAED,wBAAgB,gCAAgC,CAC9C,MAAM,GAAE,SAAuB,GAC9B,MAAM,GAAG,IAAI,CAcf;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE;IACrD,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC;IACxD,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,GAAG,MAAM,EAAE,CAqBX"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { normalizeHostedExecutionString } from "./env.js";
|
|
2
|
+
export function readHostedEmailCapabilities(source = process.env) {
|
|
3
|
+
const domain = normalizeHostedExecutionString(source.HOSTED_EMAIL_DOMAIN)?.toLowerCase() ?? null;
|
|
4
|
+
const senderIdentity = resolveHostedEmailSenderIdentity(source);
|
|
5
|
+
const signingSecret = normalizeHostedExecutionString(source.HOSTED_EMAIL_SIGNING_SECRET);
|
|
6
|
+
const cloudflareAccountId = normalizeHostedExecutionString(source.HOSTED_EMAIL_CLOUDFLARE_ACCOUNT_ID);
|
|
7
|
+
const cloudflareApiToken = normalizeHostedExecutionString(source.HOSTED_EMAIL_CLOUDFLARE_API_TOKEN);
|
|
8
|
+
const inferredIngressReady = senderIdentity !== null && domain !== null && signingSecret !== null;
|
|
9
|
+
const inferredSendReady = inferredIngressReady
|
|
10
|
+
&& cloudflareAccountId !== null
|
|
11
|
+
&& cloudflareApiToken !== null;
|
|
12
|
+
const ingressReady = senderIdentity !== null
|
|
13
|
+
&& (parseHostedEmailCapabilityFlag(source.HOSTED_EMAIL_INGRESS_READY) ?? inferredIngressReady);
|
|
14
|
+
const sendReady = senderIdentity !== null
|
|
15
|
+
&& (parseHostedEmailCapabilityFlag(source.HOSTED_EMAIL_SEND_READY) ?? inferredSendReady);
|
|
16
|
+
return {
|
|
17
|
+
ingressReady,
|
|
18
|
+
sendReady,
|
|
19
|
+
senderIdentity,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export function resolveHostedEmailSenderIdentity(source = process.env) {
|
|
23
|
+
const explicit = normalizeHostedEmailAddress(source.HOSTED_EMAIL_FROM_ADDRESS);
|
|
24
|
+
if (explicit) {
|
|
25
|
+
return explicit;
|
|
26
|
+
}
|
|
27
|
+
const domain = normalizeHostedExecutionString(source.HOSTED_EMAIL_DOMAIN)?.toLowerCase() ?? null;
|
|
28
|
+
if (!domain) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
const localPart = normalizeHostedExecutionString(source.HOSTED_EMAIL_LOCAL_PART)?.toLowerCase()
|
|
32
|
+
?? "assistant";
|
|
33
|
+
return `${localPart}@${domain}`;
|
|
34
|
+
}
|
|
35
|
+
export function resolveHostedEmailSelfAddresses(input) {
|
|
36
|
+
const seen = new Set();
|
|
37
|
+
const addresses = [];
|
|
38
|
+
const append = (value) => {
|
|
39
|
+
const normalized = normalizeHostedEmailAddress(value);
|
|
40
|
+
if (!normalized || seen.has(normalized)) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
seen.add(normalized);
|
|
44
|
+
addresses.push(normalized);
|
|
45
|
+
};
|
|
46
|
+
append(input.senderIdentity);
|
|
47
|
+
append(input.envelopeTo);
|
|
48
|
+
for (const value of input.extra ?? []) {
|
|
49
|
+
append(value);
|
|
50
|
+
}
|
|
51
|
+
return addresses;
|
|
52
|
+
}
|
|
53
|
+
function normalizeHostedEmailAddress(value) {
|
|
54
|
+
const normalized = normalizeHostedExecutionString(value);
|
|
55
|
+
if (!normalized) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
const angleMatch = normalized.match(/<([^>]+)>/u);
|
|
59
|
+
const candidate = angleMatch?.[1] ?? normalized;
|
|
60
|
+
const trimmed = candidate.trim().toLowerCase();
|
|
61
|
+
return trimmed.length > 0 ? trimmed : null;
|
|
62
|
+
}
|
|
63
|
+
function parseHostedEmailCapabilityFlag(value) {
|
|
64
|
+
const normalized = normalizeHostedExecutionString(value)?.toLowerCase();
|
|
65
|
+
if (!normalized) {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
if (normalized === "1" || normalized === "true") {
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
if (normalized === "0" || normalized === "false") {
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=hosted-email.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hosted-email.js","sourceRoot":"","sources":["../src/hosted-email.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export * from "./auth.ts";
|
|
2
|
+
export * from "./builders.ts";
|
|
3
|
+
export * from "./bundles.ts";
|
|
4
|
+
export * from "./callback-hosts.ts";
|
|
5
|
+
export * from "./client.ts";
|
|
6
|
+
export * from "./contracts.ts";
|
|
7
|
+
export * from "./dispatch-ref.ts";
|
|
8
|
+
export * from "./env.ts";
|
|
9
|
+
export * from "./hosted-email.ts";
|
|
10
|
+
export * from "./outbox-payload.ts";
|
|
11
|
+
export * from "./observability.ts";
|
|
12
|
+
export * from "./parsers.ts";
|
|
13
|
+
export * from "./routes.ts";
|
|
14
|
+
export * from "./side-effects.ts";
|
|
15
|
+
export * from "./web-control-plane.ts";
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export * from "./auth.js";
|
|
2
|
+
export * from "./builders.js";
|
|
3
|
+
export * from "./bundles.js";
|
|
4
|
+
export * from "./callback-hosts.js";
|
|
5
|
+
export * from "./client.js";
|
|
6
|
+
export * from "./contracts.js";
|
|
7
|
+
export * from "./dispatch-ref.js";
|
|
8
|
+
export * from "./env.js";
|
|
9
|
+
export * from "./hosted-email.js";
|
|
10
|
+
export * from "./outbox-payload.js";
|
|
11
|
+
export * from "./observability.js";
|
|
12
|
+
export * from "./parsers.js";
|
|
13
|
+
export * from "./routes.js";
|
|
14
|
+
export * from "./side-effects.js";
|
|
15
|
+
export * from "./web-control-plane.js";
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export declare const HOSTED_EXECUTION_RUN_PHASES: readonly ["claimed", "dispatch.running", "container.starting", "container.ready", "runtime.starting", "commit.recorded", "side-effects.draining", "finalize.recorded", "completed", "retry.scheduled", "failed", "poisoned"];
|
|
2
|
+
export type HostedExecutionRunPhase = (typeof HOSTED_EXECUTION_RUN_PHASES)[number];
|
|
3
|
+
export declare const HOSTED_EXECUTION_RUN_LEVELS: readonly ["info", "warn", "error"];
|
|
4
|
+
export type HostedExecutionRunLevel = (typeof HOSTED_EXECUTION_RUN_LEVELS)[number];
|
|
5
|
+
export interface HostedExecutionRunContext {
|
|
6
|
+
attempt: number;
|
|
7
|
+
runId: string;
|
|
8
|
+
startedAt: string;
|
|
9
|
+
}
|
|
10
|
+
export interface HostedExecutionRunStatus extends HostedExecutionRunContext {
|
|
11
|
+
eventId: string;
|
|
12
|
+
phase: HostedExecutionRunPhase;
|
|
13
|
+
updatedAt: string;
|
|
14
|
+
}
|
|
15
|
+
export interface HostedExecutionTimelineEntry {
|
|
16
|
+
at: string;
|
|
17
|
+
attempt: number;
|
|
18
|
+
component: string;
|
|
19
|
+
errorCode?: string | null;
|
|
20
|
+
eventId: string;
|
|
21
|
+
level: HostedExecutionRunLevel;
|
|
22
|
+
message: string;
|
|
23
|
+
phase: HostedExecutionRunPhase;
|
|
24
|
+
runId: string;
|
|
25
|
+
}
|
|
26
|
+
export interface HostedExecutionStructuredLogRecord {
|
|
27
|
+
attempt: number | null;
|
|
28
|
+
component: string;
|
|
29
|
+
errorCode?: string | null;
|
|
30
|
+
errorMessage?: string | null;
|
|
31
|
+
errorName?: string | null;
|
|
32
|
+
eventId: string | null;
|
|
33
|
+
level: HostedExecutionRunLevel;
|
|
34
|
+
message: string;
|
|
35
|
+
phase: HostedExecutionRunPhase;
|
|
36
|
+
runId: string | null;
|
|
37
|
+
schema: "murph.hosted-execution.log.v1";
|
|
38
|
+
time: string;
|
|
39
|
+
userId: string | null;
|
|
40
|
+
}
|
|
41
|
+
interface HostedExecutionDispatchLike {
|
|
42
|
+
eventId?: string | null;
|
|
43
|
+
}
|
|
44
|
+
export interface HostedExecutionStructuredLogInput {
|
|
45
|
+
component: string;
|
|
46
|
+
dispatch?: HostedExecutionDispatchLike | null;
|
|
47
|
+
error?: unknown;
|
|
48
|
+
eventId?: string | null;
|
|
49
|
+
level?: HostedExecutionRunLevel;
|
|
50
|
+
message: string;
|
|
51
|
+
phase: HostedExecutionRunPhase;
|
|
52
|
+
run?: HostedExecutionRunContext | null;
|
|
53
|
+
time?: string;
|
|
54
|
+
userId?: string | null;
|
|
55
|
+
}
|
|
56
|
+
export declare function isHostedExecutionRunPhase(value: unknown): value is HostedExecutionRunPhase;
|
|
57
|
+
export declare function isHostedExecutionRunLevel(value: unknown): value is HostedExecutionRunLevel;
|
|
58
|
+
export declare function normalizeHostedExecutionErrorMessage(error: unknown): string;
|
|
59
|
+
export declare function normalizeHostedExecutionOperatorMessage(message: string): string;
|
|
60
|
+
export declare function deriveHostedExecutionErrorCode(error: unknown): string;
|
|
61
|
+
export declare function summarizeHostedExecutionError(error: unknown): string;
|
|
62
|
+
export declare function buildHostedExecutionStructuredLogRecord(input: HostedExecutionStructuredLogInput): HostedExecutionStructuredLogRecord;
|
|
63
|
+
export declare function emitHostedExecutionStructuredLog(input: HostedExecutionStructuredLogInput): HostedExecutionStructuredLogRecord;
|
|
64
|
+
export {};
|
|
65
|
+
//# sourceMappingURL=observability.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observability.d.ts","sourceRoot":"","sources":["../src/observability.ts"],"names":[],"mappings":"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"}
|