apps 0.0.1-beta.11 → 0.0.1-beta.110
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/README.md +60 -42
- package/framework-reference.json +1 -1
- package/js/chunk-2RGJMA7N.js +5186 -0
- package/js/chunk-3BI34I5S.js +449 -0
- package/js/chunk-3BOEMXAJ.js +713 -0
- package/js/{chunk-JU7VHODU.js → chunk-4PIQKACY.js} +65 -10
- package/js/{chunk-VFZKSM3T.js → chunk-4X2UI4R2.js} +3 -3
- package/js/{chunk-KUMBKVJD.js → chunk-62NVUKED.js} +2 -2
- package/js/chunk-74H25C4X.js +95 -0
- package/js/chunk-7HG422GB.js +90 -0
- package/js/{chunk-UK573G7W.js → chunk-ACQXVKVQ.js} +87 -51
- package/js/chunk-BKIQCV72.js +994 -0
- package/js/{chunk-IJX4CYZO.js → chunk-DILSCQPJ.js} +228 -264
- package/js/chunk-HLMJBE4T.js +49 -0
- package/js/{chunk-RELFXUOO.js → chunk-JCX2K2SI.js} +931 -289
- package/js/{chunk-M3B3DE4K.js → chunk-KLSEU35Y.js} +463 -218
- package/js/chunk-OD3KFKZD.js +1617 -0
- package/js/chunk-OIH73VFM.js +175 -0
- package/js/chunk-OWN3DP2W.js +88 -0
- package/js/{chunk-IPI4MFSN.js → chunk-PBGPES67.js} +2 -2
- package/js/{chunk-WVVV4TX2.js → chunk-RIV62DRM.js} +4 -3
- package/js/{chunk-RFVIONFX.js → chunk-SXQVVXJE.js} +123 -44
- package/js/chunk-UPTAFF6L.js +335 -0
- package/js/{chunk-ODEIDRGW.js → chunk-URKOTNDA.js} +795 -176
- package/js/{chunk-5T57N25Q.js → chunk-VAI3EVCS.js} +643 -69
- package/js/{chunk-57RKNWL2.js → chunk-YDW7DX3A.js} +4 -4
- package/js/{chunk-CDL5PM2Q.js → chunk-ZKDXML77.js} +19239 -18404
- package/js/{chunk-GPFVWWDZ.js → chunk-ZXG7RMCB.js} +113 -58
- package/js/client.js +148 -84
- package/js/contracts.js +150 -21
- package/js/effect.js +18 -19
- package/js/{es-APDZKREY.js → es-DIULA3ZF.js} +62 -1659
- package/js/graphql.js +231 -188
- package/js/host.js +116 -78
- package/js/index.js +213 -98
- package/js/mcp/effect.js +21 -21
- package/js/mcp.js +91 -57
- package/js/openapi.js +4349 -1415
- package/js/react.js +2 -3
- package/js/skills/effect.js +6 -3
- package/js/skills.js +208 -81
- package/js/storage/facet.js +1 -540
- package/js/ui/auth/contracts.js +2 -2
- package/js/ui/auth.js +5 -5
- package/js/ui/contracts.js +9 -8
- package/js/ui/serving.js +8609 -228
- package/package.json +3 -8
- package/runtime.json +1 -1
- package/types/app-cache/src/contracts/cache.d.ts +18 -0
- package/types/app-cache/src/index.d.ts +34 -2
- package/types/apps/src/contracts/api-response-error.d.ts +4 -0
- package/types/apps/src/contracts/app.d.ts +56 -11
- package/types/apps/src/contracts/cache.d.ts +20 -0
- package/types/apps/src/contracts/context.d.ts +60 -17
- package/types/apps/src/contracts/elicitation.d.ts +23 -7
- package/types/apps/src/contracts/events.d.ts +94 -0
- package/types/apps/src/contracts/failure.d.ts +30 -1
- package/types/apps/src/contracts/graphql.d.ts +40 -2
- package/types/apps/src/contracts/host.d.ts +1456 -20
- package/types/apps/src/contracts/icons.d.ts +28 -0
- package/types/apps/src/contracts/live.d.ts +2 -0
- package/types/apps/src/contracts/mcp.d.ts +81 -20
- package/types/apps/src/contracts/network.d.ts +120 -0
- package/types/apps/src/contracts/openapi-compile.d.ts +82 -3
- package/types/apps/src/contracts/openapi-document.d.ts +1 -1
- package/types/apps/src/contracts/openapi.d.ts +41 -9
- package/types/apps/src/contracts/operations.d.ts +14 -7
- package/types/apps/src/contracts/placement.d.ts +102 -0
- package/types/apps/src/contracts/protocol-version.d.ts +2 -2
- package/types/apps/src/contracts/protocols/1.d.ts +733 -81
- package/types/apps/src/contracts/protocols/10.d.ts +1450 -0
- package/types/apps/src/contracts/protocols/11.d.ts +1149 -0
- package/types/apps/src/contracts/protocols/12.d.ts +3310 -0
- package/types/apps/src/contracts/protocols/2.d.ts +69 -26
- package/types/apps/src/contracts/protocols/3.d.ts +133 -33
- package/types/apps/src/contracts/protocols/4.d.ts +122 -45
- package/types/apps/src/contracts/protocols/5.d.ts +157 -47
- package/types/apps/src/contracts/protocols/6.d.ts +1629 -0
- package/types/apps/src/contracts/protocols/7.d.ts +1785 -0
- package/types/apps/src/contracts/protocols/8.d.ts +1182 -0
- package/types/apps/src/contracts/protocols/9.d.ts +1104 -0
- package/types/apps/src/contracts/protocols/current.d.ts +6869 -0
- package/types/apps/src/contracts/protocols/oauth-6.d.ts +74 -0
- package/types/apps/src/contracts/protocols/oauth.d.ts +134 -0
- package/types/apps/src/contracts/provider-error.d.ts +9 -0
- package/types/apps/src/contracts/provider.d.ts +85 -6
- package/types/apps/src/contracts/router.d.ts +2 -1
- package/types/apps/src/contracts/schedules.d.ts +7 -1
- package/types/apps/src/contracts/schema.d.ts +21 -0
- package/types/apps/src/contracts/shared-catalog.d.ts +11 -0
- package/types/apps/src/contracts/skills.d.ts +50 -13
- package/types/apps/src/contracts/sql.d.ts +63 -0
- package/types/apps/src/contracts/ui.d.ts +70 -30
- package/types/apps/src/contracts/webhooks.d.ts +24 -7
- package/types/apps/src/contracts/workflows.d.ts +56 -34
- package/types/apps/src/facet.d.ts +4 -5
- package/types/apps/src/host.d.ts +5 -0
- package/types/apps/src/implementation/account-router.d.ts +4 -3
- package/types/apps/src/implementation/app.d.ts +41 -14
- package/types/apps/src/implementation/authoring.d.ts +25 -5
- package/types/apps/src/implementation/browser-scripts.gen.d.ts +6 -0
- package/types/apps/src/implementation/cache.d.ts +29 -2
- package/types/apps/src/implementation/catalog-cache.d.ts +35 -4
- package/types/apps/src/implementation/elicitation.d.ts +18 -15
- package/types/apps/src/implementation/events.d.ts +64 -0
- package/types/apps/src/implementation/failure-detail.d.ts +28 -5
- package/types/apps/src/implementation/graphql-catalog.d.ts +3 -3
- package/types/apps/src/implementation/graphql.d.ts +4 -3
- package/types/apps/src/implementation/input-problems.d.ts +6 -2
- package/types/apps/src/implementation/invocation-timing.d.ts +18 -0
- package/types/apps/src/implementation/live.d.ts +2 -2
- package/types/apps/src/implementation/mcp-call.d.ts +6 -5
- package/types/apps/src/implementation/mcp-catalog.d.ts +6 -4
- package/types/apps/src/implementation/mcp-client.d.ts +17 -9
- package/types/apps/src/implementation/mcp-tools.d.ts +2 -1
- package/types/apps/src/implementation/mcp.d.ts +20 -9
- package/types/apps/src/implementation/network.d.ts +16 -0
- package/types/apps/src/implementation/openapi-compile.d.ts +38 -7
- package/types/apps/src/implementation/openapi-document.d.ts +50 -20
- package/types/apps/src/implementation/openapi-names.d.ts +9 -4
- package/types/apps/src/implementation/openapi-request.d.ts +10 -2
- package/types/apps/src/implementation/openapi-source.d.ts +23 -1
- package/types/apps/src/implementation/openapi-upgrade.d.ts +4 -0
- package/types/apps/src/implementation/operations.d.ts +58 -7
- package/types/apps/src/implementation/optimistic.d.ts +1 -1
- package/types/apps/src/implementation/placement.d.ts +60 -0
- package/types/apps/src/implementation/protocol-operations.d.ts +3 -0
- package/types/apps/src/implementation/provider-error.d.ts +28 -1
- package/types/apps/src/implementation/provider.d.ts +19 -4
- package/types/apps/src/implementation/query-commit.d.ts +1 -1
- package/types/apps/src/implementation/router-catalog.d.ts +24 -18
- package/types/apps/src/implementation/router.d.ts +26 -6
- package/types/apps/src/implementation/runtime-yield.d.ts +7 -0
- package/types/apps/src/implementation/schedules.d.ts +39 -8
- package/types/apps/src/implementation/schema.d.ts +108 -11
- package/types/apps/src/implementation/skills.d.ts +18 -24
- package/types/apps/src/implementation/sql.d.ts +71 -0
- package/types/apps/src/implementation/ui-account-notice.d.ts +9 -0
- package/types/apps/src/implementation/ui-auth.d.ts +1 -1
- package/types/apps/src/implementation/ui-client.d.ts +3 -3
- package/types/apps/src/implementation/ui-document.d.ts +5 -0
- package/types/apps/src/implementation/ui-errors.d.ts +1 -1
- package/types/apps/src/implementation/ui-serving.d.ts +28 -11
- package/types/apps/src/implementation/ui-watch.d.ts +1 -1
- package/types/apps/src/implementation/upstream-error.d.ts +17 -0
- package/types/apps/src/implementation/webhooks.d.ts +15 -6
- package/types/apps/src/implementation/workflow-context.d.ts +6 -2
- package/types/apps/src/implementation/workflows.d.ts +11 -4
- package/types/apps/src/index.d.ts +51 -16
- package/types/apps/src/mcp.d.ts +20 -1
- package/types/apps/src/openapi.d.ts +22 -1
- package/types/apps/src/react.d.ts +1 -1
- package/types/apps/src/skills.d.ts +10 -8
- package/types/apps/src/ui-serving.d.ts +1 -1
- package/types/telemetry/src/app-records.d.ts +42 -0
- package/types/telemetry/src/browser-operations.d.ts +2 -2
- package/types/telemetry/src/browser.d.ts +8 -3
- package/types/telemetry/src/config.d.ts +2 -2
- package/types/telemetry/src/index.d.ts +2 -1
- package/types/telemetry/src/layer.d.ts +10 -4
- package/types/telemetry/src/measurements.d.ts +1 -1
- package/types/telemetry/src/ownership.d.ts +60 -0
- package/types/telemetry/src/recorded-failure.d.ts +29 -0
- package/types/telemetry/src/relay.d.ts +16 -6
- package/types/telemetry/src/span-attributes.d.ts +17 -1
- package/types/telemetry/src/transport.d.ts +8 -1
- package/types/utils/src/api-error.d.ts +55 -0
- package/types/utils/src/connection-failure.d.ts +33 -0
- package/types/utils/src/legacy-keys.d.ts +20 -0
- package/types/utils/src/recorded-message.d.ts +18 -0
- package/types/utils/src/schema-definitions.d.ts +13 -0
- package/types/utils/src/user-facing-error.d.ts +83 -0
- package/js/chunk-27F7W2LG.js +0 -34
- package/js/chunk-EFAPIRVB.js +0 -299
- package/js/chunk-KRSCJDTW.js +0 -2668
- package/js/chunk-MKWZPDR6.js +0 -63
- package/js/chunk-N7YDVXYJ.js +0 -186
- package/js/chunk-NKLWZJLE.js +0 -172
- package/js/chunk-PJJ24GU7.js +0 -877
- package/js/chunk-PZB6T6KU.js +0 -19
- package/js/chunk-R3EV5FTO.js +0 -97
- package/js/chunk-TYVDBQSI.js +0 -242
- package/js/chunk-YBRC463S.js +0 -224
- package/js/chunk-Z2QY3YTF.js +0 -507
- package/js/chunk-ZQINWV4W.js +0 -630
- package/js/mcp/stdio.js +0 -128
- package/types/app-data/src/implementation/cursor.d.ts +0 -10
- package/types/app-data/src/implementation/index-key.d.ts +0 -7
- package/types/app-data/src/implementation/promise.d.ts +0 -68
- package/types/app-data/src/implementation/range.d.ts +0 -8
- package/types/app-data/src/implementation/schema.d.ts +0 -18
- package/types/app-data/src/implementation/sqlite.d.ts +0 -11
- package/types/app-data/src/index.d.ts +0 -4
- package/types/apps/src/contracts/storage.d.ts +0 -68
- package/types/apps/src/implementation/mcp-stdio.d.ts +0 -4
- package/types/apps/src/implementation/storage.d.ts +0 -15
- package/types/apps/src/mcp-stdio.d.ts +0 -5
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ProviderError,
|
|
3
|
+
maxUpstreamMessageLength
|
|
4
|
+
} from "./chunk-2RGJMA7N.js";
|
|
5
|
+
import {
|
|
6
|
+
owned
|
|
7
|
+
} from "./chunk-URKOTNDA.js";
|
|
8
|
+
import {
|
|
9
|
+
AccountId
|
|
10
|
+
} from "./chunk-7HG422GB.js";
|
|
11
|
+
import {
|
|
12
|
+
Effect_exports,
|
|
13
|
+
Option_exports,
|
|
14
|
+
Schema_exports
|
|
15
|
+
} from "./chunk-ZKDXML77.js";
|
|
16
|
+
|
|
17
|
+
// src/implementation/authoring.ts
|
|
18
|
+
var NativeCallback = /* @__PURE__ */ Symbol("apps.NativeCallback");
|
|
19
|
+
var appCode = (code) => owned("app", "app.code", { attributes: { "executor.app.code": code } });
|
|
20
|
+
var fromPromise = (callback, code) => (...args) => {
|
|
21
|
+
if (NativeCallback in callback) {
|
|
22
|
+
const native = callback[NativeCallback];
|
|
23
|
+
return native(...args);
|
|
24
|
+
}
|
|
25
|
+
return Effect_exports.tryPromise({ try: () => callback(...args), catch: (error) => error }).pipe(
|
|
26
|
+
appCode(code)
|
|
27
|
+
);
|
|
28
|
+
};
|
|
29
|
+
var method = (target, key) => {
|
|
30
|
+
const value = target[key];
|
|
31
|
+
const call = (...args) => Reflect.apply(value, target, args);
|
|
32
|
+
if (NativeCallback in value) Object.assign(call, { [NativeCallback]: value[NativeCallback] });
|
|
33
|
+
return call;
|
|
34
|
+
};
|
|
35
|
+
var toPromise = (operation, signalOf, services) => {
|
|
36
|
+
const native = (...args) => Effect_exports.suspend(() => {
|
|
37
|
+
const signal = typeof signalOf === "function" ? signalOf(...args) : signalOf;
|
|
38
|
+
if (signal === void 0) return operation(...args);
|
|
39
|
+
if (signal.aborted) return Effect_exports.interrupt;
|
|
40
|
+
const cancelled = Effect_exports.callback((resume) => {
|
|
41
|
+
if (signal.aborted) {
|
|
42
|
+
resume(Effect_exports.interrupt);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const abort = () => resume(Effect_exports.interrupt);
|
|
46
|
+
signal.addEventListener("abort", abort, { once: true });
|
|
47
|
+
return Effect_exports.sync(() => signal.removeEventListener("abort", abort));
|
|
48
|
+
});
|
|
49
|
+
return Effect_exports.raceFirst(
|
|
50
|
+
cancelled,
|
|
51
|
+
Effect_exports.suspend(() => operation(...args))
|
|
52
|
+
);
|
|
53
|
+
});
|
|
54
|
+
return Object.assign(
|
|
55
|
+
(...args) => services === void 0 ? Effect_exports.runPromise(native(...args)) : Effect_exports.runPromiseWith(services)(native(...args)),
|
|
56
|
+
{
|
|
57
|
+
[NativeCallback]: native
|
|
58
|
+
}
|
|
59
|
+
);
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
// src/implementation/upstream-error.ts
|
|
63
|
+
var ErrorToken = Schema_exports.String.check(Schema_exports.isPattern(/^[A-Za-z0-9._-]{1,128}$/u));
|
|
64
|
+
var NestedError = Schema_exports.Struct({
|
|
65
|
+
error: Schema_exports.Struct({ code: Schema_exports.Union([Schema_exports.Int, ErrorToken]), message: Schema_exports.String })
|
|
66
|
+
});
|
|
67
|
+
var OAuthError = Schema_exports.Struct({
|
|
68
|
+
error: ErrorToken,
|
|
69
|
+
error_description: Schema_exports.optional(Schema_exports.String)
|
|
70
|
+
});
|
|
71
|
+
var boundStated = (text, maximum) => text.length <= maximum ? text : `${text.slice(0, maximum - 1)}\u2026`;
|
|
72
|
+
var isShortenedStated = (text, maximum) => text.length === maximum && text.endsWith("\u2026");
|
|
73
|
+
var bounded = (message) => boundStated(message, maxUpstreamMessageLength);
|
|
74
|
+
var statedUpstream = (code, message) => ({
|
|
75
|
+
code,
|
|
76
|
+
...message === void 0 || message === "" ? {} : { message: bounded(message) }
|
|
77
|
+
});
|
|
78
|
+
var bodyUpstreamError = (json) => {
|
|
79
|
+
const nested = Schema_exports.decodeUnknownOption(NestedError)(json);
|
|
80
|
+
if (Option_exports.isSome(nested))
|
|
81
|
+
return statedUpstream(nested.value.error.code, nested.value.error.message);
|
|
82
|
+
const oauth = Schema_exports.decodeUnknownOption(OAuthError)(json);
|
|
83
|
+
if (Option_exports.isSome(oauth)) return statedUpstream(oauth.value.error, oauth.value.error_description);
|
|
84
|
+
return void 0;
|
|
85
|
+
};
|
|
86
|
+
var authParam = /([A-Za-z][A-Za-z0-9_-]*)\s*=\s*(?:"((?:[^"\\]|\\.)*)"|([^\s,"]+))/g;
|
|
87
|
+
var challengeUpstreamError = (header) => {
|
|
88
|
+
const bearer = header === void 0 ? -1 : header.search(/\bBearer\b/i);
|
|
89
|
+
if (header === void 0 || bearer === -1) return void 0;
|
|
90
|
+
const params = /* @__PURE__ */ new Map();
|
|
91
|
+
for (const [, name, quoted, token] of header.slice(bearer + "Bearer".length).matchAll(authParam))
|
|
92
|
+
if (name !== void 0 && !params.has(name.toLowerCase()))
|
|
93
|
+
params.set(name.toLowerCase(), quoted?.replace(/\\(.)/g, "$1") ?? token ?? "");
|
|
94
|
+
const code = Schema_exports.decodeUnknownOption(ErrorToken)(params.get("error"));
|
|
95
|
+
return Option_exports.isNone(code) ? void 0 : statedUpstream(code.value, params.get("error_description"));
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
// src/implementation/provider-error.ts
|
|
99
|
+
var providerError = ({
|
|
100
|
+
reason,
|
|
101
|
+
status,
|
|
102
|
+
accountId,
|
|
103
|
+
phase,
|
|
104
|
+
upstream
|
|
105
|
+
}) => new ProviderError({
|
|
106
|
+
reason,
|
|
107
|
+
...status === void 0 ? {} : { status },
|
|
108
|
+
...accountId === void 0 ? {} : { accountId },
|
|
109
|
+
...phase === void 0 ? {} : { phase },
|
|
110
|
+
...upstream === void 0 ? {} : { upstream }
|
|
111
|
+
});
|
|
112
|
+
function parseProviderError(error) {
|
|
113
|
+
return Schema_exports.decodeUnknownOption(ProviderError)(error).pipe(Option_exports.map(providerError));
|
|
114
|
+
}
|
|
115
|
+
function providerErrorDetail(error, detail) {
|
|
116
|
+
return providerError({
|
|
117
|
+
...error,
|
|
118
|
+
phase: error.phase ?? detail.phase,
|
|
119
|
+
upstream: error.upstream ?? detail.upstream
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
function httpProviderError(status, headers = {}) {
|
|
123
|
+
const upstream = challengeUpstreamError(headers["www-authenticate"]);
|
|
124
|
+
if (status >= 500 && status <= 599)
|
|
125
|
+
return providerError({ reason: "unavailable", status, upstream });
|
|
126
|
+
if (status === 401) return providerError({ reason: "unauthorized", status, upstream });
|
|
127
|
+
if (status === 429) return providerError({ reason: "rate_limited", status, upstream });
|
|
128
|
+
if (status !== 403) return void 0;
|
|
129
|
+
const retry = headers["retry-after"];
|
|
130
|
+
if (headers["x-ratelimit-remaining"] === "0" || retry !== void 0 && (/^\d+$/.test(retry) || Number.isFinite(Date.parse(retry))))
|
|
131
|
+
return providerError({ reason: "rate_limited", status, upstream });
|
|
132
|
+
if (typeof upstream?.code === "string" && upstream.code.toLowerCase() === "insufficient_scope")
|
|
133
|
+
return providerError({ reason: "forbidden", status, upstream });
|
|
134
|
+
return providerError({ reason: "rejected", status, upstream });
|
|
135
|
+
}
|
|
136
|
+
function accountProviderError(error, accountId) {
|
|
137
|
+
const parsed = parseProviderError(error);
|
|
138
|
+
const account = Schema_exports.decodeUnknownOption(AccountId)(accountId);
|
|
139
|
+
if (Option_exports.isNone(parsed) || Option_exports.isNone(account)) return error;
|
|
140
|
+
return providerError({ ...parsed.value, accountId: account.value });
|
|
141
|
+
}
|
|
142
|
+
function graphqlProviderError(errors, status) {
|
|
143
|
+
const codes = errors.flatMap((error) => {
|
|
144
|
+
const parsed = Schema_exports.decodeUnknownOption(
|
|
145
|
+
Schema_exports.Struct({
|
|
146
|
+
type: Schema_exports.optional(Schema_exports.String),
|
|
147
|
+
extensions: Schema_exports.optional(Schema_exports.Struct({ code: Schema_exports.optional(Schema_exports.String) }))
|
|
148
|
+
})
|
|
149
|
+
)(error);
|
|
150
|
+
return Option_exports.isSome(parsed) ? [parsed.value.type, parsed.value.extensions?.code] : [];
|
|
151
|
+
});
|
|
152
|
+
if (codes.includes("RATE_LIMITED") || codes.includes("TOO_MANY_REQUESTS"))
|
|
153
|
+
return new ProviderError({ reason: "rate_limited", status });
|
|
154
|
+
if (codes.includes("UNAUTHENTICATED"))
|
|
155
|
+
return new ProviderError({ reason: "unauthorized", status });
|
|
156
|
+
if (codes.includes("FORBIDDEN")) return new ProviderError({ reason: "forbidden", status });
|
|
157
|
+
return void 0;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
export {
|
|
161
|
+
appCode,
|
|
162
|
+
fromPromise,
|
|
163
|
+
method,
|
|
164
|
+
toPromise,
|
|
165
|
+
boundStated,
|
|
166
|
+
isShortenedStated,
|
|
167
|
+
statedUpstream,
|
|
168
|
+
bodyUpstreamError,
|
|
169
|
+
providerError,
|
|
170
|
+
parseProviderError,
|
|
171
|
+
providerErrorDetail,
|
|
172
|
+
httpProviderError,
|
|
173
|
+
accountProviderError,
|
|
174
|
+
graphqlProviderError
|
|
175
|
+
};
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Predicate_exports
|
|
3
|
+
} from "./chunk-ZKDXML77.js";
|
|
4
|
+
|
|
5
|
+
// ../utils/src/recorded-message.ts
|
|
6
|
+
var RecordedMessage = /* @__PURE__ */ Symbol.for("@executor-js/utils/RecordedMessage");
|
|
7
|
+
var recordedMessage = (error) => {
|
|
8
|
+
if (Predicate_exports.hasProperty(error, RecordedMessage)) {
|
|
9
|
+
const message = error[RecordedMessage];
|
|
10
|
+
return typeof message === "string" ? message : void 0;
|
|
11
|
+
}
|
|
12
|
+
return protocolErrorMessage(error) ?? sqlErrorMessage(error);
|
|
13
|
+
};
|
|
14
|
+
var jsonRpcMeanings = {
|
|
15
|
+
[-32700]: "Parse error",
|
|
16
|
+
[-32600]: "Invalid request",
|
|
17
|
+
[-32601]: "Method not found",
|
|
18
|
+
[-32602]: "Invalid params",
|
|
19
|
+
[-32603]: "Internal error",
|
|
20
|
+
[-32002]: "Resource not found"
|
|
21
|
+
};
|
|
22
|
+
var protocolErrorMessage = (error) => {
|
|
23
|
+
if (!Predicate_exports.isTagged(error, "ProtocolError") || !Predicate_exports.hasProperty(error, "code") || typeof error.code !== "number" || !Predicate_exports.hasProperty(error, "message") || !Predicate_exports.isString(error.message))
|
|
24
|
+
return void 0;
|
|
25
|
+
const code = error.code;
|
|
26
|
+
const refusal = /^Tool '.*' not found$/s.test(error.message) ? ": the requested tool does not exist" : error.message.startsWith("Invalid parameters for tool '") ? ": the tool's arguments failed validation" : "";
|
|
27
|
+
const meaning = jsonRpcMeanings[code];
|
|
28
|
+
const kind = meaning === void 0 ? "JSON-RPC error with an unlisted code" : `${meaning} (${code})`;
|
|
29
|
+
return kind + refusal;
|
|
30
|
+
};
|
|
31
|
+
var sqlReasons = /* @__PURE__ */ new Set([
|
|
32
|
+
"ConnectionError",
|
|
33
|
+
"AuthenticationError",
|
|
34
|
+
"AuthorizationError",
|
|
35
|
+
"SqlSyntaxError",
|
|
36
|
+
"UniqueViolation",
|
|
37
|
+
"ConstraintError",
|
|
38
|
+
"DeadlockError",
|
|
39
|
+
"SerializationError",
|
|
40
|
+
"LockTimeoutError",
|
|
41
|
+
"StatementTimeoutError",
|
|
42
|
+
"UnknownError"
|
|
43
|
+
]);
|
|
44
|
+
var sqlMessages = new Set(
|
|
45
|
+
[
|
|
46
|
+
"A pipelined query completed out of order",
|
|
47
|
+
"Connection closed",
|
|
48
|
+
"Connection closed during startup",
|
|
49
|
+
"Connection is closed",
|
|
50
|
+
"Connection timed out",
|
|
51
|
+
"Failed to connect",
|
|
52
|
+
"Failed to decode row",
|
|
53
|
+
"Failed to encode query",
|
|
54
|
+
"Failed to negotiate TLS",
|
|
55
|
+
"Failed to parse SSLRequest error response",
|
|
56
|
+
"Failed to parse server messages",
|
|
57
|
+
"Failed to parse server response",
|
|
58
|
+
"Failed to write query",
|
|
59
|
+
"Failed to write query batch",
|
|
60
|
+
"Invalid SSLRequest response",
|
|
61
|
+
"MD5 authentication failed",
|
|
62
|
+
"No password configured",
|
|
63
|
+
"Protocol desync",
|
|
64
|
+
"Query cancellation timed out",
|
|
65
|
+
"Query failed",
|
|
66
|
+
"SCRAM authentication failed",
|
|
67
|
+
"SCRAM exchange did not complete",
|
|
68
|
+
"SCRAM server verification failed",
|
|
69
|
+
"Server refused TLS",
|
|
70
|
+
"Socket error",
|
|
71
|
+
"Stream cancellation timed out",
|
|
72
|
+
"The server reported an error",
|
|
73
|
+
"Unsupported authentication method"
|
|
74
|
+
].map((message) => `PgConnection: ${message}`)
|
|
75
|
+
);
|
|
76
|
+
var sqlErrorMessage = (error) => {
|
|
77
|
+
if (!Predicate_exports.isTagged(error, "SqlError") || !Predicate_exports.hasProperty(error, "reason"))
|
|
78
|
+
return void 0;
|
|
79
|
+
const reason = error.reason;
|
|
80
|
+
const kind = Predicate_exports.hasProperty(reason, "_tag") && Predicate_exports.isString(reason._tag) && sqlReasons.has(reason._tag) ? reason._tag : "an unlisted kind";
|
|
81
|
+
const message = Predicate_exports.hasProperty(reason, "message") && Predicate_exports.isString(reason.message) && sqlMessages.has(reason.message) ? `: ${reason.message}` : "";
|
|
82
|
+
return `The database failed (${kind})${message}`;
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
export {
|
|
86
|
+
RecordedMessage,
|
|
87
|
+
recordedMessage
|
|
88
|
+
};
|
|
@@ -5,11 +5,11 @@ import {
|
|
|
5
5
|
SkillDefinitionInvalid,
|
|
6
6
|
SkillFile,
|
|
7
7
|
SkillFilePath
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-4PIQKACY.js";
|
|
9
9
|
import {
|
|
10
10
|
Effect_exports,
|
|
11
11
|
Schema_exports
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-ZKDXML77.js";
|
|
13
13
|
|
|
14
14
|
// src/implementation/skill-files.ts
|
|
15
15
|
var skillFromFiles = (input, source = {}) => Effect_exports.gen(function* () {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
fixedRouter
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-BKIQCV72.js";
|
|
4
4
|
import {
|
|
5
5
|
nativeOperation,
|
|
6
6
|
operationDeclaration,
|
|
7
7
|
routerDeclaration
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-ZXG7RMCB.js";
|
|
9
9
|
|
|
10
10
|
// src/implementation/protocol-operations.ts
|
|
11
11
|
var protocolOperations = (operations, kinds = {}) => {
|
|
@@ -18,10 +18,11 @@ var protocolOperations = (operations, kinds = {}) => {
|
|
|
18
18
|
...operation.annotations === void 0 ? {} : { annotations: operation.annotations },
|
|
19
19
|
...operation._meta === void 0 ? {} : { _meta: operation._meta },
|
|
20
20
|
input: operation.input,
|
|
21
|
+
...operation.output === void 0 ? {} : { output: operation.output },
|
|
21
22
|
run: operation.run
|
|
22
23
|
};
|
|
23
24
|
const output = Object.getOwnPropertyDescriptor(operation, "outputSchema");
|
|
24
|
-
const withOutput = (target) => output === void 0 || output.get === void 0 && output.value === void 0 ? target : Object.defineProperty(target, "outputSchema", { ...output, enumerable: true });
|
|
25
|
+
const withOutput = (target) => operation.output !== void 0 || output === void 0 || output.get === void 0 && output.value === void 0 ? target : Object.defineProperty(target, "outputSchema", { ...output, enumerable: true });
|
|
25
26
|
declared[name] = operationDeclaration(withOutput({ ...native, kind }));
|
|
26
27
|
}
|
|
27
28
|
return declared;
|
|
@@ -1,27 +1,56 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getWithReads
|
|
3
|
+
} from "./chunk-UPTAFF6L.js";
|
|
4
|
+
import {
|
|
5
|
+
fromPromise,
|
|
6
|
+
method,
|
|
7
|
+
toPromise
|
|
8
|
+
} from "./chunk-OIH73VFM.js";
|
|
1
9
|
import {
|
|
2
10
|
CacheError
|
|
3
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-2RGJMA7N.js";
|
|
4
12
|
import {
|
|
5
13
|
wrap
|
|
6
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-VAI3EVCS.js";
|
|
7
15
|
import {
|
|
8
16
|
JsonObject
|
|
9
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-7HG422GB.js";
|
|
10
18
|
import {
|
|
19
|
+
Deferred_exports,
|
|
11
20
|
Duration_exports,
|
|
12
21
|
Effect_exports,
|
|
22
|
+
Exit_exports,
|
|
13
23
|
Schema_exports
|
|
14
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-ZKDXML77.js";
|
|
15
25
|
|
|
16
26
|
// src/implementation/catalog-cache.ts
|
|
27
|
+
var catalogScope = (options, credential, invalid) => {
|
|
28
|
+
const { account, cache } = options;
|
|
29
|
+
if (account === void 0)
|
|
30
|
+
return credential === void 0 ? Effect_exports.succeed(cache) : Effect_exports.fail(invalid("missing-account"));
|
|
31
|
+
if (cache === void 0) return Effect_exports.succeed(void 0);
|
|
32
|
+
return Effect_exports.try({
|
|
33
|
+
try: () => cache.forAccount(account),
|
|
34
|
+
catch: () => invalid("unselected-account")
|
|
35
|
+
});
|
|
36
|
+
};
|
|
17
37
|
var schema = (decoder) => wrap(decoder, false);
|
|
38
|
+
var seenRevisions = /* @__PURE__ */ new Map();
|
|
39
|
+
var seenLimit = 256;
|
|
40
|
+
var seen = (key, revision) => {
|
|
41
|
+
seenRevisions.delete(key);
|
|
42
|
+
seenRevisions.set(key, revision);
|
|
43
|
+
if (seenRevisions.size > seenLimit) {
|
|
44
|
+
const oldest = seenRevisions.keys().next();
|
|
45
|
+
if (oldest.done !== true) seenRevisions.delete(oldest.value);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
18
48
|
var Manifest = Schema_exports.Struct({
|
|
19
49
|
revision: Schema_exports.String,
|
|
20
50
|
pages: Schema_exports.Int,
|
|
21
51
|
summaries: Schema_exports.Int,
|
|
22
52
|
header: Schema_exports.optionalKey(JsonObject)
|
|
23
53
|
});
|
|
24
|
-
var invoke = (work) => Effect_exports.tryPromise({ try: work, catch: (error) => error });
|
|
25
54
|
var catalogCache = (options) => Effect_exports.gen(function* () {
|
|
26
55
|
const cache = options.cache;
|
|
27
56
|
const key = [...options.prefix, "current"];
|
|
@@ -35,14 +64,42 @@ var catalogCache = (options) => Effect_exports.gen(function* () {
|
|
|
35
64
|
const staleFor = options.staleFor ?? "1 day";
|
|
36
65
|
const retention = Duration_exports.toMillis(Duration_exports.fromInputUnsafe(freshFor)) + Duration_exports.toMillis(Duration_exports.fromInputUnsafe(staleFor)) + 3e5;
|
|
37
66
|
const local = yield* Effect_exports.cached(options.load());
|
|
67
|
+
const pages = (cache2, revision, kind, count, decoder) => Effect_exports.gen(function* () {
|
|
68
|
+
const batches = yield* Effect_exports.forEach(
|
|
69
|
+
Array.from({ length: Math.ceil(count / 4) }, (_, batch) => batch * 4),
|
|
70
|
+
(offset) => fromPromise(method(cache2, "readMany"), "cache")(
|
|
71
|
+
Array.from(
|
|
72
|
+
{ length: Math.min(4, count - offset) },
|
|
73
|
+
(_, index) => part(revision, kind, offset + index)
|
|
74
|
+
),
|
|
75
|
+
schema(Schema_exports.Array(decoder))
|
|
76
|
+
),
|
|
77
|
+
{ concurrency: "unbounded" }
|
|
78
|
+
);
|
|
79
|
+
const values = [];
|
|
80
|
+
for (const page of batches.flat()) {
|
|
81
|
+
if (page === void 0) return yield* new CacheError({ reason: "unavailable" });
|
|
82
|
+
values.push(...page);
|
|
83
|
+
}
|
|
84
|
+
return values;
|
|
85
|
+
});
|
|
86
|
+
const kept = (cache2) => fromPromise(method(cache2, "read"), "cache")(key, schema(Manifest)).pipe(
|
|
87
|
+
Effect_exports.map(
|
|
88
|
+
(manifest) => manifest === void 0 ? void 0 : {
|
|
89
|
+
header: manifest.header,
|
|
90
|
+
tools: pages(cache2, manifest.revision, "page", manifest.pages, options.schema)
|
|
91
|
+
}
|
|
92
|
+
)
|
|
93
|
+
);
|
|
38
94
|
const refresh = (context) => Effect_exports.gen(function* () {
|
|
39
|
-
const { tools, header } = yield* options.load(context);
|
|
40
|
-
const digest = yield*
|
|
41
|
-
() => crypto.subtle.digest(
|
|
95
|
+
const { tools, header } = yield* options.load(context, kept(context.cache));
|
|
96
|
+
const digest = yield* Effect_exports.tryPromise({
|
|
97
|
+
try: () => crypto.subtle.digest(
|
|
42
98
|
"SHA-256",
|
|
43
99
|
new TextEncoder().encode(JSON.stringify({ tools, header: header ?? null }))
|
|
44
|
-
)
|
|
45
|
-
|
|
100
|
+
),
|
|
101
|
+
catch: (error) => error
|
|
102
|
+
});
|
|
46
103
|
const revision = Array.from(
|
|
47
104
|
new Uint8Array(digest),
|
|
48
105
|
(byte) => byte.toString(16).padStart(2, "0")
|
|
@@ -62,7 +119,7 @@ var catalogCache = (options) => Effect_exports.gen(function* () {
|
|
|
62
119
|
batch = [];
|
|
63
120
|
batchBytes = 0;
|
|
64
121
|
if (!entries.length) return Effect_exports.void;
|
|
65
|
-
return
|
|
122
|
+
return fromPromise(method(context.cache, "write"), "cache")(entries, retention).pipe(
|
|
66
123
|
Effect_exports.withSpan("app.cache.flush", {
|
|
67
124
|
attributes: {
|
|
68
125
|
"cache.flush.index": flushes++,
|
|
@@ -120,39 +177,54 @@ var catalogCache = (options) => Effect_exports.gen(function* () {
|
|
|
120
177
|
schema: schema(Manifest),
|
|
121
178
|
freshFor,
|
|
122
179
|
staleFor,
|
|
123
|
-
|
|
180
|
+
...options.stale === void 0 ? {} : { stale: options.stale },
|
|
181
|
+
// A cache may call the loader as a Promise; its own signal cancels that load.
|
|
182
|
+
load: toPromise(refresh, (context) => context.signal)
|
|
124
183
|
};
|
|
125
184
|
let reading;
|
|
126
|
-
const
|
|
127
|
-
() =>
|
|
128
|
-
|
|
129
|
-
|
|
185
|
+
const read = (tool) => Effect_exports.suspend(
|
|
186
|
+
() => {
|
|
187
|
+
if (cache === void 0) return Effect_exports.fail(new CacheError({ reason: "unavailable" }));
|
|
188
|
+
const shared = reading;
|
|
189
|
+
if (shared !== void 0)
|
|
190
|
+
return Deferred_exports.await(shared).pipe(Effect_exports.map((manifest) => ({ manifest })));
|
|
191
|
+
const deferred = Deferred_exports.makeUnsafe();
|
|
192
|
+
reading = deferred;
|
|
193
|
+
const together = Object.hasOwn(cache, getWithReads) ? cache[getWithReads] : void 0;
|
|
194
|
+
let hinted;
|
|
195
|
+
const fetched = together === void 0 ? fromPromise(
|
|
196
|
+
method(cache, "get"),
|
|
197
|
+
"cache"
|
|
198
|
+
)(getOptions).pipe(Effect_exports.map((manifest) => ({ manifest }))) : fromPromise(method({ together }, "together"), "cache")(getOptions, (stored) => {
|
|
199
|
+
hinted = tool === void 0 ? void 0 : seenRevisions.get(stored);
|
|
200
|
+
return hinted === void 0 || tool === void 0 ? [] : [part(hinted, "tool", tool)];
|
|
201
|
+
}).pipe(
|
|
202
|
+
Effect_exports.map(({ value: manifest, key: stored, reads }) => {
|
|
203
|
+
seen(stored, manifest.revision);
|
|
204
|
+
return manifest.revision === hinted && reads !== void 0 ? { manifest, part: { value: reads[0] } } : { manifest };
|
|
205
|
+
})
|
|
206
|
+
);
|
|
207
|
+
return fetched.pipe(
|
|
208
|
+
Effect_exports.onExit(
|
|
209
|
+
(exit) => Effect_exports.sync(() => {
|
|
210
|
+
if (reading === deferred) reading = void 0;
|
|
211
|
+
}).pipe(
|
|
212
|
+
Effect_exports.andThen(
|
|
213
|
+
Deferred_exports.done(
|
|
214
|
+
deferred,
|
|
215
|
+
Exit_exports.map(exit, ({ manifest }) => manifest)
|
|
216
|
+
)
|
|
217
|
+
)
|
|
218
|
+
)
|
|
219
|
+
)
|
|
220
|
+
);
|
|
221
|
+
}
|
|
130
222
|
);
|
|
223
|
+
const current = () => read().pipe(Effect_exports.map(({ manifest }) => manifest));
|
|
131
224
|
if (options.revalidate) {
|
|
132
225
|
if (cache === void 0) yield* local;
|
|
133
|
-
else yield*
|
|
226
|
+
else yield* fromPromise(method(cache, "revalidate"), "cache")(getOptions);
|
|
134
227
|
}
|
|
135
|
-
const pages = (cache2, revision, kind, count, decoder) => Effect_exports.gen(function* () {
|
|
136
|
-
const batches = yield* Effect_exports.forEach(
|
|
137
|
-
Array.from({ length: Math.ceil(count / 4) }, (_, batch) => batch * 4),
|
|
138
|
-
(offset) => invoke(
|
|
139
|
-
() => cache2.readMany(
|
|
140
|
-
Array.from(
|
|
141
|
-
{ length: Math.min(4, count - offset) },
|
|
142
|
-
(_, index) => part(revision, kind, offset + index)
|
|
143
|
-
),
|
|
144
|
-
schema(Schema_exports.Array(decoder))
|
|
145
|
-
)
|
|
146
|
-
),
|
|
147
|
-
{ concurrency: "unbounded" }
|
|
148
|
-
);
|
|
149
|
-
const values = [];
|
|
150
|
-
for (const page of batches.flat()) {
|
|
151
|
-
if (page === void 0) return yield* new CacheError({ reason: "unavailable" });
|
|
152
|
-
values.push(...page);
|
|
153
|
-
}
|
|
154
|
-
return values;
|
|
155
|
-
});
|
|
156
228
|
const metadata = () => Effect_exports.gen(function* () {
|
|
157
229
|
if (cache === void 0) return (yield* local).tools;
|
|
158
230
|
const manifest = yield* current();
|
|
@@ -174,16 +246,23 @@ var catalogCache = (options) => Effect_exports.gen(function* () {
|
|
|
174
246
|
options.summary.schema
|
|
175
247
|
);
|
|
176
248
|
}),
|
|
177
|
-
resolve: (name) => cache === void 0 ? local.pipe(Effect_exports.map(({ tools }) => tools.find((tool) => tool.name === name))) :
|
|
178
|
-
Effect_exports.flatMap(
|
|
179
|
-
(
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
249
|
+
resolve: (name) => cache === void 0 ? local.pipe(Effect_exports.map(({ tools }) => tools.find((tool) => tool.name === name))) : read(name).pipe(
|
|
250
|
+
Effect_exports.flatMap(({ manifest, part: found }) => {
|
|
251
|
+
const separately = fromPromise(method(cache, "read"), "cache")(
|
|
252
|
+
part(manifest.revision, "tool", name),
|
|
253
|
+
schema(options.schema)
|
|
254
|
+
);
|
|
255
|
+
if (found === void 0) return separately;
|
|
256
|
+
if (found.value === void 0) return Effect_exports.succeed(void 0);
|
|
257
|
+
return Schema_exports.decodeUnknownEffect(options.schema)(found.value).pipe(
|
|
258
|
+
Effect_exports.catch(() => separately)
|
|
259
|
+
);
|
|
260
|
+
})
|
|
183
261
|
)
|
|
184
262
|
};
|
|
185
263
|
});
|
|
186
264
|
|
|
187
265
|
export {
|
|
266
|
+
catalogScope,
|
|
188
267
|
catalogCache
|
|
189
268
|
};
|