@lambdacurry/arbor 0.24.1 → 0.24.2
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/arbor.js +29 -7
- package/package.json +1 -1
package/dist/arbor.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// package.json
|
|
3
3
|
var package_default = {
|
|
4
4
|
name: "@lambdacurry/arbor",
|
|
5
|
-
version: "0.24.
|
|
5
|
+
version: "0.24.2",
|
|
6
6
|
description: "The Arbor CLI — a shared workspace for people and agents. The human + headless-agent write path over Arbor's guarded operation surface.",
|
|
7
7
|
keywords: [
|
|
8
8
|
"agents",
|
|
@@ -12314,7 +12314,7 @@ var ACTION_DEFINITIONS = [
|
|
|
12314
12314
|
{
|
|
12315
12315
|
name: "attachment",
|
|
12316
12316
|
title: "Upload and read Thread Attachments",
|
|
12317
|
-
description: "Upload
|
|
12317
|
+
description: "Upload (100 MB): upload_url → signed PUT (5 min) → attach (1 h after PUT expiry); receipts replay after expiry; JSON syntax checked ≤10 MB, larger JSON gets UTF-8/control checks only (validate locally); get/list recover receipts; read URLs need Arbor credentials (401 otherwise), no public URLs. Missing tool: refresh the MCP tool catalog; CLI: arbor attachment upload (Node/Bun).",
|
|
12318
12318
|
inputSchema: {
|
|
12319
12319
|
verb: _enum(["upload_url", "attach", "get", "list"]),
|
|
12320
12320
|
threadId: string2().optional().describe("upload_url/list: Thread id, thr_…"),
|
|
@@ -12382,10 +12382,20 @@ var ACTION_DEFINITIONS = [
|
|
|
12382
12382
|
{
|
|
12383
12383
|
name: "attachment_upload",
|
|
12384
12384
|
title: "Upload a local Thread file",
|
|
12385
|
-
description: "Upload with Node
|
|
12385
|
+
description: "Upload a local file with Node or Bun (SHA-256 → presigned PUT → attach, 100 MB cap)",
|
|
12386
|
+
cliHelpLead: "Requires Node or Bun.",
|
|
12387
|
+
cliHelpNotes: [
|
|
12388
|
+
"Upload with SHA-256 via upload_url → presigned PUT → attach (100 MB cap); compress, split, or link larger files.",
|
|
12389
|
+
"PUT links expire after five minutes; first attach is allowed until one hour after PUT expiry. Finalized receipts replay after expiry.",
|
|
12390
|
+
"JSON syntax checks stop at 10 MB; larger JSON gets UTF-8/control checks only, so validate syntax locally.",
|
|
12391
|
+
"js-exec lacks file descriptors, node:crypto, and binary-safe fetch; run this command with Node or Bun.",
|
|
12392
|
+
"With only curl available, use the MCP attachment tool: upload_url → returned curl PUT command → attach with the returned token.",
|
|
12393
|
+
"mediaUrl/downloadUrl require an Arbor credential (401 otherwise); no public read URLs. The R2 PUT uses only the required signed headers, never an Arbor credential."
|
|
12394
|
+
].join(`
|
|
12395
|
+
`),
|
|
12386
12396
|
inputSchema: {
|
|
12387
12397
|
threadId: string2().min(1),
|
|
12388
|
-
file: string2().min(1).describe("local file path (or positional file); requires Node"),
|
|
12398
|
+
file: string2().min(1).describe("local file path (or positional file); requires Node or Bun"),
|
|
12389
12399
|
description: string2().min(1).max(500).optional()
|
|
12390
12400
|
},
|
|
12391
12401
|
surfaces: ["cli"],
|
|
@@ -15060,8 +15070,8 @@ async function uploadLocalAttachment(executor, input, fetcher = fetch) {
|
|
|
15060
15070
|
const mimeType = localAttachmentMime(filename);
|
|
15061
15071
|
if (!mimeType)
|
|
15062
15072
|
throw new UsageError(`Unsupported file extension for ${initialStat.size} bytes (limit ${MAX_ATTACHMENT_BYTES} bytes). Use PNG/JPEG/GIF/WebP/PDF/TXT/JSON/CSV, or link the file.`);
|
|
15063
|
-
if (
|
|
15064
|
-
throw new UsageError("Attachment upload requires Node:
|
|
15073
|
+
if ([fs.openSync, fs.fstatSync, fs.readSync, fs.closeSync].some((api) => typeof api !== "function"))
|
|
15074
|
+
throw new UsageError("Attachment upload requires Node or Bun: js-exec lacks file descriptors, node:crypto, and binary-safe fetch. Run `arbor attachment upload <file> --thread-id <thread>` with Node or Bun, or use MCP attachment upload_url → curl PUT → attach.");
|
|
15065
15075
|
const descriptor = fs.openSync(file, "r");
|
|
15066
15076
|
let bytes;
|
|
15067
15077
|
try {
|
|
@@ -15838,12 +15848,24 @@ Aliases: ${aliases.map((alias) => `\`arbor ${alias}\``).join(", ")} (tool-name f
|
|
|
15838
15848
|
const waitLines = action.name === "computer_exec" ? [
|
|
15839
15849
|
" --no-wait [<boolean>] [optional] — return a running processId immediately instead of polling computer_process_read (implied by --background); mutually exclusive with --wait-for-terminal-ms"
|
|
15840
15850
|
] : [];
|
|
15851
|
+
const notes = action.cliHelpNotes ? `
|
|
15852
|
+
|
|
15853
|
+
${action.cliHelpNotes}` : "";
|
|
15854
|
+
if (action.cliHelpLead) {
|
|
15855
|
+
return `${usage}
|
|
15856
|
+
|
|
15857
|
+
${action.cliHelpLead}
|
|
15858
|
+
|
|
15859
|
+
${lines.join(`
|
|
15860
|
+
`)}${primaryNote}${explicitNote}${aliasNote}${notes}
|
|
15861
|
+
`;
|
|
15862
|
+
}
|
|
15841
15863
|
return `${heading} — ${action.description}
|
|
15842
15864
|
|
|
15843
15865
|
${usage}${waitLines.length > 0 ? " [--no-wait]" : ""}
|
|
15844
15866
|
|
|
15845
15867
|
${[...lines, ...waitLines].join(`
|
|
15846
|
-
`)}${primaryNote}${explicitNote}${aliasNote}
|
|
15868
|
+
`)}${primaryNote}${explicitNote}${aliasNote}${notes}
|
|
15847
15869
|
`;
|
|
15848
15870
|
}
|
|
15849
15871
|
function commandCatalog() {
|
package/package.json
CHANGED