@lambdacurry/arbor 0.15.0 → 0.15.2

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 +72 -13
  2. 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),
@@ -2177,9 +2203,6 @@ var PREVIEW_MIME_TYPES = new Set([
2177
2203
  "font/woff",
2178
2204
  "font/woff2"
2179
2205
  ]);
2180
- // ../core/src/ops/app.ts
2181
- var APP_MAX_MODULE_BYTES = 10 * 1024 * 1024;
2182
- var APP_MAX_ASSET_BYTES = 25 * 1024 * 1024;
2183
2206
  // ../core/src/ops/secret.ts
2184
2207
  var SECRET_PERMISSIONS = [
2185
2208
  "create",
@@ -2193,6 +2216,10 @@ var SECRET_PERMISSIONS = [
2193
2216
  "plaintext:read"
2194
2217
  ];
2195
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;
2196
2223
  // ../core/src/queries/lane-match.ts
2197
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(" "));
2198
2225
  // ../core/src/queries/activity.ts
@@ -17213,11 +17240,16 @@ var MCP_OUTPUT_SCHEMAS = {
17213
17240
  app_get: exports_external.looseObject({
17214
17241
  app: app2,
17215
17242
  deployments: exports_external.array(jsonObject),
17243
+ configurationReadiness: jsonObject.nullable(),
17216
17244
  resets: exports_external.array(jsonObject),
17217
17245
  events: exports_external.array(jsonObject),
17218
17246
  url: exports_external.string()
17219
17247
  }),
17220
- app_deployment_get: exports_external.looseObject({ deployment, bundle: jsonObject }),
17248
+ app_deployment_get: exports_external.looseObject({
17249
+ deployment,
17250
+ bundle: jsonObject,
17251
+ configurationReadiness: jsonObject
17252
+ }),
17221
17253
  app_fetch: appInvocationResponse,
17222
17254
  app_request: appInvocationResponse,
17223
17255
  app_create: app2,
@@ -17329,7 +17361,7 @@ var MCP_OUTPUT_SCHEMAS = {
17329
17361
  operation: exports_external.literal("clone"),
17330
17362
  repository: exports_external.string(),
17331
17363
  dir: exports_external.string(),
17332
- credential: exports_external.enum(["caller", "arbor-managed"]),
17364
+ credential: exports_external.literal("caller"),
17333
17365
  branch: exports_external.string().optional(),
17334
17366
  head: exports_external.string().optional(),
17335
17367
  refs: exports_external.array(exports_external.string()).optional()
@@ -17363,7 +17395,7 @@ var MCP_OUTPUT_SCHEMAS = {
17363
17395
  operation: exports_external.literal("push"),
17364
17396
  repository: exports_external.string(),
17365
17397
  dir: exports_external.string(),
17366
- credential: exports_external.enum(["caller", "arbor-managed"]),
17398
+ credential: exports_external.enum(["caller", "github-user"]),
17367
17399
  branch: exports_external.string().optional(),
17368
17400
  head: exports_external.string().optional(),
17369
17401
  before: exports_external.string().optional(),
@@ -17623,6 +17655,33 @@ var ACTION_DEFINITIONS = [
17623
17655
  toolset: "admin",
17624
17656
  run: forward("github.set_repository_connection")
17625
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
+ },
17626
17685
  {
17627
17686
  name: "recall",
17628
17687
  title: "Recall existing knowledge",
@@ -17988,12 +18047,12 @@ var ACTION_DEFINITIONS = [
17988
18047
  {
17989
18048
  name: "computer_sync",
17990
18049
  title: "Sync an allowed repository",
17991
- 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 and still takes your just-in-time collaborator token. The lightweight Computer fixes the allowlisted GitHub URL, never force-pushes or deletes refs, and neither stores nor returns either credential.",
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.",
17992
18051
  inputSchema: {
17993
18052
  computerSessionId: exports_external.string().describe("the computerSessionId returned by computer_open, cms_…"),
17994
18053
  repository: exports_external.string().describe("allowed owner/repository slug already cloned by computer_clone"),
17995
18054
  operation: exports_external.enum(["fetch", "pull", "push"]).describe("network operation to perform"),
17996
- githubToken: exports_external.string().min(1).optional().describe("short-lived collaborator GitHub token; omit for fetch/pull to use Arbor's managed recipe credential, required for push"),
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"),
17997
18056
  githubUsername: exports_external.string().optional().describe("GitHub username for a supplied githubToken; defaults to x-access-token")
17998
18057
  },
17999
18058
  surfaces: ["computer-cli"],
@@ -18031,12 +18090,12 @@ var ACTION_DEFINITIONS = [
18031
18090
  {
18032
18091
  name: "computer_push",
18033
18092
  title: "Push an allowed repository",
18034
- description: "Push the checked-out branch to its fixed allowlisted GitHub repository without force-pushing or deleting refs. The collaborator's GitHub token is spent only on this call and is neither stored nor returned.",
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.",
18035
18094
  inputSchema: {
18036
18095
  computerSessionId: exports_external.string().describe("the computerSessionId returned by computer_open, cms_…"),
18037
18096
  repository: exports_external.string().describe("allowed owner/repository slug already cloned"),
18038
- githubToken: exports_external.string().min(1).describe("short-lived GitHub token supplied by the caller"),
18039
- githubUsername: exports_external.string().optional().describe("GitHub username; defaults to x-access-token")
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")
18040
18099
  },
18041
18100
  surfaces: ["computer-mcp"],
18042
18101
  toolset: "loop",
@@ -19289,7 +19348,7 @@ var ACTION_DEFINITIONS = [
19289
19348
  {
19290
19349
  name: "app_get",
19291
19350
  title: "Read an App",
19292
- 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.",
19293
19352
  inputSchema: { appId: exports_external.string().describe("the App, app_…") },
19294
19353
  surfaces: ["mcp", "cli"],
19295
19354
  toolset: "apps",
@@ -19356,7 +19415,7 @@ var ACTION_DEFINITIONS = [
19356
19415
  {
19357
19416
  name: "app_deployment_get",
19358
19417
  title: "Inspect an App deployment",
19359
- description: "READ ONLY: Inspect one deployment's candidate, active, failed, or superseded state, source AppBundle, provider receipt, and redacted health result. It cannot modify App state, deployment state, access, or durable SQLite.",
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.",
19360
19419
  inputSchema: {
19361
19420
  appId: exports_external.string().describe("owning App, app_…"),
19362
19421
  deploymentId: exports_external.string().describe("deployment, dep_…")
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lambdacurry/arbor",
3
- "version": "0.15.0",
3
+ "version": "0.15.2",
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",