@lambdacurry/arbor 0.21.13 → 0.21.15

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 +60 -29
  2. package/package.json +1 -1
package/dist/arbor.js CHANGED
@@ -17211,6 +17211,9 @@ config(en_default());
17211
17211
  var EXTERNAL_DEFAULT_PAGE_SIZE = 50;
17212
17212
  var EXTERNAL_DEFAULT_CONTRIB_LIMIT = 50;
17213
17213
  var EXTERNAL_DEFAULT_THREAD_VIEW = "compact";
17214
+ var EXTERNAL_DEFAULT_ARTIFACT_VIEW = "card";
17215
+ var ARTIFACT_SOURCE_WINDOW_DEFAULT = 80;
17216
+ var ARTIFACT_SOURCE_WINDOW_MAX = 200;
17214
17217
  var EXTERNAL_READ_DEFAULTS_BY_OPERATION = {};
17215
17218
  function recordExternalReadDefaults(operation, defaults) {
17216
17219
  if (!operation || !defaults)
@@ -17957,6 +17960,13 @@ var MCP_OUTPUT_SCHEMAS = {
17957
17960
  nextCursor: exports_external.string().nullable().optional(),
17958
17961
  hasMore: exports_external.boolean().optional()
17959
17962
  }),
17963
+ github_refresh_installation: exports_external.looseObject({
17964
+ installationId: id,
17965
+ accountLogin: exports_external.string(),
17966
+ repositorySelection: exports_external.enum(["all", "selected"]),
17967
+ repositoryCount: exports_external.number().int().min(0),
17968
+ lastSyncedAt: timestamp
17969
+ }),
17960
17970
  github_connect_repository: exports_external.looseObject({
17961
17971
  repositoryId: id,
17962
17972
  scope: exports_external.enum(["organization", "space", "topic", "thread"]),
@@ -18007,7 +18017,11 @@ var MCP_OUTPUT_SCHEMAS = {
18007
18017
  unchanged: exports_external.boolean().optional()
18008
18018
  }),
18009
18019
  tree: exports_external.looseObject({ spaces: exports_external.array(treeSpace) }),
18010
- members: exports_external.looseObject({ members: exports_external.array(orgMember), total: exports_external.number().optional() }),
18020
+ members: exports_external.looseObject({
18021
+ members: exports_external.array(orgMember),
18022
+ total: exports_external.number().optional(),
18023
+ nextCursor: exports_external.string().optional()
18024
+ }),
18011
18025
  space_create: exports_external.looseObject({ spaceId: id, visibility: exports_external.string() }),
18012
18026
  space_update: exports_external.looseObject({
18013
18027
  id,
@@ -18093,7 +18107,9 @@ var MCP_OUTPUT_SCHEMAS = {
18093
18107
  watching: exports_external.boolean()
18094
18108
  }),
18095
18109
  watch_list: exports_external.looseObject({
18096
- watches: exports_external.array(jsonObject).optional()
18110
+ watches: exports_external.array(jsonObject).optional(),
18111
+ total: exports_external.number().int().min(0),
18112
+ nextCursor: exports_external.string().optional()
18097
18113
  }),
18098
18114
  curation: exports_external.looseObject({
18099
18115
  contributionId: id.optional(),
@@ -18126,21 +18142,19 @@ var MCP_OUTPUT_SCHEMAS = {
18126
18142
  threadId: id.nullable().optional(),
18127
18143
  changed: exports_external.boolean().optional()
18128
18144
  }),
18129
- artifact_get: exports_external.looseObject({
18145
+ artifact_get: exports_external.object({
18130
18146
  id,
18131
18147
  title: exports_external.string(),
18132
18148
  kind: exports_external.string(),
18133
- status: exports_external.string(),
18134
- content: jsonObject,
18135
- version: exports_external.number().optional(),
18136
- versions: exports_external.array(jsonObject).optional(),
18137
- appBundles: exports_external.array(jsonObject),
18138
- usedByApps: exports_external.array(jsonObject),
18139
- livePreview: artifactLivePreview.nullable(),
18140
- snapshot: jsonObject.nullable().optional(),
18141
- sourceLivePreview: jsonObject.nullable().optional(),
18142
- watching: exports_external.boolean(),
18143
- url: exports_external.string()
18149
+ version: exports_external.number().int().nonnegative(),
18150
+ lineCount: exports_external.number().int().nonnegative(),
18151
+ byteLength: exports_external.number().int().nonnegative(),
18152
+ outline: exports_external.array(exports_external.object({ title: exports_external.string(), startLine: exports_external.number().int().min(1) })),
18153
+ source: exports_external.string().optional(),
18154
+ startLine: exports_external.number().int().min(0).optional(),
18155
+ endLine: exports_external.number().int().min(0).optional(),
18156
+ nextLine: exports_external.number().int().min(1).nullable().optional(),
18157
+ totalLines: exports_external.number().int().nonnegative().optional()
18144
18158
  }),
18145
18159
  artifact_transition: exports_external.looseObject({
18146
18160
  artifactId: id,
@@ -18864,6 +18878,7 @@ var MCP_TOOL_ANNOTATIONS = {
18864
18878
  app_archive: additive,
18865
18879
  charter: destructive,
18866
18880
  github_repositories: readOnly,
18881
+ github_refresh_installation: openWorld,
18867
18882
  github_connect_repository: idempotent,
18868
18883
  computer_open: additive,
18869
18884
  computer_reprovision: destructiveIdempotent,
@@ -18930,7 +18945,7 @@ Arbor Computer is the complete software execution platform attached to Arbor's d
18930
18945
 
18931
18946
  ${ARBOR_FEEDBACK_GUIDANCE}
18932
18947
 
18933
- 1. ORIENT, CONFIGURE, AND AUTHORIZE. Start with get_computer(threadId) to inspect the effective inherited recipe, repository authorization, compatibility, and durable lineage. 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. attach_computer mints durable protocol identity without starting a runtime; computer_open attaches as needed and starts or resumes the project environment. 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.
18948
+ 1. ORIENT, CONFIGURE, AND AUTHORIZE. Start with get_computer(threadId) to inspect the effective inherited recipe, repository authorization, compatibility, and durable lineage. 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. attach_computer mints durable protocol identity without starting a runtime; computer_open attaches as needed and starts or resumes the project environment. 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.
18934
18949
  2. READ THE CAPABILITIES CARD, NOT THE BACKEND. computer_open and computer_status describe the live PARENT Thread Computer and return the exact computerSessionId for parent filesystem, command, checkpoint, Preview, bundle, and stop operations. computer_status does not establish isolated Run activity; 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.
18935
18950
  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. Once every operation is settled, computer_run_suspend publishes the exact workspace and releases the provider during an external wait; the next Run-aware operation restores that checkpoint under the same runId automatically. Suspension refuses active processes or unsettled outcomes and never replays unknown work, so reconcile process and Git/publication evidence first. 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 is the explicit choice to destroy proven non-durable work.
18936
18951
  4. CHECKPOINT COMPLETE PARENT UNITS. computer_checkpoint advances immutable parent lineage after an intermediate complete unit; computer_stop performs the final checkpoint before teardown. An isolated Run Preview is durable review output, not adoption or a checkpoint. The internal provider-handle publication operations are not agent tools.
@@ -19012,6 +19027,15 @@ function runAdminFeedback(ex, input) {
19012
19027
  return Promise.reject(new Error(`unknown verb "${verb ?? ""}" — expected one of: ${ADMIN_FEEDBACK_VERB_HELP}`));
19013
19028
  }
19014
19029
  var NOTIFICATION_TRIAGE_DESCRIPTION = "List your awareness feed newest first with unseen count and derived triage class: `settled-context` = settled Thread context; `owed-by-me` = an open request pointing to `inbox`; `judgment-available` = live engagement inviting judgment; `closed-loop` = your request completed; `room-motion` = ambient activity. Notifications are FYI, not a second obligation surface: `inbox` alone contains work owed by you; this cannot mark notifications read or modify inbox obligations.";
19030
+ var ARTIFACT_GET_INPUT = {
19031
+ artifactId: exports_external.string().describe("the Artifact, art_…"),
19032
+ version: exports_external.number().int().min(1).optional().describe("read this old snapshot instead of the current"),
19033
+ startLine: exports_external.number().int().min(1).optional().describe("1-indexed source window start; omit with heading for a section window"),
19034
+ limit: exports_external.number().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`),
19035
+ heading: exports_external.string().min(1).optional().describe("first ##/### title that matches exactly, else the first prefix match"),
19036
+ all: exports_external.boolean().optional().describe("explicit complete source. Cannot combine with startLine, heading, or limit; prefer a window unless you need every line")
19037
+ };
19038
+ 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.`;
19015
19039
  var PAGINATION_INPUT = {
19016
19040
  limit: exports_external.number().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`),
19017
19041
  cursor: exports_external.string().optional().describe("opaque cursor from a prior response's nextCursor (use with --limit)"),
@@ -19038,12 +19062,23 @@ var ACTION_DEFINITIONS = [
19038
19062
  {
19039
19063
  name: "github_repositories",
19040
19064
  title: "List installed GitHub repositories",
19041
- description: "List repositories covered by this organization's verified Arbor Computer GitHub App, returning ids and metadata but never credentials. Use github_connect_repository to authorize one at an Arbor scope; listing alone grants no Computer access.",
19065
+ description: "List repositories covered by this organization's verified Arbor Computer GitHub App (ids and metadata, never credentials); listing alone grants no Computer access. Use github_connect_repository to authorize one at an Arbor scope, or github_refresh_installation when the cached inventory looks stale.",
19042
19066
  inputSchema: { ...PAGINATION_INPUT },
19043
19067
  surfaces: ["computer-mcp", "cli"],
19044
19068
  toolset: "projects",
19045
19069
  run: forward("github.repositories")
19046
19070
  },
19071
+ {
19072
+ name: "github_refresh_installation",
19073
+ title: "Refresh a GitHub installation inventory",
19074
+ description: "Reconcile one claimed GitHub App installation's cached repository inventory from GitHub without connecting repositories or changing App permissions. Org owner/admin only; pass installationId from github_repositories.",
19075
+ inputSchema: {
19076
+ installationId: exports_external.string().describe("claimed installation id from github_repositories, ghi_…")
19077
+ },
19078
+ surfaces: ["computer-mcp", "cli"],
19079
+ toolset: "projects",
19080
+ run: forward("github.refresh_installation")
19081
+ },
19047
19082
  {
19048
19083
  name: "github_connect_repository",
19049
19084
  title: "Connect a GitHub repository",
@@ -19955,11 +19990,9 @@ var ACTION_DEFINITIONS = [
19955
19990
  {
19956
19991
  name: "get_artifact",
19957
19992
  title: "Read an artifact",
19958
- description: "Read an Artifact's current source/version/history plus its current executable Live Preview surface when bound. READ BEFORE YOU EDIT — the version number you read is the baseVersion your edit must name. Surface binding is current Artifact identity metadata and remains current even when --version reads old content.",
19959
- inputSchema: {
19960
- artifactId: exports_external.string().describe("the artifact, art_…"),
19961
- version: exports_external.number().optional().describe("read this old snapshot instead of the current")
19962
- },
19993
+ description: ARTIFACT_GET_DESCRIPTION,
19994
+ inputSchema: ARTIFACT_GET_INPUT,
19995
+ externalReadDefaults: { view: EXTERNAL_DEFAULT_ARTIFACT_VIEW },
19963
19996
  surfaces: ["cli"],
19964
19997
  toolset: "artifacts",
19965
19998
  run: forward("artifact.get")
@@ -20285,7 +20318,7 @@ var ACTION_DEFINITIONS = [
20285
20318
  name: "members",
20286
20319
  title: "List the people + agents in your org",
20287
20320
  description: "List everyone in your org with profile id, human/agent identity, role, charter, and capabilities needed for routing. Use it to resolve profile ids for mentions or targeted requests; it cannot modify membership.",
20288
- inputSchema: {},
20321
+ inputSchema: { ...PAGINATION_INPUT },
20289
20322
  surfaces: ["mcp", "cli"],
20290
20323
  toolset: "loop",
20291
20324
  run: forward("org.members")
@@ -20771,7 +20804,7 @@ var ACTION_DEFINITIONS = [
20771
20804
  name: "watch_list",
20772
20805
  title: "List your watches",
20773
20806
  description: "List every Thread, Artifact, and Topic you currently watch. It cannot start or stop a watch or change notifications.",
20774
- inputSchema: {},
20807
+ inputSchema: { ...PAGINATION_INPUT },
20775
20808
  surfaces: ["mcp"],
20776
20809
  toolset: "loop",
20777
20810
  run: forward("watch.list")
@@ -20804,7 +20837,7 @@ var ACTION_DEFINITIONS = [
20804
20837
  name: "watches",
20805
20838
  title: "List what you watch",
20806
20839
  description: "List every thread/artifact/topic you're watching (AD-202), newest first.",
20807
- inputSchema: {},
20840
+ inputSchema: { ...PAGINATION_INPUT },
20808
20841
  surfaces: ["cli"],
20809
20842
  toolset: "loop",
20810
20843
  run: forward("watch.list")
@@ -20864,11 +20897,9 @@ var ACTION_DEFINITIONS = [
20864
20897
  {
20865
20898
  name: "artifact_get",
20866
20899
  title: "Read an Artifact",
20867
- description: "Read an Artifact's current source, version, immutable history, AppBundle references, and current executable Live Preview surface, or pass version for an older content snapshot. Computer-file Artifacts return snapshot state from set_snapshot (null until set_snapshot, meaning the asleep face is not checkable); this read cannot edit content, bind a surface, change lifecycle, promote an attachment, or delete an Artifact.",
20868
- inputSchema: {
20869
- artifactId: exports_external.string().describe("the Artifact, art_…"),
20870
- version: exports_external.number().optional().describe("read this old snapshot instead of the current")
20871
- },
20900
+ description: ARTIFACT_GET_DESCRIPTION,
20901
+ inputSchema: ARTIFACT_GET_INPUT,
20902
+ externalReadDefaults: { view: EXTERNAL_DEFAULT_ARTIFACT_VIEW },
20872
20903
  surfaces: ["mcp"],
20873
20904
  toolset: "artifacts",
20874
20905
  run: forward("artifact.get")
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lambdacurry/arbor",
3
- "version": "0.21.13",
3
+ "version": "0.21.15",
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",