@lambdacurry/arbor 0.13.6 → 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.
- package/dist/arbor.js +74 -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
|
-
|
|
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) => ({
|
|
@@ -16440,6 +16453,16 @@ var id = exports_external.string();
|
|
|
16440
16453
|
var timestamp = exports_external.string();
|
|
16441
16454
|
var nullableString = exports_external.string().nullable();
|
|
16442
16455
|
var jsonObject = exports_external.looseObject({});
|
|
16456
|
+
var appInvocationResponse = exports_external.object({
|
|
16457
|
+
status: exports_external.number().int().min(100).max(599),
|
|
16458
|
+
headers: exports_external.record(exports_external.string(), exports_external.string()),
|
|
16459
|
+
body: exports_external.string(),
|
|
16460
|
+
byteCount: exports_external.number().int().min(0).max(64 * 1024),
|
|
16461
|
+
truncated: exports_external.boolean(),
|
|
16462
|
+
bodyKind: exports_external.enum(["text", "unsupported"]),
|
|
16463
|
+
unsupportedReason: exports_external.enum(["binary_content_type", "invalid_utf8"]).optional(),
|
|
16464
|
+
json: exports_external.json().optional()
|
|
16465
|
+
});
|
|
16443
16466
|
var spaceRef = exports_external.looseObject({ id, title: nullableString });
|
|
16444
16467
|
var recallHit = exports_external.looseObject({
|
|
16445
16468
|
id,
|
|
@@ -16950,6 +16973,8 @@ var MCP_OUTPUT_SCHEMAS = {
|
|
|
16950
16973
|
url: exports_external.string()
|
|
16951
16974
|
}),
|
|
16952
16975
|
app_deployment_get: exports_external.looseObject({ deployment, bundle: jsonObject }),
|
|
16976
|
+
app_fetch: appInvocationResponse,
|
|
16977
|
+
app_request: appInvocationResponse,
|
|
16953
16978
|
app_create: app2,
|
|
16954
16979
|
app_deploy: exports_external.looseObject({
|
|
16955
16980
|
deployment,
|
|
@@ -16971,6 +16996,7 @@ var MCP_OUTPUT_SCHEMAS = {
|
|
|
16971
16996
|
}),
|
|
16972
16997
|
app_set_access: app2,
|
|
16973
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() }),
|
|
16974
17000
|
app_archive: app2,
|
|
16975
17001
|
charter: exports_external.looseObject({
|
|
16976
17002
|
ok: exports_external.boolean().optional(),
|
|
@@ -17211,12 +17237,15 @@ var MCP_TOOL_ANNOTATIONS = {
|
|
|
17211
17237
|
app_get: readOnly,
|
|
17212
17238
|
app_list: readOnly,
|
|
17213
17239
|
app_deployment_get: readOnly,
|
|
17240
|
+
app_fetch: readOnly,
|
|
17241
|
+
app_request: destructive,
|
|
17214
17242
|
app_create: additive,
|
|
17215
17243
|
app_deploy: idempotent,
|
|
17216
17244
|
app_activate: additive,
|
|
17217
17245
|
app_rollback: additive,
|
|
17218
17246
|
app_set_access: additive,
|
|
17219
17247
|
app_reset_state: destructiveIdempotent,
|
|
17248
|
+
app_restore_state: destructiveIdempotent,
|
|
17220
17249
|
app_archive: additive,
|
|
17221
17250
|
charter: destructive,
|
|
17222
17251
|
computer_open: additive,
|
|
@@ -18851,6 +18880,35 @@ var ACTION_DEFINITIONS = [
|
|
|
18851
18880
|
toolset: "apps",
|
|
18852
18881
|
run: forward("app.deployment_get")
|
|
18853
18882
|
},
|
|
18883
|
+
{
|
|
18884
|
+
name: "app_fetch",
|
|
18885
|
+
title: "Fetch from an App",
|
|
18886
|
+
description: "READ ONLY: Invoke GET or HEAD on one relative path of an App using your current Arbor identity; for Space Apps, current Space membership is rechecked on every call. It cannot modify App lifecycle, deployments, access, or durable SQLite; browser grants, cookies, credentials, and reserved /__arbor paths are never exposed to App code.",
|
|
18887
|
+
inputSchema: {
|
|
18888
|
+
appId: exports_external.string().describe("target App, app_…"),
|
|
18889
|
+
path: exports_external.string().min(1).max(2048).describe("relative App path beginning with /; may include a query string"),
|
|
18890
|
+
method: exports_external.enum(["GET", "HEAD"]).optional().describe("safe read method; default GET")
|
|
18891
|
+
},
|
|
18892
|
+
surfaces: ["mcp"],
|
|
18893
|
+
toolset: "apps",
|
|
18894
|
+
run: forward("app.fetch")
|
|
18895
|
+
},
|
|
18896
|
+
{
|
|
18897
|
+
name: "app_request",
|
|
18898
|
+
title: "Send a mutating App request",
|
|
18899
|
+
description: "Send POST, PUT, PATCH, or DELETE to one relative path of an App using your current Arbor identity; the App may mutate its own state. Supply either json or UTF-8 body, never both; browser grants, cookies, credentials, caller headers, and reserved /__arbor paths are never exposed to App code.",
|
|
18900
|
+
inputSchema: {
|
|
18901
|
+
appId: exports_external.string().describe("target App, app_…"),
|
|
18902
|
+
path: exports_external.string().min(1).max(2048).describe("relative App path beginning with /; may include a query string"),
|
|
18903
|
+
method: exports_external.enum(["POST", "PUT", "PATCH", "DELETE"]).describe("mutating HTTP method"),
|
|
18904
|
+
json: exports_external.json().optional().describe("JSON request value; mutually exclusive with body and sets application/json"),
|
|
18905
|
+
body: exports_external.string().optional().describe("UTF-8 request body; mutually exclusive with json"),
|
|
18906
|
+
contentType: exports_external.string().max(160).optional().describe("body media type; allowed only with body, default text/plain; charset=utf-8")
|
|
18907
|
+
},
|
|
18908
|
+
surfaces: ["mcp"],
|
|
18909
|
+
toolset: "apps",
|
|
18910
|
+
run: forward("app.request")
|
|
18911
|
+
},
|
|
18854
18912
|
{
|
|
18855
18913
|
name: "app_activate",
|
|
18856
18914
|
title: "Activate a verified deployment",
|
|
@@ -18893,7 +18951,7 @@ var ACTION_DEFINITIONS = [
|
|
|
18893
18951
|
{
|
|
18894
18952
|
name: "app_reset_state",
|
|
18895
18953
|
title: "Reset durable App state",
|
|
18896
|
-
description: "
|
|
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.",
|
|
18897
18955
|
inputSchema: {
|
|
18898
18956
|
appId: exports_external.string().describe("durable App, app_…"),
|
|
18899
18957
|
expectedGeneration: exports_external.number().int().min(0).describe("state generation from app_get"),
|
|
@@ -18903,6 +18961,20 @@ var ACTION_DEFINITIONS = [
|
|
|
18903
18961
|
toolset: "apps",
|
|
18904
18962
|
run: forward("app.reset_state")
|
|
18905
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
|
+
},
|
|
18906
18978
|
{
|
|
18907
18979
|
name: "app_archive",
|
|
18908
18980
|
title: "Archive an App",
|
package/package.json
CHANGED