@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
@@ -3,6 +3,23 @@
3
3
  *
4
4
  * There is intentionally no client-side export.
5
5
  */
6
- export { ConfigurationError, IdentityError, everyApp, getEveryAppUser, hasScope, requireEveryAppUser, } from "./everyApp.js";
6
+ export { ConfigurationError, IdentityError, everyApp, getEveryAppUser, hasScope, isAdmin, requireCurrentUser, requireEveryAppUser, } from "./everyApp.js";
7
+ export { OrganizationMismatchError, RequestContextError, currentUser, withOrganization, } from "./context.js";
8
+ export { AttributionError } from "./attribution.js";
9
+ export { gatewayUrl } from "./gatewayUrl.js";
10
+ /** The header a Gateway refusal carries its code in; `gatewayRefusal()` reads the rest. */
11
+ export { GATEWAY_ERROR_HEADER } from "../internal/protocol.js";
12
+ export { authorizeUrl } from "./authorizeUrl.js";
13
+ export { connectPath, connectUrl, } from "./connectUrl.js";
7
14
  export { createGatewayFetch, } from "./gatewayFetch.js";
8
- export { createMcpHandler, } from "./mcp.js";
15
+ export { ai, aiBaseUrl, aiStatus, providerBaseUrl, AI_DEFAULT_BASE_URL, } from "./ai.js";
16
+ export { AI_NOT_CONFIGURED_CODES, GatewayRefusalError, gatewayRefusal, isAiNotConfigured, refusalFromError, } from "./refusal.js";
17
+ export { devAccessTokenName, integrationFetch, integrationStatus, } from "./integrationFetch.js";
18
+ export { nodeServerHandler, } from "./nodeServer.js";
19
+ export { sendEmail } from "./sendEmail.js";
20
+ export { gatewayAiBinding } from "./aiBinding.js";
21
+ export { gatewayEmailBinding, } from "./emailBinding.js";
22
+ export { listMembers } from "./listMembers.js";
23
+ export { emit } from "./emit.js";
24
+ export { ToolError, defineTools, toolResult, } from "./tools.js";
25
+ export { fromMcpTools, } from "./fromMcpTools.js";
@@ -0,0 +1,162 @@
1
+ import { type ApiKeyCapabilityId, type CapabilityId, type ConnectionAccount, type EmailCapabilityStatus, type OAuthClientCapabilityId } from "../internal/index.js";
2
+ import { type GatewayCallFor } from "./attribution.js";
3
+ import type { SetupInfo } from "./refusal.js";
4
+ export interface IntegrationFetchOptions {
5
+ /**
6
+ * The Worker env: the EVERY_APP_GATEWAY binding when deployed, or in local
7
+ * dev EVERYAPP_DEV and the provider's key (e.g. DATAFORSEO_API_KEY in
8
+ * `.dev.vars`).
9
+ */
10
+ env: object;
11
+ /**
12
+ * A provider the app lists in its manifest's `capabilities`: one whose
13
+ * key the gateway holds, or one whose OAuth client it holds (its token
14
+ * endpoints only). The built-in catalog's ids complete; a provider
15
+ * registered on the gateway (`everyapp provider add`) is any other id,
16
+ * reached through the binding, which checks it. The `email` capability
17
+ * is sent with `sendEmail()` instead.
18
+ */
19
+ provider: ApiKeyCapabilityId | OAuthClientCapabilityId | (string & {});
20
+ /**
21
+ * Whom the call is for. Left out, the request `everyApp()` is serving
22
+ * (its user, while the identity is good) or the organization
23
+ * `withOrganization()` named; outside both, `RequestContextError`.
24
+ * Explicitly: the inbound request, or `{ background: true,
25
+ * organizationId }` for work no person started (crons, Workflows,
26
+ * queues). A shared app's Worker must end up with one or the other
27
+ * ({@link AttributionError}).
28
+ */
29
+ for?: GatewayCallFor;
30
+ /**
31
+ * For an OAuth provider the gateway holds connections for: whose
32
+ * connection the call uses, the person's (`user`, the default when a
33
+ * person is behind the call) or the organization's (`organization`,
34
+ * the default for background work). Sent as `x-everyapp-account`.
35
+ */
36
+ account?: ConnectionAccount;
37
+ /**
38
+ * `true`: answer null instead of throwing `ConfigurationError` when the
39
+ * provider is unavailable (no binding, and in local dev not its
40
+ * settings in `.dev.vars`), so a feature that can do without it checks
41
+ * for null. A wrong provider id, a binding that isn't one, and an
42
+ * attribution mistake still throw.
43
+ */
44
+ optional?: boolean;
45
+ }
46
+ /**
47
+ * A `fetch` for one of the gateway's capabilities. Call the provider's real
48
+ * URLs (`https://api.dataforseo.com/v3/…`); this sends them over the
49
+ * AppGateway binding, which checks the app's manifest lists the capability,
50
+ * injects the key the gateway holds and forwards the call. The app never
51
+ * sees the key. A refusal the gateway makes itself comes back as a response
52
+ * {@link gatewayRefusal} recognizes; anything else is the provider's answer.
53
+ *
54
+ * For an OAuth client (`google-workspace`, `slack`, ...) it reaches the
55
+ * provider's token endpoints only, and the gateway puts its client on the
56
+ * request: send the code (or refresh token) without `client_id` or
57
+ * `client_secret`. Build the authorize URL with {@link authorizeUrl} from
58
+ * {@link integrationStatus}, and call the provider's API with the user's
59
+ * token directly.
60
+ *
61
+ * In local dev only, with no binding, the developer's own key or client
62
+ * from `.dev.vars` reaches the provider directly, under the gateway's names:
63
+ * a catalog provider's from the catalog, a provider registered on the
64
+ * gateway from its spec in `.everyapp/providers/<id>.json` (`everyapp
65
+ * provider show <id> --save` writes it), put on the call as the gateway's
66
+ * spec says.
67
+ */
68
+ export declare function integrationFetch(options: IntegrationFetchOptions & {
69
+ optional: true;
70
+ }): typeof fetch | null;
71
+ export declare function integrationFetch(options: IntegrationFetchOptions): typeof fetch;
72
+ /**
73
+ * The `.dev.vars` name of a held token for `provider` in local dev
74
+ * (`GOOGLE_WORKSPACE_ACCESS_TOKEN`, `GITHUB_ACCESS_TOKEN`): a token the
75
+ * developer obtained themselves, standing in for the connection the
76
+ * gateway would hold. Dev-only: the gateway never reads it.
77
+ */
78
+ export declare function devAccessTokenName(provider: string): string;
79
+ export interface IntegrationStatus extends SetupInfo {
80
+ /** The app's manifest lists the capability. */
81
+ requested: boolean;
82
+ /** The gateway holds a key for it (in local dev: `.dev.vars` sets one). */
83
+ configured: boolean;
84
+ /** Calls would go through. */
85
+ ready: boolean;
86
+ }
87
+ /**
88
+ * The email capability's status: as {@link IntegrationStatus}, plus the
89
+ * From a message without `from` gets, the `from` patterns the gateway
90
+ * accepts from this app (its installation's senders, `everyapp email set
91
+ * --sender`) and the provider mail goes out with (`cloudflare` or `resend`).
92
+ */
93
+ export type EmailIntegrationStatus = IntegrationStatus & Pick<EmailCapabilityStatus, "sender" | "senders" | "provider">;
94
+ /**
95
+ * An OAuth client's status: as {@link IntegrationStatus}, plus what the app
96
+ * needs to send people to the provider's authorize page, present only when
97
+ * the app lists the capability and the gateway holds the client.
98
+ */
99
+ export interface OAuthClientIntegrationStatus extends IntegrationStatus {
100
+ /** The client's public id, for the authorize URL. */
101
+ clientId?: string;
102
+ /**
103
+ * For a client with scope sets (`google-workspace`, `microsoft-365`): the
104
+ * set names the app's manifest entry declares, `[]` when the entry voids
105
+ * its grant (no `scopes`, or a set this gateway doesn't offer), in which
106
+ * case `ready` is false and no token call can complete.
107
+ */
108
+ scopeSets?: readonly string[];
109
+ /**
110
+ * The provider's scope strings those sets ask for, in the provider's
111
+ * spelling and the registry's order, for the authorize URL
112
+ * ({@link authorizeUrl} puts them on). The gateway refuses a token that
113
+ * carries more.
114
+ */
115
+ scopes?: readonly string[];
116
+ /** Slack's `user_scope` strings, when the sets name any. */
117
+ userScopes?: readonly string[];
118
+ /**
119
+ * Which flows the client supports: `app` (the app runs authorize and
120
+ * callback itself and keeps the tokens, the social networks), `gateway`
121
+ * (the Gateway holds the connection; API calls go through
122
+ * `integrationFetch` with the token injected) or `both` (Google,
123
+ * Microsoft, Slack, Discord and every registered OAuth provider).
124
+ */
125
+ flow?: "app" | "gateway" | "both";
126
+ /** Where a person connects on the Gateway: `/connect/<id>`; see `connectUrl()`. */
127
+ connectPath?: string;
128
+ /**
129
+ * The connection the caller's account would use (the person's, or the
130
+ * organization's for background work), or null when there is none yet;
131
+ * `reconnect` when it exists but lacks a set the app declares or has
132
+ * expired, so the person has to connect again.
133
+ */
134
+ connection?: {
135
+ account: ConnectionAccount;
136
+ label: string | null;
137
+ scopeSets: readonly string[];
138
+ ready: boolean;
139
+ reconnect?: boolean;
140
+ } | null;
141
+ }
142
+ /** The status of a capability: email's carries its senders, an OAuth client's its id. */
143
+ export type IntegrationStatusOf<P extends string> = P extends "email" ? EmailIntegrationStatus : P extends OAuthClientCapabilityId ? OAuthClientIntegrationStatus : IntegrationStatus;
144
+ /**
145
+ * Whether the app can use an integration right now, without calling the
146
+ * provider: show "an admin needs to set up DataForSEO" (or "sending isn't
147
+ * set up") up front instead of failing mid-task. An OAuth client's status
148
+ * carries its public `clientId` for the authorize URL.
149
+ */
150
+ export declare function integrationStatus<P extends CapabilityId | (string & {})>({ env, provider, for: explicitTarget, }: {
151
+ env: object;
152
+ provider: P;
153
+ /**
154
+ * Whom the status is for: the request being served (its person), so an
155
+ * OAuth provider's `connection` is that person's; background work
156
+ * (`withOrganization()`) its organization, whose own connection is then
157
+ * reported. Explicitly the inbound request or `{ background: true,
158
+ * organizationId }`, as on every call.
159
+ */
160
+ for?: GatewayCallFor;
161
+ }): Promise<IntegrationStatusOf<P>>;
162
+ //# sourceMappingURL=integrationFetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrationFetch.d.ts","sourceRoot":"","sources":["../../src/server/integrationFetch.ts"],"names":[],"mappings":"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"}