0pflow 0.1.0-dev.7dac39a → 0.1.0-dev.a318c24
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/dist/__tests__/discover.integration.test.d.ts +2 -0
- package/dist/__tests__/discover.integration.test.d.ts.map +1 -0
- package/dist/__tests__/discover.integration.test.js +137 -0
- package/dist/__tests__/discover.integration.test.js.map +1 -0
- package/dist/agent.d.ts +6 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +59 -9
- package/dist/agent.js.map +1 -1
- package/dist/cli/discovery.d.ts +10 -0
- package/dist/cli/discovery.d.ts.map +1 -1
- package/dist/cli/discovery.js +42 -0
- package/dist/cli/discovery.js.map +1 -1
- package/dist/cli/env.js +1 -1
- package/dist/cli/env.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +101 -8
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/install.d.ts.map +1 -1
- package/dist/cli/install.js +32 -2
- package/dist/cli/install.js.map +1 -1
- package/dist/cli/mcp/lib/templates.d.ts +1 -0
- package/dist/cli/mcp/lib/templates.d.ts.map +1 -1
- package/dist/cli/mcp/lib/templates.js.map +1 -1
- package/dist/cli/mcp/tools/createApp.d.ts +1 -0
- package/dist/cli/mcp/tools/createApp.d.ts.map +1 -1
- package/dist/cli/mcp/tools/createApp.js +15 -5
- package/dist/cli/mcp/tools/createApp.js.map +1 -1
- package/dist/cli/mcp/tools/getConnectionInfo.d.ts +19 -0
- package/dist/cli/mcp/tools/getConnectionInfo.d.ts.map +1 -0
- package/dist/cli/mcp/tools/getConnectionInfo.js +117 -0
- package/dist/cli/mcp/tools/getConnectionInfo.js.map +1 -0
- package/dist/cli/mcp/tools/getRun.d.ts +22 -0
- package/dist/cli/mcp/tools/getRun.d.ts.map +1 -0
- package/dist/cli/mcp/tools/getRun.js +80 -0
- package/dist/cli/mcp/tools/getRun.js.map +1 -0
- package/dist/cli/mcp/tools/getTrace.d.ts +32 -0
- package/dist/cli/mcp/tools/getTrace.d.ts.map +1 -0
- package/dist/cli/mcp/tools/getTrace.js +104 -0
- package/dist/cli/mcp/tools/getTrace.js.map +1 -0
- package/dist/cli/mcp/tools/index.d.ts +101 -1
- package/dist/cli/mcp/tools/index.d.ts.map +1 -1
- package/dist/cli/mcp/tools/index.js +18 -0
- package/dist/cli/mcp/tools/index.js.map +1 -1
- package/dist/cli/mcp/tools/listIntegrations.d.ts +14 -0
- package/dist/cli/mcp/tools/listIntegrations.d.ts.map +1 -0
- package/dist/cli/mcp/tools/listIntegrations.js +53 -0
- package/dist/cli/mcp/tools/listIntegrations.js.map +1 -0
- package/dist/cli/mcp/tools/listRuns.d.ts +21 -0
- package/dist/cli/mcp/tools/listRuns.d.ts.map +1 -0
- package/dist/cli/mcp/tools/listRuns.js +72 -0
- package/dist/cli/mcp/tools/listRuns.js.map +1 -0
- package/dist/cli/mcp/tools/listWorkflows.d.ts +15 -0
- package/dist/cli/mcp/tools/listWorkflows.d.ts.map +1 -0
- package/dist/cli/mcp/tools/listWorkflows.js +45 -0
- package/dist/cli/mcp/tools/listWorkflows.js.map +1 -0
- package/dist/cli/mcp/tools/runNode.d.ts +17 -0
- package/dist/cli/mcp/tools/runNode.d.ts.map +1 -0
- package/dist/cli/mcp/tools/runNode.js +74 -0
- package/dist/cli/mcp/tools/runNode.js.map +1 -0
- package/dist/cli/mcp/tools/runWorkflow.d.ts +16 -0
- package/dist/cli/mcp/tools/runWorkflow.d.ts.map +1 -0
- package/dist/cli/mcp/tools/runWorkflow.js +66 -0
- package/dist/cli/mcp/tools/runWorkflow.js.map +1 -0
- package/dist/cli/mcp/tools/setupAppSchema.d.ts +1 -1
- package/dist/cli/mcp/tools/setupAppSchema.d.ts.map +1 -1
- package/dist/cli/mcp/tools/setupAppSchema.js +41 -29
- package/dist/cli/mcp/tools/setupAppSchema.js.map +1 -1
- package/dist/cli/mcp/tools/startDevUi.d.ts +15 -0
- package/dist/cli/mcp/tools/startDevUi.d.ts.map +1 -0
- package/dist/cli/mcp/tools/startDevUi.js +92 -0
- package/dist/cli/mcp/tools/startDevUi.js.map +1 -0
- package/dist/cli/mcp/tools/utils.d.ts +7 -0
- package/dist/cli/mcp/tools/utils.d.ts.map +1 -0
- package/dist/cli/mcp/tools/utils.js +28 -0
- package/dist/cli/mcp/tools/utils.js.map +1 -0
- package/dist/cli/trace.d.ts +5 -0
- package/dist/cli/trace.d.ts.map +1 -1
- package/dist/cli/trace.js +1 -1
- package/dist/cli/trace.js.map +1 -1
- package/dist/connections/cloud-auth.d.ts +46 -0
- package/dist/connections/cloud-auth.d.ts.map +1 -0
- package/dist/connections/cloud-auth.js +243 -0
- package/dist/connections/cloud-auth.js.map +1 -0
- package/dist/connections/cloud-client.d.ts +25 -0
- package/dist/connections/cloud-client.d.ts.map +1 -0
- package/dist/connections/cloud-client.js +59 -0
- package/dist/connections/cloud-client.js.map +1 -0
- package/dist/connections/cloud-integration-provider.d.ts +21 -0
- package/dist/connections/cloud-integration-provider.d.ts.map +1 -0
- package/dist/connections/cloud-integration-provider.js +26 -0
- package/dist/connections/cloud-integration-provider.js.map +1 -0
- package/dist/connections/index.d.ts +11 -0
- package/dist/connections/index.d.ts.map +1 -0
- package/dist/connections/index.js +9 -0
- package/dist/connections/index.js.map +1 -0
- package/dist/connections/integration-provider.d.ts +38 -0
- package/dist/connections/integration-provider.d.ts.map +1 -0
- package/dist/connections/integration-provider.js +20 -0
- package/dist/connections/integration-provider.js.map +1 -0
- package/dist/connections/local-integration-provider.d.ts +28 -0
- package/dist/connections/local-integration-provider.d.ts.map +1 -0
- package/dist/connections/local-integration-provider.js +54 -0
- package/dist/connections/local-integration-provider.js.map +1 -0
- package/dist/connections/nango-client.d.ts +14 -0
- package/dist/connections/nango-client.d.ts.map +1 -0
- package/dist/connections/nango-client.js +50 -0
- package/dist/connections/nango-client.js.map +1 -0
- package/dist/connections/resolver.d.ts +26 -0
- package/dist/connections/resolver.d.ts.map +1 -0
- package/dist/connections/resolver.js +44 -0
- package/dist/connections/resolver.js.map +1 -0
- package/dist/connections/schema.d.ts +6 -0
- package/dist/connections/schema.d.ts.map +1 -0
- package/dist/connections/schema.js +25 -0
- package/dist/connections/schema.js.map +1 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +4 -0
- package/dist/context.js.map +1 -1
- package/dist/dev-ui/api.d.ts +13 -0
- package/dist/dev-ui/api.d.ts.map +1 -0
- package/dist/dev-ui/api.js +237 -0
- package/dist/dev-ui/api.js.map +1 -0
- package/dist/dev-ui/dag/extractor.d.ts +19 -0
- package/dist/dev-ui/dag/extractor.d.ts.map +1 -0
- package/dist/dev-ui/dag/extractor.js +728 -0
- package/dist/dev-ui/dag/extractor.js.map +1 -0
- package/dist/dev-ui/dag/types.d.ts +42 -0
- package/dist/dev-ui/dag/types.d.ts.map +1 -0
- package/dist/dev-ui/dag/types.js +2 -0
- package/dist/dev-ui/dag/types.js.map +1 -0
- package/dist/dev-ui/dev-server.d.ts +14 -0
- package/dist/dev-ui/dev-server.d.ts.map +1 -0
- package/dist/dev-ui/dev-server.js +158 -0
- package/dist/dev-ui/dev-server.js.map +1 -0
- package/dist/dev-ui/index.d.ts +3 -0
- package/dist/dev-ui/index.d.ts.map +1 -0
- package/dist/dev-ui/index.js +2 -0
- package/dist/dev-ui/index.js.map +1 -0
- package/dist/dev-ui/watcher.d.ts +12 -0
- package/dist/dev-ui/watcher.d.ts.map +1 -0
- package/dist/dev-ui/watcher.js +162 -0
- package/dist/dev-ui/watcher.js.map +1 -0
- package/dist/dev-ui/ws.d.ts +27 -0
- package/dist/dev-ui/ws.d.ts.map +1 -0
- package/dist/dev-ui/ws.js +19 -0
- package/dist/dev-ui/ws.js.map +1 -0
- package/dist/dev-ui-client/assets/index-B5wNJx8a.js +77 -0
- package/dist/dev-ui-client/assets/index-DAKTQEvj.js +1 -0
- package/dist/dev-ui-client/assets/index-DpOZNNnF.css +1 -0
- package/dist/dev-ui-client/index.html +13 -0
- package/dist/discover.d.ts +15 -0
- package/dist/discover.d.ts.map +1 -0
- package/dist/discover.js +29 -0
- package/dist/discover.js.map +1 -0
- package/dist/factory.d.ts.map +1 -1
- package/dist/factory.js +25 -12
- package/dist/factory.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/node.d.ts +1 -0
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +1 -0
- package/dist/node.js.map +1 -1
- package/dist/nodes/agent/executor.d.ts +2 -0
- package/dist/nodes/agent/executor.d.ts.map +1 -1
- package/dist/nodes/agent/executor.js +11 -1
- package/dist/nodes/agent/executor.js.map +1 -1
- package/dist/types.d.ts +19 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/workflow.d.ts +22 -0
- package/dist/workflow.d.ts.map +1 -1
- package/dist/workflow.js +90 -2
- package/dist/workflow.js.map +1 -1
- package/package.json +18 -3
- package/templates/app/dbos-config.yaml +6 -0
- package/templates/app/package.json +3 -1
- package/templates/app/src/app/api/workflow/[name]/route.ts +37 -0
- package/templates/app/src/instrumentation.ts +6 -0
- package/templates/app/src/lib/pflow.ts +29 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ApiFactory } from "@tigerdata/mcp-boilerplate";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import type { ServerContext } from "../types.js";
|
|
4
|
+
declare const inputSchema: {
|
|
5
|
+
readonly workflow_name: z.ZodString;
|
|
6
|
+
readonly input: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
7
|
+
};
|
|
8
|
+
declare const outputSchema: {
|
|
9
|
+
readonly run_id: z.ZodOptional<z.ZodString>;
|
|
10
|
+
readonly status: z.ZodString;
|
|
11
|
+
readonly result: z.ZodOptional<z.ZodUnknown>;
|
|
12
|
+
readonly error: z.ZodOptional<z.ZodString>;
|
|
13
|
+
};
|
|
14
|
+
export declare const runWorkflowFactory: ApiFactory<ServerContext, typeof inputSchema, typeof outputSchema>;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=runWorkflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runWorkflow.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/runWorkflow.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAYjD,QAAA,MAAM,WAAW;;;CAOP,CAAC;AAEX,QAAA,MAAM,YAAY;;;;;CAKR,CAAC;AASX,eAAO,MAAM,kBAAkB,EAAE,UAAU,CACzC,aAAa,EACb,OAAO,WAAW,EAClB,OAAO,YAAY,CAyCpB,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { execFile } from "node:child_process";
|
|
2
|
+
import { promisify } from "node:util";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
const execFileAsync = promisify(execFile);
|
|
5
|
+
// We shell out to the CLI instead of running workflows in-process because
|
|
6
|
+
// DBOS doesn't allow re-registering workflows after launch. A subprocess
|
|
7
|
+
// loads fresh code every time, so users can edit workflow code and re-run
|
|
8
|
+
// through MCP without restarting the server.
|
|
9
|
+
// process.argv gives us the same runtime+script the MCP server was started
|
|
10
|
+
// with (e.g. tsx + .ts in dev, node + .js in prod). process.execArgv
|
|
11
|
+
// forwards loader flags (--import tsx/esm) so .ts files resolve correctly.
|
|
12
|
+
const inputSchema = {
|
|
13
|
+
workflow_name: z.string().describe("Name of the workflow to run"),
|
|
14
|
+
input: z
|
|
15
|
+
.record(z.string(), z.unknown())
|
|
16
|
+
.optional()
|
|
17
|
+
.default({})
|
|
18
|
+
.describe("JSON input for the workflow (default: {})"),
|
|
19
|
+
};
|
|
20
|
+
const outputSchema = {
|
|
21
|
+
run_id: z.string().optional().describe("Workflow run UUID (use with get_trace to inspect execution)"),
|
|
22
|
+
status: z.string().describe("Execution status: SUCCESS or ERROR"),
|
|
23
|
+
result: z.unknown().optional().describe("Workflow return value"),
|
|
24
|
+
error: z.string().optional().describe("Error message if execution failed"),
|
|
25
|
+
};
|
|
26
|
+
export const runWorkflowFactory = () => {
|
|
27
|
+
return {
|
|
28
|
+
name: "run_workflow",
|
|
29
|
+
config: {
|
|
30
|
+
title: "Run Workflow",
|
|
31
|
+
description: "Execute a compiled workflow by name with JSON input. " +
|
|
32
|
+
"Returns the result and a run_id that can be used with get_trace to inspect execution details. " +
|
|
33
|
+
"Use list_workflows first to see available workflows.",
|
|
34
|
+
inputSchema,
|
|
35
|
+
outputSchema,
|
|
36
|
+
},
|
|
37
|
+
fn: async ({ workflow_name, input }) => {
|
|
38
|
+
const [runtime, script] = process.argv;
|
|
39
|
+
try {
|
|
40
|
+
const { stdout } = await execFileAsync(runtime, [
|
|
41
|
+
...process.execArgv,
|
|
42
|
+
script,
|
|
43
|
+
"workflow", "run", workflow_name,
|
|
44
|
+
"--json",
|
|
45
|
+
"-i", JSON.stringify(input),
|
|
46
|
+
], { cwd: process.cwd() });
|
|
47
|
+
return JSON.parse(stdout);
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
// execFile rejects on non-zero exit — try to parse JSON from stdout
|
|
51
|
+
const execErr = err;
|
|
52
|
+
if (execErr.stdout) {
|
|
53
|
+
try {
|
|
54
|
+
return JSON.parse(execErr.stdout);
|
|
55
|
+
}
|
|
56
|
+
catch { /* fall through */ }
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
status: "ERROR",
|
|
60
|
+
error: execErr.stderr?.trim() || execErr.message || String(err),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=runWorkflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runWorkflow.js","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/runWorkflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAE1C,0EAA0E;AAC1E,yEAAyE;AACzE,0EAA0E;AAC1E,6CAA6C;AAC7C,2EAA2E;AAC3E,qEAAqE;AACrE,2EAA2E;AAE3E,MAAM,WAAW,GAAG;IAClB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IACjE,KAAK,EAAE,CAAC;SACL,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;SAC/B,QAAQ,EAAE;SACV,OAAO,CAAC,EAAE,CAAC;SACX,QAAQ,CAAC,2CAA2C,CAAC;CAChD,CAAC;AAEX,MAAM,YAAY,GAAG;IACnB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6DAA6D,CAAC;IACrG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IACjE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IAChE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;CAClE,CAAC;AASX,MAAM,CAAC,MAAM,kBAAkB,GAI3B,GAAG,EAAE;IACP,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,MAAM,EAAE;YACN,KAAK,EAAE,cAAc;YACrB,WAAW,EACT,uDAAuD;gBACvD,gGAAgG;gBAChG,sDAAsD;YACxD,WAAW;YACX,YAAY;SACb;QACD,EAAE,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,EAAyB,EAAE;YAC5D,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;YAEvC,IAAI,CAAC;gBACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE;oBAC9C,GAAG,OAAO,CAAC,QAAQ;oBACnB,MAAM;oBACN,UAAU,EAAE,KAAK,EAAE,aAAa;oBAChC,QAAQ;oBACR,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;iBAC5B,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAE3B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAiB,CAAC;YAC5C,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,oEAAoE;gBACpE,MAAM,OAAO,GAAG,GAA6D,CAAC;gBAC9E,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;oBACnB,IAAI,CAAC;wBACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAiB,CAAC;oBACpD,CAAC;oBAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;gBAChC,CAAC;gBACD,OAAO;oBACL,MAAM,EAAE,OAAO;oBACf,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC;iBAChE,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -2,7 +2,7 @@ import type { ApiFactory } from "@tigerdata/mcp-boilerplate";
|
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import type { ServerContext } from "../types.js";
|
|
4
4
|
declare const inputSchema: {
|
|
5
|
-
readonly
|
|
5
|
+
readonly directory: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
6
6
|
readonly service_id: z.ZodString;
|
|
7
7
|
readonly app_name: z.ZodString;
|
|
8
8
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setupAppSchema.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/setupAppSchema.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAG7D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,QAAA,MAAM,WAAW;;;;
|
|
1
|
+
{"version":3,"file":"setupAppSchema.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/setupAppSchema.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAG7D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,QAAA,MAAM,WAAW;;;;CAgBP,CAAC;AAEX,QAAA,MAAM,YAAY;;;;;CAKR,CAAC;AAiCX,eAAO,MAAM,qBAAqB,EAAE,UAAU,CAC5C,aAAa,EACb,OAAO,WAAW,EAClB,OAAO,YAAY,CAuLpB,CAAC"}
|
|
@@ -4,13 +4,15 @@ import { readFile, writeFile } from "node:fs/promises";
|
|
|
4
4
|
import { join, resolve } from "node:path";
|
|
5
5
|
import { promisify } from "node:util";
|
|
6
6
|
import * as dotenv from "dotenv";
|
|
7
|
-
import
|
|
7
|
+
import pg from "pg";
|
|
8
8
|
import { z } from "zod";
|
|
9
9
|
const execAsync = promisify(exec);
|
|
10
10
|
const inputSchema = {
|
|
11
|
-
|
|
11
|
+
directory: z
|
|
12
12
|
.string()
|
|
13
|
-
.
|
|
13
|
+
.optional()
|
|
14
|
+
.default(".")
|
|
15
|
+
.describe("Directory of the application, relative to cwd (default: current working directory)"),
|
|
14
16
|
service_id: z.string().describe("Tiger Cloud service ID for the database"),
|
|
15
17
|
app_name: z
|
|
16
18
|
.string()
|
|
@@ -49,8 +51,8 @@ export const setupAppSchemaFactory = () => {
|
|
|
49
51
|
inputSchema,
|
|
50
52
|
outputSchema,
|
|
51
53
|
},
|
|
52
|
-
fn: async ({
|
|
53
|
-
const appDir = resolve(process.cwd(),
|
|
54
|
+
fn: async ({ directory, service_id, app_name, }) => {
|
|
55
|
+
const appDir = resolve(process.cwd(), directory);
|
|
54
56
|
const envPath = join(appDir, ".env");
|
|
55
57
|
// Check if we've already run this tool (DATABASE_SCHEMA is only set by us)
|
|
56
58
|
if (existsSync(envPath)) {
|
|
@@ -76,7 +78,11 @@ export const setupAppSchemaFactory = () => {
|
|
|
76
78
|
message: "connection_string not found in service details",
|
|
77
79
|
};
|
|
78
80
|
}
|
|
79
|
-
|
|
81
|
+
const parsed = new URL(serviceDetails.connection_string);
|
|
82
|
+
if (!parsed.searchParams.has("uselibpqcompat")) {
|
|
83
|
+
parsed.searchParams.set("uselibpqcompat", "true");
|
|
84
|
+
}
|
|
85
|
+
adminConnectionString = parsed.toString();
|
|
80
86
|
}
|
|
81
87
|
catch (err) {
|
|
82
88
|
const error = err;
|
|
@@ -85,15 +91,12 @@ export const setupAppSchemaFactory = () => {
|
|
|
85
91
|
message: `Failed to get service details: ${error.message}`,
|
|
86
92
|
};
|
|
87
93
|
}
|
|
88
|
-
// Connect using
|
|
89
|
-
const
|
|
94
|
+
// Connect using pg as admin
|
|
95
|
+
const pool = new pg.Pool({ connectionString: adminConnectionString, max: 1 });
|
|
90
96
|
try {
|
|
91
97
|
// Check if user already exists
|
|
92
|
-
const existingUser = await
|
|
93
|
-
|
|
94
|
-
`;
|
|
95
|
-
if (existingUser.length > 0) {
|
|
96
|
-
await sql.end();
|
|
98
|
+
const existingUser = await pool.query(`SELECT 1 FROM pg_catalog.pg_roles WHERE rolname = $1`, [app_name]);
|
|
99
|
+
if (existingUser.rows.length > 0) {
|
|
97
100
|
return {
|
|
98
101
|
success: false,
|
|
99
102
|
message: `User '${app_name}' already exists. Choose a different app name or delete the existing user.`,
|
|
@@ -101,28 +104,32 @@ export const setupAppSchemaFactory = () => {
|
|
|
101
104
|
}
|
|
102
105
|
// Create new user
|
|
103
106
|
const appPassword = generatePassword();
|
|
104
|
-
await
|
|
107
|
+
await pool.query(`CREATE ROLE ${app_name} WITH LOGIN PASSWORD '${appPassword}'`);
|
|
105
108
|
// Grant app role to tsdbadmin so admin can access app objects
|
|
106
|
-
await
|
|
109
|
+
await pool.query(`GRANT ${app_name} TO tsdbadmin WITH INHERIT TRUE`);
|
|
107
110
|
// Create app schema owned by the app user
|
|
108
|
-
await
|
|
109
|
-
await
|
|
111
|
+
await pool.query(`CREATE SCHEMA IF NOT EXISTS ${app_name} AUTHORIZATION ${app_name}`);
|
|
112
|
+
await pool.query(`CREATE SCHEMA IF NOT EXISTS ${app_name}_dbos AUTHORIZATION ${app_name}`);
|
|
110
113
|
//annoyingly, dbos seems to need this. TODO: find a better way to do this.
|
|
111
|
-
await
|
|
114
|
+
await pool.query(`GRANT CREATE ON DATABASE tsdb TO ${app_name}`);
|
|
112
115
|
// Allow using extensions in public schema, but not creating objects there
|
|
113
|
-
await
|
|
114
|
-
await
|
|
116
|
+
await pool.query(`REVOKE CREATE ON SCHEMA public FROM ${app_name}`);
|
|
117
|
+
await pool.query(`GRANT USAGE ON SCHEMA public TO ${app_name}`);
|
|
115
118
|
// Set search_path for app user (app schema first, then public for extensions)
|
|
116
|
-
await
|
|
119
|
+
await pool.query(`ALTER ROLE ${app_name} SET search_path TO ${app_name}, ${app_name}_dbos, public`);
|
|
117
120
|
// Append app schema to tsdbadmin's search_path
|
|
118
|
-
const currentPath = await
|
|
119
|
-
|
|
120
|
-
`;
|
|
121
|
-
const existingPath = currentPath[0]?.setting ?? "public";
|
|
121
|
+
const currentPath = await pool.query(`SELECT setting FROM pg_settings WHERE name = 'search_path'`);
|
|
122
|
+
const existingPath = currentPath.rows[0]?.setting ?? "public";
|
|
122
123
|
if (!existingPath.includes(app_name)) {
|
|
123
|
-
await
|
|
124
|
+
await pool.query(`ALTER ROLE tsdbadmin SET search_path TO ${existingPath}, ${app_name}, ${app_name}_dbos`);
|
|
125
|
+
}
|
|
126
|
+
// Create dbosadmin role for DBOS Cloud BYOD (Bring Your Own Database)
|
|
127
|
+
const existingAdmin = await pool.query(`SELECT 1 FROM pg_catalog.pg_roles WHERE rolname = 'dbosadmin'`);
|
|
128
|
+
let dbosAdminPassword;
|
|
129
|
+
if (existingAdmin.rows.length === 0) {
|
|
130
|
+
dbosAdminPassword = generatePassword();
|
|
131
|
+
await pool.query(`CREATE ROLE dbosadmin WITH LOGIN CREATEDB PASSWORD '${dbosAdminPassword}'`);
|
|
124
132
|
}
|
|
125
|
-
await sql.end();
|
|
126
133
|
// Build app connection string
|
|
127
134
|
const appDatabaseUrl = buildConnectionString(adminConnectionString, app_name, appPassword);
|
|
128
135
|
// Write or update .env file
|
|
@@ -130,10 +137,13 @@ export const setupAppSchemaFactory = () => {
|
|
|
130
137
|
if (existsSync(envPath)) {
|
|
131
138
|
envContent = await readFile(envPath, "utf-8");
|
|
132
139
|
}
|
|
133
|
-
// Update or add DATABASE_URL and
|
|
140
|
+
// Update or add DATABASE_URL, DATABASE_SCHEMA, and DBOS_ADMIN_URL
|
|
134
141
|
const env = dotenv.parse(envContent);
|
|
135
142
|
env.DATABASE_URL = appDatabaseUrl;
|
|
136
143
|
env.DATABASE_SCHEMA = app_name;
|
|
144
|
+
if (dbosAdminPassword) {
|
|
145
|
+
env.DBOS_ADMIN_URL = buildConnectionString(adminConnectionString, "dbosadmin", dbosAdminPassword);
|
|
146
|
+
}
|
|
137
147
|
// Rebuild .env content
|
|
138
148
|
const newEnvContent = Object.entries(env)
|
|
139
149
|
.map(([key, value]) => `${key}="${value}"`)
|
|
@@ -141,13 +151,15 @@ export const setupAppSchemaFactory = () => {
|
|
|
141
151
|
await writeFile(envPath, `${newEnvContent}\n`);
|
|
142
152
|
}
|
|
143
153
|
catch (err) {
|
|
144
|
-
await sql.end();
|
|
145
154
|
const error = err;
|
|
146
155
|
return {
|
|
147
156
|
success: false,
|
|
148
157
|
message: `Failed to set up app schema: ${error.message}`,
|
|
149
158
|
};
|
|
150
159
|
}
|
|
160
|
+
finally {
|
|
161
|
+
await pool.end();
|
|
162
|
+
}
|
|
151
163
|
return {
|
|
152
164
|
success: true,
|
|
153
165
|
message: `Created schema '${app_name}' and user '${app_name}'. DATABASE_URL and DATABASE_SCHEMA written to .env.`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setupAppSchema.js","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/setupAppSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,
|
|
1
|
+
{"version":3,"file":"setupAppSchema.js","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/setupAppSchema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ApiFactory } from "@tigerdata/mcp-boilerplate";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import type { ServerContext } from "../types.js";
|
|
4
|
+
declare const inputSchema: {
|
|
5
|
+
readonly port: z.ZodOptional<z.ZodNumber>;
|
|
6
|
+
};
|
|
7
|
+
declare const outputSchema: {
|
|
8
|
+
readonly url: z.ZodOptional<z.ZodString>;
|
|
9
|
+
readonly port: z.ZodOptional<z.ZodNumber>;
|
|
10
|
+
readonly already_running: z.ZodOptional<z.ZodBoolean>;
|
|
11
|
+
readonly error: z.ZodOptional<z.ZodString>;
|
|
12
|
+
};
|
|
13
|
+
export declare const startDevUiFactory: ApiFactory<ServerContext, typeof inputSchema, typeof outputSchema>;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=startDevUi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startDevUi.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/startDevUi.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,QAAA,MAAM,WAAW;;CAOP,CAAC;AAEX,QAAA,MAAM,YAAY;;;;;CAQR,CAAC;AAgBX,eAAO,MAAM,iBAAiB,EAAE,UAAU,CACxC,aAAa,EACb,OAAO,WAAW,EAClB,OAAO,YAAY,CA6EpB,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { resolve, dirname } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
const inputSchema = {
|
|
6
|
+
port: z
|
|
7
|
+
.number()
|
|
8
|
+
.optional()
|
|
9
|
+
.describe("Preferred port (default 4173). Falls back to an available port if taken."),
|
|
10
|
+
};
|
|
11
|
+
const outputSchema = {
|
|
12
|
+
url: z.string().optional().describe("Dev UI URL (e.g. http://localhost:4173)"),
|
|
13
|
+
port: z.number().optional().describe("Actual port the server is running on"),
|
|
14
|
+
already_running: z
|
|
15
|
+
.boolean()
|
|
16
|
+
.optional()
|
|
17
|
+
.describe("True if the server was already running from a previous call"),
|
|
18
|
+
error: z.string().optional().describe("Error message if the server could not start"),
|
|
19
|
+
};
|
|
20
|
+
// Module-level singleton state
|
|
21
|
+
let devServer = null;
|
|
22
|
+
export const startDevUiFactory = () => {
|
|
23
|
+
return {
|
|
24
|
+
name: "start_dev_ui",
|
|
25
|
+
config: {
|
|
26
|
+
title: "Start Dev UI",
|
|
27
|
+
description: "Start the 0pflow Dev UI server for visualizing workflow DAGs. " +
|
|
28
|
+
"Returns the URL with the actual port. Idempotent — if already running, returns existing URL. " +
|
|
29
|
+
"Automatically picks an available port if the default (4173) is taken.",
|
|
30
|
+
inputSchema,
|
|
31
|
+
outputSchema,
|
|
32
|
+
},
|
|
33
|
+
fn: async ({ port }) => {
|
|
34
|
+
// Singleton: if already running, return existing info
|
|
35
|
+
if (devServer) {
|
|
36
|
+
return {
|
|
37
|
+
url: devServer.url,
|
|
38
|
+
port: devServer.port,
|
|
39
|
+
already_running: true,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
// Check that the dev-ui client has been built (find package root first)
|
|
43
|
+
let pkgRoot = dirname(fileURLToPath(import.meta.url));
|
|
44
|
+
while (!existsSync(resolve(pkgRoot, "package.json"))) {
|
|
45
|
+
const parent = dirname(pkgRoot);
|
|
46
|
+
if (parent === pkgRoot)
|
|
47
|
+
break;
|
|
48
|
+
pkgRoot = parent;
|
|
49
|
+
}
|
|
50
|
+
const clientIndex = resolve(pkgRoot, "dist/dev-ui-client/index.html");
|
|
51
|
+
if (!existsSync(clientIndex)) {
|
|
52
|
+
return {
|
|
53
|
+
error: "Dev UI client not built. Run: pnpm --filter 0pflow build",
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
// Load .env for DATABASE_URL and NANGO_SECRET_KEY (best-effort)
|
|
57
|
+
try {
|
|
58
|
+
const { resolveEnv } = await import("../../env.js");
|
|
59
|
+
resolveEnv();
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
// Dev UI works without env — connections API just won't be available
|
|
63
|
+
}
|
|
64
|
+
const { startDevServer } = await import("../../../dev-ui/index.js");
|
|
65
|
+
const result = await startDevServer({
|
|
66
|
+
projectRoot: process.cwd(),
|
|
67
|
+
port: port ?? 4173,
|
|
68
|
+
quiet: true, // Critical: suppress stdout in MCP stdio transport
|
|
69
|
+
databaseUrl: process.env.DATABASE_URL,
|
|
70
|
+
nangoSecretKey: process.env.NANGO_SECRET_KEY,
|
|
71
|
+
});
|
|
72
|
+
devServer = {
|
|
73
|
+
url: result.url,
|
|
74
|
+
port: result.port,
|
|
75
|
+
cleanup: result.cleanup,
|
|
76
|
+
};
|
|
77
|
+
// Safety net: clean up if stdin closes (Claude Code exited)
|
|
78
|
+
process.stdin.on("end", () => {
|
|
79
|
+
if (devServer) {
|
|
80
|
+
devServer.cleanup().catch(() => { });
|
|
81
|
+
devServer = null;
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
return {
|
|
85
|
+
url: result.url,
|
|
86
|
+
port: result.port,
|
|
87
|
+
already_running: false,
|
|
88
|
+
};
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
//# sourceMappingURL=startDevUi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startDevUi.js","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/startDevUi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/utils.ts"],"names":[],"mappings":"AAgBA;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAK3C;AAGD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import dotenv from "dotenv";
|
|
4
|
+
/**
|
|
5
|
+
* Load .env directly from cwd — NOT via resolveEnv() which walks up
|
|
6
|
+
* the directory tree and may find a parent .env instead of the app's.
|
|
7
|
+
* Uses override: true so the app's values always win.
|
|
8
|
+
*/
|
|
9
|
+
function loadProjectEnv() {
|
|
10
|
+
const envPath = join(process.cwd(), ".env");
|
|
11
|
+
if (existsSync(envPath)) {
|
|
12
|
+
dotenv.config({ path: envPath, override: true, quiet: true });
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Load .env from cwd and return DATABASE_URL.
|
|
17
|
+
* Throws with a helpful message if not found.
|
|
18
|
+
*/
|
|
19
|
+
export function requireDatabaseUrl() {
|
|
20
|
+
loadProjectEnv();
|
|
21
|
+
const url = process.env.DATABASE_URL;
|
|
22
|
+
if (!url)
|
|
23
|
+
throw new Error("DATABASE_URL not set in .env");
|
|
24
|
+
return url;
|
|
25
|
+
}
|
|
26
|
+
// Re-export parseOutput for MCP tools to unwrap superjson DB rows
|
|
27
|
+
export { parseOutput } from "../../trace.js";
|
|
28
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B;;;;GAIG;AACH,SAAS,cAAc;IACrB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;IAC5C,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAChC,cAAc,EAAE,CAAC;IACjB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IACrC,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC1D,OAAO,GAAG,CAAC;AACb,CAAC;AAED,kEAAkE;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/cli/trace.d.ts
CHANGED
|
@@ -24,6 +24,11 @@ export interface TraceResult {
|
|
|
24
24
|
* Get workflow trace including all operations and child workflows
|
|
25
25
|
*/
|
|
26
26
|
export declare function getTrace(databaseUrl: string, runId: string, schemaOverride?: string): Promise<TraceResult>;
|
|
27
|
+
/**
|
|
28
|
+
* Parse and unwrap DBOS/superjson output format
|
|
29
|
+
* Handles: raw values, JSON strings, and {"json": ..., "__dbos_serializer": "superjson"} wrappers
|
|
30
|
+
*/
|
|
31
|
+
export declare function parseOutput(output: unknown): unknown;
|
|
27
32
|
/**
|
|
28
33
|
* Print a workflow trace as a tree to stdout
|
|
29
34
|
*/
|
package/dist/cli/trace.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../src/cli/trace.ts"],"names":[],"mappings":"AAKA,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAErD,MAAM,WAAW,aAAc,SAAQ,WAAW;IAChD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,WAAW,CAAC,CAatB;
|
|
1
|
+
{"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../src/cli/trace.ts"],"names":[],"mappings":"AAKA,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAErD,MAAM,WAAW,aAAc,SAAQ,WAAW;IAChD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,WAAW,CAAC,CAatB;AAkGD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAYpD;AAgCD;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAiInD"}
|
package/dist/cli/trace.js
CHANGED
|
@@ -103,7 +103,7 @@ function formatDuration(ms) {
|
|
|
103
103
|
* Parse and unwrap DBOS/superjson output format
|
|
104
104
|
* Handles: raw values, JSON strings, and {"json": ..., "__dbos_serializer": "superjson"} wrappers
|
|
105
105
|
*/
|
|
106
|
-
function parseOutput(output) {
|
|
106
|
+
export function parseOutput(output) {
|
|
107
107
|
if (output === null || output === undefined)
|
|
108
108
|
return null;
|
|
109
109
|
try {
|
package/dist/cli/trace.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace.js","sourceRoot":"","sources":["../../src/cli/trace.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"trace.js","sourceRoot":"","sources":["../../src/cli/trace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get the stored API token, or null if not authenticated.
|
|
3
|
+
*/
|
|
4
|
+
export declare function getToken(): string | null;
|
|
5
|
+
/**
|
|
6
|
+
* Save an API token and server URL to ~/.0pflow/credentials.
|
|
7
|
+
*/
|
|
8
|
+
export declare function saveToken(token: string, serverUrl?: string): void;
|
|
9
|
+
/**
|
|
10
|
+
* Check if the user is authenticated (has a stored token).
|
|
11
|
+
*/
|
|
12
|
+
export declare function isAuthenticated(): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Get the server URL from stored credentials, or the default.
|
|
15
|
+
*/
|
|
16
|
+
export declare function getServerUrl(): string;
|
|
17
|
+
/**
|
|
18
|
+
* Open a URL in the user's default browser.
|
|
19
|
+
*/
|
|
20
|
+
export declare function openBrowser(url: string): void;
|
|
21
|
+
/**
|
|
22
|
+
* Error indicating the user needs to approve the auth session in their browser.
|
|
23
|
+
*/
|
|
24
|
+
export declare class AuthRequiredError extends Error {
|
|
25
|
+
readonly authUrl: string;
|
|
26
|
+
constructor(authUrl: string);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Perform browser-based CLI authentication (two-phase, non-blocking).
|
|
30
|
+
*
|
|
31
|
+
* Phase 1 (no pending session):
|
|
32
|
+
* - Creates a session, opens browser, polls briefly (~16s)
|
|
33
|
+
* - If approved quickly: saves token, returns
|
|
34
|
+
* - If not: saves pending session, throws AuthRequiredError with URL
|
|
35
|
+
*
|
|
36
|
+
* Phase 2 (pending session exists):
|
|
37
|
+
* - Checks if the pending session was approved
|
|
38
|
+
* - If approved: saves token, clears pending, returns
|
|
39
|
+
* - If not: throws AuthRequiredError with URL again
|
|
40
|
+
*/
|
|
41
|
+
export declare function authenticate(): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Clear stored credentials (logout).
|
|
44
|
+
*/
|
|
45
|
+
export declare function logout(): void;
|
|
46
|
+
//# sourceMappingURL=cloud-auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-auth.d.ts","sourceRoot":"","sources":["../../src/connections/cloud-auth.ts"],"names":[],"mappings":"AA+FA;;GAEG;AACH,wBAAgB,QAAQ,IAAI,MAAM,GAAG,IAAI,CAOxC;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAOjE;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAGrC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAiB7C;AA0CD;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,SAAgB,OAAO,EAAE,MAAM,CAAC;gBAEpB,OAAO,EAAE,MAAM;CAS5B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CA8DlD;AAED;;GAEG;AACH,wBAAgB,MAAM,IAAI,IAAI,CAS7B"}
|