@vibesdotdev/integrations 0.0.0-stage → 1.0.0-rc.2

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 (242) hide show
  1. package/LICENSE +18 -0
  2. package/README.md +100 -2
  3. package/dist/ai/ai.cloud.plugin.d.ts +5 -0
  4. package/dist/ai/ai.cloud.plugin.d.ts.map +1 -0
  5. package/dist/ai/ai.cloud.plugin.js +67 -0
  6. package/dist/ai/ai.cloud.plugin.js.map +1 -0
  7. package/dist/ai/ai.plugin.d.ts +5 -0
  8. package/dist/ai/ai.plugin.d.ts.map +1 -0
  9. package/dist/ai/ai.plugin.js +97 -0
  10. package/dist/ai/ai.plugin.js.map +1 -0
  11. package/dist/base/base.plugin.d.ts +10 -0
  12. package/dist/base/base.plugin.d.ts.map +1 -0
  13. package/dist/base/base.plugin.js +23 -0
  14. package/dist/base/base.plugin.js.map +1 -0
  15. package/dist/base/index.d.ts +13 -0
  16. package/dist/base/index.d.ts.map +1 -0
  17. package/dist/base/index.js +15 -0
  18. package/dist/base/index.js.map +1 -0
  19. package/dist/base/resolver.d.ts +13 -0
  20. package/dist/base/resolver.d.ts.map +1 -0
  21. package/dist/base/resolver.js +30 -0
  22. package/dist/base/resolver.js.map +1 -0
  23. package/dist/base/schemas.d.ts +167 -0
  24. package/dist/base/schemas.d.ts.map +1 -0
  25. package/dist/base/schemas.js +48 -0
  26. package/dist/base/schemas.js.map +1 -0
  27. package/dist/catalog/index.d.ts +6 -0
  28. package/dist/catalog/index.d.ts.map +1 -0
  29. package/dist/catalog/index.js +6 -0
  30. package/dist/catalog/index.js.map +1 -0
  31. package/dist/catalog/integration-catalog.capability.d.ts +14 -0
  32. package/dist/catalog/integration-catalog.capability.d.ts.map +1 -0
  33. package/dist/catalog/integration-catalog.capability.js +23 -0
  34. package/dist/catalog/integration-catalog.capability.js.map +1 -0
  35. package/dist/catalog/integration-catalog.descriptor.d.ts +6 -0
  36. package/dist/catalog/integration-catalog.descriptor.d.ts.map +1 -0
  37. package/dist/catalog/integration-catalog.descriptor.js +11 -0
  38. package/dist/catalog/integration-catalog.descriptor.js.map +1 -0
  39. package/dist/catalog/integration-catalog.exposure.d.ts +62 -0
  40. package/dist/catalog/integration-catalog.exposure.d.ts.map +1 -0
  41. package/dist/catalog/integration-catalog.exposure.js +101 -0
  42. package/dist/catalog/integration-catalog.exposure.js.map +1 -0
  43. package/dist/catalog/integration-catalog.http.d.ts +9 -0
  44. package/dist/catalog/integration-catalog.http.d.ts.map +1 -0
  45. package/dist/catalog/integration-catalog.http.js +58 -0
  46. package/dist/catalog/integration-catalog.http.js.map +1 -0
  47. package/dist/catalog/integration-catalog.kind.d.ts +36 -0
  48. package/dist/catalog/integration-catalog.kind.d.ts.map +1 -0
  49. package/dist/catalog/integration-catalog.kind.js +14 -0
  50. package/dist/catalog/integration-catalog.kind.js.map +1 -0
  51. package/dist/catalog/queries.d.ts +6 -0
  52. package/dist/catalog/queries.d.ts.map +1 -0
  53. package/dist/catalog/queries.js +29 -0
  54. package/dist/catalog/queries.js.map +1 -0
  55. package/dist/client/helper.d.ts +5 -0
  56. package/dist/client/helper.d.ts.map +1 -0
  57. package/dist/client/helper.js +6 -0
  58. package/dist/client/helper.js.map +1 -0
  59. package/dist/client/index.d.ts +4 -0
  60. package/dist/client/index.d.ts.map +1 -0
  61. package/dist/client/index.js +3 -0
  62. package/dist/client/index.js.map +1 -0
  63. package/dist/client/integrations.runtime-client.browser.d.ts +10 -0
  64. package/dist/client/integrations.runtime-client.browser.d.ts.map +1 -0
  65. package/dist/client/integrations.runtime-client.browser.js +13 -0
  66. package/dist/client/integrations.runtime-client.browser.js.map +1 -0
  67. package/dist/client/integrations.runtime-client.d.ts +25 -0
  68. package/dist/client/integrations.runtime-client.d.ts.map +1 -0
  69. package/dist/client/integrations.runtime-client.descriptor.d.ts +4 -0
  70. package/dist/client/integrations.runtime-client.descriptor.d.ts.map +1 -0
  71. package/dist/client/integrations.runtime-client.descriptor.js +13 -0
  72. package/dist/client/integrations.runtime-client.descriptor.js.map +1 -0
  73. package/dist/client/integrations.runtime-client.js +41 -0
  74. package/dist/client/integrations.runtime-client.js.map +1 -0
  75. package/dist/docs/integrations.docs.descriptor.d.ts +4 -0
  76. package/dist/docs/integrations.docs.descriptor.d.ts.map +1 -0
  77. package/dist/docs/integrations.docs.descriptor.js +43 -0
  78. package/dist/docs/integrations.docs.descriptor.js.map +1 -0
  79. package/dist/docs/integrations.providers.docs.descriptor.d.ts +4 -0
  80. package/dist/docs/integrations.providers.docs.descriptor.d.ts.map +1 -0
  81. package/dist/docs/integrations.providers.docs.descriptor.js +32 -0
  82. package/dist/docs/integrations.providers.docs.descriptor.js.map +1 -0
  83. package/dist/http/fetch-with-retry.d.ts +27 -0
  84. package/dist/http/fetch-with-retry.d.ts.map +1 -0
  85. package/dist/http/fetch-with-retry.js +76 -0
  86. package/dist/http/fetch-with-retry.js.map +1 -0
  87. package/dist/index.d.ts +24 -0
  88. package/dist/index.d.ts.map +1 -0
  89. package/dist/index.js +16 -0
  90. package/dist/index.js.map +1 -0
  91. package/dist/integrations.browser.plugin.d.ts +11 -0
  92. package/dist/integrations.browser.plugin.d.ts.map +1 -0
  93. package/dist/integrations.browser.plugin.js +26 -0
  94. package/dist/integrations.browser.plugin.js.map +1 -0
  95. package/dist/integrations.consumer.plugin.d.ts +3 -0
  96. package/dist/integrations.consumer.plugin.d.ts.map +1 -0
  97. package/dist/integrations.consumer.plugin.js +12 -0
  98. package/dist/integrations.consumer.plugin.js.map +1 -0
  99. package/dist/integrations.plugin.d.ts +10 -0
  100. package/dist/integrations.plugin.d.ts.map +1 -0
  101. package/dist/integrations.plugin.js +67 -0
  102. package/dist/integrations.plugin.js.map +1 -0
  103. package/dist/kinds/integration-store.context.descriptor.d.ts +31 -0
  104. package/dist/kinds/integration-store.context.descriptor.d.ts.map +1 -0
  105. package/dist/kinds/integration-store.context.descriptor.js +8 -0
  106. package/dist/kinds/integration-store.context.descriptor.js.map +1 -0
  107. package/dist/kinds/integration.kind.d.ts +74 -0
  108. package/dist/kinds/integration.kind.d.ts.map +1 -0
  109. package/dist/kinds/integration.kind.js +542 -0
  110. package/dist/kinds/integration.kind.js.map +1 -0
  111. package/dist/kinds/integration.store.d.ts +30 -0
  112. package/dist/kinds/integration.store.d.ts.map +1 -0
  113. package/dist/kinds/integration.store.js +295 -0
  114. package/dist/kinds/integration.store.js.map +1 -0
  115. package/dist/schemas/boundary.d.ts +7 -0
  116. package/dist/schemas/boundary.d.ts.map +1 -0
  117. package/dist/schemas/boundary.js +16 -0
  118. package/dist/schemas/boundary.js.map +1 -0
  119. package/dist/schemas/catalog.d.ts +135 -0
  120. package/dist/schemas/catalog.d.ts.map +1 -0
  121. package/dist/schemas/catalog.js +13 -0
  122. package/dist/schemas/catalog.js.map +1 -0
  123. package/dist/schemas/credential-resolution.d.ts +35 -0
  124. package/dist/schemas/credential-resolution.d.ts.map +1 -0
  125. package/dist/schemas/credential-resolution.js +14 -0
  126. package/dist/schemas/credential-resolution.js.map +1 -0
  127. package/dist/schemas/http-retry.d.ts +9 -0
  128. package/dist/schemas/http-retry.d.ts.map +1 -0
  129. package/dist/schemas/http-retry.js +8 -0
  130. package/dist/schemas/http-retry.js.map +1 -0
  131. package/dist/schemas/integration-connection.d.ts +79 -0
  132. package/dist/schemas/integration-connection.d.ts.map +1 -0
  133. package/dist/schemas/integration-connection.js +55 -0
  134. package/dist/schemas/integration-connection.js.map +1 -0
  135. package/dist/schemas/integration-descriptor.d.ts +358 -0
  136. package/dist/schemas/integration-descriptor.d.ts.map +1 -0
  137. package/dist/schemas/integration-descriptor.js +153 -0
  138. package/dist/schemas/integration-descriptor.js.map +1 -0
  139. package/dist/schemas/oauth-state.d.ts +30 -0
  140. package/dist/schemas/oauth-state.d.ts.map +1 -0
  141. package/dist/schemas/oauth-state.js +26 -0
  142. package/dist/schemas/oauth-state.js.map +1 -0
  143. package/dist/schemas/settings.d.ts +9 -0
  144. package/dist/schemas/settings.d.ts.map +1 -0
  145. package/dist/schemas/settings.js +8 -0
  146. package/dist/schemas/settings.js.map +1 -0
  147. package/dist/schemas/store.d.ts +68 -0
  148. package/dist/schemas/store.d.ts.map +1 -0
  149. package/dist/schemas/store.js +31 -0
  150. package/dist/schemas/store.js.map +1 -0
  151. package/dist/server/defaults/system-defaults.kind.d.ts +8 -0
  152. package/dist/server/defaults/system-defaults.kind.d.ts.map +1 -0
  153. package/dist/server/defaults/system-defaults.kind.js +13 -0
  154. package/dist/server/defaults/system-defaults.kind.js.map +1 -0
  155. package/dist/server/integration-oauth.d.ts +44 -0
  156. package/dist/server/integration-oauth.d.ts.map +1 -0
  157. package/dist/server/integration-oauth.js +56 -0
  158. package/dist/server/integration-oauth.js.map +1 -0
  159. package/dist/server/integration-secrets.d.ts +11 -0
  160. package/dist/server/integration-secrets.d.ts.map +1 -0
  161. package/dist/server/integration-secrets.js +98 -0
  162. package/dist/server/integration-secrets.js.map +1 -0
  163. package/dist/server/oauth-state.d.ts +74 -0
  164. package/dist/server/oauth-state.d.ts.map +1 -0
  165. package/dist/server/oauth-state.js +208 -0
  166. package/dist/server/oauth-state.js.map +1 -0
  167. package/dist/server/schemas/integration-oauth.d.ts +32 -0
  168. package/dist/server/schemas/integration-oauth.d.ts.map +1 -0
  169. package/dist/server/schemas/integration-oauth.js +20 -0
  170. package/dist/server/schemas/integration-oauth.js.map +1 -0
  171. package/dist/server/schemas/integration-secrets.d.ts +165 -0
  172. package/dist/server/schemas/integration-secrets.d.ts.map +1 -0
  173. package/dist/server/schemas/integration-secrets.js +72 -0
  174. package/dist/server/schemas/integration-secrets.js.map +1 -0
  175. package/dist/server/schemas/system-defaults.d.ts +124 -0
  176. package/dist/server/schemas/system-defaults.d.ts.map +1 -0
  177. package/dist/server/schemas/system-defaults.js +48 -0
  178. package/dist/server/schemas/system-defaults.js.map +1 -0
  179. package/dist/server/system-defaults.d.ts +20 -0
  180. package/dist/server/system-defaults.d.ts.map +1 -0
  181. package/dist/server/system-defaults.js +58 -0
  182. package/dist/server/system-defaults.js.map +1 -0
  183. package/dist/settings/context.d.ts +11 -0
  184. package/dist/settings/context.d.ts.map +1 -0
  185. package/dist/settings/context.js +19 -0
  186. package/dist/settings/context.js.map +1 -0
  187. package/dist/settings/system-settings-reader.context.descriptor.d.ts +43 -0
  188. package/dist/settings/system-settings-reader.context.descriptor.d.ts.map +1 -0
  189. package/dist/settings/system-settings-reader.context.descriptor.js +23 -0
  190. package/dist/settings/system-settings-reader.context.descriptor.js.map +1 -0
  191. package/dist/status/integration-connect.availability.d.ts +16 -0
  192. package/dist/status/integration-connect.availability.d.ts.map +1 -0
  193. package/dist/status/integration-connect.availability.js +14 -0
  194. package/dist/status/integration-connect.availability.js.map +1 -0
  195. package/dist/status/integration-connection-status.d.ts +18 -0
  196. package/dist/status/integration-connection-status.d.ts.map +1 -0
  197. package/dist/status/integration-connection-status.js +17 -0
  198. package/dist/status/integration-connection-status.js.map +1 -0
  199. package/dist/status/integration-connection.capability.d.ts +19 -0
  200. package/dist/status/integration-connection.capability.d.ts.map +1 -0
  201. package/dist/status/integration-connection.capability.js +15 -0
  202. package/dist/status/integration-connection.capability.js.map +1 -0
  203. package/dist/status/integration-connection.kind.d.ts +55 -0
  204. package/dist/status/integration-connection.kind.d.ts.map +1 -0
  205. package/dist/status/integration-connection.kind.js +31 -0
  206. package/dist/status/integration-connection.kind.js.map +1 -0
  207. package/dist/status/integration-connection.queries.d.ts +25 -0
  208. package/dist/status/integration-connection.queries.d.ts.map +1 -0
  209. package/dist/status/integration-connection.queries.js +65 -0
  210. package/dist/status/integration-connection.queries.js.map +1 -0
  211. package/dist/svelte/components/IntegrationsCatalog.svelte +201 -0
  212. package/dist/svelte/components/IntegrationsCatalog.svelte.d.ts +5 -0
  213. package/dist/svelte/components/IntegrationsCatalog.svelte.d.ts.map +1 -0
  214. package/dist/svelte/components/IntegrationsLoader.svelte +46 -0
  215. package/dist/svelte/components/IntegrationsLoader.svelte.d.ts +12 -0
  216. package/dist/svelte/components/IntegrationsLoader.svelte.d.ts.map +1 -0
  217. package/dist/svelte/connect-action.d.ts +20 -0
  218. package/dist/svelte/connect-action.d.ts.map +1 -0
  219. package/dist/svelte/connect-action.js +40 -0
  220. package/dist/svelte/docs/integrations-svelte.catalog.docs.descriptor.d.ts +4 -0
  221. package/dist/svelte/docs/integrations-svelte.catalog.docs.descriptor.d.ts.map +1 -0
  222. package/dist/svelte/docs/integrations-svelte.catalog.docs.descriptor.js +30 -0
  223. package/dist/svelte/index.d.ts +12 -0
  224. package/dist/svelte/index.d.ts.map +1 -0
  225. package/dist/svelte/index.js +7 -0
  226. package/dist/svelte/integrations-svelte.plugin.d.ts +10 -0
  227. package/dist/svelte/integrations-svelte.plugin.d.ts.map +1 -0
  228. package/dist/svelte/integrations-svelte.plugin.js +16 -0
  229. package/dist/svelte/loaders.d.ts +17 -0
  230. package/dist/svelte/loaders.d.ts.map +1 -0
  231. package/dist/svelte/loaders.js +17 -0
  232. package/dist/svelte/runtime.d.ts +12 -0
  233. package/dist/svelte/runtime.d.ts.map +1 -0
  234. package/dist/svelte/runtime.js +11 -0
  235. package/dist/svelte/state.svelte.d.ts +30 -0
  236. package/dist/svelte/state.svelte.d.ts.map +1 -0
  237. package/dist/svelte/state.svelte.js +133 -0
  238. package/dist/svelte/styles.css +2 -0
  239. package/dist/svelte/types.d.ts +13 -0
  240. package/dist/svelte/types.d.ts.map +1 -0
  241. package/dist/svelte/types.js +1 -0
  242. package/package.json +223 -4
@@ -0,0 +1,55 @@
1
+ import * as z from 'zod/v4';
2
+ export declare const INTEGRATION_CONNECTION_KIND: "integration/connection";
3
+ /**
4
+ * Open kind for provider connection behavior. A configured provider supplies
5
+ * or replaces connect/check behavior by declaring a descriptor of this kind
6
+ * for its provider id; consumers resolve it through the runtime and never
7
+ * branch on a provider id.
8
+ *
9
+ * The descriptor carries the provider's declared authentication/connection
10
+ * metadata, composed from the same owner schema the provider descriptor
11
+ * accepts, so declaration and resolution share one contract.
12
+ */
13
+ export declare const IntegrationConnectionDescriptorSchema: z.ZodObject<{
14
+ id: z.ZodString;
15
+ name: z.ZodOptional<z.ZodString>;
16
+ description: z.ZodOptional<z.ZodString>;
17
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
18
+ hardware: z.ZodOptional<z.ZodArray<z.ZodString>>;
19
+ enabled: z.ZodOptional<z.ZodBoolean>;
20
+ priority: z.ZodOptional<z.ZodNumber>;
21
+ capabilityId: z.ZodOptional<z.ZodString>;
22
+ requiredContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
23
+ optionalContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
24
+ config: z.ZodOptional<z.ZodUnknown>;
25
+ retention: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
26
+ maxAgeDays: z.ZodOptional<z.ZodNumber>;
27
+ maxEntries: z.ZodOptional<z.ZodNumber>;
28
+ maxBytes: z.ZodOptional<z.ZodNumber>;
29
+ cascadeFrom: z.ZodOptional<z.ZodString>;
30
+ ageField: z.ZodOptional<z.ZodString>;
31
+ reason: z.ZodString;
32
+ enforcedBy: z.ZodOptional<z.ZodString>;
33
+ }, z.core.$strip>]>>;
34
+ kind: z.ZodLiteral<"integration/connection">;
35
+ integrationId: z.ZodString;
36
+ connection: z.ZodObject<{
37
+ authMode: z.ZodOptional<z.ZodEnum<{
38
+ oauth: "oauth";
39
+ delegated: "delegated";
40
+ "system-config": "system-config";
41
+ webhook: "webhook";
42
+ }>>;
43
+ connectable: z.ZodDefault<z.ZodBoolean>;
44
+ checkable: z.ZodDefault<z.ZodBoolean>;
45
+ requiresProviderAdmin: z.ZodDefault<z.ZodBoolean>;
46
+ }, z.core.$strip>;
47
+ }, z.core.$strip>;
48
+ export type IntegrationConnectionDescriptor = z.infer<typeof IntegrationConnectionDescriptorSchema>;
49
+ /**
50
+ * Open kind: providers register descriptors and lazy implementation loaders
51
+ * for their own connection behavior. The kind declares no default — a
52
+ * provider that declares no connection capability has none.
53
+ */
54
+ export declare const integrationConnectionKind: import("@vibesdotdev/kernel").RuntimeKindDescriptorRecord<unknown>;
55
+ //# sourceMappingURL=integration-connection.kind.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration-connection.kind.d.ts","sourceRoot":"","sources":["../../src/status/integration-connection.kind.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAK5B,eAAO,MAAM,2BAA2B,EAAG,wBAAiC,CAAC;AAE7E;;;;;;;;;GASG;AACH,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAKhD,CAAC;AAEH,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qCAAqC,CAAC,CAAC;AAEpG;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,oEAGpC,CAAC"}
@@ -0,0 +1,31 @@
1
+ import * as z from 'zod/v4';
2
+ import { createRuntimeKind } from '@vibesdotdev/kernel/factory';
3
+ import { RuntimeDescriptorSchema } from '@vibesdotdev/kernel/schemas/descriptor';
4
+ import { IntegrationConnectionMetadataSchema } from "../schemas/integration-connection.js";
5
+ export const INTEGRATION_CONNECTION_KIND = 'integration/connection';
6
+ /**
7
+ * Open kind for provider connection behavior. A configured provider supplies
8
+ * or replaces connect/check behavior by declaring a descriptor of this kind
9
+ * for its provider id; consumers resolve it through the runtime and never
10
+ * branch on a provider id.
11
+ *
12
+ * The descriptor carries the provider's declared authentication/connection
13
+ * metadata, composed from the same owner schema the provider descriptor
14
+ * accepts, so declaration and resolution share one contract.
15
+ */
16
+ export const IntegrationConnectionDescriptorSchema = RuntimeDescriptorSchema.extend({
17
+ kind: z.literal(INTEGRATION_CONNECTION_KIND),
18
+ /** The `integration/provider` descriptor id this connection serves. */
19
+ integrationId: z.string().min(1),
20
+ connection: IntegrationConnectionMetadataSchema
21
+ });
22
+ /**
23
+ * Open kind: providers register descriptors and lazy implementation loaders
24
+ * for their own connection behavior. The kind declares no default — a
25
+ * provider that declares no connection capability has none.
26
+ */
27
+ export const integrationConnectionKind = createRuntimeKind({
28
+ id: INTEGRATION_CONNECTION_KIND,
29
+ descriptorSchema: IntegrationConnectionDescriptorSchema
30
+ });
31
+ //# sourceMappingURL=integration-connection.kind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration-connection.kind.js","sourceRoot":"","sources":["../../src/status/integration-connection.kind.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,mCAAmC,EAAE,MAAM,sCAAsC,CAAC;AAE3F,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,uBAAuB,CAAC,MAAM,CAAC;IACnF,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,2BAA2B,CAAC;IAC5C,uEAAuE;IACvE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,UAAU,EAAE,mCAAmC;CAC/C,CAAC,CAAC;AAIH;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAAiB,CAAC;IAC1D,EAAE,EAAE,2BAA2B;IAC/B,gBAAgB,EAAE,qCAAqC;CACvD,CAAC,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { RuntimeRef } from '@vibesdotdev/kernel';
2
+ import type { IntegrationConnectionCapability } from './integration-connection.capability.ts';
3
+ import { type IntegrationConnectionMetadata, type IntegrationConnectionStatus } from '../schemas/integration-connection.ts';
4
+ import type { IntegrationProviderDescriptor } from '../schemas/integration-descriptor.ts';
5
+ type ProviderWithConnection = Pick<IntegrationProviderDescriptor, 'id' | 'connection'>;
6
+ /**
7
+ * The declared connection metadata for a provider, resolved through the
8
+ * runtime. A composed `integration/connection` descriptor (the provider's own
9
+ * behavior, which a host plugin can supply or replace) wins over the
10
+ * metadata the provider descriptor itself declares. Absence stays absence:
11
+ * undeclared means no connect and no check — never an inference from the
12
+ * provider id, category or credential shape.
13
+ */
14
+ export declare function resolveIntegrationConnectionMetadata(runtime: RuntimeRef, provider: ProviderWithConnection): Promise<IntegrationConnectionMetadata | null>;
15
+ /**
16
+ * Connection status for one provider through its composed capability. A
17
+ * provider with no declared connection behavior refuses with `UNAVAILABLE` /
18
+ * `integration-connection-unsupported`; a capability's own refusal propagates
19
+ * with its typed code and reason.
20
+ */
21
+ export declare function integrationConnectionStatus(runtime: RuntimeRef, integrationId: string): Promise<IntegrationConnectionStatus>;
22
+ /** Resolve the composed connection capability for a provider id, if any. */
23
+ export declare function resolveIntegrationConnection(runtime: RuntimeRef, integrationId: string): Promise<IntegrationConnectionCapability | null>;
24
+ export {};
25
+ //# sourceMappingURL=integration-connection.queries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration-connection.queries.d.ts","sourceRoot":"","sources":["../../src/status/integration-connection.queries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAOtD,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,wCAAwC,CAAC;AAE9F,OAAO,EAGN,KAAK,6BAA6B,EAClC,KAAK,2BAA2B,EAChC,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAC;AAE1F,KAAK,sBAAsB,GAAG,IAAI,CAAC,6BAA6B,EAAE,IAAI,GAAG,YAAY,CAAC,CAAC;AAEvF;;;;;;;GAOG;AACH,wBAAsB,oCAAoC,CACzD,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,sBAAsB,GAC9B,OAAO,CAAC,6BAA6B,GAAG,IAAI,CAAC,CAI/C;AAED;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAChD,OAAO,EAAE,UAAU,EACnB,aAAa,EAAE,MAAM,GACnB,OAAO,CAAC,2BAA2B,CAAC,CAItC;AAED,4EAA4E;AAC5E,wBAAsB,4BAA4B,CACjD,OAAO,EAAE,UAAU,EACnB,aAAa,EAAE,MAAM,GACnB,OAAO,CAAC,+BAA+B,GAAG,IAAI,CAAC,CA4BjD"}
@@ -0,0 +1,65 @@
1
+ import { INTEGRATION_CONNECTION_KIND, IntegrationConnectionDescriptorSchema } from "./integration-connection.kind.js";
2
+ import { integrationConnectionUnsupported } from "./integration-connection.capability.js";
3
+ import { parseIntegrationBoundary } from "../schemas/boundary.js";
4
+ import { IntegrationConnectRequestResultSchema, IntegrationConnectionStatusSchema } from "../schemas/integration-connection.js";
5
+ /**
6
+ * The declared connection metadata for a provider, resolved through the
7
+ * runtime. A composed `integration/connection` descriptor (the provider's own
8
+ * behavior, which a host plugin can supply or replace) wins over the
9
+ * metadata the provider descriptor itself declares. Absence stays absence:
10
+ * undeclared means no connect and no check — never an inference from the
11
+ * provider id, category or credential shape.
12
+ */
13
+ export async function resolveIntegrationConnectionMetadata(runtime, provider) {
14
+ const capability = await declaredConnectionDescriptor(runtime, provider.id);
15
+ if (capability)
16
+ return capability.connection;
17
+ return provider.connection ?? null;
18
+ }
19
+ /**
20
+ * Connection status for one provider through its composed capability. A
21
+ * provider with no declared connection behavior refuses with `UNAVAILABLE` /
22
+ * `integration-connection-unsupported`; a capability's own refusal propagates
23
+ * with its typed code and reason.
24
+ */
25
+ export async function integrationConnectionStatus(runtime, integrationId) {
26
+ const capability = await resolveIntegrationConnection(runtime, integrationId);
27
+ if (!capability)
28
+ throw integrationConnectionUnsupported(integrationId);
29
+ return capability.status();
30
+ }
31
+ /** Resolve the composed connection capability for a provider id, if any. */
32
+ export async function resolveIntegrationConnection(runtime, integrationId) {
33
+ const declared = await declaredConnectionDescriptor(runtime, integrationId);
34
+ if (!declared)
35
+ return null;
36
+ const implementation = await runtime
37
+ .query(INTEGRATION_CONNECTION_KIND)
38
+ .withId(declared.id)
39
+ .resolve();
40
+ return {
41
+ status: async () => {
42
+ if (!declared.connection.checkable) {
43
+ throw integrationConnectionUnsupported(integrationId);
44
+ }
45
+ return parseIntegrationBoundary(IntegrationConnectionStatusSchema, await implementation.status());
46
+ },
47
+ requestConnect: async () => {
48
+ if (!declared.connection.connectable) {
49
+ throw integrationConnectionUnsupported(integrationId);
50
+ }
51
+ return parseIntegrationBoundary(IntegrationConnectRequestResultSchema, await implementation.requestConnect());
52
+ }
53
+ };
54
+ }
55
+ async function declaredConnectionDescriptor(runtime, integrationId) {
56
+ if (!runtime.hasKind(INTEGRATION_CONNECTION_KIND))
57
+ return null;
58
+ const candidates = await runtime
59
+ .query(INTEGRATION_CONNECTION_KIND)
60
+ .enabled()
61
+ .descriptorsAsync();
62
+ return (candidates.find((candidate) => IntegrationConnectionDescriptorSchema.safeParse(candidate).success &&
63
+ candidate.integrationId === integrationId) ?? null);
64
+ }
65
+ //# sourceMappingURL=integration-connection.queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration-connection.queries.js","sourceRoot":"","sources":["../../src/status/integration-connection.queries.ts"],"names":[],"mappings":"AACA,OAAO,EACN,2BAA2B,EAC3B,qCAAqC,EAErC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,gCAAgC,EAAE,MAAM,wCAAwC,CAAC;AAE1F,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EACN,qCAAqC,EACrC,iCAAiC,EAGjC,MAAM,sCAAsC,CAAC;AAK9C;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,oCAAoC,CACzD,OAAmB,EACnB,QAAgC;IAEhC,MAAM,UAAU,GAAG,MAAM,4BAA4B,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC5E,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC,UAAU,CAAC;IAC7C,OAAO,QAAQ,CAAC,UAAU,IAAI,IAAI,CAAC;AACpC,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAChD,OAAmB,EACnB,aAAqB;IAErB,MAAM,UAAU,GAAG,MAAM,4BAA4B,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAC9E,IAAI,CAAC,UAAU;QAAE,MAAM,gCAAgC,CAAC,aAAa,CAAC,CAAC;IACvE,OAAO,UAAU,CAAC,MAAM,EAAE,CAAC;AAC5B,CAAC;AAED,4EAA4E;AAC5E,MAAM,CAAC,KAAK,UAAU,4BAA4B,CACjD,OAAmB,EACnB,aAAqB;IAErB,MAAM,QAAQ,GAAG,MAAM,4BAA4B,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAC5E,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,MAAM,cAAc,GAAG,MAAM,OAAO;SAClC,KAAK,CAAmE,2BAA2B,CAAC;SACpG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;SACnB,OAAO,EAAE,CAAC;IAEZ,OAAO;QACN,MAAM,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;gBACpC,MAAM,gCAAgC,CAAC,aAAa,CAAC,CAAC;YACvD,CAAC;YACD,OAAO,wBAAwB,CAC9B,iCAAiC,EACjC,MAAM,cAAc,CAAC,MAAM,EAAE,CAC7B,CAAC;QACH,CAAC;QACD,cAAc,EAAE,KAAK,IAAI,EAAE;YAC1B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;gBACtC,MAAM,gCAAgC,CAAC,aAAa,CAAC,CAAC;YACvD,CAAC;YACD,OAAO,wBAAwB,CAC9B,qCAAqC,EACrC,MAAM,cAAc,CAAC,cAAc,EAAE,CACrC,CAAC;QACH,CAAC;KACD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,4BAA4B,CAC1C,OAAmB,EACnB,aAAqB;IAErB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/D,MAAM,UAAU,GAAG,MAAM,OAAO;SAC9B,KAAK,CAAkC,2BAA2B,CAAC;SACnE,OAAO,EAAE;SACT,gBAAgB,EAAE,CAAC;IACrB,OAAO,CACN,UAAU,CAAC,IAAI,CACd,CAAC,SAAS,EAAE,EAAE,CACb,qCAAqC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,OAAO;QAClE,SAAS,CAAC,aAAa,KAAK,aAAa,CAC1C,IAAI,IAAI,CACT,CAAC;AACH,CAAC"}
@@ -0,0 +1,201 @@
1
+ <script lang="ts">
2
+ import { onMount } from 'svelte';
3
+ import { createRuntimeClientStore, getRuntimeSvelteContext } from '@vibesdotdev/surface-sveltekit/svelte/state';
4
+ import { CapabilityError, settle } from '@vibesdotdev/kernel';
5
+ import { Badge, Button, Card, Skeleton } from '@vibesdotdev/kit/components';
6
+ import { EmptyState } from '@vibesdotdev/kit/components/layout';
7
+ import type { IntegrationProviderDescriptor } from '../../schemas/integration-descriptor.js';
8
+ import { integrationsCatalogState, type IntegrationsCatalogState } from '../state.svelte.js';
9
+ import type { IntegrationsCatalogProps } from '../types.js';
10
+
11
+ let {
12
+ providers,
13
+ title = 'Connections',
14
+ description = 'Integration providers available to this runtime.',
15
+ emptyTitle = 'No integration providers available',
16
+ emptyDescription = 'Provider plugins appear here when they are composed into the current runtime.',
17
+ connectLabel = 'Connect'
18
+ }: IntegrationsCatalogProps = $props();
19
+
20
+ const runtimeStore = getRuntimeSvelteContext();
21
+ const stateStore = createRuntimeClientStore<IntegrationsCatalogState>({
22
+ id: 'integrations-catalog-state',
23
+ runtimeStore,
24
+ resolve: async () => integrationsCatalogState(await runtimeStore.load())
25
+ });
26
+ onMount(() => {
27
+ void settle(() => stateStore.load());
28
+ return () => stateStore.dispose();
29
+ });
30
+
31
+ const catalogState = $derived(stateStore.client);
32
+ const catalogProviders = $derived(providers ?? catalogState?.providers ?? []);
33
+ const stateBacked = $derived(providers === undefined);
34
+ let pendingProviderId = $state<string | null>(null);
35
+ let connectableProviders = $state<Set<string>>(new Set());
36
+ let actionError = $state<CapabilityError | null>(null);
37
+ let availabilityGeneration = 0;
38
+
39
+ $effect(() => {
40
+ const candidates = catalogProviders;
41
+ const generation = ++availabilityGeneration;
42
+ connectableProviders = new Set();
43
+
44
+ if (candidates.length > 0) {
45
+ void updateConnectionAvailability(candidates, generation);
46
+ }
47
+
48
+ return () => {
49
+ if (availabilityGeneration === generation) availabilityGeneration++;
50
+ };
51
+ });
52
+
53
+ function label(value: string): string {
54
+ return value
55
+ .split('-')
56
+ .map((part) => part.charAt(0).toUpperCase() + part.slice(1))
57
+ .join(' ');
58
+ }
59
+
60
+ async function updateConnectionAvailability(
61
+ candidates: IntegrationProviderDescriptor[],
62
+ generation: number
63
+ ): Promise<void> {
64
+ const result = await settle(async () => {
65
+ const state = catalogState ?? await stateStore.load();
66
+ const availability = await Promise.all(candidates.map(async (provider) =>
67
+ (await state.canRequestConnection(provider)) ? provider.id : undefined
68
+ ));
69
+ return availability.filter((providerId): providerId is string => providerId !== undefined);
70
+ });
71
+
72
+ if (generation !== availabilityGeneration) return;
73
+ if (!result.ok) {
74
+ const cause = result.cause;
75
+ actionError = cause instanceof CapabilityError
76
+ ? cause
77
+ : new CapabilityError('The integration connection could not be started.', 'UNAVAILABLE', {
78
+ reason: 'integration-connect-availability-failed',
79
+ cause
80
+ });
81
+ return;
82
+ }
83
+
84
+ connectableProviders = new Set(result.value);
85
+ }
86
+
87
+ async function requestConnection(providerId: string): Promise<void> {
88
+ const provider = catalogProviders.find((candidate) => candidate.id === providerId);
89
+ if (!provider || !connectableProviders.has(providerId)) return;
90
+
91
+ pendingProviderId = providerId;
92
+ actionError = null;
93
+ const result = await settle(async () => {
94
+ const state = catalogState ?? await stateStore.load();
95
+ return state.requestConnection(provider);
96
+ });
97
+ if (!result.ok) {
98
+ const cause = result.cause;
99
+ actionError = cause instanceof CapabilityError
100
+ ? cause
101
+ : new CapabilityError('The integration connection could not be started.', 'UNAVAILABLE', {
102
+ reason: 'integration-connect-request-failed',
103
+ cause
104
+ });
105
+ } else if ('refused' in result.value) {
106
+ actionError = new CapabilityError(
107
+ 'The integration connection request was refused.',
108
+ result.value.code,
109
+ { reason: result.value.reason }
110
+ );
111
+ }
112
+ pendingProviderId = null;
113
+ }
114
+ </script>
115
+
116
+ <section class="space-y-5" aria-labelledby="integrations-catalog-title">
117
+ <header class="space-y-1">
118
+ <h2 id="integrations-catalog-title" class="text-2xl font-semibold tracking-tight">{title}</h2>
119
+ <p class="text-sm text-muted-foreground">{description}</p>
120
+ <p class="text-xs text-muted-foreground">
121
+ Provider availability comes from the catalog. Connect appears only when this runtime resolves a connection capability; it does not report connection state.
122
+ </p>
123
+ </header>
124
+
125
+ {#if stateBacked && (catalogState?.error || stateStore.error)}
126
+ <div
127
+ role="alert"
128
+ class="rounded-lg border border-destructive/30 bg-destructive/10 p-4 text-sm text-destructive"
129
+ >
130
+ {catalogState?.error ?? 'The integration catalog could not be loaded.'}
131
+ </div>
132
+ {/if}
133
+
134
+ {#if actionError}
135
+ <div
136
+ role="alert"
137
+ class="rounded-lg border border-destructive/30 bg-destructive/10 p-4 text-sm text-destructive"
138
+ >
139
+ {actionError.message}
140
+ </div>
141
+ {/if}
142
+
143
+ {#if stateBacked && catalogState?.loading && !catalogState?.initialized}
144
+ <div class="grid gap-4 md:grid-cols-2 xl:grid-cols-3" aria-label="Loading integration providers">
145
+ {#each Array(3) as _}
146
+ <Card.Root class="shadow-none">
147
+ <Card.Header class="space-y-3">
148
+ <Skeleton class="h-5 w-2/3" />
149
+ <Skeleton class="h-4 w-full" />
150
+ </Card.Header>
151
+ <Card.Content>
152
+ <Skeleton class="h-9 w-24" />
153
+ </Card.Content>
154
+ </Card.Root>
155
+ {/each}
156
+ </div>
157
+ {:else if catalogProviders.length === 0}
158
+ <EmptyState
159
+ icon="lucide:plug"
160
+ title={emptyTitle}
161
+ description={emptyDescription}
162
+ />
163
+ {:else}
164
+ <div class="grid gap-4 md:grid-cols-2 xl:grid-cols-3">
165
+ {#each catalogProviders as provider (provider.id)}
166
+ <Card.Root class="flex h-full flex-col shadow-none">
167
+ <Card.Header class="space-y-3">
168
+ <div class="flex items-start justify-between gap-3">
169
+ <div class="min-w-0">
170
+ <Card.Title class="truncate text-base">{provider.name}</Card.Title>
171
+ <Card.Description class="mt-1 line-clamp-3">
172
+ {provider.description ?? 'No provider description supplied.'}
173
+ </Card.Description>
174
+ </div>
175
+ <Badge variant={provider.enabled === false ? 'outline' : 'secondary'}>
176
+ {provider.enabled === false ? 'Disabled' : 'Available'}
177
+ </Badge>
178
+ </div>
179
+ <div class="flex flex-wrap gap-2">
180
+ <Badge variant="outline">{label(provider.category)}</Badge>
181
+ <Badge variant="outline">{label(provider.provider)}</Badge>
182
+ </div>
183
+ </Card.Header>
184
+
185
+ {#if connectableProviders.has(provider.id)}
186
+ <Card.Content class="mt-auto pt-0">
187
+ <Button
188
+ size="sm"
189
+ onclick={() => void requestConnection(provider.id)}
190
+ disabled={pendingProviderId !== null}
191
+ aria-label={connectLabel + ' ' + provider.name}
192
+ >
193
+ {pendingProviderId === provider.id ? 'Opening…' : connectLabel}
194
+ </Button>
195
+ </Card.Content>
196
+ {/if}
197
+ </Card.Root>
198
+ {/each}
199
+ </div>
200
+ {/if}
201
+ </section>
@@ -0,0 +1,5 @@
1
+ import type { IntegrationsCatalogProps } from '../types.ts';
2
+ declare const IntegrationsCatalog: import("svelte").Component<IntegrationsCatalogProps, {}, "">;
3
+ type IntegrationsCatalog = ReturnType<typeof IntegrationsCatalog>;
4
+ export default IntegrationsCatalog;
5
+ //# sourceMappingURL=IntegrationsCatalog.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IntegrationsCatalog.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/IntegrationsCatalog.svelte.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AA+L5D,QAAA,MAAM,mBAAmB,8DAAwC,CAAC;AAClE,KAAK,mBAAmB,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAClE,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,46 @@
1
+ <script lang="ts">
2
+ import { CapabilityError, settle } from '@vibesdotdev/kernel';
3
+ import { onMount } from 'svelte';
4
+ import type {
5
+ IntegrationCategory,
6
+ IntegrationProviderDescriptor
7
+ } from '../../schemas/integration-descriptor.js';
8
+ import { getRuntimeSvelteContext } from '@vibesdotdev/surface-sveltekit/svelte/state';
9
+ import { integrationsCatalogState } from '../state.svelte.js';
10
+
11
+ type Props = {
12
+ initialProviders?: IntegrationProviderDescriptor[];
13
+ includeDisabled?: boolean;
14
+ category?: IntegrationCategory;
15
+ provider?: string;
16
+ refresh?: boolean;
17
+ };
18
+
19
+ let {
20
+ initialProviders,
21
+ includeDisabled = false,
22
+ category,
23
+ provider,
24
+ refresh = false
25
+ }: Props = $props();
26
+
27
+ // Captured at component init: Svelte context is unavailable after mount.
28
+ const runtimeStore = getRuntimeSvelteContext();
29
+
30
+ let failure = $state<CapabilityError | null>(null);
31
+ onMount(() => {
32
+ void settle(async () => {
33
+ const runtime = await runtimeStore.load();
34
+ const state = await integrationsCatalogState(runtime);
35
+ await state.init({ runtime, initialProviders, includeDisabled, category, provider, refresh });
36
+ }).then((result) => {
37
+ if (!result.ok) failure = new CapabilityError('The integration catalog could not be initialized.', 'UNAVAILABLE', {
38
+ reason: 'integration-catalog-init-failed', cause: result.cause
39
+ });
40
+ });
41
+ });
42
+ </script>
43
+
44
+ {#if failure}
45
+ <p role="alert">{failure.message}</p>
46
+ {/if}
@@ -0,0 +1,12 @@
1
+ import type { IntegrationCategory, IntegrationProviderDescriptor } from '../../schemas/integration-descriptor.ts';
2
+ type Props = {
3
+ initialProviders?: IntegrationProviderDescriptor[];
4
+ includeDisabled?: boolean;
5
+ category?: IntegrationCategory;
6
+ provider?: string;
7
+ refresh?: boolean;
8
+ };
9
+ declare const IntegrationsLoader: import("svelte").Component<Props, {}, "">;
10
+ type IntegrationsLoader = ReturnType<typeof IntegrationsLoader>;
11
+ export default IntegrationsLoader;
12
+ //# sourceMappingURL=IntegrationsLoader.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IntegrationsLoader.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/IntegrationsLoader.svelte.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,mBAAmB,EACnB,6BAA6B,EAC7B,MAAM,yCAAyC,CAAC;AAKjD,KAAK,KAAK,GAAG;IACZ,gBAAgB,CAAC,EAAE,6BAA6B,EAAE,CAAC;IACnD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAwCH,QAAA,MAAM,kBAAkB,2CAAwC,CAAC;AACjE,KAAK,kBAAkB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAChE,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { RuntimeRef } from '@vibesdotdev/kernel';
2
+ import type { IntegrationConnectionProvider } from './types.ts';
3
+ /**
4
+ * Availability requires a connectable declaration and a resolvable runtime
5
+ * implementation. Catalog metadata by itself never grants connection authority.
6
+ */
7
+ export declare function canRequestIntegrationConnection(runtime: RuntimeRef, provider: IntegrationConnectionProvider): Promise<boolean>;
8
+ /**
9
+ * Request a connection through the provider's declared runtime capability.
10
+ * Implementations retain host authorization and return a schema-validated,
11
+ * typed outcome.
12
+ */
13
+ export declare function requestIntegrationConnection(runtime: RuntimeRef, provider: IntegrationConnectionProvider): Promise<{
14
+ refused: true;
15
+ code: "UNAVAILABLE" | "PERMISSION_DENIED" | "INVALID_INPUT";
16
+ reason: string;
17
+ } | {
18
+ accepted: true;
19
+ }>;
20
+ //# sourceMappingURL=connect-action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect-action.d.ts","sourceRoot":"","sources":["../../src/svelte/connect-action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAMtD,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAEhE;;;GAGG;AACH,wBAAsB,+BAA+B,CACpD,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,6BAA6B,GACrC,OAAO,CAAC,OAAO,CAAC,CAOlB;AAED;;;;GAIG;AACH,wBAAsB,4BAA4B,CACjD,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,6BAA6B;;;;;;GAiBvC"}
@@ -0,0 +1,40 @@
1
+ import { IntegrationConnectRequestResultSchema } from "../schemas/integration-connection.js";
2
+ import { resolveIntegrationConnection, resolveIntegrationConnectionMetadata } from "../status/integration-connection.queries.js";
3
+ /**
4
+ * Availability requires a connectable declaration and a resolvable runtime
5
+ * implementation. Catalog metadata by itself never grants connection authority.
6
+ */
7
+ export async function canRequestIntegrationConnection(runtime, provider) {
8
+ if (provider.enabled === false)
9
+ return false;
10
+ const metadata = await resolveIntegrationConnectionMetadata(runtime, provider);
11
+ if (metadata?.connectable !== true)
12
+ return false;
13
+ return (await resolveIntegrationConnection(runtime, provider.id)) !== null;
14
+ }
15
+ /**
16
+ * Request a connection through the provider's declared runtime capability.
17
+ * Implementations retain host authorization and return a schema-validated,
18
+ * typed outcome.
19
+ */
20
+ export async function requestIntegrationConnection(runtime, provider) {
21
+ if (provider.enabled === false) {
22
+ return refusal('integration-provider-disabled');
23
+ }
24
+ const metadata = await resolveIntegrationConnectionMetadata(runtime, provider);
25
+ if (metadata?.connectable !== true) {
26
+ return refusal('integration-connection-unsupported');
27
+ }
28
+ const capability = await resolveIntegrationConnection(runtime, provider.id);
29
+ if (!capability) {
30
+ return refusal('integration-connection-unsupported');
31
+ }
32
+ return capability.requestConnect();
33
+ }
34
+ function refusal(reason) {
35
+ return IntegrationConnectRequestResultSchema.parse({
36
+ refused: true,
37
+ code: 'UNAVAILABLE',
38
+ reason
39
+ });
40
+ }
@@ -0,0 +1,4 @@
1
+ import type { DocsTopicDescriptor } from '@vibesdotdev/docs-contracts';
2
+ declare const descriptor: DocsTopicDescriptor;
3
+ export default descriptor;
4
+ //# sourceMappingURL=integrations-svelte.catalog.docs.descriptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrations-svelte.catalog.docs.descriptor.d.ts","sourceRoot":"","sources":["../../../src/svelte/docs/integrations-svelte.catalog.docs.descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAqBvE,QAAA,MAAM,UAAU,EAAE,mBAUjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,30 @@
1
+ const body = [
2
+ "# Integration catalog Svelte surface",
3
+ "",
4
+ "Use the catalog loader and component to present provider descriptors registered with the active runtime.",
5
+ "",
6
+ "```svelte",
7
+ "<script lang=\"ts\">",
8
+ " import { IntegrationsCatalog, IntegrationsLoader } from '@vibesdotdev/integrations/svelte';",
9
+ "</script>",
10
+ "",
11
+ "<IntegrationsLoader />",
12
+ "<IntegrationsCatalog connectLabel=\"Link account\" />",
13
+ "```",
14
+ "",
15
+ "Compose the browser plugin with the provider's browser-scoped connection plugin. A Connect button appears only when this runtime resolves an enabled provider's declared `integration/connection` implementation. Catalog metadata alone does not grant authority, and the component does not construct URLs or handle credentials.",
16
+ "",
17
+ "The connection implementation retains host authorization. Accepted requests and typed refusals are returned through the runtime; refusals preserve their code and reason. The renderer catalog projection keeps only public labels, availability, and declared connection metadata, never private configuration, credential references, OAuth endpoints, base URLs, or operations.",
18
+ ].join('\n');
19
+ const descriptor = {
20
+ kind: 'docs/topic',
21
+ id: "integrations-svelte.catalog",
22
+ title: "Integration Catalog Svelte Surface",
23
+ summary: "Render public provider metadata and invoke only resolved connection capabilities.",
24
+ body: { type: 'markdown', sourceType: 'raw', source: body },
25
+ tags: ["integrations", "svelte", "catalog", "runtime-client"],
26
+ surfaces: ["web", "in-app"],
27
+ hardware: ["consumer", "cloud"],
28
+ enabled: true
29
+ };
30
+ export default descriptor;
@@ -0,0 +1,12 @@
1
+ export { default as IntegrationsCatalog } from './components/IntegrationsCatalog.svelte';
2
+ export { default as IntegrationsLoader } from './components/IntegrationsLoader.svelte';
3
+ export { canRequestIntegrationConnection, requestIntegrationConnection } from './connect-action.ts';
4
+ export { integrationsCatalogState } from './state.svelte.ts';
5
+ export type { IntegrationsCatalogState, IntegrationsCatalogStateInitOptions } from './state.svelte.ts';
6
+ export { loadIntegrationsCatalog } from './runtime.ts';
7
+ export type { IntegrationsCatalogOptions } from './runtime.ts';
8
+ export { loadIntegrationsCatalogData } from './loaders.ts';
9
+ export type { IntegrationsCatalogData } from './loaders.ts';
10
+ export type { IntegrationConnectionProvider, IntegrationsCatalogProps } from './types.ts';
11
+ export { integrationsSveltePlugin } from './integrations-svelte.plugin.ts';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/svelte/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AACzF,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AACvF,OAAO,EACN,+BAA+B,EAC/B,4BAA4B,EAC5B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,YAAY,EACX,wBAAwB,EACxB,mCAAmC,EACnC,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,YAAY,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAC3D,YAAY,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAE5D,YAAY,EACX,6BAA6B,EAC7B,wBAAwB,EACxB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { default as IntegrationsCatalog } from './components/IntegrationsCatalog.svelte';
2
+ export { default as IntegrationsLoader } from './components/IntegrationsLoader.svelte';
3
+ export { canRequestIntegrationConnection, requestIntegrationConnection } from "./connect-action.js";
4
+ export { integrationsCatalogState } from "./state.svelte.js";
5
+ export { loadIntegrationsCatalog } from "./runtime.js";
6
+ export { loadIntegrationsCatalogData } from "./loaders.js";
7
+ export { integrationsSveltePlugin } from "./integrations-svelte.plugin.js";
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Discoverability plugin for the Svelte projection.
3
+ *
4
+ * It has no hard dependency on the base plugin: docs can register before the
5
+ * provider catalog is composed, while the runtime helper produces the honest
6
+ * missing-owner error if a consumer tries to load data too early.
7
+ */
8
+ export declare const integrationsSveltePlugin: import("@vibesdotdev/kernel").RuntimePlugin;
9
+ export default integrationsSveltePlugin;
10
+ //# sourceMappingURL=integrations-svelte.plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrations-svelte.plugin.d.ts","sourceRoot":"","sources":["../../src/svelte/integrations-svelte.plugin.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,6CAKnC,CAAC;AAEH,eAAe,wBAAwB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { createRuntimePlugin } from '@vibesdotdev/kernel';
2
+ import integrationsSvelteCatalogDocsDescriptor from "./docs/integrations-svelte.catalog.docs.descriptor.js";
3
+ /**
4
+ * Discoverability plugin for the Svelte projection.
5
+ *
6
+ * It has no hard dependency on the base plugin: docs can register before the
7
+ * provider catalog is composed, while the runtime helper produces the honest
8
+ * missing-owner error if a consumer tries to load data too early.
9
+ */
10
+ export const integrationsSveltePlugin = createRuntimePlugin({
11
+ id: 'integrations/svelte',
12
+ name: 'Integrations Svelte',
13
+ description: 'Svelte surface for the descriptor-backed integration catalog',
14
+ descriptors: [integrationsSvelteCatalogDocsDescriptor]
15
+ });
16
+ export default integrationsSveltePlugin;