@lambdacurry/arbor 0.14.6 → 0.15.1
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 +82 -18
- package/package.json +1 -1
package/dist/arbor.js
CHANGED
|
@@ -1526,6 +1526,32 @@ var githubInstallations = sqliteTable("github_installations", {
|
|
|
1526
1526
|
githubIdIdx: uniqueIndex("github_installations_github_id_idx").on(t.githubInstallationId),
|
|
1527
1527
|
orgIdx: index("github_installations_org_idx").on(t.orgId, t.status)
|
|
1528
1528
|
}));
|
|
1529
|
+
var githubUserAuthorizations = sqliteTable("github_user_authorizations", {
|
|
1530
|
+
id: text("id").primaryKey(),
|
|
1531
|
+
profileId: text("profile_id").notNull().references(() => profiles.id),
|
|
1532
|
+
orgId: text("org_id").notNull().references(() => orgs.id),
|
|
1533
|
+
githubUserId: text("github_user_id").notNull(),
|
|
1534
|
+
githubLogin: text("github_login").notNull(),
|
|
1535
|
+
status: text("status").$type().notNull().default("active"),
|
|
1536
|
+
accessCiphertext: text("access_ciphertext"),
|
|
1537
|
+
accessIv: text("access_iv"),
|
|
1538
|
+
accessKeyId: text("access_key_id"),
|
|
1539
|
+
accessAlgorithm: text("access_algorithm"),
|
|
1540
|
+
accessExpiresAt: ts("access_expires_at"),
|
|
1541
|
+
refreshCiphertext: text("refresh_ciphertext"),
|
|
1542
|
+
refreshIv: text("refresh_iv"),
|
|
1543
|
+
refreshKeyId: text("refresh_key_id"),
|
|
1544
|
+
refreshAlgorithm: text("refresh_algorithm"),
|
|
1545
|
+
refreshExpiresAt: ts("refresh_expires_at"),
|
|
1546
|
+
createdExecutionContextId: text("created_execution_context_id").notNull().references(() => executionContexts.id),
|
|
1547
|
+
updatedExecutionContextId: text("updated_execution_context_id").notNull().references(() => executionContexts.id),
|
|
1548
|
+
createdAt: ts("created_at").notNull(),
|
|
1549
|
+
updatedAt: ts("updated_at").notNull()
|
|
1550
|
+
}, (t) => ({
|
|
1551
|
+
profileIdx: uniqueIndex("github_user_authorizations_profile_idx").on(t.profileId),
|
|
1552
|
+
githubUserIdx: index("github_user_authorizations_github_user_idx").on(t.githubUserId, t.status),
|
|
1553
|
+
orgIdx: index("github_user_authorizations_org_idx").on(t.orgId, t.status)
|
|
1554
|
+
}));
|
|
1529
1555
|
var githubRepositories = sqliteTable("github_repositories", {
|
|
1530
1556
|
id: text("id").primaryKey(),
|
|
1531
1557
|
installationId: text("installation_id").notNull().references(() => githubInstallations.id),
|
|
@@ -1625,6 +1651,7 @@ var computerReprovisions = sqliteTable("computer_reprovisions", {
|
|
|
1625
1651
|
restorationOutcome: text("restoration_outcome").$type().notNull().default("not_needed"),
|
|
1626
1652
|
restoredSnapshotId: text("restored_snapshot_id"),
|
|
1627
1653
|
failureCode: text("failure_code"),
|
|
1654
|
+
failureDetail: text("failure_detail"),
|
|
1628
1655
|
createdAt: ts("created_at").notNull(),
|
|
1629
1656
|
completedAt: ts("completed_at")
|
|
1630
1657
|
}, (t) => ({
|
|
@@ -2176,9 +2203,6 @@ var PREVIEW_MIME_TYPES = new Set([
|
|
|
2176
2203
|
"font/woff",
|
|
2177
2204
|
"font/woff2"
|
|
2178
2205
|
]);
|
|
2179
|
-
// ../core/src/ops/app.ts
|
|
2180
|
-
var APP_MAX_MODULE_BYTES = 10 * 1024 * 1024;
|
|
2181
|
-
var APP_MAX_ASSET_BYTES = 25 * 1024 * 1024;
|
|
2182
2206
|
// ../core/src/ops/secret.ts
|
|
2183
2207
|
var SECRET_PERMISSIONS = [
|
|
2184
2208
|
"create",
|
|
@@ -2192,6 +2216,10 @@ var SECRET_PERMISSIONS = [
|
|
|
2192
2216
|
"plaintext:read"
|
|
2193
2217
|
];
|
|
2194
2218
|
var SECRET_ADMIN_PERMISSIONS = SECRET_PERMISSIONS.filter((permission) => permission !== "create" && permission !== "plaintext:read");
|
|
2219
|
+
|
|
2220
|
+
// ../core/src/ops/app.ts
|
|
2221
|
+
var APP_MAX_MODULE_BYTES = 10 * 1024 * 1024;
|
|
2222
|
+
var APP_MAX_ASSET_BYTES = 25 * 1024 * 1024;
|
|
2195
2223
|
// ../core/src/queries/lane-match.ts
|
|
2196
2224
|
var STOP_WORDS = new Set("a an and are as at be by for from has have here how i in is it me of on or our the their they this to was what when where which who will with you your".split(" "));
|
|
2197
2225
|
// ../core/src/queries/activity.ts
|
|
@@ -17212,11 +17240,16 @@ var MCP_OUTPUT_SCHEMAS = {
|
|
|
17212
17240
|
app_get: exports_external.looseObject({
|
|
17213
17241
|
app: app2,
|
|
17214
17242
|
deployments: exports_external.array(jsonObject),
|
|
17243
|
+
configurationReadiness: jsonObject.nullable(),
|
|
17215
17244
|
resets: exports_external.array(jsonObject),
|
|
17216
17245
|
events: exports_external.array(jsonObject),
|
|
17217
17246
|
url: exports_external.string()
|
|
17218
17247
|
}),
|
|
17219
|
-
app_deployment_get: exports_external.looseObject({
|
|
17248
|
+
app_deployment_get: exports_external.looseObject({
|
|
17249
|
+
deployment,
|
|
17250
|
+
bundle: jsonObject,
|
|
17251
|
+
configurationReadiness: jsonObject
|
|
17252
|
+
}),
|
|
17220
17253
|
app_fetch: appInvocationResponse,
|
|
17221
17254
|
app_request: appInvocationResponse,
|
|
17222
17255
|
app_create: app2,
|
|
@@ -17328,6 +17361,7 @@ var MCP_OUTPUT_SCHEMAS = {
|
|
|
17328
17361
|
operation: exports_external.literal("clone"),
|
|
17329
17362
|
repository: exports_external.string(),
|
|
17330
17363
|
dir: exports_external.string(),
|
|
17364
|
+
credential: exports_external.literal("caller"),
|
|
17331
17365
|
branch: exports_external.string().optional(),
|
|
17332
17366
|
head: exports_external.string().optional(),
|
|
17333
17367
|
refs: exports_external.array(exports_external.string()).optional()
|
|
@@ -17337,6 +17371,7 @@ var MCP_OUTPUT_SCHEMAS = {
|
|
|
17337
17371
|
operation: exports_external.literal("fetch"),
|
|
17338
17372
|
repository: exports_external.string(),
|
|
17339
17373
|
dir: exports_external.string(),
|
|
17374
|
+
credential: exports_external.enum(["caller", "arbor-managed"]),
|
|
17340
17375
|
branch: exports_external.string().optional(),
|
|
17341
17376
|
head: exports_external.string().optional(),
|
|
17342
17377
|
fetchHead: exports_external.string().optional(),
|
|
@@ -17347,6 +17382,7 @@ var MCP_OUTPUT_SCHEMAS = {
|
|
|
17347
17382
|
operation: exports_external.literal("pull"),
|
|
17348
17383
|
repository: exports_external.string(),
|
|
17349
17384
|
dir: exports_external.string(),
|
|
17385
|
+
credential: exports_external.enum(["caller", "arbor-managed"]),
|
|
17350
17386
|
branch: exports_external.string().optional(),
|
|
17351
17387
|
head: exports_external.string().optional(),
|
|
17352
17388
|
before: exports_external.string().optional(),
|
|
@@ -17359,6 +17395,7 @@ var MCP_OUTPUT_SCHEMAS = {
|
|
|
17359
17395
|
operation: exports_external.literal("push"),
|
|
17360
17396
|
repository: exports_external.string(),
|
|
17361
17397
|
dir: exports_external.string(),
|
|
17398
|
+
credential: exports_external.enum(["caller", "github-user"]),
|
|
17362
17399
|
branch: exports_external.string().optional(),
|
|
17363
17400
|
head: exports_external.string().optional(),
|
|
17364
17401
|
before: exports_external.string().optional(),
|
|
@@ -17618,6 +17655,33 @@ var ACTION_DEFINITIONS = [
|
|
|
17618
17655
|
toolset: "admin",
|
|
17619
17656
|
run: forward("github.set_repository_connection")
|
|
17620
17657
|
},
|
|
17658
|
+
{
|
|
17659
|
+
name: "github_identity",
|
|
17660
|
+
title: "Show your GitHub connection",
|
|
17661
|
+
description: "Show whether your own Arbor human profile has a connected GitHub identity, with the login and when the connection expires. Redacted by construction — it never returns a credential.",
|
|
17662
|
+
inputSchema: {},
|
|
17663
|
+
surfaces: ["cli"],
|
|
17664
|
+
toolset: "admin",
|
|
17665
|
+
run: forward("github.user_status")
|
|
17666
|
+
},
|
|
17667
|
+
{
|
|
17668
|
+
name: "github_connect_identity",
|
|
17669
|
+
title: "Connect your GitHub identity",
|
|
17670
|
+
description: "Mint the short-lived URL you open in a signed-in browser to connect your GitHub identity, so an Arbor Computer can push your commits as you. Human profiles only; the URL authorizes nothing by itself and expires in ten minutes.",
|
|
17671
|
+
inputSchema: {},
|
|
17672
|
+
surfaces: ["cli"],
|
|
17673
|
+
toolset: "admin",
|
|
17674
|
+
run: forward("github.user_connect")
|
|
17675
|
+
},
|
|
17676
|
+
{
|
|
17677
|
+
name: "github_disconnect_identity",
|
|
17678
|
+
title: "Disconnect your GitHub identity",
|
|
17679
|
+
description: "Disconnect your own GitHub identity from Arbor and erase the stored credential material; a Computer can no longer push as you until you connect again. The audit record of the connection is preserved.",
|
|
17680
|
+
inputSchema: {},
|
|
17681
|
+
surfaces: ["cli"],
|
|
17682
|
+
toolset: "admin",
|
|
17683
|
+
run: forward("github.user_disconnect")
|
|
17684
|
+
},
|
|
17621
17685
|
{
|
|
17622
17686
|
name: "recall",
|
|
17623
17687
|
title: "Recall existing knowledge",
|
|
@@ -17983,13 +18047,13 @@ var ACTION_DEFINITIONS = [
|
|
|
17983
18047
|
{
|
|
17984
18048
|
name: "computer_sync",
|
|
17985
18049
|
title: "Sync an allowed repository",
|
|
17986
|
-
description: "Fetch, fast-forward pull, or push the checked-out branch of a cloned recipe repository
|
|
18050
|
+
description: "Fetch, fast-forward pull, or push the checked-out branch of a cloned recipe repository. OMIT githubToken to refresh a repository named in this computer's effective recipe with Arbor's own managed credential — Arbor rechecks the repository connection and mints a request-scoped one-repository read credential server-side, so a restored computer can reach current history with no token of yours. Managed refresh covers fetch and pull; push writes to GitHub, so omit githubToken there to push as the signed-in human's GitHub identity connected in Account Settings, or supply your just-in-time collaborator token as an override. The lightweight Computer fixes the allowlisted GitHub URL, never force-pushes or deletes refs, and neither stores nor returns either credential.",
|
|
17987
18051
|
inputSchema: {
|
|
17988
18052
|
computerSessionId: exports_external.string().describe("the computerSessionId returned by computer_open, cms_…"),
|
|
17989
18053
|
repository: exports_external.string().describe("allowed owner/repository slug already cloned by computer_clone"),
|
|
17990
18054
|
operation: exports_external.enum(["fetch", "pull", "push"]).describe("network operation to perform"),
|
|
17991
|
-
githubToken: exports_external.string().min(1).describe("short-lived GitHub token
|
|
17992
|
-
githubUsername: exports_external.string().optional().describe("GitHub username; defaults to x-access-token")
|
|
18055
|
+
githubToken: exports_external.string().min(1).optional().describe("short-lived collaborator GitHub token; omit for fetch/pull to use Arbor's managed read credential, or for push to use the signed-in human's connected GitHub identity"),
|
|
18056
|
+
githubUsername: exports_external.string().optional().describe("GitHub username for a supplied githubToken; defaults to x-access-token")
|
|
17993
18057
|
},
|
|
17994
18058
|
surfaces: ["computer-cli"],
|
|
17995
18059
|
toolset: "loop",
|
|
@@ -17998,12 +18062,12 @@ var ACTION_DEFINITIONS = [
|
|
|
17998
18062
|
{
|
|
17999
18063
|
name: "computer_fetch",
|
|
18000
18064
|
title: "Fetch an allowed repository",
|
|
18001
|
-
description:
|
|
18065
|
+
description: `Fetch remote refs for a cloned recipe repository without changing its checked-out branch or any remote ref. OMIT githubToken and Arbor refreshes it for you: it rechecks that the repository is in this computer's effective recipe and still connected, mints a request-scoped one-repository read credential server-side, spends it on this fetch alone, and returns credential: "arbor-managed" — this is the way a RESTORED computer, which deliberately holds no credential, catches up with the remote. Supply githubToken instead to fetch as the collaborator. Neither credential is stored or returned.`,
|
|
18002
18066
|
inputSchema: {
|
|
18003
18067
|
computerSessionId: exports_external.string().describe("the computerSessionId returned by computer_open, cms_…"),
|
|
18004
18068
|
repository: exports_external.string().describe("allowed owner/repository slug already cloned"),
|
|
18005
|
-
githubToken: exports_external.string().min(1).describe("short-lived GitHub token
|
|
18006
|
-
githubUsername: exports_external.string().optional().describe("GitHub username; defaults to x-access-token")
|
|
18069
|
+
githubToken: exports_external.string().min(1).optional().describe("short-lived collaborator GitHub token; omit to use Arbor's managed recipe credential"),
|
|
18070
|
+
githubUsername: exports_external.string().optional().describe("GitHub username for a supplied githubToken; defaults to x-access-token")
|
|
18007
18071
|
},
|
|
18008
18072
|
surfaces: ["computer-mcp"],
|
|
18009
18073
|
toolset: "loop",
|
|
@@ -18012,12 +18076,12 @@ var ACTION_DEFINITIONS = [
|
|
|
18012
18076
|
{
|
|
18013
18077
|
name: "computer_pull",
|
|
18014
18078
|
title: "Fast-forward an allowed repository",
|
|
18015
|
-
description: "Fetch and fast-forward the checked-out branch of a cloned recipe repository; divergent history
|
|
18079
|
+
description: "Fetch and fast-forward the checked-out branch of a cloned recipe repository; divergent history, a dirty working tree, and anything needing a merge are rejected rather than forced. OMIT githubToken and Arbor pulls with its own managed recipe credential after rechecking the repository connection — the way a restored computer reaches current history. Supply githubToken instead to pull as the collaborator. Neither credential is stored or returned.",
|
|
18016
18080
|
inputSchema: {
|
|
18017
18081
|
computerSessionId: exports_external.string().describe("the computerSessionId returned by computer_open, cms_…"),
|
|
18018
18082
|
repository: exports_external.string().describe("allowed owner/repository slug already cloned"),
|
|
18019
|
-
githubToken: exports_external.string().min(1).describe("short-lived GitHub token
|
|
18020
|
-
githubUsername: exports_external.string().optional().describe("GitHub username; defaults to x-access-token")
|
|
18083
|
+
githubToken: exports_external.string().min(1).optional().describe("short-lived collaborator GitHub token; omit to use Arbor's managed recipe credential"),
|
|
18084
|
+
githubUsername: exports_external.string().optional().describe("GitHub username for a supplied githubToken; defaults to x-access-token")
|
|
18021
18085
|
},
|
|
18022
18086
|
surfaces: ["computer-mcp"],
|
|
18023
18087
|
toolset: "loop",
|
|
@@ -18026,12 +18090,12 @@ var ACTION_DEFINITIONS = [
|
|
|
18026
18090
|
{
|
|
18027
18091
|
name: "computer_push",
|
|
18028
18092
|
title: "Push an allowed repository",
|
|
18029
|
-
description: "Push the checked-out branch to its fixed allowlisted GitHub repository without force-pushing or deleting refs.
|
|
18093
|
+
description: "Push the checked-out branch to its fixed allowlisted GitHub repository without force-pushing or deleting refs. OMIT githubToken to use the signed-in human's GitHub connection from Account Settings; Arbor refreshes that GitHub App user credential server-side and never returns or persists it in the Computer. Supply githubToken only for an explicit caller credential override.",
|
|
18030
18094
|
inputSchema: {
|
|
18031
18095
|
computerSessionId: exports_external.string().describe("the computerSessionId returned by computer_open, cms_…"),
|
|
18032
18096
|
repository: exports_external.string().describe("allowed owner/repository slug already cloned"),
|
|
18033
|
-
githubToken: exports_external.string().min(1).describe("short-lived GitHub token
|
|
18034
|
-
githubUsername: exports_external.string().optional().describe("GitHub username;
|
|
18097
|
+
githubToken: exports_external.string().min(1).optional().describe("optional short-lived GitHub token override; omit to use your connected GitHub identity"),
|
|
18098
|
+
githubUsername: exports_external.string().optional().describe("GitHub username for a supplied githubToken; omit for your connected GitHub identity")
|
|
18035
18099
|
},
|
|
18036
18100
|
surfaces: ["computer-mcp"],
|
|
18037
18101
|
toolset: "loop",
|
|
@@ -19284,7 +19348,7 @@ var ACTION_DEFINITIONS = [
|
|
|
19284
19348
|
{
|
|
19285
19349
|
name: "app_get",
|
|
19286
19350
|
title: "Read an App",
|
|
19287
|
-
description: "READ ONLY: Inspect one App's stable URL, active deployment, pending control intent, deployment history, health, and durable state generation. It cannot modify App state, deployment state, access, or durable SQLite; use its activeDeploymentId as app_activate's expectedActiveDeploymentId.",
|
|
19351
|
+
description: "READ ONLY: Inspect one App's stable URL, active deployment, pending control intent, deployment history, provider health, deployment-aware redacted configuration readiness for the active release, and durable state generation. It cannot modify App state, deployment state, access, or durable SQLite; use its activeDeploymentId as app_activate's expectedActiveDeploymentId.",
|
|
19288
19352
|
inputSchema: { appId: exports_external.string().describe("the App, app_…") },
|
|
19289
19353
|
surfaces: ["mcp", "cli"],
|
|
19290
19354
|
toolset: "apps",
|
|
@@ -19351,7 +19415,7 @@ var ACTION_DEFINITIONS = [
|
|
|
19351
19415
|
{
|
|
19352
19416
|
name: "app_deployment_get",
|
|
19353
19417
|
title: "Inspect an App deployment",
|
|
19354
|
-
description: "READ ONLY: Inspect one deployment's candidate, active, failed, or superseded state, source AppBundle, provider receipt, and redacted
|
|
19418
|
+
description: "READ ONLY: Inspect one deployment's candidate, active, failed, or superseded state, source AppBundle, provider receipt, redacted provider health result, and redacted configuration readiness against that bundle's declared runtime requirements. It cannot modify App state, deployment state, access, or durable SQLite.",
|
|
19355
19419
|
inputSchema: {
|
|
19356
19420
|
appId: exports_external.string().describe("owning App, app_…"),
|
|
19357
19421
|
deploymentId: exports_external.string().describe("deployment, dep_…")
|
package/package.json
CHANGED