0pflow 0.1.0-dev.628bd97 → 0.1.0-dev.67aecec
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/__tests__/factory.test.js +13 -0
- package/dist/__tests__/factory.test.js.map +1 -1
- package/dist/__tests__/integration.e2e.test.js +2 -1
- package/dist/__tests__/integration.e2e.test.js.map +1 -1
- package/dist/__tests__/integration.test.js +87 -82
- package/dist/__tests__/integration.test.js.map +1 -1
- package/dist/agent.d.ts +7 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +75 -10
- package/dist/agent.js.map +1 -1
- package/dist/cli/__tests__/discovery.test.js +1 -1
- package/dist/cli/__tests__/discovery.test.js.map +1 -1
- package/dist/cli/app.d.ts +6 -0
- package/dist/cli/app.d.ts.map +1 -1
- package/dist/cli/app.js +31 -0
- package/dist/cli/app.js.map +1 -1
- package/dist/cli/cloud-dev.d.ts +7 -0
- package/dist/cli/cloud-dev.d.ts.map +1 -0
- package/dist/cli/cloud-dev.js +570 -0
- package/dist/cli/cloud-dev.js.map +1 -0
- package/dist/cli/deploy.d.ts +27 -0
- package/dist/cli/deploy.d.ts.map +1 -0
- package/dist/cli/deploy.js +332 -0
- package/dist/cli/deploy.js.map +1 -0
- 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.d.ts +3 -1
- package/dist/cli/env.d.ts.map +1 -1
- package/dist/cli/env.js +9 -4
- package/dist/cli/env.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +208 -11
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/install.d.ts +4 -0
- package/dist/cli/install.d.ts.map +1 -1
- package/dist/cli/install.js +63 -32
- package/dist/cli/install.js.map +1 -1
- package/dist/cli/mcp/config.d.ts +0 -1
- package/dist/cli/mcp/config.d.ts.map +1 -1
- package/dist/cli/mcp/config.js +2 -4
- package/dist/cli/mcp/config.js.map +1 -1
- package/dist/cli/mcp/lib/scaffolding.d.ts +33 -0
- package/dist/cli/mcp/lib/scaffolding.d.ts.map +1 -0
- package/dist/cli/mcp/lib/scaffolding.js +234 -0
- package/dist/cli/mcp/lib/scaffolding.js.map +1 -0
- 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 +12 -53
- package/dist/cli/mcp/tools/createApp.js.map +1 -1
- package/dist/cli/mcp/tools/createDatabase.d.ts.map +1 -1
- package/dist/cli/mcp/tools/createDatabase.js +2 -41
- package/dist/cli/mcp/tools/createDatabase.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 +111 -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 +94 -1
- package/dist/cli/mcp/tools/index.d.ts.map +1 -1
- package/dist/cli/mcp/tools/index.js +16 -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 +11 -132
- package/dist/cli/mcp/tools/setupAppSchema.js.map +1 -1
- 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/run.d.ts +2 -0
- package/dist/cli/run.d.ts.map +1 -0
- package/dist/cli/run.js +560 -0
- package/dist/cli/run.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 +247 -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 +66 -0
- package/dist/connections/cloud-client.js.map +1 -0
- package/dist/connections/cloud-integration-provider.d.ts +22 -0
- package/dist/connections/cloud-integration-provider.d.ts.map +1 -0
- package/dist/connections/cloud-integration-provider.js +42 -0
- package/dist/connections/cloud-integration-provider.js.map +1 -0
- package/dist/connections/connection-labels.d.ts +14 -0
- package/dist/connections/connection-labels.d.ts.map +1 -0
- package/dist/connections/connection-labels.js +46 -0
- package/dist/connections/connection-labels.js.map +1 -0
- package/dist/connections/index.d.ts +12 -0
- package/dist/connections/index.d.ts.map +1 -0
- package/dist/connections/index.js +10 -0
- package/dist/connections/index.js.map +1 -0
- package/dist/connections/integration-provider.d.ts +39 -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 +29 -0
- package/dist/connections/local-integration-provider.d.ts.map +1 -0
- package/dist/connections/local-integration-provider.js +71 -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 +51 -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 +48 -0
- package/dist/connections/resolver.js.map +1 -0
- package/dist/connections/schema.d.ts +8 -0
- package/dist/connections/schema.d.ts.map +1 -0
- package/dist/connections/schema.js +31 -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 +18 -0
- package/dist/dev-ui/api.d.ts.map +1 -0
- package/dist/dev-ui/api.js +273 -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 +716 -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/deploy-api.d.ts +14 -0
- package/dist/dev-ui/deploy-api.d.ts.map +1 -0
- package/dist/dev-ui/deploy-api.js +112 -0
- package/dist/dev-ui/deploy-api.js.map +1 -0
- package/dist/dev-ui/dev-server.d.ts +18 -0
- package/dist/dev-ui/dev-server.d.ts.map +1 -0
- package/dist/dev-ui/dev-server.js +275 -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/pty.d.ts +16 -0
- package/dist/dev-ui/pty.d.ts.map +1 -0
- package/dist/dev-ui/pty.js +87 -0
- package/dist/dev-ui/pty.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 +166 -0
- package/dist/dev-ui/watcher.js.map +1 -0
- package/dist/dev-ui/ws.d.ts +52 -0
- package/dist/dev-ui/ws.d.ts.map +1 -0
- package/dist/dev-ui/ws.js +32 -0
- package/dist/dev-ui/ws.js.map +1 -0
- package/dist/dev-ui-client/assets/index-CNKqwcCH.css +32 -0
- package/dist/dev-ui-client/assets/index-Ccj-QknZ.js +179 -0
- package/dist/dev-ui-client/assets/index-DAKTQEvj.js +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 +32 -0
- package/dist/discover.js.map +1 -0
- package/dist/factory.d.ts.map +1 -1
- package/dist/factory.js +37 -13
- package/dist/factory.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -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/registry-gen.d.ts +6 -0
- package/dist/registry-gen.d.ts.map +1 -0
- package/dist/registry-gen.js +146 -0
- package/dist/registry-gen.js.map +1 -0
- package/dist/types.d.ts +28 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +18 -1
- package/dist/types.js.map +1 -1
- package/dist/workflow.d.ts +22 -0
- package/dist/workflow.d.ts.map +1 -1
- package/dist/workflow.js +113 -3
- package/dist/workflow.js.map +1 -1
- package/package.json +30 -6
- package/templates/app/.dockerignore +6 -0
- package/templates/app/.env.example +13 -0
- package/templates/app/Dockerfile +34 -0
- package/templates/app/README.md +29 -0
- package/templates/app/biome.jsonc +81 -0
- package/templates/app/dbos-config.yaml +6 -0
- package/templates/app/drizzle.config.ts +12 -0
- package/templates/app/generated/registry.ts +8 -0
- package/templates/app/next.config.js +13 -0
- package/templates/app/package.json +57 -0
- package/templates/app/postcss.config.js +5 -0
- package/templates/app/public/favicon.ico +0 -0
- package/templates/app/src/app/_components/.gitkeep +0 -0
- package/templates/app/src/app/api/trpc/[trpc]/route.ts +34 -0
- package/templates/app/src/app/api/workflow/[name]/route.ts +37 -0
- package/templates/app/src/app/layout.tsx +29 -0
- package/templates/app/src/app/page.tsx +18 -0
- package/templates/app/src/env.js +46 -0
- package/templates/app/src/instrumentation.ts +6 -0
- package/templates/app/src/lib/pflow.ts +28 -0
- package/templates/app/src/server/api/root.ts +21 -0
- package/templates/app/src/server/api/routers/.gitkeep +0 -0
- package/templates/app/src/server/api/trpc.ts +106 -0
- package/templates/app/src/server/db/index.ts +18 -0
- package/templates/app/src/server/db/schema.ts +14 -0
- package/templates/app/src/styles/globals.css +6 -0
- package/templates/app/src/styles/globals.css.orange +126 -0
- package/templates/app/src/trpc/query-client.ts +25 -0
- package/templates/app/src/trpc/react.tsx +78 -0
- package/templates/app/src/trpc/server.ts +30 -0
- package/templates/app/tsconfig.check.json +23 -0
- package/templates/app/tsconfig.json +42 -0
- package/templates/app/tsconfig.server.json +5 -0
- package/templates/app/tsconfig.test.json +21 -0
package/dist/agent.js
CHANGED
|
@@ -1,43 +1,100 @@
|
|
|
1
1
|
import { DBOS } from "@dbos-inc/dbos-sdk";
|
|
2
2
|
import { parseAgentSpec } from "./nodes/agent/parser.js";
|
|
3
3
|
import { executeAgent } from "./nodes/agent/executor.js";
|
|
4
|
-
|
|
4
|
+
import { resolveConnectionId } from "./connections/index.js";
|
|
5
|
+
const AGENT_CONFIG_KEY = Symbol.for("opflow.getAgentRuntimeConfig()");
|
|
6
|
+
function getAgentRuntimeConfig() {
|
|
7
|
+
return globalThis[AGENT_CONFIG_KEY] ?? null;
|
|
8
|
+
}
|
|
5
9
|
/**
|
|
6
10
|
* Configure the agent runtime (called by factory)
|
|
7
11
|
* @internal
|
|
8
12
|
*/
|
|
9
13
|
export function configureAgentRuntime(config) {
|
|
10
|
-
|
|
14
|
+
globalThis[AGENT_CONFIG_KEY] = config;
|
|
11
15
|
}
|
|
12
16
|
/**
|
|
13
17
|
* Create a WorkflowContext for agent execution that wraps tool calls in DBOS steps
|
|
18
|
+
*
|
|
19
|
+
* @param agentName - The agent's own name (used as workflowName for DBOS child workflow)
|
|
20
|
+
* @param parentWorkflowName - The parent workflow name (for connection resolution)
|
|
21
|
+
* @param parentNodeName - The agent's node name within the parent workflow (for connection resolution)
|
|
14
22
|
*/
|
|
15
|
-
function createAgentContext() {
|
|
23
|
+
function createAgentContext(agentName, parentWorkflowName, parentNodeName) {
|
|
24
|
+
let _currentNodeName = "*";
|
|
25
|
+
let _currentIntegrations;
|
|
16
26
|
const ctx = {
|
|
27
|
+
workflowName: agentName,
|
|
17
28
|
run: async (executable, inputs) => {
|
|
18
29
|
// Validate inputs against schema
|
|
19
30
|
const validated = executable.inputSchema.parse(inputs);
|
|
31
|
+
// Track current node for connection resolution
|
|
32
|
+
_currentNodeName = executable.name;
|
|
33
|
+
_currentIntegrations = executable.integrations;
|
|
20
34
|
// Wrap execution in DBOS step for durability
|
|
21
35
|
return DBOS.runStep(async () => executable.execute(ctx, validated), { name: executable.name });
|
|
22
36
|
},
|
|
37
|
+
getConnection: async (integrationId) => {
|
|
38
|
+
const runtimeConfig = getAgentRuntimeConfig();
|
|
39
|
+
if (!runtimeConfig?.pool || !runtimeConfig?.integrationProvider) {
|
|
40
|
+
throw new Error("Connection management not configured. Set NANGO_SECRET_KEY and DATABASE_URL.");
|
|
41
|
+
}
|
|
42
|
+
// Validate that the integration was declared on the current node
|
|
43
|
+
if (_currentIntegrations && !_currentIntegrations.includes(integrationId)) {
|
|
44
|
+
const declared = _currentIntegrations.map(i => `"${i}"`).join(", ");
|
|
45
|
+
throw new Error(`Integration "${integrationId}" is not declared on node "${_currentNodeName}". ` +
|
|
46
|
+
`Declared integrations: [${declared}]. ` +
|
|
47
|
+
`Add "${integrationId}" to the node's integrations array.`);
|
|
48
|
+
}
|
|
49
|
+
// If the agent was called from a parent workflow, use the parent's
|
|
50
|
+
// workflow name and the agent's node name within that workflow for
|
|
51
|
+
// connection resolution. This matches how connections are configured
|
|
52
|
+
// in the DB (workflow_name + node_name).
|
|
53
|
+
const resolveWorkflow = parentWorkflowName ?? agentName;
|
|
54
|
+
const resolveNode = parentNodeName ?? _currentNodeName;
|
|
55
|
+
const connectionId = await resolveConnectionId(runtimeConfig.pool, resolveWorkflow, resolveNode, integrationId, runtimeConfig.appSchema);
|
|
56
|
+
if (!connectionId) {
|
|
57
|
+
throw new Error(`No connection configured for integration "${integrationId}" ` +
|
|
58
|
+
`(workflow="${resolveWorkflow}", node="${resolveNode}"). ` +
|
|
59
|
+
`Configure it in the Dev UI or set a global default.`);
|
|
60
|
+
}
|
|
61
|
+
return runtimeConfig.integrationProvider.fetchCredentials(integrationId, connectionId);
|
|
62
|
+
},
|
|
23
63
|
log: (message, level = "info") => {
|
|
24
64
|
DBOS.logger[level](message);
|
|
25
65
|
},
|
|
26
66
|
};
|
|
27
67
|
return ctx;
|
|
28
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
|
+
}
|
|
29
78
|
/**
|
|
30
79
|
* Factory for creating agent executables
|
|
31
80
|
*/
|
|
32
81
|
export const Agent = {
|
|
33
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;
|
|
34
87
|
const tools = definition.tools ?? {};
|
|
88
|
+
// Parent workflow context info, captured before DBOS child workflow starts
|
|
89
|
+
let _parentWorkflowName;
|
|
90
|
+
let _parentNodeName;
|
|
35
91
|
// Create the DBOS-registered workflow function for this agent
|
|
36
92
|
async function agentWorkflowImpl(inputs) {
|
|
37
|
-
|
|
93
|
+
const runtimeConfig = getAgentRuntimeConfig();
|
|
94
|
+
if (!runtimeConfig) {
|
|
38
95
|
throw new Error("Agent runtime not configured. Make sure to use create0pflow() before executing agents.");
|
|
39
96
|
}
|
|
40
|
-
const ctx = createAgentContext();
|
|
97
|
+
const ctx = createAgentContext(definition.name, _parentWorkflowName, _parentNodeName);
|
|
41
98
|
// Parse the agent spec (for system prompt and model override)
|
|
42
99
|
const spec = await parseAgentSpec(definition.specPath);
|
|
43
100
|
// Convert inputs to a user message string
|
|
@@ -49,9 +106,10 @@ export const Agent = {
|
|
|
49
106
|
spec,
|
|
50
107
|
userMessage,
|
|
51
108
|
tools,
|
|
52
|
-
nodeRegistry:
|
|
53
|
-
modelConfig:
|
|
109
|
+
nodeRegistry: runtimeConfig.nodeRegistry,
|
|
110
|
+
modelConfig: runtimeConfig.modelConfig,
|
|
54
111
|
outputSchema: definition.outputSchema,
|
|
112
|
+
integrations: definition.integrations,
|
|
55
113
|
});
|
|
56
114
|
return result.output;
|
|
57
115
|
}
|
|
@@ -59,7 +117,7 @@ export const Agent = {
|
|
|
59
117
|
const durableAgentWorkflow = DBOS.registerWorkflow(agentWorkflowImpl, {
|
|
60
118
|
name: definition.name,
|
|
61
119
|
});
|
|
62
|
-
|
|
120
|
+
const executable = {
|
|
63
121
|
name: definition.name,
|
|
64
122
|
type: "agent",
|
|
65
123
|
description: definition.description,
|
|
@@ -67,9 +125,16 @@ export const Agent = {
|
|
|
67
125
|
outputSchema: definition.outputSchema,
|
|
68
126
|
specPath: definition.specPath,
|
|
69
127
|
tools,
|
|
70
|
-
|
|
71
|
-
|
|
128
|
+
integrations: definition.integrations,
|
|
129
|
+
// Capture parent workflow context for connection resolution, then run as DBOS child workflow
|
|
130
|
+
execute: (parentCtx, inputs) => {
|
|
131
|
+
_parentWorkflowName = parentCtx.workflowName;
|
|
132
|
+
_parentNodeName = definition.name;
|
|
133
|
+
return durableAgentWorkflow(inputs);
|
|
134
|
+
},
|
|
72
135
|
};
|
|
136
|
+
getAgentCache().set(definition.name, executable);
|
|
137
|
+
return executable;
|
|
73
138
|
},
|
|
74
139
|
};
|
|
75
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":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ describe("discoverWorkflows", () => {
|
|
|
9
9
|
expect(result.warnings).toEqual([]);
|
|
10
10
|
});
|
|
11
11
|
it("discovers workflow executables from uptime-app", async () => {
|
|
12
|
-
const projectRoot = path.resolve(__dirname, "
|
|
12
|
+
const projectRoot = path.resolve(__dirname, "../../../../..");
|
|
13
13
|
const uptimeApp = path.join(projectRoot, "examples/uptime-app");
|
|
14
14
|
const result = await discoverWorkflows(uptimeApp);
|
|
15
15
|
expect(result.workflows.length).toBeGreaterThan(0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.test.js","sourceRoot":"","sources":["../../../src/cli/__tests__/discovery.test.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,cAAc,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"discovery.test.js","sourceRoot":"","sources":["../../../src/cli/__tests__/discovery.test.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,cAAc,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;QAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACnD,yDAAyD;QACzD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,uEAAuE;QACvE,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,cAAc,CAAC,CAAC;QACvD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/cli/app.d.ts
CHANGED
|
@@ -3,4 +3,10 @@
|
|
|
3
3
|
* Returns undefined if not found
|
|
4
4
|
*/
|
|
5
5
|
export declare function getAppName(): string | undefined;
|
|
6
|
+
/**
|
|
7
|
+
* Get the app schema name from DATABASE_SCHEMA in the project's .env file.
|
|
8
|
+
* This is the canonical source — written by setup_app_schema.
|
|
9
|
+
* @param projectRoot Directory containing the .env file (defaults to cwd)
|
|
10
|
+
*/
|
|
11
|
+
export declare function getAppSchema(projectRoot?: string): string;
|
|
6
12
|
//# sourceMappingURL=app.d.ts.map
|
package/dist/cli/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/cli/app.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/cli/app.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAgB,UAAU,IAAI,MAAM,GAAG,SAAS,CAa/C;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CA+BzD"}
|
package/dist/cli/app.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// packages/cli/src/app.ts
|
|
2
2
|
import fs from "fs";
|
|
3
3
|
import path from "path";
|
|
4
|
+
import * as dotenv from "dotenv";
|
|
4
5
|
/**
|
|
5
6
|
* Get the app name from package.json in cwd
|
|
6
7
|
* Returns undefined if not found
|
|
@@ -18,4 +19,34 @@ export function getAppName() {
|
|
|
18
19
|
return undefined;
|
|
19
20
|
}
|
|
20
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Get the app schema name from DATABASE_SCHEMA in the project's .env file.
|
|
24
|
+
* This is the canonical source — written by setup_app_schema.
|
|
25
|
+
* @param projectRoot Directory containing the .env file (defaults to cwd)
|
|
26
|
+
*/
|
|
27
|
+
export function getAppSchema(projectRoot) {
|
|
28
|
+
// Check process.env first (e.g. Fly secrets in cloud-dev)
|
|
29
|
+
if (process.env.DATABASE_SCHEMA) {
|
|
30
|
+
return process.env.DATABASE_SCHEMA;
|
|
31
|
+
}
|
|
32
|
+
const envPath = path.join(projectRoot ?? process.cwd(), ".env");
|
|
33
|
+
if (!fs.existsSync(envPath)) {
|
|
34
|
+
throw new Error("DATABASE_SCHEMA not found in .env file. " +
|
|
35
|
+
"Run setup_app_schema to configure the database.");
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
const env = dotenv.parse(fs.readFileSync(envPath, "utf-8"));
|
|
39
|
+
if (!env.DATABASE_SCHEMA) {
|
|
40
|
+
throw new Error("DATABASE_SCHEMA not found in .env file. " +
|
|
41
|
+
"Run setup_app_schema to configure the database.");
|
|
42
|
+
}
|
|
43
|
+
return env.DATABASE_SCHEMA;
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
if (err instanceof Error && err.message.includes("DATABASE_SCHEMA"))
|
|
47
|
+
throw err;
|
|
48
|
+
throw new Error("DATABASE_SCHEMA not found in .env file. " +
|
|
49
|
+
"Run setup_app_schema to configure the database.");
|
|
50
|
+
}
|
|
51
|
+
}
|
|
21
52
|
//# sourceMappingURL=app.js.map
|
package/dist/cli/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/cli/app.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/cli/app.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC;;;GAGG;AACH,MAAM,UAAU,UAAU;IACxB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;IAEzD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1D,OAAO,GAAG,CAAC,IAAI,CAAC;IAClB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,WAAoB;IAC/C,0DAA0D;IAC1D,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IACrC,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;IAEhE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,0CAA0C;YAC1C,iDAAiD,CAClD,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,0CAA0C;gBAC1C,iDAAiD,CAClD,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,CAAC,eAAe,CAAC;IAC7B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YAAE,MAAM,GAAG,CAAC;QAC/E,MAAM,IAAI,KAAK,CACb,0CAA0C;YAC1C,iDAAiD,CAClD,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function runCloudRun(): Promise<void>;
|
|
2
|
+
export declare function handleStatus(): Promise<void>;
|
|
3
|
+
export declare function handleStop(): Promise<void>;
|
|
4
|
+
export declare function handleDestroy(): Promise<void>;
|
|
5
|
+
export declare function handleClaude(extraArgs?: string[]): Promise<void>;
|
|
6
|
+
export declare function handleSSH(): Promise<void>;
|
|
7
|
+
//# sourceMappingURL=cloud-dev.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-dev.d.ts","sourceRoot":"","sources":["../../src/cli/cloud-dev.ts"],"names":[],"mappings":"AA2IA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAyRjD;AAsED,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAmClD;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAgBhD;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAyBnD;AA8ED,wBAAsB,YAAY,CAAC,SAAS,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB1E;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAmB/C"}
|