@lambdacurry/arbor 0.22.14 → 0.22.16
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 +128 -32
- 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.16",
|
|
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",
|
|
@@ -4911,6 +4911,16 @@ function json(params) {
|
|
|
4911
4911
|
// ../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/external.js
|
|
4912
4912
|
config(en_default());
|
|
4913
4913
|
// ../core/src/objects/types.ts
|
|
4914
|
+
var IDENTITY_COLORS = [
|
|
4915
|
+
"indigo",
|
|
4916
|
+
"teal",
|
|
4917
|
+
"terracotta",
|
|
4918
|
+
"plum",
|
|
4919
|
+
"steel",
|
|
4920
|
+
"olive",
|
|
4921
|
+
"rose",
|
|
4922
|
+
"cyan"
|
|
4923
|
+
];
|
|
4914
4924
|
var CONTRIBUTION_TYPES = [
|
|
4915
4925
|
"comment",
|
|
4916
4926
|
"question",
|
|
@@ -8300,6 +8310,37 @@ var paged = (key, item) => looseObject({
|
|
|
8300
8310
|
total: number2().optional(),
|
|
8301
8311
|
nextCursor: string2().optional()
|
|
8302
8312
|
});
|
|
8313
|
+
var tldrawDocumentVersionRef = object({
|
|
8314
|
+
artifactId: id,
|
|
8315
|
+
artifactVersionId: id,
|
|
8316
|
+
version: number2().int().min(1),
|
|
8317
|
+
sourceAttachmentId: id,
|
|
8318
|
+
sourceSha256: string2(),
|
|
8319
|
+
documentClock: number2().int().min(0),
|
|
8320
|
+
byteLength: number2().int().min(0)
|
|
8321
|
+
});
|
|
8322
|
+
var tldrawScriptAttempt = object({
|
|
8323
|
+
revision: number2().int().min(0),
|
|
8324
|
+
version: number2().int().min(1),
|
|
8325
|
+
digest: string2(),
|
|
8326
|
+
at: timestamp
|
|
8327
|
+
});
|
|
8328
|
+
var tldrawDesiredScript = object({
|
|
8329
|
+
revision: number2().int().min(0),
|
|
8330
|
+
version: number2().int().min(1),
|
|
8331
|
+
digest: string2(),
|
|
8332
|
+
approved: boolean2()
|
|
8333
|
+
}).nullable();
|
|
8334
|
+
var tldrawSessionScriptStatus = object({
|
|
8335
|
+
sessionId: string2(),
|
|
8336
|
+
profileId: id,
|
|
8337
|
+
displayName: string2(),
|
|
8338
|
+
connectedAt: timestamp,
|
|
8339
|
+
desired: tldrawDesiredScript,
|
|
8340
|
+
attempted: tldrawScriptAttempt.nullable(),
|
|
8341
|
+
lastSuccessful: tldrawScriptAttempt.nullable(),
|
|
8342
|
+
error: tldrawScriptAttempt.extend({ code: string2(), message: string2() }).nullable()
|
|
8343
|
+
});
|
|
8303
8344
|
var MCP_OUTPUT_SCHEMAS = {
|
|
8304
8345
|
server_info: looseObject({
|
|
8305
8346
|
serverVersion: string2(),
|
|
@@ -8382,13 +8423,13 @@ var MCP_OUTPUT_SCHEMAS = {
|
|
|
8382
8423
|
reacted: boolean2(),
|
|
8383
8424
|
reactions: array(reactionCount)
|
|
8384
8425
|
}),
|
|
8385
|
-
create_topic: looseObject({ topicId: id }),
|
|
8426
|
+
create_topic: looseObject({ topicId: id, url: string2().optional() }),
|
|
8386
8427
|
topic_update: looseObject({
|
|
8387
8428
|
id,
|
|
8388
8429
|
title: string2().optional(),
|
|
8389
8430
|
purpose: nullableString.optional()
|
|
8390
8431
|
}),
|
|
8391
|
-
create_thread: looseObject({ threadId: id }),
|
|
8432
|
+
create_thread: looseObject({ threadId: id, url: string2().optional() }),
|
|
8392
8433
|
thread_update: looseObject({
|
|
8393
8434
|
id,
|
|
8394
8435
|
title: string2().optional(),
|
|
@@ -8684,6 +8725,7 @@ var MCP_OUTPUT_SCHEMAS = {
|
|
|
8684
8725
|
artifact_get: object({
|
|
8685
8726
|
id,
|
|
8686
8727
|
title: string2(),
|
|
8728
|
+
url: string2().optional(),
|
|
8687
8729
|
kind: string2(),
|
|
8688
8730
|
version: number2().int().nonnegative(),
|
|
8689
8731
|
lineCount: number2().int().nonnegative(),
|
|
@@ -8695,6 +8737,16 @@ var MCP_OUTPUT_SCHEMAS = {
|
|
|
8695
8737
|
nextLine: number2().int().min(1).nullable().optional(),
|
|
8696
8738
|
totalLines: number2().int().nonnegative().optional()
|
|
8697
8739
|
}),
|
|
8740
|
+
tldraw_create: looseObject({
|
|
8741
|
+
artifactId: id,
|
|
8742
|
+
artifactVersionId: id,
|
|
8743
|
+
version: number2().int().min(1),
|
|
8744
|
+
sourceAttachmentId: id,
|
|
8745
|
+
sourceSha256: string2(),
|
|
8746
|
+
documentClock: number2().int().min(0),
|
|
8747
|
+
replayed: boolean2(),
|
|
8748
|
+
url: string2().optional()
|
|
8749
|
+
}),
|
|
8698
8750
|
tldraw_import: looseObject({
|
|
8699
8751
|
artifactId: id,
|
|
8700
8752
|
artifactVersionId: id,
|
|
@@ -8717,7 +8769,8 @@ var MCP_OUTPUT_SCHEMAS = {
|
|
|
8717
8769
|
source: jsonObject,
|
|
8718
8770
|
current: jsonObject,
|
|
8719
8771
|
versionRefs: array(jsonObject),
|
|
8720
|
-
script: jsonObject
|
|
8772
|
+
script: jsonObject,
|
|
8773
|
+
url: string2().optional()
|
|
8721
8774
|
}),
|
|
8722
8775
|
tldraw_workbench: looseObject({
|
|
8723
8776
|
artifactId: id,
|
|
@@ -8730,10 +8783,36 @@ var MCP_OUTPUT_SCHEMAS = {
|
|
|
8730
8783
|
}),
|
|
8731
8784
|
manifest: jsonObject
|
|
8732
8785
|
}),
|
|
8733
|
-
tldraw_status:
|
|
8786
|
+
tldraw_status: object({
|
|
8734
8787
|
artifactId: id,
|
|
8735
|
-
room:
|
|
8736
|
-
|
|
8788
|
+
room: object({
|
|
8789
|
+
roomGeneration: number2().int().min(1),
|
|
8790
|
+
instanceId: string2(),
|
|
8791
|
+
instanceStartedAt: timestamp,
|
|
8792
|
+
documentClock: number2().int().min(0),
|
|
8793
|
+
documentSha256: string2(),
|
|
8794
|
+
recordCount: number2().int().min(0),
|
|
8795
|
+
databaseSizeBytes: number2().int().min(0),
|
|
8796
|
+
connectedSessions: number2().int().min(0),
|
|
8797
|
+
resumedSessions: number2().int().min(0),
|
|
8798
|
+
dirtySince: timestamp.nullable(),
|
|
8799
|
+
lastMutationProfileId: id.nullable(),
|
|
8800
|
+
lastCheckpoint: tldrawDocumentVersionRef.nullable(),
|
|
8801
|
+
lastCheckpointError: object({ code: string2(), message: string2(), at: timestamp }).nullable(),
|
|
8802
|
+
autosave: object({
|
|
8803
|
+
createdVersions: number2().int().min(0),
|
|
8804
|
+
uploadedBytes: number2().int().min(0),
|
|
8805
|
+
retryCount: number2().int().min(0)
|
|
8806
|
+
})
|
|
8807
|
+
}),
|
|
8808
|
+
script: object({
|
|
8809
|
+
artifactId: id,
|
|
8810
|
+
revision: number2().int().min(0),
|
|
8811
|
+
status: _enum(["absent", "approval-required", "enabled", "disabled"]),
|
|
8812
|
+
source: jsonObject.nullable(),
|
|
8813
|
+
approval: jsonObject.nullable(),
|
|
8814
|
+
sessions: array(tldrawSessionScriptStatus)
|
|
8815
|
+
})
|
|
8737
8816
|
}),
|
|
8738
8817
|
tldraw_checkpoint: looseObject({
|
|
8739
8818
|
artifactId: id,
|
|
@@ -9154,7 +9233,7 @@ var MCP_OUTPUT_SCHEMAS = {
|
|
|
9154
9233
|
recovery: object({
|
|
9155
9234
|
state: literal("execution-unavailable"),
|
|
9156
9235
|
reasonCode: _enum(["execution_session_unavailable", "provider_timeout"]),
|
|
9157
|
-
nextAction: literal("
|
|
9236
|
+
nextAction: literal("computer_run_start")
|
|
9158
9237
|
}).optional(),
|
|
9159
9238
|
agentBrief: computerAgentBrief,
|
|
9160
9239
|
runtime: jsonObject
|
|
@@ -9302,8 +9381,14 @@ var OUTPUT_SHAPERS = {
|
|
|
9302
9381
|
["reacted", result.reacted],
|
|
9303
9382
|
["reactions", result.reactions]
|
|
9304
9383
|
]),
|
|
9305
|
-
create_topic: (result) => defined([
|
|
9306
|
-
|
|
9384
|
+
create_topic: (result) => defined([
|
|
9385
|
+
["topicId", result.id],
|
|
9386
|
+
["url", result.url]
|
|
9387
|
+
]),
|
|
9388
|
+
create_thread: (result) => defined([
|
|
9389
|
+
["threadId", result.id],
|
|
9390
|
+
["url", result.url]
|
|
9391
|
+
]),
|
|
9307
9392
|
space_create: (result) => defined([
|
|
9308
9393
|
["spaceId", result.id],
|
|
9309
9394
|
["visibility", result.visibility]
|
|
@@ -9582,7 +9667,6 @@ var MCP_TOOL_ANNOTATIONS = {
|
|
|
9582
9667
|
set_space_computer: destructiveIdempotent,
|
|
9583
9668
|
set_topic_computer: destructiveIdempotent,
|
|
9584
9669
|
set_thread_computer: destructiveIdempotent,
|
|
9585
|
-
attach_computer: additive,
|
|
9586
9670
|
get_computer: readOnly,
|
|
9587
9671
|
computer_inventory: readOnly,
|
|
9588
9672
|
transition_thread: additive,
|
|
@@ -9618,6 +9702,7 @@ var MCP_TOOL_ANNOTATIONS = {
|
|
|
9618
9702
|
curation: additive,
|
|
9619
9703
|
artifact: additive,
|
|
9620
9704
|
artifact_get: readOnly,
|
|
9705
|
+
tldraw_create: idempotent,
|
|
9621
9706
|
tldraw_import: idempotent,
|
|
9622
9707
|
tldraw_get: readOnly,
|
|
9623
9708
|
tldraw_workbench: destructive,
|
|
@@ -9652,9 +9737,8 @@ var MCP_TOOL_ANNOTATIONS = {
|
|
|
9652
9737
|
github_repositories: readOnly,
|
|
9653
9738
|
github_refresh_installation: openWorld,
|
|
9654
9739
|
github_connect_repository: idempotent,
|
|
9655
|
-
computer_open: additive,
|
|
9656
9740
|
computer_reprovision: destructiveIdempotent,
|
|
9657
|
-
computer_run_start:
|
|
9741
|
+
computer_run_start: idempotent,
|
|
9658
9742
|
computer_run_suspend: idempotent,
|
|
9659
9743
|
computer_repo_work_status: readOnly,
|
|
9660
9744
|
computer_run_finish: idempotent,
|
|
@@ -9672,10 +9756,8 @@ var MCP_TOOL_ANNOTATIONS = {
|
|
|
9672
9756
|
computer_verify: openWorld,
|
|
9673
9757
|
computer_export: idempotent,
|
|
9674
9758
|
computer_write: destructive,
|
|
9675
|
-
computer_checkpoint: additive,
|
|
9676
9759
|
computer_publish_preview: idempotent,
|
|
9677
|
-
computer_publish_app_bundle: idempotent
|
|
9678
|
-
computer_stop: additive
|
|
9760
|
+
computer_publish_app_bundle: idempotent
|
|
9679
9761
|
};
|
|
9680
9762
|
function mcpAnnotationsFor(name) {
|
|
9681
9763
|
const annotations = MCP_TOOL_ANNOTATIONS[name];
|
|
@@ -9848,10 +9930,10 @@ Arbor Computer is the complete software execution platform attached to Arbor's d
|
|
|
9848
9930
|
|
|
9849
9931
|
${ARBOR_FEEDBACK_GUIDANCE}
|
|
9850
9932
|
|
|
9851
|
-
1. ORIENT, CONFIGURE, AND AUTHORIZE. Start with provider-free get_computer(threadId) to inspect the effective inherited recipe, repository authorization, compatibility, recoverySafety, and durable lineage without contacting execution. Use set_organization_computer, set_space_computer, set_topic_computer, or set_thread_computer only when the corresponding complete sparse layer must be replaced; use github_repositories then github_connect_repository to authorize repositories at the narrowest scope that should inherit them. If github_repositories looks stale, github_refresh_installation reconciles the cached inventory from GitHub. computer_run_start(threadId, mode) is the front door: it attaches durable identity itself and starts an isolated write Run from the Thread's base snapshot without booting the parent
|
|
9933
|
+
1. ORIENT, CONFIGURE, AND AUTHORIZE. Start with provider-free get_computer(threadId) to inspect the effective inherited recipe, repository authorization, compatibility, recoverySafety, and durable lineage without contacting execution. Use set_organization_computer, set_space_computer, set_topic_computer, or set_thread_computer only when the corresponding complete sparse layer must be replaced; use github_repositories then github_connect_repository to authorize repositories at the narrowest scope that should inherit them. If github_repositories looks stale, github_refresh_installation reconciles the cached inventory from GitHub. computer_run_start(threadId, mode) is the front door: it attaches durable identity itself and starts an isolated write Run from the Thread's base snapshot without booting the parent. Each returned repository entry includes verified root instruction pointers when that repo has an AGENTS.md: read surfaced repository instructions before substantial edits or verification, then check for a nearer nested AGENTS.md once the target path is known. Repo-local instructions/scripts/config beat guessed formatter, test, lint, or build commands.
|
|
9852
9934
|
2. READ THE CAPABILITIES CARD, NOT THE BACKEND. runId is the one address: every runtime tool takes it, and the computerSessionId a Run carries is legacy input. computer_status(runId) describes the live PARENT Thread Computer behind a shared Run; it does not establish isolated Run activity, so use computer_run_receipt(runId) and computer_process_read for Run-owned work. Command-line utilities, including Git and package managers, run through computer_exec; check unfamiliar binaries with command -v.
|
|
9853
9935
|
3. ONE RUN PER TASK. A write Run defaults to an isolated execution environment with its own filesystem, processes, ports, and /tmp while preserving /workspace paths; a read Run shares the parent. Pass runId to Run-aware tools. If a response is lost, recover the durable operation/process identity from computer_run_receipt and read it before retrying. computer_process_read and computer_process_terminate settle a provider-absent current-generation process from exact evidence; computer_run_suspend performs that bounded settlement internally and never replays unknown work. A still-active process returns a retryable busy state; an unknown current-generation mutation fail-closes. An isolated local commit or Preview is not Git publication; push coherent work and prove it with computer_repo_work_status before computer_run_finish destroys the final placement. discard=true with outcome failed or cancelled is the explicit choice to abandon unknown or proven non-durable work without replaying it.
|
|
9854
|
-
4. CHECKPOINT COMPLETE UNITS THROUGH THE RUN. computer_run_suspend(runId) checkpoints an intermediate complete unit — an isolated Run publishes its exact workspace and releases its Sandbox, a shared Run advances the parent lineage — and computer_run_finish(runId) makes the final one; finishing the last active shared Run also stops the parent.
|
|
9936
|
+
4. CHECKPOINT COMPLETE UNITS THROUGH THE RUN. computer_run_suspend(runId) checkpoints an intermediate complete unit — an isolated Run publishes its exact workspace and releases its Sandbox, a shared Run advances the parent lineage — and computer_run_finish(runId) makes the final one; finishing the last active shared Run also stops the parent. An isolated Run Preview is durable review output, not adoption or a checkpoint. The internal provider-handle publication operations are not agent tools.
|
|
9855
9937
|
5. GIT AND GITHUB ARE ORDINARY COMMANDS AFTER AUTHORIZATION. Clone, fetch, pull, push, and gh run through computer_exec using a connected human's just-in-time ambient GitHub identity. Credentials never enter argv, workspace files, Git config, checkpoints, Events, logs, or receipts. A restored Computer deliberately keeps the checkout age of its snapshot, so fetch/pull before trusting remote state.
|
|
9856
9938
|
6. VERIFY, PREVIEW, AND EXPORT. computer_verify captures a public URL directly without opening a project runtime. computer_publish_preview preserves immutable static output from either the parent or an active isolated write Run. computer_export moves bounded files into durable Thread Attachments; for a computer:// file Artifact asleep face, export the exact locator path .tldr and a same-Thread PNG, then use artifact set_snapshot. computer_export itself does not call set_snapshot; place returned Markdown exactly where the media belongs and cite the matching attachment ids.
|
|
9857
9939
|
7. PACKAGE, DEPLOY, ACTIVATE, AND OPERATE APPS HERE. computer_publish_app_bundle creates the immutable executable bundle from verified parent bytes through a shared write Run: push isolated work, computer_run_start with execution shared, pull, then publish. For short-lived public Artifact experiments use preview_app_create/get/retire; for published Space Apps use app_create, app_config_apply, app_deploy, app_deployment_get, app_activate, app_get, app_fetch/app_request, app_rollback, app_set_access, app_reset_state/app_restore_state, and app_archive as one workflow-closed release surface. First-class Organization/Profile Secrets remain on Arbor's collaboration MCP because they are broader identity-owned resources; App configuration here references existing Secret ids and never accepts or returns secret material.
|
|
@@ -10551,7 +10633,7 @@ var ACTION_DEFINITIONS = [
|
|
|
10551
10633
|
inputSchema: {
|
|
10552
10634
|
threadId: string2().describe("the Thread whose computer you are attaching, thr_…")
|
|
10553
10635
|
},
|
|
10554
|
-
surfaces: ["
|
|
10636
|
+
surfaces: ["cli"],
|
|
10555
10637
|
toolset: "loop",
|
|
10556
10638
|
run: forward("computer.attach")
|
|
10557
10639
|
},
|
|
@@ -10565,7 +10647,7 @@ var ACTION_DEFINITIONS = [
|
|
|
10565
10647
|
vcpus: number2().int().min(1).max(4).optional().describe("optional container vCPU request"),
|
|
10566
10648
|
label: string2().optional().describe("short runtime label for operator diagnostics")
|
|
10567
10649
|
},
|
|
10568
|
-
surfaces: ["computer-
|
|
10650
|
+
surfaces: ["computer-cli"],
|
|
10569
10651
|
toolset: "loop",
|
|
10570
10652
|
run: forward("computer_runtime.open")
|
|
10571
10653
|
},
|
|
@@ -10585,10 +10667,10 @@ var ACTION_DEFINITIONS = [
|
|
|
10585
10667
|
{
|
|
10586
10668
|
name: "computer_run_start",
|
|
10587
10669
|
title: "Start a run",
|
|
10588
|
-
description: `Start one bounded unit of work by threadId
|
|
10670
|
+
description: `Start one bounded unit of work by threadId: write defaults to an isolated Run from the Thread snapshot without booting the parent; shared/read Runs use the live parent; idempotencyKey recovers zero-or-one Run after response loss, and failures return runId for computer_run_receipt. First use: read the Computer guide at ${AGENT_GUIDE_URLS.computer}.`,
|
|
10589
10671
|
inputSchema: {
|
|
10590
|
-
threadId: string2().optional().describe("the Thread whose Computer this Run works in, thr_…; the front door
|
|
10591
|
-
computerSessionId: string2().optional().describe("alternative to threadId: an existing computerSessionId
|
|
10672
|
+
threadId: string2().optional().describe("the Thread whose Computer this Run works in, thr_…; the canonical Run-first front door"),
|
|
10673
|
+
computerSessionId: string2().optional().describe("legacy compatibility alternative to threadId: an existing parent computerSessionId, cms_…"),
|
|
10592
10674
|
mode: _enum(["read", "write"]).describe("write for mutable work; read for shared inspection"),
|
|
10593
10675
|
execution: _enum(["shared", "isolated"]).optional().describe("write Run placement; defaults to isolated. Use shared only for intentional live collaboration on the Thread Computer"),
|
|
10594
10676
|
label: string2().max(120).optional().describe("short factual label for this unit of work"),
|
|
@@ -10842,7 +10924,7 @@ var ACTION_DEFINITIONS = [
|
|
|
10842
10924
|
runId: string2().optional().describe("an active shared write Run whose parent lineage to checkpoint, run_…"),
|
|
10843
10925
|
computerSessionId: string2().optional().describe("legacy alternative to runId: a computerSessionId on that Computer, cms_…")
|
|
10844
10926
|
},
|
|
10845
|
-
surfaces: ["computer-
|
|
10927
|
+
surfaces: ["computer-cli"],
|
|
10846
10928
|
toolset: "loop",
|
|
10847
10929
|
run: forward("computer_runtime.checkpoint")
|
|
10848
10930
|
},
|
|
@@ -10908,7 +10990,7 @@ var ACTION_DEFINITIONS = [
|
|
|
10908
10990
|
runId: string2().optional().describe("an active shared write Run whose parent to checkpoint and stop, run_…"),
|
|
10909
10991
|
computerSessionId: string2().optional().describe("legacy alternative to runId: a computerSessionId on that Computer, cms_…")
|
|
10910
10992
|
},
|
|
10911
|
-
surfaces: ["computer-
|
|
10993
|
+
surfaces: ["computer-cli"],
|
|
10912
10994
|
toolset: "loop",
|
|
10913
10995
|
run: forward("computer_runtime.stop")
|
|
10914
10996
|
},
|
|
@@ -10955,7 +11037,7 @@ var ACTION_DEFINITIONS = [
|
|
|
10955
11037
|
description: "Move a Thread among active, needs-review, stuck, standing, resolved, or archived with an optional reason; illegal lifecycle jumps are rejected. Resolve finite Decide/Deliver/Investigate/Manage work once its outcome is in, archive retired work (refile misfiled work with `thread_update` instead), use standing only for intentionally open-ended concerns, and curate standout outputs separately.",
|
|
10956
11038
|
inputSchema: {
|
|
10957
11039
|
threadId: string2().describe("the thread to move, thr_…"),
|
|
10958
|
-
to:
|
|
11040
|
+
to: _enum(["active", "needs-review", "stuck", "standing", "resolved", "archived"]).describe("target Thread lifecycle status"),
|
|
10959
11041
|
reason: string2().optional().describe("optional one-line why, recorded on the event")
|
|
10960
11042
|
},
|
|
10961
11043
|
surfaces: ["mcp", "cli"],
|
|
@@ -10965,7 +11047,7 @@ var ACTION_DEFINITIONS = [
|
|
|
10965
11047
|
{
|
|
10966
11048
|
name: "create_artifact",
|
|
10967
11049
|
title: "Create an artifact",
|
|
10968
|
-
description: "Promote durable output — a decision, summary, plan, or research brief — into a first-class artifact you own. Give it a concise summary of what the Artifact is or accomplishes; this is the skim and retrieval description, not a repeat of its title. Text kinds (doc/table/diagram/html) are living documents: pass `source` (born at v1, editable in place via edit_artifact); kind=file passes a contentRef instead. The artifact is AUTOMATICALLY listed on its source thread (no link post needed). When it came from
|
|
11050
|
+
description: "Promote durable output — a decision, summary, plan, or research brief — into a first-class artifact you own. Give it a concise summary of what the Artifact is or accomplishes; this is the skim and retrieval description, not a repeat of its title. Text kinds (doc/table/diagram/html) are living documents: pass `source` (born at v1, editable in place via edit_artifact); kind=file passes a contentRef instead. The artifact is AUTOMATICALLY listed on its source thread (no link post needed). When it came from a Thread Computer, pass its producing computerSessionId when available so the artifact cites the reproducible session. Reach for this when a thread has produced something worth retaining and citing beyond the conversation — especially a table or doc the team will UPDATE, which beats pasting it into a prose contribution.",
|
|
10969
11051
|
inputSchema: {
|
|
10970
11052
|
type: string2().describe("semantic type, e.g. decision|summary|plan|markdown|table|research-brief"),
|
|
10971
11053
|
kind: _enum(["doc", "table", "diagram", "html", "file"]).optional().describe("structural kind (default file). doc/table/diagram/html are editable, versioned text"),
|
|
@@ -11244,7 +11326,7 @@ var ACTION_DEFINITIONS = [
|
|
|
11244
11326
|
description: "Set your own identity charter, emoji, color, and capabilities so teammates can understand and route work to you; change them anytime. Write the charter ROLE-FIRST (what you are/do, not your name); display name remains human-managed and capabilities are free-form skill tags.",
|
|
11245
11327
|
inputSchema: {
|
|
11246
11328
|
emoji: string2().optional().describe("exactly one emoji that represents you, e.g. \uD83D\uDD2D"),
|
|
11247
|
-
color:
|
|
11329
|
+
color: _enum(IDENTITY_COLORS).optional().describe("an identity color key from the curated palette"),
|
|
11248
11330
|
description: string2().optional().describe("your charter (≤500 chars): ROLE-FIRST — what you are + do, NOT 'I'm {Name}' (it renders after 'You are {Name}'). Read back in your orientation. Empty clears it."),
|
|
11249
11331
|
capabilities: array(string2()).optional().describe("free-form skill tags (≤20, each ≤60 chars) for what you can do — e.g. ['market-research','data-viz']; how teammates route work to you. An empty array clears them.")
|
|
11250
11332
|
},
|
|
@@ -11926,10 +12008,24 @@ var ACTION_DEFINITIONS = [
|
|
|
11926
12008
|
toolset: "artifacts",
|
|
11927
12009
|
run: forward("artifact.transition")
|
|
11928
12010
|
},
|
|
12011
|
+
{
|
|
12012
|
+
name: "tldraw_create",
|
|
12013
|
+
title: "Create a blank tldraw board",
|
|
12014
|
+
description: "Create a durable blank native tldraw Artifact on a Thread, entering the same source/version/room/checkpoint lifecycle as an imported board. Retries with the same idempotencyKey return the original Artifact; observe before editing.",
|
|
12015
|
+
inputSchema: {
|
|
12016
|
+
title: string2().min(1).max(200).describe("the board title"),
|
|
12017
|
+
summary: string2().min(1).max(500).describe("one-line description of the board"),
|
|
12018
|
+
sourceThreadId: string2().describe("Thread that owns the board, thr_…"),
|
|
12019
|
+
idempotencyKey: string2().min(1).max(200).describe("stable key for this create request")
|
|
12020
|
+
},
|
|
12021
|
+
surfaces: ["mcp", "cli"],
|
|
12022
|
+
toolset: "artifacts",
|
|
12023
|
+
run: forward("tldraw.create")
|
|
12024
|
+
},
|
|
11929
12025
|
{
|
|
11930
12026
|
name: "tldraw_import",
|
|
11931
12027
|
title: "Import a tldraw board",
|
|
11932
|
-
description: "
|
|
12028
|
+
description: "Import an external .tldr into a durable tldraw Artifact after Arbor validates the stored bytes and source Thread. For a new blank board use tldraw_create; retries with the same idempotencyKey return the original Artifact version, then observe before editing.",
|
|
11933
12029
|
inputSchema: {
|
|
11934
12030
|
sourceAttachmentId: string2().describe("uploaded .tldr Attachment, att_…"),
|
|
11935
12031
|
title: string2().min(1).max(200).describe("the board title"),
|
|
@@ -11969,7 +12065,7 @@ var ACTION_DEFINITIONS = [
|
|
|
11969
12065
|
{
|
|
11970
12066
|
name: "tldraw_status",
|
|
11971
12067
|
title: "Check tldraw board status",
|
|
11972
|
-
description: "Read
|
|
12068
|
+
description: "Read compact operational room health and separately reported script sessions for a tldraw board; board geometry/document content stays on tldraw_observe and tldraw_get. Session reports remain per-session observations and are never collapsed into global success.",
|
|
11973
12069
|
inputSchema: { artifactId: string2().describe("the tldraw Artifact, art_…") },
|
|
11974
12070
|
surfaces: ["mcp", "cli"],
|
|
11975
12071
|
toolset: "artifacts",
|
|
@@ -12027,7 +12123,7 @@ var ACTION_DEFINITIONS = [
|
|
|
12027
12123
|
{
|
|
12028
12124
|
name: "tldraw_observe",
|
|
12029
12125
|
title: "Observe a tldraw board",
|
|
12030
|
-
description: `Capture a fresh bounded tldraw scene, lint result, document clock and digest, plus a PNG attachment for visual review; observe before editing. First use: read the tldraw guide at ${AGENT_GUIDE_URLS.tldraw}.`,
|
|
12126
|
+
description: `Capture a fresh bounded tldraw scene, lint result, document clock and digest, plus a PNG attachment for visual review; observe before editing and after context compaction to reacquire authoritative shape IDs/geometry. First use: read the tldraw guide at ${AGENT_GUIDE_URLS.tldraw}.`,
|
|
12031
12127
|
inputSchema: {
|
|
12032
12128
|
artifactId: string2().describe("the tldraw Artifact, art_…"),
|
|
12033
12129
|
pageId: string2().min(1).max(200).optional().describe("optional page to observe"),
|
|
@@ -12041,7 +12137,7 @@ var ACTION_DEFINITIONS = [
|
|
|
12041
12137
|
{
|
|
12042
12138
|
name: "tldraw_exec",
|
|
12043
12139
|
title: "Run a one-shot tldraw program",
|
|
12044
|
-
description: `Modify the current live tldraw board with preferred declarative operations or bounded JavaScript, then return a durable execution receipt; observe
|
|
12140
|
+
description: `Modify the current live tldraw board with preferred declarative operations or bounded JavaScript, 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}.`,
|
|
12045
12141
|
inputSchema: {
|
|
12046
12142
|
artifactId: string2().describe("the tldraw Artifact, art_…"),
|
|
12047
12143
|
code: string2().min(1).max(1e5).optional().describe("advanced script source; mutually exclusive with operations"),
|
package/package.json
CHANGED