@lambdacurry/arbor 0.22.37 → 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.
Files changed (2) hide show
  1. package/dist/arbor.js +22 -8
  2. 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.37",
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",
@@ -8900,6 +8900,22 @@ var MCP_OUTPUT_SCHEMAS = {
8900
8900
  lineCount: number2().int().nonnegative(),
8901
8901
  byteLength: number2().int().nonnegative(),
8902
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(),
8903
8919
  source: string2().optional(),
8904
8920
  startLine: number2().int().min(0).optional(),
8905
8921
  endLine: number2().int().min(0).optional(),
@@ -10337,9 +10353,9 @@ var ARTIFACT_GET_INPUT = {
10337
10353
  startLine: number2().int().min(1).optional().describe("1-indexed source window start; omit with heading for a section window"),
10338
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`),
10339
10355
  heading: string2().min(1).optional().describe("first ##/### title that matches exactly, else the first prefix match"),
10340
- all: boolean2().optional().describe("explicit complete source. Cannot combine with startLine, heading, or limit; prefer a window unless you need every line")
10356
+ all: boolean2().optional().describe("explicit complete editable source. File Artifacts stay bounded and require startLine + limit. Cannot combine with startLine, heading, or limit")
10341
10357
  };
10342
- var ARTIFACT_GET_DESCRIPTION = `Read an Artifact as a compact card (id, title, kind, version, lineCount, byteLength, ##/### outline with startLine) so a plan can be oriented without loading source; pass startLine+limit (default ${ARTIFACT_SOURCE_WINDOW_DEFAULT}, max ${ARTIFACT_SOURCE_WINDOW_MAX}) or heading (first ##/### exact or prefix) for a source window, or all=true/--all for the full source. Pass version for an older snapshot; this read cannot edit content, bind a surface, change lifecycle, or delete.`;
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.`;
10343
10359
  var PAGINATION_INPUT = {
10344
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`),
10345
10361
  cursor: string2().optional().describe("opaque cursor from a prior response's nextCursor (use with --limit)"),
@@ -13009,6 +13025,7 @@ var ACTIONS = ACTION_DEFINITIONS.map((action) => {
13009
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");
13010
13026
  var retainSourceSchema = boolean2().optional().describe("edit: in checkpoint mode, retain this newly minted content revision's source");
13011
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.";
13012
13029
  function artifactEditInput(input) {
13013
13030
  const patches = Array.isArray(input.patches);
13014
13031
  const hasSource = typeof input.source === "string";
@@ -13061,11 +13078,8 @@ function retentionAction(action) {
13061
13078
  run: (ex, input) => ex.call("artifact.edit", artifactEditInput(input))
13062
13079
  };
13063
13080
  }
13064
- if (action.name === "artifact_get") {
13065
- return {
13066
- ...action,
13067
- 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."
13068
- };
13081
+ if (action.name === "get_artifact" || action.name === "artifact_get") {
13082
+ return { ...action, description: ARTIFACT_GET_PUBLIC_DESCRIPTION };
13069
13083
  }
13070
13084
  if (action.name === "artifact") {
13071
13085
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lambdacurry/arbor",
3
- "version": "0.22.37",
3
+ "version": "0.22.38",
4
4
  "description": "The Arbor CLI — a shared workspace for people and agents. The human + headless-agent write path over Arbor's guarded operation surface.",
5
5
  "keywords": [
6
6
  "agents",