@lambdacurry/arbor 0.12.5 → 0.12.7

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 +113 -7
  2. package/package.json +1 -1
package/dist/arbor.js CHANGED
@@ -1500,6 +1500,81 @@ var computerConfigs = sqliteTable("computer_configs", {
1500
1500
  topicIdx: index("computer_configs_topic_idx").on(t.topicId),
1501
1501
  threadIdx: index("computer_configs_thread_idx").on(t.threadId)
1502
1502
  }));
1503
+ var githubInstallations = sqliteTable("github_installations", {
1504
+ id: text("id").primaryKey(),
1505
+ orgId: text("org_id").notNull().references(() => orgs.id),
1506
+ githubInstallationId: text("github_installation_id").notNull(),
1507
+ githubAccountId: text("github_account_id").notNull(),
1508
+ accountLogin: text("account_login").notNull(),
1509
+ accountType: text("account_type").notNull(),
1510
+ repositorySelection: text("repository_selection").$type().notNull(),
1511
+ status: text("status").$type().notNull().default("active"),
1512
+ permissions: text("permissions", { mode: "json" }).$type().notNull().default({}),
1513
+ createdByProfileId: text("created_by_profile_id").notNull().references(() => profiles.id),
1514
+ updatedByProfileId: text("updated_by_profile_id").notNull().references(() => profiles.id),
1515
+ createdExecutionContextId: text("created_execution_context_id").notNull().references(() => executionContexts.id),
1516
+ updatedExecutionContextId: text("updated_execution_context_id").notNull().references(() => executionContexts.id),
1517
+ lastProviderDeliveryId: text("last_provider_delivery_id"),
1518
+ lastProviderSyncAt: ts("last_provider_sync_at"),
1519
+ createdAt: ts("created_at").notNull(),
1520
+ updatedAt: ts("updated_at").notNull()
1521
+ }, (t) => ({
1522
+ githubIdIdx: uniqueIndex("github_installations_github_id_idx").on(t.githubInstallationId),
1523
+ orgIdx: index("github_installations_org_idx").on(t.orgId, t.status)
1524
+ }));
1525
+ var githubRepositories = sqliteTable("github_repositories", {
1526
+ id: text("id").primaryKey(),
1527
+ installationId: text("installation_id").notNull().references(() => githubInstallations.id),
1528
+ githubRepositoryId: text("github_repository_id").notNull(),
1529
+ fullName: text("full_name").notNull(),
1530
+ fullNameKey: text("full_name_key").notNull(),
1531
+ ownerLogin: text("owner_login").notNull(),
1532
+ name: text("name").notNull(),
1533
+ private: integer("private", { mode: "boolean" }).notNull(),
1534
+ archived: integer("archived", { mode: "boolean" }).notNull().default(false),
1535
+ defaultBranch: text("default_branch"),
1536
+ status: text("status").$type().notNull().default("active"),
1537
+ createdAt: ts("created_at").notNull(),
1538
+ updatedAt: ts("updated_at").notNull()
1539
+ }, (t) => ({
1540
+ githubIdIdx: uniqueIndex("github_repositories_github_id_idx").on(t.installationId, t.githubRepositoryId),
1541
+ fullNameIdx: uniqueIndex("github_repositories_full_name_idx").on(t.installationId, t.fullNameKey),
1542
+ installationIdx: index("github_repositories_installation_idx").on(t.installationId, t.status)
1543
+ }));
1544
+ var githubRepositoryConnections = sqliteTable("github_repository_connections", {
1545
+ id: text("id").primaryKey(),
1546
+ repositoryId: text("repository_id").notNull().references(() => githubRepositories.id),
1547
+ scope: text("scope").$type().notNull(),
1548
+ scopeId: text("scope_id").notNull(),
1549
+ orgId: text("org_id").notNull().references(() => orgs.id),
1550
+ spaceId: text("space_id").references(() => spaces.id),
1551
+ topicId: text("topic_id").references(() => topics.id),
1552
+ threadId: text("thread_id").references(() => threads.id),
1553
+ status: text("status").$type().notNull().default("active"),
1554
+ createdByProfileId: text("created_by_profile_id").notNull().references(() => profiles.id),
1555
+ updatedByProfileId: text("updated_by_profile_id").notNull().references(() => profiles.id),
1556
+ createdExecutionContextId: text("created_execution_context_id").notNull().references(() => executionContexts.id),
1557
+ updatedExecutionContextId: text("updated_execution_context_id").notNull().references(() => executionContexts.id),
1558
+ createdAt: ts("created_at").notNull(),
1559
+ updatedAt: ts("updated_at").notNull()
1560
+ }, (t) => ({
1561
+ targetIdx: uniqueIndex("github_repository_connections_target_idx").on(t.repositoryId, t.scope, t.scopeId),
1562
+ orgIdx: index("github_repository_connections_org_idx").on(t.orgId, t.status),
1563
+ spaceIdx: index("github_repository_connections_space_idx").on(t.spaceId, t.status),
1564
+ topicIdx: index("github_repository_connections_topic_idx").on(t.topicId, t.status),
1565
+ threadIdx: index("github_repository_connections_thread_idx").on(t.threadId, t.status)
1566
+ }));
1567
+ var githubWebhookDeliveries = sqliteTable("github_webhook_deliveries", {
1568
+ id: text("id").primaryKey(),
1569
+ githubDeliveryId: text("github_delivery_id").notNull(),
1570
+ installationId: text("installation_id").notNull().references(() => githubInstallations.id),
1571
+ event: text("event").notNull(),
1572
+ action: text("action").notNull(),
1573
+ receivedAt: ts("received_at").notNull()
1574
+ }, (t) => ({
1575
+ deliveryIdx: uniqueIndex("github_webhook_deliveries_delivery_idx").on(t.githubDeliveryId),
1576
+ installationIdx: index("github_webhook_deliveries_installation_idx").on(t.installationId, t.receivedAt)
1577
+ }));
1503
1578
  var threadComputers = sqliteTable("thread_computers", {
1504
1579
  id: text("id").primaryKey(),
1505
1580
  threadId: text("thread_id").notNull().references(() => threads.id),
@@ -16296,6 +16371,29 @@ var PAGINATION_INPUT = {
16296
16371
  cursor: exports_external.string().optional().describe("opaque cursor from a prior response's nextCursor (use with --limit)")
16297
16372
  };
16298
16373
  var ACTIONS = [
16374
+ {
16375
+ name: "github_repositories",
16376
+ title: "List installed GitHub repositories",
16377
+ description: "List repositories projected from this organization's verified Arbor Computer GitHub App installation. This returns repository ids and metadata, never credentials; use the id with github_connect_repository.",
16378
+ inputSchema: { ...PAGINATION_INPUT },
16379
+ surfaces: ["cli"],
16380
+ toolset: "admin",
16381
+ run: forward("github.repositories")
16382
+ },
16383
+ {
16384
+ name: "github_connect_repository",
16385
+ title: "Connect a GitHub repository",
16386
+ description: "Connect or disconnect one installed GitHub repository at an Arbor organization, Space, Topic, or Thread. This explicit, recoverable connection is required before Arbor may use private repository context there; it does not grant an agent a Git credential.",
16387
+ inputSchema: {
16388
+ repositoryId: exports_external.string().describe("installed repository id from github_repositories, ghr_…"),
16389
+ scope: exports_external.enum(["organization", "space", "topic", "thread"]).describe("the Arbor scope that may use this repository's context"),
16390
+ scopeId: exports_external.string().describe("id matching the selected scope"),
16391
+ connected: exports_external.boolean().describe("true to connect; false to disconnect recoverably")
16392
+ },
16393
+ surfaces: ["cli"],
16394
+ toolset: "admin",
16395
+ run: forward("github.set_repository_connection")
16396
+ },
16299
16397
  {
16300
16398
  name: "recall",
16301
16399
  title: "Recall existing knowledge",
@@ -17926,13 +18024,21 @@ function zodType(node) {
17926
18024
  const ctor = node.constructor?.name ?? "";
17927
18025
  return ctor.replace(/^Zod/, "").toLowerCase();
17928
18026
  }
17929
- function unwrapOptional(node) {
17930
- if (zodType(node) === "optional") {
17931
- const inner = node.unwrap?.();
17932
- if (inner)
17933
- return { inner, optional: true };
18027
+ function unwrapForCli(node) {
18028
+ let inner = node;
18029
+ let optional2 = false;
18030
+ for (;; ) {
18031
+ const type = zodType(inner);
18032
+ if (type !== "optional" && type !== "nullable")
18033
+ break;
18034
+ if (type === "optional")
18035
+ optional2 = true;
18036
+ const unwrapped = inner.unwrap?.();
18037
+ if (!unwrapped)
18038
+ break;
18039
+ inner = unwrapped;
17934
18040
  }
17935
- return { inner: node, optional: false };
18041
+ return { inner, optional: optional2 };
17936
18042
  }
17937
18043
  function description(node) {
17938
18044
  return node.description;
@@ -17973,7 +18079,7 @@ function primaryPositionalField(inputSchema) {
17973
18079
  }
17974
18080
  function flagsForSchema(inputSchema) {
17975
18081
  return Object.entries(inputSchema).map(([field, raw]) => {
17976
- const { inner, optional: optional2 } = unwrapOptional(raw);
18082
+ const { inner, optional: optional2 } = unwrapForCli(raw);
17977
18083
  return {
17978
18084
  field,
17979
18085
  flag: kebab(field),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lambdacurry/arbor",
3
- "version": "0.12.5",
3
+ "version": "0.12.7",
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",