wildcrane-runner 0.6.12 → 0.6.14

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.
@@ -1 +1 @@
1
- {"name":"wildcrane","version":"0.11.9","akbContract":4,"type":"module","private":true}
1
+ {"name":"wildcrane","version":"0.11.11","akbContract":5,"type":"module","private":true}
package/dist/launcher.mjs CHANGED
@@ -1,4 +1,4 @@
1
- // wildcrane-runner 0.6.12 — built by runner/scripts/build.mjs. Do not edit.
1
+ // wildcrane-runner 0.6.14 — built by runner/scripts/build.mjs. Do not edit.
2
2
  import { createRequire as __ai4kanbanRequire } from 'node:module'
3
3
  const require = __ai4kanbanRequire(import.meta.url)
4
4
 
@@ -107,7 +107,7 @@ function status(line) {
107
107
  }
108
108
 
109
109
  // src/protocol.ts
110
- var VERSION = true ? "0.6.12" : "0.0.0";
110
+ var VERSION = true ? "0.6.14" : "0.0.0";
111
111
  var EXIT_REFUSED = 10;
112
112
  var EXIT_OUTDATED = 11;
113
113
  var EXIT_UPDATE = 12;
package/dist/runner.mjs CHANGED
@@ -1,4 +1,4 @@
1
- // wildcrane-runner 0.6.12 — built by runner/scripts/build.mjs. Do not edit.
1
+ // wildcrane-runner 0.6.14 — built by runner/scripts/build.mjs. Do not edit.
2
2
  import { createRequire as __ai4kanbanRequire } from 'node:module'
3
3
  const require = __ai4kanbanRequire(import.meta.url)
4
4
  var __create = Object.create;
@@ -84435,9 +84435,9 @@ function status(line) {
84435
84435
  }
84436
84436
 
84437
84437
  // src/protocol.ts
84438
- var VERSION = true ? "0.6.12" : "0.0.0";
84439
- var AKB_VERSION = true ? "0.11.9" : "0.0.0";
84440
- var AKB_CONTRACT = true ? 4 : 0;
84438
+ var VERSION = true ? "0.6.14" : "0.0.0";
84439
+ var AKB_VERSION = true ? "0.11.11" : "0.0.0";
84440
+ var AKB_CONTRACT = true ? 5 : 0;
84441
84441
  var EXIT_REFUSED = 10;
84442
84442
  var EXIT_OUTDATED = 11;
84443
84443
  var EXIT_UPDATE = 12;
@@ -85923,8 +85923,8 @@ function createTail(log) {
85923
85923
  // ../cli/package.json
85924
85924
  var package_default = {
85925
85925
  name: "wildcrane",
85926
- version: "0.11.9",
85927
- akbContract: 4,
85926
+ version: "0.11.11",
85927
+ akbContract: 5,
85928
85928
  description: "WildCrane's `akb` command \u2014 scaffold the Markdown board under docs/kanban/, put an agent on a card, and carry the flows the agent works by.",
85929
85929
  keywords: [
85930
85930
  "kanban",
@@ -87018,12 +87018,27 @@ setBoardRoot(process.cwd());
87018
87018
  // ../cli/src/lib/agent/worktree.ts
87019
87019
  import { spawnSync as spawnSync2 } from "node:child_process";
87020
87020
  var MAX_OUTPUT = 64 * 1024 * 1024;
87021
+ var gitLimits = { timeoutMs: 3e4 };
87022
+ var GitTimeoutError = class extends Error {
87023
+ };
87024
+ function spawnGit(args, options) {
87025
+ const out = spawnSync2("git", args, {
87026
+ ...options,
87027
+ encoding: "utf8",
87028
+ stdio: ["ignore", "pipe", "pipe"],
87029
+ timeout: gitLimits.timeoutMs,
87030
+ killSignal: "SIGKILL"
87031
+ });
87032
+ if (out.error?.code === "ETIMEDOUT") throw new GitTimeoutError(`Git ${args[0]} timed out after ${gitLimits.timeoutMs / 1e3}s; the command was killed.`);
87033
+ return out;
87034
+ }
87021
87035
  function git(args, cwd = REPO_ROOT) {
87022
87036
  try {
87023
- const out = spawnSync2("git", args, { cwd, encoding: "utf8", maxBuffer: MAX_OUTPUT, windowsHide: true });
87037
+ const out = spawnGit(args, { cwd, encoding: "utf8", maxBuffer: MAX_OUTPUT, windowsHide: true });
87024
87038
  if (out.error || out.status !== 0) return null;
87025
87039
  return out.stdout;
87026
- } catch {
87040
+ } catch (error) {
87041
+ if (error instanceof GitTimeoutError) throw error;
87027
87042
  return null;
87028
87043
  }
87029
87044
  }
@@ -92802,16 +92817,24 @@ ${draftLine(ws)}
92802
92817
  }
92803
92818
  if (verb === "revise" && !text3) return fail("Say what to change.");
92804
92819
  let note = verb === "resolve" || verb === "revise" ? text3 : "";
92820
+ let continuation;
92805
92821
  if (verb === "implement" && flow.resume) {
92806
- const resumed = answerOf2(await akb(["delivery", "resume", String(id2), "--json"]));
92822
+ const restored = await akb(["delivery", "resume", String(id2), "--json"]);
92823
+ const resumed = answerOf2(restored);
92807
92824
  if (io.lost()) return fail("");
92808
92825
  if (resumed?.landed) return { ok: true, report: { card: id2 } };
92826
+ if (restored.code !== 0 && resumed?.error?.reason !== "deliveryActive") return fail(resumed?.error?.message ?? refusal(restored));
92827
+ const deliveryId = resumed?.deliveryId ?? resumed?.error?.args?.id;
92828
+ if (!deliveryId) return fail("\u627E\u4E0D\u5230\u4E0A\u6B21\u6784\u5EFA\u7684\u4EA4\u4ED8\u8BB0\u5F55\uFF0C\u65E0\u6CD5\u6062\u590D\u539F\u5BF9\u8BDD\u3002");
92829
+ const previous = answerOf2(await akb(["run", "list", "--card", String(id2), "--all", "--json"]))?.runs?.filter((r2) => ["implement", "conflict", "hook"].includes(r2.action ?? "") && r2.deliveryId === deliveryId).sort((a3, b2) => (b2.startedAt ?? 0) - (a3.startedAt ?? 0))[0];
92830
+ if (!previous) return fail("\u627E\u4E0D\u5230\u4E0A\u6B21\u6784\u5EFA\u7684\u8FD0\u884C\u8BB0\u5F55\uFF0C\u65E0\u6CD5\u6062\u590D\u539F\u5BF9\u8BDD\u3002");
92831
+ continuation = previous.status === "done" ? ["run", "log", previous.sessionId] : ["run", "resume", previous.sessionId, "--require-session"];
92809
92832
  } else if (verb === "implement" && text3) {
92810
92833
  const resolved = await akb(["card", "resolve", String(id2), "--follow", "--events", "--json", "--", text3], true);
92811
92834
  if (io.lost()) return fail("");
92812
92835
  if (resolved.code !== 0) note = text3;
92813
92836
  }
92814
- const ran = await akb(["card", verb, String(id2), "--follow", "--events", "--json", ...carryArgs(verb), ...note ? ["--", note] : []], true);
92837
+ const ran = await akb(continuation ? [...continuation, "--follow", "--events", "--json"] : ["card", verb, String(id2), "--follow", "--events", "--json", ...carryArgs(verb), ...note ? ["--", note] : []], true);
92815
92838
  if (io.lost()) return fail("");
92816
92839
  const answer = answerOf2(ran);
92817
92840
  if (verb === "implement") {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wildcrane-runner",
3
- "version": "0.6.12",
3
+ "version": "0.6.14",
4
4
  "description": "WildCrane's Local Runner — connects this computer to WildCrane and runs its jobs on your local Claude Code, Codex, OpenCode or Cursor.",
5
5
  "license": "FSL-1.1-ALv2",
6
6
  "homepage": "https://wildcrane.ai/",