capybara-mcp 0.1.1 → 0.1.3

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 CHANGED
@@ -42,7 +42,7 @@ CAPYBARA_API_KEY=<key> npx capybara-mcp
42
42
  1. The agent calls `generate_assets` with asset specs (maps, characters, etc.).
43
43
  2. The client reads `src/data/assets.md` and existing JSON from your game repo.
44
44
  3. Assets are generated via the Capybara API and written back to disk.
45
- 4. Live progress appears in `.capybara/status.md` during the run.
45
+ 4. Live progress is written to `.capybara/status.active.md` (rewritten in place; cleared on success). Cancelled runs go to `status.cancelled.md` (keep `job_id` for recovery); failures go to `status.failed.md`.
46
46
 
47
47
  If interrupted, use `get_job_status` with the returned `job_id`.
48
48
 
@@ -1 +1 @@
1
- {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/lib/progress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACxF,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACd,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,KAAK,SAAS,GAAG,mBAAmB,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;AAaxE,wBAAgB,sBAAsB,CAAC,EACrC,KAAK,EACL,MAAM,EACN,KAAK,EACL,SAAS,GACV,EAAE;IACD,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,YAAY,CAAC;CAC1B;qBAI+B,cAAc;EAiC7C"}
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/lib/progress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACxF,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACd,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,KAAK,SAAS,GAAG,mBAAmB,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;AAiCxE,wBAAgB,sBAAsB,CAAC,EACrC,KAAK,EACL,MAAM,EACN,KAAK,EACL,SAAS,GACV,EAAE;IACD,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,YAAY,CAAC;CAC1B;qBAI+B,cAAc;EAiC7C"}
@@ -8,6 +8,25 @@ function formatProgressLine({ message, progress, total }) {
8
8
  }
9
9
  return parts.join(" — ") || "working...";
10
10
  }
11
+ /** Stable key so the same logical update rewrites one status line. */
12
+ function progressKey({ message, progress, total }) {
13
+ if (progress != null || total != null) {
14
+ return "progress";
15
+ }
16
+ const msg = message?.trim() ?? "";
17
+ if (!msg) {
18
+ return "progress";
19
+ }
20
+ // Strip trailing counts / percents so "Generating map 1/3" and "Generating map 2/3"
21
+ // share a line; distinct messages still get their own keys.
22
+ const label = msg
23
+ .replace(/\b\d+\s*\/\s*\d+\b/g, "")
24
+ .replace(/\b\d+%\b/g, "")
25
+ .replace(/\s+/g, " ")
26
+ .trim()
27
+ .toLowerCase();
28
+ return label ? `msg:${label.slice(0, 80)}` : "progress";
29
+ }
11
30
  export function createProgressReporter({ extra, server, label, statusLog, }) {
12
31
  const progressToken = extra._meta?.progressToken;
13
32
  let lastProgress = 0;
@@ -18,7 +37,7 @@ export function createProgressReporter({ extra, server, label, statusLog, }) {
18
37
  if (update.progress != null) {
19
38
  lastProgress = update.progress;
20
39
  }
21
- await statusLog?.append(formatProgressLine(update));
40
+ await statusLog?.upsert(progressKey(update), formatProgressLine(update));
22
41
  if (progressToken !== undefined) {
23
42
  await extra.sendNotification({
24
43
  method: "notifications/progress",
@@ -1 +1 @@
1
- {"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/lib/progress.ts"],"names":[],"mappings":"AAWA,SAAS,kBAAkB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAkB;IACtE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,EACrC,KAAK,EACL,MAAM,EACN,KAAK,EACL,SAAS,GAMV;IACC,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC;IACjD,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,MAAM,MAAM,GAAG,KAAK,EAAE,MAAsB,EAAE,EAAE;QAC9C,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACzB,MAAM,IAAI,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;YAC5B,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,CAAC;QAED,MAAM,SAAS,EAAE,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;QAEpD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,KAAK,CAAC,gBAAgB,CAAC;gBAC3B,MAAM,EAAE,wBAAwB;gBAChC,MAAM,EAAE;oBACN,aAAa;oBACb,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,YAAY;oBACzC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACxD,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACvD;aACF,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,SAAS,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACtC,MAAM,MAAM,CAAC,kBAAkB,CAC7B,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,KAAK,MAAM,CAAC,OAAO,EAAE,EAAE,EACvD,KAAK,CAAC,SAAS,CAChB,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/lib/progress.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  export type StatusOutcome = "running" | "complete" | "cancelled" | "failed";
2
2
  export type StatusLogger = {
3
- filePath: string;
4
- append: (line: string) => Promise<void>;
3
+ activePath: string;
4
+ upsert: (key: string, text: string) => Promise<void>;
5
5
  finish: (outcome: Exclude<StatusOutcome, "running">, message?: string) => Promise<void>;
6
6
  };
7
7
  export declare function createStatusLogger(label: string): Promise<StatusLogger>;
@@ -1 +1 @@
1
- {"version":3,"file":"status-markdown.d.ts","sourceRoot":"","sources":["../../src/lib/status-markdown.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE5E,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzF,CAAC;AAyEF,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAwB7E"}
1
+ {"version":3,"file":"status-markdown.d.ts","sourceRoot":"","sources":["../../src/lib/status-markdown.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE5E,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzF,CAAC;AAsJF,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAqD7E"}
@@ -1,47 +1,64 @@
1
1
  import fs from "node:fs/promises";
2
2
  import path from "node:path";
3
- function statusFilePath() {
4
- const custom = process.env.CAPYBARA_STATUS_FILE;
5
- if (custom) {
6
- return path.resolve(custom);
3
+ function statusDir() {
4
+ const customDir = process.env.CAPYBARA_STATUS_DIR?.trim();
5
+ if (customDir) {
6
+ return path.resolve(customDir);
7
7
  }
8
- return path.resolve(process.cwd(), ".capybara", "status.md");
8
+ // Backward compat: CAPYBARA_STATUS_FILE pointed at a single file; use its directory.
9
+ const customFile = process.env.CAPYBARA_STATUS_FILE?.trim();
10
+ if (customFile) {
11
+ return path.dirname(path.resolve(customFile));
12
+ }
13
+ return path.resolve(process.cwd(), ".capybara");
14
+ }
15
+ function statusPaths(dir) {
16
+ return {
17
+ active: path.join(dir, "status-active.md"),
18
+ cancelled: path.join(dir, "status-cancelled.md"),
19
+ failed: path.join(dir, "status-failed.md"),
20
+ };
9
21
  }
10
22
  function formatTimestamp() {
11
23
  return new Date().toISOString();
12
24
  }
13
- function renderMarkdown({ label, outcome, startedAt, lines, footer, }) {
14
- const statusLabel = outcome === "running"
15
- ? "running"
16
- : outcome === "complete"
17
- ? "complete"
18
- : outcome === "cancelled"
19
- ? "cancelled"
20
- : "failed";
21
- const body = [
25
+ function renderActiveMarkdown({ label, startedAt, entries, }) {
26
+ return [
22
27
  `# Capybara — ${label}`,
23
28
  "",
24
- `**Status:** ${statusLabel} `,
29
+ "**Status:** running ",
25
30
  `**Started:** ${startedAt} `,
26
31
  `**Updated:** ${formatTimestamp()} `,
27
32
  "",
28
- "> Temporary status file. Removed automatically when this tool finishes.",
33
+ "> Live run. Cleared on success. Moved to `status-cancelled.md` / `status-failed.md` otherwise.",
29
34
  "",
30
35
  "## Progress",
31
36
  "",
32
- ...lines.map((line) => `- ${line}`),
37
+ ...entries.map((entry) => `- **${entry.key}:** \`${entry.updatedAt}\` ${entry.text}`),
38
+ "",
39
+ ].join("\n");
40
+ }
41
+ function renderArchiveEntry({ label, outcome, startedAt, finishedAt, jobId, message, entries, }) {
42
+ const lines = [
43
+ `## ${label} — ${outcome}`,
44
+ "",
45
+ `**Started:** ${startedAt} `,
46
+ `**Finished:** ${finishedAt} `,
33
47
  ];
34
- if (footer) {
35
- body.push("", "## Result", "", footer);
48
+ if (jobId) {
49
+ lines.push(`**job_id:** \`${jobId}\` `);
50
+ }
51
+ if (message) {
52
+ lines.push(`**Message:** ${message} `);
36
53
  }
37
- body.push("");
38
- return body.join("\n");
54
+ lines.push("", "### Progress", "", ...entries.map((entry) => `- **${entry.key}:** \`${entry.updatedAt}\` ${entry.text}`), "", "---", "");
55
+ return lines.join("\n");
39
56
  }
40
- async function writeStatus(filePath, content) {
57
+ async function writeFile(filePath, content) {
41
58
  await fs.mkdir(path.dirname(filePath), { recursive: true });
42
59
  await fs.writeFile(filePath, content, "utf-8");
43
60
  }
44
- async function removeStatus(filePath) {
61
+ async function removeFile(filePath) {
45
62
  try {
46
63
  await fs.unlink(filePath);
47
64
  }
@@ -51,22 +68,72 @@ async function removeStatus(filePath) {
51
68
  }
52
69
  }
53
70
  }
71
+ async function appendArchive(filePath, entry) {
72
+ await fs.mkdir(path.dirname(filePath), { recursive: true });
73
+ let existing = "";
74
+ try {
75
+ existing = await fs.readFile(filePath, "utf-8");
76
+ }
77
+ catch (err) {
78
+ if (err.code !== "ENOENT") {
79
+ throw err;
80
+ }
81
+ }
82
+ const header = existing.trim().length > 0
83
+ ? existing.trimEnd() + "\n\n"
84
+ : `# Capybara — ${path.basename(filePath, ".md")}\n\n`;
85
+ await fs.writeFile(filePath, header + entry, "utf-8");
86
+ }
87
+ function extractJobId(entries) {
88
+ const jobEntry = entries.find((entry) => entry.key === "job_id");
89
+ if (!jobEntry) {
90
+ return undefined;
91
+ }
92
+ const match = jobEntry.text.match(/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/i);
93
+ return match?.[0];
94
+ }
54
95
  export async function createStatusLogger(label) {
55
- const filePath = statusFilePath();
96
+ const dir = statusDir();
97
+ const paths = statusPaths(dir);
56
98
  const startedAt = formatTimestamp();
57
- const lines = [];
58
- const refresh = async (outcome, footer) => {
59
- await writeStatus(filePath, renderMarkdown({ label, outcome, startedAt, lines, footer }));
99
+ const entries = new Map();
100
+ const refreshActive = async () => {
101
+ await writeFile(paths.active, renderActiveMarkdown({
102
+ label,
103
+ startedAt,
104
+ entries: [...entries.values()],
105
+ }));
60
106
  };
61
- await refresh("running");
107
+ const upsert = async (key, text) => {
108
+ entries.set(key, {
109
+ key,
110
+ text,
111
+ updatedAt: formatTimestamp(),
112
+ });
113
+ await refreshActive();
114
+ };
115
+ await upsert("phase", "Tool call accepted");
62
116
  return {
63
- filePath,
64
- append: async (line) => {
65
- lines.push(`\`${formatTimestamp()}\` ${line}`);
66
- await refresh("running");
67
- },
68
- finish: async () => {
69
- await removeStatus(filePath);
117
+ activePath: paths.active,
118
+ upsert,
119
+ finish: async (outcome, message) => {
120
+ if (outcome === "complete") {
121
+ await removeFile(paths.active);
122
+ return;
123
+ }
124
+ const finishedAt = formatTimestamp();
125
+ const archivePath = outcome === "cancelled" ? paths.cancelled : paths.failed;
126
+ const entry = renderArchiveEntry({
127
+ label,
128
+ outcome,
129
+ startedAt,
130
+ finishedAt,
131
+ jobId: extractJobId([...entries.values()]),
132
+ message,
133
+ entries: [...entries.values()],
134
+ });
135
+ await appendArchive(archivePath, entry);
136
+ await removeFile(paths.active);
70
137
  },
71
138
  };
72
139
  }
@@ -1 +1 @@
1
- {"version":3,"file":"status-markdown.js","sourceRoot":"","sources":["../../src/lib/status-markdown.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status-markdown.js","sourceRoot":"","sources":["../../src/lib/status-markdown.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"register-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAazE,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAC;AAsDhC,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC,QA4DzG"}
1
+ {"version":3,"file":"register-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAazE,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAC;AAuEhC,wBAAgB,aAAa,CAC3B,MAAM,EAAE,SAAS,EACjB,GAAG,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC,QAsE1D"}
@@ -5,12 +5,16 @@ import { createProgressReporter } from "../lib/progress.js";
5
5
  import { createStatusLogger } from "../lib/status-markdown.js";
6
6
  async function runLongTool({ label, extra, server, work, }) {
7
7
  const statusLog = await createStatusLogger(label);
8
- const { report } = createProgressReporter({ extra, server, label, statusLog });
8
+ const { report } = createProgressReporter({
9
+ extra,
10
+ server,
11
+ label,
12
+ statusLog,
13
+ });
9
14
  const onJobId = async (jobId) => {
10
- await statusLog.append(`job_id: ${jobId} (use ${TOOL_GET_JOB_STATUS} if interrupted)`);
15
+ await statusLog.upsert("job_id", `${jobId} (use ${TOOL_GET_JOB_STATUS} if interrupted)`);
11
16
  };
12
17
  try {
13
- await statusLog.append("Tool call accepted");
14
18
  const result = await work({ report, signal: extra.signal, onJobId });
15
19
  await statusLog.finish("complete", "Completed successfully");
16
20
  return {
@@ -24,7 +28,7 @@ async function runLongTool({ label, extra, server, work, }) {
24
28
  content: [
25
29
  {
26
30
  type: "text",
27
- text: `${label} cancelled. If a job_id was issued, call ${TOOL_GET_JOB_STATUS} to recover results.`,
31
+ text: `${label} cancelled. Check \`.capybara/status.cancelled.md\` for the job_id, then call ${TOOL_GET_JOB_STATUS} to recover results.`,
28
32
  },
29
33
  ],
30
34
  isError: true,
@@ -33,7 +37,12 @@ async function runLongTool({ label, extra, server, work, }) {
33
37
  const message = err instanceof Error ? err.message : String(err);
34
38
  await statusLog.finish("failed", message);
35
39
  return {
36
- content: [{ type: "text", text: `Error in ${label}: ${message}` }],
40
+ content: [
41
+ {
42
+ type: "text",
43
+ text: `Error in ${label}: ${message}\nSee \`.capybara/status.failed.md\` for details.`,
44
+ },
45
+ ],
37
46
  isError: true,
38
47
  };
39
48
  }
@@ -43,7 +52,9 @@ export function registerTools(server, ctx) {
43
52
  title: "Generate assets",
44
53
  description: ASSET_TOOL_DESCRIPTION +
45
54
  ` Returns a job_id for ${TOOL_GET_JOB_STATUS} if interrupted. ` +
46
- "Live progress is written to `.capybara/status.md` (removed when the tool finishes).",
55
+ "Live progress: `.capybara/status.active.md` (cleared on success). " +
56
+ "Cancelled runs archive to `status.cancelled.md` (recover via job_id). " +
57
+ "Failures archive to `status.failed.md` (bug reports).",
47
58
  inputSchema: mcpGenerateAssetInputSchema,
48
59
  annotations: { openWorldHint: true },
49
60
  }, async (input, extra) => runLongTool({
@@ -59,7 +70,10 @@ export function registerTools(server, ctx) {
59
70
  description: `Poll a generation job by job_id. Use when ${TOOL_GENERATE_ASSETS} was interrupted, or to check ` +
60
71
  "progress after closing the agent. When status is complete, writes any recovered files to disk.",
61
72
  inputSchema: {
62
- job_id: z.string().min(1).describe(`The job_id from ${TOOL_GENERATE_ASSETS}.`),
73
+ job_id: z
74
+ .string()
75
+ .min(1)
76
+ .describe(`The job_id from ${TOOL_GENERATE_ASSETS}.`),
63
77
  output_dir: z
64
78
  .string()
65
79
  .optional()
@@ -81,7 +95,9 @@ export function registerTools(server, ctx) {
81
95
  catch (err) {
82
96
  const message = err instanceof Error ? err.message : String(err);
83
97
  return {
84
- content: [{ type: "text", text: `Error checking job: ${message}` }],
98
+ content: [
99
+ { type: "text", text: `Error checking job: ${message}` },
100
+ ],
85
101
  isError: true,
86
102
  };
87
103
  }
@@ -1 +1 @@
1
- {"version":3,"file":"register-tools.js","sourceRoot":"","sources":["../../src/tools/register-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"register-tools.js","sourceRoot":"","sources":["../../src/tools/register-tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "capybara-mcp",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Capybara MCP tools — generate game assets from Claude Code, Cursor, Codex, and other MCP agents",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -19,7 +19,7 @@
19
19
  "prepublishOnly": "npm run build"
20
20
  },
21
21
  "dependencies": {
22
- "capybara-mcp-shared": "0.1.0",
22
+ "capybara-mcp-shared": "0.1.2",
23
23
  "@modelcontextprotocol/sdk": "^1.11.0",
24
24
  "zod": "^3.23.8"
25
25
  },