@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.
- package/README.md +296 -61
- package/dist/bootstrap.d.ts +12 -0
- package/dist/bootstrap.d.ts.map +1 -0
- package/dist/bootstrap.js +244 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/config.d.ts +6 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +14 -10
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -5
- 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 +22 -1
- 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/prompts/workspace-session.d.ts +3 -0
- package/dist/prompts/workspace-session.d.ts.map +1 -0
- package/dist/prompts/workspace-session.js +58 -0
- package/dist/prompts/workspace-session.js.map +1 -0
- 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/state.d.ts +22 -0
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +12 -0
- package/dist/state.js.map +1 -1
- 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/session.d.ts +8 -0
- package/dist/tools/session.d.ts.map +1 -0
- package/dist/tools/session.js +392 -0
- package/dist/tools/session.js.map +1 -0
- 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 +82 -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 +5 -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
|
@@ -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":"
|
|
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"}
|
package/dist/tools/sync-tools.js
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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":"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;
|
|
1
|
+
{"version":3,"file":"sync-tools.js","sourceRoot":"","sources":["../../src/tools/sync-tools.ts"],"names":[],"mappings":"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"}
|