@lambdacurry/arbor 0.21.43 → 0.21.45

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 +66 -47
  2. package/package.json +2 -1
package/dist/arbor.js CHANGED
@@ -16,7 +16,7 @@ var __export = (target, all) => {
16
16
  // package.json
17
17
  var package_default = {
18
18
  name: "@lambdacurry/arbor",
19
- version: "0.21.43",
19
+ version: "0.21.45",
20
20
  description: "The Arbor CLI — a shared workspace for people and agents. The human + headless-agent write path over Arbor's guarded operation surface.",
21
21
  keywords: [
22
22
  "agents",
@@ -53,6 +53,7 @@ var package_default = {
53
53
  "@arbor/actions": "workspace:*",
54
54
  "@arbor/core": "workspace:*",
55
55
  "@types/node": "^26.2.0",
56
+ "just-bash": "3.4.2",
56
57
  tsx: "^4.20.6",
57
58
  typescript: "^5.8.0",
58
59
  vitest: "^4.1.4",
@@ -14379,7 +14380,7 @@ var ERROR_REASONS = new Set([
14379
14380
  "provider.failure",
14380
14381
  "internal"
14381
14382
  ]);
14382
- // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_885285c61ee4b1c788385eea24f801ee/node_modules/drizzle-orm/entity.js
14383
+ // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_2d24ef0c7d82378656baf6d38a38bd13/node_modules/drizzle-orm/entity.js
14383
14384
  var entityKind = Symbol.for("drizzle:entityKind");
14384
14385
  var hasOwnEntityKind = Symbol.for("drizzle:hasOwnEntityKind");
14385
14386
  function is(value, type) {
@@ -14404,7 +14405,7 @@ function is(value, type) {
14404
14405
  return false;
14405
14406
  }
14406
14407
 
14407
- // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_885285c61ee4b1c788385eea24f801ee/node_modules/drizzle-orm/column.js
14408
+ // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_2d24ef0c7d82378656baf6d38a38bd13/node_modules/drizzle-orm/column.js
14408
14409
  class Column {
14409
14410
  constructor(table, config2) {
14410
14411
  this.table = table;
@@ -14454,7 +14455,7 @@ class Column {
14454
14455
  }
14455
14456
  }
14456
14457
 
14457
- // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_885285c61ee4b1c788385eea24f801ee/node_modules/drizzle-orm/column-builder.js
14458
+ // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_2d24ef0c7d82378656baf6d38a38bd13/node_modules/drizzle-orm/column-builder.js
14458
14459
  class ColumnBuilder {
14459
14460
  static [entityKind] = "ColumnBuilder";
14460
14461
  config;
@@ -14510,10 +14511,10 @@ class ColumnBuilder {
14510
14511
  }
14511
14512
  }
14512
14513
 
14513
- // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_885285c61ee4b1c788385eea24f801ee/node_modules/drizzle-orm/table.utils.js
14514
+ // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_2d24ef0c7d82378656baf6d38a38bd13/node_modules/drizzle-orm/table.utils.js
14514
14515
  var TableName = Symbol.for("drizzle:Name");
14515
14516
 
14516
- // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_885285c61ee4b1c788385eea24f801ee/node_modules/drizzle-orm/pg-core/foreign-keys.js
14517
+ // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_2d24ef0c7d82378656baf6d38a38bd13/node_modules/drizzle-orm/pg-core/foreign-keys.js
14517
14518
  class ForeignKeyBuilder {
14518
14519
  static [entityKind] = "PgForeignKeyBuilder";
14519
14520
  reference;
@@ -14567,12 +14568,12 @@ class ForeignKey {
14567
14568
  }
14568
14569
  }
14569
14570
 
14570
- // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_885285c61ee4b1c788385eea24f801ee/node_modules/drizzle-orm/tracing-utils.js
14571
+ // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_2d24ef0c7d82378656baf6d38a38bd13/node_modules/drizzle-orm/tracing-utils.js
14571
14572
  function iife(fn, ...args) {
14572
14573
  return fn(...args);
14573
14574
  }
14574
14575
 
14575
- // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_885285c61ee4b1c788385eea24f801ee/node_modules/drizzle-orm/pg-core/unique-constraint.js
14576
+ // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_2d24ef0c7d82378656baf6d38a38bd13/node_modules/drizzle-orm/pg-core/unique-constraint.js
14576
14577
  function uniqueKeyName(table, columns) {
14577
14578
  return `${table[TableName]}_${columns.join("_")}_unique`;
14578
14579
  }
@@ -14621,7 +14622,7 @@ class UniqueConstraint {
14621
14622
  }
14622
14623
  }
14623
14624
 
14624
- // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_885285c61ee4b1c788385eea24f801ee/node_modules/drizzle-orm/pg-core/utils/array.js
14625
+ // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_2d24ef0c7d82378656baf6d38a38bd13/node_modules/drizzle-orm/pg-core/utils/array.js
14625
14626
  function parsePgArrayValue(arrayString, startFrom, inQuotes) {
14626
14627
  for (let i = startFrom;i < arrayString.length; i++) {
14627
14628
  const char = arrayString[i];
@@ -14697,7 +14698,7 @@ function makePgArray(array2) {
14697
14698
  }).join(",")}}`;
14698
14699
  }
14699
14700
 
14700
- // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_885285c61ee4b1c788385eea24f801ee/node_modules/drizzle-orm/pg-core/columns/common.js
14701
+ // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_2d24ef0c7d82378656baf6d38a38bd13/node_modules/drizzle-orm/pg-core/columns/common.js
14701
14702
  class PgColumnBuilder extends ColumnBuilder {
14702
14703
  foreignKeyConfigs = [];
14703
14704
  static [entityKind] = "PgColumnBuilder";
@@ -14845,7 +14846,7 @@ class PgArray extends PgColumn {
14845
14846
  }
14846
14847
  }
14847
14848
 
14848
- // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_885285c61ee4b1c788385eea24f801ee/node_modules/drizzle-orm/pg-core/columns/enum.js
14849
+ // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_2d24ef0c7d82378656baf6d38a38bd13/node_modules/drizzle-orm/pg-core/columns/enum.js
14849
14850
  var isPgEnumSym = Symbol.for("drizzle:isPgEnum");
14850
14851
  function isPgEnum(obj) {
14851
14852
  return !!obj && typeof obj === "function" && isPgEnumSym in obj && obj[isPgEnumSym] === true;
@@ -14875,7 +14876,7 @@ class PgEnumColumn extends PgColumn {
14875
14876
  }
14876
14877
  }
14877
14878
 
14878
- // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_885285c61ee4b1c788385eea24f801ee/node_modules/drizzle-orm/subquery.js
14879
+ // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_2d24ef0c7d82378656baf6d38a38bd13/node_modules/drizzle-orm/subquery.js
14879
14880
  class Subquery {
14880
14881
  static [entityKind] = "Subquery";
14881
14882
  constructor(sql, selection, alias, isWith = false) {
@@ -14893,10 +14894,10 @@ class WithSubquery extends Subquery {
14893
14894
  static [entityKind] = "WithSubquery";
14894
14895
  }
14895
14896
 
14896
- // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_885285c61ee4b1c788385eea24f801ee/node_modules/drizzle-orm/version.js
14897
+ // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_2d24ef0c7d82378656baf6d38a38bd13/node_modules/drizzle-orm/version.js
14897
14898
  var version2 = "0.38.4";
14898
14899
 
14899
- // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_885285c61ee4b1c788385eea24f801ee/node_modules/drizzle-orm/tracing.js
14900
+ // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_2d24ef0c7d82378656baf6d38a38bd13/node_modules/drizzle-orm/tracing.js
14900
14901
  var otel;
14901
14902
  var rawTracer;
14902
14903
  var tracer = {
@@ -14923,10 +14924,10 @@ var tracer = {
14923
14924
  }
14924
14925
  };
14925
14926
 
14926
- // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_885285c61ee4b1c788385eea24f801ee/node_modules/drizzle-orm/view-common.js
14927
+ // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_2d24ef0c7d82378656baf6d38a38bd13/node_modules/drizzle-orm/view-common.js
14927
14928
  var ViewBaseConfig = Symbol.for("drizzle:ViewBaseConfig");
14928
14929
 
14929
- // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_885285c61ee4b1c788385eea24f801ee/node_modules/drizzle-orm/table.js
14930
+ // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_2d24ef0c7d82378656baf6d38a38bd13/node_modules/drizzle-orm/table.js
14930
14931
  var Schema = Symbol.for("drizzle:Schema");
14931
14932
  var Columns = Symbol.for("drizzle:Columns");
14932
14933
  var ExtraConfigColumns = Symbol.for("drizzle:ExtraConfigColumns");
@@ -14964,7 +14965,7 @@ class Table {
14964
14965
  }
14965
14966
  }
14966
14967
 
14967
- // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_885285c61ee4b1c788385eea24f801ee/node_modules/drizzle-orm/sql/sql.js
14968
+ // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_2d24ef0c7d82378656baf6d38a38bd13/node_modules/drizzle-orm/sql/sql.js
14968
14969
  class FakePrimitiveParam {
14969
14970
  static [entityKind] = "FakePrimitiveParam";
14970
14971
  }
@@ -15320,7 +15321,7 @@ Subquery.prototype.getSQL = function() {
15320
15321
  return new SQL([this]);
15321
15322
  };
15322
15323
 
15323
- // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_885285c61ee4b1c788385eea24f801ee/node_modules/drizzle-orm/alias.js
15324
+ // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_2d24ef0c7d82378656baf6d38a38bd13/node_modules/drizzle-orm/alias.js
15324
15325
  class ColumnAliasProxyHandler {
15325
15326
  constructor(table) {
15326
15327
  this.table = table;
@@ -15392,12 +15393,12 @@ function aliasedTable(table, tableAlias) {
15392
15393
  return new Proxy(table, new TableAliasProxyHandler(tableAlias, false));
15393
15394
  }
15394
15395
 
15395
- // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_885285c61ee4b1c788385eea24f801ee/node_modules/drizzle-orm/sqlite-core/alias.js
15396
+ // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_2d24ef0c7d82378656baf6d38a38bd13/node_modules/drizzle-orm/sqlite-core/alias.js
15396
15397
  function alias(table, alias2) {
15397
15398
  return new Proxy(table, new TableAliasProxyHandler(alias2, false));
15398
15399
  }
15399
15400
 
15400
- // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_885285c61ee4b1c788385eea24f801ee/node_modules/drizzle-orm/sqlite-core/checks.js
15401
+ // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_2d24ef0c7d82378656baf6d38a38bd13/node_modules/drizzle-orm/sqlite-core/checks.js
15401
15402
  class CheckBuilder {
15402
15403
  constructor(name, value) {
15403
15404
  this.name = name;
@@ -15424,7 +15425,7 @@ function check2(name, value) {
15424
15425
  return new CheckBuilder(name, value);
15425
15426
  }
15426
15427
 
15427
- // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_885285c61ee4b1c788385eea24f801ee/node_modules/drizzle-orm/utils.js
15428
+ // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_2d24ef0c7d82378656baf6d38a38bd13/node_modules/drizzle-orm/utils.js
15428
15429
  function getColumnNameAndConfig(a, b) {
15429
15430
  return {
15430
15431
  name: typeof a === "string" && a.length > 0 ? a : "",
@@ -15432,7 +15433,7 @@ function getColumnNameAndConfig(a, b) {
15432
15433
  };
15433
15434
  }
15434
15435
 
15435
- // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_885285c61ee4b1c788385eea24f801ee/node_modules/drizzle-orm/sqlite-core/foreign-keys.js
15436
+ // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_2d24ef0c7d82378656baf6d38a38bd13/node_modules/drizzle-orm/sqlite-core/foreign-keys.js
15436
15437
  class ForeignKeyBuilder2 {
15437
15438
  static [entityKind] = "SQLiteForeignKeyBuilder";
15438
15439
  reference;
@@ -15486,7 +15487,7 @@ class ForeignKey2 {
15486
15487
  }
15487
15488
  }
15488
15489
 
15489
- // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_885285c61ee4b1c788385eea24f801ee/node_modules/drizzle-orm/sqlite-core/unique-constraint.js
15490
+ // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_2d24ef0c7d82378656baf6d38a38bd13/node_modules/drizzle-orm/sqlite-core/unique-constraint.js
15490
15491
  function uniqueKeyName2(table, columns) {
15491
15492
  return `${table[TableName]}_${columns.join("_")}_unique`;
15492
15493
  }
@@ -15527,7 +15528,7 @@ class UniqueConstraint2 {
15527
15528
  }
15528
15529
  }
15529
15530
 
15530
- // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_885285c61ee4b1c788385eea24f801ee/node_modules/drizzle-orm/sqlite-core/columns/common.js
15531
+ // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_2d24ef0c7d82378656baf6d38a38bd13/node_modules/drizzle-orm/sqlite-core/columns/common.js
15531
15532
  class SQLiteColumnBuilder extends ColumnBuilder {
15532
15533
  static [entityKind] = "SQLiteColumnBuilder";
15533
15534
  foreignKeyConfigs = [];
@@ -15578,7 +15579,7 @@ class SQLiteColumn extends Column {
15578
15579
  static [entityKind] = "SQLiteColumn";
15579
15580
  }
15580
15581
 
15581
- // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_885285c61ee4b1c788385eea24f801ee/node_modules/drizzle-orm/sqlite-core/columns/blob.js
15582
+ // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_2d24ef0c7d82378656baf6d38a38bd13/node_modules/drizzle-orm/sqlite-core/columns/blob.js
15582
15583
  class SQLiteBigIntBuilder extends SQLiteColumnBuilder {
15583
15584
  static [entityKind] = "SQLiteBigIntBuilder";
15584
15585
  constructor(name) {
@@ -15666,7 +15667,7 @@ function blob(a, b) {
15666
15667
  return new SQLiteBlobBufferBuilder(name);
15667
15668
  }
15668
15669
 
15669
- // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_885285c61ee4b1c788385eea24f801ee/node_modules/drizzle-orm/sqlite-core/columns/custom.js
15670
+ // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_2d24ef0c7d82378656baf6d38a38bd13/node_modules/drizzle-orm/sqlite-core/columns/custom.js
15670
15671
  class SQLiteCustomColumnBuilder extends SQLiteColumnBuilder {
15671
15672
  static [entityKind] = "SQLiteCustomColumnBuilder";
15672
15673
  constructor(name, fieldConfig, customTypeParams) {
@@ -15707,7 +15708,7 @@ function customType(customTypeParams) {
15707
15708
  };
15708
15709
  }
15709
15710
 
15710
- // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_885285c61ee4b1c788385eea24f801ee/node_modules/drizzle-orm/sqlite-core/columns/integer.js
15711
+ // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_2d24ef0c7d82378656baf6d38a38bd13/node_modules/drizzle-orm/sqlite-core/columns/integer.js
15711
15712
  class SQLiteBaseIntegerBuilder extends SQLiteColumnBuilder {
15712
15713
  static [entityKind] = "SQLiteBaseIntegerBuilder";
15713
15714
  constructor(name, dataType, columnType) {
@@ -15809,7 +15810,7 @@ function integer2(a, b) {
15809
15810
  return new SQLiteIntegerBuilder(name);
15810
15811
  }
15811
15812
 
15812
- // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_885285c61ee4b1c788385eea24f801ee/node_modules/drizzle-orm/sqlite-core/columns/numeric.js
15813
+ // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_2d24ef0c7d82378656baf6d38a38bd13/node_modules/drizzle-orm/sqlite-core/columns/numeric.js
15813
15814
  class SQLiteNumericBuilder extends SQLiteColumnBuilder {
15814
15815
  static [entityKind] = "SQLiteNumericBuilder";
15815
15816
  constructor(name) {
@@ -15830,7 +15831,7 @@ function numeric(name) {
15830
15831
  return new SQLiteNumericBuilder(name ?? "");
15831
15832
  }
15832
15833
 
15833
- // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_885285c61ee4b1c788385eea24f801ee/node_modules/drizzle-orm/sqlite-core/columns/real.js
15834
+ // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_2d24ef0c7d82378656baf6d38a38bd13/node_modules/drizzle-orm/sqlite-core/columns/real.js
15834
15835
  class SQLiteRealBuilder extends SQLiteColumnBuilder {
15835
15836
  static [entityKind] = "SQLiteRealBuilder";
15836
15837
  constructor(name) {
@@ -15851,7 +15852,7 @@ function real(name) {
15851
15852
  return new SQLiteRealBuilder(name ?? "");
15852
15853
  }
15853
15854
 
15854
- // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_885285c61ee4b1c788385eea24f801ee/node_modules/drizzle-orm/sqlite-core/columns/text.js
15855
+ // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_2d24ef0c7d82378656baf6d38a38bd13/node_modules/drizzle-orm/sqlite-core/columns/text.js
15855
15856
  class SQLiteTextBuilder extends SQLiteColumnBuilder {
15856
15857
  static [entityKind] = "SQLiteTextBuilder";
15857
15858
  constructor(name, config2) {
@@ -15906,7 +15907,7 @@ function text(a, b = {}) {
15906
15907
  return new SQLiteTextBuilder(name, config2);
15907
15908
  }
15908
15909
 
15909
- // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_885285c61ee4b1c788385eea24f801ee/node_modules/drizzle-orm/sqlite-core/columns/all.js
15910
+ // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_2d24ef0c7d82378656baf6d38a38bd13/node_modules/drizzle-orm/sqlite-core/columns/all.js
15910
15911
  function getSQLiteColumnBuilders() {
15911
15912
  return {
15912
15913
  blob,
@@ -15918,7 +15919,7 @@ function getSQLiteColumnBuilders() {
15918
15919
  };
15919
15920
  }
15920
15921
 
15921
- // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_885285c61ee4b1c788385eea24f801ee/node_modules/drizzle-orm/sqlite-core/table.js
15922
+ // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_2d24ef0c7d82378656baf6d38a38bd13/node_modules/drizzle-orm/sqlite-core/table.js
15922
15923
  var InlineForeignKeys = Symbol.for("drizzle:SQLiteInlineForeignKeys");
15923
15924
 
15924
15925
  class SQLiteTable extends Table {
@@ -15952,7 +15953,7 @@ var sqliteTable = (name, columns, extraConfig) => {
15952
15953
  return sqliteTableBase(name, columns, extraConfig);
15953
15954
  };
15954
15955
 
15955
- // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_885285c61ee4b1c788385eea24f801ee/node_modules/drizzle-orm/sqlite-core/indexes.js
15956
+ // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_2d24ef0c7d82378656baf6d38a38bd13/node_modules/drizzle-orm/sqlite-core/indexes.js
15956
15957
  class IndexBuilderOn {
15957
15958
  constructor(name, unique) {
15958
15959
  this.name = name;
@@ -15998,7 +15999,7 @@ function uniqueIndex(name) {
15998
15999
  return new IndexBuilderOn(name, true);
15999
16000
  }
16000
16001
 
16001
- // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_885285c61ee4b1c788385eea24f801ee/node_modules/drizzle-orm/sqlite-core/primary-keys.js
16002
+ // ../../node_modules/.pnpm/drizzle-orm@0.38.4_@cloudflare+workers-types@4.20260529.1_@prisma+client@5.22.0_@types+_2d24ef0c7d82378656baf6d38a38bd13/node_modules/drizzle-orm/sqlite-core/primary-keys.js
16002
16003
  function primaryKey(...config2) {
16003
16004
  if (config2[0].columns) {
16004
16005
  return new PrimaryKeyBuilder(config2[0].columns, config2[0].name);
@@ -18081,7 +18082,20 @@ var MCP_OUTPUT_SCHEMAS = {
18081
18082
  generations: exports_external.array(jsonObject),
18082
18083
  sessions: exports_external.array(jsonObject),
18083
18084
  lineage: exports_external.array(jsonObject),
18084
- reprovisions: exports_external.array(jsonObject)
18085
+ reprovisions: exports_external.array(jsonObject),
18086
+ recoverySafety: exports_external.looseObject({
18087
+ state: exports_external.enum([
18088
+ "safe-to-restore",
18089
+ "possible-uncheckpointed-work",
18090
+ "unknown-mutation-outcome",
18091
+ "unknown-baseline"
18092
+ ]),
18093
+ computerId: id,
18094
+ durableSnapshotId: id.nullable(),
18095
+ started: exports_external.number().int().min(0),
18096
+ acknowledged: exports_external.number().int().min(0),
18097
+ durable: exports_external.number().int().min(0).nullable()
18098
+ }).nullable().optional()
18085
18099
  }),
18086
18100
  computer_inventory: exports_external.looseObject({
18087
18101
  computers: exports_external.array(jsonObject),
@@ -19941,7 +19955,7 @@ var ACTION_DEFINITIONS = [
19941
19955
  {
19942
19956
  name: "computer_status",
19943
19957
  title: "Inspect a computer",
19944
- description: "Inspect the live PARENT Thread Computer's capabilities, execution readiness, processes, and profile. Transient session unavailability drops command capabilities and may retry computer_open once; a terminal unknown mutation is a non-retryable stop — this does not report isolated Run command state, so use computer_run_receipt for Run state or get_computer for durable lineage.",
19958
+ description: "Inspect the live PARENT Thread Computer's capabilities, live can-I-exec readiness, processes, and profile. Transient session unavailability drops command capabilities and may retry computer_open once; a terminal unknown mutation is a non-retryable stop — this does not report isolated Run command state, so use computer_run_receipt for Run state or get_computer for restore-safety.",
19945
19959
  inputSchema: {
19946
19960
  computerSessionId: exports_external.string().describe("the computerSessionId returned by computer_open, cms_…")
19947
19961
  },
@@ -20139,7 +20153,7 @@ var ACTION_DEFINITIONS = [
20139
20153
  {
20140
20154
  name: "get_computer",
20141
20155
  title: "Read a Thread computer",
20142
- description: "Inspect a Thread's durable Computer recipe/materialization state, compatibility, snapshot lineage, recent receipts, Runs, and reprovision outcomes; setup content and credentials stay redacted. Use computer_open or computer_status for live execution state; this surface reports durable Arbor protocol state.",
20156
+ description: "Inspect a Thread's durable Computer recipe/materialization state, compatibility, snapshot lineage, recoverySafety, recent receipts, Runs, and reprovision outcomes; setup content and credentials stay redacted. readiness here is restore-safety (decision-required means Arbor will not silently restore); use computer_status for whether the opened session can exec now.",
20143
20157
  inputSchema: {
20144
20158
  threadId: exports_external.string().describe("the Thread, thr_…"),
20145
20159
  lineageLimit: exports_external.number().int().min(1).max(100).optional().describe("recent receipts/lineage rows (default 20)")
@@ -21805,7 +21819,7 @@ var RECOVERY_ACTIONS = [
21805
21819
  },
21806
21820
  outputSchema: grantOutput,
21807
21821
  annotations: additive2,
21808
- surfaces: ["computer-mcp"],
21822
+ surfaces: ["computer-cli"],
21809
21823
  toolset: "loop",
21810
21824
  run: (ex, input) => ex.call("computer_recovery.grant", input)
21811
21825
  },
@@ -21818,7 +21832,7 @@ var RECOVERY_ACTIONS = [
21818
21832
  },
21819
21833
  outputSchema: grantOutput,
21820
21834
  annotations: additive2,
21821
- surfaces: ["computer-mcp"],
21835
+ surfaces: ["computer-cli"],
21822
21836
  toolset: "loop",
21823
21837
  run: (ex, input) => ex.call("computer_recovery.revoke", input)
21824
21838
  },
@@ -21831,7 +21845,7 @@ var RECOVERY_ACTIONS = [
21831
21845
  },
21832
21846
  outputSchema: diagnosticOutput,
21833
21847
  annotations: auditedRead,
21834
- surfaces: ["computer-mcp"],
21848
+ surfaces: ["computer-mcp", "computer-cli"],
21835
21849
  toolset: "loop",
21836
21850
  run: (ex, input) => ex.call("computer_recovery.inspect", input)
21837
21851
  }
@@ -22055,10 +22069,14 @@ function validateProfileName(name, field = "profile") {
22055
22069
  });
22056
22070
  }
22057
22071
  }
22072
+ function fsType(entry, predicate) {
22073
+ const value = entry[predicate];
22074
+ return typeof value === "function" ? Boolean(value.call(entry)) : value === true;
22075
+ }
22058
22076
  function rejectSymlink(path, label) {
22059
22077
  if (!existsSync(path))
22060
22078
  return;
22061
- if (lstatSync(path).isSymbolicLink())
22079
+ if (fsType(lstatSync(path), "isSymbolicLink"))
22062
22080
  throw new Error(`${label} must not be a symbolic link: ${path}`);
22063
22081
  }
22064
22082
  function ensureArborDir() {
@@ -22110,7 +22128,7 @@ function profileExists(name, field = "profile") {
22110
22128
  if (!existsSync(path))
22111
22129
  return false;
22112
22130
  rejectSymlink(path, `Arbor profile ${name}`);
22113
- return lstatSync(path).isFile();
22131
+ return fsType(lstatSync(path), "isFile");
22114
22132
  }
22115
22133
  function legacyTarget() {
22116
22134
  const defaultPath = defaultConfigPath();
@@ -22171,13 +22189,14 @@ function listProfiles() {
22171
22189
  if (!existsSync(dir))
22172
22190
  return { defaultProfile: registry2.defaultProfile, profiles: [] };
22173
22191
  rejectSymlink(dir, "Arbor profiles directory");
22174
- const profiles2 = readdirSync(dir, { withFileTypes: true }).filter((entry) => entry.name.endsWith(".json")).map((entry) => {
22175
- const name = entry.name.slice(0, -5);
22192
+ const profiles2 = readdirSync(dir).filter((entry) => entry.endsWith(".json")).map((entry) => {
22193
+ const name = entry.slice(0, -5);
22176
22194
  validateProfileName(name);
22177
- const path = join(dir, entry.name);
22178
- if (entry.isSymbolicLink())
22195
+ const path = join(dir, entry);
22196
+ const stats2 = lstatSync(path);
22197
+ if (fsType(stats2, "isSymbolicLink"))
22179
22198
  throw new Error(`Arbor profile ${name} must not be a symbolic link: ${path}`);
22180
- if (!entry.isFile())
22199
+ if (!fsType(stats2, "isFile"))
22181
22200
  throw new Error(`Arbor profile ${name} is not a regular file: ${path}`);
22182
22201
  return { name, default: registry2.defaultProfile === name };
22183
22202
  }).sort((a, b) => a.name.localeCompare(b.name));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lambdacurry/arbor",
3
- "version": "0.21.43",
3
+ "version": "0.21.45",
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",
@@ -37,6 +37,7 @@
37
37
  "@arbor/actions": "workspace:*",
38
38
  "@arbor/core": "workspace:*",
39
39
  "@types/node": "^26.2.0",
40
+ "just-bash": "3.4.2",
40
41
  "tsx": "^4.20.6",
41
42
  "typescript": "^5.8.0",
42
43
  "vitest": "^4.1.4",