apps 0.0.1-beta.1 → 0.0.1-beta.100
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 +112 -72
- package/framework-reference.json +1 -1
- package/js/browser-XIPJGLH2.js +65 -0
- package/js/chunk-2CURR5Y7.js +264 -0
- package/js/chunk-2LSGC7XY.js +42 -0
- package/js/{chunk-YEJOQEII.js → chunk-4PIQKACY.js} +65 -10
- package/js/chunk-4UPC36ZL.js +5185 -0
- package/js/{chunk-4LPG6RCH.js → chunk-4X2UI4R2.js} +7 -27
- package/js/chunk-5C6RAGAS.js +335 -0
- package/js/chunk-62NVUKED.js +39 -0
- package/js/chunk-74H25C4X.js +95 -0
- package/js/chunk-7HG422GB.js +90 -0
- package/js/chunk-7STIP5CS.js +171 -0
- package/js/{chunk-QKHR7BMF.js → chunk-ACQXVKVQ.js} +87 -51
- package/js/{chunk-OHRT55C4.js → chunk-DILSCQPJ.js} +226 -265
- package/js/chunk-ILYCJ3HV.js +449 -0
- package/js/chunk-K6TSCYAO.js +712 -0
- package/js/{chunk-EVJUVWN2.js → chunk-KLSEU35Y.js} +463 -218
- package/js/chunk-OD3KFKZD.js +1617 -0
- package/js/chunk-OWN3DP2W.js +88 -0
- package/js/{chunk-ZTFQHGEB.js → chunk-PBGPES67.js} +3 -5
- package/js/chunk-QI66R4FP.js +786 -0
- package/js/chunk-RN4YB4JT.js +1922 -0
- package/js/{chunk-ZCAMUXSG.js → chunk-URKOTNDA.js} +795 -177
- package/js/{chunk-NCYXZN2G.js → chunk-UVL56Z6E.js} +390 -23
- package/js/{chunk-2HHMABB6.js → chunk-VAI3EVCS.js} +700 -78
- package/js/chunk-VCYWAA4N.js +49 -0
- package/js/{chunk-HDJH3RPR.js → chunk-YDW7DX3A.js} +4 -4
- package/js/chunk-YWVISRZD.js +268 -0
- package/js/{chunk-FW5HBOIK.js → chunk-ZKDXML77.js} +19272 -18299
- package/js/client.js +148 -100
- package/js/contracts.js +208 -24
- package/js/effect.js +18 -19
- package/js/es-DIULA3ZF.js +39371 -0
- package/js/graphql.js +62 -58
- package/js/host.js +83 -60
- package/js/index.js +381 -263
- package/js/mcp/effect.js +21 -21
- package/js/mcp.js +117 -74
- package/js/openapi.js +4613 -42691
- package/js/react.js +2 -3
- package/js/skills/effect.js +6 -4
- package/js/skills.js +233 -70
- package/js/storage/facet.js +1 -540
- package/js/ui/auth/contracts.js +8 -9
- package/js/ui/auth.js +16 -14
- package/js/ui/contracts.js +9 -8
- package/js/ui/serving.js +8609 -227
- package/package.json +3 -8
- package/runtime.json +1 -1
- package/types/app-cache/src/contracts/cache.d.ts +60 -2
- package/types/app-cache/src/index.d.ts +92 -2
- package/types/app-data/src/contracts/database.d.ts +33 -6
- package/types/apps/src/contracts/api-response-error.d.ts +4 -0
- package/types/apps/src/contracts/app.d.ts +63 -17
- package/types/apps/src/contracts/cache.d.ts +24 -1
- 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 +54 -0
- package/types/apps/src/contracts/graphql.d.ts +2 -1
- package/types/apps/src/contracts/host.d.ts +1325 -534
- 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 +97 -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 +51 -9
- package/types/apps/src/contracts/operations.d.ts +14 -12
- package/types/apps/src/contracts/placement.d.ts +102 -0
- package/types/apps/src/contracts/protocol-version.d.ts +6 -0
- package/types/apps/src/contracts/protocols/1.d.ts +2241 -0
- 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 +711 -0
- package/types/apps/src/contracts/protocols/3.d.ts +776 -0
- package/types/apps/src/contracts/protocols/4.d.ts +1306 -0
- package/types/apps/src/contracts/protocols/5.d.ts +1200 -0
- 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 +6857 -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 +140 -10
- package/types/apps/src/contracts/router.d.ts +59 -0
- 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 +60 -14
- package/types/apps/src/contracts/sql.d.ts +63 -0
- package/types/apps/src/contracts/ui-auth.d.ts +6 -14
- 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 +89 -36
- package/types/apps/src/facet.d.ts +4 -5
- package/types/apps/src/graphql.d.ts +1 -3
- package/types/apps/src/host.d.ts +5 -0
- package/types/apps/src/implementation/account-router.d.ts +13 -0
- package/types/apps/src/implementation/app.d.ts +44 -16
- 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 +32 -3
- package/types/apps/src/implementation/catalog-cache.d.ts +43 -5
- 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 +48 -0
- package/types/apps/src/implementation/graphql-catalog.d.ts +4 -7
- 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 +7 -8
- package/types/apps/src/implementation/mcp-client.d.ts +49 -25
- package/types/apps/src/implementation/mcp-tools.d.ts +2 -1
- package/types/apps/src/implementation/mcp.d.ts +52 -25
- package/types/apps/src/implementation/network.d.ts +16 -0
- package/types/apps/src/implementation/openapi-compile.d.ts +30 -8
- package/types/apps/src/implementation/openapi-document.d.ts +46 -21
- package/types/apps/src/implementation/openapi-names.d.ts +23 -0
- package/types/apps/src/implementation/openapi-request.d.ts +10 -3
- package/types/apps/src/implementation/openapi-source.d.ts +30 -8
- package/types/apps/src/implementation/openapi-upgrade.d.ts +4 -0
- package/types/apps/src/implementation/operations.d.ts +84 -10
- 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 +6 -4
- package/types/apps/src/implementation/provider-error.d.ts +28 -1
- package/types/apps/src/implementation/provider.d.ts +26 -6
- package/types/apps/src/implementation/query-commit.d.ts +1 -1
- package/types/apps/src/implementation/router-catalog.d.ts +227 -0
- package/types/apps/src/implementation/router.d.ts +78 -0
- 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 +111 -15
- 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/swagger-client.d.ts +28 -0
- package/types/apps/src/implementation/ui-account-notice.d.ts +9 -0
- package/types/apps/src/implementation/ui-auth.d.ts +12 -6
- 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 +31 -12
- 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 +15 -6
- package/types/apps/src/implementation/workflow-context.d.ts +17 -5
- package/types/apps/src/implementation/workflows.d.ts +11 -4
- package/types/apps/src/index.d.ts +71 -21
- package/types/apps/src/mcp.d.ts +25 -5
- package/types/apps/src/openapi.d.ts +11 -6
- package/types/apps/src/react.d.ts +1 -1
- package/types/apps/src/skills.d.ts +13 -8
- package/types/apps/src/ui-auth.d.ts +2 -2
- 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 +7 -4
- 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-6IIO4NPI.js +0 -29
- package/js/chunk-6YBRWRK3.js +0 -160
- package/js/chunk-BMOIAIVR.js +0 -138
- package/js/chunk-FZJOYIZO.js +0 -19
- package/js/chunk-G7IE6BKC.js +0 -224
- package/js/chunk-IHQ4ML7K.js +0 -2193
- package/js/chunk-KOXMLKTM.js +0 -1288
- package/js/chunk-M6ZRRIBI.js +0 -877
- package/js/chunk-PLCMJREA.js +0 -590
- package/js/chunk-PZ36XMXW.js +0 -93
- package/js/chunk-RBAC33PQ.js +0 -267
- package/js/chunk-SATWJKN6.js +0 -34
- package/js/chunk-SWPD52J7.js +0 -35
- package/js/chunk-TE4KO4HI.js +0 -47
- package/js/chunk-W7D7WVSY.js +0 -18
- package/js/chunk-X7SFGU4Q.js +0 -280
- package/js/chunk-ZJWDMTE3.js +0 -63
- 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 -33
- 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/dynamic-tools.d.ts +0 -13
- package/types/apps/src/contracts/storage.d.ts +0 -68
- package/types/apps/src/implementation/account-operations.d.ts +0 -151
- package/types/apps/src/implementation/dynamic-tools.d.ts +0 -8
- package/types/apps/src/implementation/mcp-stdio.d.ts +0 -4
- package/types/apps/src/implementation/storage.d.ts +0 -13
- package/types/apps/src/mcp-stdio.d.ts +0 -8
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Alias,
|
|
3
|
+
Composer,
|
|
4
|
+
Document,
|
|
5
|
+
Lexer,
|
|
6
|
+
LineCounter,
|
|
7
|
+
Pair,
|
|
8
|
+
Parser,
|
|
9
|
+
Scalar,
|
|
10
|
+
Schema,
|
|
11
|
+
YAMLError,
|
|
12
|
+
YAMLMap,
|
|
13
|
+
YAMLParseError,
|
|
14
|
+
YAMLSeq,
|
|
15
|
+
YAMLWarning,
|
|
16
|
+
browser_default,
|
|
17
|
+
cst_exports,
|
|
18
|
+
isAlias,
|
|
19
|
+
isCollection,
|
|
20
|
+
isDocument,
|
|
21
|
+
isMap,
|
|
22
|
+
isNode,
|
|
23
|
+
isPair,
|
|
24
|
+
isScalar,
|
|
25
|
+
isSeq,
|
|
26
|
+
parse,
|
|
27
|
+
parseAllDocuments,
|
|
28
|
+
parseDocument,
|
|
29
|
+
stringify,
|
|
30
|
+
visit,
|
|
31
|
+
visitAsync
|
|
32
|
+
} from "./chunk-UVL56Z6E.js";
|
|
33
|
+
import "./chunk-CZ7CSFO4.js";
|
|
34
|
+
export {
|
|
35
|
+
Alias,
|
|
36
|
+
cst_exports as CST,
|
|
37
|
+
Composer,
|
|
38
|
+
Document,
|
|
39
|
+
Lexer,
|
|
40
|
+
LineCounter,
|
|
41
|
+
Pair,
|
|
42
|
+
Parser,
|
|
43
|
+
Scalar,
|
|
44
|
+
Schema,
|
|
45
|
+
YAMLError,
|
|
46
|
+
YAMLMap,
|
|
47
|
+
YAMLParseError,
|
|
48
|
+
YAMLSeq,
|
|
49
|
+
YAMLWarning,
|
|
50
|
+
browser_default as default,
|
|
51
|
+
isAlias,
|
|
52
|
+
isCollection,
|
|
53
|
+
isDocument,
|
|
54
|
+
isMap,
|
|
55
|
+
isNode,
|
|
56
|
+
isPair,
|
|
57
|
+
isScalar,
|
|
58
|
+
isSeq,
|
|
59
|
+
parse,
|
|
60
|
+
parseAllDocuments,
|
|
61
|
+
parseDocument,
|
|
62
|
+
stringify,
|
|
63
|
+
visit,
|
|
64
|
+
visitAsync
|
|
65
|
+
};
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
import {
|
|
2
|
+
fromPromise
|
|
3
|
+
} from "./chunk-7STIP5CS.js";
|
|
4
|
+
import {
|
|
5
|
+
HostedTool,
|
|
6
|
+
RouterKey,
|
|
7
|
+
RouterMeta,
|
|
8
|
+
reservedRouterKeys
|
|
9
|
+
} from "./chunk-4UPC36ZL.js";
|
|
10
|
+
import {
|
|
11
|
+
decoderOf,
|
|
12
|
+
schemaArgument
|
|
13
|
+
} from "./chunk-VAI3EVCS.js";
|
|
14
|
+
import {
|
|
15
|
+
Effect_exports,
|
|
16
|
+
Schema_exports
|
|
17
|
+
} from "./chunk-ZKDXML77.js";
|
|
18
|
+
|
|
19
|
+
// src/implementation/operations.ts
|
|
20
|
+
var NativeOperation = /* @__PURE__ */ Symbol("apps.Operation");
|
|
21
|
+
var NativeRouterKey = /* @__PURE__ */ Symbol("apps.Router");
|
|
22
|
+
var operationDeclaration = (operation) => ({
|
|
23
|
+
kind: operation.kind,
|
|
24
|
+
[NativeOperation]: operation
|
|
25
|
+
});
|
|
26
|
+
var nativeOperation = (value) => {
|
|
27
|
+
if (typeof value !== "object" || value === null || !(NativeOperation in value)) return void 0;
|
|
28
|
+
return value[NativeOperation];
|
|
29
|
+
};
|
|
30
|
+
var operationOptions = (options) => {
|
|
31
|
+
const approval = options.approval;
|
|
32
|
+
return {
|
|
33
|
+
...options.description === void 0 ? {} : { description: options.description },
|
|
34
|
+
...options.title === void 0 ? {} : { title: options.title },
|
|
35
|
+
...options.annotations === void 0 ? {} : { annotations: options.annotations },
|
|
36
|
+
...options._meta === void 0 ? {} : { _meta: options._meta },
|
|
37
|
+
input: decoderOf(options.input),
|
|
38
|
+
...approval === void 0 ? {} : {
|
|
39
|
+
approval: (context) => fromPromise(async () => approval(context), "approval")()
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
var approvedOperation = (operation, approval) => {
|
|
44
|
+
const copy = Object.defineProperties({}, Object.getOwnPropertyDescriptors(operation));
|
|
45
|
+
return Object.defineProperty(copy, "approval", {
|
|
46
|
+
enumerable: true,
|
|
47
|
+
value: (context) => fromPromise(async () => approval(context), "approval")()
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
var withApproval = (operation, approval) => (
|
|
51
|
+
// SAFETY: `Approved` is a type-only mark; the native operation now carries the approval.
|
|
52
|
+
{
|
|
53
|
+
...operation,
|
|
54
|
+
[NativeOperation]: approvedOperation(operation[NativeOperation], approval)
|
|
55
|
+
}
|
|
56
|
+
);
|
|
57
|
+
var toolAnnotations = (operation) => nativeOperation(operation)?.annotations;
|
|
58
|
+
var make = (kind, options, run) => operationDeclaration({
|
|
59
|
+
...operationOptions({ ...options, input: schemaArgument(options.input, `The ${kind} input`) }),
|
|
60
|
+
kind,
|
|
61
|
+
// The host always validates JSON serialization, even without a stronger output declaration.
|
|
62
|
+
...options.output === void 0 ? {} : { output: decoderOf(schemaArgument(options.output, `The ${kind} output`)) },
|
|
63
|
+
// SAFETY: defineApp checks the handler context against its requirements.
|
|
64
|
+
// The host validates account bindings and creates the matching storage facade.
|
|
65
|
+
run: (context, input) => fromPromise(run, "handler")(context, input)
|
|
66
|
+
});
|
|
67
|
+
var query = (options, run) => make("query", options, run);
|
|
68
|
+
function mutation(options, run) {
|
|
69
|
+
return make("mutation", options, run);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// src/implementation/router.ts
|
|
73
|
+
var routerDeclaration = (node) => ({
|
|
74
|
+
[NativeRouterKey]: node
|
|
75
|
+
});
|
|
76
|
+
var nativeRouter = (value) => {
|
|
77
|
+
if (typeof value !== "object" || value === null || !(NativeRouterKey in value)) return void 0;
|
|
78
|
+
return value[NativeRouterKey];
|
|
79
|
+
};
|
|
80
|
+
var nativeNode = (value) => nativeOperation(value) ?? nativeRouter(value);
|
|
81
|
+
var metaOf = (options) => {
|
|
82
|
+
if (options === void 0) return void 0;
|
|
83
|
+
const defined = Object.fromEntries(
|
|
84
|
+
Object.entries(options).filter(([, value]) => value !== void 0)
|
|
85
|
+
);
|
|
86
|
+
return Object.keys(defined).length === 0 ? void 0 : Schema_exports.decodeUnknownSync(RouterMeta)(defined);
|
|
87
|
+
};
|
|
88
|
+
var mergeMeta = (base, override) => base === void 0 ? override : override === void 0 ? base : { ...base, ...override };
|
|
89
|
+
function router(children, options) {
|
|
90
|
+
const meta = metaOf(options);
|
|
91
|
+
const existing = nativeRouter(children);
|
|
92
|
+
if (existing !== void 0)
|
|
93
|
+
return routerDeclaration(
|
|
94
|
+
existing.kind === "router" ? { ...existing, ...withMeta(mergeMeta(existing.meta, meta)) } : { ...existing, ...withOverrides(mergeMeta(existing.overrides, meta)) }
|
|
95
|
+
);
|
|
96
|
+
const nodes = {};
|
|
97
|
+
for (const [key, value] of Object.entries(children)) {
|
|
98
|
+
if (reservedRouterKeys.has(key)) throw new Error(`Router key "${key}" is reserved`);
|
|
99
|
+
if (!Schema_exports.is(RouterKey)(key))
|
|
100
|
+
throw new Error(`Router key "${key}" must start with a letter or _ and contain no dots`);
|
|
101
|
+
const node = nativeNode(value);
|
|
102
|
+
if (node === void 0)
|
|
103
|
+
throw new Error(`Router key "${key}" must be a query, mutation or router`);
|
|
104
|
+
nodes[key] = node;
|
|
105
|
+
}
|
|
106
|
+
return routerDeclaration({ kind: "router", ...withMeta(meta), children: nodes });
|
|
107
|
+
}
|
|
108
|
+
var withMeta = (meta) => meta === void 0 ? {} : { meta };
|
|
109
|
+
var withOverrides = (overrides) => overrides === void 0 ? {} : { overrides };
|
|
110
|
+
var dynamicRouter = (source) => {
|
|
111
|
+
const meta = source.meta;
|
|
112
|
+
return routerDeclaration({
|
|
113
|
+
kind: "dynamic",
|
|
114
|
+
...meta === void 0 ? {} : {
|
|
115
|
+
meta: () => fromPromise(async () => meta(), "router")().pipe(
|
|
116
|
+
Effect_exports.flatMap((options) => Schema_exports.decodeUnknownEffect(RouterMeta)(options))
|
|
117
|
+
)
|
|
118
|
+
},
|
|
119
|
+
list: () => fromPromise(async () => source.list(), "router")().pipe(
|
|
120
|
+
Effect_exports.flatMap(Schema_exports.decodeUnknownEffect(Schema_exports.Array(HostedTool)))
|
|
121
|
+
),
|
|
122
|
+
resolve: (name) => fromPromise(async () => source.resolve(name), "router")().pipe(
|
|
123
|
+
Effect_exports.map((value) => {
|
|
124
|
+
if (value === void 0) return void 0;
|
|
125
|
+
const operation = nativeOperation(value);
|
|
126
|
+
if (operation === void 0) throw new Error("Expected an operation declaration");
|
|
127
|
+
return operation;
|
|
128
|
+
})
|
|
129
|
+
)
|
|
130
|
+
});
|
|
131
|
+
};
|
|
132
|
+
var joinPath = (path, name) => path === "" ? name : `${path}.${name}`;
|
|
133
|
+
var locate = (root, name) => {
|
|
134
|
+
if (root?.kind === "dynamic") return { kind: "dynamic", source: root, router: "", name };
|
|
135
|
+
let current = root;
|
|
136
|
+
let path = "";
|
|
137
|
+
let rest = name;
|
|
138
|
+
while (current !== void 0) {
|
|
139
|
+
const dot = rest.indexOf(".");
|
|
140
|
+
const key = dot < 0 ? rest : rest.slice(0, dot);
|
|
141
|
+
const child = Object.hasOwn(current.children, key) ? current.children[key] : void 0;
|
|
142
|
+
if (child === void 0) return void 0;
|
|
143
|
+
const remaining = dot < 0 ? void 0 : rest.slice(dot + 1);
|
|
144
|
+
switch (child.kind) {
|
|
145
|
+
case "query":
|
|
146
|
+
case "mutation":
|
|
147
|
+
return remaining === void 0 ? { kind: "operation", operation: child, router: path } : void 0;
|
|
148
|
+
case "dynamic":
|
|
149
|
+
return remaining === void 0 || remaining === "" ? void 0 : { kind: "dynamic", source: child, router: joinPath(path, key), name: remaining };
|
|
150
|
+
case "router":
|
|
151
|
+
if (remaining === void 0) return void 0;
|
|
152
|
+
current = child;
|
|
153
|
+
path = joinPath(path, key);
|
|
154
|
+
rest = remaining;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return void 0;
|
|
158
|
+
};
|
|
159
|
+
var declaredOperations = (root, path = "") => Object.entries(root?.children ?? {}).flatMap(([key, child]) => {
|
|
160
|
+
const name = joinPath(path, key);
|
|
161
|
+
switch (child.kind) {
|
|
162
|
+
case "query":
|
|
163
|
+
case "mutation":
|
|
164
|
+
return [{ name, router: path, operation: child }];
|
|
165
|
+
case "router":
|
|
166
|
+
return declaredOperations(child, name);
|
|
167
|
+
case "dynamic":
|
|
168
|
+
return [];
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
var withApprovals = (source, policy) => {
|
|
172
|
+
const native = nativeRouter(source);
|
|
173
|
+
if (native === void 0) throw new Error("withApprovals expects a router");
|
|
174
|
+
const operation = (node, name) => {
|
|
175
|
+
const approval = policy(operationDeclaration(node), name);
|
|
176
|
+
return approval === void 0 ? node : approvedOperation(node, approval);
|
|
177
|
+
};
|
|
178
|
+
const child = (node, name) => {
|
|
179
|
+
switch (node.kind) {
|
|
180
|
+
case "query":
|
|
181
|
+
case "mutation":
|
|
182
|
+
return operation(node, name);
|
|
183
|
+
case "router":
|
|
184
|
+
case "dynamic":
|
|
185
|
+
return walk(node, name);
|
|
186
|
+
}
|
|
187
|
+
};
|
|
188
|
+
const walk = (node, path) => node.kind === "dynamic" ? {
|
|
189
|
+
...node,
|
|
190
|
+
resolve: (name) => node.resolve(name).pipe(
|
|
191
|
+
Effect_exports.flatMap(
|
|
192
|
+
(resolved) => resolved === void 0 ? Effect_exports.succeed(void 0) : Effect_exports.try({
|
|
193
|
+
try: () => operation(resolved, joinPath(path, name)),
|
|
194
|
+
catch: (error) => error
|
|
195
|
+
})
|
|
196
|
+
)
|
|
197
|
+
)
|
|
198
|
+
} : {
|
|
199
|
+
...node,
|
|
200
|
+
children: Object.fromEntries(
|
|
201
|
+
Object.entries(node.children).map(([key, value]) => [
|
|
202
|
+
key,
|
|
203
|
+
child(value, joinPath(path, key))
|
|
204
|
+
])
|
|
205
|
+
)
|
|
206
|
+
};
|
|
207
|
+
return routerDeclaration(walk(native, ""));
|
|
208
|
+
};
|
|
209
|
+
var renameTools = (source, rename) => {
|
|
210
|
+
const native = nativeRouter(source);
|
|
211
|
+
if (native?.kind !== "dynamic") throw new Error("renameTools expects a protocol router");
|
|
212
|
+
const exposed = (tools) => {
|
|
213
|
+
const seen = /* @__PURE__ */ new Set();
|
|
214
|
+
return tools.flatMap((tool) => {
|
|
215
|
+
const name = rename(tool.name);
|
|
216
|
+
if (name === void 0 || seen.has(name)) return [];
|
|
217
|
+
seen.add(name);
|
|
218
|
+
return [{ ...tool, name, source: tool.name }];
|
|
219
|
+
});
|
|
220
|
+
};
|
|
221
|
+
const listed = native.summaries ?? native.list;
|
|
222
|
+
const original = (name) => listed().pipe(Effect_exports.map((tools) => exposed(tools).find((tool) => tool.name === name)?.source));
|
|
223
|
+
const strip = ({
|
|
224
|
+
source: _source,
|
|
225
|
+
...tool
|
|
226
|
+
}) => tool;
|
|
227
|
+
return routerDeclaration({
|
|
228
|
+
...native,
|
|
229
|
+
list: () => native.list().pipe(Effect_exports.map((tools) => exposed(tools).map(strip))),
|
|
230
|
+
...native.summaries === void 0 ? {} : {
|
|
231
|
+
summaries: () => listed().pipe(Effect_exports.map((tools) => exposed(tools).map(strip)))
|
|
232
|
+
},
|
|
233
|
+
describe: (name) => original(name).pipe(
|
|
234
|
+
Effect_exports.flatMap(
|
|
235
|
+
(found) => found === void 0 ? Effect_exports.succeed(void 0) : native.describe?.(found) ?? native.list().pipe(Effect_exports.map((tools) => tools.find((tool) => tool.name === found)))
|
|
236
|
+
),
|
|
237
|
+
Effect_exports.map((tool) => tool === void 0 ? void 0 : { ...tool, name })
|
|
238
|
+
),
|
|
239
|
+
resolve: (name) => original(name).pipe(
|
|
240
|
+
Effect_exports.flatMap(
|
|
241
|
+
(found) => found === void 0 ? Effect_exports.succeed(void 0) : native.resolve(found)
|
|
242
|
+
)
|
|
243
|
+
)
|
|
244
|
+
});
|
|
245
|
+
};
|
|
246
|
+
|
|
247
|
+
export {
|
|
248
|
+
operationDeclaration,
|
|
249
|
+
nativeOperation,
|
|
250
|
+
withApproval,
|
|
251
|
+
toolAnnotations,
|
|
252
|
+
query,
|
|
253
|
+
mutation,
|
|
254
|
+
routerDeclaration,
|
|
255
|
+
nativeRouter,
|
|
256
|
+
mergeMeta,
|
|
257
|
+
router,
|
|
258
|
+
dynamicRouter,
|
|
259
|
+
joinPath,
|
|
260
|
+
locate,
|
|
261
|
+
declaredOperations,
|
|
262
|
+
withApprovals,
|
|
263
|
+
renameTools
|
|
264
|
+
};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import {
|
|
2
|
+
fixedRouter
|
|
3
|
+
} from "./chunk-QI66R4FP.js";
|
|
4
|
+
import {
|
|
5
|
+
nativeOperation,
|
|
6
|
+
operationDeclaration,
|
|
7
|
+
routerDeclaration
|
|
8
|
+
} from "./chunk-2CURR5Y7.js";
|
|
9
|
+
|
|
10
|
+
// src/implementation/protocol-operations.ts
|
|
11
|
+
var protocolOperations = (operations, kinds = {}) => {
|
|
12
|
+
const declared = {};
|
|
13
|
+
for (const [name, operation] of Object.entries(operations)) {
|
|
14
|
+
const kind = Object.hasOwn(kinds, name) ? kinds[name] ?? "mutation" : operation.readOnly === true ? "query" : "mutation";
|
|
15
|
+
const native = {
|
|
16
|
+
description: operation.description,
|
|
17
|
+
...operation.title === void 0 ? {} : { title: operation.title },
|
|
18
|
+
...operation.annotations === void 0 ? {} : { annotations: operation.annotations },
|
|
19
|
+
...operation._meta === void 0 ? {} : { _meta: operation._meta },
|
|
20
|
+
input: operation.input,
|
|
21
|
+
...operation.output === void 0 ? {} : { output: operation.output },
|
|
22
|
+
run: operation.run
|
|
23
|
+
};
|
|
24
|
+
const output = Object.getOwnPropertyDescriptor(operation, "outputSchema");
|
|
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 });
|
|
26
|
+
declared[name] = operationDeclaration(withOutput({ ...native, kind }));
|
|
27
|
+
}
|
|
28
|
+
return declared;
|
|
29
|
+
};
|
|
30
|
+
var protocolRouter = (operations, kinds = {}) => {
|
|
31
|
+
const native = {};
|
|
32
|
+
for (const [name, declaration] of Object.entries(protocolOperations(operations, kinds))) {
|
|
33
|
+
const operation = nativeOperation(declaration);
|
|
34
|
+
if (operation !== void 0) native[name] = operation;
|
|
35
|
+
}
|
|
36
|
+
return routerDeclaration(fixedRouter(native));
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export {
|
|
40
|
+
protocolOperations,
|
|
41
|
+
protocolRouter
|
|
42
|
+
};
|
|
@@ -1,6 +1,49 @@
|
|
|
1
1
|
import {
|
|
2
|
+
RecordedMessage
|
|
3
|
+
} from "./chunk-OWN3DP2W.js";
|
|
4
|
+
import {
|
|
5
|
+
SchemaGetter_exports,
|
|
2
6
|
Schema_exports
|
|
3
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-ZKDXML77.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 {
|