@lambdacurry/arbor 0.22.36 → 0.22.38
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 +60 -10
- 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.38",
|
|
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",
|
|
@@ -4933,6 +4933,41 @@ var CONTRIBUTION_TYPES = [
|
|
|
4933
4933
|
"decision"
|
|
4934
4934
|
];
|
|
4935
4935
|
var STAMP_FACETS = ["quality", "impact", "fit", "originality"];
|
|
4936
|
+
var ARTIFACT_TYPES = [
|
|
4937
|
+
"markdown",
|
|
4938
|
+
"concept",
|
|
4939
|
+
"decision",
|
|
4940
|
+
"research-brief",
|
|
4941
|
+
"summary",
|
|
4942
|
+
"plan",
|
|
4943
|
+
"json",
|
|
4944
|
+
"yaml",
|
|
4945
|
+
"schema",
|
|
4946
|
+
"table",
|
|
4947
|
+
"rubric",
|
|
4948
|
+
"profile-snapshot",
|
|
4949
|
+
"image",
|
|
4950
|
+
"diagram",
|
|
4951
|
+
"mockup",
|
|
4952
|
+
"canvas",
|
|
4953
|
+
"html-bundle",
|
|
4954
|
+
"dashboard",
|
|
4955
|
+
"prototype",
|
|
4956
|
+
"audio",
|
|
4957
|
+
"video",
|
|
4958
|
+
"transcript",
|
|
4959
|
+
"diff",
|
|
4960
|
+
"pr-reference",
|
|
4961
|
+
"script",
|
|
4962
|
+
"api-spec",
|
|
4963
|
+
"test-plan",
|
|
4964
|
+
"prompt",
|
|
4965
|
+
"tool-spec",
|
|
4966
|
+
"workflow",
|
|
4967
|
+
"routing-rule",
|
|
4968
|
+
"eval-rubric",
|
|
4969
|
+
"external-reference"
|
|
4970
|
+
];
|
|
4936
4971
|
// ../core/src/feedback/constants.ts
|
|
4937
4972
|
var ARBOR_FEEDBACK_TYPES = [
|
|
4938
4973
|
"comment",
|
|
@@ -8865,6 +8900,22 @@ var MCP_OUTPUT_SCHEMAS = {
|
|
|
8865
8900
|
lineCount: number2().int().nonnegative(),
|
|
8866
8901
|
byteLength: number2().int().nonnegative(),
|
|
8867
8902
|
outline: array(object({ title: string2(), startLine: number2().int().min(1) })),
|
|
8903
|
+
sourceMetrics: _enum(["not-loaded-file", "file-text-projection"]).optional(),
|
|
8904
|
+
file: object({
|
|
8905
|
+
mimeType: string2().nullable(),
|
|
8906
|
+
editableSource: literal(false),
|
|
8907
|
+
textProjection: object({
|
|
8908
|
+
status: _enum(["available", "probe", "unavailable"]),
|
|
8909
|
+
reason: _enum([
|
|
8910
|
+
"trusted-text-mime",
|
|
8911
|
+
"unknown-mime",
|
|
8912
|
+
"validated-utf8",
|
|
8913
|
+
"unsupported-mime",
|
|
8914
|
+
"not-stored-blob"
|
|
8915
|
+
]),
|
|
8916
|
+
nextAction: string2()
|
|
8917
|
+
})
|
|
8918
|
+
}).optional(),
|
|
8868
8919
|
source: string2().optional(),
|
|
8869
8920
|
startLine: number2().int().min(0).optional(),
|
|
8870
8921
|
endLine: number2().int().min(0).optional(),
|
|
@@ -10162,6 +10213,7 @@ var TLDRAW_EXEC_OPERATIONS_SCHEMA = array(TLDRAW_EXEC_OPERATION_SCHEMA).min(1).m
|
|
|
10162
10213
|
});
|
|
10163
10214
|
}).describe("preferred declarative edits, applied in order; mutually exclusive with code");
|
|
10164
10215
|
// ../actions/src/index.ts
|
|
10216
|
+
var ARTIFACT_TYPE_DESCRIPTION = `semantic type (one of: ${ARTIFACT_TYPES.join(", ")})`;
|
|
10165
10217
|
var ARBOR_FEEDBACK_INPUT_TYPES = [...ARBOR_FEEDBACK_TYPES, "friction"];
|
|
10166
10218
|
var CONTRIBUTION_ADD_LINK_RELS = [
|
|
10167
10219
|
"cites",
|
|
@@ -10301,9 +10353,9 @@ var ARTIFACT_GET_INPUT = {
|
|
|
10301
10353
|
startLine: number2().int().min(1).optional().describe("1-indexed source window start; omit with heading for a section window"),
|
|
10302
10354
|
limit: number2().int().min(1).max(ARTIFACT_SOURCE_WINDOW_MAX).optional().describe(`source window size when startLine or heading is set (default ${ARTIFACT_SOURCE_WINDOW_DEFAULT}, max ${ARTIFACT_SOURCE_WINDOW_MAX}). This is not a list page size`),
|
|
10303
10355
|
heading: string2().min(1).optional().describe("first ##/### title that matches exactly, else the first prefix match"),
|
|
10304
|
-
all: boolean2().optional().describe("explicit complete source. Cannot combine with startLine, heading, or limit
|
|
10356
|
+
all: boolean2().optional().describe("explicit complete editable source. File Artifacts stay bounded and require startLine + limit. Cannot combine with startLine, heading, or limit")
|
|
10305
10357
|
};
|
|
10306
|
-
var ARTIFACT_GET_DESCRIPTION = `Read an Artifact as a compact card
|
|
10358
|
+
var ARTIFACT_GET_DESCRIPTION = `Read an Artifact as a compact card without loading its body. Editable text Artifacts report source line/byte counts and ##/### outline; use startLine+limit (default ${ARTIFACT_SOURCE_WINDOW_DEFAULT}, max ${ARTIFACT_SOURCE_WINDOW_MAX}), heading, or explicit all=true/--all. File Artifacts remain files and non-editable: their card reports stored MIME, whether bounded UTF-8 text projection is available/probeable, and the next action. For text-like files use startLine+limit and continue with nextLine; all=true and heading stay unavailable for files. Binary/unsupported files remain valid and should be inspected through the Artifact URL/download/media surface. Pass version only for editable historical snapshots; this read cannot edit content, bind a surface, change lifecycle, or delete.`;
|
|
10307
10359
|
var PAGINATION_INPUT = {
|
|
10308
10360
|
limit: number2().int().min(1).optional().describe(`max items to return. MCP/CLI/API default to ${EXTERNAL_DEFAULT_PAGE_SIZE} and return nextCursor when more remain; pass all=true/--all for the complete list. In-process web omit is still a compatibility full read`),
|
|
10309
10361
|
cursor: string2().optional().describe("opaque cursor from a prior response's nextCursor (use with --limit)"),
|
|
@@ -11318,7 +11370,7 @@ var ACTION_DEFINITIONS = [
|
|
|
11318
11370
|
title: "Create an artifact",
|
|
11319
11371
|
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.",
|
|
11320
11372
|
inputSchema: {
|
|
11321
|
-
type:
|
|
11373
|
+
type: _enum(ARTIFACT_TYPES).describe(ARTIFACT_TYPE_DESCRIPTION),
|
|
11322
11374
|
kind: _enum(["doc", "table", "diagram", "html", "file"]).optional().describe("structural kind (default file). doc/table/diagram/html are editable, versioned text"),
|
|
11323
11375
|
title: string2().min(1),
|
|
11324
11376
|
source: string2().optional().describe("text kinds: the initial content (v1)"),
|
|
@@ -12271,7 +12323,7 @@ var ACTION_DEFINITIONS = [
|
|
|
12271
12323
|
verb: _enum(["create", "edit", "set_live_preview", "set_snapshot", "promote_attachment"]).describe("which artifact move"),
|
|
12272
12324
|
title: string2().optional().describe("create: the artifact's title"),
|
|
12273
12325
|
kind: _enum(["doc", "table", "diagram", "html", "file"]).optional().describe("create: structural kind (default file). doc/table/diagram/html are editable text"),
|
|
12274
|
-
type:
|
|
12326
|
+
type: _enum(ARTIFACT_TYPES).optional().describe(`create: ${ARTIFACT_TYPE_DESCRIPTION}`),
|
|
12275
12327
|
source: string2().optional().describe("create (text kinds): the initial content · edit verb=replace: the full new content"),
|
|
12276
12328
|
contentRef: string2().optional().describe("create (kind=file): where the content lives, e.g. inline://… or a URL"),
|
|
12277
12329
|
editPolicy: _enum(["owner", "members", "anyone"]).optional().describe("create: who may edit (default members)"),
|
|
@@ -12973,6 +13025,7 @@ var ACTIONS = ACTION_DEFINITIONS.map((action) => {
|
|
|
12973
13025
|
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");
|
|
12974
13026
|
var retainSourceSchema = boolean2().optional().describe("edit: in checkpoint mode, retain this newly minted content revision's source");
|
|
12975
13027
|
var checkpointSchema = boolean2().optional().describe("edit: retain the exact current version source without incrementing content version");
|
|
13028
|
+
var ARTIFACT_GET_PUBLIC_DESCRIPTION = "Read one Artifact as a compact card without loading its body; editable text supports its outline plus bounded startLine+limit or heading windows and explicit all=true; File Artifacts remain files and report whether bounded UTF-8 text projection is available. For text-like files use startLine+limit and nextLine; all=true and heading stay unavailable for files, binary/unsupported files use the Artifact URL/download/media surface, and editable historical reads retain exact artifactVersionId.";
|
|
12976
13029
|
function artifactEditInput(input) {
|
|
12977
13030
|
const patches = Array.isArray(input.patches);
|
|
12978
13031
|
const hasSource = typeof input.source === "string";
|
|
@@ -13025,11 +13078,8 @@ function retentionAction(action) {
|
|
|
13025
13078
|
run: (ex, input) => ex.call("artifact.edit", artifactEditInput(input))
|
|
13026
13079
|
};
|
|
13027
13080
|
}
|
|
13028
|
-
if (action.name === "artifact_get") {
|
|
13029
|
-
return {
|
|
13030
|
-
...action,
|
|
13031
|
-
description: "Read one Artifact. Text responses project artifactVersionId for the exact version represented by the response, including --version historical reads, so the returned artv_ can be passed directly to computer_publish_app_bundle."
|
|
13032
|
-
};
|
|
13081
|
+
if (action.name === "get_artifact" || action.name === "artifact_get") {
|
|
13082
|
+
return { ...action, description: ARTIFACT_GET_PUBLIC_DESCRIPTION };
|
|
13033
13083
|
}
|
|
13034
13084
|
if (action.name === "artifact") {
|
|
13035
13085
|
return {
|
package/package.json
CHANGED