@lambdacurry/arbor 0.22.31 → 0.22.33
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 +23 -9
- 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.22.
|
|
5
|
+
version: "0.22.33",
|
|
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",
|
|
@@ -9981,6 +9981,11 @@ var update = object({
|
|
|
9981
9981
|
var shapeIds = array(shapeId).min(1).max(TLDRAW_EXEC_MAX_OPERATIONS);
|
|
9982
9982
|
var diagramKey = string2().min(1).max(80).describe("caller-meaningful node key; returned as the alias for its generated tldraw shape id");
|
|
9983
9983
|
var diagramLabel = string2().min(1).max(160);
|
|
9984
|
+
var connect = object({
|
|
9985
|
+
op: literal("connect"),
|
|
9986
|
+
sourceId: shapeId.describe("existing native shape to bind the arrow start to"),
|
|
9987
|
+
targetId: shapeId.describe("existing native shape to bind the arrow end to")
|
|
9988
|
+
}).strict();
|
|
9984
9989
|
var diagram = object({
|
|
9985
9990
|
op: literal("diagram"),
|
|
9986
9991
|
direction: _enum(["LR", "RL", "TB", "BT"]).describe("graph reading direction: left/right or top/bottom"),
|
|
@@ -10013,6 +10018,7 @@ var TLDRAW_EXEC_OPERATION_SCHEMA = discriminatedUnion("op", [
|
|
|
10013
10018
|
ids: shapeIds.min(2),
|
|
10014
10019
|
groupId: shapeId.optional()
|
|
10015
10020
|
}).strict(),
|
|
10021
|
+
connect,
|
|
10016
10022
|
diagram
|
|
10017
10023
|
]);
|
|
10018
10024
|
var TLDRAW_EXEC_OPERATIONS_SCHEMA = array(TLDRAW_EXEC_OPERATION_SCHEMA).min(1).max(TLDRAW_EXEC_MAX_OPERATIONS).superRefine((operations, ctx) => {
|
|
@@ -10044,6 +10050,13 @@ var TLDRAW_EXEC_OPERATIONS_SCHEMA = array(TLDRAW_EXEC_OPERATION_SCHEMA).min(1).m
|
|
|
10044
10050
|
seen.add(id);
|
|
10045
10051
|
});
|
|
10046
10052
|
}
|
|
10053
|
+
if (operation.op === "connect" && operation.sourceId === operation.targetId) {
|
|
10054
|
+
ctx.addIssue({
|
|
10055
|
+
code: "custom",
|
|
10056
|
+
message: "connect self-loops are not supported",
|
|
10057
|
+
path: [index, "targetId"]
|
|
10058
|
+
});
|
|
10059
|
+
}
|
|
10047
10060
|
if (operation.op === "diagram") {
|
|
10048
10061
|
const previousNodeTotal = totalDiagramNodes;
|
|
10049
10062
|
const previousEdgeTotal = totalDiagramEdges;
|
|
@@ -10974,7 +10987,7 @@ var ACTION_DEFINITIONS = [
|
|
|
10974
10987
|
{
|
|
10975
10988
|
name: "computer_process_read",
|
|
10976
10989
|
title: "Read a background process",
|
|
10977
|
-
description: "Read
|
|
10990
|
+
description: "Read output with nextCursor, including repeated cursors for 30 days after preservation without provider wake. durationMs is process elapsed runtime (final at terminal), not RPC latency; waitForTerminalMs adds one bounded observation/page; expiry may leave work running; transport failure stays unknown/unsafe; only terminal or exact absence proof settles the durable operation.",
|
|
10978
10991
|
inputSchema: {
|
|
10979
10992
|
computerSessionId: string2().optional().describe("legacy alternative to runId: a computerSessionId on that Computer, cms_…; required unless runId is supplied"),
|
|
10980
10993
|
runId: string2().optional().describe("the Run that owns this process, if it was started inside a Run"),
|
|
@@ -11341,7 +11354,7 @@ var ACTION_DEFINITIONS = [
|
|
|
11341
11354
|
{
|
|
11342
11355
|
name: "promote_attachment",
|
|
11343
11356
|
title: "Promote a file attachment to an artifact",
|
|
11344
|
-
description: "Turn a file uploaded to a thread into a first-class
|
|
11357
|
+
description: "Turn a file uploaded to a thread into a separate first-class file Artifact from a source Contribution — the blob becomes the Artifact's content, owned by that contribution's author (not necessarily you). Use the Attachment's durable downloadUrl to reference an exported report within an existing baseline Artifact instead of promoting it into that artifactId; the Attachment must share the source Contribution's Thread, and re-promoting the same file is idempotent.",
|
|
11345
11358
|
inputSchema: {
|
|
11346
11359
|
attachmentId: string2().describe("the uploaded attachment, att_…"),
|
|
11347
11360
|
sourceContributionId: string2().describe("the contribution it's produced by, con_… (must share the attachment's thread)")
|
|
@@ -12161,7 +12174,7 @@ var ACTION_DEFINITIONS = [
|
|
|
12161
12174
|
{
|
|
12162
12175
|
name: "artifact",
|
|
12163
12176
|
title: "Create or edit an Artifact",
|
|
12164
|
-
description: "Create or edit a durable versioned Artifact, bind its executable Thread Live Preview, set a Computer-file asleep/share snapshot, or promote a Thread attachment
|
|
12177
|
+
description: "Create or edit a durable versioned Artifact, bind its executable Thread Live Preview, set a Computer-file asleep/share snapshot, or promote a Thread attachment into a separate file Artifact from a source Contribution. To reference an exported report within an existing baseline Artifact, use the Attachment's durable downloadUrl instead of promoting it into that artifactId. For a computer:// .tldr snapshot mint: computer_export the exact locator path and same-Thread PNG, then use set_snapshot. Board save and TLP do not mint snapshots. set_snapshot does not wake Computer or change the locator; read artifact_get before changing it, while lifecycle/removal stay in artifact_transition and artifact_delete.",
|
|
12165
12178
|
inputSchema: {
|
|
12166
12179
|
verb: _enum(["create", "edit", "set_live_preview", "set_snapshot", "promote_attachment"]).describe("which artifact move"),
|
|
12167
12180
|
title: string2().optional().describe("create: the artifact's title"),
|
|
@@ -12181,7 +12194,8 @@ var ACTION_DEFINITIONS = [
|
|
|
12181
12194
|
note: string2().optional().describe("edit: one-line summary of what changed"),
|
|
12182
12195
|
sourceAttachmentId: string2().optional().describe("set_snapshot: computer_export of the exact computer:// locator path; MIME application/vnd.tldraw+json, computerPath stamped and matching defaultCwd + locator"),
|
|
12183
12196
|
previewAttachmentId: string2().optional().describe("set_snapshot: same-Thread computer_export image/png Attachment, used as the asleep face preview"),
|
|
12184
|
-
attachmentId: string2().optional().describe("promote_attachment: the upload, att_…")
|
|
12197
|
+
attachmentId: string2().optional().describe("promote_attachment: the upload, att_…"),
|
|
12198
|
+
sourceContributionId: string2().optional().describe("promote_attachment: REQUIRED source Contribution, con_… (must share the Attachment's Thread)")
|
|
12185
12199
|
},
|
|
12186
12200
|
surfaces: ["mcp"],
|
|
12187
12201
|
toolset: "artifacts",
|
|
@@ -12345,7 +12359,7 @@ var ACTION_DEFINITIONS = [
|
|
|
12345
12359
|
{
|
|
12346
12360
|
name: "tldraw_exec",
|
|
12347
12361
|
title: "Run a one-shot tldraw program",
|
|
12348
|
-
description: `Modify the current live tldraw board with preferred declarative operations or bounded JavaScript, including
|
|
12362
|
+
description: `Modify the current live tldraw board with preferred declarative operations or bounded JavaScript, including graph-scoped diagram layout and safe native bound connect between shape IDs without caller-supplied connector geometry, then return a durable execution receipt; use IDs from a fresh observe, reacquire this current schema after compaction, and never replay an unknown result. First use: read the tldraw guide at ${AGENT_GUIDE_URLS.tldraw}.`,
|
|
12349
12363
|
inputSchema: {
|
|
12350
12364
|
artifactId: string2().describe("the tldraw Artifact, art_…"),
|
|
12351
12365
|
code: string2().min(1).max(1e5).optional().describe("advanced script source; mutually exclusive with operations"),
|
|
@@ -12928,7 +12942,7 @@ function retentionAction(action) {
|
|
|
12928
12942
|
if (action.name === "artifact") {
|
|
12929
12943
|
return {
|
|
12930
12944
|
...action,
|
|
12931
|
-
description: "Create
|
|
12945
|
+
description: "Create/edit a durable versioned Artifact with bounded full|checkpoint retention or manage its Live Preview/snapshot/attachment surface; promote_attachment creates a separate file Artifact from a source Contribution, while exported reports in an existing baseline Artifact use the Attachment's durable downloadUrl instead of promotion into that artifactId. Content edits return artifactVersionId; byte-identical edits reuse current version, while policy changes/checkpoints preserve content version.",
|
|
12932
12946
|
inputSchema: {
|
|
12933
12947
|
...action.inputSchema,
|
|
12934
12948
|
historyPolicy: historyPolicySchema,
|
|
@@ -14288,7 +14302,7 @@ function bareConnectUrl(apiUrl, returnedUrl) {
|
|
|
14288
14302
|
return fallback;
|
|
14289
14303
|
}
|
|
14290
14304
|
}
|
|
14291
|
-
async function
|
|
14305
|
+
async function connect2(opts) {
|
|
14292
14306
|
if (defaultConfigOverwriteBlocked()) {
|
|
14293
14307
|
throw new Error(DEFAULT_TOKEN_OVERWRITE_REFUSAL);
|
|
14294
14308
|
}
|
|
@@ -14615,7 +14629,7 @@ async function main() {
|
|
|
14615
14629
|
const key = positionals[1];
|
|
14616
14630
|
if (!key)
|
|
14617
14631
|
throw new UsageError("usage: arbor connect <pairing-key> [--url <api-url>]");
|
|
14618
|
-
await
|
|
14632
|
+
await connect2({ pairingKey: key, url: stringFlag(flags.url, "url") });
|
|
14619
14633
|
advise(`
|
|
14620
14634
|
✓ Connected (${getConfigPath()}).
|
|
14621
14635
|
`, ctx);
|
package/package.json
CHANGED