@lambdacurry/arbor 0.24.25 → 0.24.27
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 +70 -7
- package/package.json +1 -1
package/dist/arbor.js
CHANGED
|
@@ -8666,6 +8666,29 @@ var githubUserAuthorizations = sqliteTable("github_user_authorizations", {
|
|
|
8666
8666
|
githubUserIdx: index("github_user_authorizations_github_user_idx").on(t.githubUserId, t.status),
|
|
8667
8667
|
orgIdx: index("github_user_authorizations_org_idx").on(t.orgId, t.status)
|
|
8668
8668
|
}));
|
|
8669
|
+
var githubAgentConnections = sqliteTable("github_agent_connections", {
|
|
8670
|
+
id: text("id").primaryKey(),
|
|
8671
|
+
profileId: text("profile_id").notNull().references(() => profiles.id),
|
|
8672
|
+
orgId: text("org_id").notNull().references(() => orgs.id),
|
|
8673
|
+
status: text("status").$type().notNull().default("active"),
|
|
8674
|
+
access: text("access").$type().notNull().default("read"),
|
|
8675
|
+
app: text("app").$type().notNull().default("arbor"),
|
|
8676
|
+
repositories: text("repositories", { mode: "json" }).$type().notNull().default([]),
|
|
8677
|
+
githubAppId: text("github_app_id"),
|
|
8678
|
+
githubInstallationId: text("github_installation_id"),
|
|
8679
|
+
privateKeySecretId: text("private_key_secret_id").references(() => secrets.id),
|
|
8680
|
+
githubAppSlug: text("github_app_slug"),
|
|
8681
|
+
githubAccountLogin: text("github_account_login"),
|
|
8682
|
+
createdByProfileId: text("created_by_profile_id").notNull().references(() => profiles.id),
|
|
8683
|
+
updatedByProfileId: text("updated_by_profile_id").notNull().references(() => profiles.id),
|
|
8684
|
+
createdExecutionContextId: text("created_execution_context_id").notNull().references(() => executionContexts.id),
|
|
8685
|
+
updatedExecutionContextId: text("updated_execution_context_id").notNull().references(() => executionContexts.id),
|
|
8686
|
+
createdAt: ts("created_at").notNull(),
|
|
8687
|
+
updatedAt: ts("updated_at").notNull()
|
|
8688
|
+
}, (t) => ({
|
|
8689
|
+
profileIdx: uniqueIndex("github_agent_connections_profile_idx").on(t.profileId),
|
|
8690
|
+
orgIdx: index("github_agent_connections_org_idx").on(t.orgId, t.status)
|
|
8691
|
+
}));
|
|
8669
8692
|
var githubRepositories = sqliteTable("github_repositories", {
|
|
8670
8693
|
id: text("id").primaryKey(),
|
|
8671
8694
|
installationId: text("installation_id").notNull().references(() => githubInstallations.id),
|
|
@@ -9460,6 +9483,7 @@ var secrets = sqliteTable("secrets", {
|
|
|
9460
9483
|
ownerType: text("owner_type").$type().notNull().default("organization"),
|
|
9461
9484
|
ownerId: text("owner_id"),
|
|
9462
9485
|
lifecycle: text("lifecycle").$type().notNull().default("active"),
|
|
9486
|
+
reservedFor: text("reserved_for").$type(),
|
|
9463
9487
|
currentVersionId: text("current_version_id"),
|
|
9464
9488
|
currentVersion: integer2("current_version").notNull().default(0),
|
|
9465
9489
|
metadataRevision: integer2("metadata_revision").notNull().default(0),
|
|
@@ -10322,8 +10346,6 @@ var recallFts = sqliteTable("recall_fts", {
|
|
|
10322
10346
|
// ../core/src/ops/quick-search.ts
|
|
10323
10347
|
var QUICK_EXPAND_LIMIT = 20;
|
|
10324
10348
|
var QUICK_CANDIDATE_LIMIT = QUICK_EXPAND_LIMIT + 2;
|
|
10325
|
-
// ../core/src/ops/computer-checkpoint-operations.ts
|
|
10326
|
-
var CHECKPOINT_OPERATION_TTL_SECONDS = 7 * 24 * 60 * 60;
|
|
10327
10349
|
// ../core/src/ops/package-cache.ts
|
|
10328
10350
|
var PACKAGE_CACHE_PENDING_TTL_MS = 15 * 60 * 1000;
|
|
10329
10351
|
var PACKAGE_CACHE_FINAL_TTL_MS = 30 * 24 * 60 * 60 * 1000;
|
|
@@ -11454,6 +11476,16 @@ function buildOutputSchemas() {
|
|
|
11454
11476
|
connected: boolean2(),
|
|
11455
11477
|
inheritedBySiblingThreads: boolean2()
|
|
11456
11478
|
}),
|
|
11479
|
+
github_agent_connection: looseObject({
|
|
11480
|
+
agentProfileId: id,
|
|
11481
|
+
connected: boolean2(),
|
|
11482
|
+
access: _enum(["read", "review", "write"]).nullable(),
|
|
11483
|
+
app: looseObject({ kind: _enum(["arbor", "custom"]) }).nullable().describe("the signing App; custom adds its id, installation, slug, account, and key Secret id"),
|
|
11484
|
+
githubActor: string2().nullable().describe("the GitHub bot account pushes and pull requests show, e.g. currybot[bot]"),
|
|
11485
|
+
repositories: array(looseObject({ githubRepositoryId: string2(), fullName: string2() })).describe("the admin allowlist; empty when not connected"),
|
|
11486
|
+
connectedAt: timestamp.nullable(),
|
|
11487
|
+
updatedAt: timestamp.nullable()
|
|
11488
|
+
}),
|
|
11457
11489
|
transition_thread: looseObject({ status: string2() }),
|
|
11458
11490
|
request: looseObject({
|
|
11459
11491
|
requestId: id,
|
|
@@ -13058,6 +13090,7 @@ var MCP_TOOL_ANNOTATIONS = {
|
|
|
13058
13090
|
github_repositories: readOnly,
|
|
13059
13091
|
github_refresh_installation: openWorld,
|
|
13060
13092
|
github_connect_repository: idempotent,
|
|
13093
|
+
github_agent_connection: readOnly,
|
|
13061
13094
|
computer_reprovision: destructiveIdempotent,
|
|
13062
13095
|
computer_run_start: idempotent,
|
|
13063
13096
|
computer_run_suspend: idempotent,
|
|
@@ -13438,7 +13471,7 @@ var COMPUTER_ORIENTATION_SECTIONS = [
|
|
|
13438
13471
|
},
|
|
13439
13472
|
{
|
|
13440
13473
|
brief: "5. Git and gh run through `computer_exec` once authorized; fetch before trusting remote state.",
|
|
13441
|
-
full: `5. GIT AND GITHUB ARE ORDINARY COMMANDS AFTER AUTHORIZATION. Clone, fetch, pull, push, and gh run through computer_exec using a connected human's
|
|
13474
|
+
full: `5. GIT AND GITHUB ARE ORDINARY COMMANDS AFTER AUTHORIZATION. Clone, fetch, pull, push, and gh run through computer_exec using just-in-time ambient GitHub credentials: a connected human's own GitHub identity, or for an agent an admin connected (github_agent_connection), a one-hour App token for repositories on the admin's allowlist that the Computer declares and the Thread connects — connecting another repository yourself adds nothing to it. 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.`
|
|
13442
13475
|
},
|
|
13443
13476
|
{
|
|
13444
13477
|
brief: "6. `computer_verify` captures a URL, `computer_publish_preview` keeps static output, `computer_export` saves files to the Thread.",
|
|
@@ -13678,6 +13711,35 @@ var ACTION_DEFINITIONS = [
|
|
|
13678
13711
|
toolset: "admin",
|
|
13679
13712
|
run: forward("github.user_disconnect")
|
|
13680
13713
|
},
|
|
13714
|
+
{
|
|
13715
|
+
name: "github_agent_connection",
|
|
13716
|
+
title: "Show an agent's GitHub connection",
|
|
13717
|
+
description: "Show whether an agent profile is connected to GitHub for its own Git work — access, signing App (Arbor's or an existing custom App), and githubActor, the bot account its pushes and pull requests show. An agent reads its own; its manager and org admins may read any, and no key or token is ever returned.",
|
|
13718
|
+
inputSchema: {
|
|
13719
|
+
agentProfileId: string2().optional().describe("the agent, prof_…; an agent may omit it to read its own")
|
|
13720
|
+
},
|
|
13721
|
+
surfaces: ["computer-mcp", "cli"],
|
|
13722
|
+
toolset: "projects",
|
|
13723
|
+
run: forward("github.agent_connection_status")
|
|
13724
|
+
},
|
|
13725
|
+
{
|
|
13726
|
+
name: "github_set_agent_connection",
|
|
13727
|
+
title: "Connect an agent to GitHub",
|
|
13728
|
+
description: "Org owner/admin only, from a web or CLI session (never a personal access token): connect, re-scope, or disconnect one agent profile's GitHub work. app=arbor signs with Arbor's GitHub App. app=custom keeps an App the agent already uses (for example a bot App): pass githubAppId, githubInstallationId, and privateKeySecretId — an organization-owned Arbor Secret that a human created and set with that App's private key (secret_set --value-file), never granted to an agent and never bound to an App. Arbor confirms the installation with GitHub, then reserves that Secret permanently for signing. Each Computer call then mints a one-hour token for repositories on this allowlist that the Computer declares and the Thread connects, at the chosen access; disconnecting stops renewal at the next call.",
|
|
13729
|
+
inputSchema: {
|
|
13730
|
+
agentProfileId: string2().describe("the agent profile, prof_…"),
|
|
13731
|
+
connected: boolean2().describe("true to connect or re-scope; false to disconnect"),
|
|
13732
|
+
access: _enum(["read", "review", "write"]).optional().describe("connect: read; review (PR reviews and comments, no push — Pull requests write also lets it approve, dismiss, or close PRs; branch rules decide what an approval counts for); or write (push and PRs). A read Run always caps at read"),
|
|
13733
|
+
app: _enum(["arbor", "custom"]).optional().describe("connect: which GitHub App signs; omitted means arbor, except that an agent already on a custom App must name it, so a re-scope never swaps its bot identity"),
|
|
13734
|
+
githubAppId: string2().optional().describe("app=custom: the existing App's numeric id"),
|
|
13735
|
+
githubInstallationId: string2().optional().describe("app=custom: that App's installation id on the repositories' account"),
|
|
13736
|
+
privateKeySecretId: string2().optional().describe("app=custom: the org-owned Secret holding the App's private key, sec_…"),
|
|
13737
|
+
repositories: array(string2()).optional().describe("connect: the admin allowlist — installed repository ids (ghr_…), owner/name, or GitHub URLs; a token only ever reaches these")
|
|
13738
|
+
},
|
|
13739
|
+
surfaces: ["cli"],
|
|
13740
|
+
toolset: "admin",
|
|
13741
|
+
run: forward("github.agent_connection_set")
|
|
13742
|
+
},
|
|
13681
13743
|
{
|
|
13682
13744
|
name: "recall",
|
|
13683
13745
|
title: "Recall existing knowledge",
|
|
@@ -14003,12 +14065,13 @@ var ACTION_DEFINITIONS = [
|
|
|
14003
14065
|
{
|
|
14004
14066
|
name: "topic_update",
|
|
14005
14067
|
title: "Edit a topic's title or purpose",
|
|
14006
|
-
description: "Edit a Topic's title
|
|
14068
|
+
description: "Edit a Topic's title, purpose, or `--workflow` (pick from `space_get.workflows` by summary; blank inherits the Space default), patching only supplied fields, or archive it reversibly (`--archived true`, admin-only; `false` restores). Norms belong in topic guidance and ways to help, not here.",
|
|
14007
14069
|
inputSchema: {
|
|
14008
14070
|
topicId: string2().describe("the topic to edit, top_…"),
|
|
14009
14071
|
title: string2().min(1).optional().describe("a new title — an area of work, not a question"),
|
|
14010
14072
|
purpose: string2().optional().describe("a new purpose — what this Topic accomplishes and what belongs here, leading with its primary role (Direction, Delivery, Operations, Intake, Coordination, or Learning); name an external or split source of truth or a handoff boundary only when it materially matters"),
|
|
14011
|
-
workflow: string2().nullable().optional().describe("a workflow id from `space_get.workflows` (pick by summary) — a built-in such as `queue` or a catalog `wfl_…`; must be attached to the Space; blank or null inherits the Space default")
|
|
14073
|
+
workflow: string2().nullable().optional().describe("a workflow id from `space_get.workflows` (pick by summary) — a built-in such as `queue` or a catalog `wfl_…`; must be attached to the Space; blank or null inherits the Space default"),
|
|
14074
|
+
archived: boolean2().optional().describe("true archives the Topic: it and everything in it leave the Space read, tree, thread lists and default recall and become read-only, each Thread keeping its status; false restores it. Org owner/admin or Space admin only, as the only change; refused while a Run in it is active")
|
|
14012
14075
|
},
|
|
14013
14076
|
surfaces: ["mcp", "cli"],
|
|
14014
14077
|
toolset: "spaces",
|
|
@@ -16606,7 +16669,7 @@ var ACTIONS = ACTION_DEFINITIONS.map((action) => {
|
|
|
16606
16669
|
});
|
|
16607
16670
|
|
|
16608
16671
|
// ../actions/src/retention-entry.ts
|
|
16609
|
-
var ARBOR_VERSION = "0.24.
|
|
16672
|
+
var ARBOR_VERSION = "0.24.27";
|
|
16610
16673
|
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");
|
|
16611
16674
|
var retainSourceSchema = boolean2().optional().describe("edit: in checkpoint mode, retain this newly minted content revision's source");
|
|
16612
16675
|
var checkpointSchema = boolean2().optional().describe("edit: retain the exact current version source without incrementing content version");
|
|
@@ -17014,7 +17077,7 @@ function dispositionFilename(value) {
|
|
|
17014
17077
|
// package.json
|
|
17015
17078
|
var package_default = {
|
|
17016
17079
|
name: "@lambdacurry/arbor",
|
|
17017
|
-
version: "0.24.
|
|
17080
|
+
version: "0.24.27",
|
|
17018
17081
|
description: "The Arbor CLI — a shared workspace for people and agents. The human + headless-agent write path over Arbor's guarded operation surface.",
|
|
17019
17082
|
keywords: [
|
|
17020
17083
|
"agents",
|
package/package.json
CHANGED