@minicor/mcp-server 3.1.5 → 3.2.1

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 (74) hide show
  1. package/README.md +296 -61
  2. package/dist/bootstrap.d.ts +12 -0
  3. package/dist/bootstrap.d.ts.map +1 -0
  4. package/dist/bootstrap.js +244 -0
  5. package/dist/bootstrap.js.map +1 -0
  6. package/dist/config.d.ts +6 -3
  7. package/dist/config.d.ts.map +1 -1
  8. package/dist/config.js +14 -10
  9. package/dist/config.js.map +1 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +38 -5
  12. package/dist/index.js.map +1 -1
  13. package/dist/laminar-client.d.ts +5 -0
  14. package/dist/laminar-client.d.ts.map +1 -1
  15. package/dist/laminar-client.js +6 -0
  16. package/dist/laminar-client.js.map +1 -1
  17. package/dist/lib.d.ts.map +1 -1
  18. package/dist/lib.js +22 -1
  19. package/dist/lib.js.map +1 -1
  20. package/dist/prompts/build-rpa.d.ts.map +1 -1
  21. package/dist/prompts/build-rpa.js +86 -272
  22. package/dist/prompts/build-rpa.js.map +1 -1
  23. package/dist/prompts/debug-execution.js +1 -1
  24. package/dist/prompts/workspace-session.d.ts +3 -0
  25. package/dist/prompts/workspace-session.d.ts.map +1 -0
  26. package/dist/prompts/workspace-session.js +58 -0
  27. package/dist/prompts/workspace-session.js.map +1 -0
  28. package/dist/seed-skills.d.ts +13 -0
  29. package/dist/seed-skills.d.ts.map +1 -0
  30. package/dist/seed-skills.js +82 -0
  31. package/dist/seed-skills.js.map +1 -0
  32. package/dist/skills-service-client.d.ts +54 -0
  33. package/dist/skills-service-client.d.ts.map +1 -0
  34. package/dist/skills-service-client.js +93 -0
  35. package/dist/skills-service-client.js.map +1 -0
  36. package/dist/skills.d.ts +34 -0
  37. package/dist/skills.d.ts.map +1 -0
  38. package/dist/skills.js +152 -0
  39. package/dist/skills.js.map +1 -0
  40. package/dist/state.d.ts +22 -0
  41. package/dist/state.d.ts.map +1 -1
  42. package/dist/state.js +12 -0
  43. package/dist/state.js.map +1 -1
  44. package/dist/sync.d.ts +18 -2
  45. package/dist/sync.d.ts.map +1 -1
  46. package/dist/sync.js +404 -104
  47. package/dist/sync.js.map +1 -1
  48. package/dist/tools/core.d.ts.map +1 -1
  49. package/dist/tools/core.js +12 -0
  50. package/dist/tools/core.js.map +1 -1
  51. package/dist/tools/session.d.ts +8 -0
  52. package/dist/tools/session.d.ts.map +1 -0
  53. package/dist/tools/session.js +392 -0
  54. package/dist/tools/session.js.map +1 -0
  55. package/dist/tools/skills.d.ts +3 -0
  56. package/dist/tools/skills.d.ts.map +1 -0
  57. package/dist/tools/skills.js +429 -0
  58. package/dist/tools/skills.js.map +1 -0
  59. package/dist/tools/sync-tools.d.ts.map +1 -1
  60. package/dist/tools/sync-tools.js +82 -12
  61. package/dist/tools/sync-tools.js.map +1 -1
  62. package/dist/tools/vm.js +1 -1
  63. package/dist/tools/workflow-ops.js +1 -1
  64. package/dist/tools/workflow-ops.js.map +1 -1
  65. package/package.json +5 -2
  66. package/skills/general/cdp-browser-automation.md +97 -0
  67. package/skills/general/data-extraction-strategies.md +64 -0
  68. package/skills/general/data-hydration-patterns.md +167 -0
  69. package/skills/general/data-passing-between-steps.md +46 -0
  70. package/skills/general/desktop-uiautomation.md +80 -0
  71. package/skills/general/rpa-testing-workflow.md +145 -0
  72. package/skills/general/session-keepalive.md +101 -0
  73. package/skills/general/smart-launch-patterns.md +213 -0
  74. package/skills/general/state-verification.md +56 -0
@@ -0,0 +1,429 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { z } from "zod";
4
+ import { ok, text } from "../helpers.js";
5
+ import { loadAllSkills, buildSkillIndex, findSkill, filterByTags, filterByCategory, } from "../skills.js";
6
+ import { SkillsServiceClient } from "../skills-service-client.js";
7
+ import { getWorkspaceRegion } from "../state.js";
8
+ let cachedSkills = null;
9
+ function getSkills() {
10
+ if (!cachedSkills) {
11
+ cachedSkills = loadAllSkills();
12
+ }
13
+ return cachedSkills;
14
+ }
15
+ function invalidateCache() {
16
+ cachedSkills = null;
17
+ }
18
+ function getServiceClient(deps, region) {
19
+ if (!deps.getAuthToken)
20
+ return null;
21
+ const token = deps.getAuthToken(region);
22
+ if (!token)
23
+ return null;
24
+ const base = deps.getApiBase(region);
25
+ return new SkillsServiceClient(base, token);
26
+ }
27
+ const regionParam = z
28
+ .enum(["us", "ca"])
29
+ .optional()
30
+ .describe("Region (us or ca). Auto-detected from workspace if omitted.");
31
+ export function register(deps) {
32
+ const { server } = deps;
33
+ server.tool("list_skills", "List available RPA skills with compact summaries. Skills contain patterns, templates, and best practices for automation tasks. Filter by category (general/customer/task) or tags. Returns name + description only — call get_skill to load full content.", {
34
+ category: z
35
+ .enum(["general", "customer", "task"])
36
+ .optional()
37
+ .describe("Filter by skill category"),
38
+ tags: z
39
+ .array(z.string())
40
+ .optional()
41
+ .describe("Filter by tags (returns skills matching ANY tag). Examples: cdp, browser, desktop, ehr, citrix"),
42
+ workspaceId: z
43
+ .number()
44
+ .optional()
45
+ .describe("Workspace ID to include workspace-specific skills from the skills service"),
46
+ projectDir: z
47
+ .string()
48
+ .optional()
49
+ .describe("Workspace clone directory — also scans .minicor/skills/workspace/ for local skills"),
50
+ region: regionParam,
51
+ }, async ({ category, tags, workspaceId, projectDir, region }) => {
52
+ try {
53
+ // Start with bundled skills + workspace clone skills
54
+ let skills = projectDir ? loadAllSkills(projectDir) : getSkills();
55
+ if (category) {
56
+ skills = filterByCategory(skills, category);
57
+ }
58
+ if (tags && tags.length > 0) {
59
+ skills = filterByTags(skills, tags);
60
+ }
61
+ const index = buildSkillIndex(skills);
62
+ // Merge with service skills if available
63
+ const r = region;
64
+ const svc = getServiceClient(deps, r);
65
+ if (svc) {
66
+ try {
67
+ const serviceSkills = await svc.listSkills({
68
+ scope: "all",
69
+ scopeId: workspaceId?.toString(),
70
+ tags,
71
+ });
72
+ const byName = new Map(index.map((s) => [s.name, s]));
73
+ for (const ss of serviceSkills) {
74
+ byName.set(ss.name, {
75
+ name: ss.name,
76
+ description: ss.description,
77
+ category: ss.category,
78
+ tags: ss.tags,
79
+ priority: ss.priority,
80
+ filePath: "",
81
+ });
82
+ }
83
+ let merged = [...byName.values()];
84
+ if (category) {
85
+ merged = filterByCategory(merged, category);
86
+ }
87
+ merged.sort((a, b) => b.priority - a.priority);
88
+ return ok(merged);
89
+ }
90
+ catch {
91
+ // Service unavailable, return bundled only
92
+ }
93
+ }
94
+ return ok(index);
95
+ }
96
+ catch (e) {
97
+ return text(`Error listing skills: ${e.message}`);
98
+ }
99
+ });
100
+ server.tool("get_skill", "Load the full content of a skill by name. Skills contain detailed patterns, code templates, and best practices. Use list_skills first to find relevant skill names.", {
101
+ name: z.string().describe("Skill name (e.g. 'cdp-browser-automation', 'rpa-testing-workflow')"),
102
+ workspaceId: z
103
+ .number()
104
+ .optional()
105
+ .describe("Workspace ID to search workspace-specific skills in the service"),
106
+ projectDir: z
107
+ .string()
108
+ .optional()
109
+ .describe("Workspace clone directory — also searches .minicor/skills/workspace/"),
110
+ region: regionParam,
111
+ }, async ({ name, workspaceId, projectDir, region }) => {
112
+ try {
113
+ // Try service first (has workspace/customer skills + potentially updated global skills)
114
+ const r = region;
115
+ const svc = getServiceClient(deps, r);
116
+ if (svc) {
117
+ try {
118
+ const serviceSkill = await svc.getSkill(name, {
119
+ scope: "all",
120
+ scopeId: workspaceId?.toString(),
121
+ });
122
+ if (serviceSkill) {
123
+ return ok({
124
+ name: serviceSkill.name,
125
+ description: serviceSkill.description,
126
+ category: serviceSkill.category,
127
+ tags: serviceSkill.tags,
128
+ content: serviceSkill.content,
129
+ scripts: serviceSkill.scripts,
130
+ source: "service",
131
+ });
132
+ }
133
+ }
134
+ catch {
135
+ // Service unavailable, fall through to bundled
136
+ }
137
+ }
138
+ // Fall back to bundled + workspace clone skills
139
+ const skills = projectDir ? loadAllSkills(projectDir) : getSkills();
140
+ const skill = findSkill(skills, name);
141
+ if (!skill) {
142
+ const available = skills.map((s) => s.name).join(", ");
143
+ return text(`Skill "${name}" not found. Available skills: ${available}`);
144
+ }
145
+ return ok({
146
+ name: skill.name,
147
+ description: skill.description,
148
+ category: skill.category,
149
+ tags: skill.tags,
150
+ content: skill.content,
151
+ source: "bundled",
152
+ });
153
+ }
154
+ catch (e) {
155
+ return text(`Error loading skill: ${e.message}`);
156
+ }
157
+ });
158
+ server.tool("save_skill", "Save a skill to the skills service (and optionally to a local workspace clone). Use after learning reusable patterns from building or debugging a workflow.", {
159
+ workspaceId: z
160
+ .number()
161
+ .describe("Workspace ID to save the skill under"),
162
+ name: z
163
+ .string()
164
+ .describe("Skill name (lowercase, hyphens, e.g. 'centricity-patient-search')"),
165
+ description: z
166
+ .string()
167
+ .describe("One-line description of what the skill teaches and when to use it"),
168
+ category: z
169
+ .enum(["customer", "task"])
170
+ .describe("Skill category — 'customer' for per-customer nuances, 'task' for task-type patterns"),
171
+ tags: z
172
+ .array(z.string())
173
+ .describe("Tags for filtering (e.g. ['ehr', 'centricity', 'patient-search'])"),
174
+ content: z
175
+ .string()
176
+ .describe("Full markdown body of the skill (patterns, code templates, known issues)"),
177
+ sourceWorkflows: z
178
+ .array(z.number())
179
+ .optional()
180
+ .describe("Workflow IDs that this skill was extracted from"),
181
+ projectDir: z
182
+ .string()
183
+ .optional()
184
+ .describe("If provided, also save to the local clone's .minicor/skills/workspace/ directory"),
185
+ region: regionParam,
186
+ }, async ({ workspaceId, name, description, category, tags, content, sourceWorkflows, projectDir, region }) => {
187
+ try {
188
+ if (!/^[a-z0-9-]+$/.test(name)) {
189
+ return text("Invalid skill name: must match /^[a-z0-9-]+$/ (lowercase alphanumeric and hyphens only)");
190
+ }
191
+ const results = {};
192
+ // Save to service
193
+ const r = region ?? getWorkspaceRegion(workspaceId) ?? undefined;
194
+ const svc = getServiceClient(deps, r);
195
+ if (svc) {
196
+ try {
197
+ const saved = await svc.saveSkill("workspace", workspaceId.toString(), {
198
+ name,
199
+ description,
200
+ category,
201
+ tags,
202
+ content,
203
+ sourceWorkflows,
204
+ createdBy: "agent",
205
+ });
206
+ if (saved) {
207
+ results.service = `Saved to skills service (version ${saved.version})`;
208
+ }
209
+ }
210
+ catch (e) {
211
+ results.service = `Service save failed: ${e.message}`;
212
+ }
213
+ }
214
+ else {
215
+ results.service = "Skills service not available (no auth token)";
216
+ }
217
+ // Also save to local filesystem if projectDir provided
218
+ if (projectDir) {
219
+ const resolved = path.resolve(projectDir);
220
+ const skillsDir = path.join(resolved, ".minicor", "skills", "workspace");
221
+ fs.mkdirSync(skillsDir, { recursive: true });
222
+ const frontmatter = [
223
+ "---",
224
+ `name: ${name}`,
225
+ `description: ${description}`,
226
+ `category: ${category}`,
227
+ `tags: [${tags.join(", ")}]`,
228
+ `priority: 5`,
229
+ ];
230
+ if (sourceWorkflows?.length) {
231
+ frontmatter.push(`sourceWorkflows: [${sourceWorkflows.join(", ")}]`);
232
+ }
233
+ frontmatter.push("---");
234
+ const fileContent = frontmatter.join("\n") + "\n\n" + content + "\n";
235
+ const filePath = path.join(skillsDir, `${name}.md`);
236
+ fs.writeFileSync(filePath, fileContent, "utf-8");
237
+ results.file = filePath;
238
+ // Update skill-index.json
239
+ const indexPath = path.join(resolved, ".minicor", "skill-index.json");
240
+ try {
241
+ const existingIndex = fs.existsSync(indexPath)
242
+ ? JSON.parse(fs.readFileSync(indexPath, "utf-8"))
243
+ : [];
244
+ const newEntry = {
245
+ name,
246
+ description,
247
+ category,
248
+ tags,
249
+ priority: 5,
250
+ filePath: `.minicor/skills/workspace/${name}.md`,
251
+ };
252
+ const filtered = existingIndex.filter((s) => s.name !== name);
253
+ filtered.push(newEntry);
254
+ filtered.sort((a, b) => (b.priority || 0) - (a.priority || 0));
255
+ fs.writeFileSync(indexPath, JSON.stringify(filtered, null, 2) + "\n", "utf-8");
256
+ }
257
+ catch { /* best-effort */ }
258
+ }
259
+ invalidateCache();
260
+ return ok({
261
+ name,
262
+ category,
263
+ tags,
264
+ ...results,
265
+ hint: "Skill saved. It will appear in list_skills and can be loaded with get_skill.",
266
+ });
267
+ }
268
+ catch (e) {
269
+ return text(`Error saving skill: ${e.message}`);
270
+ }
271
+ });
272
+ server.tool("generate_skill", "Gather context from a successful workflow to help you write a skill. Fetches the workflow's flows/steps, recent execution history, and any [Agent:*] issues. You then analyze the patterns and call save_skill with the extracted knowledge.", {
273
+ workspaceId: z.number().describe("Workspace ID"),
274
+ workflowId: z.number().describe("Workflow ID to extract patterns from"),
275
+ region: regionParam,
276
+ }, async ({ workspaceId, workflowId, region }) => {
277
+ const r = region ?? getWorkspaceRegion(workspaceId) ?? undefined;
278
+ try {
279
+ const client = deps.client(r);
280
+ const [workflow, flows, executions, issues] = await Promise.all([
281
+ client.getWorkflow(workflowId),
282
+ client.getWorkflowFlows(workflowId),
283
+ client.listExecutions(workflowId, { size: 10, sortDirection: "desc" }).catch(() => []),
284
+ client.listIssues(workspaceId).catch(() => []),
285
+ ]);
286
+ const flowList = Array.isArray(flows) ? flows : [];
287
+ const execList = Array.isArray(executions) ? executions : executions?.content || [];
288
+ const issueList = Array.isArray(issues) ? issues : [];
289
+ const agentIssues = issueList.filter((i) => i.title && i.title.startsWith("[Agent:"));
290
+ const flowDetails = [];
291
+ for (const flow of flowList) {
292
+ let code = flow.program || "";
293
+ try {
294
+ const raw = await client.readFlow(flow.id);
295
+ code = typeof raw === "string" ? raw : JSON.stringify(raw, null, 2);
296
+ }
297
+ catch {
298
+ // use program field
299
+ }
300
+ flowDetails.push({
301
+ name: flow.name,
302
+ description: flow.description,
303
+ executionOrder: flow.executionOrder,
304
+ flowType: flow.flowType,
305
+ language: flow.language,
306
+ code: code.slice(0, 3000),
307
+ });
308
+ }
309
+ const recentExecutions = execList.slice(0, 5).map((e) => ({
310
+ id: e.id,
311
+ status: e.status,
312
+ createdAt: e.createdAt,
313
+ duration: e.duration,
314
+ }));
315
+ return ok({
316
+ workflow: {
317
+ id: workflow.id,
318
+ name: workflow.name,
319
+ description: workflow.description,
320
+ },
321
+ flows: flowDetails,
322
+ recentExecutions,
323
+ agentIssues: agentIssues.map((i) => ({
324
+ title: i.title,
325
+ description: i.description?.slice(0, 2000),
326
+ status: i.status,
327
+ })),
328
+ instruction: "Analyze the workflow code above. Extract reusable patterns: wait strategies, " +
329
+ "selector approaches, error handling, app-specific quirks, data passing patterns. " +
330
+ "Then call save_skill with the extracted knowledge. Choose category 'customer' for " +
331
+ "app/environment-specific nuances, 'task' for task-type patterns.",
332
+ });
333
+ }
334
+ catch (e) {
335
+ return text(`Error gathering workflow context: ${e.message}`);
336
+ }
337
+ });
338
+ server.tool("get_workspace_context", "Detect if you're in a Minicor workspace clone and load the full context: AGENTS.md (the agent loop), workspace metadata, available VMs, agents, skill index, and any existing context.md from previous sessions. Call this FIRST when working in a cloned workspace folder.", {
339
+ directory: z
340
+ .string()
341
+ .optional()
342
+ .describe("Directory to check (defaults to current working directory)"),
343
+ }, async ({ directory }) => {
344
+ try {
345
+ const dir = directory ? path.resolve(directory) : process.cwd();
346
+ const manifestPath = path.join(dir, "minicor.json");
347
+ if (!fs.existsSync(manifestPath)) {
348
+ return text("Not a Minicor workspace clone (no minicor.json found). " +
349
+ "Use clone_workspace to clone a workspace first.");
350
+ }
351
+ const result = {};
352
+ // AGENTS.md
353
+ const agentsPath = path.join(dir, "AGENTS.md");
354
+ if (fs.existsSync(agentsPath)) {
355
+ result.agentsMd = fs.readFileSync(agentsPath, "utf-8");
356
+ }
357
+ // workspace.json
358
+ const wsPath = path.join(dir, ".minicor", "workspace.json");
359
+ if (fs.existsSync(wsPath)) {
360
+ result.workspace = JSON.parse(fs.readFileSync(wsPath, "utf-8"));
361
+ }
362
+ // context.md (built by agents in Phase 0)
363
+ const ctxPath = path.join(dir, ".minicor", "context.md");
364
+ if (fs.existsSync(ctxPath)) {
365
+ result.context = fs.readFileSync(ctxPath, "utf-8");
366
+ result.contextExists = true;
367
+ }
368
+ else {
369
+ result.contextExists = false;
370
+ result.contextHint = "No context.md yet. Follow Phase 0 in AGENTS.md to build workspace understanding.";
371
+ }
372
+ // vms.json
373
+ const vmsPath = path.join(dir, ".minicor", "vms.json");
374
+ if (fs.existsSync(vmsPath)) {
375
+ result.vms = JSON.parse(fs.readFileSync(vmsPath, "utf-8"));
376
+ }
377
+ // agents.json
378
+ const agPath = path.join(dir, ".minicor", "agents.json");
379
+ if (fs.existsSync(agPath)) {
380
+ result.agents = JSON.parse(fs.readFileSync(agPath, "utf-8"));
381
+ }
382
+ // skill-index.json
383
+ const siPath = path.join(dir, ".minicor", "skill-index.json");
384
+ if (fs.existsSync(siPath)) {
385
+ result.skillIndex = JSON.parse(fs.readFileSync(siPath, "utf-8"));
386
+ }
387
+ // intake folder contents
388
+ const intakePath = path.join(dir, ".minicor", "intake");
389
+ if (fs.existsSync(intakePath)) {
390
+ const intakeFiles = fs.readdirSync(intakePath).filter((f) => f !== "README.md");
391
+ result.intakeFiles = intakeFiles;
392
+ if (intakeFiles.length > 0) {
393
+ result.intakeHint = `${intakeFiles.length} file(s) in intake folder. Read them during Phase 0.`;
394
+ }
395
+ }
396
+ // session.json (resume point from last agent)
397
+ const sessionPath = path.join(dir, ".minicor", "session.json");
398
+ if (fs.existsSync(sessionPath)) {
399
+ try {
400
+ const session = JSON.parse(fs.readFileSync(sessionPath, "utf-8"));
401
+ result.session = session;
402
+ const phase = session.currentPhase || "unknown";
403
+ const task = session.workingOn?.description || session.workingOn?.workflow || "unknown task";
404
+ result.sessionHint = `Last agent was in Phase: ${phase}, working on: ${task}. Check nextSteps to resume.`;
405
+ }
406
+ catch {
407
+ result.session = null;
408
+ result.sessionHint = "session.json exists but could not be parsed.";
409
+ }
410
+ }
411
+ else {
412
+ result.session = null;
413
+ result.sessionHint = "No prior session. Start from Phase 0 (Gather Context).";
414
+ }
415
+ // issues list
416
+ const issuesPath = path.join(dir, ".minicor", "issues");
417
+ if (fs.existsSync(issuesPath)) {
418
+ result.issueFiles = fs.readdirSync(issuesPath).filter((f) => f.endsWith(".md"));
419
+ }
420
+ // minicor.json manifest
421
+ result.manifest = JSON.parse(fs.readFileSync(manifestPath, "utf-8"));
422
+ return ok(result);
423
+ }
424
+ catch (e) {
425
+ return text(`Error reading workspace context: ${e.message}`);
426
+ }
427
+ });
428
+ }
429
+ //# sourceMappingURL=skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/tools/skills.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sync-tools.d.ts","sourceRoot":"","sources":["../../src/tools/sync-tools.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAO5C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,QA8KtC"}
1
+ {"version":3,"file":"sync-tools.d.ts","sourceRoot":"","sources":["../../src/tools/sync-tools.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAO5C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,QAoQtC"}
@@ -1,15 +1,16 @@
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
+ import { getWorkspacesRoot, saveServiceConfig } from "../config.js";
6
7
  const regionParam = z
7
8
  .enum(["us", "ca"])
8
9
  .optional()
9
10
  .describe("Region (us or ca). Auto-detected from workspace if omitted.");
10
11
  export function register(deps) {
11
12
  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.", {
13
+ 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
14
  workspaceId: z
14
15
  .number()
15
16
  .describe("Workspace ID to pull workflows from"),
@@ -30,11 +31,9 @@ export function register(deps) {
30
31
  ...result,
31
32
  nextSteps: [
32
33
  `cd ${resolved}`,
33
- "git init && git add . && git commit -m 'Initial Laminar workflow sync'",
34
+ "git init && git add . && git commit -m 'Initial workflow sync'",
34
35
  "git remote add origin <your-github-repo-url>",
35
36
  "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
37
  ],
39
38
  });
40
39
  }
@@ -42,7 +41,7 @@ export function register(deps) {
42
41
  return text(`Error: ${e.message}`);
43
42
  }
44
43
  });
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.", {
44
+ 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
45
  workflowId: z.number().describe("Workflow ID to pull"),
47
46
  outputDir: z
48
47
  .string()
@@ -62,7 +61,7 @@ export function register(deps) {
62
61
  return text(`Error: ${e.message}`);
63
62
  }
64
63
  });
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.", {
64
+ server.tool("push_workflow", "Deploy local workflow files. Reads workflow.json + step files and pushes them via create_or_update_flows API.", {
66
65
  workflowDir: z
67
66
  .string()
68
67
  .describe("Local directory containing workflow.json and steps/ folder"),
@@ -82,7 +81,7 @@ export function register(deps) {
82
81
  return text(`Error: ${e.message}`);
83
82
  }
84
83
  });
85
- server.tool("sync_status", "Compare local workflow files against what's deployed on Laminar. Shows which steps are modified, added, or unchanged.", {
84
+ server.tool("sync_status", "Compare local workflow files against what's deployed. Shows which steps are modified, added, or unchanged.", {
86
85
  workflowDir: z
87
86
  .string()
88
87
  .describe("Local directory containing workflow.json and steps/ folder"),
@@ -102,10 +101,10 @@ export function register(deps) {
102
101
  return text(`Error: ${e.message}`);
103
102
  }
104
103
  });
105
- server.tool("pull_all", "Pull all workflows defined in the laminar.json manifest. Updates local step files from what's deployed on Laminar.", {
104
+ server.tool("pull_all", "Pull all workflows defined in the minicor.json manifest. Updates local step files from what's deployed.", {
106
105
  projectDir: z
107
106
  .string()
108
- .describe("Root project directory containing laminar.json"),
107
+ .describe("Root project directory containing minicor.json"),
109
108
  region: regionParam,
110
109
  }, async ({ projectDir, region }) => {
111
110
  const r = region;
@@ -118,10 +117,10 @@ export function register(deps) {
118
117
  return text(`Error: ${e.message}`);
119
118
  }
120
119
  });
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.", {
120
+ 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
121
  projectDir: z
123
122
  .string()
124
- .describe("Root project directory containing laminar.json"),
123
+ .describe("Root project directory containing minicor.json"),
125
124
  region: regionParam,
126
125
  }, async ({ projectDir, region }) => {
127
126
  const r = region;
@@ -134,5 +133,76 @@ export function register(deps) {
134
133
  return text(`Error: ${e.message}`);
135
134
  }
136
135
  });
136
+ server.tool("set_workspaces_root", "Set the default root directory for cloning workspaces. Saved to ~/.minicor/config.json. When set, clone_workspace can auto-place new clones here without specifying outputDir each time.", {
137
+ directory: z
138
+ .string()
139
+ .describe("Absolute path to the root directory for workspace clones (e.g. ~/laminar/customers)"),
140
+ }, async ({ directory }) => {
141
+ try {
142
+ const resolved = path.resolve(directory);
143
+ saveServiceConfig({ workspacesRoot: resolved });
144
+ return ok({
145
+ workspacesRoot: resolved,
146
+ hint: "Workspace root saved. clone_workspace will now default to cloning into this directory.",
147
+ });
148
+ }
149
+ catch (e) {
150
+ return text(`Error saving config: ${e.message}`);
151
+ }
152
+ });
153
+ server.tool("clone_workspace", `Clone an entire workspace to a local folder for development. Pulls all workflows, issues, and skills into a structured directory:
154
+
155
+ my-workspace/
156
+ minicor.json — workspace manifest
157
+ workflows/ — all workflow steps as files
158
+ .minicor/
159
+ skills/general/ — bundled RPA skill files
160
+ skills/workspace/ — workspace-specific skills
161
+ issues/ — serialized issues as markdown
162
+ skill-index.json — compact skill summary for quick reference
163
+ workspace.json — workspace metadata
164
+
165
+ The folder is git-ready. Use push_changed to deploy modifications back.
166
+ If outputDir is omitted, uses the workspaces root from config (set via set_workspaces_root).`, {
167
+ workspaceId: z.number().describe("Workspace ID to clone"),
168
+ outputDir: z
169
+ .string()
170
+ .optional()
171
+ .describe("Directory to create the project in. If omitted, uses the configured workspaces root + workspace name."),
172
+ workflowIds: z
173
+ .array(z.number())
174
+ .optional()
175
+ .describe("Specific workflow IDs to include (omit to clone ALL workflows)"),
176
+ region: regionParam,
177
+ }, async ({ workspaceId, outputDir, workflowIds, region }) => {
178
+ const r = region ?? getWorkspaceRegion(workspaceId);
179
+ try {
180
+ let targetDir;
181
+ if (outputDir) {
182
+ targetDir = path.resolve(outputDir);
183
+ }
184
+ else {
185
+ const root = getWorkspacesRoot();
186
+ if (!root) {
187
+ return text("No outputDir provided and no workspaces root configured. " +
188
+ "Either pass outputDir, or call set_workspaces_root first to set a default.");
189
+ }
190
+ targetDir = path.join(root, `workspace-${workspaceId}`);
191
+ }
192
+ const result = await cloneWorkspace(deps.client(r), workspaceId, targetDir, { workflowIds, apiBase: deps.getApiBase(r), vmServiceBase: deps.getVmServiceBase() });
193
+ return ok({
194
+ ...result,
195
+ nextSteps: [
196
+ `cd ${targetDir}`,
197
+ "Call session_start() to load workspace context and begin working",
198
+ "Read AGENTS.md for the full agent workflow loop",
199
+ "Browse workflows/ to study existing automation patterns",
200
+ ],
201
+ });
202
+ }
203
+ catch (e) {
204
+ return text(`Error: ${e.message}`);
205
+ }
206
+ });
137
207
  }
138
208
  //# 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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"}