@muxoai/sdk 1.2.3 → 1.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/.agents/plugins/marketplace.json +22 -0
  2. package/.claude-plugin/marketplace.json +32 -0
  3. package/.codex/config.toml +12 -0
  4. package/ARCHITECTURE.md +121 -0
  5. package/README.md +85 -31
  6. package/dist/clerk.d.ts +35 -0
  7. package/dist/clerk.js +201 -0
  8. package/dist/cli.d.ts +2 -0
  9. package/dist/cli.js +2380 -0
  10. package/dist/composio-catalog.d.ts +234 -0
  11. package/dist/composio-catalog.js +1894 -0
  12. package/dist/config.d.ts +36 -0
  13. package/dist/config.js +115 -0
  14. package/dist/durable-workflow.d.ts +45 -0
  15. package/dist/durable-workflow.js +90 -0
  16. package/dist/engine.d.ts +465 -0
  17. package/dist/engine.js +2560 -0
  18. package/dist/index.d.ts +7 -0
  19. package/dist/index.js +7 -0
  20. package/dist/mcp-schema.d.ts +286 -0
  21. package/dist/mcp-schema.js +2559 -0
  22. package/dist/mcp.d.ts +22 -0
  23. package/dist/mcp.js +1356 -0
  24. package/dist/memory-graph.d.ts +21 -0
  25. package/dist/memory-graph.js +173 -0
  26. package/dist/nl.d.ts +34 -0
  27. package/dist/nl.js +756 -0
  28. package/dist/oauth.d.ts +32 -0
  29. package/dist/oauth.js +134 -0
  30. package/dist/policy.d.ts +190 -0
  31. package/dist/policy.js +1597 -0
  32. package/dist/providers/composio-instant.d.ts +18 -0
  33. package/dist/providers/composio-instant.js +1169 -0
  34. package/dist/providers/composio-sdk.d.ts +162 -0
  35. package/dist/providers/composio-sdk.js +1395 -0
  36. package/dist/providers/microsoft-governance.d.ts +152 -0
  37. package/dist/providers/microsoft-governance.js +1062 -0
  38. package/dist/providers/stripe-billing.d.ts +83 -0
  39. package/dist/providers/stripe-billing.js +611 -0
  40. package/dist/providers/stripe-projects.d.ts +508 -0
  41. package/dist/providers/stripe-projects.js +3188 -0
  42. package/dist/providers/supermemory.d.ts +160 -0
  43. package/dist/providers/supermemory.js +778 -0
  44. package/dist/provisioning-managed.d.ts +50 -0
  45. package/dist/provisioning-managed.js +155 -0
  46. package/dist/sdk.d.ts +951 -0
  47. package/dist/sdk.js +748 -0
  48. package/dist/server.d.ts +10 -0
  49. package/dist/server.js +3575 -0
  50. package/dist/store.d.ts +348 -0
  51. package/dist/store.js +2323 -0
  52. package/dist/types.d.ts +593 -0
  53. package/dist/types.js +1 -0
  54. package/dist/ui/console-html.d.ts +64 -0
  55. package/dist/ui/console-html.js +3857 -0
  56. package/dist/ui/design-tokens.d.ts +177 -0
  57. package/dist/ui/design-tokens.js +210 -0
  58. package/dist/version.d.ts +1 -0
  59. package/dist/version.js +1 -0
  60. package/package.json +68 -7
  61. package/plugins/muxo/.app.json +8 -0
  62. package/plugins/muxo/.claude-plugin/plugin.json +16 -0
  63. package/plugins/muxo/.codex-plugin/plugin.json +64 -0
  64. package/plugins/muxo/.cursor-plugin/plugin.json +30 -0
  65. package/plugins/muxo/.mcp.json +8 -0
  66. package/plugins/muxo/assets/logo.png +0 -0
  67. package/plugins/muxo/assets/logo.svg +6 -0
  68. package/plugins/muxo/hooks/hooks.json +27 -0
  69. package/plugins/muxo/hooks/session-start.sh +97 -0
  70. package/plugins/muxo/hooks/user-prompt-submit.sh +58 -0
  71. package/plugins/muxo/mcp.json +28 -0
  72. package/plugins/muxo/plugin.json +116 -0
  73. package/plugins/muxo/skills/muxo/SKILL.md +153 -0
  74. package/plugins/muxo/skills/muxo/agents/openai.yaml +12 -0
  75. package/plugins/muxo/skills/muxo/references/cli.md +63 -0
  76. package/plugins/muxo/skills/muxo/references/mcp.md +37 -0
  77. package/plugins/muxo/skills/muxo-activity-summary/SKILL.md +81 -0
  78. package/plugins/muxo/skills/setup/SKILL.md +42 -0
  79. package/plugins/muxo/skills/setup/agents/openai.yaml +12 -0
  80. package/src/catalogues/stripe-projects-catalog.json +9972 -0
  81. package/vendor/microsoft-governance/README.md +363 -0
  82. package/vendor/microsoft-governance/dist/audit.d.ts +26 -0
  83. package/vendor/microsoft-governance/dist/audit.d.ts.map +1 -0
  84. package/vendor/microsoft-governance/dist/audit.js +107 -0
  85. package/vendor/microsoft-governance/dist/audit.js.map +1 -0
  86. package/vendor/microsoft-governance/dist/cascade-containment.d.ts +84 -0
  87. package/vendor/microsoft-governance/dist/cascade-containment.d.ts.map +1 -0
  88. package/vendor/microsoft-governance/dist/cascade-containment.js +387 -0
  89. package/vendor/microsoft-governance/dist/cascade-containment.js.map +1 -0
  90. package/vendor/microsoft-governance/dist/client.d.ts +34 -0
  91. package/vendor/microsoft-governance/dist/client.d.ts.map +1 -0
  92. package/vendor/microsoft-governance/dist/client.js +112 -0
  93. package/vendor/microsoft-governance/dist/client.js.map +1 -0
  94. package/vendor/microsoft-governance/dist/context-poisoning.d.ts +58 -0
  95. package/vendor/microsoft-governance/dist/context-poisoning.d.ts.map +1 -0
  96. package/vendor/microsoft-governance/dist/context-poisoning.js +410 -0
  97. package/vendor/microsoft-governance/dist/context-poisoning.js.map +1 -0
  98. package/vendor/microsoft-governance/dist/credential-vault.d.ts +213 -0
  99. package/vendor/microsoft-governance/dist/credential-vault.d.ts.map +1 -0
  100. package/vendor/microsoft-governance/dist/credential-vault.js +567 -0
  101. package/vendor/microsoft-governance/dist/credential-vault.js.map +1 -0
  102. package/vendor/microsoft-governance/dist/discovery.d.ts +80 -0
  103. package/vendor/microsoft-governance/dist/discovery.d.ts.map +1 -0
  104. package/vendor/microsoft-governance/dist/discovery.js +404 -0
  105. package/vendor/microsoft-governance/dist/discovery.js.map +1 -0
  106. package/vendor/microsoft-governance/dist/encryption/channel.d.ts +29 -0
  107. package/vendor/microsoft-governance/dist/encryption/channel.d.ts.map +1 -0
  108. package/vendor/microsoft-governance/dist/encryption/channel.js +78 -0
  109. package/vendor/microsoft-governance/dist/encryption/channel.js.map +1 -0
  110. package/vendor/microsoft-governance/dist/encryption/index.d.ts +9 -0
  111. package/vendor/microsoft-governance/dist/encryption/index.d.ts.map +1 -0
  112. package/vendor/microsoft-governance/dist/encryption/index.js +23 -0
  113. package/vendor/microsoft-governance/dist/encryption/index.js.map +1 -0
  114. package/vendor/microsoft-governance/dist/encryption/mesh-client.d.ts +267 -0
  115. package/vendor/microsoft-governance/dist/encryption/mesh-client.d.ts.map +1 -0
  116. package/vendor/microsoft-governance/dist/encryption/mesh-client.js +1001 -0
  117. package/vendor/microsoft-governance/dist/encryption/mesh-client.js.map +1 -0
  118. package/vendor/microsoft-governance/dist/encryption/ratchet.d.ts +38 -0
  119. package/vendor/microsoft-governance/dist/encryption/ratchet.d.ts.map +1 -0
  120. package/vendor/microsoft-governance/dist/encryption/ratchet.js +223 -0
  121. package/vendor/microsoft-governance/dist/encryption/ratchet.js.map +1 -0
  122. package/vendor/microsoft-governance/dist/encryption/registry-client.d.ts +136 -0
  123. package/vendor/microsoft-governance/dist/encryption/registry-client.d.ts.map +1 -0
  124. package/vendor/microsoft-governance/dist/encryption/registry-client.js +369 -0
  125. package/vendor/microsoft-governance/dist/encryption/registry-client.js.map +1 -0
  126. package/vendor/microsoft-governance/dist/encryption/x3dh.d.ts +80 -0
  127. package/vendor/microsoft-governance/dist/encryption/x3dh.d.ts.map +1 -0
  128. package/vendor/microsoft-governance/dist/encryption/x3dh.js +238 -0
  129. package/vendor/microsoft-governance/dist/encryption/x3dh.js.map +1 -0
  130. package/vendor/microsoft-governance/dist/framework-adapter.d.ts +63 -0
  131. package/vendor/microsoft-governance/dist/framework-adapter.d.ts.map +1 -0
  132. package/vendor/microsoft-governance/dist/framework-adapter.js +253 -0
  133. package/vendor/microsoft-governance/dist/framework-adapter.js.map +1 -0
  134. package/vendor/microsoft-governance/dist/identity.d.ts +124 -0
  135. package/vendor/microsoft-governance/dist/identity.d.ts.map +1 -0
  136. package/vendor/microsoft-governance/dist/identity.js +446 -0
  137. package/vendor/microsoft-governance/dist/identity.js.map +1 -0
  138. package/vendor/microsoft-governance/dist/index.d.ts +39 -0
  139. package/vendor/microsoft-governance/dist/index.d.ts.map +1 -0
  140. package/vendor/microsoft-governance/dist/index.js +95 -0
  141. package/vendor/microsoft-governance/dist/index.js.map +1 -0
  142. package/vendor/microsoft-governance/dist/kill-switch.d.ts +22 -0
  143. package/vendor/microsoft-governance/dist/kill-switch.d.ts.map +1 -0
  144. package/vendor/microsoft-governance/dist/kill-switch.js +60 -0
  145. package/vendor/microsoft-governance/dist/kill-switch.js.map +1 -0
  146. package/vendor/microsoft-governance/dist/lifecycle.d.ts +50 -0
  147. package/vendor/microsoft-governance/dist/lifecycle.d.ts.map +1 -0
  148. package/vendor/microsoft-governance/dist/lifecycle.js +113 -0
  149. package/vendor/microsoft-governance/dist/lifecycle.js.map +1 -0
  150. package/vendor/microsoft-governance/dist/mcp.d.ts +41 -0
  151. package/vendor/microsoft-governance/dist/mcp.d.ts.map +1 -0
  152. package/vendor/microsoft-governance/dist/mcp.js +233 -0
  153. package/vendor/microsoft-governance/dist/mcp.js.map +1 -0
  154. package/vendor/microsoft-governance/dist/metrics.d.ts +123 -0
  155. package/vendor/microsoft-governance/dist/metrics.d.ts.map +1 -0
  156. package/vendor/microsoft-governance/dist/metrics.js +289 -0
  157. package/vendor/microsoft-governance/dist/metrics.js.map +1 -0
  158. package/vendor/microsoft-governance/dist/oci-manifest.d.ts +49 -0
  159. package/vendor/microsoft-governance/dist/oci-manifest.d.ts.map +1 -0
  160. package/vendor/microsoft-governance/dist/oci-manifest.js +182 -0
  161. package/vendor/microsoft-governance/dist/oci-manifest.js.map +1 -0
  162. package/vendor/microsoft-governance/dist/policy-backends/cedar.d.ts +15 -0
  163. package/vendor/microsoft-governance/dist/policy-backends/cedar.d.ts.map +1 -0
  164. package/vendor/microsoft-governance/dist/policy-backends/cedar.js +88 -0
  165. package/vendor/microsoft-governance/dist/policy-backends/cedar.js.map +1 -0
  166. package/vendor/microsoft-governance/dist/policy-backends/opa.d.ts +17 -0
  167. package/vendor/microsoft-governance/dist/policy-backends/opa.d.ts.map +1 -0
  168. package/vendor/microsoft-governance/dist/policy-backends/opa.js +74 -0
  169. package/vendor/microsoft-governance/dist/policy-backends/opa.js.map +1 -0
  170. package/vendor/microsoft-governance/dist/policy.d.ts +77 -0
  171. package/vendor/microsoft-governance/dist/policy.d.ts.map +1 -0
  172. package/vendor/microsoft-governance/dist/policy.js +760 -0
  173. package/vendor/microsoft-governance/dist/policy.js.map +1 -0
  174. package/vendor/microsoft-governance/dist/prompt-defense.d.ts +37 -0
  175. package/vendor/microsoft-governance/dist/prompt-defense.d.ts.map +1 -0
  176. package/vendor/microsoft-governance/dist/prompt-defense.js +229 -0
  177. package/vendor/microsoft-governance/dist/prompt-defense.js.map +1 -0
  178. package/vendor/microsoft-governance/dist/protocol-facets.d.ts +87 -0
  179. package/vendor/microsoft-governance/dist/protocol-facets.d.ts.map +1 -0
  180. package/vendor/microsoft-governance/dist/protocol-facets.js +728 -0
  181. package/vendor/microsoft-governance/dist/protocol-facets.js.map +1 -0
  182. package/vendor/microsoft-governance/dist/rings.d.ts +17 -0
  183. package/vendor/microsoft-governance/dist/rings.d.ts.map +1 -0
  184. package/vendor/microsoft-governance/dist/rings.js +61 -0
  185. package/vendor/microsoft-governance/dist/rings.js.map +1 -0
  186. package/vendor/microsoft-governance/dist/sandbox.d.ts +61 -0
  187. package/vendor/microsoft-governance/dist/sandbox.d.ts.map +1 -0
  188. package/vendor/microsoft-governance/dist/sandbox.js +199 -0
  189. package/vendor/microsoft-governance/dist/sandbox.js.map +1 -0
  190. package/vendor/microsoft-governance/dist/surface-parity.d.ts +45 -0
  191. package/vendor/microsoft-governance/dist/surface-parity.d.ts.map +1 -0
  192. package/vendor/microsoft-governance/dist/surface-parity.js +216 -0
  193. package/vendor/microsoft-governance/dist/surface-parity.js.map +1 -0
  194. package/vendor/microsoft-governance/dist/trust.d.ts +28 -0
  195. package/vendor/microsoft-governance/dist/trust.d.ts.map +1 -0
  196. package/vendor/microsoft-governance/dist/trust.js +209 -0
  197. package/vendor/microsoft-governance/dist/trust.js.map +1 -0
  198. package/vendor/microsoft-governance/dist/types.d.ts +422 -0
  199. package/vendor/microsoft-governance/dist/types.d.ts.map +1 -0
  200. package/vendor/microsoft-governance/dist/types.js +29 -0
  201. package/vendor/microsoft-governance/dist/types.js.map +1 -0
  202. package/vendor/microsoft-governance/dist/verify.d.ts +135 -0
  203. package/vendor/microsoft-governance/dist/verify.d.ts.map +1 -0
  204. package/vendor/microsoft-governance/dist/verify.js +356 -0
  205. package/vendor/microsoft-governance/dist/verify.js.map +1 -0
  206. package/vendor/microsoft-governance/package.json +64 -0
  207. package/index.d.ts +0 -177
  208. package/index.js +0 -1
@@ -0,0 +1,36 @@
1
+ import type { ClerkEnv } from "./clerk.js";
2
+ export declare const ROOT_DIR: string;
3
+ export interface MuxoConfig {
4
+ port: number;
5
+ baseUrl: string;
6
+ dbPath: string;
7
+ composioApiKey: string;
8
+ composioInstantApiKey: string;
9
+ composioBaseUrl: string;
10
+ composioWebhookSecret: string;
11
+ composioWebhookSubscriptionId: string;
12
+ composioProjectId: string;
13
+ composioOrgId: string;
14
+ composioUserId: string;
15
+ stripeSecretKey: string;
16
+ stripePublishableKey: string;
17
+ stripeApiBaseUrl: string;
18
+ stripeProvisioningApiVersion: string;
19
+ stripeProjectId: string;
20
+ stripeConnectedAccountId?: string;
21
+ stripeStarterPriceId: string;
22
+ stripeCreditsPriceId: string;
23
+ stripeWebhookSecret: string;
24
+ stripeProjectsWorkdir: string;
25
+ stripeBinaryPath: string;
26
+ supermemoryApiKey: string;
27
+ supermemoryBaseUrl: string;
28
+ publicWebUrl: string;
29
+ docsUrl: string;
30
+ vaultMasterKey: Buffer;
31
+ /** Clerk sign-in settings; sign-in stays password-based unless CLERK_PUBLISHABLE_KEY is set. */
32
+ clerkEnv?: ClerkEnv & {
33
+ MUXO_OWNER_EMAILS?: string;
34
+ };
35
+ }
36
+ export declare function getConfig(): MuxoConfig;
package/dist/config.js ADDED
@@ -0,0 +1,115 @@
1
+ import fs from "node:fs";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import crypto from "node:crypto";
5
+ import { fileURLToPath } from "node:url";
6
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
7
+ export const ROOT_DIR = path.resolve(__dirname, "..");
8
+ function loadDotEnv(envPath) {
9
+ if (!fs.existsSync(envPath))
10
+ return;
11
+ const raw = fs.readFileSync(envPath, "utf8");
12
+ for (const line of raw.split(/\r?\n/)) {
13
+ const trimmed = line.trim();
14
+ if (!trimmed || trimmed.startsWith("#"))
15
+ continue;
16
+ const eqIdx = trimmed.indexOf("=");
17
+ if (eqIdx <= 0)
18
+ continue;
19
+ const key = trimmed.slice(0, eqIdx).trim();
20
+ const val = trimmed.slice(eqIdx + 1).trim().replace(/^["']|["']$/g, "");
21
+ if (process.env[key] === undefined || process.env[key] === "") {
22
+ process.env[key] = val;
23
+ }
24
+ }
25
+ }
26
+ if (process.env.MUXO_EXTERNAL_MODE !== "1") {
27
+ loadDotEnv(path.join(ROOT_DIR, ".env"));
28
+ }
29
+ function resolveStripeBinary() {
30
+ const candidates = [
31
+ process.env.STRIPE_BINARY_PATH,
32
+ "/Users/test/.local/bin/stripe",
33
+ "/opt/homebrew/bin/stripe",
34
+ "/usr/local/bin/stripe",
35
+ "stripe",
36
+ ].filter(Boolean);
37
+ for (const candidate of candidates) {
38
+ if (candidate === "stripe" || fs.existsSync(candidate)) {
39
+ return candidate;
40
+ }
41
+ }
42
+ return "stripe";
43
+ }
44
+ function deriveVaultMasterKey() {
45
+ const seed = process.env.MUXO_VAULT_SECRET ||
46
+ process.env.COMPOSIO_API_KEY ||
47
+ "muxo-local-vault-default-seed-v1";
48
+ return crypto.scryptSync(seed, "muxo-aes256gcm-salt-v1", 32);
49
+ }
50
+ export function getConfig() {
51
+ const port = Number(process.env.PORT || 4310);
52
+ const isExternalPackage = process.env.MUXO_EXTERNAL_MODE === "1" ||
53
+ !fs.existsSync(path.join(ROOT_DIR, "src", "server.ts"));
54
+ const dataDir = process.env.MUXO_HOME
55
+ ? path.join(process.env.MUXO_HOME, "data")
56
+ : isExternalPackage
57
+ ? path.join(os.homedir(), ".muxo", "data")
58
+ : path.join(ROOT_DIR, "data");
59
+ if (!fs.existsSync(dataDir)) {
60
+ fs.mkdirSync(dataDir, { recursive: true });
61
+ }
62
+ return {
63
+ port,
64
+ baseUrl: process.env.MUXO_BASE_URL || `http://localhost:${port}`,
65
+ dbPath: process.env.MUXO_DB_PATH || path.join(dataDir, "muxo.db"),
66
+ composioApiKey: process.env.MUXO_EXTERNAL_MODE === "1"
67
+ ? ""
68
+ : process.env.COMPOSIO_API_KEY || process.env.COMPOSIO_INSTANT_API_KEY || "",
69
+ composioInstantApiKey: process.env.MUXO_EXTERNAL_MODE === "1"
70
+ ? ""
71
+ : process.env.COMPOSIO_INSTANT_API_KEY || process.env.COMPOSIO_API_KEY || "",
72
+ composioBaseUrl: process.env.COMPOSIO_BASE_URL || "https://backend.composio.dev/api/v3",
73
+ composioWebhookSecret: process.env.MUXO_EXTERNAL_MODE === "1"
74
+ ? ""
75
+ : process.env.COMPOSIO_WEBHOOK_SECRET || "",
76
+ composioWebhookSubscriptionId: process.env.COMPOSIO_WEBHOOK_SUBSCRIPTION_ID || "",
77
+ composioProjectId: process.env.COMPOSIO_PROJECT_ID || "",
78
+ composioOrgId: process.env.COMPOSIO_ORG_ID || "",
79
+ composioUserId: process.env.COMPOSIO_USER_ID || "",
80
+ stripeSecretKey: process.env.MUXO_EXTERNAL_MODE === "1"
81
+ ? ""
82
+ : process.env.STRIPE_SECRET_KEY || "",
83
+ stripePublishableKey: process.env.MUXO_EXTERNAL_MODE === "1"
84
+ ? ""
85
+ : process.env.STRIPE_PUBLISHABLE_KEY || "",
86
+ stripeApiBaseUrl: process.env.STRIPE_API_BASE_URL || "https://api.stripe.com",
87
+ stripeProvisioningApiVersion: process.env.STRIPE_PROVISIONING_API_VERSION || "2026-09-30.preview",
88
+ stripeProjectId: process.env.STRIPE_PROJECT_ID || "",
89
+ stripeConnectedAccountId: process.env.STRIPE_CONNECTED_ACCOUNT_ID ||
90
+ process.env.STRIPE_CONTEXT ||
91
+ "",
92
+ stripeStarterPriceId: process.env.STRIPE_STARTER_PRICE_ID || "",
93
+ stripeCreditsPriceId: process.env.STRIPE_CREDITS_PRICE_ID || "",
94
+ stripeWebhookSecret: process.env.STRIPE_WEBHOOK_SECRET || "",
95
+ stripeProjectsWorkdir: process.env.MUXO_EXTERNAL_MODE === "1"
96
+ ? "/nonexistent/external-user-workdir"
97
+ : process.env.STRIPE_PROJECTS_WORKDIR ||
98
+ "/Users/test/Documents/muxo2/muxo-production-qualification",
99
+ stripeBinaryPath: resolveStripeBinary(),
100
+ supermemoryApiKey: process.env.MUXO_EXTERNAL_MODE === "1"
101
+ ? ""
102
+ : process.env.SUPERMEMORY_API_KEY || "",
103
+ supermemoryBaseUrl: process.env.SUPERMEMORY_BASE_URL || "https://api.supermemory.ai",
104
+ publicWebUrl: process.env.MUXO_PUBLIC_WEB_URL || "https://muxo.ai",
105
+ docsUrl: process.env.MUXO_DOCS_URL || "https://docs.muxo.ai",
106
+ vaultMasterKey: deriveVaultMasterKey(),
107
+ clerkEnv: {
108
+ CLERK_PUBLISHABLE_KEY: process.env.CLERK_PUBLISHABLE_KEY,
109
+ CLERK_SECRET_KEY: process.env.CLERK_SECRET_KEY,
110
+ CLERK_JWT_KEY: process.env.CLERK_JWT_KEY,
111
+ CLERK_AUTHORIZED_PARTIES: process.env.CLERK_AUTHORIZED_PARTIES,
112
+ MUXO_OWNER_EMAILS: process.env.MUXO_OWNER_EMAILS,
113
+ },
114
+ };
115
+ }
@@ -0,0 +1,45 @@
1
+ /** Cloud provisioning pipeline modelled on Cloudflare Workflows primitives, shared by the Node engine and the edge worker. */
2
+ import { MuxoToolError } from "./mcp-schema.js";
3
+ export type DurableWorkflowStepStatus = "completed" | "waiting" | "pending";
4
+ export interface DurableWorkflowStep {
5
+ name: string;
6
+ primitive: "step.do" | "step.waitForEvent" | "step.sleep";
7
+ status: DurableWorkflowStepStatus;
8
+ output?: Record<string, unknown>;
9
+ completedAt?: string;
10
+ }
11
+ export interface DurableWorkflow {
12
+ id: string;
13
+ workspaceId: string;
14
+ workflowType: "cloud_provisioning_pipeline" | "approval_handoff_pipeline";
15
+ status: "running" | "waiting_for_event" | "completed" | "failed";
16
+ provider: string;
17
+ serviceRef: string;
18
+ resourceId: string | null;
19
+ steps: DurableWorkflowStep[];
20
+ createdAt: string;
21
+ updatedAt: string;
22
+ }
23
+ export declare const WORKFLOW_RESOURCE_COMPLETED_EVENT = "v2.provisioning.resource.completed";
24
+ export declare function workflowNotFoundError(workflowId: string): MuxoToolError;
25
+ export declare function normalizeWorkflowTarget(params: {
26
+ provider?: string;
27
+ serviceRef?: string;
28
+ }): {
29
+ provider: string;
30
+ serviceRef: string;
31
+ };
32
+ export declare function createCloudProvisioningWorkflow(params: {
33
+ id: string;
34
+ workspaceId: string;
35
+ resourceId: string;
36
+ provider: string;
37
+ serviceRef: string;
38
+ region?: string;
39
+ apiVersion?: string;
40
+ }): DurableWorkflow;
41
+ /** Completes every outstanding step once the resource-completed event (or a manual advance) arrives. */
42
+ export declare function completeCloudProvisioningWorkflow(wf: DurableWorkflow, params: {
43
+ secretKeys: string[];
44
+ triggerEvent?: unknown;
45
+ }): DurableWorkflow;
@@ -0,0 +1,90 @@
1
+ /** Cloud provisioning pipeline modelled on Cloudflare Workflows primitives, shared by the Node engine and the edge worker. */
2
+ import { MuxoToolError } from "./mcp-schema.js";
3
+ export const WORKFLOW_RESOURCE_COMPLETED_EVENT = "v2.provisioning.resource.completed";
4
+ export function workflowNotFoundError(workflowId) {
5
+ return new MuxoToolError(`Durable workflow not found: ${workflowId}`, {
6
+ code: "workflow_not_found",
7
+ statusCode: 404,
8
+ payload: { workflowId },
9
+ });
10
+ }
11
+ export function normalizeWorkflowTarget(params) {
12
+ return {
13
+ provider: (params.provider || "neon").toLowerCase().trim(),
14
+ serviceRef: (params.serviceRef || "postgres").toLowerCase().trim(),
15
+ };
16
+ }
17
+ export function createCloudProvisioningWorkflow(params) {
18
+ const now = new Date().toISOString();
19
+ return {
20
+ id: params.id,
21
+ workspaceId: params.workspaceId,
22
+ workflowType: "cloud_provisioning_pipeline",
23
+ status: "waiting_for_event",
24
+ provider: params.provider,
25
+ serviceRef: params.serviceRef,
26
+ resourceId: params.resourceId,
27
+ steps: [
28
+ {
29
+ name: "check_stripe_v2_eligibility",
30
+ primitive: "step.do",
31
+ status: "completed",
32
+ output: { status: "eligible", apiVersion: params.apiVersion || "2026-09-30.preview" },
33
+ completedAt: now,
34
+ },
35
+ {
36
+ name: "ensure_payment_profile_and_provider_connection",
37
+ primitive: "step.do",
38
+ status: "completed",
39
+ output: { provider: params.provider, paymentProfileStatus: "active" },
40
+ completedAt: now,
41
+ },
42
+ {
43
+ name: "create_v2_provisioning_resource",
44
+ primitive: "step.do",
45
+ status: "completed",
46
+ output: {
47
+ resourceId: params.resourceId,
48
+ provider: params.provider,
49
+ service_ref: params.serviceRef,
50
+ region: params.region || "aws-us-east-1",
51
+ },
52
+ completedAt: now,
53
+ },
54
+ {
55
+ name: "wait_for_v2_provisioning_resource_completed",
56
+ primitive: "step.waitForEvent",
57
+ status: "waiting",
58
+ output: { expectedEvent: WORKFLOW_RESOURCE_COMPLETED_EVENT, resourceId: params.resourceId },
59
+ },
60
+ {
61
+ name: "reveal_access_configuration_and_seal_vault",
62
+ primitive: "step.do",
63
+ status: "pending",
64
+ },
65
+ ],
66
+ createdAt: now,
67
+ updatedAt: now,
68
+ };
69
+ }
70
+ /** Completes every outstanding step once the resource-completed event (or a manual advance) arrives. */
71
+ export function completeCloudProvisioningWorkflow(wf, params) {
72
+ const now = new Date().toISOString();
73
+ for (const step of wf.steps) {
74
+ if (step.status === "completed")
75
+ continue;
76
+ step.status = "completed";
77
+ step.completedAt = now;
78
+ if (step.name === "reveal_access_configuration_and_seal_vault") {
79
+ step.output = {
80
+ vaultEncrypted: true,
81
+ cipher: "AES-256-GCM",
82
+ secretKeys: params.secretKeys,
83
+ triggerEvent: params.triggerEvent || WORKFLOW_RESOURCE_COMPLETED_EVENT,
84
+ };
85
+ }
86
+ }
87
+ wf.status = "completed";
88
+ wf.updatedAt = now;
89
+ return wf;
90
+ }