@every-app/sdk 0.2.0 → 0.3.0-rc.10

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 (189) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +609 -3
  3. package/dist/cloudflare/catalogSettings.generated.d.ts +81 -0
  4. package/dist/cloudflare/catalogSettings.generated.d.ts.map +1 -0
  5. package/dist/cloudflare/catalogSettings.generated.js +174 -0
  6. package/dist/cloudflare/index.d.ts +23 -0
  7. package/dist/cloudflare/index.d.ts.map +1 -0
  8. package/dist/cloudflare/index.js +24 -0
  9. package/dist/cloudflare/sentinel.d.ts +127 -0
  10. package/dist/cloudflare/sentinel.d.ts.map +1 -0
  11. package/dist/cloudflare/sentinel.js +85 -0
  12. package/dist/cloudflare/worker.d.ts +805 -0
  13. package/dist/cloudflare/worker.d.ts.map +1 -0
  14. package/dist/cloudflare/worker.js +997 -0
  15. package/dist/dev/index.d.ts +8 -0
  16. package/dist/dev/index.d.ts.map +1 -0
  17. package/dist/dev/index.js +7 -0
  18. package/dist/dev/keypair.d.ts +26 -0
  19. package/dist/dev/keypair.d.ts.map +1 -0
  20. package/dist/dev/keypair.js +62 -0
  21. package/dist/index.d.ts +6 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +5 -0
  24. package/dist/internal/aiDefault.d.ts +204 -0
  25. package/dist/internal/aiDefault.d.ts.map +1 -0
  26. package/dist/internal/aiDefault.js +334 -0
  27. package/dist/internal/aiProviders.d.ts +72 -0
  28. package/dist/internal/aiProviders.d.ts.map +1 -0
  29. package/dist/internal/aiProviders.js +233 -0
  30. package/dist/internal/appSettings.d.ts +315 -0
  31. package/dist/internal/appSettings.d.ts.map +1 -0
  32. package/dist/internal/appSettings.js +549 -0
  33. package/dist/internal/audit.d.ts +108 -0
  34. package/dist/internal/audit.d.ts.map +1 -0
  35. package/dist/internal/audit.js +235 -0
  36. package/dist/internal/capabilities.d.ts +3174 -0
  37. package/dist/internal/capabilities.d.ts.map +1 -0
  38. package/dist/internal/capabilities.js +1110 -0
  39. package/dist/internal/catalog/commerce.d.ts +394 -0
  40. package/dist/internal/catalog/commerce.d.ts.map +1 -0
  41. package/dist/internal/catalog/commerce.js +477 -0
  42. package/dist/internal/catalog/comms.d.ts +375 -0
  43. package/dist/internal/catalog/comms.d.ts.map +1 -0
  44. package/dist/internal/catalog/comms.js +520 -0
  45. package/dist/internal/catalog/index.d.ts +1973 -0
  46. package/dist/internal/catalog/index.d.ts.map +1 -0
  47. package/dist/internal/catalog/index.js +19 -0
  48. package/dist/internal/catalog/inference.d.ts +393 -0
  49. package/dist/internal/catalog/inference.d.ts.map +1 -0
  50. package/dist/internal/catalog/inference.js +460 -0
  51. package/dist/internal/catalog/infra.d.ts +423 -0
  52. package/dist/internal/catalog/infra.d.ts.map +1 -0
  53. package/dist/internal/catalog/infra.js +543 -0
  54. package/dist/internal/catalog/search.d.ts +400 -0
  55. package/dist/internal/catalog/search.d.ts.map +1 -0
  56. package/dist/internal/catalog/search.js +463 -0
  57. package/dist/internal/devProviders.d.ts +49 -0
  58. package/dist/internal/devProviders.d.ts.map +1 -0
  59. package/dist/internal/devProviders.js +80 -0
  60. package/dist/internal/email.d.ts +280 -0
  61. package/dist/internal/email.d.ts.map +1 -0
  62. package/dist/internal/email.js +613 -0
  63. package/dist/internal/events.d.ts +193 -0
  64. package/dist/internal/events.d.ts.map +1 -0
  65. package/dist/internal/events.js +367 -0
  66. package/dist/internal/gatewaySettings.d.ts +83 -0
  67. package/dist/internal/gatewaySettings.d.ts.map +1 -0
  68. package/dist/internal/gatewaySettings.js +215 -0
  69. package/dist/internal/identity.d.ts +57 -5
  70. package/dist/internal/identity.d.ts.map +1 -1
  71. package/dist/internal/identity.js +99 -22
  72. package/dist/internal/index.d.ts +22 -1
  73. package/dist/internal/index.d.ts.map +1 -1
  74. package/dist/internal/index.js +22 -1
  75. package/dist/internal/members.d.ts +36 -0
  76. package/dist/internal/members.d.ts.map +1 -0
  77. package/dist/internal/members.js +7 -0
  78. package/dist/internal/oauthClient.d.ts +61 -0
  79. package/dist/internal/oauthClient.d.ts.map +1 -0
  80. package/dist/internal/oauthClient.js +133 -0
  81. package/dist/internal/oauthPresets.d.ts +33 -0
  82. package/dist/internal/oauthPresets.d.ts.map +1 -0
  83. package/dist/internal/oauthPresets.js +1064 -0
  84. package/dist/internal/oauthScopes.d.ts +172 -0
  85. package/dist/internal/oauthScopes.d.ts.map +1 -0
  86. package/dist/internal/oauthScopes.js +510 -0
  87. package/dist/internal/oauthSpec.d.ts +102 -0
  88. package/dist/internal/oauthSpec.d.ts.map +1 -0
  89. package/dist/internal/oauthSpec.js +789 -0
  90. package/dist/internal/organizationName.d.ts +18 -0
  91. package/dist/internal/organizationName.d.ts.map +1 -0
  92. package/dist/internal/organizationName.js +24 -0
  93. package/dist/internal/protocol.d.ts +150 -3
  94. package/dist/internal/protocol.d.ts.map +1 -1
  95. package/dist/internal/protocol.js +163 -2
  96. package/dist/internal/providerApps.d.ts +75 -0
  97. package/dist/internal/providerApps.d.ts.map +1 -0
  98. package/dist/internal/providerApps.js +59 -0
  99. package/dist/internal/providerRegistry.d.ts +218 -0
  100. package/dist/internal/providerRegistry.d.ts.map +1 -0
  101. package/dist/internal/providerRegistry.js +432 -0
  102. package/dist/internal/providerSpec.d.ts +66 -0
  103. package/dist/internal/providerSpec.d.ts.map +1 -0
  104. package/dist/internal/providerSpec.js +1154 -0
  105. package/dist/internal/remoteMcp.d.ts +188 -0
  106. package/dist/internal/remoteMcp.d.ts.map +1 -0
  107. package/dist/internal/remoteMcp.js +543 -0
  108. package/dist/internal/signInProviders.d.ts +104 -0
  109. package/dist/internal/signInProviders.d.ts.map +1 -0
  110. package/dist/internal/signInProviders.js +245 -0
  111. package/dist/internal/tools.d.ts +115 -0
  112. package/dist/internal/tools.d.ts.map +1 -0
  113. package/dist/internal/tools.js +80 -0
  114. package/dist/manifest.d.ts +238 -0
  115. package/dist/manifest.d.ts.map +1 -0
  116. package/dist/manifest.js +30 -0
  117. package/dist/server/ai.d.ts +111 -0
  118. package/dist/server/ai.d.ts.map +1 -0
  119. package/dist/server/ai.js +145 -0
  120. package/dist/server/aiBinding.d.ts +68 -0
  121. package/dist/server/aiBinding.d.ts.map +1 -0
  122. package/dist/server/aiBinding.js +294 -0
  123. package/dist/server/attribution.d.ts +43 -0
  124. package/dist/server/attribution.d.ts.map +1 -0
  125. package/dist/server/attribution.js +75 -0
  126. package/dist/server/authorizeUrl.d.ts +43 -0
  127. package/dist/server/authorizeUrl.d.ts.map +1 -0
  128. package/dist/server/authorizeUrl.js +106 -0
  129. package/dist/server/connectUrl.d.ts +21 -0
  130. package/dist/server/connectUrl.d.ts.map +1 -0
  131. package/dist/server/connectUrl.js +37 -0
  132. package/dist/server/context.d.ts +68 -0
  133. package/dist/server/context.d.ts.map +1 -0
  134. package/dist/server/context.js +117 -0
  135. package/dist/server/emailBinding.d.ts +72 -0
  136. package/dist/server/emailBinding.d.ts.map +1 -0
  137. package/dist/server/emailBinding.js +124 -0
  138. package/dist/server/emit.d.ts +63 -0
  139. package/dist/server/emit.d.ts.map +1 -0
  140. package/dist/server/emit.js +101 -0
  141. package/dist/server/env.d.ts +44 -0
  142. package/dist/server/env.d.ts.map +1 -0
  143. package/dist/server/env.js +1 -0
  144. package/dist/server/everyApp.d.ts +65 -19
  145. package/dist/server/everyApp.d.ts.map +1 -1
  146. package/dist/server/everyApp.js +195 -30
  147. package/dist/server/fromMcpTools.d.ts +89 -0
  148. package/dist/server/fromMcpTools.d.ts.map +1 -0
  149. package/dist/server/fromMcpTools.js +192 -0
  150. package/dist/server/gatewayFetch.d.ts +54 -14
  151. package/dist/server/gatewayFetch.d.ts.map +1 -1
  152. package/dist/server/gatewayFetch.js +201 -37
  153. package/dist/server/gatewayUrl.d.ts +13 -0
  154. package/dist/server/gatewayUrl.d.ts.map +1 -0
  155. package/dist/server/gatewayUrl.js +34 -0
  156. package/dist/server/index.d.ts +23 -3
  157. package/dist/server/index.d.ts.map +1 -1
  158. package/dist/server/index.js +19 -2
  159. package/dist/server/integrationFetch.d.ts +162 -0
  160. package/dist/server/integrationFetch.d.ts.map +1 -0
  161. package/dist/server/integrationFetch.js +688 -0
  162. package/dist/server/listMembers.d.ts +32 -0
  163. package/dist/server/listMembers.d.ts.map +1 -0
  164. package/dist/server/listMembers.js +71 -0
  165. package/dist/server/nodeServer.d.ts +48 -0
  166. package/dist/server/nodeServer.d.ts.map +1 -0
  167. package/dist/server/nodeServer.js +45 -0
  168. package/dist/server/refusal.d.ts +55 -0
  169. package/dist/server/refusal.d.ts.map +1 -0
  170. package/dist/server/refusal.js +193 -0
  171. package/dist/server/sendEmail.d.ts +39 -0
  172. package/dist/server/sendEmail.d.ts.map +1 -0
  173. package/dist/server/sendEmail.js +114 -0
  174. package/dist/server/tools.d.ts +184 -0
  175. package/dist/server/tools.d.ts.map +1 -0
  176. package/dist/server/tools.js +347 -0
  177. package/dist/server/toolsEndpoint.d.ts +32 -0
  178. package/dist/server/toolsEndpoint.d.ts.map +1 -0
  179. package/dist/server/toolsEndpoint.js +237 -0
  180. package/dist/tanstack-start/index.d.ts +9 -0
  181. package/dist/tanstack-start/index.d.ts.map +1 -0
  182. package/dist/tanstack-start/index.js +29 -0
  183. package/dist/testing/index.d.ts +93 -0
  184. package/dist/testing/index.d.ts.map +1 -0
  185. package/dist/testing/index.js +156 -0
  186. package/package.json +42 -8
  187. package/dist/server/mcp.d.ts +0 -66
  188. package/dist/server/mcp.d.ts.map +0 -1
  189. package/dist/server/mcp.js +0 -147
@@ -1,66 +0,0 @@
1
- /**
2
- * `createMcpHandler()` — a stateless Streamable HTTP MCP server handler.
3
- *
4
- * const mcp = createMcpHandler({
5
- * name: "my-app",
6
- * tools: {
7
- * list_items: {
8
- * description: "List the user's items",
9
- * inputSchema: { type: "object", properties: { limit: { type: "number" } } },
10
- * handler: async (args, { user, env }) => listItems(user.id, args.limit),
11
- * },
12
- * },
13
- * });
14
- * export default everyApp((request, env, ctx, user) => {
15
- * if (new URL(request.url).pathname === "/mcp") return mcp(request, env, ctx, user);
16
- * ...
17
- * }, manifest);
18
- *
19
- * The gateway authenticates the caller and injects the identity JWT; this
20
- * handler only consumes the verified `EveryAppUser`. Each POST carries one
21
- * self-contained JSON-RPC message (no sessions, no SSE), so any isolate can
22
- * serve any request.
23
- */
24
- import type { EveryAppUser } from "../internal/index.js";
25
- import { type ExecutionContextLike } from "./everyApp.js";
26
- export interface McpToolContext<TEnv = Record<string, unknown>> {
27
- user: EveryAppUser;
28
- env: TEnv;
29
- request: Request;
30
- ctx: ExecutionContextLike;
31
- }
32
- export interface McpToolDefinition<TEnv = Record<string, unknown>> {
33
- description?: string;
34
- /** JSON Schema for the tool's arguments. Defaults to an empty object schema. */
35
- inputSchema?: Record<string, unknown>;
36
- /**
37
- * Scope required to list or call this tool, checked against the scopes the
38
- * credential was granted (`user.scopes`). Omit to allow any authenticated user.
39
- */
40
- scope?: string;
41
- /**
42
- * Tool implementation. Return a string or JSON-serializable value (wrapped as
43
- * text content), or a full `{ content: [...] }` result. Thrown errors become
44
- * `isError: true` tool results, not protocol errors.
45
- */
46
- handler: (args: Record<string, unknown>, context: McpToolContext<TEnv>) => unknown;
47
- }
48
- export interface CreateMcpHandlerOptions<TEnv = Record<string, unknown>> {
49
- /** Server name reported to MCP clients. */
50
- name: string;
51
- version?: string;
52
- /** Optional usage hints surfaced to clients after initialize. */
53
- instructions?: string;
54
- /**
55
- * Browser origins allowed to call this endpoint, in addition to the
56
- * endpoint's own origin. Non-browser clients send no Origin header and are
57
- * unaffected; any other present Origin is rejected with 403 (the Streamable
58
- * HTTP spec's DNS-rebinding defense).
59
- */
60
- allowedOrigins?: string[];
61
- tools: Record<string, McpToolDefinition<TEnv>>;
62
- }
63
- /** Matches the everyApp() handler signature so it can be delegated to directly. */
64
- export type McpRequestHandler<TEnv = Record<string, unknown>> = (request: Request, env: TEnv, ctx: ExecutionContextLike, user?: EveryAppUser | null) => Promise<Response>;
65
- export declare function createMcpHandler<TEnv = Record<string, unknown>>(options: CreateMcpHandlerOptions<TEnv>): McpRequestHandler<TEnv>;
66
- //# sourceMappingURL=mcp.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/server/mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,eAAe,CAAC;AAUvB,MAAM,WAAW,cAAc,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC5D,IAAI,EAAE,YAAY,CAAC;IACnB,GAAG,EAAE,IAAI,CAAC;IACV,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,oBAAoB,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,OAAO,EAAE,CACP,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,KAC1B,OAAO,CAAC;CACd;AAED,MAAM,WAAW,uBAAuB,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACrE,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;CAChD;AAED,mFAAmF;AACnF,MAAM,MAAM,iBAAiB,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAC9D,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,IAAI,EACT,GAAG,EAAE,oBAAoB,EACzB,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,KACvB,OAAO,CAAC,QAAQ,CAAC,CAAC;AAiDvB,wBAAgB,gBAAgB,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7D,OAAO,EAAE,uBAAuB,CAAC,IAAI,CAAC,GACrC,iBAAiB,CAAC,IAAI,CAAC,CA8IzB"}
@@ -1,147 +0,0 @@
1
- import { getEveryAppUser, hasScope, } from "./everyApp.js";
2
- /** Protocol revisions this handler accepts; initialize echoes the client's when supported. */
3
- const SUPPORTED_PROTOCOL_VERSIONS = [
4
- "2025-03-26",
5
- "2025-06-18",
6
- "2025-11-25",
7
- ];
8
- const DEFAULT_PROTOCOL_VERSION = "2025-06-18";
9
- function userHasScope(user, scope) {
10
- return !scope || hasScope(user, scope);
11
- }
12
- function jsonRpcResult(id, result) {
13
- return Response.json({ jsonrpc: "2.0", id, result });
14
- }
15
- function jsonRpcError(id, code, message) {
16
- return Response.json({ jsonrpc: "2.0", id, error: { code, message } });
17
- }
18
- function accepted() {
19
- return new Response(null, { status: 202 });
20
- }
21
- function toCallToolResult(value) {
22
- if (value !== null &&
23
- typeof value === "object" &&
24
- Array.isArray(value.content)) {
25
- return value;
26
- }
27
- const text = typeof value === "string" ? value : JSON.stringify(value ?? null);
28
- return { content: [{ type: "text", text }] };
29
- }
30
- function negotiateProtocolVersion(params) {
31
- const requested = params && typeof params === "object"
32
- ? params.protocolVersion
33
- : undefined;
34
- return typeof requested === "string" &&
35
- SUPPORTED_PROTOCOL_VERSIONS.includes(requested)
36
- ? requested
37
- : DEFAULT_PROTOCOL_VERSION;
38
- }
39
- export function createMcpHandler(options) {
40
- const { name, version = "0.0.0", instructions, allowedOrigins = [], tools, } = options;
41
- return async (request, env, ctx, user) => {
42
- if (request.method !== "POST") {
43
- return new Response(null, { status: 405, headers: { allow: "POST" } });
44
- }
45
- const origin = request.headers.get("origin");
46
- if (origin &&
47
- origin !== new URL(request.url).origin &&
48
- !allowedOrigins.includes(origin)) {
49
- return Response.json({ error: "forbidden_origin" }, { status: 403 });
50
- }
51
- const resolvedUser = user !== undefined ? user : await getEveryAppUser(request, env);
52
- if (!resolvedUser) {
53
- return Response.json({ error: "unauthenticated", message: "MCP requests require a user" }, { status: 401 });
54
- }
55
- const versionHeader = request.headers.get("mcp-protocol-version");
56
- if (versionHeader &&
57
- !SUPPORTED_PROTOCOL_VERSIONS.includes(versionHeader)) {
58
- return Response.json({
59
- error: "unsupported_protocol_version",
60
- supported: SUPPORTED_PROTOCOL_VERSIONS,
61
- }, { status: 400 });
62
- }
63
- let message;
64
- try {
65
- message = (await request.json());
66
- }
67
- catch {
68
- return jsonRpcError(null, -32700, "parse error: body must be JSON");
69
- }
70
- if (Array.isArray(message)) {
71
- return jsonRpcError(null, -32600, "batch requests are not supported");
72
- }
73
- if (message === null || typeof message !== "object") {
74
- return jsonRpcError(null, -32600, "invalid JSON-RPC message");
75
- }
76
- if (message.jsonrpc !== "2.0") {
77
- return jsonRpcError(null, -32600, 'jsonrpc must be "2.0"');
78
- }
79
- if ("id" in message &&
80
- typeof message.id !== "string" &&
81
- typeof message.id !== "number" &&
82
- message.id !== null) {
83
- return jsonRpcError(null, -32600, "id must be a string, number, or null");
84
- }
85
- // Notifications and client-side responses expect no reply body.
86
- if (typeof message.method !== "string")
87
- return accepted();
88
- if (!("id" in message))
89
- return accepted();
90
- const id = message.id;
91
- switch (message.method) {
92
- case "initialize":
93
- return jsonRpcResult(id, {
94
- protocolVersion: negotiateProtocolVersion(message.params),
95
- capabilities: { tools: { listChanged: false } },
96
- serverInfo: { name, version },
97
- ...(instructions ? { instructions } : {}),
98
- });
99
- case "ping":
100
- return jsonRpcResult(id, {});
101
- case "tools/list": {
102
- const visible = Object.entries(tools)
103
- .filter(([, tool]) => userHasScope(resolvedUser, tool.scope))
104
- .map(([toolName, tool]) => ({
105
- name: toolName,
106
- ...(tool.description ? { description: tool.description } : {}),
107
- inputSchema: tool.inputSchema ?? { type: "object", properties: {} },
108
- }));
109
- return jsonRpcResult(id, { tools: visible });
110
- }
111
- case "tools/call": {
112
- const params = message.params && typeof message.params === "object"
113
- ? message.params
114
- : {};
115
- const toolName = typeof params.name === "string" ? params.name : "";
116
- const tool = tools[toolName];
117
- if (!tool) {
118
- return jsonRpcError(id, -32602, `unknown tool: ${toolName}`);
119
- }
120
- if (!userHasScope(resolvedUser, tool.scope)) {
121
- return jsonRpcError(id, -32602, `tool ${toolName} requires scope ${tool.scope}`);
122
- }
123
- const args = params.arguments && typeof params.arguments === "object"
124
- ? params.arguments
125
- : {};
126
- try {
127
- const value = await tool.handler(args, {
128
- user: resolvedUser,
129
- env,
130
- request,
131
- ctx,
132
- });
133
- return jsonRpcResult(id, toCallToolResult(value));
134
- }
135
- catch (error) {
136
- const text = error instanceof Error ? error.message : String(error);
137
- return jsonRpcResult(id, {
138
- content: [{ type: "text", text }],
139
- isError: true,
140
- });
141
- }
142
- }
143
- default:
144
- return jsonRpcError(id, -32601, `method not found: ${message.method}`);
145
- }
146
- };
147
- }