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.
Files changed (211) hide show
  1. package/README.md +112 -72
  2. package/framework-reference.json +1 -1
  3. package/js/browser-XIPJGLH2.js +65 -0
  4. package/js/chunk-2CURR5Y7.js +264 -0
  5. package/js/chunk-2LSGC7XY.js +42 -0
  6. package/js/{chunk-YEJOQEII.js → chunk-4PIQKACY.js} +65 -10
  7. package/js/chunk-4UPC36ZL.js +5185 -0
  8. package/js/{chunk-4LPG6RCH.js → chunk-4X2UI4R2.js} +7 -27
  9. package/js/chunk-5C6RAGAS.js +335 -0
  10. package/js/chunk-62NVUKED.js +39 -0
  11. package/js/chunk-74H25C4X.js +95 -0
  12. package/js/chunk-7HG422GB.js +90 -0
  13. package/js/chunk-7STIP5CS.js +171 -0
  14. package/js/{chunk-QKHR7BMF.js → chunk-ACQXVKVQ.js} +87 -51
  15. package/js/{chunk-OHRT55C4.js → chunk-DILSCQPJ.js} +226 -265
  16. package/js/chunk-ILYCJ3HV.js +449 -0
  17. package/js/chunk-K6TSCYAO.js +712 -0
  18. package/js/{chunk-EVJUVWN2.js → chunk-KLSEU35Y.js} +463 -218
  19. package/js/chunk-OD3KFKZD.js +1617 -0
  20. package/js/chunk-OWN3DP2W.js +88 -0
  21. package/js/{chunk-ZTFQHGEB.js → chunk-PBGPES67.js} +3 -5
  22. package/js/chunk-QI66R4FP.js +786 -0
  23. package/js/chunk-RN4YB4JT.js +1922 -0
  24. package/js/{chunk-ZCAMUXSG.js → chunk-URKOTNDA.js} +795 -177
  25. package/js/{chunk-NCYXZN2G.js → chunk-UVL56Z6E.js} +390 -23
  26. package/js/{chunk-2HHMABB6.js → chunk-VAI3EVCS.js} +700 -78
  27. package/js/chunk-VCYWAA4N.js +49 -0
  28. package/js/{chunk-HDJH3RPR.js → chunk-YDW7DX3A.js} +4 -4
  29. package/js/chunk-YWVISRZD.js +268 -0
  30. package/js/{chunk-FW5HBOIK.js → chunk-ZKDXML77.js} +19272 -18299
  31. package/js/client.js +148 -100
  32. package/js/contracts.js +208 -24
  33. package/js/effect.js +18 -19
  34. package/js/es-DIULA3ZF.js +39371 -0
  35. package/js/graphql.js +62 -58
  36. package/js/host.js +83 -60
  37. package/js/index.js +381 -263
  38. package/js/mcp/effect.js +21 -21
  39. package/js/mcp.js +117 -74
  40. package/js/openapi.js +4613 -42691
  41. package/js/react.js +2 -3
  42. package/js/skills/effect.js +6 -4
  43. package/js/skills.js +233 -70
  44. package/js/storage/facet.js +1 -540
  45. package/js/ui/auth/contracts.js +8 -9
  46. package/js/ui/auth.js +16 -14
  47. package/js/ui/contracts.js +9 -8
  48. package/js/ui/serving.js +8609 -227
  49. package/package.json +3 -8
  50. package/runtime.json +1 -1
  51. package/types/app-cache/src/contracts/cache.d.ts +60 -2
  52. package/types/app-cache/src/index.d.ts +92 -2
  53. package/types/app-data/src/contracts/database.d.ts +33 -6
  54. package/types/apps/src/contracts/api-response-error.d.ts +4 -0
  55. package/types/apps/src/contracts/app.d.ts +63 -17
  56. package/types/apps/src/contracts/cache.d.ts +24 -1
  57. package/types/apps/src/contracts/context.d.ts +60 -17
  58. package/types/apps/src/contracts/elicitation.d.ts +23 -7
  59. package/types/apps/src/contracts/events.d.ts +94 -0
  60. package/types/apps/src/contracts/failure.d.ts +54 -0
  61. package/types/apps/src/contracts/graphql.d.ts +2 -1
  62. package/types/apps/src/contracts/host.d.ts +1325 -534
  63. package/types/apps/src/contracts/icons.d.ts +28 -0
  64. package/types/apps/src/contracts/live.d.ts +2 -0
  65. package/types/apps/src/contracts/mcp.d.ts +97 -20
  66. package/types/apps/src/contracts/network.d.ts +120 -0
  67. package/types/apps/src/contracts/openapi-compile.d.ts +82 -3
  68. package/types/apps/src/contracts/openapi-document.d.ts +1 -1
  69. package/types/apps/src/contracts/openapi.d.ts +51 -9
  70. package/types/apps/src/contracts/operations.d.ts +14 -12
  71. package/types/apps/src/contracts/placement.d.ts +102 -0
  72. package/types/apps/src/contracts/protocol-version.d.ts +6 -0
  73. package/types/apps/src/contracts/protocols/1.d.ts +2241 -0
  74. package/types/apps/src/contracts/protocols/10.d.ts +1450 -0
  75. package/types/apps/src/contracts/protocols/11.d.ts +1149 -0
  76. package/types/apps/src/contracts/protocols/12.d.ts +3310 -0
  77. package/types/apps/src/contracts/protocols/2.d.ts +711 -0
  78. package/types/apps/src/contracts/protocols/3.d.ts +776 -0
  79. package/types/apps/src/contracts/protocols/4.d.ts +1306 -0
  80. package/types/apps/src/contracts/protocols/5.d.ts +1200 -0
  81. package/types/apps/src/contracts/protocols/6.d.ts +1629 -0
  82. package/types/apps/src/contracts/protocols/7.d.ts +1785 -0
  83. package/types/apps/src/contracts/protocols/8.d.ts +1182 -0
  84. package/types/apps/src/contracts/protocols/9.d.ts +1104 -0
  85. package/types/apps/src/contracts/protocols/current.d.ts +6857 -0
  86. package/types/apps/src/contracts/protocols/oauth-6.d.ts +74 -0
  87. package/types/apps/src/contracts/protocols/oauth.d.ts +134 -0
  88. package/types/apps/src/contracts/provider-error.d.ts +9 -0
  89. package/types/apps/src/contracts/provider.d.ts +140 -10
  90. package/types/apps/src/contracts/router.d.ts +59 -0
  91. package/types/apps/src/contracts/schedules.d.ts +7 -1
  92. package/types/apps/src/contracts/schema.d.ts +21 -0
  93. package/types/apps/src/contracts/shared-catalog.d.ts +11 -0
  94. package/types/apps/src/contracts/skills.d.ts +60 -14
  95. package/types/apps/src/contracts/sql.d.ts +63 -0
  96. package/types/apps/src/contracts/ui-auth.d.ts +6 -14
  97. package/types/apps/src/contracts/ui.d.ts +70 -30
  98. package/types/apps/src/contracts/webhooks.d.ts +24 -7
  99. package/types/apps/src/contracts/workflows.d.ts +89 -36
  100. package/types/apps/src/facet.d.ts +4 -5
  101. package/types/apps/src/graphql.d.ts +1 -3
  102. package/types/apps/src/host.d.ts +5 -0
  103. package/types/apps/src/implementation/account-router.d.ts +13 -0
  104. package/types/apps/src/implementation/app.d.ts +44 -16
  105. package/types/apps/src/implementation/authoring.d.ts +25 -5
  106. package/types/apps/src/implementation/browser-scripts.gen.d.ts +6 -0
  107. package/types/apps/src/implementation/cache.d.ts +32 -3
  108. package/types/apps/src/implementation/catalog-cache.d.ts +43 -5
  109. package/types/apps/src/implementation/elicitation.d.ts +18 -15
  110. package/types/apps/src/implementation/events.d.ts +64 -0
  111. package/types/apps/src/implementation/failure-detail.d.ts +48 -0
  112. package/types/apps/src/implementation/graphql-catalog.d.ts +4 -7
  113. package/types/apps/src/implementation/graphql.d.ts +4 -3
  114. package/types/apps/src/implementation/input-problems.d.ts +6 -2
  115. package/types/apps/src/implementation/invocation-timing.d.ts +18 -0
  116. package/types/apps/src/implementation/live.d.ts +2 -2
  117. package/types/apps/src/implementation/mcp-call.d.ts +6 -5
  118. package/types/apps/src/implementation/mcp-catalog.d.ts +7 -8
  119. package/types/apps/src/implementation/mcp-client.d.ts +49 -25
  120. package/types/apps/src/implementation/mcp-tools.d.ts +2 -1
  121. package/types/apps/src/implementation/mcp.d.ts +52 -25
  122. package/types/apps/src/implementation/network.d.ts +16 -0
  123. package/types/apps/src/implementation/openapi-compile.d.ts +30 -8
  124. package/types/apps/src/implementation/openapi-document.d.ts +46 -21
  125. package/types/apps/src/implementation/openapi-names.d.ts +23 -0
  126. package/types/apps/src/implementation/openapi-request.d.ts +10 -3
  127. package/types/apps/src/implementation/openapi-source.d.ts +30 -8
  128. package/types/apps/src/implementation/openapi-upgrade.d.ts +4 -0
  129. package/types/apps/src/implementation/operations.d.ts +84 -10
  130. package/types/apps/src/implementation/optimistic.d.ts +1 -1
  131. package/types/apps/src/implementation/placement.d.ts +60 -0
  132. package/types/apps/src/implementation/protocol-operations.d.ts +6 -4
  133. package/types/apps/src/implementation/provider-error.d.ts +28 -1
  134. package/types/apps/src/implementation/provider.d.ts +26 -6
  135. package/types/apps/src/implementation/query-commit.d.ts +1 -1
  136. package/types/apps/src/implementation/router-catalog.d.ts +227 -0
  137. package/types/apps/src/implementation/router.d.ts +78 -0
  138. package/types/apps/src/implementation/runtime-yield.d.ts +7 -0
  139. package/types/apps/src/implementation/schedules.d.ts +39 -8
  140. package/types/apps/src/implementation/schema.d.ts +111 -15
  141. package/types/apps/src/implementation/skills.d.ts +18 -24
  142. package/types/apps/src/implementation/sql.d.ts +71 -0
  143. package/types/apps/src/implementation/swagger-client.d.ts +28 -0
  144. package/types/apps/src/implementation/ui-account-notice.d.ts +9 -0
  145. package/types/apps/src/implementation/ui-auth.d.ts +12 -6
  146. package/types/apps/src/implementation/ui-client.d.ts +3 -3
  147. package/types/apps/src/implementation/ui-document.d.ts +5 -0
  148. package/types/apps/src/implementation/ui-errors.d.ts +1 -1
  149. package/types/apps/src/implementation/ui-serving.d.ts +31 -12
  150. package/types/apps/src/implementation/ui-watch.d.ts +1 -1
  151. package/types/apps/src/implementation/upstream-error.d.ts +7 -0
  152. package/types/apps/src/implementation/webhooks.d.ts +15 -6
  153. package/types/apps/src/implementation/workflow-context.d.ts +17 -5
  154. package/types/apps/src/implementation/workflows.d.ts +11 -4
  155. package/types/apps/src/index.d.ts +71 -21
  156. package/types/apps/src/mcp.d.ts +25 -5
  157. package/types/apps/src/openapi.d.ts +11 -6
  158. package/types/apps/src/react.d.ts +1 -1
  159. package/types/apps/src/skills.d.ts +13 -8
  160. package/types/apps/src/ui-auth.d.ts +2 -2
  161. package/types/apps/src/ui-serving.d.ts +1 -1
  162. package/types/telemetry/src/app-records.d.ts +42 -0
  163. package/types/telemetry/src/browser-operations.d.ts +7 -4
  164. package/types/telemetry/src/browser.d.ts +8 -3
  165. package/types/telemetry/src/config.d.ts +2 -2
  166. package/types/telemetry/src/index.d.ts +2 -1
  167. package/types/telemetry/src/layer.d.ts +10 -4
  168. package/types/telemetry/src/measurements.d.ts +1 -1
  169. package/types/telemetry/src/ownership.d.ts +60 -0
  170. package/types/telemetry/src/recorded-failure.d.ts +29 -0
  171. package/types/telemetry/src/relay.d.ts +16 -6
  172. package/types/telemetry/src/span-attributes.d.ts +17 -1
  173. package/types/telemetry/src/transport.d.ts +8 -1
  174. package/types/utils/src/api-error.d.ts +55 -0
  175. package/types/utils/src/connection-failure.d.ts +33 -0
  176. package/types/utils/src/legacy-keys.d.ts +20 -0
  177. package/types/utils/src/recorded-message.d.ts +18 -0
  178. package/types/utils/src/schema-definitions.d.ts +13 -0
  179. package/types/utils/src/user-facing-error.d.ts +83 -0
  180. package/js/chunk-6IIO4NPI.js +0 -29
  181. package/js/chunk-6YBRWRK3.js +0 -160
  182. package/js/chunk-BMOIAIVR.js +0 -138
  183. package/js/chunk-FZJOYIZO.js +0 -19
  184. package/js/chunk-G7IE6BKC.js +0 -224
  185. package/js/chunk-IHQ4ML7K.js +0 -2193
  186. package/js/chunk-KOXMLKTM.js +0 -1288
  187. package/js/chunk-M6ZRRIBI.js +0 -877
  188. package/js/chunk-PLCMJREA.js +0 -590
  189. package/js/chunk-PZ36XMXW.js +0 -93
  190. package/js/chunk-RBAC33PQ.js +0 -267
  191. package/js/chunk-SATWJKN6.js +0 -34
  192. package/js/chunk-SWPD52J7.js +0 -35
  193. package/js/chunk-TE4KO4HI.js +0 -47
  194. package/js/chunk-W7D7WVSY.js +0 -18
  195. package/js/chunk-X7SFGU4Q.js +0 -280
  196. package/js/chunk-ZJWDMTE3.js +0 -63
  197. package/js/mcp/stdio.js +0 -128
  198. package/types/app-data/src/implementation/cursor.d.ts +0 -10
  199. package/types/app-data/src/implementation/index-key.d.ts +0 -7
  200. package/types/app-data/src/implementation/promise.d.ts +0 -68
  201. package/types/app-data/src/implementation/range.d.ts +0 -8
  202. package/types/app-data/src/implementation/schema.d.ts +0 -33
  203. package/types/app-data/src/implementation/sqlite.d.ts +0 -11
  204. package/types/app-data/src/index.d.ts +0 -4
  205. package/types/apps/src/contracts/dynamic-tools.d.ts +0 -13
  206. package/types/apps/src/contracts/storage.d.ts +0 -68
  207. package/types/apps/src/implementation/account-operations.d.ts +0 -151
  208. package/types/apps/src/implementation/dynamic-tools.d.ts +0 -8
  209. package/types/apps/src/implementation/mcp-stdio.d.ts +0 -4
  210. package/types/apps/src/implementation/storage.d.ts +0 -13
  211. 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-FW5HBOIK.js";
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 SkillDefinitionInvalid = class extends Schema_exports.TaggedError()(
49
- "SkillDefinitionInvalid",
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
- { httpApiStatus: 400 }
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 {