@minicor/mcp-server 3.1.4 → 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 (55) 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 +2 -2
  43. package/dist/tools/vm.js.map +1 -1
  44. package/dist/tools/workflow-ops.js +1 -1
  45. package/dist/tools/workflow-ops.js.map +1 -1
  46. package/package.json +4 -2
  47. package/skills/general/cdp-browser-automation.md +97 -0
  48. package/skills/general/data-extraction-strategies.md +64 -0
  49. package/skills/general/data-hydration-patterns.md +167 -0
  50. package/skills/general/data-passing-between-steps.md +46 -0
  51. package/skills/general/desktop-uiautomation.md +80 -0
  52. package/skills/general/rpa-testing-workflow.md +145 -0
  53. package/skills/general/session-keepalive.md +101 -0
  54. package/skills/general/smart-launch-patterns.md +213 -0
  55. package/skills/general/state-verification.md +56 -0
@@ -0,0 +1,93 @@
1
+ /**
2
+ * HTTP client for the Skills Service.
3
+ *
4
+ * Routes through the frontend proxy: app.minicor.com/api/agents/skills/*
5
+ * The frontend's catch-all agents proxy forwards to the agent service /v1/skills/*.
6
+ * Auth: bearer token (same as the user's session token).
7
+ */
8
+ import { apiToPlatformBase } from "./agent-service-client.js";
9
+ export class SkillsServiceClient {
10
+ token;
11
+ platformBase;
12
+ constructor(apiBase, token) {
13
+ this.token = token;
14
+ this.platformBase = apiToPlatformBase(apiBase).replace(/\/+$/, "");
15
+ }
16
+ get headers() {
17
+ return {
18
+ "Content-Type": "application/json",
19
+ Authorization: `Bearer ${this.token}`,
20
+ };
21
+ }
22
+ url(path, queryString) {
23
+ const base = `${this.platformBase}/api/agents/skills${path}`;
24
+ return queryString ? `${base}?${queryString}` : base;
25
+ }
26
+ async listSkills(opts) {
27
+ const params = new URLSearchParams();
28
+ if (opts?.scope)
29
+ params.set("scope", opts.scope);
30
+ if (opts?.scopeId)
31
+ params.set("scopeId", opts.scopeId);
32
+ if (opts?.tags?.length)
33
+ params.set("tags", opts.tags.join(","));
34
+ try {
35
+ const res = await fetch(this.url("", params.toString() || undefined), {
36
+ headers: this.headers,
37
+ });
38
+ if (!res.ok)
39
+ return [];
40
+ const data = (await res.json());
41
+ return data.skills || [];
42
+ }
43
+ catch {
44
+ return [];
45
+ }
46
+ }
47
+ async getSkill(name, opts) {
48
+ const params = new URLSearchParams();
49
+ if (opts?.scope)
50
+ params.set("scope", opts.scope);
51
+ if (opts?.scopeId)
52
+ params.set("scopeId", opts.scopeId);
53
+ try {
54
+ const res = await fetch(this.url(`/${encodeURIComponent(name)}`, params.toString() || undefined), { headers: this.headers });
55
+ if (!res.ok)
56
+ return null;
57
+ const data = (await res.json());
58
+ return data.skill || null;
59
+ }
60
+ catch {
61
+ return null;
62
+ }
63
+ }
64
+ async saveSkill(scope, scopeId, skill) {
65
+ try {
66
+ const res = await fetch(this.url(""), {
67
+ method: "POST",
68
+ headers: this.headers,
69
+ body: JSON.stringify({ scope, scopeId, skill }),
70
+ });
71
+ if (!res.ok)
72
+ return null;
73
+ const data = (await res.json());
74
+ return data.skill || null;
75
+ }
76
+ catch {
77
+ return null;
78
+ }
79
+ }
80
+ async deleteSkill(name, scope, scopeId) {
81
+ const params = new URLSearchParams({ scope });
82
+ if (scopeId)
83
+ params.set("scopeId", scopeId);
84
+ try {
85
+ const res = await fetch(this.url(`/${encodeURIComponent(name)}`, params.toString()), { method: "DELETE", headers: this.headers });
86
+ return res.ok;
87
+ }
88
+ catch {
89
+ return false;
90
+ }
91
+ }
92
+ }
93
+ //# sourceMappingURL=skills-service-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills-service-client.js","sourceRoot":"","sources":["../src/skills-service-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Skill reader — parses SKILL.md files with YAML frontmatter,
3
+ * builds a compact index, and serves full content on demand.
4
+ *
5
+ * General skills ship bundled in the npm package under skills/general/.
6
+ * Workspace skills live in .minicor/skills/workspace/ within a cloned project.
7
+ */
8
+ export interface SkillMeta {
9
+ name: string;
10
+ description: string;
11
+ category: "general" | "customer" | "task";
12
+ tags: string[];
13
+ priority: number;
14
+ customer?: string;
15
+ sourceWorkflows?: number[];
16
+ filePath: string;
17
+ }
18
+ export interface SkillFull extends SkillMeta {
19
+ content: string;
20
+ }
21
+ /**
22
+ * Load all available skills from bundled general skills
23
+ * and optionally from a workspace clone's .minicor/skills/ directory.
24
+ */
25
+ export declare function loadAllSkills(workspaceDir?: string): SkillFull[];
26
+ /** Build a compact index (no full content) suitable for prompt injection. */
27
+ export declare function buildSkillIndex(skills: SkillFull[]): SkillMeta[];
28
+ /** Find a specific skill by name from a list. */
29
+ export declare function findSkill(skills: SkillFull[], name: string): SkillFull | undefined;
30
+ /** Filter skills by tags (any match). */
31
+ export declare function filterByTags(skills: SkillFull[], tags: string[]): SkillFull[];
32
+ /** Filter skills by category. */
33
+ export declare function filterByCategory(skills: SkillFull[], category: string): SkillFull[];
34
+ //# sourceMappingURL=skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;IAC1C,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC1C,OAAO,EAAE,MAAM,CAAC;CACjB;AA8GD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,CAwBhE;AAED,6EAA6E;AAC7E,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAEhE;AAED,iDAAiD;AACjD,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAElF;AAED,yCAAyC;AACzC,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAG7E;AAED,iCAAiC;AACjC,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,CAEnF"}
package/dist/skills.js ADDED
@@ -0,0 +1,152 @@
1
+ /**
2
+ * Skill reader — parses SKILL.md files with YAML frontmatter,
3
+ * builds a compact index, and serves full content on demand.
4
+ *
5
+ * General skills ship bundled in the npm package under skills/general/.
6
+ * Workspace skills live in .minicor/skills/workspace/ within a cloned project.
7
+ */
8
+ import fs from "node:fs";
9
+ import path from "node:path";
10
+ import { fileURLToPath } from "node:url";
11
+ // ── Frontmatter parser ───────────────────────────────────────
12
+ function parseFrontmatter(raw) {
13
+ const match = raw.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n([\s\S]*)$/);
14
+ if (!match)
15
+ return { meta: {}, body: raw };
16
+ const meta = {};
17
+ let currentKey = "";
18
+ let currentValue = "";
19
+ let inMultiline = false;
20
+ for (const line of match[1].split("\n")) {
21
+ const trimmed = line.trimEnd();
22
+ if (inMultiline) {
23
+ if (/^\S/.test(line) && !line.startsWith(" ") && !line.startsWith("-")) {
24
+ meta[currentKey] = currentValue.trim();
25
+ inMultiline = false;
26
+ }
27
+ else {
28
+ currentValue += "\n" + trimmed;
29
+ continue;
30
+ }
31
+ }
32
+ const kvMatch = trimmed.match(/^(\w[\w-]*)\s*:\s*(.*)$/);
33
+ if (!kvMatch)
34
+ continue;
35
+ const [, key, val] = kvMatch;
36
+ if (val === ">" || val === ">-" || val === "|") {
37
+ currentKey = key;
38
+ currentValue = "";
39
+ inMultiline = true;
40
+ continue;
41
+ }
42
+ if (val.startsWith("[") && val.endsWith("]")) {
43
+ meta[key] = val
44
+ .slice(1, -1)
45
+ .split(",")
46
+ .map((s) => s.trim().replace(/^['"]|['"]$/g, ""))
47
+ .filter(Boolean);
48
+ }
49
+ else if (val === "true") {
50
+ meta[key] = true;
51
+ }
52
+ else if (val === "false") {
53
+ meta[key] = false;
54
+ }
55
+ else if (/^\d+$/.test(val)) {
56
+ meta[key] = parseInt(val, 10);
57
+ }
58
+ else {
59
+ meta[key] = val.replace(/^['"]|['"]$/g, "");
60
+ }
61
+ }
62
+ if (inMultiline) {
63
+ meta[currentKey] = currentValue.trim();
64
+ }
65
+ return { meta, body: match[2] };
66
+ }
67
+ // ── Skill loading ────────────────────────────────────────────
68
+ function loadSkillFile(filePath) {
69
+ try {
70
+ const raw = fs.readFileSync(filePath, "utf-8");
71
+ const { meta, body } = parseFrontmatter(raw);
72
+ if (!meta.name || !meta.description)
73
+ return null;
74
+ return {
75
+ name: meta.name,
76
+ description: meta.description,
77
+ category: meta.category || "general",
78
+ tags: Array.isArray(meta.tags) ? meta.tags : [],
79
+ priority: typeof meta.priority === "number" ? meta.priority : 5,
80
+ customer: meta.customer,
81
+ sourceWorkflows: Array.isArray(meta.sourceWorkflows)
82
+ ? meta.sourceWorkflows.map(Number).filter((n) => !isNaN(n))
83
+ : undefined,
84
+ filePath,
85
+ content: body.trim(),
86
+ };
87
+ }
88
+ catch {
89
+ return null;
90
+ }
91
+ }
92
+ function scanDirectory(dir) {
93
+ if (!fs.existsSync(dir))
94
+ return [];
95
+ const skills = [];
96
+ for (const entry of fs.readdirSync(dir)) {
97
+ if (!entry.endsWith(".md"))
98
+ continue;
99
+ const skill = loadSkillFile(path.join(dir, entry));
100
+ if (skill)
101
+ skills.push(skill);
102
+ }
103
+ return skills;
104
+ }
105
+ // ── Public API ───────────────────────────────────────────────
106
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
107
+ /** Path to bundled general skills (relative to compiled dist/) */
108
+ function getBundledSkillsDir() {
109
+ return path.resolve(__dirname, "..", "skills", "general");
110
+ }
111
+ /**
112
+ * Load all available skills from bundled general skills
113
+ * and optionally from a workspace clone's .minicor/skills/ directory.
114
+ */
115
+ export function loadAllSkills(workspaceDir) {
116
+ const skills = [];
117
+ // Tier 1: Bundled general skills
118
+ skills.push(...scanDirectory(getBundledSkillsDir()));
119
+ // Tier 2: Workspace skills (if a clone directory is provided)
120
+ if (workspaceDir) {
121
+ const wsSkillsDir = path.join(workspaceDir, ".minicor", "skills", "workspace");
122
+ skills.push(...scanDirectory(wsSkillsDir));
123
+ const wsGeneralDir = path.join(workspaceDir, ".minicor", "skills", "general");
124
+ if (fs.existsSync(wsGeneralDir)) {
125
+ skills.push(...scanDirectory(wsGeneralDir));
126
+ }
127
+ }
128
+ // Deduplicate by name (workspace skills override bundled)
129
+ const byName = new Map();
130
+ for (const s of skills) {
131
+ byName.set(s.name, s);
132
+ }
133
+ return [...byName.values()].sort((a, b) => b.priority - a.priority);
134
+ }
135
+ /** Build a compact index (no full content) suitable for prompt injection. */
136
+ export function buildSkillIndex(skills) {
137
+ return skills.map(({ content, ...meta }) => meta);
138
+ }
139
+ /** Find a specific skill by name from a list. */
140
+ export function findSkill(skills, name) {
141
+ return skills.find((s) => s.name === name);
142
+ }
143
+ /** Filter skills by tags (any match). */
144
+ export function filterByTags(skills, tags) {
145
+ const tagSet = new Set(tags.map((t) => t.toLowerCase()));
146
+ return skills.filter((s) => s.tags.some((t) => tagSet.has(t.toLowerCase())));
147
+ }
148
+ /** Filter skills by category. */
149
+ export function filterByCategory(skills, category) {
150
+ return skills.filter((s) => s.category === category);
151
+ }
152
+ //# sourceMappingURL=skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"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"}
package/dist/sync.d.ts CHANGED
@@ -1,8 +1,9 @@
1
1
  /**
2
- * Workflow sync — pull/push workflows between Laminar and local filesystem.
3
- * Supports per-workflow operations and workspace-level manifests (laminar.json).
2
+ * Workflow sync — pull/push workflows between Minicor and local filesystem.
3
+ * Supports per-workflow operations and workspace-level manifests (minicor.json).
4
4
  */
5
5
  import type { LaminarClient } from "./laminar-client.js";
6
+ import { type SkillMeta } from "./skills.js";
6
7
  export interface StepMeta {
7
8
  name: string;
8
9
  description: string;
@@ -83,4 +84,19 @@ export declare function pushChanged(client: LaminarClient, projectDir: string):
83
84
  error: string;
84
85
  }>;
85
86
  }>;
87
+ export interface CloneResult {
88
+ projectDir: string;
89
+ workflowsPulled: number;
90
+ issuesPulled: number;
91
+ skillsCopied: number;
92
+ vmsPulled: number;
93
+ agentsPulled: number;
94
+ manifest: LaminarManifest;
95
+ skillIndex: SkillMeta[];
96
+ }
97
+ export declare function cloneWorkspace(client: LaminarClient, workspaceId: number, outputDir: string, opts?: {
98
+ workflowIds?: number[];
99
+ apiBase?: string;
100
+ vmServiceBase?: string;
101
+ }): Promise<CloneResult>;
86
102
  //# sourceMappingURL=sync.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}