@lambdacurry/arbor 0.13.7 → 0.13.8

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 +31 -2
  2. package/package.json +1 -1
package/dist/arbor.js CHANGED
@@ -1847,7 +1847,7 @@ var apps = sqliteTable("apps", {
1847
1847
  stateMode: text("state_mode").$type().notNull(),
1848
1848
  stateIdentity: text("state_identity").notNull(),
1849
1849
  stateGeneration: integer("state_generation").notNull().default(0),
1850
- pendingStateResetId: text("pending_state_reset_id"),
1850
+ pendingStateOperationId: text("pending_state_reset_id"),
1851
1851
  currentStateSchemaVersion: integer("current_state_schema_version").notNull().default(0),
1852
1852
  deploymentRevision: integer("deployment_revision").notNull().default(0),
1853
1853
  metadataRevision: integer("metadata_revision").notNull().default(0),
@@ -1897,6 +1897,19 @@ var appStateResets = sqliteTable("app_state_resets", {
1897
1897
  activeDeploymentId: text("active_deployment_id"),
1898
1898
  deploymentRevision: integer("deployment_revision"),
1899
1899
  targetStateSchemaVersion: integer("target_state_schema_version"),
1900
+ recoveryBookmark: text("recovery_bookmark"),
1901
+ recoveryExpiresAt: ts("recovery_expires_at"),
1902
+ previousStateSchemaVersion: integer("previous_state_schema_version"),
1903
+ restoreIdempotencyKey: text("restore_idempotency_key"),
1904
+ restoredByProfileId: text("restored_by_profile_id").references(() => profiles.id),
1905
+ restoreExecutionContextId: text("restore_execution_context_id").references(() => executionContexts.id),
1906
+ restoreProviderReceipt: text("restore_provider_receipt", {
1907
+ mode: "json"
1908
+ }).$type(),
1909
+ restoreFromGeneration: integer("restore_from_generation"),
1910
+ restoreToGeneration: integer("restore_to_generation"),
1911
+ restoreRequestedAt: ts("restore_requested_at"),
1912
+ restoredAt: ts("restored_at"),
1900
1913
  createdAt: ts("created_at").notNull(),
1901
1914
  completedAt: ts("completed_at")
1902
1915
  }, (t) => ({
@@ -16983,6 +16996,7 @@ var MCP_OUTPUT_SCHEMAS = {
16983
16996
  }),
16984
16997
  app_set_access: app2,
16985
16998
  app_reset_state: exports_external.looseObject({ reset: jsonObject, replayed: exports_external.boolean() }),
16999
+ app_restore_state: exports_external.looseObject({ reset: jsonObject, replayed: exports_external.boolean() }),
16986
17000
  app_archive: app2,
16987
17001
  charter: exports_external.looseObject({
16988
17002
  ok: exports_external.boolean().optional(),
@@ -17231,6 +17245,7 @@ var MCP_TOOL_ANNOTATIONS = {
17231
17245
  app_rollback: additive,
17232
17246
  app_set_access: additive,
17233
17247
  app_reset_state: destructiveIdempotent,
17248
+ app_restore_state: destructiveIdempotent,
17234
17249
  app_archive: additive,
17235
17250
  charter: destructive,
17236
17251
  computer_open: additive,
@@ -18936,7 +18951,7 @@ var ACTION_DEFINITIONS = [
18936
18951
  {
18937
18952
  name: "app_reset_state",
18938
18953
  title: "Reset durable App state",
18939
- description: "Permanently delete one durable App facet's isolated SQLite database as an explicit attributed transition; deploying or rolling back never does this. Read app_get first, pass its expectedGeneration, and keep the same idempotencyKey across retries. A provider interruption leaves a visible pending intent that the same call resumes; do not change release or archive while pending.",
18954
+ description: "Delete one durable App facet's isolated SQLite database as an explicit attributed transition after capturing a Cloudflare recovery point valid for 30 days. Only the App creator or an Org owner/admin may do this; deploying or rolling back never does. Read app_get first, pass its expectedGeneration, and keep the same idempotencyKey across retries. A provider interruption leaves a visible pending intent that the same call resumes; do not change release or archive while pending.",
18940
18955
  inputSchema: {
18941
18956
  appId: exports_external.string().describe("durable App, app_…"),
18942
18957
  expectedGeneration: exports_external.number().int().min(0).describe("state generation from app_get"),
@@ -18946,6 +18961,20 @@ var ACTION_DEFINITIONS = [
18946
18961
  toolset: "apps",
18947
18962
  run: forward("app.reset_state")
18948
18963
  },
18964
+ {
18965
+ name: "app_restore_state",
18966
+ title: "Restore durable App state",
18967
+ description: "Restore the latest completed durable-state reset from its automatic Cloudflare recovery point, discarding state written after that reset. Recovery is available for 30 days, only while that reset remains latest and its active release has not changed. Only the App creator or an Org owner/admin may do this. Read app_get first, pass the reset id and current generation, and keep the same idempotencyKey across retries.",
18968
+ inputSchema: {
18969
+ appId: exports_external.string().describe("durable App, app_…"),
18970
+ resetId: exports_external.string().describe("latest recoverable reset from app_get, rst_…"),
18971
+ expectedGeneration: exports_external.number().int().min(0).describe("state generation from app_get"),
18972
+ idempotencyKey: exports_external.string().min(1).max(200).describe("stable key for this one deliberate recovery")
18973
+ },
18974
+ surfaces: ["mcp", "cli"],
18975
+ toolset: "apps",
18976
+ run: forward("app.restore_state")
18977
+ },
18949
18978
  {
18950
18979
  name: "app_archive",
18951
18980
  title: "Archive an App",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lambdacurry/arbor",
3
- "version": "0.13.7",
3
+ "version": "0.13.8",
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",