@lambdacurry/arbor 0.13.2 → 0.13.3
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 +21 -11
- package/package.json +1 -1
package/dist/arbor.js
CHANGED
|
@@ -1809,6 +1809,7 @@ var appBundles = sqliteTable("app_bundles", {
|
|
|
1809
1809
|
mainModule: text("main_module").notNull(),
|
|
1810
1810
|
modules: text("modules", { mode: "json" }).$type().notNull(),
|
|
1811
1811
|
staticAssets: text("static_assets", { mode: "json" }).$type().notNull(),
|
|
1812
|
+
buildProvenance: text("build_provenance", { mode: "json" }).$type(),
|
|
1812
1813
|
runtimeEntrypoint: text("runtime_entrypoint").$type().notNull(),
|
|
1813
1814
|
capabilityRequirements: text("capability_requirements", { mode: "json" }).$type().notNull().default([]),
|
|
1814
1815
|
stateSchemaVersion: integer("state_schema_version").notNull().default(0),
|
|
@@ -1839,14 +1840,17 @@ var apps = sqliteTable("apps", {
|
|
|
1839
1840
|
access: text("access").$type().notNull(),
|
|
1840
1841
|
discovery: text("discovery").$type(),
|
|
1841
1842
|
activeDeploymentId: text("active_deployment_id"),
|
|
1843
|
+
pendingActivationDeploymentId: text("pending_activation_deployment_id"),
|
|
1842
1844
|
runtimeProvider: text("runtime_provider").$type().notNull(),
|
|
1843
1845
|
runtimeHealth: text("runtime_health").$type().notNull().default("unknown"),
|
|
1844
1846
|
runtimeHealthUpdatedAt: ts("runtime_health_updated_at"),
|
|
1845
1847
|
stateMode: text("state_mode").$type().notNull(),
|
|
1846
1848
|
stateIdentity: text("state_identity").notNull(),
|
|
1847
1849
|
stateGeneration: integer("state_generation").notNull().default(0),
|
|
1850
|
+
pendingStateResetId: text("pending_state_reset_id"),
|
|
1848
1851
|
currentStateSchemaVersion: integer("current_state_schema_version").notNull().default(0),
|
|
1849
1852
|
deploymentRevision: integer("deployment_revision").notNull().default(0),
|
|
1853
|
+
metadataRevision: integer("metadata_revision").notNull().default(0),
|
|
1850
1854
|
createdByProfileId: text("created_by_profile_id").notNull().references(() => profiles.id),
|
|
1851
1855
|
createdExecutionContextId: text("created_execution_context_id").notNull().references(() => executionContexts.id),
|
|
1852
1856
|
createdAt: ts("created_at").notNull(),
|
|
@@ -1889,9 +1893,15 @@ var appStateResets = sqliteTable("app_state_resets", {
|
|
|
1889
1893
|
resetByProfileId: text("reset_by_profile_id").notNull().references(() => profiles.id),
|
|
1890
1894
|
resetExecutionContextId: text("reset_execution_context_id").notNull().references(() => executionContexts.id),
|
|
1891
1895
|
providerReceipt: text("provider_receipt", { mode: "json" }).$type().notNull(),
|
|
1892
|
-
|
|
1896
|
+
status: text("status").$type().notNull().default("completed"),
|
|
1897
|
+
activeDeploymentId: text("active_deployment_id"),
|
|
1898
|
+
deploymentRevision: integer("deployment_revision"),
|
|
1899
|
+
targetStateSchemaVersion: integer("target_state_schema_version"),
|
|
1900
|
+
createdAt: ts("created_at").notNull(),
|
|
1901
|
+
completedAt: ts("completed_at")
|
|
1893
1902
|
}, (t) => ({
|
|
1894
1903
|
idempotencyUq: uniqueIndex("app_state_resets_idempotency_uq").on(t.appId, t.resetByProfileId, t.idempotencyKey),
|
|
1904
|
+
generationUq: uniqueIndex("app_state_resets_generation_uq").on(t.appId, t.fromGeneration),
|
|
1895
1905
|
appIdx: index("app_state_resets_app_idx").on(t.appId, t.createdAt)
|
|
1896
1906
|
}));
|
|
1897
1907
|
var appViewerGrantUses = sqliteTable("app_viewer_grant_uses", {
|
|
@@ -1948,7 +1958,7 @@ var events = sqliteTable("events", {
|
|
|
1948
1958
|
payload: text("payload", { mode: "json" }).$type().notNull().default({}),
|
|
1949
1959
|
createdAt: ts("created_at").notNull()
|
|
1950
1960
|
}, (t) => ({
|
|
1951
|
-
objectIdx: index("events_object_idx").on(t.objectType, t.objectId),
|
|
1961
|
+
objectIdx: index("events_object_idx").on(t.objectType, t.objectId, t.createdAt),
|
|
1952
1962
|
createdIdx: index("events_created_idx").on(t.createdAt)
|
|
1953
1963
|
}));
|
|
1954
1964
|
var notifications = sqliteTable("notifications", {
|
|
@@ -17823,7 +17833,7 @@ var ACTIONS = [
|
|
|
17823
17833
|
{
|
|
17824
17834
|
name: "apps",
|
|
17825
17835
|
title: "List visible Apps",
|
|
17826
|
-
description: "List Apps available to you: every App in your Spaces plus listed public Apps across the organization. Lifecycle and
|
|
17836
|
+
description: "List Apps available to you: every App in your Spaces plus active listed public Apps across the organization. Lifecycle and last activation health are separate fields; unlisted public and archived Apps appear only to actors authorized for their owning Space.",
|
|
17827
17837
|
inputSchema: {
|
|
17828
17838
|
includeArchived: exports_external.boolean().optional().describe("include archived Apps you are authorized to inspect")
|
|
17829
17839
|
},
|
|
@@ -17834,7 +17844,7 @@ var ACTIONS = [
|
|
|
17834
17844
|
{
|
|
17835
17845
|
name: "apps",
|
|
17836
17846
|
title: "Publish and manage Apps",
|
|
17837
|
-
description: "Manage stable Arbor Apps through one guarded lifecycle (AD-248). verb=list shows Apps
|
|
17847
|
+
description: "Manage stable Arbor Apps through one guarded lifecycle (AD-248/249). verb=list shows Apps across the actor's Spaces plus active listed public Apps across the organization; get reads the active release, pending control intent, state generation, and history; create mints the Space-owned identity; deploy health-checks an immutable AppBundle without moving the URL; deployment inspects one candidate; activate and rollback reserve an attributed intent before provider health and compare-and-swap completion; set_access changes Space/public and public discovery immediately; reset_state is the only durable SQLite deletion and resumes partial failure with the same idempotency key; archive stops serving but retains history. Read with get immediately before activate, rollback, access, or reset. Public Apps must be public+(unlisted|listed)+none; durable Apps are space+durable.",
|
|
17838
17848
|
inputSchema: {
|
|
17839
17849
|
verb: exports_external.enum([
|
|
17840
17850
|
"list",
|
|
@@ -17855,7 +17865,7 @@ var ACTIONS = [
|
|
|
17855
17865
|
slug: exports_external.string().min(1).max(59).optional().describe("create: stable label in app-<slug>.arborthreads.dev"),
|
|
17856
17866
|
access: exports_external.enum(["space", "public"]).optional().describe("create/set_access: gateway access"),
|
|
17857
17867
|
discovery: exports_external.enum(["unlisted", "listed"]).nullable().optional().describe("create/set_access: public discovery; Space Apps use null"),
|
|
17858
|
-
stateMode: exports_external.enum(["none", "durable"]).optional().describe("create: none or isolated durable SQLite"),
|
|
17868
|
+
stateMode: exports_external.enum(["none", "durable"]).optional().describe("create: none or Space-only isolated durable SQLite"),
|
|
17859
17869
|
bundleId: exports_external.string().optional().describe("deploy: verified immutable AppBundle, bnd_…"),
|
|
17860
17870
|
deploymentId: exports_external.string().optional().describe("deployment/activate/rollback: deployment, dep_…"),
|
|
17861
17871
|
expectedActiveDeploymentId: exports_external.string().nullable().optional().describe("activate/rollback: active deployment just read; null only for first activation"),
|
|
@@ -17880,7 +17890,7 @@ var ACTIONS = [
|
|
|
17880
17890
|
{
|
|
17881
17891
|
name: "app_get",
|
|
17882
17892
|
title: "Read an App",
|
|
17883
|
-
description: "Inspect one App's stable URL, active release, source AppBundle, deployment timeline,
|
|
17893
|
+
description: "Inspect one App's stable URL, active release, pending control intent, source AppBundle, attributed deployment timeline, last activation health, state identity/generation, and reset history. Read this before deployment, rollback, access, or state changes so compare-and-swap inputs are current.",
|
|
17884
17894
|
inputSchema: { appId: exports_external.string().describe("the App, app_…") },
|
|
17885
17895
|
surfaces: ["cli"],
|
|
17886
17896
|
toolset: "apps",
|
|
@@ -17889,14 +17899,14 @@ var ACTIONS = [
|
|
|
17889
17899
|
{
|
|
17890
17900
|
name: "app_create",
|
|
17891
17901
|
title: "Create an App",
|
|
17892
|
-
description: "Create a stable first-class App identity in a Space before deploying code.
|
|
17902
|
+
description: "Create a stable first-class App identity in a Space before deploying code. Public Apps are stateless and start public+unlisted+none; durable Apps are always space+durable with membership authorization and isolated SQLite state.",
|
|
17893
17903
|
inputSchema: {
|
|
17894
17904
|
spaceId: exports_external.string().describe("owning Space, spc_…"),
|
|
17895
17905
|
title: exports_external.string().min(1).max(160).describe("short factual App title"),
|
|
17896
17906
|
slug: exports_external.string().min(1).max(59).describe("stable DNS label used by app-<slug>.arborthreads.dev"),
|
|
17897
17907
|
access: exports_external.enum(["space", "public"]).describe("space requires membership; public is anonymous at the gateway"),
|
|
17898
17908
|
discovery: exports_external.enum(["unlisted", "listed"]).nullable().optional().describe("public Apps only; default unlisted"),
|
|
17899
|
-
stateMode: exports_external.enum(["none", "durable"]).describe("durable allocates isolated facet SQLite; deployment never resets it")
|
|
17909
|
+
stateMode: exports_external.enum(["none", "durable"]).describe("durable allocates Space-only isolated facet SQLite; deployment never resets it")
|
|
17900
17910
|
},
|
|
17901
17911
|
surfaces: ["cli"],
|
|
17902
17912
|
toolset: "apps",
|
|
@@ -17930,7 +17940,7 @@ var ACTIONS = [
|
|
|
17930
17940
|
{
|
|
17931
17941
|
name: "app_activate",
|
|
17932
17942
|
title: "Activate a verified deployment",
|
|
17933
|
-
description: "
|
|
17943
|
+
description: "Reserve an attributed activation intent, health-check the verified candidate, then atomically advance the stable URL. Pass the active deployment id just read (or null for the first release). A retry resumes the same pending release; a conflicting control change is rejected.",
|
|
17934
17944
|
inputSchema: {
|
|
17935
17945
|
appId: exports_external.string().describe("target App, app_…"),
|
|
17936
17946
|
deploymentId: exports_external.string().describe("verified candidate, dep_…"),
|
|
@@ -17956,7 +17966,7 @@ var ACTIONS = [
|
|
|
17956
17966
|
{
|
|
17957
17967
|
name: "app_set_access",
|
|
17958
17968
|
title: "Change App access",
|
|
17959
|
-
description: "Change the gateway policy immediately and record who changed it: space requires a current Space member, while public permits anonymous requests and may be unlisted or listed. This does not redeploy code or pass an Arbor identity into App code.",
|
|
17969
|
+
description: "Change the gateway policy immediately and record who changed it: space requires a current Space member, while public permits anonymous requests and may be unlisted or listed. Durable Apps cannot become public. This does not redeploy code or pass an Arbor identity into App code.",
|
|
17960
17970
|
inputSchema: {
|
|
17961
17971
|
appId: exports_external.string().describe("target App, app_…"),
|
|
17962
17972
|
access: exports_external.enum(["space", "public"]).describe("new gateway access"),
|
|
@@ -17969,7 +17979,7 @@ var ACTIONS = [
|
|
|
17969
17979
|
{
|
|
17970
17980
|
name: "app_reset_state",
|
|
17971
17981
|
title: "Reset durable App state",
|
|
17972
|
-
description: "Permanently delete one durable App facet's isolated SQLite database as an explicit
|
|
17982
|
+
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.",
|
|
17973
17983
|
inputSchema: {
|
|
17974
17984
|
appId: exports_external.string().describe("durable App, app_…"),
|
|
17975
17985
|
expectedGeneration: exports_external.number().int().min(0).describe("state generation from app_get"),
|
package/package.json
CHANGED