@fragno-dev/project-connector-fragment 0.0.0-stage → 0.0.1

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 (77) hide show
  1. package/LICENSE.md +16 -0
  2. package/README.md +285 -2
  3. package/bin/run.js +4 -0
  4. package/dist/browser/client/react.d.ts +174 -0
  5. package/dist/browser/client/react.d.ts.map +1 -0
  6. package/dist/browser/client/react.js +195 -0
  7. package/dist/browser/client/react.js.map +1 -0
  8. package/dist/browser/client/solid.d.ts +177 -0
  9. package/dist/browser/client/solid.d.ts.map +1 -0
  10. package/dist/browser/client/solid.js +130 -0
  11. package/dist/browser/client/solid.js.map +1 -0
  12. package/dist/browser/client/svelte.d.ts +177 -0
  13. package/dist/browser/client/svelte.d.ts.map +1 -0
  14. package/dist/browser/client/svelte.js +132 -0
  15. package/dist/browser/client/svelte.js.map +1 -0
  16. package/dist/browser/client/vanilla.d.ts +204 -0
  17. package/dist/browser/client/vanilla.d.ts.map +1 -0
  18. package/dist/browser/client/vanilla.js +160 -0
  19. package/dist/browser/client/vanilla.js.map +1 -0
  20. package/dist/browser/client/vue.d.ts +177 -0
  21. package/dist/browser/client/vue.d.ts.map +1 -0
  22. package/dist/browser/client/vue.js +128 -0
  23. package/dist/browser/client/vue.js.map +1 -0
  24. package/dist/browser/client-BCzNDSlW.d.ts +711 -0
  25. package/dist/browser/client-BCzNDSlW.d.ts.map +1 -0
  26. package/dist/browser/index.d.ts +504 -0
  27. package/dist/browser/index.d.ts.map +1 -0
  28. package/dist/browser/index.js +2 -0
  29. package/dist/browser/src-CSPQuoKz.js +2286 -0
  30. package/dist/browser/src-CSPQuoKz.js.map +1 -0
  31. package/dist/cli/authorization-browser.js +20 -0
  32. package/dist/cli/authorization-browser.js.map +1 -0
  33. package/dist/cli/cli.d.ts +6 -0
  34. package/dist/cli/cli.d.ts.map +1 -0
  35. package/dist/cli/cli.js +258 -0
  36. package/dist/cli/cli.js.map +1 -0
  37. package/dist/cli/definition.js +13 -0
  38. package/dist/cli/definition.js.map +1 -0
  39. package/dist/cli/index.js +14 -0
  40. package/dist/cli/index.js.map +1 -0
  41. package/dist/cli/project-connector-client.js +235 -0
  42. package/dist/cli/project-connector-client.js.map +1 -0
  43. package/dist/cli/project-connector-contracts.js +125 -0
  44. package/dist/cli/project-connector-contracts.js.map +1 -0
  45. package/dist/cli/routes.js +449 -0
  46. package/dist/cli/routes.js.map +1 -0
  47. package/dist/cli/schema.js +18 -0
  48. package/dist/cli/schema.js.map +1 -0
  49. package/dist/node/definition.d.ts +170 -0
  50. package/dist/node/definition.d.ts.map +1 -0
  51. package/dist/node/definition.js +13 -0
  52. package/dist/node/definition.js.map +1 -0
  53. package/dist/node/index.d.ts +456 -0
  54. package/dist/node/index.d.ts.map +1 -0
  55. package/dist/node/index.js +36 -0
  56. package/dist/node/index.js.map +1 -0
  57. package/dist/node/project-connector-client.d.ts +13 -0
  58. package/dist/node/project-connector-client.d.ts.map +1 -0
  59. package/dist/node/project-connector-client.js +235 -0
  60. package/dist/node/project-connector-client.js.map +1 -0
  61. package/dist/node/project-connector-contracts.d.ts +179 -0
  62. package/dist/node/project-connector-contracts.d.ts.map +1 -0
  63. package/dist/node/project-connector-contracts.js +125 -0
  64. package/dist/node/project-connector-contracts.js.map +1 -0
  65. package/dist/node/routes.d.ts +307 -0
  66. package/dist/node/routes.d.ts.map +1 -0
  67. package/dist/node/routes.js +449 -0
  68. package/dist/node/routes.js.map +1 -0
  69. package/dist/node/schema.d.ts +49 -0
  70. package/dist/node/schema.d.ts.map +1 -0
  71. package/dist/node/schema.js +18 -0
  72. package/dist/node/schema.js.map +1 -0
  73. package/dist/node/testing/project-connector-test-gateway.d.ts +63 -0
  74. package/dist/node/testing/project-connector-test-gateway.d.ts.map +1 -0
  75. package/dist/node/testing/project-connector-test-gateway.js +370 -0
  76. package/dist/node/testing/project-connector-test-gateway.js.map +1 -0
  77. package/package.json +111 -3
@@ -0,0 +1,456 @@
1
+ import { projectConnectorConnectInputSchema } from "./project-connector-contracts.js";
2
+ import { ProjectConnectorConnectionReadinessChangedPayload, ProjectConnectorFragmentConfig } from "./definition.js";
3
+ import { FragnoPublicClientConfig } from "@fragno-dev/core/client";
4
+ import { FragnoPublicConfigWithDatabase } from "@fragno-dev/db";
5
+ //#region src/index.d.ts
6
+ /** Creates a project-scoped connector with integrator-owned user authentication. */
7
+ declare function createProjectConnectorFragment(config: ProjectConnectorFragmentConfig, fragnoConfig: FragnoPublicConfigWithDatabase): import("@fragno-dev/core").FragnoInstantiatedFragment<readonly [import("@fragno-dev/core").FragnoRouteConfig<"GET", "/provider-configs", import("@standard-schema/spec").StandardSchemaV1<unknown, unknown> | undefined, import("zod").ZodObject<{
8
+ projectId: import("zod").ZodString;
9
+ providerConfigs: import("zod").ZodArray<import("zod").ZodObject<{
10
+ id: import("zod").ZodString;
11
+ service: import("zod").ZodString;
12
+ displayName: import("zod").ZodString;
13
+ callbackUrl: import("zod").ZodURL;
14
+ effectiveScopes: import("zod").ZodArray<import("zod").ZodString>;
15
+ proxyAvailable: import("zod").ZodBoolean;
16
+ }, import("zod/v4/core").$strip>>;
17
+ }, import("zod/v4/core").$strip>, "UNAUTHENTICATED" | "PROJECT_CONNECTOR_ERROR", string, import("@fragno-dev/db").DatabaseRequestContext<{
18
+ onConnectionReadinessChanged: import("@fragno-dev/db").HookFn<ProjectConnectorConnectionReadinessChangedPayload>;
19
+ }>>, import("@fragno-dev/core").FragnoRouteConfig<"GET", "/provider-configs/:providerConfigId/actions", import("@standard-schema/spec").StandardSchemaV1<unknown, unknown> | undefined, import("zod").ZodObject<{
20
+ projectId: import("zod").ZodString;
21
+ providerConfigId: import("zod").ZodString;
22
+ actions: import("zod").ZodArray<import("zod").ZodObject<{
23
+ id: import("zod").ZodString;
24
+ service: import("zod").ZodString;
25
+ name: import("zod").ZodString;
26
+ description: import("zod").ZodNullable<import("zod").ZodString>;
27
+ inputSchema: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>;
28
+ outputSchema: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>;
29
+ }, import("zod/v4/core").$strip>>;
30
+ }, import("zod/v4/core").$strip>, "UNAUTHENTICATED" | "PROJECT_CONNECTOR_ERROR" | "PROVIDER_CONFIG_NOT_FOUND", string, import("@fragno-dev/db").DatabaseRequestContext<{
31
+ onConnectionReadinessChanged: import("@fragno-dev/db").HookFn<ProjectConnectorConnectionReadinessChangedPayload>;
32
+ }>>, import("@fragno-dev/core").FragnoRouteConfig<"GET", "/status", import("@standard-schema/spec").StandardSchemaV1<unknown, unknown> | undefined, import("zod").ZodObject<{
33
+ authenticated: import("zod").ZodLiteral<true>;
34
+ }, import("zod/v4/core").$strip>, "UNAUTHENTICATED" | "PROJECT_CONNECTOR_ERROR", string, import("@fragno-dev/db").DatabaseRequestContext<{
35
+ onConnectionReadinessChanged: import("@fragno-dev/db").HookFn<ProjectConnectorConnectionReadinessChangedPayload>;
36
+ }>>, import("@fragno-dev/core").FragnoRouteConfig<"POST", "/connection-requests", import("zod").ZodUnion<readonly [import("zod").ZodObject<{
37
+ service: import("zod").ZodString;
38
+ connectionName: import("zod").ZodString;
39
+ returnUri: import("zod").ZodURL;
40
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
41
+ providerConfigId: import("zod").ZodString;
42
+ connectionName: import("zod").ZodString;
43
+ returnUri: import("zod").ZodURL;
44
+ }, import("zod/v4/core").$strict>]>, import("zod").ZodObject<{
45
+ id: import("zod").ZodString;
46
+ projectId: import("zod").ZodString;
47
+ providerConfigId: import("zod").ZodString;
48
+ externalUserId: import("zod").ZodString;
49
+ service: import("zod").ZodString;
50
+ connectionName: import("zod").ZodString;
51
+ authorizationUrl: import("zod").ZodURL;
52
+ expiresAt: import("zod").ZodString;
53
+ state: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
54
+ status: import("zod").ZodLiteral<"initiated">;
55
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
56
+ status: import("zod").ZodLiteral<"connected">;
57
+ connectedAccountId: import("zod").ZodString;
58
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
59
+ status: import("zod").ZodLiteral<"failed">;
60
+ errorCode: import("zod").ZodNullable<import("zod").ZodString>;
61
+ errorMessage: import("zod").ZodNullable<import("zod").ZodString>;
62
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
63
+ status: import("zod").ZodLiteral<"expired">;
64
+ }, import("zod/v4/core").$strip>], "status">;
65
+ }, import("zod/v4/core").$strip>, "UNAUTHENTICATED" | "PROJECT_CONNECTOR_ERROR" | "RETURN_URI_NOT_ALLOWED", string, import("@fragno-dev/db").DatabaseRequestContext<{
66
+ onConnectionReadinessChanged: import("@fragno-dev/db").HookFn<ProjectConnectorConnectionReadinessChangedPayload>;
67
+ }>>, import("@fragno-dev/core").FragnoRouteConfig<"GET", "/connection-requests/by-name", import("@standard-schema/spec").StandardSchemaV1<unknown, unknown> | undefined, import("zod").ZodObject<{
68
+ request: import("zod").ZodNullable<import("zod").ZodObject<{
69
+ id: import("zod").ZodString;
70
+ projectId: import("zod").ZodString;
71
+ providerConfigId: import("zod").ZodString;
72
+ externalUserId: import("zod").ZodString;
73
+ service: import("zod").ZodString;
74
+ connectionName: import("zod").ZodString;
75
+ authorizationUrl: import("zod").ZodURL;
76
+ expiresAt: import("zod").ZodString;
77
+ state: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
78
+ status: import("zod").ZodLiteral<"initiated">;
79
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
80
+ status: import("zod").ZodLiteral<"connected">;
81
+ connectedAccountId: import("zod").ZodString;
82
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
83
+ status: import("zod").ZodLiteral<"failed">;
84
+ errorCode: import("zod").ZodNullable<import("zod").ZodString>;
85
+ errorMessage: import("zod").ZodNullable<import("zod").ZodString>;
86
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
87
+ status: import("zod").ZodLiteral<"expired">;
88
+ }, import("zod/v4/core").$strip>], "status">;
89
+ }, import("zod/v4/core").$strip>>;
90
+ }, import("zod/v4/core").$strict>, "UNAUTHENTICATED" | "INVALID_SELECTOR" | "CONNECTION_AMBIGUOUS", "projectId" | "providerConfigId" | "connectionName", import("@fragno-dev/db").DatabaseRequestContext<{
91
+ onConnectionReadinessChanged: import("@fragno-dev/db").HookFn<ProjectConnectorConnectionReadinessChangedPayload>;
92
+ }>>, import("@fragno-dev/core").FragnoRouteConfig<"POST", "/connection-requests/:requestId/refresh", import("@standard-schema/spec").StandardSchemaV1<unknown, unknown> | undefined, import("zod").ZodObject<{
93
+ id: import("zod").ZodString;
94
+ projectId: import("zod").ZodString;
95
+ providerConfigId: import("zod").ZodString;
96
+ externalUserId: import("zod").ZodString;
97
+ service: import("zod").ZodString;
98
+ connectionName: import("zod").ZodString;
99
+ authorizationUrl: import("zod").ZodURL;
100
+ expiresAt: import("zod").ZodString;
101
+ state: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
102
+ status: import("zod").ZodLiteral<"initiated">;
103
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
104
+ status: import("zod").ZodLiteral<"connected">;
105
+ connectedAccountId: import("zod").ZodString;
106
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
107
+ status: import("zod").ZodLiteral<"failed">;
108
+ errorCode: import("zod").ZodNullable<import("zod").ZodString>;
109
+ errorMessage: import("zod").ZodNullable<import("zod").ZodString>;
110
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
111
+ status: import("zod").ZodLiteral<"expired">;
112
+ }, import("zod/v4/core").$strip>], "status">;
113
+ }, import("zod/v4/core").$strip>, "UNAUTHENTICATED" | "PROJECT_CONNECTOR_ERROR" | "REQUEST_NOT_FOUND", string, import("@fragno-dev/db").DatabaseRequestContext<{
114
+ onConnectionReadinessChanged: import("@fragno-dev/db").HookFn<ProjectConnectorConnectionReadinessChangedPayload>;
115
+ }>>, import("@fragno-dev/core").FragnoRouteConfig<"GET", "/accounts", import("@standard-schema/spec").StandardSchemaV1<unknown, unknown> | undefined, import("zod").ZodObject<{
116
+ accounts: import("zod").ZodArray<import("zod").ZodObject<{
117
+ id: import("zod").ZodString;
118
+ projectId: import("zod").ZodString;
119
+ providerConfigId: import("zod").ZodString;
120
+ externalUserId: import("zod").ZodString;
121
+ service: import("zod").ZodString;
122
+ connectionName: import("zod").ZodString;
123
+ }, import("zod/v4/core").$strip>>;
124
+ cursor: import("zod").ZodNullable<import("zod").ZodString>;
125
+ hasNextPage: import("zod").ZodBoolean;
126
+ }, import("zod/v4/core").$strip>, "UNAUTHENTICATED" | "INVALID_CURSOR", "cursor", import("@fragno-dev/db").DatabaseRequestContext<{
127
+ onConnectionReadinessChanged: import("@fragno-dev/db").HookFn<ProjectConnectorConnectionReadinessChangedPayload>;
128
+ }>>, import("@fragno-dev/core").FragnoRouteConfig<"GET", "/accounts/by-name", import("@standard-schema/spec").StandardSchemaV1<unknown, unknown> | undefined, import("zod").ZodObject<{
129
+ account: import("zod").ZodNullable<import("zod").ZodObject<{
130
+ id: import("zod").ZodString;
131
+ projectId: import("zod").ZodString;
132
+ providerConfigId: import("zod").ZodString;
133
+ externalUserId: import("zod").ZodString;
134
+ service: import("zod").ZodString;
135
+ connectionName: import("zod").ZodString;
136
+ }, import("zod/v4/core").$strip>>;
137
+ }, import("zod/v4/core").$strict>, "UNAUTHENTICATED" | "INVALID_SELECTOR" | "CONNECTION_AMBIGUOUS", "projectId" | "providerConfigId" | "connectionName", import("@fragno-dev/db").DatabaseRequestContext<{
138
+ onConnectionReadinessChanged: import("@fragno-dev/db").HookFn<ProjectConnectorConnectionReadinessChangedPayload>;
139
+ }>>, import("@fragno-dev/core").FragnoRouteConfig<"GET", "/accounts/:accountId/profile", import("@standard-schema/spec").StandardSchemaV1<unknown, unknown> | undefined, import("zod").ZodObject<{
140
+ connectedAccountId: import("zod").ZodString;
141
+ externalUserId: import("zod").ZodString;
142
+ service: import("zod").ZodString;
143
+ profile: import("zod").ZodObject<{
144
+ id: import("zod").ZodString;
145
+ kind: import("zod").ZodString;
146
+ username: import("zod").ZodNullable<import("zod").ZodString>;
147
+ displayName: import("zod").ZodNullable<import("zod").ZodString>;
148
+ avatarUrl: import("zod").ZodNullable<import("zod").ZodString>;
149
+ email: import("zod").ZodNullable<import("zod").ZodString>;
150
+ metadata: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>;
151
+ }, import("zod/v4/core").$strip>;
152
+ fetchedAt: import("zod").ZodNumber;
153
+ }, import("zod/v4/core").$strip>, "UNAUTHENTICATED" | "PROJECT_CONNECTOR_ERROR" | "ACCOUNT_NOT_FOUND", string, import("@fragno-dev/db").DatabaseRequestContext<{
154
+ onConnectionReadinessChanged: import("@fragno-dev/db").HookFn<ProjectConnectorConnectionReadinessChangedPayload>;
155
+ }>>, import("@fragno-dev/core").FragnoRouteConfig<"POST", "/accounts/:accountId/actions/:actionId", import("zod").ZodObject<{
156
+ input: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>;
157
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
158
+ executionId: import("zod").ZodString;
159
+ actionId: import("zod").ZodString;
160
+ output: import("zod").ZodUnknown & import("zod").ZodType<{} | null, unknown, import("zod/v4/core").$ZodTypeInternals<{} | null, unknown>>;
161
+ }, import("zod/v4/core").$strip>, "UNAUTHENTICATED" | "PROJECT_CONNECTOR_ERROR" | "ACCOUNT_NOT_FOUND" | "ACTION_SERVICE_MISMATCH", string, import("@fragno-dev/db").DatabaseRequestContext<{
162
+ onConnectionReadinessChanged: import("@fragno-dev/db").HookFn<ProjectConnectorConnectionReadinessChangedPayload>;
163
+ }>>], {
164
+ projectConnector: {
165
+ listProviderConfigs(): Promise<{
166
+ projectId: string;
167
+ providerConfigs: {
168
+ id: string;
169
+ service: string;
170
+ displayName: string;
171
+ callbackUrl: string;
172
+ effectiveScopes: string[];
173
+ proxyAvailable: boolean;
174
+ }[];
175
+ }>;
176
+ listProviderActions(providerConfigId: string): Promise<{
177
+ projectId: string;
178
+ providerConfigId: string;
179
+ actions: {
180
+ id: string;
181
+ service: string;
182
+ name: string;
183
+ description: string | null;
184
+ inputSchema: Record<string, unknown>;
185
+ outputSchema: Record<string, unknown>;
186
+ }[];
187
+ } | null>;
188
+ check(): Promise<{
189
+ authenticated: true;
190
+ }>;
191
+ connect(externalUserId: string, input: import("zod").infer<typeof projectConnectorConnectInputSchema>): Promise<{
192
+ id: string;
193
+ projectId: string;
194
+ providerConfigId: string;
195
+ externalUserId: string;
196
+ service: string;
197
+ connectionName: string | null;
198
+ authorizationUrl: string;
199
+ expiresAt: string;
200
+ } & ({
201
+ status: "initiated";
202
+ } | {
203
+ status: "connected";
204
+ connectedAccountId: string;
205
+ } | {
206
+ status: "failed";
207
+ errorCode: string | null;
208
+ errorMessage: string | null;
209
+ } | {
210
+ status: "expired";
211
+ })>;
212
+ getConnectionRequest(requestId: string): Promise<{
213
+ id: string;
214
+ projectId: string;
215
+ providerConfigId: string;
216
+ externalUserId: string;
217
+ service: string;
218
+ connectionName: string | null;
219
+ authorizationUrl: string;
220
+ expiresAt: string;
221
+ } & ({
222
+ status: "initiated";
223
+ } | {
224
+ status: "connected";
225
+ connectedAccountId: string;
226
+ } | {
227
+ status: "failed";
228
+ errorCode: string | null;
229
+ errorMessage: string | null;
230
+ } | {
231
+ status: "expired";
232
+ })>;
233
+ getProfile(accountId: string): Promise<{
234
+ connectedAccountId: string;
235
+ externalUserId: string;
236
+ service: string;
237
+ profile: {
238
+ id: string;
239
+ kind: string;
240
+ username: string | null;
241
+ displayName: string | null;
242
+ avatarUrl: string | null;
243
+ email: string | null;
244
+ metadata: Record<string, unknown>;
245
+ };
246
+ fetchedAt: number;
247
+ }>;
248
+ execute(account: {
249
+ externalUserId: string;
250
+ providerConfigId: string;
251
+ id: string;
252
+ }, actionId: string, input: Record<string, unknown>): Promise<{
253
+ executionId: string;
254
+ actionId: string;
255
+ output: {} | null;
256
+ }>;
257
+ };
258
+ } & import("@fragno-dev/db").ImplicitDatabaseDependencies<import("@fragno-dev/db/schema").Schema<{
259
+ connectionRequest: import("@fragno-dev/db/schema").Table<{
260
+ id: import("@fragno-dev/db/schema").IdColumn<"varchar(128)", string | import("@fragno-dev/db/schema").FragnoId | null, import("@fragno-dev/db/schema").FragnoId>;
261
+ projectId: import("@fragno-dev/db/schema").Column<"string", string, string>;
262
+ providerConfigId: import("@fragno-dev/db/schema").Column<"string", string, string>;
263
+ externalUserId: import("@fragno-dev/db/schema").Column<"string", string, string>;
264
+ service: import("@fragno-dev/db/schema").Column<"string", string, string>;
265
+ authorizationUrl: import("@fragno-dev/db/schema").Column<"text", string, string>;
266
+ expiresAt: import("@fragno-dev/db/schema").Column<"string", string, string>;
267
+ state: import("@fragno-dev/db/schema").Column<"json", {
268
+ status: "initiated";
269
+ } | {
270
+ status: "connected";
271
+ connectedAccountId: string;
272
+ } | {
273
+ status: "failed";
274
+ errorCode: string | null;
275
+ errorMessage: string | null;
276
+ } | {
277
+ status: "expired";
278
+ }, {
279
+ status: "initiated";
280
+ } | {
281
+ status: "connected";
282
+ connectedAccountId: string;
283
+ } | {
284
+ status: "failed";
285
+ errorCode: string | null;
286
+ errorMessage: string | null;
287
+ } | {
288
+ status: "expired";
289
+ }>;
290
+ connectionName: import("@fragno-dev/db/schema").Column<"string", string, string>;
291
+ }, Record<"idx_request_named_connection", import("@fragno-dev/db/schema").Index<readonly [import("@fragno-dev/db/schema").Column<"string", string, string>, import("@fragno-dev/db/schema").Column<"string", string, string>, import("@fragno-dev/db/schema").Column<"string", string, string>, import("@fragno-dev/db/schema").Column<"string", string | null, string | null>] & import("@fragno-dev/db/schema").AnyColumn[], readonly ["externalUserId", "projectId", "providerConfigId", "connectionName"]>>>;
292
+ connectedAccount: import("@fragno-dev/db/schema").Table<{
293
+ id: import("@fragno-dev/db/schema").IdColumn<"varchar(128)", string | import("@fragno-dev/db/schema").FragnoId | null, import("@fragno-dev/db/schema").FragnoId>;
294
+ projectId: import("@fragno-dev/db/schema").Column<"string", string, string>;
295
+ providerConfigId: import("@fragno-dev/db/schema").Column<"string", string, string>;
296
+ externalUserId: import("@fragno-dev/db/schema").Column<"string", string, string>;
297
+ service: import("@fragno-dev/db/schema").Column<"string", string, string>;
298
+ connectionName: import("@fragno-dev/db/schema").Column<"string", string, string>;
299
+ }, Record<"idx_account_external_user_id", import("@fragno-dev/db/schema").Index<readonly [import("@fragno-dev/db/schema").Column<"string", string, string>, import("@fragno-dev/db/schema").IdColumn<"varchar(128)", string | import("@fragno-dev/db/schema").FragnoId | null, import("@fragno-dev/db/schema").FragnoId>] & import("@fragno-dev/db/schema").AnyColumn[], readonly ["externalUserId", "id"]>> & Record<"idx_account_named_connection", import("@fragno-dev/db/schema").Index<readonly [import("@fragno-dev/db/schema").Column<"string", string, string>, import("@fragno-dev/db/schema").Column<"string", string, string>, import("@fragno-dev/db/schema").Column<"string", string, string>, import("@fragno-dev/db/schema").Column<"string", string | null, string | null>] & import("@fragno-dev/db/schema").AnyColumn[], readonly ["externalUserId", "projectId", "providerConfigId", "connectionName"]>>>;
300
+ }>>, import("@fragno-dev/core").BoundServices<{}>, import("@fragno-dev/db").DatabaseServiceContext<{
301
+ onConnectionReadinessChanged: import("@fragno-dev/db").HookFn<ProjectConnectorConnectionReadinessChangedPayload>;
302
+ }>, import("@fragno-dev/db").DatabaseRequestContext<{
303
+ onConnectionReadinessChanged: import("@fragno-dev/db").HookFn<ProjectConnectorConnectionReadinessChangedPayload>;
304
+ }>, import("@fragno-dev/db/fragment-definition-builder").DatabaseRequestStorage, FragnoPublicConfigWithDatabase, never>;
305
+ /** Discover project OAuth configurations and select only server-verified accounts for actions. */
306
+ declare function createProjectConnectorFragmentClients(fragnoConfig?: FragnoPublicClientConfig): {
307
+ useProviderConfigs: import("@fragno-dev/core/client").FragnoClientHookData<"GET", "/provider-configs", import("zod").ZodObject<{
308
+ projectId: import("zod").ZodString;
309
+ providerConfigs: import("zod").ZodArray<import("zod").ZodObject<{
310
+ id: import("zod").ZodString;
311
+ service: import("zod").ZodString;
312
+ displayName: import("zod").ZodString;
313
+ callbackUrl: import("zod").ZodURL;
314
+ effectiveScopes: import("zod").ZodArray<import("zod").ZodString>;
315
+ proxyAvailable: import("zod").ZodBoolean;
316
+ }, import("zod/v4/core").$strip>>;
317
+ }, import("zod/v4/core").$strip>, "UNAUTHENTICATED" | "PROJECT_CONNECTOR_ERROR", string>;
318
+ useProviderActions: import("@fragno-dev/core/client").FragnoClientHookData<"GET", "/provider-configs/:providerConfigId/actions", import("zod").ZodObject<{
319
+ projectId: import("zod").ZodString;
320
+ providerConfigId: import("zod").ZodString;
321
+ actions: import("zod").ZodArray<import("zod").ZodObject<{
322
+ id: import("zod").ZodString;
323
+ service: import("zod").ZodString;
324
+ name: import("zod").ZodString;
325
+ description: import("zod").ZodNullable<import("zod").ZodString>;
326
+ inputSchema: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>;
327
+ outputSchema: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>;
328
+ }, import("zod/v4/core").$strip>>;
329
+ }, import("zod/v4/core").$strip>, "UNAUTHENTICATED" | "PROJECT_CONNECTOR_ERROR" | "PROVIDER_CONFIG_NOT_FOUND", string>;
330
+ useStatus: import("@fragno-dev/core/client").FragnoClientHookData<"GET", "/status", import("zod").ZodObject<{
331
+ authenticated: import("zod").ZodLiteral<true>;
332
+ }, import("zod/v4/core").$strip>, "UNAUTHENTICATED" | "PROJECT_CONNECTOR_ERROR", string>;
333
+ useAccounts: import("@fragno-dev/core/client").FragnoClientHookData<"GET", "/accounts", import("zod").ZodObject<{
334
+ accounts: import("zod").ZodArray<import("zod").ZodObject<{
335
+ id: import("zod").ZodString;
336
+ projectId: import("zod").ZodString;
337
+ providerConfigId: import("zod").ZodString;
338
+ externalUserId: import("zod").ZodString;
339
+ service: import("zod").ZodString;
340
+ connectionName: import("zod").ZodString;
341
+ }, import("zod/v4/core").$strip>>;
342
+ cursor: import("zod").ZodNullable<import("zod").ZodString>;
343
+ hasNextPage: import("zod").ZodBoolean;
344
+ }, import("zod/v4/core").$strip>, "UNAUTHENTICATED" | "INVALID_CURSOR", "cursor">;
345
+ useNamedAccount: import("@fragno-dev/core/client").FragnoClientHookData<"GET", "/accounts/by-name", import("zod").ZodObject<{
346
+ account: import("zod").ZodNullable<import("zod").ZodObject<{
347
+ id: import("zod").ZodString;
348
+ projectId: import("zod").ZodString;
349
+ providerConfigId: import("zod").ZodString;
350
+ externalUserId: import("zod").ZodString;
351
+ service: import("zod").ZodString;
352
+ connectionName: import("zod").ZodString;
353
+ }, import("zod/v4/core").$strip>>;
354
+ }, import("zod/v4/core").$strict>, "UNAUTHENTICATED" | "INVALID_SELECTOR" | "CONNECTION_AMBIGUOUS", "projectId" | "providerConfigId" | "connectionName">;
355
+ useNamedConnectionRequest: import("@fragno-dev/core/client").FragnoClientHookData<"GET", "/connection-requests/by-name", import("zod").ZodObject<{
356
+ request: import("zod").ZodNullable<import("zod").ZodObject<{
357
+ id: import("zod").ZodString;
358
+ projectId: import("zod").ZodString;
359
+ providerConfigId: import("zod").ZodString;
360
+ externalUserId: import("zod").ZodString;
361
+ service: import("zod").ZodString;
362
+ connectionName: import("zod").ZodString;
363
+ authorizationUrl: import("zod").ZodURL;
364
+ expiresAt: import("zod").ZodString;
365
+ state: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
366
+ status: import("zod").ZodLiteral<"initiated">;
367
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
368
+ status: import("zod").ZodLiteral<"connected">;
369
+ connectedAccountId: import("zod").ZodString;
370
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
371
+ status: import("zod").ZodLiteral<"failed">;
372
+ errorCode: import("zod").ZodNullable<import("zod").ZodString>;
373
+ errorMessage: import("zod").ZodNullable<import("zod").ZodString>;
374
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
375
+ status: import("zod").ZodLiteral<"expired">;
376
+ }, import("zod/v4/core").$strip>], "status">;
377
+ }, import("zod/v4/core").$strip>>;
378
+ }, import("zod/v4/core").$strict>, "UNAUTHENTICATED" | "INVALID_SELECTOR" | "CONNECTION_AMBIGUOUS", "projectId" | "providerConfigId" | "connectionName">;
379
+ useProfile: import("@fragno-dev/core/client").FragnoClientHookData<"GET", "/accounts/:accountId/profile", import("zod").ZodObject<{
380
+ connectedAccountId: import("zod").ZodString;
381
+ externalUserId: import("zod").ZodString;
382
+ service: import("zod").ZodString;
383
+ profile: import("zod").ZodObject<{
384
+ id: import("zod").ZodString;
385
+ kind: import("zod").ZodString;
386
+ username: import("zod").ZodNullable<import("zod").ZodString>;
387
+ displayName: import("zod").ZodNullable<import("zod").ZodString>;
388
+ avatarUrl: import("zod").ZodNullable<import("zod").ZodString>;
389
+ email: import("zod").ZodNullable<import("zod").ZodString>;
390
+ metadata: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>;
391
+ }, import("zod/v4/core").$strip>;
392
+ fetchedAt: import("zod").ZodNumber;
393
+ }, import("zod/v4/core").$strip>, "UNAUTHENTICATED" | "PROJECT_CONNECTOR_ERROR" | "ACCOUNT_NOT_FOUND", string>;
394
+ connect: import("@fragno-dev/core/client").FragnoClientMutatorData<import("@fragno-dev/core/api").NonGetHTTPMethod, "/connection-requests", import("zod").ZodUnion<readonly [import("zod").ZodObject<{
395
+ service: import("zod").ZodString;
396
+ connectionName: import("zod").ZodString;
397
+ returnUri: import("zod").ZodURL;
398
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
399
+ providerConfigId: import("zod").ZodString;
400
+ connectionName: import("zod").ZodString;
401
+ returnUri: import("zod").ZodURL;
402
+ }, import("zod/v4/core").$strict>]> | undefined, import("zod").ZodObject<{
403
+ id: import("zod").ZodString;
404
+ projectId: import("zod").ZodString;
405
+ providerConfigId: import("zod").ZodString;
406
+ externalUserId: import("zod").ZodString;
407
+ service: import("zod").ZodString;
408
+ connectionName: import("zod").ZodString;
409
+ authorizationUrl: import("zod").ZodURL;
410
+ expiresAt: import("zod").ZodString;
411
+ state: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
412
+ status: import("zod").ZodLiteral<"initiated">;
413
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
414
+ status: import("zod").ZodLiteral<"connected">;
415
+ connectedAccountId: import("zod").ZodString;
416
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
417
+ status: import("zod").ZodLiteral<"failed">;
418
+ errorCode: import("zod").ZodNullable<import("zod").ZodString>;
419
+ errorMessage: import("zod").ZodNullable<import("zod").ZodString>;
420
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
421
+ status: import("zod").ZodLiteral<"expired">;
422
+ }, import("zod/v4/core").$strip>], "status">;
423
+ }, import("zod/v4/core").$strip> | undefined, "UNAUTHENTICATED" | "PROJECT_CONNECTOR_ERROR" | "RETURN_URI_NOT_ALLOWED", string>;
424
+ refreshConnection: import("@fragno-dev/core/client").FragnoClientMutatorData<import("@fragno-dev/core/api").NonGetHTTPMethod, "/connection-requests/:requestId/refresh", import("@standard-schema/spec").StandardSchemaV1<unknown, unknown> | undefined, import("zod").ZodObject<{
425
+ id: import("zod").ZodString;
426
+ projectId: import("zod").ZodString;
427
+ providerConfigId: import("zod").ZodString;
428
+ externalUserId: import("zod").ZodString;
429
+ service: import("zod").ZodString;
430
+ connectionName: import("zod").ZodString;
431
+ authorizationUrl: import("zod").ZodURL;
432
+ expiresAt: import("zod").ZodString;
433
+ state: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
434
+ status: import("zod").ZodLiteral<"initiated">;
435
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
436
+ status: import("zod").ZodLiteral<"connected">;
437
+ connectedAccountId: import("zod").ZodString;
438
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
439
+ status: import("zod").ZodLiteral<"failed">;
440
+ errorCode: import("zod").ZodNullable<import("zod").ZodString>;
441
+ errorMessage: import("zod").ZodNullable<import("zod").ZodString>;
442
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
443
+ status: import("zod").ZodLiteral<"expired">;
444
+ }, import("zod/v4/core").$strip>], "status">;
445
+ }, import("zod/v4/core").$strip> | undefined, "UNAUTHENTICATED" | "PROJECT_CONNECTOR_ERROR" | "REQUEST_NOT_FOUND", string>;
446
+ executeAction: import("@fragno-dev/core/client").FragnoClientMutatorData<import("@fragno-dev/core/api").NonGetHTTPMethod, "/accounts/:accountId/actions/:actionId", import("zod").ZodObject<{
447
+ input: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>;
448
+ }, import("zod/v4/core").$strict> | undefined, import("zod").ZodObject<{
449
+ executionId: import("zod").ZodString;
450
+ actionId: import("zod").ZodString;
451
+ output: import("zod").ZodUnknown & import("zod").ZodType<{} | null, unknown, import("zod/v4/core").$ZodTypeInternals<{} | null, unknown>>;
452
+ }, import("zod/v4/core").$strip> | undefined, "UNAUTHENTICATED" | "PROJECT_CONNECTOR_ERROR" | "ACCOUNT_NOT_FOUND" | "ACTION_SERVICE_MISMATCH", string>;
453
+ };
454
+ //#endregion
455
+ export { createProjectConnectorFragment, createProjectConnectorFragmentClients };
456
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/index.ts"],"mappings":";;;;;;iBAcgB,+BACd,QAAQ,gCACR,cAAc,4DAA8B,gEAAA,8EAAA,8DAAA;;;;;;;;;;;gEAA9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAUA,sCAAsC,eAAc"}
@@ -0,0 +1,36 @@
1
+ import { projectConnectorFragmentDefinition } from "./definition.js";
2
+ import { projectConnectorRoutes } from "./routes.js";
3
+ import { createClientBuilder } from "@fragno-dev/core/client";
4
+ import { instantiate } from "@fragno-dev/core";
5
+ //#region src/index.ts
6
+ const routes = [projectConnectorRoutes];
7
+ /** Creates a project-scoped connector with integrator-owned user authentication. */
8
+ function createProjectConnectorFragment(config, fragnoConfig) {
9
+ return instantiate(projectConnectorFragmentDefinition).withConfig(config).withRoutes(routes).withOptions(fragnoConfig).build();
10
+ }
11
+ /** Discover project OAuth configurations and select only server-verified accounts for actions. */
12
+ function createProjectConnectorFragmentClients(fragnoConfig = {}) {
13
+ const builder = createClientBuilder(projectConnectorFragmentDefinition, fragnoConfig, routes);
14
+ return {
15
+ useProviderConfigs: builder.createHook("/provider-configs"),
16
+ useProviderActions: builder.createHook("/provider-configs/:providerConfigId/actions"),
17
+ useStatus: builder.createHook("/status"),
18
+ useAccounts: builder.createHook("/accounts"),
19
+ useNamedAccount: builder.createHook("/accounts/by-name"),
20
+ useNamedConnectionRequest: builder.createHook("/connection-requests/by-name"),
21
+ useProfile: builder.createHook("/accounts/:accountId/profile"),
22
+ connect: builder.createMutator("POST", "/connection-requests", (invalidate) => {
23
+ invalidate("GET", "/connection-requests/by-name", {});
24
+ }),
25
+ refreshConnection: builder.createMutator("POST", "/connection-requests/:requestId/refresh", (invalidate) => {
26
+ invalidate("GET", "/accounts", {});
27
+ invalidate("GET", "/accounts/by-name", {});
28
+ invalidate("GET", "/connection-requests/by-name", {});
29
+ }),
30
+ executeAction: builder.createMutator("POST", "/accounts/:accountId/actions/:actionId")
31
+ };
32
+ }
33
+ //#endregion
34
+ export { createProjectConnectorFragment, createProjectConnectorFragmentClients };
35
+
36
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["import { createClientBuilder, type FragnoPublicClientConfig } from \"@fragno-dev/core/client\";\n\nimport { instantiate } from \"@fragno-dev/core\";\nimport type { FragnoPublicConfigWithDatabase } from \"@fragno-dev/db\";\n\nimport {\n projectConnectorFragmentDefinition,\n type ProjectConnectorFragmentConfig,\n} from \"./definition\";\nimport { projectConnectorRoutes } from \"./routes\";\n\nconst routes = [projectConnectorRoutes] as const;\n\n/** Creates a project-scoped connector with integrator-owned user authentication. */\nexport function createProjectConnectorFragment(\n config: ProjectConnectorFragmentConfig,\n fragnoConfig: FragnoPublicConfigWithDatabase,\n) {\n return instantiate(projectConnectorFragmentDefinition)\n .withConfig(config)\n .withRoutes(routes)\n .withOptions(fragnoConfig)\n .build();\n}\n\n/** Discover project OAuth configurations and select only server-verified accounts for actions. */\nexport function createProjectConnectorFragmentClients(fragnoConfig: FragnoPublicClientConfig = {}) {\n const builder = createClientBuilder(projectConnectorFragmentDefinition, fragnoConfig, routes);\n return {\n useProviderConfigs: builder.createHook(\"/provider-configs\"),\n useProviderActions: builder.createHook(\"/provider-configs/:providerConfigId/actions\"),\n useStatus: builder.createHook(\"/status\"),\n useAccounts: builder.createHook(\"/accounts\"),\n useNamedAccount: builder.createHook(\"/accounts/by-name\"),\n useNamedConnectionRequest: builder.createHook(\"/connection-requests/by-name\"),\n useProfile: builder.createHook(\"/accounts/:accountId/profile\"),\n connect: builder.createMutator(\"POST\", \"/connection-requests\", (invalidate) => {\n invalidate(\"GET\", \"/connection-requests/by-name\", {});\n }),\n refreshConnection: builder.createMutator(\n \"POST\",\n \"/connection-requests/:requestId/refresh\",\n (invalidate) => {\n invalidate(\"GET\", \"/accounts\", {});\n invalidate(\"GET\", \"/accounts/by-name\", {});\n invalidate(\"GET\", \"/connection-requests/by-name\", {});\n },\n ),\n executeAction: builder.createMutator(\"POST\", \"/accounts/:accountId/actions/:actionId\"),\n };\n}\n"],"mappings":";;;;;AAWA,MAAM,SAAS,CAAC,sBAAsB;;AAGtC,SAAgB,+BACd,QACA,cACA;CACA,OAAO,YAAY,kCAAkC,CAAC,CACnD,WAAW,MAAM,CAAC,CAClB,WAAW,MAAM,CAAC,CAClB,YAAY,YAAY,CAAC,CACzB,MAAM;AACX;;AAGA,SAAgB,sCAAsC,eAAyC,CAAC,GAAG;CACjG,MAAM,UAAU,oBAAoB,oCAAoC,cAAc,MAAM;CAC5F,OAAO;EACL,oBAAoB,QAAQ,WAAW,mBAAmB;EAC1D,oBAAoB,QAAQ,WAAW,6CAA6C;EACpF,WAAW,QAAQ,WAAW,SAAS;EACvC,aAAa,QAAQ,WAAW,WAAW;EAC3C,iBAAiB,QAAQ,WAAW,mBAAmB;EACvD,2BAA2B,QAAQ,WAAW,8BAA8B;EAC5E,YAAY,QAAQ,WAAW,8BAA8B;EAC7D,SAAS,QAAQ,cAAc,QAAQ,yBAAyB,eAAe;GAC7E,WAAW,OAAO,gCAAgC,CAAC,CAAC;EACtD,CAAC;EACD,mBAAmB,QAAQ,cACzB,QACA,4CACC,eAAe;GACd,WAAW,OAAO,aAAa,CAAC,CAAC;GACjC,WAAW,OAAO,qBAAqB,CAAC,CAAC;GACzC,WAAW,OAAO,gCAAgC,CAAC,CAAC;EACtD,CACF;EACA,eAAe,QAAQ,cAAc,QAAQ,wCAAwC;CACvF;AACF"}
@@ -0,0 +1,13 @@
1
+ import "./project-connector-contracts.js";
2
+ import { z } from "zod";
3
+ import "@oomol-lab/connector";
4
+ //#region src/project-connector-client.d.ts
5
+ /** Server-only gateway credentials; null catalogApiKey disables action discovery, not account operations. */
6
+ type ProjectConnectorClientConfig = {
7
+ baseUrl: string;
8
+ apiKey: string;
9
+ catalogApiKey: string | null;
10
+ };
11
+ //#endregion
12
+ export { ProjectConnectorClientConfig };
13
+ //# sourceMappingURL=project-connector-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-connector-client.d.ts","names":[],"sources":["../../src/project-connector-client.ts"],"mappings":";;;;;KAmFY;EACV;EACA;EACA"}