wildcrane-runner 0.6.21 → 0.6.22
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/dist/launcher.mjs +2 -2
- package/dist/runner.mjs +25 -15
- package/package.json +1 -1
package/dist/launcher.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// wildcrane-runner 0.6.
|
|
1
|
+
// wildcrane-runner 0.6.22 — 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
|
|
|
@@ -108,7 +108,7 @@ function status(line) {
|
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
// src/protocol.ts
|
|
111
|
-
var VERSION = true ? "0.6.
|
|
111
|
+
var VERSION = true ? "0.6.22" : "0.0.0";
|
|
112
112
|
var EXIT_REFUSED = 10;
|
|
113
113
|
var EXIT_OUTDATED = 11;
|
|
114
114
|
var EXIT_UPDATE = 12;
|
package/dist/runner.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// wildcrane-runner 0.6.
|
|
1
|
+
// wildcrane-runner 0.6.22 — 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;
|
|
@@ -84663,7 +84663,7 @@ function status(line) {
|
|
|
84663
84663
|
}
|
|
84664
84664
|
|
|
84665
84665
|
// src/protocol.ts
|
|
84666
|
-
var VERSION = true ? "0.6.
|
|
84666
|
+
var VERSION = true ? "0.6.22" : "0.0.0";
|
|
84667
84667
|
var AKB_VERSION = true ? "0.11.19" : "0.0.0";
|
|
84668
84668
|
var AKB_CONTRACT = true ? 7 : 0;
|
|
84669
84669
|
var EXIT_REFUSED = 10;
|
|
@@ -93037,7 +93037,10 @@ var assetsText = (assets) => `${JSON.stringify(assets, null, 2)}
|
|
|
93037
93037
|
function pull(ws, machineId2) {
|
|
93038
93038
|
return inFolder(ws.cwd, async () => {
|
|
93039
93039
|
const sent = await sendBoard(boardFolder(ws), machineId2);
|
|
93040
|
-
if (!sent.ok)
|
|
93040
|
+
if (!sent.ok) {
|
|
93041
|
+
const refused = sent.tasks ? sent.tasks[ws.cloudTask ?? ""] : sent;
|
|
93042
|
+
if (refused) return { ok: false, error: `This computer's board changes could not be sent: ${refused.error}`, ...refused.offline ? {} : { code: "version_conflict" } };
|
|
93043
|
+
}
|
|
93041
93044
|
return readCloud(ws);
|
|
93042
93045
|
});
|
|
93043
93046
|
}
|
|
@@ -93394,7 +93397,7 @@ async function sendBoard(ws, machineId2) {
|
|
|
93394
93397
|
}
|
|
93395
93398
|
async function sendMarked(ws, job) {
|
|
93396
93399
|
const pushed = await send2(ws, job);
|
|
93397
|
-
markUnsent(ws.cwd, !pushed.ok);
|
|
93400
|
+
markUnsent(ws.cwd, !pushed.ok || !!readBase(ws).pendingAssets?.length);
|
|
93398
93401
|
return pushed;
|
|
93399
93402
|
}
|
|
93400
93403
|
async function send2(ws, job) {
|
|
@@ -93411,8 +93414,9 @@ async function send2(ws, job) {
|
|
|
93411
93414
|
}
|
|
93412
93415
|
});
|
|
93413
93416
|
const boardSync = !job.id && !ws.cloudTask;
|
|
93414
|
-
const
|
|
93415
|
-
const
|
|
93417
|
+
const deferredCards = /* @__PURE__ */ new Set();
|
|
93418
|
+
const deferredLists = /* @__PURE__ */ new Set();
|
|
93419
|
+
const assetErrors = {};
|
|
93416
93420
|
for (const item of tasks) {
|
|
93417
93421
|
const card = path32.relative(ws.board, cardFile(item.folder)).split(path32.sep).join("/");
|
|
93418
93422
|
const archived = boardSync && card.startsWith(".archive/") && base.files[rootOf(ws) + card];
|
|
@@ -93422,26 +93426,32 @@ async function send2(ws, job) {
|
|
|
93422
93426
|
writeRecord(item.folder, item.record);
|
|
93423
93427
|
continue;
|
|
93424
93428
|
}
|
|
93425
|
-
if (!boardSync
|
|
93426
|
-
|
|
93429
|
+
if (!boardSync) return fail(assets.error, false, assets.code);
|
|
93430
|
+
if (assets.code !== "conflict" || !assets.error.endsWith(": This task has finished.")) {
|
|
93431
|
+
assetErrors[item.folder.task] = { error: assets.error, ...assets.code ? {} : { offline: true } };
|
|
93427
93432
|
}
|
|
93428
93433
|
}
|
|
93429
|
-
|
|
93430
|
-
|
|
93434
|
+
deferredCards.add(item.folder.number);
|
|
93435
|
+
deferredLists.add(assetsFile(item.folder.task));
|
|
93431
93436
|
}
|
|
93432
93437
|
proposeItems(ws, base);
|
|
93433
93438
|
const shared = sharedMemory(ws.board);
|
|
93434
93439
|
const deferred = new Set(boardSync ? [] : base.deferred);
|
|
93435
|
-
const
|
|
93440
|
+
const defer = (p2) => {
|
|
93436
93441
|
if (!boardSync) return deferred.has(p2);
|
|
93437
|
-
if (!
|
|
93442
|
+
if (!deferredLists.has(p2) && !deferredCards.has(numberOfCard(p2) ?? 0)) return false;
|
|
93438
93443
|
deferred.add(p2);
|
|
93439
93444
|
return true;
|
|
93440
93445
|
};
|
|
93441
93446
|
const success = (changed) => {
|
|
93442
93447
|
const refreshDeferred = boardSync && (deferred.size !== (base.deferred?.length ?? 0) || base.deferred?.some((p2) => !deferred.has(p2)));
|
|
93448
|
+
const pendingAssets = Object.keys(assetErrors);
|
|
93449
|
+
const refreshPending = boardSync && JSON.stringify(pendingAssets) !== JSON.stringify(base.pendingAssets ?? []);
|
|
93443
93450
|
if (refreshDeferred) base.deferred = [...deferred];
|
|
93444
|
-
if (
|
|
93451
|
+
if (refreshPending) base.pendingAssets = pendingAssets;
|
|
93452
|
+
if (changed || refreshDeferred || refreshPending) writeBase(ws, base);
|
|
93453
|
+
const firstError = Object.values(assetErrors)[0];
|
|
93454
|
+
if (firstError) return { ok: false, conflict: false, ...firstError, tasks: assetErrors };
|
|
93445
93455
|
return { ok: true, changed };
|
|
93446
93456
|
};
|
|
93447
93457
|
const local = localFiles(ws, base);
|
|
@@ -93449,7 +93459,7 @@ async function send2(ws, job) {
|
|
|
93449
93459
|
const changes = [];
|
|
93450
93460
|
const owed = (p2) => !job.id && busy(ws.cwd) && itemAt(p2)?.state === "open" && !base.files[rootOf(ws) + p2];
|
|
93451
93461
|
for (const p2 of local) {
|
|
93452
|
-
if (
|
|
93462
|
+
if (defer(p2) || owed(p2)) continue;
|
|
93453
93463
|
const content = fs28.readFileSync(path32.join(ws.board, p2), "utf8");
|
|
93454
93464
|
const remote = remoteOf(ws, shared, p2);
|
|
93455
93465
|
localOf.set(remote, p2);
|
|
@@ -93460,7 +93470,7 @@ async function send2(ws, job) {
|
|
|
93460
93470
|
}
|
|
93461
93471
|
for (const p2 of viewOf(ws, base, shared).keys()) {
|
|
93462
93472
|
const remote = remoteOf(ws, shared, p2);
|
|
93463
|
-
if (!
|
|
93473
|
+
if (!defer(p2) && kept3(p2) && !localOf.has(remote) && base.files[remote]) {
|
|
93464
93474
|
localOf.set(remote, p2);
|
|
93465
93475
|
changes.push({ path: remote, content: null, base_seq: base.files[remote].seq });
|
|
93466
93476
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wildcrane-runner",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.22",
|
|
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/",
|