open-walnut 0.5.0 → 0.5.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/dist/build-info.json +4 -4
- package/dist/cli-fast.js +86 -11
- package/dist/cli.js +5435 -4841
- package/dist/daemon-binaries/acp-daemon-core.cjs +8 -0
- package/dist/daemon-binaries/acp-worker.js.version +1 -1
- package/dist/daemon-binaries/dtach-darwin-arm64 +0 -0
- package/dist/daemon-binaries/dtach-darwin-x64 +0 -0
- package/dist/daemon-binaries/pi-acp.js +69 -69
- package/dist/data/skills/walnut/SKILL.md +3 -1
- package/dist/data/skills/walnut-session-messaging/SKILL.md +2 -1
- package/dist/integrations/mail/index.js +2 -2
- package/dist/web/server.js +4498 -3985
- package/dist/web/static/assets/{OfficePreview-trkrPgUg.js → OfficePreview-nqaFIIDU.js} +2 -2
- package/dist/web/static/assets/{docx-preview-DXuXR6Mm.js → docx-preview-DdtIqTDg.js} +1 -1
- package/dist/web/static/assets/{index-CtqOiNs3.js → index-6L4R93nh.js} +368 -363
- package/dist/web/static/assets/{index-BCLUpT4d.js → index-6fz2bWC1.js} +1 -1
- package/dist/web/static/assets/{index--VxzrqiT.js → index-BG9VR9Vv.js} +1 -1
- package/dist/web/static/assets/{index-BycRzqR7.js → index-BK2_zSO2.js} +1 -1
- package/dist/web/static/assets/{index-CRyL44ex.js → index-BOPumzo-.js} +1 -1
- package/dist/web/static/assets/{index-qA6lI9Z8.js → index-B_qxz22L.js} +1 -1
- package/dist/web/static/assets/{index-CWnda_VJ.js → index-BdaE-wVI.js} +1 -1
- package/dist/web/static/assets/{index-B3SgAzjA.js → index-BrPomAwK.js} +1 -1
- package/dist/web/static/assets/{index-PG3BCRR7.js → index-C5cOO-_d.js} +1 -1
- package/dist/web/static/assets/{index-BcOh16aC.js → index-CEHVu7FQ.js} +1 -1
- package/dist/web/static/assets/index-CLV-Qzaa.css +32 -0
- package/dist/web/static/assets/{index-BqUnbrvU.js → index-CqOrR3-r.js} +1 -1
- package/dist/web/static/assets/{index-A4iiilIE.js → index-DOmOQnZ5.js} +1 -1
- package/dist/web/static/assets/{index-Dmueypgd.js → index-DPK5Xh5w.js} +1 -1
- package/dist/web/static/assets/{index-DbqnfSCN.js → index-Df5lfbl-.js} +1 -1
- package/dist/web/static/assets/{index-C0iAAOIU.js → index-DqBhXLnm.js} +1 -1
- package/dist/web/static/assets/{index-DU_xugLt.js → index-VeEJA8UK.js} +1 -1
- package/dist/web/static/assets/{index-BQ-txaFi.js → index-jZH7Ct8z.js} +1 -1
- package/dist/web/static/assets/{index-B5t-NZFs.js → index-z5Y-8yck.js} +1 -1
- package/dist/web/static/assets/{jszip.min-Cw001-8g.js → jszip.min-DIXBurLY.js} +1 -1
- package/dist/web/static/assets/{pptx-preview.es-C4qHBTXo.js → pptx-preview.es-DWfQguqq.js} +1 -1
- package/dist/web/static/index.html +2 -2
- package/package.json +1 -1
- package/dist/web/static/assets/index-CuCpxOTp.css +0 -32
package/dist/build-info.json
CHANGED
package/dist/cli-fast.js
CHANGED
|
@@ -14,8 +14,8 @@ import path from "path";
|
|
|
14
14
|
import { fileURLToPath } from "url";
|
|
15
15
|
function getVersion() {
|
|
16
16
|
if (cachedVersion) return cachedVersion;
|
|
17
|
-
if ("0.5.
|
|
18
|
-
cachedVersion = "0.5.
|
|
17
|
+
if ("0.5.1") {
|
|
18
|
+
cachedVersion = "0.5.1";
|
|
19
19
|
versionKnown = true;
|
|
20
20
|
return cachedVersion;
|
|
21
21
|
}
|
|
@@ -2904,6 +2904,17 @@ var init_tasks = __esm({
|
|
|
2904
2904
|
);
|
|
2905
2905
|
} catch (err) {
|
|
2906
2906
|
const error = err instanceof Error ? err.message : String(err);
|
|
2907
|
+
if (error.includes("(too_many_running_subtasks)")) {
|
|
2908
|
+
return withOutcome(
|
|
2909
|
+
withRef({ ...view, execution: { state: "not_started", error } }, {
|
|
2910
|
+
...extra,
|
|
2911
|
+
execution: { state: "not_started", error },
|
|
2912
|
+
start_error: error
|
|
2913
|
+
}),
|
|
2914
|
+
`${where}Task ${id} was created but NOT started: ${error}`,
|
|
2915
|
+
`Start it after one of the running subtasks finishes: walnut tools call task_start '{"id":"${id}"}'`
|
|
2916
|
+
);
|
|
2917
|
+
}
|
|
2907
2918
|
return withOutcome(
|
|
2908
2919
|
withRef({ ...view, execution: { state: "unconfirmed", error } }, {
|
|
2909
2920
|
...extra,
|
|
@@ -5727,6 +5738,7 @@ var init_daemon_service_cli = __esm({
|
|
|
5727
5738
|
var wn_cli_exports = {};
|
|
5728
5739
|
__export(wn_cli_exports, {
|
|
5729
5740
|
WAIT_DEFAULT_TIMEOUT_SECS: () => WAIT_DEFAULT_TIMEOUT_SECS,
|
|
5741
|
+
WAIT_MAX_IDS: () => WAIT_MAX_IDS,
|
|
5730
5742
|
WAIT_MAX_TIMEOUT_SECS: () => WAIT_MAX_TIMEOUT_SECS,
|
|
5731
5743
|
WAIT_POLL_INTERVAL_MS: () => WAIT_POLL_INTERVAL_MS,
|
|
5732
5744
|
WALNUT_CLI_TIMEOUT_MS: () => WALNUT_CLI_TIMEOUT_MS,
|
|
@@ -5738,7 +5750,8 @@ __export(wn_cli_exports, {
|
|
|
5738
5750
|
isTrustedGatewaySocket: () => isTrustedGatewaySocket,
|
|
5739
5751
|
parseWalnutCliArgs: () => parseWalnutCliArgs,
|
|
5740
5752
|
resolveWalnutCliEndpoint: () => resolveWalnutCliEndpoint,
|
|
5741
|
-
runWalnutCli: () => runWalnutCli
|
|
5753
|
+
runWalnutCli: () => runWalnutCli,
|
|
5754
|
+
waitManyVerdict: () => waitManyVerdict
|
|
5742
5755
|
});
|
|
5743
5756
|
import fs9 from "fs";
|
|
5744
5757
|
import net from "net";
|
|
@@ -5762,21 +5775,25 @@ function parseWalnutCliArgs(argv2) {
|
|
|
5762
5775
|
if (head === "wait") {
|
|
5763
5776
|
let json2 = false;
|
|
5764
5777
|
let timeoutSecs = WAIT_DEFAULT_TIMEOUT_SECS;
|
|
5765
|
-
let
|
|
5778
|
+
let mode = "all";
|
|
5779
|
+
const ids = [];
|
|
5766
5780
|
for (let i = 0; i < rest2.length; i++) {
|
|
5767
5781
|
const a = rest2[i];
|
|
5768
5782
|
if (a === "--json") json2 = true;
|
|
5769
5783
|
else if (a === "--help" || a === "-h") return { kind: "help", topic: "root" };
|
|
5784
|
+
else if (a === "--any") mode = "any";
|
|
5785
|
+
else if (a === "--all") mode = "all";
|
|
5770
5786
|
else if (a === "--timeout") {
|
|
5771
5787
|
const v = Number(rest2[++i]);
|
|
5772
5788
|
if (!Number.isFinite(v) || v <= 0) return { kind: "usage-error", message: "--timeout needs seconds > 0" };
|
|
5773
5789
|
timeoutSecs = Math.min(v, WAIT_MAX_TIMEOUT_SECS);
|
|
5774
5790
|
} else if (a.startsWith("--")) return { kind: "usage-error", message: `unknown flag: ${a}` };
|
|
5775
|
-
else if (
|
|
5776
|
-
else return { kind: "usage-error", message: `unexpected argument: ${a}` };
|
|
5791
|
+
else if (!ids.includes(a)) ids.push(a);
|
|
5777
5792
|
}
|
|
5778
|
-
if (
|
|
5779
|
-
return { kind: "
|
|
5793
|
+
if (ids.length === 0) return { kind: "usage-error", message: "wait requires <task-id | rq-id> [...]" };
|
|
5794
|
+
if (ids.length > WAIT_MAX_IDS) return { kind: "usage-error", message: `wait takes at most ${WAIT_MAX_IDS} ids` };
|
|
5795
|
+
if (ids.length === 1) return { kind: "wait", id: ids[0], timeoutSecs, json: json2 };
|
|
5796
|
+
return { kind: "wait", id: ids[0], ids, mode, timeoutSecs, json: json2 };
|
|
5780
5797
|
}
|
|
5781
5798
|
return { kind: "usage-error", message: `unknown command: ${head}` };
|
|
5782
5799
|
}
|
|
@@ -6048,7 +6065,9 @@ run \`walnut --help\` for usage
|
|
|
6048
6065
|
callArgs = args3.args;
|
|
6049
6066
|
}
|
|
6050
6067
|
}
|
|
6051
|
-
if (parsed.kind === "wait")
|
|
6068
|
+
if (parsed.kind === "wait") {
|
|
6069
|
+
return parsed.ids ? runWaitMany(socketPath, sid, { ...parsed, ids: parsed.ids, mode: parsed.mode ?? "all" }) : runWait(socketPath, sid, parsed);
|
|
6070
|
+
}
|
|
6052
6071
|
const op = parsed.kind === "tools.help" ? "tools.list" : parsed.kind === "guide" ? "tools.call" : parsed.kind;
|
|
6053
6072
|
const args2 = parsed.kind === "tools.call" ? {
|
|
6054
6073
|
name: parsed.name,
|
|
@@ -6125,6 +6144,20 @@ function evaluateWaitResult(id, result) {
|
|
|
6125
6144
|
summary: { task: task.id ?? id, title: task.title, phase }
|
|
6126
6145
|
};
|
|
6127
6146
|
}
|
|
6147
|
+
function waitManyVerdict(ids, latest, settled, mode) {
|
|
6148
|
+
const count = ids.filter((id) => settled.has(id)).length;
|
|
6149
|
+
const done = mode === "any" ? count > 0 : count === ids.length;
|
|
6150
|
+
return {
|
|
6151
|
+
done,
|
|
6152
|
+
body: {
|
|
6153
|
+
done,
|
|
6154
|
+
mode,
|
|
6155
|
+
settled: count,
|
|
6156
|
+
of: ids.length,
|
|
6157
|
+
results: ids.map((id) => ({ ...latest.get(id) ?? (id.startsWith("rq-") ? { request: id } : { task: id }), done: settled.has(id) }))
|
|
6158
|
+
}
|
|
6159
|
+
};
|
|
6160
|
+
}
|
|
6128
6161
|
function sleep(ms) {
|
|
6129
6162
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
6130
6163
|
}
|
|
@@ -6163,7 +6196,47 @@ async function runWait(socketPath, sid, parsed) {
|
|
|
6163
6196
|
await writeStdout(JSON.stringify({ done: false, timeout: true, waitedSecs: parsed.timeoutSecs, ...last }, null, parsed.json ? 0 : 2) + "\n");
|
|
6164
6197
|
return 7;
|
|
6165
6198
|
}
|
|
6166
|
-
|
|
6199
|
+
async function runWaitMany(socketPath, sid, parsed) {
|
|
6200
|
+
const deadline = Date.now() + parsed.timeoutSecs * 1e3;
|
|
6201
|
+
const latest = /* @__PURE__ */ new Map();
|
|
6202
|
+
const settled = /* @__PURE__ */ new Set();
|
|
6203
|
+
for (; ; ) {
|
|
6204
|
+
for (const id of parsed.ids) {
|
|
6205
|
+
if (settled.has(id)) continue;
|
|
6206
|
+
let resp;
|
|
6207
|
+
try {
|
|
6208
|
+
resp = await requestOverSocket(socketPath, {
|
|
6209
|
+
v: 1,
|
|
6210
|
+
op: "tools.call",
|
|
6211
|
+
sid,
|
|
6212
|
+
args: { name: id.startsWith("rq-") ? "request_get" : "task_get", args: { id } }
|
|
6213
|
+
});
|
|
6214
|
+
} catch (err) {
|
|
6215
|
+
latest.set(id, { ...latest.get(id) ?? {}, transportError: err instanceof Error ? err.message : String(err) });
|
|
6216
|
+
continue;
|
|
6217
|
+
}
|
|
6218
|
+
if (!resp.ok) {
|
|
6219
|
+
process.stderr.write(`walnut: wait ${id}:
|
|
6220
|
+
` + formatErrorLines(resp.error).join("\n") + "\n");
|
|
6221
|
+
return errorToExitCode(resp.error.code);
|
|
6222
|
+
}
|
|
6223
|
+
const { done, summary } = evaluateWaitResult(id, resp.result);
|
|
6224
|
+
latest.set(id, summary);
|
|
6225
|
+
if (done) settled.add(id);
|
|
6226
|
+
}
|
|
6227
|
+
const verdict = waitManyVerdict(parsed.ids, latest, settled, parsed.mode);
|
|
6228
|
+
if (verdict.done) {
|
|
6229
|
+
await writeStdout(JSON.stringify(verdict.body, null, parsed.json ? 0 : 2) + "\n");
|
|
6230
|
+
return 0;
|
|
6231
|
+
}
|
|
6232
|
+
if (Date.now() >= deadline) {
|
|
6233
|
+
await writeStdout(JSON.stringify({ ...verdict.body, timeout: true, waitedSecs: parsed.timeoutSecs }, null, parsed.json ? 0 : 2) + "\n");
|
|
6234
|
+
return 7;
|
|
6235
|
+
}
|
|
6236
|
+
await sleep(WAIT_POLL_INTERVAL_MS);
|
|
6237
|
+
}
|
|
6238
|
+
}
|
|
6239
|
+
var WALNUT_CLI_TIMEOUT_MS, WAIT_POLL_INTERVAL_MS, WAIT_DEFAULT_TIMEOUT_SECS, WAIT_MAX_TIMEOUT_SECS, WAIT_MAX_IDS, HELP_ROOT, HELP_TOOLS, WalnutCliTimeoutError, WALNUT_STDOUT_FLUSH_TIMEOUT_MS, WAIT_DONE_PHASES;
|
|
6167
6240
|
var init_wn_cli = __esm({
|
|
6168
6241
|
"src/providers/wn-cli.ts"() {
|
|
6169
6242
|
"use strict";
|
|
@@ -6174,12 +6247,13 @@ var init_wn_cli = __esm({
|
|
|
6174
6247
|
WAIT_POLL_INTERVAL_MS = 5e3;
|
|
6175
6248
|
WAIT_DEFAULT_TIMEOUT_SECS = 1800;
|
|
6176
6249
|
WAIT_MAX_TIMEOUT_SECS = 24 * 60 * 60;
|
|
6250
|
+
WAIT_MAX_IDS = 20;
|
|
6177
6251
|
HELP_ROOT = `walnut \u2014 the Walnut CLI
|
|
6178
6252
|
|
|
6179
6253
|
USAGE
|
|
6180
6254
|
walnut guide print the full Walnut manual (recipes + safety rules)
|
|
6181
6255
|
walnut tools list|help|call ... call Walnut operations (see \`walnut tools --help\`)
|
|
6182
|
-
walnut wait <id> [--timeout secs] [--json] block until
|
|
6256
|
+
walnut wait <id> [<id>...] [--any] [--timeout secs] [--json] block until tasks settle or reply requests resolve
|
|
6183
6257
|
walnut --help | walnut tools --help
|
|
6184
6258
|
|
|
6185
6259
|
THE MODEL (one identity: the task)
|
|
@@ -6209,6 +6283,7 @@ THE VERBS (keep it simple)
|
|
|
6209
6283
|
WAIT
|
|
6210
6284
|
walnut wait <task-id> returns when the task reaches NEED_ACTION / COMPLETE
|
|
6211
6285
|
walnut wait <rq-id> returns when the reply request leaves pending
|
|
6286
|
+
walnut wait <id> <id> several ids (up to 20): returns when ALL settled; --any returns at the first
|
|
6212
6287
|
--timeout secs default 1800, max 86400; exit 7 on timeout
|
|
6213
6288
|
|
|
6214
6289
|
ENVIRONMENT
|