0pflow 0.1.0-dev.6c5c92a → 0.1.0-dev.76a002f

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 (86) hide show
  1. package/dist/__tests__/factory.test.js +6 -0
  2. package/dist/__tests__/factory.test.js.map +1 -1
  3. package/dist/agent.d.ts.map +1 -1
  4. package/dist/agent.js +16 -1
  5. package/dist/agent.js.map +1 -1
  6. package/dist/cli/deploy.d.ts +27 -0
  7. package/dist/cli/deploy.d.ts.map +1 -0
  8. package/dist/cli/deploy.js +332 -0
  9. package/dist/cli/deploy.js.map +1 -0
  10. package/dist/cli/index.d.ts.map +1 -1
  11. package/dist/cli/index.js +35 -0
  12. package/dist/cli/index.js.map +1 -1
  13. package/dist/cli/install.d.ts +67 -0
  14. package/dist/cli/install.d.ts.map +1 -0
  15. package/dist/cli/install.js +270 -0
  16. package/dist/cli/install.js.map +1 -0
  17. package/dist/cli/mcp/lib/scaffolding.d.ts.map +1 -1
  18. package/dist/cli/mcp/lib/scaffolding.js +13 -33
  19. package/dist/cli/mcp/lib/scaffolding.js.map +1 -1
  20. package/dist/cli/run.d.ts.map +1 -1
  21. package/dist/cli/run.js +270 -101
  22. package/dist/cli/run.js.map +1 -1
  23. package/dist/connections/cloud-auth.d.ts.map +1 -1
  24. package/dist/connections/cloud-auth.js +5 -1
  25. package/dist/connections/cloud-auth.js.map +1 -1
  26. package/dist/connections/cloud-integration-provider.d.ts +1 -0
  27. package/dist/connections/cloud-integration-provider.d.ts.map +1 -1
  28. package/dist/connections/cloud-integration-provider.js +16 -1
  29. package/dist/connections/cloud-integration-provider.js.map +1 -1
  30. package/dist/connections/connection-labels.d.ts +14 -0
  31. package/dist/connections/connection-labels.d.ts.map +1 -0
  32. package/dist/connections/connection-labels.js +46 -0
  33. package/dist/connections/connection-labels.js.map +1 -0
  34. package/dist/connections/index.d.ts +1 -0
  35. package/dist/connections/index.d.ts.map +1 -1
  36. package/dist/connections/index.js +1 -0
  37. package/dist/connections/index.js.map +1 -1
  38. package/dist/connections/integration-provider.d.ts +1 -0
  39. package/dist/connections/integration-provider.d.ts.map +1 -1
  40. package/dist/connections/local-integration-provider.d.ts +1 -0
  41. package/dist/connections/local-integration-provider.d.ts.map +1 -1
  42. package/dist/connections/local-integration-provider.js +17 -1
  43. package/dist/connections/local-integration-provider.js.map +1 -1
  44. package/dist/dev-ui/deploy-api.d.ts +14 -0
  45. package/dist/dev-ui/deploy-api.d.ts.map +1 -0
  46. package/dist/dev-ui/deploy-api.js +112 -0
  47. package/dist/dev-ui/deploy-api.js.map +1 -0
  48. package/dist/dev-ui/dev-server.d.ts.map +1 -1
  49. package/dist/dev-ui/dev-server.js +46 -2
  50. package/dist/dev-ui/dev-server.js.map +1 -1
  51. package/dist/dev-ui/watcher.d.ts.map +1 -1
  52. package/dist/dev-ui/watcher.js +6 -2
  53. package/dist/dev-ui/watcher.js.map +1 -1
  54. package/dist/dev-ui-client/assets/index-BO7ghj1c.css +32 -0
  55. package/dist/dev-ui-client/assets/index-goWlzKQw.js +125 -0
  56. package/dist/dev-ui-client/index.html +5 -2
  57. package/dist/discover.d.ts.map +1 -1
  58. package/dist/discover.js +5 -2
  59. package/dist/discover.js.map +1 -1
  60. package/dist/factory.d.ts.map +1 -1
  61. package/dist/factory.js +12 -1
  62. package/dist/factory.js.map +1 -1
  63. package/dist/index.d.ts +1 -0
  64. package/dist/index.d.ts.map +1 -1
  65. package/dist/index.js +3 -1
  66. package/dist/index.js.map +1 -1
  67. package/dist/registry-gen.d.ts +6 -0
  68. package/dist/registry-gen.d.ts.map +1 -0
  69. package/dist/registry-gen.js +146 -0
  70. package/dist/registry-gen.js.map +1 -0
  71. package/dist/workflow.d.ts.map +1 -1
  72. package/dist/workflow.js +16 -1
  73. package/dist/workflow.js.map +1 -1
  74. package/package.json +3 -2
  75. package/templates/app/.dockerignore +6 -0
  76. package/templates/app/Dockerfile +34 -0
  77. package/templates/app/generated/registry.ts +8 -0
  78. package/templates/app/next.config.js +4 -1
  79. package/templates/app/package.json +2 -0
  80. package/templates/app/src/lib/pflow.ts +5 -6
  81. package/dist/dev-ui-client/assets/index-C-LxzUII.css +0 -32
  82. package/dist/dev-ui-client/assets/index-aAIwXl4O.js +0 -127
  83. package/dist/version.d.ts +0 -6
  84. package/dist/version.d.ts.map +0 -1
  85. package/dist/version.js +0 -7
  86. package/dist/version.js.map +0 -1
@@ -23,6 +23,12 @@ vi.mock("@dbos-inc/dbos-sdk", () => ({
23
23
  describe("create0pflow()", () => {
24
24
  beforeEach(() => {
25
25
  vi.clearAllMocks();
26
+ // Clear globalThis singleton so each test gets a fresh create0pflow()
27
+ delete globalThis[Symbol.for("opflow.pflowInstance")];
28
+ // Clear workflow cache so Workflow.create() re-registers
29
+ delete globalThis[Symbol.for("opflow.workflowCache")];
30
+ // Clear agent cache
31
+ delete globalThis[Symbol.for("opflow.agentCache")];
26
32
  });
27
33
  it("initializes DBOS and returns pflow instance", async () => {
28
34
  const pflow = await create0pflow({
@@ -1 +1 @@
1
- {"version":3,"file":"factory.test.js","sourceRoot":"","sources":["../../src/__tests__/factory.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"factory.test.js","sourceRoot":"","sources":["../../src/__tests__/factory.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,UAAU,EAAoD,MAAM,YAAY,CAAC;AAG/F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,MAAM,EAAE,OAAO;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/B,YAAY,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,mDAAmD;IACnD,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,CAClE,SAAQ,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;CAC5B;AAED;;;GAGG;AACH,UAAU,kBAAkB;IAC1B,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,mBAAmB,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAChD,SAAS,EAAE,MAAM,CAAC;CACnB;AAQD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAEtE;AA0FD;;GAEG;AACH,eAAO,MAAM,KAAK;WACT,MAAM,EAAE,OAAO,wBACR,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3C,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC;CAmEpC,CAAC"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,UAAU,EAAoD,MAAM,YAAY,CAAC;AAG/F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,MAAM,EAAE,OAAO;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/B,YAAY,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,mDAAmD;IACnD,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,CAClE,SAAQ,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;CAC5B;AAED;;;GAGG;AACH,UAAU,kBAAkB;IAC1B,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,mBAAmB,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAChD,SAAS,EAAE,MAAM,CAAC;CACnB;AAQD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAEtE;AAmGD;;GAEG;AACH,eAAO,MAAM,KAAK;WACT,MAAM,EAAE,OAAO,wBACR,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3C,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC;CA0EpC,CAAC"}
package/dist/agent.js CHANGED
@@ -66,11 +66,24 @@ function createAgentContext(agentName, parentWorkflowName, parentNodeName) {
66
66
  };
67
67
  return ctx;
68
68
  }
69
+ // Global cache for agent executables to prevent duplicate DBOS registration
70
+ // when bundlers (Turbopack) re-evaluate the same module in multiple chunks.
71
+ const AGENT_CACHE_KEY = Symbol.for("opflow.agentCache");
72
+ function getAgentCache() {
73
+ const g = globalThis;
74
+ if (!g[AGENT_CACHE_KEY])
75
+ g[AGENT_CACHE_KEY] = new Map();
76
+ return g[AGENT_CACHE_KEY];
77
+ }
69
78
  /**
70
79
  * Factory for creating agent executables
71
80
  */
72
81
  export const Agent = {
73
82
  create(definition) {
83
+ // Return cached executable if already registered (bundler re-evaluation)
84
+ const cached = getAgentCache().get(definition.name);
85
+ if (cached)
86
+ return cached;
74
87
  const tools = definition.tools ?? {};
75
88
  // Parent workflow context info, captured before DBOS child workflow starts
76
89
  let _parentWorkflowName;
@@ -104,7 +117,7 @@ export const Agent = {
104
117
  const durableAgentWorkflow = DBOS.registerWorkflow(agentWorkflowImpl, {
105
118
  name: definition.name,
106
119
  });
107
- return {
120
+ const executable = {
108
121
  name: definition.name,
109
122
  type: "agent",
110
123
  description: definition.description,
@@ -120,6 +133,8 @@ export const Agent = {
120
133
  return durableAgentWorkflow(inputs);
121
134
  },
122
135
  };
136
+ getAgentCache().set(definition.name, executable);
137
+ return executable;
123
138
  },
124
139
  };
125
140
  //# sourceMappingURL=agent.js.map
package/dist/agent.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ export type DeployStep = "preflight" | "committing" | "authenticating" | "preparing" | "packaging" | "uploading" | "polling" | "done" | "error";
2
+ export interface DeployProgress {
3
+ step: DeployStep;
4
+ message?: string;
5
+ url?: string;
6
+ }
7
+ export interface DeployOptions {
8
+ verbose?: boolean;
9
+ /** Progress callback for programmatic use (Dev UI SSE). */
10
+ onProgress?: (progress: DeployProgress) => void;
11
+ }
12
+ export interface DeployResult {
13
+ success: boolean;
14
+ url?: string;
15
+ error?: string;
16
+ }
17
+ /**
18
+ * Core deploy logic — usable by both CLI and Dev UI server.
19
+ */
20
+ export declare function deploy(projectDir: string, options?: DeployOptions): Promise<DeployResult>;
21
+ /**
22
+ * CLI entry point for `0pflow deploy`.
23
+ */
24
+ export declare function runDeploy(options?: {
25
+ verbose?: boolean;
26
+ }): Promise<void>;
27
+ //# sourceMappingURL=deploy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/cli/deploy.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,UAAU,GAClB,WAAW,GACX,YAAY,GACZ,gBAAgB,GAChB,WAAW,GACX,WAAW,GACX,WAAW,GACX,SAAS,GACT,MAAM,GACN,OAAO,CAAC;AAEZ,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;CACjD;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAkBD;;GAEG;AACH,wBAAsB,MAAM,CAC1B,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAgNvB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAClC,OAAO,CAAC,IAAI,CAAC,CA6Cf"}
@@ -0,0 +1,332 @@
1
+ import { readFileSync, existsSync, mkdtempSync, rmSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { tmpdir } from "node:os";
4
+ import { execSync } from "node:child_process";
5
+ import * as p from "@clack/prompts";
6
+ import pc from "picocolors";
7
+ import * as dotenv from "dotenv";
8
+ import { apiCall } from "../connections/cloud-client.js";
9
+ import { isAuthenticated, authenticate } from "../connections/cloud-auth.js";
10
+ // Files/directories to exclude from the deployment tarball
11
+ const EXCLUDE_PATTERNS = [
12
+ "node_modules",
13
+ ".git",
14
+ "dist",
15
+ ".dbos",
16
+ ".next",
17
+ "venv",
18
+ ".venv",
19
+ ".python-version",
20
+ "dbos-config.yaml",
21
+ ".env",
22
+ ".env.local",
23
+ "package-lock.json",
24
+ ];
25
+ /**
26
+ * Core deploy logic — usable by both CLI and Dev UI server.
27
+ */
28
+ export async function deploy(projectDir, options = {}) {
29
+ const progress = options.onProgress ?? (() => { });
30
+ // ── Step 1: Pre-flight checks ──────────────────────────────────
31
+ progress({ step: "preflight", message: "Running pre-flight checks..." });
32
+ const pkgPath = join(projectDir, "package.json");
33
+ if (!existsSync(pkgPath)) {
34
+ return {
35
+ success: false,
36
+ error: "No package.json found. Run from a 0pflow app directory.",
37
+ };
38
+ }
39
+ const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
40
+ if (!pkg.dependencies?.["0pflow"]) {
41
+ return {
42
+ success: false,
43
+ error: "Not a 0pflow app (0pflow not in dependencies).",
44
+ };
45
+ }
46
+ if (!pkg.name) {
47
+ return { success: false, error: "package.json is missing a name field." };
48
+ }
49
+ const envPath = join(projectDir, ".env");
50
+ if (!existsSync(envPath)) {
51
+ return { success: false, error: ".env file not found. Run setup first." };
52
+ }
53
+ const env = dotenv.parse(readFileSync(envPath, "utf-8"));
54
+ if (!env.DATABASE_URL) {
55
+ return { success: false, error: "DATABASE_URL not found in .env." };
56
+ }
57
+ const appName = pkg.name;
58
+ // ── Step 1b: Auto-commit if working tree is dirty ──────────────
59
+ let commitHash;
60
+ try {
61
+ const isDirty = execSync("git status --porcelain", {
62
+ cwd: projectDir,
63
+ encoding: "utf-8",
64
+ }).trim();
65
+ if (isDirty) {
66
+ progress({ step: "committing", message: "Committing changes..." });
67
+ // generateCommitMessage stages files (git add -A) internally
68
+ const message = generateCommitMessage(projectDir);
69
+ execSync(`git commit -m ${JSON.stringify(message)}`, {
70
+ cwd: projectDir,
71
+ stdio: "pipe",
72
+ });
73
+ }
74
+ commitHash = execSync("git rev-parse --short HEAD", {
75
+ cwd: projectDir,
76
+ encoding: "utf-8",
77
+ }).trim();
78
+ }
79
+ catch {
80
+ // Not a git repo or git not available — continue without hash
81
+ }
82
+ // ── Step 2: Authenticate ───────────────────────────────────────
83
+ progress({ step: "authenticating", message: "Checking authentication..." });
84
+ if (!isAuthenticated()) {
85
+ await authenticate();
86
+ if (!isAuthenticated()) {
87
+ return {
88
+ success: false,
89
+ error: "Not authenticated. Run `0pflow login` first.",
90
+ };
91
+ }
92
+ }
93
+ // ── Step 3: Prepare (create Fly app) ──────────────────────────
94
+ progress({ step: "preparing", message: "Preparing deployment..." });
95
+ let appUrl;
96
+ try {
97
+ const result = (await apiCall("POST", "/api/deploy/prepare", {
98
+ appName,
99
+ }));
100
+ appUrl = result.appUrl;
101
+ }
102
+ catch (err) {
103
+ return {
104
+ success: false,
105
+ error: `Prepare failed: ${err instanceof Error ? err.message : String(err)}`,
106
+ };
107
+ }
108
+ // ── Step 4: Package app as tar.gz ──────────────────────────────
109
+ progress({ step: "packaging", message: "Packaging application..." });
110
+ let archive;
111
+ try {
112
+ archive = createDeploymentTarball(projectDir);
113
+ }
114
+ catch (err) {
115
+ return {
116
+ success: false,
117
+ error: `Packaging failed: ${err instanceof Error ? err.message : String(err)}`,
118
+ };
119
+ }
120
+ // ── Step 5: Push (upload + kick off build) ─────────────────────
121
+ progress({ step: "uploading", message: "Uploading and building..." });
122
+ // Filter env vars — exclude setup-only keys
123
+ const envVarsToSync = {};
124
+ const skipKeys = new Set([
125
+ "DBOS_ADMIN_URL",
126
+ "DBOS_SYSTEM_DATABASE_URL",
127
+ "DBOS_CONDUCTOR_KEY",
128
+ ]);
129
+ for (const [key, value] of Object.entries(env)) {
130
+ if (!skipKeys.has(key)) {
131
+ envVarsToSync[key] = value;
132
+ }
133
+ }
134
+ // Include OPFLOW_TOKEN for runtime integration credential fetching
135
+ const { getToken } = await import("../connections/cloud-auth.js");
136
+ const opflowToken = getToken();
137
+ if (opflowToken) {
138
+ envVarsToSync.OPFLOW_TOKEN = opflowToken;
139
+ }
140
+ try {
141
+ await apiCall("POST", "/api/deploy/push", {
142
+ appName,
143
+ archive,
144
+ envVars: envVarsToSync,
145
+ commitHash,
146
+ });
147
+ }
148
+ catch (err) {
149
+ return {
150
+ success: false,
151
+ error: `Push failed: ${err instanceof Error ? err.message : String(err)}`,
152
+ };
153
+ }
154
+ // ── Step 6: Poll for build + service availability ──────────────
155
+ progress({
156
+ step: "polling",
157
+ message: "Building and starting app...",
158
+ });
159
+ const stalledTimeout = 3 * 60 * 1000; // 3 minutes since last status change
160
+ const pollInterval = 3000; // 3 seconds
161
+ let lastStatusKey = "";
162
+ let lastChangeTime = Date.now();
163
+ while (true) {
164
+ await new Promise((r) => setTimeout(r, pollInterval));
165
+ try {
166
+ const status = (await apiCall("GET", `/api/deploy/status?appName=${encodeURIComponent(appName)}`));
167
+ // Track status changes to reset the stalled timer
168
+ const statusKey = `${status.status}:${status.message ?? ""}`;
169
+ if (statusKey !== lastStatusKey) {
170
+ lastStatusKey = statusKey;
171
+ lastChangeTime = Date.now();
172
+ }
173
+ if (status.status === "running") {
174
+ const url = status.url ?? appUrl;
175
+ progress({ step: "done", url });
176
+ return { success: true, url };
177
+ }
178
+ if (status.status === "build_error") {
179
+ return {
180
+ success: false,
181
+ error: `Build failed: ${status.error ?? "Unknown error"}. Check logs with: 0pflow deploy --logs`,
182
+ };
183
+ }
184
+ // Update progress message based on current step
185
+ if (status.status === "building") {
186
+ progress({
187
+ step: "polling",
188
+ message: status.message ?? "Building application...",
189
+ });
190
+ }
191
+ else if (status.status === "starting") {
192
+ progress({
193
+ step: "polling",
194
+ message: "Starting application...",
195
+ });
196
+ }
197
+ }
198
+ catch {
199
+ // Continue polling on transient errors
200
+ }
201
+ if (Date.now() - lastChangeTime > stalledTimeout) {
202
+ return {
203
+ success: false,
204
+ error: "Timed out — deploy appears stalled (no progress for 3 minutes).",
205
+ };
206
+ }
207
+ }
208
+ }
209
+ /**
210
+ * CLI entry point for `0pflow deploy`.
211
+ */
212
+ export async function runDeploy(options = {}) {
213
+ p.intro(pc.bold("0pflow deploy"));
214
+ const s = p.spinner();
215
+ let currentStep = "";
216
+ let currentMessage = "";
217
+ const result = await deploy(process.cwd(), {
218
+ verbose: options.verbose,
219
+ onProgress: (prog) => {
220
+ if (prog.step === "done") {
221
+ s.stop(pc.green("App is available!"));
222
+ return;
223
+ }
224
+ if (prog.step === "error") {
225
+ s.stop(pc.red(prog.message ?? "Error"));
226
+ return;
227
+ }
228
+ if (prog.message) {
229
+ if (prog.step !== currentStep) {
230
+ if (currentStep) {
231
+ s.stop(pc.green("Done"));
232
+ }
233
+ currentStep = prog.step;
234
+ currentMessage = prog.message;
235
+ s.start(prog.message);
236
+ }
237
+ else if (prog.message !== currentMessage) {
238
+ currentMessage = prog.message;
239
+ s.message(prog.message);
240
+ }
241
+ }
242
+ },
243
+ });
244
+ if (result.success) {
245
+ if (result.url) {
246
+ p.log.info(`URL: ${pc.cyan(result.url)}`);
247
+ }
248
+ p.outro(pc.green("Deploy complete!"));
249
+ }
250
+ else {
251
+ p.log.error(result.error ?? "Deploy failed");
252
+ p.outro(pc.red("Deploy failed"));
253
+ process.exit(1);
254
+ }
255
+ }
256
+ // ── Auto-Commit ──────────────────────────────────────────────────
257
+ /**
258
+ * Generate a commit message for pre-deploy auto-commit.
259
+ * Tries `claude` CLI for a full message; falls back to a heuristic.
260
+ */
261
+ function generateCommitMessage(projectDir) {
262
+ // Try claude CLI for a full commit message
263
+ try {
264
+ // Stage everything so we can get the full diff
265
+ execSync("git add -A", { cwd: projectDir, stdio: "pipe" });
266
+ const diffContent = execSync("git diff --cached", {
267
+ cwd: projectDir,
268
+ encoding: "utf-8",
269
+ stdio: ["pipe", "pipe", "pipe"],
270
+ maxBuffer: 100_000,
271
+ }).trim();
272
+ if (diffContent) {
273
+ const prompt = `Write a git commit message for these changes. Use conventional commit format (e.g. feat:, fix:, chore:). Include a short subject line and a body with bullet points if there are multiple changes. Do not include any explanation or markdown formatting — just the raw commit message text.\n\n${diffContent.slice(0, 8000)}`;
274
+ const message = execSync(`claude -p ${JSON.stringify(prompt)}`, {
275
+ cwd: projectDir,
276
+ encoding: "utf-8",
277
+ stdio: ["pipe", "pipe", "pipe"],
278
+ timeout: 30_000,
279
+ }).trim();
280
+ if (message && message.length > 5 && message.length < 2000) {
281
+ return message;
282
+ }
283
+ }
284
+ }
285
+ catch {
286
+ // claude CLI not available or failed — fall through to heuristic
287
+ }
288
+ // Heuristic fallback: summarize changed files
289
+ try {
290
+ const stat = execSync("git diff --cached --stat", {
291
+ cwd: projectDir,
292
+ encoding: "utf-8",
293
+ stdio: ["pipe", "pipe", "pipe"],
294
+ }).trim();
295
+ const lines = stat.split("\n").filter((l) => l.includes("|"));
296
+ const files = lines.map((l) => l.split("|")[0].trim());
297
+ if (files.length <= 3) {
298
+ return `deploy: update ${files.join(", ")}`;
299
+ }
300
+ return `deploy: update ${files.length} files`;
301
+ }
302
+ catch {
303
+ return "deploy: pre-deploy commit";
304
+ }
305
+ }
306
+ // ── Tarball Packaging ─────────────────────────────────────────────
307
+ /**
308
+ * Create a deployment tar.gz as a base64 string using system tar.
309
+ */
310
+ function createDeploymentTarball(projectDir) {
311
+ const tmpDir = mkdtempSync(join(tmpdir(), "opflow-deploy-"));
312
+ const tarPath = join(tmpDir, "app.tar.gz");
313
+ try {
314
+ const excludeArgs = EXCLUDE_PATTERNS.map((p) => `--exclude=${p}`).join(" ");
315
+ execSync(`tar czf ${tarPath} ${excludeArgs} .`, {
316
+ cwd: projectDir,
317
+ stdio: "pipe",
318
+ });
319
+ const tarBuffer = readFileSync(tarPath);
320
+ return tarBuffer.toString("base64");
321
+ }
322
+ finally {
323
+ // Clean up temp dir
324
+ try {
325
+ rmSync(tmpDir, { recursive: true });
326
+ }
327
+ catch {
328
+ // Ignore cleanup errors
329
+ }
330
+ }
331
+ }
332
+ //# sourceMappingURL=deploy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/cli/deploy.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAqBA,eAAO,IAAI,OAAO,QAAU,CAAC;AAQ7B;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAsBA,eAAO,IAAI,OAAO,QAAU,CAAC;AAQ7B;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C"}
package/dist/cli/index.js CHANGED
@@ -14,6 +14,7 @@ import { listRuns, getRun } from "./runs.js";
14
14
  import { getTrace, printTrace } from "./trace.js";
15
15
  import { getAppSchema } from "./app.js";
16
16
  import { startMcpServer } from "./mcp/server.js";
17
+ import { runInstall, runUninstall } from "./install.js";
17
18
  import { runRun } from "./run.js";
18
19
  // Read version from package.json
19
20
  const __dirname = dirname(fileURLToPath(import.meta.url));
@@ -87,6 +88,24 @@ program
87
88
  .action(async () => {
88
89
  await runRun();
89
90
  });
91
+ // ============ Build command ============
92
+ program
93
+ .command("build")
94
+ .description("Generate registry.ts with static imports (for Next.js / bundled builds)")
95
+ .action(async () => {
96
+ const { generateRegistry } = await import("../registry-gen.js");
97
+ const outPath = generateRegistry(process.cwd());
98
+ console.log(pc.green(`Registry generated: ${outPath}`));
99
+ });
100
+ // ============ Deploy command ============
101
+ program
102
+ .command("deploy")
103
+ .description("Deploy app to the cloud")
104
+ .option("--verbose", "Show detailed output")
105
+ .action(async (options) => {
106
+ const { runDeploy } = await import("./deploy.js");
107
+ await runDeploy(options);
108
+ });
90
109
  // ============ Workflow commands ============
91
110
  const workflow = program.command("workflow").description("Workflow commands");
92
111
  workflow
@@ -498,6 +517,22 @@ mcp
498
517
  .action(async () => {
499
518
  await startMcpServer();
500
519
  });
520
+ // ============ Install/Uninstall commands ============
521
+ program
522
+ .command("install")
523
+ .description("Install 0pflow plugin to Claude Code")
524
+ .option("-f, --force", "Force reinstall even if already installed")
525
+ .option("-v, --verbose", "Show detailed output")
526
+ .action(async (options) => {
527
+ await runInstall({ force: options.force, verbose: options.verbose });
528
+ });
529
+ program
530
+ .command("uninstall")
531
+ .description("Uninstall 0pflow plugin from Claude Code")
532
+ .option("-v, --verbose", "Show detailed output")
533
+ .action(async (options) => {
534
+ await runUninstall({ verbose: options.verbose });
535
+ });
501
536
  // ============ Auth commands ============
502
537
  program
503
538
  .command("login")