@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.
Files changed (54) hide show
  1. package/README.md +251 -61
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +2 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/laminar-client.d.ts +5 -0
  6. package/dist/laminar-client.d.ts.map +1 -1
  7. package/dist/laminar-client.js +6 -0
  8. package/dist/laminar-client.js.map +1 -1
  9. package/dist/lib.d.ts.map +1 -1
  10. package/dist/lib.js +2 -0
  11. package/dist/lib.js.map +1 -1
  12. package/dist/prompts/build-rpa.d.ts.map +1 -1
  13. package/dist/prompts/build-rpa.js +86 -272
  14. package/dist/prompts/build-rpa.js.map +1 -1
  15. package/dist/prompts/debug-execution.js +1 -1
  16. package/dist/seed-skills.d.ts +13 -0
  17. package/dist/seed-skills.d.ts.map +1 -0
  18. package/dist/seed-skills.js +82 -0
  19. package/dist/seed-skills.js.map +1 -0
  20. package/dist/skills-service-client.d.ts +54 -0
  21. package/dist/skills-service-client.d.ts.map +1 -0
  22. package/dist/skills-service-client.js +93 -0
  23. package/dist/skills-service-client.js.map +1 -0
  24. package/dist/skills.d.ts +34 -0
  25. package/dist/skills.d.ts.map +1 -0
  26. package/dist/skills.js +152 -0
  27. package/dist/skills.js.map +1 -0
  28. package/dist/sync.d.ts +18 -2
  29. package/dist/sync.d.ts.map +1 -1
  30. package/dist/sync.js +404 -104
  31. package/dist/sync.js.map +1 -1
  32. package/dist/tools/core.d.ts.map +1 -1
  33. package/dist/tools/core.js +12 -0
  34. package/dist/tools/core.js.map +1 -1
  35. package/dist/tools/skills.d.ts +3 -0
  36. package/dist/tools/skills.d.ts.map +1 -0
  37. package/dist/tools/skills.js +429 -0
  38. package/dist/tools/skills.js.map +1 -0
  39. package/dist/tools/sync-tools.d.ts.map +1 -1
  40. package/dist/tools/sync-tools.js +53 -12
  41. package/dist/tools/sync-tools.js.map +1 -1
  42. package/dist/tools/vm.js +1 -1
  43. package/dist/tools/workflow-ops.js +1 -1
  44. package/dist/tools/workflow-ops.js.map +1 -1
  45. package/package.json +4 -2
  46. package/skills/general/cdp-browser-automation.md +97 -0
  47. package/skills/general/data-extraction-strategies.md +64 -0
  48. package/skills/general/data-hydration-patterns.md +167 -0
  49. package/skills/general/data-passing-between-steps.md +46 -0
  50. package/skills/general/desktop-uiautomation.md +80 -0
  51. package/skills/general/rpa-testing-workflow.md +145 -0
  52. package/skills/general/session-keepalive.md +101 -0
  53. package/skills/general/smart-launch-patterns.md +213 -0
  54. package/skills/general/state-verification.md +56 -0
@@ -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 full Laminar project from a workspace. Pulls all (or selected) workflows into a git-ready directory with laminar.json manifest, GitHub Actions CI/CD configs, README, and .gitignore. This is the onboarding tool — run it once to set up version control for a workspace.", {
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 Laminar workflow sync'",
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 from Laminar to local files for version control. Creates a directory with individual step files + workflow.json metadata. Compatible with git.", {
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 to Laminar. Reads workflow.json + step files and pushes them via create_or_update_flows API.", {
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 on Laminar. Shows which steps are modified, added, or unchanged.", {
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 laminar.json manifest. Updates local step files from what's deployed on Laminar.", {
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 laminar.json"),
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 to Laminar. Reads laminar.json manifest, diffs each workflow, and deploys only the modified ones.", {
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 laminar.json"),
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":"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"}
1
+ {"version":3,"file":"sync-tools.js","sourceRoot":"","sources":["../../src/tools/sync-tools.ts"],"names":[],"mappings":"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"}
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 Laminar dashboard.`);
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 to Laminar.", {
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":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAKzC,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,sBAAsB,EACtB,gIAAgI,EAChI;QACE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QACzD,eAAe,EAAE,CAAC;aACf,MAAM,EAAE;aACR,QAAQ,CAAC,sCAAsC,CAAC;QACnD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;QACtE,mBAAmB,EAAE,CAAC;aACnB,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,+BAA+B,CAAC;QAC5C,MAAM,EAAE,WAAW;KACpB,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,EAAE,EAAE,EAAE;QAC/E,MAAM,CAAC,GAAG,MAA4B,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAClD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC1D,MAAM,OAAO,GACX,OAAO,WAAW,KAAK,QAAQ;gBAC7B,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAE3C,MAAM,KAAK,GAAG;gBACZ,YAAY,IAAI,CAAC,IAAI,SAAS,MAAM,GAAG;gBACvC,aAAa,IAAI,CAAC,QAAQ,oBAAoB,IAAI,CAAC,QAAQ,iBAAiB,IAAI,CAAC,cAAc,EAAE;gBACjG,EAAE;aACH,CAAC;YAEF,IAAI,YAAY,IAAI,YAAY,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC/C,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,MAAM,YAAY,EAAE,CAAC,CAAC;gBACvD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC;YAED,IAAI,mBAAmB,IAAI,mBAAmB,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;gBACpE,KAAK,CAAC,IAAI,CACR,oBAAoB,IAAI,CAAC,WAAW,MAAM,mBAAmB,EAAE,CAChE,CAAC;gBACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC;YAClD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAElB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAChC,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,uBAAuB,EACvB,2IAA2I,EAC3I;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC9C,iBAAiB,EAAE,CAAC;aACjB,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,oDAAoD,CAAC;QACjE,MAAM,EAAE,WAAW;KACpB,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,iBAAiB,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACtD,MAAM,CAAC,GAAG,MAA4B,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACtD,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC;gBACtC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC;gBAC3C,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;aACvE,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAEnD,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CACrC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAM,EAAE,EAAE;gBAC5B,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACjD,OAAO;wBACL,GAAG,CAAC;wBACJ,IAAI,EAAE,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;qBAC7D,CAAC;gBACJ,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;gBAC5C,CAAC;YACH,CAAC,CAAC,CACH,CAAC;YAEF,OAAO,EAAE,CAAC;gBACR,QAAQ;gBACR,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;oBACpC,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;oBAC1B,cAAc,EAAE,CAAC,CAAC,cAAc;oBAChC,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,IAAI,EAAE,CAAC,CAAC,IAAI;iBACb,CAAC,CAAC;gBACH,gBAAgB,EAAE,UAAU;aAC7B,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,qBAAqB,EACrB,uIAAuI,EACvI;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC9C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QAClE,MAAM,EAAE,WAAW;KACpB,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE;QAC5C,MAAM,CAAC,GAAG,MAA4B,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YACxE,MAAM,QAAQ,GAAG,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC;YACtC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBACvB,OAAO,IAAI,CAAC,uCAAuC,CAAC,CAAC;YAEvD,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,KAAK,GAAQ,IAAI,CAAC;YAEtB,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAC5B,IAAI,CAAC;oBACH,MAAM,CAAC,GACL,OAAO,QAAQ,CAAC,cAAc,KAAK,QAAQ;wBACzC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC;wBACrC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;oBAC9B,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;gBACxB,CAAC;gBAAC,MAAM,CAAC;oBACP,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC;gBAClC,CAAC;YACH,CAAC;YAED,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAC/B,IAAI,CAAC;oBACH,KAAK;wBACH,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ;4BAClC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;4BAC9B,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACzB,CAAC;gBAAC,MAAM,CAAC;oBACP,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC;gBAC3B,CAAC;YACH,CAAC;YAED,OAAO,EAAE,CAAC;gBACR,WAAW;gBACX,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,KAAK;gBACL,IAAI,EAAE,8DAA8D;aACrE,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,oBAAoB,EACpB,sHAAsH,EACtH;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAChD,IAAI,EAAE,CAAC;aACJ,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;aACjC,QAAQ,CACP,wEAAwE,CACzE;QACH,IAAI,EAAE,CAAC;aACJ,GAAG,EAAE;aACL,QAAQ,EAAE;aACV,QAAQ,CACP,yEAAyE,CAC1E;QACH,eAAe,EAAE,CAAC;aACf,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;aAC/B,QAAQ,EAAE;aACV,QAAQ,CAAC,2CAA2C,CAAC;QACxD,MAAM,EAAE,WAAW;KACpB,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,EAAE;QAClE,MAAM,CAAC,GAAG,MAA4B,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,MAAM,GAAQ,EAAE,gBAAgB,EAAE,eAAe,EAAE,CAAC;YAC1D,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gBACrB,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;YAC5B,CAAC;iBAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC;gBAC9B,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;YAC5B,CAAC;iBAAM,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC3B,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC;YAChC,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,IAAI;iBACtB,MAAM,CAAC,CAAC,CAAC;iBACT,eAAe,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAC7C,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,uBAAuB,EACvB,sHAAsH,EACtH;QACE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;QACtC,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,qCAAqC,CAAC;QAClD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QACrE,MAAM,EAAE,WAAW;KACpB,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE;QAC/C,MAAM,CAAC,GAAG,MAA4B,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACvC,QAAQ;oBACN,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC;oBAClD,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACnC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC;aACjD,CAAC,CAAC;YAEH,MAAM,IAAI,GACR,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACrE,MAAM,IAAI,GACR,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAErE,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,WAAW,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5D,MAAM,MAAM,GAAG,WAAW,QAAQ,EAAE,CAAC;YAErC,OAAO,IAAI,CACT,WAAW,MAAM,KAAK,MAAM,OAAO,MAAM,mBAAmB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,CAC9G,CAAC;QACJ,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,oBAAoB,EACpB,yLAAyL,EACzL;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC9C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QAC5D,MAAM,EAAE,WAAW;KACpB,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE;QAC5C,MAAM,CAAC,GAAG,MAA4B,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI;iBACpB,MAAM,CAAC,CAAC,CAAC;iBACT,YAAY,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YACzC,MAAM,QAAQ,GAAU,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC;YAE7C,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;YAEpE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;oBACxC,IAAI,EAAE,CAAC,CAAC,cAAc;oBACtB,IAAI,EAAE,CAAC,CAAC,QAAQ;oBAChB,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,QAAQ,EAAE,CAAC,CAAC,UAAU;iBACvB,CAAC,CAAC,CAAC;gBACJ,OAAO,EAAE,CAAC;oBACR,WAAW;oBACX,aAAa,EAAE,IAAI,CAAC,MAAM;oBAC1B,OAAO,EAAE,wBAAwB;oBACjC,WAAW,EAAE,OAAO;iBACrB,CAAC,CAAC;YACL,CAAC;YAED,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE;gBACxC,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAC5B,CAAC,CAAM,EAAE,EAAE,CACT,CAAC,CAAC,cAAc,KAAK,GAAG,CAAC,cAAc,GAAG,CAAC;oBAC3C,CAAC,CAAC,MAAM,KAAK,SAAS,CACzB,CAAC;gBAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;gBACxE,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;gBACrD,MAAM,KAAK,GACT,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC;oBAC9B,UAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC;oBACtC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC;oBAChC,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;gBAEtC,IAAI,WAAW,GACb,IAAI,CAAC;gBACP,IAAI,KAAK,EAAE,CAAC;oBACV,IACE,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC;wBACpC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;wBAC9B,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;wBAC3B,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAClC,CAAC;wBACD,WAAW,GAAG;4BACZ,OAAO,EAAE,mBAAmB;4BAC5B,UAAU,EACR,8SAA8S;yBACjT,CAAC;oBACJ,CAAC;yBAAM,IACL,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;wBAC5B,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;wBAC5B,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAC9B,CAAC;wBACD,WAAW,GAAG;4BACZ,OAAO,EAAE,SAAS;4BAClB,UAAU,EACR,kJAAkJ;yBACrJ,CAAC;oBACJ,CAAC;yBAAM,IACL,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;wBAC1B,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC;wBAC7B,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,EAC/B,CAAC;wBACD,WAAW,GAAG;4BACZ,OAAO,EAAE,qBAAqB;4BAC9B,UAAU,EACR,+OAA+O;yBAClP,CAAC;oBACJ,CAAC;yBAAM,IACL,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC;wBAC/B,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC;wBAC/B,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,EACjC,CAAC;wBACD,WAAW,GAAG;4BACZ,OAAO,EAAE,uBAAuB;4BAChC,UAAU,EACR,+KAA+K;yBAClL,CAAC;oBACJ,CAAC;yBAAM,IACL,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC;wBAC/B,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;wBACxB,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAC1B,CAAC;wBACD,WAAW,GAAG;4BACZ,OAAO,EAAE,qBAAqB;4BAC9B,UAAU,EACR,mLAAmL;yBACtL,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,WAAW,GAAG;4BACZ,OAAO,EAAE,mBAAmB;4BAC5B,UAAU,EACR,2MAA2M;yBAC9M,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,OAAO;oBACL,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,cAAc,EAAE,GAAG,CAAC,cAAc;oBAClC,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,QAAQ,EAAE,GAAG,CAAC,UAAU;oBACxB,KAAK,EAAE,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,QAAQ;oBACvC,cAAc,EAAE,GAAG,CAAC,cAAc;oBAClC,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,mBAAmB,EAAE,QAAQ;wBAC3B,CAAC,CAAC;4BACE,IAAI,EAAE,QAAQ,CAAC,QAAQ;4BACvB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;yBAC5B;wBACH,CAAC,CAAC,IAAI;oBACR,GAAG,CAAC,WAAW,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,CAAC;iBACxD,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAEnC,OAAO,EAAE,CAAC;gBACR,WAAW;gBACX,aAAa,EAAE,IAAI,CAAC,MAAM;gBAC1B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,eAAe,EAAE,QAAQ,CAAC,MAAM;gBAChC,UAAU,EAAE,QAAQ,CAAC,MAAM;gBAC3B,QAAQ,EAAE,OAAO;gBACjB,cAAc,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,UAAU,cAAc,WAAW,EAAE;aACvG,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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@minicor/mcp-server",
3
- "version": "3.1.5",
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
+