apps 0.0.1-beta.8 → 0.0.1-beta.80
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 +25 -22
- package/framework-reference.json +1 -1
- package/js/chunk-4IN2N5CY.js +348 -0
- package/js/chunk-5FHWNLCI.js +88 -0
- package/js/{chunk-M3B3DE4K.js → chunk-74YVXBKY.js} +463 -218
- package/js/chunk-BIUWK47W.js +49 -0
- package/js/{chunk-RJDDBDSN.js → chunk-C6P3YMHI.js} +789 -171
- package/js/chunk-CDXQDN7W.js +92 -0
- package/js/{chunk-UESPOTUI.js → chunk-CT3QZBWU.js} +861 -231
- package/js/{chunk-UK573G7W.js → chunk-EOPQ727L.js} +87 -51
- package/js/{chunk-RFVIONFX.js → chunk-EZCV4Q4R.js} +123 -44
- package/js/{chunk-27F7W2LG.js → chunk-H2CJWXA3.js} +2 -2
- package/js/{chunk-JU7VHODU.js → chunk-H72MEDMN.js} +65 -10
- package/js/{chunk-CDL5PM2Q.js → chunk-IFJU5SYQ.js} +19082 -18402
- package/js/{chunk-72JNVHPK.js → chunk-IUPDGBBF.js} +4 -3
- package/js/{chunk-VFZKSM3T.js → chunk-JPEUKEV4.js} +3 -3
- package/js/{chunk-5T57N25Q.js → chunk-KGCTYL2S.js} +511 -63
- package/js/{chunk-KUMBKVJD.js → chunk-KLYSEHUD.js} +2 -2
- package/js/{chunk-WLE7WX2U.js → chunk-NG56RPCA.js} +2348 -472
- package/js/chunk-OD3KFKZD.js +1617 -0
- package/js/chunk-OK4MIBPW.js +334 -0
- package/js/{chunk-57RKNWL2.js → chunk-PD6I2SDG.js} +4 -4
- package/js/chunk-PW4S2HP5.js +426 -0
- package/js/chunk-Q4IZAUIF.js +285 -0
- package/js/{chunk-FL2QR3XW.js → chunk-Q5S3SWMO.js} +333 -69
- package/js/{chunk-Z5M2LQOZ.js → chunk-SNKDWIYL.js} +67 -55
- package/js/{chunk-IJX4CYZO.js → chunk-TUMGL2OC.js} +228 -264
- package/js/{chunk-CMYUWAX7.js → chunk-WFCOT6UW.js} +126 -31
- package/js/{chunk-IPI4MFSN.js → chunk-XBG7HHXC.js} +2 -2
- package/js/chunk-ZYXY6JLH.js +171 -0
- package/js/client.js +142 -94
- package/js/contracts.js +127 -26
- package/js/effect.js +19 -19
- package/js/{es-APDZKREY.js → es-DIULA3ZF.js} +62 -1659
- package/js/graphql.js +50 -40
- package/js/host.js +83 -58
- package/js/index.js +131 -46
- package/js/mcp/effect.js +23 -21
- package/js/mcp/stdio.js +44 -34
- package/js/mcp.js +76 -53
- package/js/openapi.js +4071 -1357
- 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 +5 -4
- package/js/ui/serving.js +8604 -223
- package/package.json +3 -4
- 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 +7 -3
- package/types/apps/src/contracts/cache.d.ts +20 -0
- package/types/apps/src/contracts/context.d.ts +19 -11
- package/types/apps/src/contracts/elicitation.d.ts +23 -7
- package/types/apps/src/contracts/events.d.ts +93 -0
- package/types/apps/src/contracts/failure.d.ts +30 -1
- package/types/apps/src/contracts/graphql.d.ts +2 -1
- package/types/apps/src/contracts/host.d.ts +649 -17
- package/types/apps/src/contracts/live.d.ts +2 -0
- package/types/apps/src/contracts/mcp.d.ts +80 -10
- 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.d.ts +41 -9
- package/types/apps/src/contracts/operations.d.ts +8 -4
- 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/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 +3843 -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 +90 -6
- 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 +37 -3
- package/types/apps/src/contracts/workflows.d.ts +6 -0
- 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/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 +28 -1
- 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 +59 -0
- package/types/apps/src/implementation/failure-detail.d.ts +25 -3
- 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-stdio.d.ts +1 -1
- 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 +26 -6
- package/types/apps/src/implementation/openapi-document.d.ts +46 -19
- 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 +18 -0
- package/types/apps/src/implementation/openapi-upgrade.d.ts +4 -0
- package/types/apps/src/implementation/operations.d.ts +17 -2
- 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 +18 -3
- package/types/apps/src/implementation/query-commit.d.ts +1 -1
- package/types/apps/src/implementation/router-catalog.d.ts +11 -13
- package/types/apps/src/implementation/router.d.ts +16 -5
- package/types/apps/src/implementation/runtime-yield.d.ts +7 -0
- package/types/apps/src/implementation/schema.d.ts +90 -10
- 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 +2 -2
- 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 -9
- package/types/apps/src/implementation/ui-watch.d.ts +1 -1
- package/types/apps/src/implementation/upstream-error.d.ts +7 -0
- package/types/apps/src/implementation/webhooks.d.ts +1 -1
- package/types/apps/src/implementation/workflows.d.ts +1 -1
- package/types/apps/src/index.d.ts +55 -13
- package/types/apps/src/mcp.d.ts +20 -1
- package/types/apps/src/openapi.d.ts +1 -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 +2 -2
- 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/recorded-message.d.ts +18 -0
- package/types/utils/src/user-facing-error.d.ts +83 -0
- package/js/chunk-MKWZPDR6.js +0 -63
- package/js/chunk-N7YDVXYJ.js +0 -186
- package/js/chunk-NKLWZJLE.js +0 -172
- package/js/chunk-OCYUEU47.js +0 -224
- package/js/chunk-PJJ24GU7.js +0 -877
- package/js/chunk-PZB6T6KU.js +0 -19
- package/js/chunk-R3EV5FTO.js +0 -97
- package/js/chunk-YXQHV65J.js +0 -242
- package/js/chunk-ZQINWV4W.js +0 -630
- 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/storage.d.ts +0 -15
|
@@ -1,27 +1,56 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getWithReads
|
|
3
|
+
} from "./chunk-OK4MIBPW.js";
|
|
4
|
+
import {
|
|
5
|
+
fromPromise,
|
|
6
|
+
method,
|
|
7
|
+
toPromise
|
|
8
|
+
} from "./chunk-ZYXY6JLH.js";
|
|
1
9
|
import {
|
|
2
10
|
CacheError
|
|
3
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-Q4IZAUIF.js";
|
|
4
12
|
import {
|
|
5
13
|
wrap
|
|
6
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-KGCTYL2S.js";
|
|
7
15
|
import {
|
|
8
16
|
JsonObject
|
|
9
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-H2CJWXA3.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-IFJU5SYQ.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
|
};
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Schema_exports
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-IFJU5SYQ.js";
|
|
4
4
|
|
|
5
5
|
// src/contracts/schema.ts
|
|
6
6
|
var JsonValue = Schema_exports.Json;
|
|
7
7
|
var JsonObject = Schema_exports.Record(Schema_exports.String, JsonValue);
|
|
8
8
|
var AccountId = Schema_exports.String.pipe(
|
|
9
|
-
Schema_exports.check(Schema_exports.
|
|
9
|
+
Schema_exports.check(Schema_exports.isStartingWith("acc_"), Schema_exports.isMinLength(5)),
|
|
10
10
|
Schema_exports.brand("acc")
|
|
11
11
|
);
|
|
12
12
|
var HttpUrl = Schema_exports.String.check(
|
|
@@ -1,6 +1,49 @@
|
|
|
1
1
|
import {
|
|
2
|
+
RecordedMessage
|
|
3
|
+
} from "./chunk-5FHWNLCI.js";
|
|
4
|
+
import {
|
|
5
|
+
SchemaGetter_exports,
|
|
2
6
|
Schema_exports
|
|
3
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-IFJU5SYQ.js";
|
|
8
|
+
|
|
9
|
+
// ../utils/src/api-error.ts
|
|
10
|
+
var MessageField = Schema_exports.String.pipe(
|
|
11
|
+
Schema_exports.decodeTo(Schema_exports.optionalKey(Schema_exports.String), {
|
|
12
|
+
decode: SchemaGetter_exports.omit(),
|
|
13
|
+
encode: SchemaGetter_exports.passthrough()
|
|
14
|
+
})
|
|
15
|
+
);
|
|
16
|
+
function withFields(definition) {
|
|
17
|
+
const fields = definition.fields;
|
|
18
|
+
const message = definition.message;
|
|
19
|
+
const documentation = typeof message === "string" ? { description: message } : {};
|
|
20
|
+
const DefinedError = Schema_exports.Error(definition.tag)(
|
|
21
|
+
Schema_exports.TaggedStruct(definition.tag, { ...fields, message: MessageField }).annotate(
|
|
22
|
+
documentation
|
|
23
|
+
),
|
|
24
|
+
{ httpApiStatus: definition.status, ...documentation }
|
|
25
|
+
);
|
|
26
|
+
const recorded = definition.recorded ?? (typeof message === "string" ? () => message : void 0);
|
|
27
|
+
Object.defineProperties(DefinedError.prototype, {
|
|
28
|
+
message: {
|
|
29
|
+
get() {
|
|
30
|
+
return typeof message === "string" ? message : message(this);
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
...recorded === void 0 ? {} : {
|
|
34
|
+
[RecordedMessage]: {
|
|
35
|
+
get() {
|
|
36
|
+
return recorded(this);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
return DefinedError;
|
|
42
|
+
}
|
|
43
|
+
function define(definition) {
|
|
44
|
+
return "fields" in definition ? withFields(definition) : withFields({ ...definition, fields: {} });
|
|
45
|
+
}
|
|
46
|
+
var ApiError = { define };
|
|
4
47
|
|
|
5
48
|
// src/contracts/skills.ts
|
|
6
49
|
var SkillFilePath = Schema_exports.NonEmptyString.check(
|
|
@@ -45,9 +88,18 @@ var AppSkillSource = Schema_exports.Struct({
|
|
|
45
88
|
)
|
|
46
89
|
)
|
|
47
90
|
});
|
|
48
|
-
var
|
|
49
|
-
|
|
50
|
-
{
|
|
91
|
+
var skillDefinitionFailures = {
|
|
92
|
+
files: (file) => `The skill files of \u201C${file}\u201D are invalid: each needs a unique relative path, text content and a SKILL.md document.`,
|
|
93
|
+
directory: (file) => `\u201C${file}\u201D is not a valid skill directory. Skill directory names use lowercase letters and digits separated by single hyphens.`,
|
|
94
|
+
"missing-document": (file) => `\u201C${file}\u201D is missing.`,
|
|
95
|
+
frontmatter: (file) => `\u201C${file}\u201D must start with valid YAML frontmatter between --- lines.`,
|
|
96
|
+
metadata: (file) => `The frontmatter of \u201C${file}\u201D needs a valid name and description within the Agent Skills limits.`,
|
|
97
|
+
"name-mismatch": (file) => `The name in \u201C${file}\u201D does not match its skill directory.`
|
|
98
|
+
};
|
|
99
|
+
var SkillDefinitionInvalid = ApiError.define({
|
|
100
|
+
tag: "SkillDefinitionInvalid",
|
|
101
|
+
status: 400,
|
|
102
|
+
fields: {
|
|
51
103
|
file: SkillFilePath,
|
|
52
104
|
reason: Schema_exports.Literals([
|
|
53
105
|
"files",
|
|
@@ -58,14 +110,14 @@ var SkillDefinitionInvalid = class extends Schema_exports.TaggedError()(
|
|
|
58
110
|
"name-mismatch"
|
|
59
111
|
])
|
|
60
112
|
},
|
|
61
|
-
{
|
|
62
|
-
) {
|
|
63
|
-
};
|
|
113
|
+
message: ({ file, reason }) => skillDefinitionFailures[reason](file),
|
|
114
|
+
recorded: ({ reason }) => `The app's skill definition is invalid (${reason})`
|
|
115
|
+
});
|
|
64
116
|
var AppSkills = Schema_exports.Array(AppSkillSource).check(
|
|
65
117
|
Schema_exports.makeFilter((skills) => new Set(skills.map((skill) => skill.name)).size === skills.length)
|
|
66
118
|
);
|
|
67
119
|
var SkillServiceName = Schema_exports.String.check(
|
|
68
|
-
Schema_exports.isPattern(/^[A-Za-z0-9](?:[A-Za-z0-9 .-]{0,98}[A-Za-z0-9])?$/)
|
|
120
|
+
Schema_exports.isPattern(/^[A-Za-z0-9](?:[A-Za-z0-9 .-]{0,98}[A-Za-z0-9])?$/u)
|
|
69
121
|
);
|
|
70
122
|
var SkillLoadFailed = class extends Schema_exports.TaggedError()("SkillLoadFailed", {
|
|
71
123
|
reason: Schema_exports.Literals([
|
|
@@ -79,14 +131,17 @@ var SkillLoadFailed = class extends Schema_exports.TaggedError()("SkillLoadFaile
|
|
|
79
131
|
]),
|
|
80
132
|
// Error instances read an omitted message as "", so an empty message means none was given.
|
|
81
133
|
message: Schema_exports.optional(Schema_exports.String.check(Schema_exports.isMaxLength(500))),
|
|
82
|
-
status: Schema_exports.optional(Schema_exports.Int.check(Schema_exports.isBetween({ minimum: 100, maximum: 599 })))
|
|
134
|
+
status: Schema_exports.optional(Schema_exports.Int.check(Schema_exports.isBetween({ minimum: 100, maximum: 599 }))),
|
|
135
|
+
missing: Schema_exports.optional(Schema_exports.Literals(["repository", "ref"]))
|
|
83
136
|
}) {
|
|
84
137
|
};
|
|
85
138
|
var skillLoadLimits = {
|
|
86
139
|
files: 1e3,
|
|
87
140
|
fileBytes: 2e6,
|
|
88
141
|
totalBytes: 2e7,
|
|
89
|
-
concurrency: 8
|
|
142
|
+
concurrency: 8,
|
|
143
|
+
/** The request that checks whether a kept catalog's publication changed. */
|
|
144
|
+
checkMillis: 5e3
|
|
90
145
|
};
|
|
91
146
|
|
|
92
147
|
export {
|