@lambdacurry/arbor 0.24.33 → 0.24.35
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 +196 -24
- package/package.json +1 -1
package/dist/arbor.js
CHANGED
|
@@ -10324,6 +10324,20 @@ var RUN_PROVIDER_LIFECYCLE_PHASES = [
|
|
|
10324
10324
|
"workspace_freeze"
|
|
10325
10325
|
];
|
|
10326
10326
|
var RUN_PROVIDER_LIFECYCLE_PHASE_SET = new Set(RUN_PROVIDER_LIFECYCLE_PHASES);
|
|
10327
|
+
var RUN_RESTORE_PHASE_KEYS = [
|
|
10328
|
+
"verify",
|
|
10329
|
+
"cacheBoot",
|
|
10330
|
+
"cacheReady",
|
|
10331
|
+
"cacheSweep",
|
|
10332
|
+
"proof",
|
|
10333
|
+
"homeReset",
|
|
10334
|
+
"boot",
|
|
10335
|
+
"ready",
|
|
10336
|
+
"sweep",
|
|
10337
|
+
"extract",
|
|
10338
|
+
"chown"
|
|
10339
|
+
];
|
|
10340
|
+
var RUN_RESTORE_PHASE_KEY_SET = new Set(RUN_RESTORE_PHASE_KEYS);
|
|
10327
10341
|
var OWNER_ACTION_EVENT_TYPES = new Set([
|
|
10328
10342
|
"run.started",
|
|
10329
10343
|
"process.starting",
|
|
@@ -10830,6 +10844,14 @@ function buildOutputSchemas() {
|
|
|
10830
10844
|
lastDurableSnapshotId: id.nullable(),
|
|
10831
10845
|
unsavedChanges: literal("not-saved-by-close")
|
|
10832
10846
|
});
|
|
10847
|
+
const runRestoreFacts = looseObject({
|
|
10848
|
+
source: _enum(["native-cache", "durable-r2"]),
|
|
10849
|
+
decision: _enum(["ok", "no_native", "image_mismatch", "too_old"]).nullable().optional(),
|
|
10850
|
+
missPhase: _enum(["boot", "proof", "homeReset"]).nullable().optional(),
|
|
10851
|
+
missErrorType: string2().nullable().optional(),
|
|
10852
|
+
wallMs: number2().int().min(0).optional(),
|
|
10853
|
+
phasesMs: record(string2(), number2().int().min(0)).optional()
|
|
10854
|
+
});
|
|
10833
10855
|
const computerRunReceipt = looseObject({
|
|
10834
10856
|
runId: id,
|
|
10835
10857
|
threadId: id,
|
|
@@ -10917,6 +10939,10 @@ function buildOutputSchemas() {
|
|
|
10917
10939
|
reasonCode: string2().optional()
|
|
10918
10940
|
})),
|
|
10919
10941
|
lifecycle: array(looseObject({ type: string2(), at: string2() })),
|
|
10942
|
+
start: looseObject({
|
|
10943
|
+
admittedMs: number2().nullable(),
|
|
10944
|
+
restore: runRestoreFacts.extend({ observedAt: timestamp, providerGeneration: number2().int().min(0) }).nullable().describe("null means not recorded, never that no restore happened")
|
|
10945
|
+
}).describe("F1 start→admitted milliseconds and the provider's starting-restore facts"),
|
|
10920
10946
|
providerLifecycle: looseObject({
|
|
10921
10947
|
generation: number2().int().min(0).nullable(),
|
|
10922
10948
|
lastPhase: string2().nullable(),
|
|
@@ -10945,7 +10971,8 @@ function buildOutputSchemas() {
|
|
|
10945
10971
|
retryOperation: _enum(["run_terminal_checkpoint", "run_release", "run_checkpoint_publication"]).optional(),
|
|
10946
10972
|
retryAttempts: number2().int().positive().optional(),
|
|
10947
10973
|
retryLastFailedAt: timestamp.optional(),
|
|
10948
|
-
retryNextAttemptAt: timestamp.optional()
|
|
10974
|
+
retryNextAttemptAt: timestamp.optional(),
|
|
10975
|
+
restore: runRestoreFacts.optional()
|
|
10949
10976
|
}))
|
|
10950
10977
|
})
|
|
10951
10978
|
});
|
|
@@ -11437,6 +11464,20 @@ function buildOutputSchemas() {
|
|
|
11437
11464
|
startingSnapshot: snapshot.nullable(),
|
|
11438
11465
|
config: computerConfig
|
|
11439
11466
|
}),
|
|
11467
|
+
computer_topic_base: looseObject({
|
|
11468
|
+
topicId: id,
|
|
11469
|
+
topicBase: looseObject({ id, createdAt: timestamp, contentDigest: string2().nullable() }).nullable(),
|
|
11470
|
+
nativeCache: union([
|
|
11471
|
+
looseObject({
|
|
11472
|
+
state: literal("checked"),
|
|
11473
|
+
native: looseObject({ capturedImage: string2(), capturedAt: timestamp.nullable() }).nullable(),
|
|
11474
|
+
servingImageMatches: boolean2().nullable(),
|
|
11475
|
+
decision: _enum(["ok", "no_native", "image_mismatch", "too_old"]).nullable(),
|
|
11476
|
+
checkedAt: timestamp.nullable()
|
|
11477
|
+
}),
|
|
11478
|
+
looseObject({ state: literal("unavailable") })
|
|
11479
|
+
]).nullable().describe("null when there is no Topic base to check")
|
|
11480
|
+
}),
|
|
11440
11481
|
get_computer: looseObject({
|
|
11441
11482
|
threadId: id,
|
|
11442
11483
|
config: redactedComputerRecipe,
|
|
@@ -11984,6 +12025,46 @@ function buildOutputSchemas() {
|
|
|
11984
12025
|
serializedByteLimit: number2().int().positive()
|
|
11985
12026
|
})
|
|
11986
12027
|
}),
|
|
12028
|
+
presence: discriminatedUnion("status", [
|
|
12029
|
+
object({ status: literal("absent") }).strict(),
|
|
12030
|
+
object({ status: literal("unavailable") }).strict(),
|
|
12031
|
+
looseObject({
|
|
12032
|
+
status: literal("present"),
|
|
12033
|
+
sessions: number2().int().positive(),
|
|
12034
|
+
pageId: string2().nullable(),
|
|
12035
|
+
viewport: jsonObject.nullable(),
|
|
12036
|
+
lastActiveAt: timestamp.nullable(),
|
|
12037
|
+
selection: looseObject({
|
|
12038
|
+
shapeIds: array(string2()),
|
|
12039
|
+
shapes: array(jsonObject),
|
|
12040
|
+
missingShapeIds: array(string2()),
|
|
12041
|
+
clusterIds: array(string2()),
|
|
12042
|
+
bounds: jsonObject.nullable()
|
|
12043
|
+
})
|
|
12044
|
+
})
|
|
12045
|
+
]).optional(),
|
|
12046
|
+
comments: looseObject({
|
|
12047
|
+
items: array(looseObject({
|
|
12048
|
+
contributionId: id,
|
|
12049
|
+
url: string2(),
|
|
12050
|
+
author: jsonObject,
|
|
12051
|
+
createdAt: timestamp,
|
|
12052
|
+
text: string2(),
|
|
12053
|
+
anchor: jsonObject,
|
|
12054
|
+
replyCount: number2().int().nonnegative(),
|
|
12055
|
+
replies: array(jsonObject)
|
|
12056
|
+
})),
|
|
12057
|
+
total: number2().int().nonnegative(),
|
|
12058
|
+
omitted: number2().int().nonnegative()
|
|
12059
|
+
}).optional(),
|
|
12060
|
+
screenshot: looseObject({
|
|
12061
|
+
mimeType: literal("image/png"),
|
|
12062
|
+
width: number2().int().positive(),
|
|
12063
|
+
height: number2().int().positive(),
|
|
12064
|
+
bounds: jsonObject,
|
|
12065
|
+
shapeCount: number2().int().positive(),
|
|
12066
|
+
data: string2().optional()
|
|
12067
|
+
}).optional(),
|
|
11987
12068
|
preview: tldrawLatestPreview
|
|
11988
12069
|
}),
|
|
11989
12070
|
tldraw_exec: looseObject({
|
|
@@ -12975,6 +13056,9 @@ var OUTPUT_SHAPERS = {
|
|
|
12975
13056
|
["documentClock", result.documentClock],
|
|
12976
13057
|
["documentDigest", result.documentDigest],
|
|
12977
13058
|
["scene", result.scene],
|
|
13059
|
+
["presence", result.presence],
|
|
13060
|
+
["comments", result.comments],
|
|
13061
|
+
["screenshot", result.screenshot],
|
|
12978
13062
|
["preview", compactTldrawPreview(result.preview)]
|
|
12979
13063
|
]),
|
|
12980
13064
|
computer_write: (result) => defined([
|
|
@@ -13081,6 +13165,7 @@ var MCP_TOOL_ANNOTATIONS = {
|
|
|
13081
13165
|
set_topic_computer: destructiveIdempotent,
|
|
13082
13166
|
set_thread_computer: destructiveIdempotent,
|
|
13083
13167
|
get_computer: readOnly,
|
|
13168
|
+
computer_topic_base: readOnly,
|
|
13084
13169
|
computer_inventory: readOnly,
|
|
13085
13170
|
computer_audit_access: additive,
|
|
13086
13171
|
transition_thread: additive,
|
|
@@ -13252,12 +13337,37 @@ var shapeId = TLDRAW_SHAPE_ID_SCHEMA.describe("stable tldraw shape id, shape:…
|
|
|
13252
13337
|
var shapeType = _enum(["geo", "text", "note", "frame", "arrow", "line", "draw", "group"]).describe("built-in tldraw shape type; use code mode for custom or asset-backed shapes");
|
|
13253
13338
|
var finite = number2().finite();
|
|
13254
13339
|
var jsonRecord = record(string2(), unknown());
|
|
13340
|
+
var diagramKey = string2().min(1).max(80).describe("caller-meaningful node key; returned as the alias for its generated tldraw shape id");
|
|
13341
|
+
var pageIdFilter = string2().min(1).max(200).describe("optional page id to search");
|
|
13342
|
+
var textRef = object({
|
|
13343
|
+
text: string2().min(1).max(500),
|
|
13344
|
+
match: _enum(["exact", "contains"]).optional().describe("exact (default, case/whitespace-insensitive) or contains"),
|
|
13345
|
+
type: string2().min(1).max(64).optional().describe("optional shape type filter"),
|
|
13346
|
+
pageId: pageIdFilter.optional()
|
|
13347
|
+
}).strict().describe("the one existing shape whose text matches");
|
|
13348
|
+
var descriptionRef = object({ description: string2().min(1).max(200), pageId: pageIdFilter.optional() }).strict().describe(`the one existing shape a description like 'the blue box labelled "API" in the top right' names (quoted label, kind, colour, region are strict filters)`);
|
|
13349
|
+
var selectedRef = object({ selected: literal(true) }).strict().describe("your one currently selected shape in an open board tab");
|
|
13350
|
+
var createdRef = object({
|
|
13351
|
+
created: union([literal("last"), number2().int().min(0).max(TLDRAW_EXEC_MAX_OPERATIONS)])
|
|
13352
|
+
}).strict().describe('a shape created earlier in this batch: "last" or its 0-based create index');
|
|
13353
|
+
var keyRef = object({ key: diagramKey }).strict().describe("a diagram node created earlier in this batch, by its key");
|
|
13354
|
+
var TLDRAW_SHAPE_REF_SCHEMA = union([shapeId, textRef, descriptionRef, selectedRef, createdRef, keyRef]).describe("shape id, or { text } | { description } | { selected: true } | { created } | { key }; resolved before any edit, ambiguity refuses");
|
|
13355
|
+
var shapeRef = TLDRAW_SHAPE_REF_SCHEMA;
|
|
13356
|
+
var selectedAllRef = object({ selected: literal("all") }).strict().describe("every currently selected shape in your open board tab");
|
|
13357
|
+
var shapeRefs = array(union([shapeId, textRef, descriptionRef, selectedRef, createdRef, keyRef, selectedAllRef])).min(1).max(TLDRAW_EXEC_MAX_OPERATIONS);
|
|
13358
|
+
var place = object({
|
|
13359
|
+
relativeTo: shapeRef.describe("the existing or earlier-created shape to place beside"),
|
|
13360
|
+
side: _enum(["right", "left", "above", "below"]),
|
|
13361
|
+
gap: finite.min(0).max(1e4).optional().describe("edge-to-edge gap; defaults to 40"),
|
|
13362
|
+
align: _enum(["start", "center", "end"]).optional().describe("cross-axis alignment with the target; defaults to center")
|
|
13363
|
+
}).strict().describe("place the new shape beside another instead of giving x/y");
|
|
13255
13364
|
var create = object({
|
|
13256
13365
|
op: literal("create"),
|
|
13257
13366
|
id: shapeId,
|
|
13258
13367
|
type: shapeType,
|
|
13259
|
-
x: finite,
|
|
13260
|
-
y: finite,
|
|
13368
|
+
x: finite.optional().describe("page x; omit only when place is given"),
|
|
13369
|
+
y: finite.optional().describe("page y; omit only when place is given"),
|
|
13370
|
+
place: place.optional(),
|
|
13261
13371
|
parentId: string2().min(1).max(200).optional(),
|
|
13262
13372
|
rotation: finite.optional(),
|
|
13263
13373
|
opacity: finite.min(0).max(1).optional(),
|
|
@@ -13267,8 +13377,8 @@ var create = object({
|
|
|
13267
13377
|
}).strict();
|
|
13268
13378
|
var update = object({
|
|
13269
13379
|
op: literal("update"),
|
|
13270
|
-
id:
|
|
13271
|
-
type: shapeType,
|
|
13380
|
+
id: shapeRef,
|
|
13381
|
+
type: shapeType.optional().describe("optional; read from the resolved shape when omitted"),
|
|
13272
13382
|
x: finite.optional(),
|
|
13273
13383
|
y: finite.optional(),
|
|
13274
13384
|
parentId: string2().min(1).max(200).optional(),
|
|
@@ -13278,20 +13388,18 @@ var update = object({
|
|
|
13278
13388
|
props: jsonRecord.optional().describe("partial shape properties"),
|
|
13279
13389
|
meta: jsonRecord.optional()
|
|
13280
13390
|
}).strict();
|
|
13281
|
-
var shapeIds = array(shapeId).min(1).max(TLDRAW_EXEC_MAX_OPERATIONS);
|
|
13282
|
-
var diagramKey = string2().min(1).max(80).describe("caller-meaningful node key; returned as the alias for its generated tldraw shape id");
|
|
13283
13391
|
var diagramLabel = string2().min(1).max(160);
|
|
13284
13392
|
var stack = object({
|
|
13285
13393
|
op: literal("stack"),
|
|
13286
|
-
ids:
|
|
13394
|
+
ids: shapeRefs.describe("shapes in the exact stack order; the first is the anchor (at least 2)"),
|
|
13287
13395
|
axis: _enum(["horizontal", "vertical"]),
|
|
13288
13396
|
gap: finite.min(0).describe("required edge-to-edge gap between adjacent shapes"),
|
|
13289
13397
|
alignment: _enum(["start", "center", "end"]).optional().describe("optional cross-axis alignment relative to the first shape")
|
|
13290
13398
|
}).strict();
|
|
13291
13399
|
var connect = object({
|
|
13292
13400
|
op: literal("connect"),
|
|
13293
|
-
sourceId:
|
|
13294
|
-
targetId:
|
|
13401
|
+
sourceId: shapeRef.describe("existing native shape to bind the arrow start to"),
|
|
13402
|
+
targetId: shapeRef.describe("existing native shape to bind the arrow end to")
|
|
13295
13403
|
}).strict();
|
|
13296
13404
|
var diagram = object({
|
|
13297
13405
|
op: literal("diagram"),
|
|
@@ -13309,26 +13417,32 @@ var diagram = object({
|
|
|
13309
13417
|
var TLDRAW_EXEC_OPERATION_SCHEMA = discriminatedUnion("op", [
|
|
13310
13418
|
create,
|
|
13311
13419
|
update,
|
|
13312
|
-
object({ op: literal("delete"), ids:
|
|
13420
|
+
object({ op: literal("delete"), ids: shapeRefs }).strict(),
|
|
13313
13421
|
object({
|
|
13314
13422
|
op: literal("align"),
|
|
13315
|
-
ids:
|
|
13423
|
+
ids: shapeRefs.describe("at least 2 shapes"),
|
|
13316
13424
|
alignment: _enum(["bottom", "center-horizontal", "center-vertical", "left", "right", "top"])
|
|
13317
13425
|
}).strict(),
|
|
13318
13426
|
object({
|
|
13319
13427
|
op: literal("distribute"),
|
|
13320
|
-
ids:
|
|
13428
|
+
ids: shapeRefs.describe("at least 3 shapes"),
|
|
13321
13429
|
axis: _enum(["horizontal", "vertical"])
|
|
13322
13430
|
}).strict(),
|
|
13323
13431
|
object({
|
|
13324
13432
|
op: literal("group"),
|
|
13325
|
-
ids:
|
|
13433
|
+
ids: shapeRefs.describe("at least 2 shapes"),
|
|
13326
13434
|
groupId: shapeId.optional()
|
|
13327
13435
|
}).strict(),
|
|
13328
13436
|
stack,
|
|
13329
13437
|
connect,
|
|
13330
13438
|
diagram
|
|
13331
13439
|
]);
|
|
13440
|
+
var MIN_REFERENCE_COUNT = {
|
|
13441
|
+
align: 2,
|
|
13442
|
+
distribute: 3,
|
|
13443
|
+
group: 2,
|
|
13444
|
+
stack: 2
|
|
13445
|
+
};
|
|
13332
13446
|
var TLDRAW_EXEC_OPERATIONS_SCHEMA = array(TLDRAW_EXEC_OPERATION_SCHEMA).min(1).max(TLDRAW_EXEC_MAX_OPERATIONS).superRefine((operations, ctx) => {
|
|
13333
13447
|
const createdIds = new Set;
|
|
13334
13448
|
const diagramKeys = new Set;
|
|
@@ -13345,20 +13459,43 @@ var TLDRAW_EXEC_OPERATIONS_SCHEMA = array(TLDRAW_EXEC_OPERATION_SCHEMA).min(1).m
|
|
|
13345
13459
|
}
|
|
13346
13460
|
createdIds.add(operation.id);
|
|
13347
13461
|
}
|
|
13462
|
+
if (operation.op === "create") {
|
|
13463
|
+
const hasPoint = operation.x !== undefined || operation.y !== undefined;
|
|
13464
|
+
if (operation.place ? hasPoint : operation.x === undefined || operation.y === undefined) {
|
|
13465
|
+
ctx.addIssue({
|
|
13466
|
+
code: "custom",
|
|
13467
|
+
message: "create needs both x and y, or place instead of x/y",
|
|
13468
|
+
path: [index, operation.place ? "place" : "x"]
|
|
13469
|
+
});
|
|
13470
|
+
}
|
|
13471
|
+
}
|
|
13348
13472
|
if ("ids" in operation) {
|
|
13349
13473
|
const seen = new Set;
|
|
13350
13474
|
operation.ids.forEach((id, idIndex) => {
|
|
13351
|
-
|
|
13475
|
+
const key = typeof id === "string" ? id : JSON.stringify(id);
|
|
13476
|
+
if (seen.has(key)) {
|
|
13352
13477
|
ctx.addIssue({
|
|
13353
13478
|
code: "custom",
|
|
13354
|
-
message: `duplicate shape
|
|
13479
|
+
message: `duplicate shape reference: ${key}`,
|
|
13355
13480
|
path: [index, "ids", idIndex]
|
|
13356
13481
|
});
|
|
13357
13482
|
}
|
|
13358
|
-
seen.add(
|
|
13483
|
+
seen.add(key);
|
|
13359
13484
|
});
|
|
13485
|
+
const minimum = MIN_REFERENCE_COUNT[operation.op] ?? 1;
|
|
13486
|
+
const expands = operation.ids.some((id) => typeof id === "object" && ("selected" in id) && id.selected === "all");
|
|
13487
|
+
if (!expands && operation.ids.length < minimum) {
|
|
13488
|
+
ctx.addIssue({
|
|
13489
|
+
code: "too_small",
|
|
13490
|
+
origin: "array",
|
|
13491
|
+
minimum,
|
|
13492
|
+
inclusive: true,
|
|
13493
|
+
message: `${operation.op} needs at least ${minimum} shapes`,
|
|
13494
|
+
path: [index, "ids"]
|
|
13495
|
+
});
|
|
13496
|
+
}
|
|
13360
13497
|
}
|
|
13361
|
-
if (operation.op === "connect" && operation.sourceId === operation.targetId) {
|
|
13498
|
+
if (operation.op === "connect" && canonicalJson(operation.sourceId) === canonicalJson(operation.targetId)) {
|
|
13362
13499
|
ctx.addIssue({
|
|
13363
13500
|
code: "custom",
|
|
13364
13501
|
message: "connect self-loops are not supported",
|
|
@@ -13422,6 +13559,16 @@ var TLDRAW_EXEC_OPERATIONS_SCHEMA = array(TLDRAW_EXEC_OPERATION_SCHEMA).min(1).m
|
|
|
13422
13559
|
}
|
|
13423
13560
|
});
|
|
13424
13561
|
}).describe("preferred declarative edits, applied in order; mutually exclusive with code");
|
|
13562
|
+
function canonicalJson(value) {
|
|
13563
|
+
if (Array.isArray(value)) {
|
|
13564
|
+
return `[${value.map((item) => item === undefined ? "null" : canonicalJson(item)).join(",")}]`;
|
|
13565
|
+
}
|
|
13566
|
+
if (value && typeof value === "object") {
|
|
13567
|
+
const entries = Object.entries(value).filter(([, item]) => item !== undefined).sort(([a], [b]) => a.localeCompare(b));
|
|
13568
|
+
return `{${entries.map(([key, item]) => `${JSON.stringify(key)}:${canonicalJson(item)}`).join(",")}}`;
|
|
13569
|
+
}
|
|
13570
|
+
return JSON.stringify(value) ?? "null";
|
|
13571
|
+
}
|
|
13425
13572
|
// ../actions/src/index.ts
|
|
13426
13573
|
var ARTIFACT_TYPE_DESCRIPTION = `semantic type (one of: ${ARTIFACT_TYPES.join(", ")})`;
|
|
13427
13574
|
var ARBOR_FEEDBACK_INPUT_TYPES = [...ARBOR_FEEDBACK_TYPES, "friction"];
|
|
@@ -14064,7 +14211,14 @@ var ACTION_DEFINITIONS = [
|
|
|
14064
14211
|
id: string2(),
|
|
14065
14212
|
label: string2()
|
|
14066
14213
|
})).optional().describe("inline @-mentions in the body; person mentions notify"),
|
|
14067
|
-
links: array(object({ rel: _enum(CONTRIBUTION_ADD_LINK_RELS), targetId: string2() })).optional().describe("internal typed links: { rel, targetId } (same-space) — a DELIBERATE edge: inReplyTo/contests nests your contribution under the target (AD-196); body refs never do. External refs go IN THE BODY as URLs.")
|
|
14214
|
+
links: array(object({ rel: _enum(CONTRIBUTION_ADD_LINK_RELS), targetId: string2() })).optional().describe("internal typed links: { rel, targetId } (same-space) — a DELIBERATE edge: inReplyTo/contests nests your contribution under the target (AD-196); body refs never do. External refs go IN THE BODY as URLs."),
|
|
14215
|
+
anchor: object({
|
|
14216
|
+
artifactId: string2().describe("a tldraw board whose source Thread is this Thread"),
|
|
14217
|
+
shapeId: TLDRAW_SHAPE_ID_SCHEMA.optional(),
|
|
14218
|
+
pageId: string2().min(1).max(200).optional(),
|
|
14219
|
+
x: number2().finite().optional(),
|
|
14220
|
+
y: number2().finite().optional()
|
|
14221
|
+
}).strict().optional().describe("pin this contribution to a board as a comment: shapeId, or pageId + x/y page point; reply to one with links inReplyTo")
|
|
14068
14222
|
},
|
|
14069
14223
|
surfaces: ["mcp", "cli"],
|
|
14070
14224
|
toolset: "loop",
|
|
@@ -14503,7 +14657,7 @@ var ACTION_DEFINITIONS = [
|
|
|
14503
14657
|
{
|
|
14504
14658
|
name: "computer_run_receipt",
|
|
14505
14659
|
title: "Read a run receipt",
|
|
14506
|
-
description: "Read pending admission, finish continuation, Run-owned operation/activity state, and
|
|
14660
|
+
description: "Read pending admission, finish continuation, Run-owned operation/activity state, providerLifecycle, and the start facts with exactly one of runId or runStartId instead of parent computer_status. This read drives nothing; setupReadiness is not an instruction to reinstall: run computer_run_setup when the task needs a prepared workspace, then save work outside the temporary Computer before finishing.",
|
|
14507
14661
|
inputSchema: {
|
|
14508
14662
|
runId: string2().optional().describe("the Run to read, run_…; provide exactly one of runId or runStartId"),
|
|
14509
14663
|
runStartId: string2().optional().describe("the pending or linked RunStart to read, rsr_…; alternative to runId")
|
|
@@ -14947,6 +15101,17 @@ var ACTION_DEFINITIONS = [
|
|
|
14947
15101
|
toolset: "loop",
|
|
14948
15102
|
run: forward("computer.get")
|
|
14949
15103
|
},
|
|
15104
|
+
{
|
|
15105
|
+
name: "computer_topic_base",
|
|
15106
|
+
title: "Check a Topic base's native cache",
|
|
15107
|
+
description: "Read this Topic's current base and, live from Currybox control, its captured image and time, whether the serving image still matches, and the native-cache decision Runs will get. One read when asked: it never recaptures, retires, starts, or caches anything; nativeCache.state=unavailable means control could not answer, and a null topicBase means no base exists yet.",
|
|
15108
|
+
inputSchema: {
|
|
15109
|
+
topicId: string2().describe("the Topic, top_…")
|
|
15110
|
+
},
|
|
15111
|
+
surfaces: ["computer-mcp", "computer-cli"],
|
|
15112
|
+
toolset: "loop",
|
|
15113
|
+
run: forward("computer.topic_base")
|
|
15114
|
+
},
|
|
14950
15115
|
{
|
|
14951
15116
|
name: "computer_audit_access",
|
|
14952
15117
|
title: "Issue a Computer audit grant",
|
|
@@ -16239,7 +16404,7 @@ var ACTION_DEFINITIONS = [
|
|
|
16239
16404
|
{
|
|
16240
16405
|
name: "tldraw_observe",
|
|
16241
16406
|
title: "Observe a tldraw board",
|
|
16242
|
-
description: `Read bounded scene/clock/digest/lint, scoped by
|
|
16407
|
+
description: `Read bounded scene/clock/digest/lint with labelled clusters, your own open tab's presence, and anchored comments, scoped by ids, region, or clusterIds; screenshot renders just the scope inline; preview ensure reuses/renders the board PNG (renderInProgress: retry shortly). Preview is links-only; signedRead is 5-min, never for posts; guide: ${AGENT_GUIDE_URLS.tldraw}.`,
|
|
16243
16408
|
inputSchema: {
|
|
16244
16409
|
artifactId: string2().describe("the tldraw Artifact, art_…"),
|
|
16245
16410
|
pageId: string2().min(1).max(200).optional().describe("optional page to observe"),
|
|
@@ -16250,6 +16415,13 @@ var ACTION_DEFINITIONS = [
|
|
|
16250
16415
|
width: number2().finite().positive(),
|
|
16251
16416
|
height: number2().finite().positive()
|
|
16252
16417
|
}).optional().describe("optional page-coordinate rectangle; returns shapes whose page bounds intersect it, and combines with ids by intersection"),
|
|
16418
|
+
clusterIds: array(string2().regex(/^cluster:[0-9a-z]{1,13}(?:-\d{1,4})?$/)).min(1).max(50).refine((values) => new Set(values).size === values.length, "cluster ids must be unique").optional().describe("drill into these clusters from a prior observe (ids change when their shapes do); intersects with ids/region"),
|
|
16419
|
+
clusterCursor: string2().max(32).optional().describe("continue the cluster listing from a prior observe's scene.nextClusterCursor"),
|
|
16420
|
+
view: _enum(["full", "clusters"]).optional().describe("full (default) returns shapes; clusters returns only the cluster overview"),
|
|
16421
|
+
screenshot: object({
|
|
16422
|
+
maxWidth: number2().int().min(64).max(1536).optional(),
|
|
16423
|
+
maxHeight: number2().int().min(64).max(1536).optional()
|
|
16424
|
+
}).strict().optional().describe("render only the observed scope (clusterIds/ids/region, else the page) as a PNG fitting maxWidth×maxHeight (default 768); returned as image content"),
|
|
16253
16425
|
viewportWidth: number2().int().min(320).max(1920).optional(),
|
|
16254
16426
|
viewportHeight: number2().int().min(240).max(1080).optional(),
|
|
16255
16427
|
preview: _enum(["metadata", "ensure"]).optional().describe("preview behavior; defaults to metadata, while ensure explicitly refreshes only when stale/missing")
|
|
@@ -16261,7 +16433,7 @@ var ACTION_DEFINITIONS = [
|
|
|
16261
16433
|
{
|
|
16262
16434
|
name: "tldraw_exec",
|
|
16263
16435
|
title: "Run a one-shot tldraw program",
|
|
16264
|
-
description: `Modify the
|
|
16436
|
+
description: `Modify the live tldraw board with preferred declarative operations or bounded JavaScript (diagram layout, exact-gap stack, native bound connect, create place); operations take shape ids or { text | description | selected | created | key } references resolved before any edit, and ambiguity refuses the batch. Returns a durable receipt; reacquire this schema after compaction and never replay an unknown result; first use: read the tldraw guide at ${AGENT_GUIDE_URLS.tldraw}.`,
|
|
16265
16437
|
inputSchema: {
|
|
16266
16438
|
artifactId: string2().describe("the tldraw Artifact, art_…"),
|
|
16267
16439
|
code: string2().min(1).max(1e5).optional().describe("advanced script source; mutually exclusive with operations"),
|
|
@@ -16788,7 +16960,7 @@ var ACTIONS = ACTION_DEFINITIONS.map((action) => {
|
|
|
16788
16960
|
});
|
|
16789
16961
|
|
|
16790
16962
|
// ../actions/src/retention-entry.ts
|
|
16791
|
-
var ARBOR_VERSION = "0.24.
|
|
16963
|
+
var ARBOR_VERSION = "0.24.35";
|
|
16792
16964
|
var historyPolicySchema = _enum(["full", "checkpoint"]).optional().describe("text Artifacts: future history retention policy; full retains every source snapshot, checkpoint keeps metadata for every revision and source only when explicitly retained");
|
|
16793
16965
|
var retainSourceSchema = boolean2().optional().describe("edit: in checkpoint mode, retain this newly minted content revision's source");
|
|
16794
16966
|
var checkpointSchema = boolean2().optional().describe("edit: retain the exact current version source without incrementing content version");
|
|
@@ -17196,7 +17368,7 @@ function dispositionFilename(value) {
|
|
|
17196
17368
|
// package.json
|
|
17197
17369
|
var package_default = {
|
|
17198
17370
|
name: "@lambdacurry/arbor",
|
|
17199
|
-
version: "0.24.
|
|
17371
|
+
version: "0.24.35",
|
|
17200
17372
|
description: "The Arbor CLI — a shared workspace for people and agents. The human + headless-agent write path over Arbor's guarded operation surface.",
|
|
17201
17373
|
keywords: [
|
|
17202
17374
|
"agents",
|
package/package.json
CHANGED