@lambdacurry/arbor 0.24.20 → 0.24.23
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 +31 -16
- package/package.json +1 -1
package/dist/arbor.js
CHANGED
|
@@ -10580,7 +10580,12 @@ function buildOutputSchemas() {
|
|
|
10580
10580
|
nextCursor: nullableString,
|
|
10581
10581
|
total: number2().int().min(0),
|
|
10582
10582
|
status: string2().optional(),
|
|
10583
|
-
order: string2().optional()
|
|
10583
|
+
order: string2().optional(),
|
|
10584
|
+
workflow: looseObject({
|
|
10585
|
+
id: string2(),
|
|
10586
|
+
allowedTypes: array(string2()),
|
|
10587
|
+
labelByType: record(string2(), string2())
|
|
10588
|
+
}).optional()
|
|
10584
10589
|
}),
|
|
10585
10590
|
tree: looseObject({
|
|
10586
10591
|
spaces: array(treeSpace),
|
|
@@ -12503,6 +12508,15 @@ function verbatimList(description) {
|
|
|
12503
12508
|
function isVerbatimList(schema) {
|
|
12504
12509
|
return VERBATIM_LISTS.has(schema);
|
|
12505
12510
|
}
|
|
12511
|
+
var FILE_BODIES = registry();
|
|
12512
|
+
function fileBody(description, base = string2()) {
|
|
12513
|
+
const schema = base.describe(description);
|
|
12514
|
+
FILE_BODIES.add(schema, { fileBody: true });
|
|
12515
|
+
return schema;
|
|
12516
|
+
}
|
|
12517
|
+
function isFileBody(schema) {
|
|
12518
|
+
return FILE_BODIES.has(schema);
|
|
12519
|
+
}
|
|
12506
12520
|
var ATTACHMENT_DESCRIPTION_HINT = "durable summary and default alt text; defaults to the filename when omitted; permanent once bound; 1-500 chars; give each file its own";
|
|
12507
12521
|
function forward(operation) {
|
|
12508
12522
|
const run = (ex, input) => ex.call(operation, input);
|
|
@@ -13677,7 +13691,7 @@ var ACTION_DEFINITIONS = [
|
|
|
13677
13691
|
computerSessionId: string2().optional().describe("legacy alternative to runId: a computerSessionId on that Computer, cms_…; required unless runId is supplied"),
|
|
13678
13692
|
path: string2().describe("absolute path under /workspace, or a path inside the run"),
|
|
13679
13693
|
runId: string2().optional().describe("route this write according to this Run execution placement, run_… (from computer_run_start)"),
|
|
13680
|
-
content:
|
|
13694
|
+
content: fileBody("complete UTF-8 content, or base64 bytes when encoding=base64"),
|
|
13681
13695
|
encoding: _enum(["utf8", "base64"]).optional().describe("content encoding; defaults to utf8, use base64 for binary files")
|
|
13682
13696
|
},
|
|
13683
13697
|
surfaces: ["computer-mcp", "computer-cli"],
|
|
@@ -13855,7 +13869,7 @@ var ACTION_DEFINITIONS = [
|
|
|
13855
13869
|
type: _enum(ARTIFACT_TYPES).describe(ARTIFACT_TYPE_DESCRIPTION),
|
|
13856
13870
|
kind: _enum(["doc", "table", "diagram", "html", "file"]).optional().describe("structural kind (default file). doc/table/diagram/html are editable, versioned text"),
|
|
13857
13871
|
title: string2().min(1),
|
|
13858
|
-
source:
|
|
13872
|
+
source: fileBody("text kinds: the initial content (v1)").optional(),
|
|
13859
13873
|
contentRef: string2().optional().describe("kind=file: where the content lives, e.g. inline://… or a URL"),
|
|
13860
13874
|
editPolicy: _enum(["owner", "members", "anyone"]).optional().describe("who may edit (default members)"),
|
|
13861
13875
|
summary: string2().min(1).max(500).describe("required one-line description of what this durable Artifact is or accomplishes"),
|
|
@@ -13893,7 +13907,7 @@ var ACTION_DEFINITIONS = [
|
|
|
13893
13907
|
inputSchema: {
|
|
13894
13908
|
artifactId: string2().describe("the artifact, art_…"),
|
|
13895
13909
|
baseVersion: number2().describe("the version you READ (get_artifact) — stale is rejected"),
|
|
13896
|
-
source:
|
|
13910
|
+
source: fileBody("full replace: the complete new content").optional(),
|
|
13897
13911
|
patches: array(object({ old: string2(), new: string2() })).optional().describe("exact-match hunks applied in order; each old must match exactly once"),
|
|
13898
13912
|
note: string2().optional().describe("one-line summary of what changed"),
|
|
13899
13913
|
idempotencyKey: string2().min(1).max(200).optional().describe("stable retry key for this logical edit; the CLI derives one from the artifact, base version, and content when omitted")
|
|
@@ -14602,7 +14616,7 @@ var ACTION_DEFINITIONS = [
|
|
|
14602
14616
|
description: "Read a Topic's durable context, guidance, the room's standing ways to help (`contributionLanes`), selected workflow summary, open requests, promoted artifacts, and a paged Thread roster (default 50; `total` is the full roster size). Continue with `cursor`, or use `all=true` / `--all` only for intentional complete enumeration; for a concrete question in a large Topic, prefer Topic-scoped `recall`. `threads=none` is the header alone.",
|
|
14603
14617
|
inputSchema: {
|
|
14604
14618
|
topicId: string2().min(1).describe("the topic id"),
|
|
14605
|
-
threads: _enum(["page", "none"]).optional().describe("page (default) includes the Thread roster page; none = header only — counts by status/label, participants, open
|
|
14619
|
+
threads: _enum(["page", "none"]).optional().describe("page (default) includes the Thread roster page; none = header only — counts by status/label, participants, the newest 12 open requests (previews) + total (no limit/cursor/all); page its Threads with thread_list assignee=any + topicId"),
|
|
14606
14620
|
...PAGINATION_INPUT
|
|
14607
14621
|
},
|
|
14608
14622
|
externalReadDefaults: { unpagedWhen: { field: "threads", value: "none" } },
|
|
@@ -14886,7 +14900,7 @@ var ACTION_DEFINITIONS = [
|
|
|
14886
14900
|
title: string2().optional().describe("create: the artifact's title"),
|
|
14887
14901
|
kind: _enum(["doc", "table", "diagram", "html", "file"]).optional().describe("create: structural kind (default file). doc/table/diagram/html are editable text"),
|
|
14888
14902
|
type: _enum(ARTIFACT_TYPES).optional().describe(`create: ${ARTIFACT_TYPE_DESCRIPTION}`),
|
|
14889
|
-
source:
|
|
14903
|
+
source: fileBody("create (text kinds): the initial content · edit verb=replace: the full new content").optional(),
|
|
14890
14904
|
contentRef: string2().optional().describe("create (kind=file): where the content lives, e.g. inline://… or a URL"),
|
|
14891
14905
|
editPolicy: _enum(["owner", "members", "anyone"]).optional().describe("create: who may edit (default members)"),
|
|
14892
14906
|
summary: string2().min(1).max(500).optional().describe("create: REQUIRED one-line description of what this Artifact is or accomplishes"),
|
|
@@ -15140,7 +15154,7 @@ var ACTION_DEFINITIONS = [
|
|
|
15140
15154
|
description: string2().max(500).optional().describe("create: non-sensitive purpose"),
|
|
15141
15155
|
owner: _enum(["organization", "profile"]).optional().describe("create: who owns the Secret (default organization). profile keeps administration with one identity; names are unique per owner"),
|
|
15142
15156
|
ownerProfileId: string2().optional().describe("create + owner=profile: the owning identity, defaulting to you; assigning another Profile is an Org owner/admin action"),
|
|
15143
|
-
value:
|
|
15157
|
+
value: fileBody("set/rotate: plaintext submitted once and never returned or recorded; --value-file is sent byte-exact (printf, not echo)", string2().min(1)).optional(),
|
|
15144
15158
|
profileId: string2().optional().describe("grant/revoke_grant: authorized human or agent"),
|
|
15145
15159
|
permissions: array(_enum([
|
|
15146
15160
|
"create",
|
|
@@ -15210,7 +15224,7 @@ var ACTION_DEFINITIONS = [
|
|
|
15210
15224
|
description: "Write the first encrypted SecretVersion. The submitted value is never echoed, logged, audited, or placed in provenance; use secret_rotate after the first version.",
|
|
15211
15225
|
inputSchema: {
|
|
15212
15226
|
secretId: string2().describe("the empty Secret, sec_…"),
|
|
15213
|
-
value:
|
|
15227
|
+
value: fileBody("plaintext submitted once and never returned; --value-file is sent byte-exact (printf, not echo)", string2().min(1))
|
|
15214
15228
|
},
|
|
15215
15229
|
surfaces: ["cli"],
|
|
15216
15230
|
toolset: "apps",
|
|
@@ -15222,7 +15236,7 @@ var ACTION_DEFINITIONS = [
|
|
|
15222
15236
|
description: "Append a new encrypted SecretVersion and make every active App binding consume it. Rotation permission is independent of value-write, bind, and plaintext-read permission; the submitted value is never returned.",
|
|
15223
15237
|
inputSchema: {
|
|
15224
15238
|
secretId: string2().describe("the active Secret, sec_…"),
|
|
15225
|
-
value:
|
|
15239
|
+
value: fileBody("new plaintext submitted once and never returned; --value-file is sent byte-exact (printf, not echo)", string2().min(1))
|
|
15226
15240
|
},
|
|
15227
15241
|
surfaces: ["cli"],
|
|
15228
15242
|
toolset: "apps",
|
|
@@ -15454,7 +15468,7 @@ var ACTION_DEFINITIONS = [
|
|
|
15454
15468
|
path: string2().min(1).max(2048).describe("relative App path beginning with /; may include a query string"),
|
|
15455
15469
|
method: _enum(["POST", "PUT", "PATCH", "DELETE"]).describe("mutating HTTP method"),
|
|
15456
15470
|
json: json().optional().describe("JSON request value; mutually exclusive with body and sets application/json. On the CLI, pass serialized JSON after the command as --json '<value>'"),
|
|
15457
|
-
body:
|
|
15471
|
+
body: fileBody("UTF-8 request body; mutually exclusive with json").optional(),
|
|
15458
15472
|
contentType: string2().max(160).optional().describe("body media type; allowed only with body, default text/plain; charset=utf-8")
|
|
15459
15473
|
},
|
|
15460
15474
|
surfaces: ["computer-mcp", "cli"],
|
|
@@ -15610,7 +15624,7 @@ var ACTIONS = ACTION_DEFINITIONS.map((action) => {
|
|
|
15610
15624
|
});
|
|
15611
15625
|
|
|
15612
15626
|
// ../actions/src/retention-entry.ts
|
|
15613
|
-
var ARBOR_VERSION = "0.24.
|
|
15627
|
+
var ARBOR_VERSION = "0.24.23";
|
|
15614
15628
|
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");
|
|
15615
15629
|
var retainSourceSchema = boolean2().optional().describe("edit: in checkpoint mode, retain this newly minted content revision's source");
|
|
15616
15630
|
var checkpointSchema = boolean2().optional().describe("edit: retain the exact current version source without incrementing content version");
|
|
@@ -16494,7 +16508,7 @@ function dispositionFilename(value) {
|
|
|
16494
16508
|
// package.json
|
|
16495
16509
|
var package_default = {
|
|
16496
16510
|
name: "@lambdacurry/arbor",
|
|
16497
|
-
version: "0.24.
|
|
16511
|
+
version: "0.24.23",
|
|
16498
16512
|
description: "The Arbor CLI — a shared workspace for people and agents. The human + headless-agent write path over Arbor's guarded operation surface.",
|
|
16499
16513
|
keywords: [
|
|
16500
16514
|
"agents",
|
|
@@ -16992,7 +17006,7 @@ function acceptedFlags(inputSchema) {
|
|
|
16992
17006
|
}
|
|
16993
17007
|
return out;
|
|
16994
17008
|
}
|
|
16995
|
-
function readTextSource(src) {
|
|
17009
|
+
function readTextSource(src, verbatim) {
|
|
16996
17010
|
let text;
|
|
16997
17011
|
try {
|
|
16998
17012
|
text = readFileSync2(src === "-" ? 0 : src, "utf8");
|
|
@@ -17000,7 +17014,7 @@ function readTextSource(src) {
|
|
|
17000
17014
|
const where = src === "-" ? "stdin" : src;
|
|
17001
17015
|
throw new UsageError(`could not read ${where}: ${e instanceof Error ? e.message : String(e)}`);
|
|
17002
17016
|
}
|
|
17003
|
-
return text.replace(/[\r\n]+$/, "");
|
|
17017
|
+
return verbatim ? text : text.replace(/[\r\n]+$/, "");
|
|
17004
17018
|
}
|
|
17005
17019
|
function primaryPositionalField(inputSchema) {
|
|
17006
17020
|
return flagsForSchema(inputSchema).find((f) => f.required && (f.kind === "string" || f.kind === "number"));
|
|
@@ -17016,7 +17030,8 @@ function flagsForSchema(inputSchema) {
|
|
|
17016
17030
|
nullable,
|
|
17017
17031
|
description: description(inner) ?? description(raw),
|
|
17018
17032
|
literal: isProseList(inner),
|
|
17019
|
-
verbatim: isVerbatimList(inner)
|
|
17033
|
+
verbatim: isVerbatimList(inner),
|
|
17034
|
+
fileBody: isFileBody(inner)
|
|
17020
17035
|
};
|
|
17021
17036
|
});
|
|
17022
17037
|
}
|
|
@@ -17032,7 +17047,7 @@ function buildInput(inputSchema, flags, command) {
|
|
|
17032
17047
|
}
|
|
17033
17048
|
if (fileSrc === true)
|
|
17034
17049
|
throw new UsageError(`--${spec.flag}-file expects a path (or - for stdin)`);
|
|
17035
|
-
const sourced = readTextSource(String(fileSrc));
|
|
17050
|
+
const sourced = readTextSource(String(fileSrc), spec.fileBody === true);
|
|
17036
17051
|
if (spec.kind === "json") {
|
|
17037
17052
|
try {
|
|
17038
17053
|
input[spec.field] = JSON.parse(sourced);
|
package/package.json
CHANGED