@minicor/mcp-server 3.1.5 → 3.2.0
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/README.md +251 -61
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/laminar-client.d.ts +5 -0
- package/dist/laminar-client.d.ts.map +1 -1
- package/dist/laminar-client.js +6 -0
- package/dist/laminar-client.js.map +1 -1
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +2 -0
- package/dist/lib.js.map +1 -1
- package/dist/prompts/build-rpa.d.ts.map +1 -1
- package/dist/prompts/build-rpa.js +86 -272
- package/dist/prompts/build-rpa.js.map +1 -1
- package/dist/prompts/debug-execution.js +1 -1
- package/dist/seed-skills.d.ts +13 -0
- package/dist/seed-skills.d.ts.map +1 -0
- package/dist/seed-skills.js +82 -0
- package/dist/seed-skills.js.map +1 -0
- package/dist/skills-service-client.d.ts +54 -0
- package/dist/skills-service-client.d.ts.map +1 -0
- package/dist/skills-service-client.js +93 -0
- package/dist/skills-service-client.js.map +1 -0
- package/dist/skills.d.ts +34 -0
- package/dist/skills.d.ts.map +1 -0
- package/dist/skills.js +152 -0
- package/dist/skills.js.map +1 -0
- package/dist/sync.d.ts +18 -2
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.js +404 -104
- package/dist/sync.js.map +1 -1
- package/dist/tools/core.d.ts.map +1 -1
- package/dist/tools/core.js +12 -0
- package/dist/tools/core.js.map +1 -1
- package/dist/tools/skills.d.ts +3 -0
- package/dist/tools/skills.d.ts.map +1 -0
- package/dist/tools/skills.js +429 -0
- package/dist/tools/skills.js.map +1 -0
- package/dist/tools/sync-tools.d.ts.map +1 -1
- package/dist/tools/sync-tools.js +53 -12
- package/dist/tools/sync-tools.js.map +1 -1
- package/dist/tools/vm.js +1 -1
- package/dist/tools/workflow-ops.js +1 -1
- package/dist/tools/workflow-ops.js.map +1 -1
- package/package.json +4 -2
- package/skills/general/cdp-browser-automation.md +97 -0
- package/skills/general/data-extraction-strategies.md +64 -0
- package/skills/general/data-hydration-patterns.md +167 -0
- package/skills/general/data-passing-between-steps.md +46 -0
- package/skills/general/desktop-uiautomation.md +80 -0
- package/skills/general/rpa-testing-workflow.md +145 -0
- package/skills/general/session-keepalive.md +101 -0
- package/skills/general/smart-launch-patterns.md +213 -0
- package/skills/general/state-verification.md +56 -0
package/dist/tools/sync-tools.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { ok, text } from "../helpers.js";
|
|
4
|
-
import { initProject, pullAll, pullWorkflow, pushChanged, pushWorkflow, syncStatus, } from "../sync.js";
|
|
4
|
+
import { initProject, cloneWorkspace, pullAll, pullWorkflow, pushChanged, pushWorkflow, syncStatus, } from "../sync.js";
|
|
5
5
|
import { getWorkspaceRegion } from "../state.js";
|
|
6
6
|
const regionParam = z
|
|
7
7
|
.enum(["us", "ca"])
|
|
@@ -9,7 +9,7 @@ const regionParam = z
|
|
|
9
9
|
.describe("Region (us or ca). Auto-detected from workspace if omitted.");
|
|
10
10
|
export function register(deps) {
|
|
11
11
|
const { server } = deps;
|
|
12
|
-
server.tool("init_project", "Scaffold a
|
|
12
|
+
server.tool("init_project", "Scaffold a project from a workspace. Pulls all (or selected) workflows into a git-ready directory with minicor.json manifest and README. Use clone_workspace instead for the full experience (skills, issues, VMs, AGENTS.md).", {
|
|
13
13
|
workspaceId: z
|
|
14
14
|
.number()
|
|
15
15
|
.describe("Workspace ID to pull workflows from"),
|
|
@@ -30,11 +30,9 @@ export function register(deps) {
|
|
|
30
30
|
...result,
|
|
31
31
|
nextSteps: [
|
|
32
32
|
`cd ${resolved}`,
|
|
33
|
-
"git init && git add . && git commit -m 'Initial
|
|
33
|
+
"git init && git add . && git commit -m 'Initial workflow sync'",
|
|
34
34
|
"git remote add origin <your-github-repo-url>",
|
|
35
35
|
"git push -u origin main",
|
|
36
|
-
"Add LAMINAR_API_KEY as a repository secret in GitHub Settings > Secrets",
|
|
37
|
-
"Done! Push to main to deploy, open PRs to preview changes.",
|
|
38
36
|
],
|
|
39
37
|
});
|
|
40
38
|
}
|
|
@@ -42,7 +40,7 @@ export function register(deps) {
|
|
|
42
40
|
return text(`Error: ${e.message}`);
|
|
43
41
|
}
|
|
44
42
|
});
|
|
45
|
-
server.tool("pull_workflow", "Download a workflow
|
|
43
|
+
server.tool("pull_workflow", "Download a workflow to local files for version control. Creates a directory with individual step files + workflow.json metadata. Compatible with git.", {
|
|
46
44
|
workflowId: z.number().describe("Workflow ID to pull"),
|
|
47
45
|
outputDir: z
|
|
48
46
|
.string()
|
|
@@ -62,7 +60,7 @@ export function register(deps) {
|
|
|
62
60
|
return text(`Error: ${e.message}`);
|
|
63
61
|
}
|
|
64
62
|
});
|
|
65
|
-
server.tool("push_workflow", "Deploy local workflow files
|
|
63
|
+
server.tool("push_workflow", "Deploy local workflow files. Reads workflow.json + step files and pushes them via create_or_update_flows API.", {
|
|
66
64
|
workflowDir: z
|
|
67
65
|
.string()
|
|
68
66
|
.describe("Local directory containing workflow.json and steps/ folder"),
|
|
@@ -82,7 +80,7 @@ export function register(deps) {
|
|
|
82
80
|
return text(`Error: ${e.message}`);
|
|
83
81
|
}
|
|
84
82
|
});
|
|
85
|
-
server.tool("sync_status", "Compare local workflow files against what's deployed
|
|
83
|
+
server.tool("sync_status", "Compare local workflow files against what's deployed. Shows which steps are modified, added, or unchanged.", {
|
|
86
84
|
workflowDir: z
|
|
87
85
|
.string()
|
|
88
86
|
.describe("Local directory containing workflow.json and steps/ folder"),
|
|
@@ -102,10 +100,10 @@ export function register(deps) {
|
|
|
102
100
|
return text(`Error: ${e.message}`);
|
|
103
101
|
}
|
|
104
102
|
});
|
|
105
|
-
server.tool("pull_all", "Pull all workflows defined in the
|
|
103
|
+
server.tool("pull_all", "Pull all workflows defined in the minicor.json manifest. Updates local step files from what's deployed.", {
|
|
106
104
|
projectDir: z
|
|
107
105
|
.string()
|
|
108
|
-
.describe("Root project directory containing
|
|
106
|
+
.describe("Root project directory containing minicor.json"),
|
|
109
107
|
region: regionParam,
|
|
110
108
|
}, async ({ projectDir, region }) => {
|
|
111
109
|
const r = region;
|
|
@@ -118,10 +116,10 @@ export function register(deps) {
|
|
|
118
116
|
return text(`Error: ${e.message}`);
|
|
119
117
|
}
|
|
120
118
|
});
|
|
121
|
-
server.tool("push_changed", "Push only the workflows that have local changes
|
|
119
|
+
server.tool("push_changed", "Push only the workflows that have local changes. Reads minicor.json (or laminar.json) manifest, diffs each workflow, and deploys only the modified ones.", {
|
|
122
120
|
projectDir: z
|
|
123
121
|
.string()
|
|
124
|
-
.describe("Root project directory containing
|
|
122
|
+
.describe("Root project directory containing minicor.json"),
|
|
125
123
|
region: regionParam,
|
|
126
124
|
}, async ({ projectDir, region }) => {
|
|
127
125
|
const r = region;
|
|
@@ -134,5 +132,48 @@ export function register(deps) {
|
|
|
134
132
|
return text(`Error: ${e.message}`);
|
|
135
133
|
}
|
|
136
134
|
});
|
|
135
|
+
server.tool("clone_workspace", `Clone an entire workspace to a local folder for development. Pulls all workflows, issues, and skills into a structured directory:
|
|
136
|
+
|
|
137
|
+
my-workspace/
|
|
138
|
+
minicor.json — workspace manifest
|
|
139
|
+
workflows/ — all workflow steps as files
|
|
140
|
+
.minicor/
|
|
141
|
+
skills/general/ — bundled RPA skill files
|
|
142
|
+
skills/workspace/ — workspace-specific skills
|
|
143
|
+
issues/ — serialized issues as markdown
|
|
144
|
+
skill-index.json — compact skill summary for quick reference
|
|
145
|
+
workspace.json — workspace metadata
|
|
146
|
+
|
|
147
|
+
The folder is git-ready. Use push_changed to deploy modifications back.`, {
|
|
148
|
+
workspaceId: z.number().describe("Workspace ID to clone"),
|
|
149
|
+
outputDir: z
|
|
150
|
+
.string()
|
|
151
|
+
.describe("Directory to create the project in (e.g. /Users/you/my-workspace)"),
|
|
152
|
+
workflowIds: z
|
|
153
|
+
.array(z.number())
|
|
154
|
+
.optional()
|
|
155
|
+
.describe("Specific workflow IDs to include (omit to clone ALL workflows)"),
|
|
156
|
+
region: regionParam,
|
|
157
|
+
}, async ({ workspaceId, outputDir, workflowIds, region }) => {
|
|
158
|
+
const r = region ?? getWorkspaceRegion(workspaceId);
|
|
159
|
+
try {
|
|
160
|
+
const resolved = path.resolve(outputDir);
|
|
161
|
+
const result = await cloneWorkspace(deps.client(r), workspaceId, resolved, { workflowIds, apiBase: deps.getApiBase(r), vmServiceBase: deps.getVmServiceBase() });
|
|
162
|
+
return ok({
|
|
163
|
+
...result,
|
|
164
|
+
nextSteps: [
|
|
165
|
+
`cd ${resolved}`,
|
|
166
|
+
"Read AGENTS.md for the full agent workflow loop",
|
|
167
|
+
"Read .minicor/workspace.json for workspace context",
|
|
168
|
+
"Read .minicor/vms.json for available VMs",
|
|
169
|
+
"Browse workflows/ to study existing automation patterns",
|
|
170
|
+
"Read .minicor/issues/ for agent-persisted context",
|
|
171
|
+
],
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
catch (e) {
|
|
175
|
+
return text(`Error: ${e.message}`);
|
|
176
|
+
}
|
|
177
|
+
});
|
|
137
178
|
}
|
|
138
179
|
//# sourceMappingURL=sync-tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-tools.js","sourceRoot":"","sources":["../../src/tools/sync-tools.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EACL,WAAW,EACX,OAAO,EACP,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAIjD,MAAM,WAAW,GAAG,CAAC;KAClB,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAClB,QAAQ,EAAE;KACV,QAAQ,CAAC,6DAA6D,CAAC,CAAC;AAE3E,MAAM,UAAU,QAAQ,CAAC,IAAc;IACrC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAExB,MAAM,CAAC,IAAI,CACT,cAAc,EACd,
|
|
1
|
+
{"version":3,"file":"sync-tools.js","sourceRoot":"","sources":["../../src/tools/sync-tools.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EACL,WAAW,EACX,cAAc,EACd,OAAO,EACP,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAIjD,MAAM,WAAW,GAAG,CAAC;KAClB,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAClB,QAAQ,EAAE;KACV,QAAQ,CAAC,6DAA6D,CAAC,CAAC;AAE3E,MAAM,UAAU,QAAQ,CAAC,IAAc;IACrC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAExB,MAAM,CAAC,IAAI,CACT,cAAc,EACd,gOAAgO,EAChO;QACE,WAAW,EAAE,CAAC;aACX,MAAM,EAAE;aACR,QAAQ,CAAC,qCAAqC,CAAC;QAClD,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,QAAQ,CACP,4EAA4E,CAC7E;QACH,WAAW,EAAE,CAAC;aACX,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACjB,QAAQ,EAAE;aACV,QAAQ,CACP,+DAA+D,CAChE;QACH,MAAM,EAAE,WAAW;KACpB,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE;QACxD,MAAM,CAAC,GAAI,MAA6B,IAAI,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAC5E,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACzC,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EACd,WAAW,EACX,QAAQ,EACR,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAC7C,CAAC;YACF,OAAO,EAAE,CAAC;gBACR,GAAG,MAAM;gBACT,SAAS,EAAE;oBACT,MAAM,QAAQ,EAAE;oBAChB,gEAAgE;oBAChE,8CAA8C;oBAC9C,yBAAyB;iBAC1B;aACF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,eAAe,EACf,uJAAuJ,EACvJ;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QACtD,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,QAAQ,CACP,mEAAmE,CACpE;QACH,MAAM,EAAE,WAAW;KACpB,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE;QAC1C,MAAM,CAAC,GAAG,MAA4B,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACzC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;YACxE,OAAO,EAAE,CAAC;gBACR,GAAG,MAAM;gBACT,IAAI,EAAE,uFAAuF;aAC9F,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,eAAe,EACf,+GAA+G,EAC/G;QACE,WAAW,EAAE,CAAC;aACX,MAAM,EAAE;aACR,QAAQ,CACP,4DAA4D,CAC7D;QACH,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,oDAAoD,CAAC;QACjE,MAAM,EAAE,WAAW;KACpB,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE;QAC5C,MAAM,CAAC,GAAG,MAA4B,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;YACxE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,aAAa,EACb,4GAA4G,EAC5G;QACE,WAAW,EAAE,CAAC;aACX,MAAM,EAAE;aACR,QAAQ,CACP,4DAA4D,CAC7D;QACH,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,gEAAgE,CACjE;QACH,MAAM,EAAE,WAAW;KACpB,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE;QAC5C,MAAM,CAAC,GAAG,MAA4B,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;YACtE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,UAAU,EACV,yGAAyG,EACzG;QACE,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,QAAQ,CAAC,gDAAgD,CAAC;QAC7D,MAAM,EAAE,WAAW;KACpB,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE;QAC/B,MAAM,CAAC,GAAG,MAA4B,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC1C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YACvD,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,cAAc,EACd,0JAA0J,EAC1J;QACE,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,QAAQ,CAAC,gDAAgD,CAAC;QAC7D,MAAM,EAAE,WAAW;KACpB,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE;QAC/B,MAAM,CAAC,GAAG,MAA4B,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC1C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YAC3D,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB;;;;;;;;;;;;wEAYoE,EACpE;QACE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QACzD,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,QAAQ,CAAC,mEAAmE,CAAC;QAChF,WAAW,EAAE,CAAC;aACX,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACjB,QAAQ,EAAE;aACV,QAAQ,CAAC,gEAAgE,CAAC;QAC7E,MAAM,EAAE,WAAW;KACpB,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE;QACxD,MAAM,CAAC,GAAI,MAA6B,IAAI,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAC5E,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACzC,MAAM,MAAM,GAAG,MAAM,cAAc,CACjC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EACd,WAAW,EACX,QAAQ,EACR,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,gBAAgB,EAAE,EAAE,CACrF,CAAC;YACF,OAAO,EAAE,CAAC;gBACR,GAAG,MAAM;gBACT,SAAS,EAAE;oBACT,MAAM,QAAQ,EAAE;oBAChB,iDAAiD;oBACjD,oDAAoD;oBACpD,0CAA0C;oBAC1C,yDAAyD;oBACzD,mDAAmD;iBACpD;aACF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
package/dist/tools/vm.js
CHANGED
|
@@ -27,7 +27,7 @@ export function register(deps) {
|
|
|
27
27
|
const keys = await deps.client(wsRegion).listApiKeys(workspaceId);
|
|
28
28
|
const apiKeyList = Array.isArray(keys) ? keys : keys?.api_keys ?? keys?.data ?? [];
|
|
29
29
|
if (!apiKeyList.length) {
|
|
30
|
-
return text(`No API keys found for workspace ${workspaceId}. Create one in the
|
|
30
|
+
return text(`No API keys found for workspace ${workspaceId}. Create one in the Minicor dashboard.`);
|
|
31
31
|
}
|
|
32
32
|
const workspaceApiKey = apiKeyList[0].apiKey ?? apiKeyList[0].api_key ?? apiKeyList[0].key ?? apiKeyList[0];
|
|
33
33
|
const effectiveRegion = region ?? apiBaseToRegion(deps.getApiBase(wsRegion));
|
|
@@ -7,7 +7,7 @@ const regionParam = z
|
|
|
7
7
|
.describe("Region (us or ca). Auto-detected from workspace if omitted.");
|
|
8
8
|
export function register(deps) {
|
|
9
9
|
const { server } = deps;
|
|
10
|
-
server.tool("preview_flow_changes", "Show a diff of the current flow code vs your proposed changes BEFORE updating. Use this to review changes before pushing them
|
|
10
|
+
server.tool("preview_flow_changes", "Show a diff of the current flow code vs your proposed changes BEFORE updating. Use this to review changes before pushing them.", {
|
|
11
11
|
flowId: z.number().describe("Flow ID to compare against"),
|
|
12
12
|
proposedProgram: z
|
|
13
13
|
.string()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-ops.js","sourceRoot":"","sources":["../../src/tools/workflow-ops.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workflow-ops.js","sourceRoot":"","sources":["../../src/tools/workflow-ops.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@minicor/mcp-server",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"description": "Desktop and browser RPA automation, workflow management, and AI-powered debugging for the Minicor platform. Formerly Laminar.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/lib.js",
|
|
@@ -15,10 +15,12 @@
|
|
|
15
15
|
"minicor": "dist/cli.js",
|
|
16
16
|
"laminar-mcp": "dist/index.js",
|
|
17
17
|
"laminar-mcp-setup": "dist/setup.js",
|
|
18
|
-
"laminar": "dist/cli.js"
|
|
18
|
+
"laminar": "dist/cli.js",
|
|
19
|
+
"minicor-seed-skills": "dist/seed-skills.js"
|
|
19
20
|
},
|
|
20
21
|
"files": [
|
|
21
22
|
"dist",
|
|
23
|
+
"skills",
|
|
22
24
|
"README.md",
|
|
23
25
|
"LICENSE"
|
|
24
26
|
],
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cdp-browser-automation
|
|
3
|
+
description: Chrome DevTools Protocol patterns for browser RPA via Python websocket. CDP tab discovery, React-safe value setters, button clicks by text, screenshot capture, parallel execution via /execute/browser. Use when building browser automations, CDP scripts, or Chrome-based RPA.
|
|
4
|
+
category: general
|
|
5
|
+
tags: [cdp, browser, chrome, websocket, react, parallel]
|
|
6
|
+
priority: 10
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# CDP Browser Automation
|
|
10
|
+
|
|
11
|
+
## How It Works
|
|
12
|
+
|
|
13
|
+
The MDS provides an isolated Chrome instance per execution via `/execute/browser`. Scripts connect to Chrome via the Chrome DevTools Protocol over a local websocket.
|
|
14
|
+
|
|
15
|
+
- Scripts always use `127.0.0.1:9222` — the MDS transparently routes to the correct Chrome instance
|
|
16
|
+
- Multiple browser automations run **in parallel** on the same VM — each gets its own Chrome + CDP port
|
|
17
|
+
- Use `dispatchPattern: "browser"` when saving with `create_rpa_flow`
|
|
18
|
+
|
|
19
|
+
## CDP Starter Template
|
|
20
|
+
|
|
21
|
+
```python
|
|
22
|
+
import json, websocket, time
|
|
23
|
+
from urllib.request import urlopen
|
|
24
|
+
|
|
25
|
+
tabs = json.loads(urlopen('http://127.0.0.1:9222/json').read())
|
|
26
|
+
page_tabs = [t for t in tabs if t.get('type') == 'page']
|
|
27
|
+
if not page_tabs:
|
|
28
|
+
raise RuntimeError(f"No page tab found. Available tabs: {[t.get('type') for t in tabs]}")
|
|
29
|
+
page_tab = page_tabs[0]
|
|
30
|
+
ws = websocket.create_connection(page_tab['webSocketDebuggerUrl'])
|
|
31
|
+
cmd_id = 0
|
|
32
|
+
|
|
33
|
+
def cdp_eval(ws, js, timeout=30):
|
|
34
|
+
global cmd_id; cmd_id += 1
|
|
35
|
+
ws.send(json.dumps({'id': cmd_id, 'method': 'Runtime.evaluate', 'params': {'expression': js}}))
|
|
36
|
+
deadline = time.time() + timeout
|
|
37
|
+
while time.time() < deadline:
|
|
38
|
+
msg = json.loads(ws.recv())
|
|
39
|
+
if msg.get('id') == cmd_id: return msg
|
|
40
|
+
raise TimeoutError(f"CDP response for command {cmd_id} not received within {timeout}s")
|
|
41
|
+
|
|
42
|
+
# Navigate
|
|
43
|
+
cdp_eval(ws, 'window.location.href="https://example.com"')
|
|
44
|
+
time.sleep(8)
|
|
45
|
+
|
|
46
|
+
# Fill input using React-safe setter (ALWAYS use this for React/Angular/Vue apps)
|
|
47
|
+
cdp_eval(ws, 'var s=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value").set;var inp=document.querySelector("input[type=email]");if(inp){s.call(inp,"user@example.com");inp.dispatchEvent(new Event("input",{bubbles:true}));inp.dispatchEvent(new Event("change",{bubbles:true}))}')
|
|
48
|
+
|
|
49
|
+
# Click button by text content (more resilient than CSS selectors)
|
|
50
|
+
cdp_eval(ws, 'document.querySelectorAll("button").forEach(function(b){if(b.textContent.trim()==="Submit"){b.click()}})')
|
|
51
|
+
|
|
52
|
+
ws.close()
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Key Patterns
|
|
56
|
+
|
|
57
|
+
### React-Safe Value Setter
|
|
58
|
+
|
|
59
|
+
Always use `Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, "value").set` — direct `.value=` assignment does NOT trigger React/Angular change detection.
|
|
60
|
+
|
|
61
|
+
### Button Clicks by Text
|
|
62
|
+
|
|
63
|
+
Use `querySelectorAll("button").forEach()` + `textContent.trim()` matching — more resilient than IDs or classes that change between deploys.
|
|
64
|
+
|
|
65
|
+
### Credentials
|
|
66
|
+
|
|
67
|
+
Use `${username}` / `${password}` interpolated from JS wrapper variables sourced from `{{config.xxx}}` — NEVER hardcode.
|
|
68
|
+
|
|
69
|
+
### Waits
|
|
70
|
+
|
|
71
|
+
`time.sleep()` between navigations (8-15s for page loads, 1-3s for UI actions).
|
|
72
|
+
|
|
73
|
+
### Verification
|
|
74
|
+
|
|
75
|
+
Use CDP `Page.captureScreenshot` for per-tab screenshots within the browser context.
|
|
76
|
+
|
|
77
|
+
### Dropdown Handling
|
|
78
|
+
|
|
79
|
+
Click to open, then use `querySelectorAll` to find options by text and click.
|
|
80
|
+
|
|
81
|
+
### Tab Management
|
|
82
|
+
|
|
83
|
+
If multiple tabs open, filter `/json` response by URL or title to find the right one.
|
|
84
|
+
|
|
85
|
+
## Parallel Execution
|
|
86
|
+
|
|
87
|
+
- `/execute/browser` runs your script with its own Chrome instance — multiple workflows run simultaneously
|
|
88
|
+
- `/execute` runs without Chrome — for desktop or mixed browser+desktop scripts
|
|
89
|
+
- The MDS rewrites `127.0.0.1:9222` transparently to the correct Chrome port
|
|
90
|
+
- Recordings from `/execute/browser` capture only the browser tab (CDP screencast)
|
|
91
|
+
- Recordings from `/execute` capture the full desktop (MSS screen recording)
|
|
92
|
+
|
|
93
|
+
## When to Use `/execute/browser` vs `/execute`
|
|
94
|
+
|
|
95
|
+
- **Pure CDP** (all interaction via `Runtime.evaluate`, `Page.navigate`, etc.) → `/execute/browser` — parallel-safe
|
|
96
|
+
- **Needs screen interaction** (any `pyautogui`, OS dialogs, file pickers) → `/execute` — one at a time per VM
|
|
97
|
+
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: data-extraction-strategies
|
|
3
|
+
description: Priority-ordered strategies for reading data from screen during RPA. Accessibility tree, clipboard extraction, keyboard navigation, zoomed screenshots, alternative app paths. Use when building data extraction or screen scraping steps in RPA workflows.
|
|
4
|
+
category: general
|
|
5
|
+
tags: [data-extraction, scraping, accessibility, clipboard, screenshots]
|
|
6
|
+
priority: 8
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Data Extraction Strategies
|
|
10
|
+
|
|
11
|
+
When you need to READ data from the screen (not just click/type), follow this priority order. **Do NOT rely solely on screenshots for data reading.**
|
|
12
|
+
|
|
13
|
+
## Priority 1: Accessibility Tree (Most Reliable)
|
|
14
|
+
|
|
15
|
+
- `vm_inspect_ui` with `element_tree` on the target window
|
|
16
|
+
- If the tree exposes text values, this is the most reliable method
|
|
17
|
+
- Use `element_at_point` for specific fields
|
|
18
|
+
- Use `focused_element` to read the current field
|
|
19
|
+
|
|
20
|
+
## Priority 2: Open Accessible Dialogs
|
|
21
|
+
|
|
22
|
+
- Many apps expose more data when you open edit/detail dialogs
|
|
23
|
+
- Double-click on a row or click "Edit" to open a modal — modals often have better accessibility support
|
|
24
|
+
- Then use `element_tree` on the modal
|
|
25
|
+
|
|
26
|
+
## Priority 3: Clipboard Extraction
|
|
27
|
+
|
|
28
|
+
- Use `vm_execute_script` to click a field, then Ctrl+A, Ctrl+C
|
|
29
|
+
- Call `vm_read_clipboard` to get the copied text
|
|
30
|
+
- Works for individual fields, text areas, and some grid cells
|
|
31
|
+
|
|
32
|
+
## Priority 4: Keyboard Navigation
|
|
33
|
+
|
|
34
|
+
- Tab through fields, reading each via `vm_inspect_ui` `focused_element`
|
|
35
|
+
- Useful when the accessibility tree returns element structure but not values
|
|
36
|
+
|
|
37
|
+
## Priority 5: Zoomed Screenshot
|
|
38
|
+
|
|
39
|
+
- Use `vm_screenshot_region` to crop a specific area for better resolution
|
|
40
|
+
- Only for small text that can't be accessed any other way
|
|
41
|
+
|
|
42
|
+
## Priority 6: Alternative Application Paths
|
|
43
|
+
|
|
44
|
+
Think creatively:
|
|
45
|
+
|
|
46
|
+
- Reports or Print menus that export data
|
|
47
|
+
- List/Search views with better accessibility
|
|
48
|
+
- CLI tools or command-line interfaces the app provides
|
|
49
|
+
- Export to CSV/clipboard options
|
|
50
|
+
- Alternative windows/dialogs that show the same data more accessibly
|
|
51
|
+
- Use `vm_execute_script` to query the app's data directly if a CLI or API exists
|
|
52
|
+
|
|
53
|
+
## Priority 7: Full Screenshot (Verification Only)
|
|
54
|
+
|
|
55
|
+
- Full desktop screenshots are for **verifying actions worked**, NOT for reading data
|
|
56
|
+
- If you must use a screenshot to read data, acknowledge it's unreliable and suggest a better approach
|
|
57
|
+
|
|
58
|
+
## Combining Methods
|
|
59
|
+
|
|
60
|
+
Always combine multiple methods for reliability. For example:
|
|
61
|
+
|
|
62
|
+
1. Use accessibility tree to get field labels/structure
|
|
63
|
+
2. Use clipboard to get field values
|
|
64
|
+
3. Use screenshot to verify the extraction worked
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: data-hydration-patterns
|
|
3
|
+
description: Patterns for building standard CRUD data workflows (Get Practitioners, Patients, Appointments, Encounter Notes). API-first vs RPA approaches, data output conventions, pagination, orchestration order, pass-through return steps. Use when building data extraction or synchronization workflows for healthcare/enterprise apps.
|
|
4
|
+
category: general
|
|
5
|
+
tags: [data, hydration, crud, practitioners, patients, appointments, notes, api, scraping]
|
|
6
|
+
priority: 8
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Data Hydration Patterns
|
|
10
|
+
|
|
11
|
+
Most Minicor workspaces follow a standard set of data workflows. This skill documents the patterns across production deployments.
|
|
12
|
+
|
|
13
|
+
## The Standard Workflow Set
|
|
14
|
+
|
|
15
|
+
Every EHR/EMR integration workspace typically needs:
|
|
16
|
+
|
|
17
|
+
1. **Get Practitioners** — list of doctors/providers
|
|
18
|
+
2. **Get Patients** — patient roster (all or by search)
|
|
19
|
+
3. **Get Patient By ID** — single patient detail
|
|
20
|
+
4. **Get Appointments** — schedule for a date range
|
|
21
|
+
5. **Get Encounter Notes** — clinical notes for a patient
|
|
22
|
+
6. **Create Encounter Note** — write back a note
|
|
23
|
+
7. **Verify Patient** — confirm a patient exists by name/DOB
|
|
24
|
+
|
|
25
|
+
## Two Approaches
|
|
26
|
+
|
|
27
|
+
### API-First (Preferred)
|
|
28
|
+
|
|
29
|
+
If the app has accessible internal APIs (discovered via CDP network interception or documentation):
|
|
30
|
+
|
|
31
|
+
```python
|
|
32
|
+
import json, urllib.request
|
|
33
|
+
|
|
34
|
+
url = f'{base_url}/api/patients?page={page}&size=100'
|
|
35
|
+
req = urllib.request.Request(url, headers={'Authorization': f'Bearer {token}'})
|
|
36
|
+
resp = urllib.request.urlopen(req)
|
|
37
|
+
data = json.loads(resp.read())
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**Pros**: Fast, reliable, handles pagination natively, returns structured data.
|
|
41
|
+
**Examples**: HSMC (Insta HMS API), Novelle SQL queries.
|
|
42
|
+
|
|
43
|
+
### RPA Scraping (Fallback)
|
|
44
|
+
|
|
45
|
+
When no API is available, scrape data from the UI via CDP or uiautomation:
|
|
46
|
+
|
|
47
|
+
```python
|
|
48
|
+
# CDP: Execute JS to extract table data
|
|
49
|
+
table_data = cdp_eval(ws, """
|
|
50
|
+
(function() {
|
|
51
|
+
var rows = document.querySelectorAll('table tbody tr');
|
|
52
|
+
var data = [];
|
|
53
|
+
rows.forEach(function(row) {
|
|
54
|
+
var cells = row.querySelectorAll('td');
|
|
55
|
+
data.push({
|
|
56
|
+
name: cells[0]?.textContent?.trim(),
|
|
57
|
+
id: cells[1]?.textContent?.trim(),
|
|
58
|
+
dob: cells[2]?.textContent?.trim()
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
return JSON.stringify(data);
|
|
62
|
+
})();
|
|
63
|
+
""")
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**Pros**: Works when no API exists.
|
|
67
|
+
**Cons**: Fragile, slow, pagination via scrolling.
|
|
68
|
+
**Examples**: Hillside (PracticeFusion CDP scraping).
|
|
69
|
+
|
|
70
|
+
## Data Output Convention
|
|
71
|
+
|
|
72
|
+
All data workflows should return structured JSON:
|
|
73
|
+
|
|
74
|
+
```json
|
|
75
|
+
{
|
|
76
|
+
"count": 42,
|
|
77
|
+
"data": [
|
|
78
|
+
{"id": "P001", "name": "John Doe", "dob": "1990-01-15"},
|
|
79
|
+
{"id": "P002", "name": "Jane Smith", "dob": "1985-07-22"}
|
|
80
|
+
]
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
For single-record queries (Get Patient By ID):
|
|
85
|
+
|
|
86
|
+
```json
|
|
87
|
+
{
|
|
88
|
+
"patient_id": "P001",
|
|
89
|
+
"name": "John Doe",
|
|
90
|
+
"dob": "1990-01-15",
|
|
91
|
+
"phone": "555-1234"
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## The Pass-Through Return Step
|
|
96
|
+
|
|
97
|
+
The workflow engine returns whatever the LAST step produces. If your last step is RPA (cleanup/navigation), the data gets lost.
|
|
98
|
+
|
|
99
|
+
**Pattern**: Add a final GENERAL_FUNCTION step that passes through the data:
|
|
100
|
+
|
|
101
|
+
```javascript
|
|
102
|
+
(data) => {
|
|
103
|
+
return data.step_3?.data || data.step_3?.response;
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
This ensures the formatted data from step 3 becomes the workflow output.
|
|
108
|
+
|
|
109
|
+
## Pagination
|
|
110
|
+
|
|
111
|
+
### API Pagination
|
|
112
|
+
|
|
113
|
+
```python
|
|
114
|
+
all_records = []
|
|
115
|
+
page = 1
|
|
116
|
+
while True:
|
|
117
|
+
data = fetch_page(page, page_size=100)
|
|
118
|
+
all_records.extend(data['records'])
|
|
119
|
+
if len(data['records']) < 100:
|
|
120
|
+
break
|
|
121
|
+
page += 1
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### CDP Scroll Pagination
|
|
125
|
+
|
|
126
|
+
```python
|
|
127
|
+
previous_count = 0
|
|
128
|
+
while True:
|
|
129
|
+
# Scroll to bottom
|
|
130
|
+
cdp_eval(ws, 'window.scrollTo(0, document.body.scrollHeight)')
|
|
131
|
+
time.sleep(2)
|
|
132
|
+
|
|
133
|
+
# Count rows
|
|
134
|
+
count = int(cdp_eval(ws, 'document.querySelectorAll("table tbody tr").length'))
|
|
135
|
+
if count == previous_count:
|
|
136
|
+
break # No new rows loaded
|
|
137
|
+
previous_count = count
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Hydration Orchestration
|
|
141
|
+
|
|
142
|
+
When running multiple data workflows to populate a cache:
|
|
143
|
+
|
|
144
|
+
1. **Practitioners first** — no dependencies
|
|
145
|
+
2. **Appointments** — optionally filtered by practitioner IDs from step 1
|
|
146
|
+
3. **Patients from appointments** — derived from appointment data (step 2)
|
|
147
|
+
4. **Encounter notes** — for patients from step 3
|
|
148
|
+
|
|
149
|
+
This is the pattern used by HSMC (WFs 753-756) — each workflow is standalone but designed to chain.
|
|
150
|
+
|
|
151
|
+
## Workflow Step Structure
|
|
152
|
+
|
|
153
|
+
A typical data workflow has 3-4 steps:
|
|
154
|
+
|
|
155
|
+
1. **Navigate/Setup** (RPA) — navigate to the right page or prepare the API call
|
|
156
|
+
2. **Extract/Scrape** (RPA) — get the raw data via API or scraping
|
|
157
|
+
3. **Format** (GENERAL_FUNCTION) — transform raw data into the standard JSON format
|
|
158
|
+
4. **Return** (GENERAL_FUNCTION) — pass-through step that ensures data is the workflow output
|
|
159
|
+
|
|
160
|
+
## Config Store Properties
|
|
161
|
+
|
|
162
|
+
Standard properties for data workflows:
|
|
163
|
+
- `{{config.username}}` / `{{config.password}}` — credentials
|
|
164
|
+
- `{{config.url}}` or `{{config.base_url}}` — app URL
|
|
165
|
+
- `{{config.channelId}}` — RPA channel for desktop dispatch
|
|
166
|
+
- `{{config.sullyOrganizationId}}` — customer ID for middleware routing
|
|
167
|
+
- `{{config.BASE_API_URL}}` — middleware/API base URL
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: data-passing-between-steps
|
|
3
|
+
description: How to pass data between workflow steps in Minicor RPA workflows. JS-layer interpolation from data.input and data.step_N, config variables via {{config.xxx}}, common pitfalls with Python template vars. Use when building multi-step workflows that need to share data.
|
|
4
|
+
category: general
|
|
5
|
+
tags: [data-passing, workflow, steps, interpolation, config]
|
|
6
|
+
priority: 9
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Data Passing Between Steps
|
|
10
|
+
|
|
11
|
+
Workflow input is available as `data.input` in the **JS wrapper**, NOT in Python directly. Dynamic values must be interpolated in the JS layer, then embedded into the Python template literal.
|
|
12
|
+
|
|
13
|
+
## CORRECT — JS-Layer Interpolation
|
|
14
|
+
|
|
15
|
+
```javascript
|
|
16
|
+
(data) => {
|
|
17
|
+
const mrn = data?.input?.mrn || "DEFAULT";
|
|
18
|
+
const pythonScript = `
|
|
19
|
+
mrn = "${mrn}"
|
|
20
|
+
# ... rest of Python script uses mrn variable
|
|
21
|
+
`;
|
|
22
|
+
return { "lam.httpRequest": { body: { script: pythonScript } } };
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## WRONG — Python Template Vars
|
|
27
|
+
|
|
28
|
+
```python
|
|
29
|
+
mrn = "{{input.mrn}}" # WRONG — this is not a config variable
|
|
30
|
+
mrn = data.input.mrn # WRONG — data object doesn't exist in Python
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Config Variables
|
|
34
|
+
|
|
35
|
+
`{{config.username}}` and `{{config.password}}` ARE resolved by the workflow engine and work in both JS and Python layers. Use these for credentials and environment URLs via config stores. **NEVER** hardcode credentials.
|
|
36
|
+
|
|
37
|
+
## Previous Step Outputs
|
|
38
|
+
|
|
39
|
+
- `data.step_N.response` — for HTTP/RPA steps
|
|
40
|
+
- `data.step_N.data` — for GENERAL_FUNCTION steps
|
|
41
|
+
|
|
42
|
+
## Important Notes
|
|
43
|
+
|
|
44
|
+
- `create_rpa_flow` generates the JS wrapper automatically, but if the script needs dynamic input from `data.input` or `data.step_N`, you must construct the JS wrapper yourself or update the flow after creation to add JS-layer const declarations
|
|
45
|
+
- The **last step** is the workflow output. If you need structured data returned, the last step must output it. Don't put meaningful data in step N and cleanup in step N+1. Combine cleanup + data return in the last step, or add a GENERAL_FUNCTION step after RPA that formats the final result.
|
|
46
|
+
|