@jskit-ai/connectors-catalog 0.1.63 → 0.1.65

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 (117) hide show
  1. package/README.md +12 -17
  2. package/docs/ai.md +5 -17
  3. package/docs/amazon-redshift.md +6 -8
  4. package/docs/apollo-io.md +0 -8
  5. package/docs/ashby.md +0 -8
  6. package/docs/attention.md +0 -8
  7. package/docs/aws-athena.md +2 -2
  8. package/docs/aws-credentials.md +1 -1
  9. package/docs/aws-s3.md +1 -1
  10. package/docs/bigquery.md +2 -4
  11. package/docs/calendly.md +4 -14
  12. package/docs/chargebee.md +0 -9
  13. package/docs/clickhouse.md +1 -1
  14. package/docs/confidence-oauth.md +3 -9
  15. package/docs/contentful.md +4 -13
  16. package/docs/databricks.md +35 -3
  17. package/docs/dbt-semantic-layer.md +2 -8
  18. package/docs/figma.md +5 -5
  19. package/docs/firebase-cloud-messaging.md +3 -3
  20. package/docs/firecrawl.md +1 -1
  21. package/docs/fireflies.md +7 -10
  22. package/docs/gemini-enterprise.md +33 -3
  23. package/docs/gong.md +0 -9
  24. package/docs/google-ads.md +53 -11
  25. package/docs/google-analytics.md +2 -2
  26. package/docs/google-maps-platform.md +3 -9
  27. package/docs/granola.md +1 -1
  28. package/docs/hubspot.md +25 -0
  29. package/docs/klipy.md +0 -13
  30. package/docs/lexware.md +0 -8
  31. package/docs/lightspeed.md +32 -3
  32. package/docs/linear.md +24 -7
  33. package/docs/linkedin.md +16 -16
  34. package/docs/logo-dev.md +7 -25
  35. package/docs/mailgun.md +1 -14
  36. package/docs/mapbox.md +0 -8
  37. package/docs/microsoft-fabric.md +50 -13
  38. package/docs/microsoft-oauth.md +33 -0
  39. package/docs/microsoft-powerpoint.md +2 -13
  40. package/docs/microsoft-word.md +2 -13
  41. package/docs/miro.md +2 -2
  42. package/docs/oura.md +4 -3
  43. package/docs/polar.md +3 -5
  44. package/docs/posthog.md +2 -17
  45. package/docs/prestashop.md +5 -9
  46. package/docs/salesforce.md +41 -12
  47. package/docs/sentry.md +1 -12
  48. package/docs/sevdesk.md +2 -13
  49. package/docs/shopify.md +35 -2
  50. package/docs/slack.md +39 -14
  51. package/docs/snowflake.md +27 -2
  52. package/docs/telegram.md +0 -10
  53. package/docs/tiktok.md +19 -1
  54. package/docs/twilio.md +1 -1
  55. package/docs/twitch.md +34 -4
  56. package/docs/wave.md +36 -15
  57. package/docs/wix.md +4 -17
  58. package/docs/wiz.md +4 -4
  59. package/docs/wordpress-com.md +4 -13
  60. package/docs/workday.md +28 -9
  61. package/docs/x-twitter.md +0 -9
  62. package/docs/xero.md +39 -11
  63. package/docs/zoho-books.md +41 -10
  64. package/docs/zoho-crm.md +36 -12
  65. package/package.json +3 -3
  66. package/patterns/oauth-connection/PATTERN.md +27 -610
  67. package/patterns/paddle-catalogue/example/create-products.js +2 -1
  68. package/patterns/redshift-queries/PATTERN.md +1 -1
  69. package/src/server/attention.js +8 -11
  70. package/src/server/bigquery.js +7 -11
  71. package/src/server/brevo.js +7 -10
  72. package/src/server/calendly.js +7 -9
  73. package/src/server/chargebee.js +3 -6
  74. package/src/server/firecrawl.js +3 -3
  75. package/src/server/gatewayapi.js +4 -4
  76. package/src/server/github-api.js +1 -1
  77. package/src/server/gitlab-api.js +1 -1
  78. package/src/server/gmail.js +6 -11
  79. package/src/server/gong.js +4 -4
  80. package/src/server/google-ads-search.js +4 -5
  81. package/src/server/google-docs.js +10 -22
  82. package/src/server/google-drive.js +6 -6
  83. package/src/server/google-maps-platform.js +4 -8
  84. package/src/server/google-search-console.js +2 -2
  85. package/src/server/google-sheets.js +12 -18
  86. package/src/server/google-slides.js +10 -16
  87. package/src/server/google.js +17 -9
  88. package/src/server/jsonOperation.js +17 -18
  89. package/src/server/lexware.js +4 -9
  90. package/src/server/resend.js +8 -14
  91. package/src/server/semrush.js +70 -89
  92. package/src/server/wix.js +152 -222
  93. package/src/server/x-twitter.js +21 -18
  94. package/src/shared/ai.js +3 -1
  95. package/src/shared/definitions.js +2 -34
  96. package/src/shared/firecrawl.js +17 -0
  97. package/src/shared/gemini-enterprise.js +1 -1
  98. package/src/shared/google-ads.js +1 -1
  99. package/src/shared/google.js +2 -2
  100. package/src/shared/logo-dev.js +1 -1
  101. package/src/shared/mapbox.js +2 -2
  102. package/src/shared/mcp.js +2 -5
  103. package/src/shared/microsoft-fabric.js +1 -1
  104. package/src/shared/microsoft.js +12 -24
  105. package/src/shared/resend.js +20 -0
  106. package/src/shared/siteUrl.js +1 -1
  107. package/src/shared/tokens.js +4 -6
  108. package/src/shared/workday.js +1 -1
  109. package/test/firecrawl.test.js +1 -1
  110. package/test/github-api.test.js +2 -1
  111. package/test/gitlab-api.test.js +2 -1
  112. package/test/gong.test.js +2 -2
  113. package/test/google.test.js +20 -10
  114. package/test/setupGuides.test.js +18 -0
  115. package/test/tokens.test.js +1 -1
  116. package/test/wix.test.js +13 -0
  117. package/test/wiz.test.js +9 -3
package/docs/polar.md CHANGED
@@ -54,10 +54,8 @@ billing owner. Tokens within one organization share its applicable limits;
54
54
  sandbox/production separates test and real commerce. The editor supplies no
55
55
  shared registration, token pool or merchant account.
56
56
 
57
- ## Existing-scope closeout — 13 September 2026
57
+ ## Scope and limitations
58
58
 
59
- The existing app-owned Organization Access Token adapter lists a Polar.sh product catalogue in sandbox or production, with bounded page/name/archive/recurrence filters and environment-bound verification.
59
+ The app-owned Organization Access Token adapter lists a Polar.sh product catalogue in sandbox or production, with bounded page/name/archive/recurrence filters and environment-bound verification.
60
60
 
61
- This is NOT the captured personal builder MCP/billing-context experience: coding-assistant attachment and MCP authentication/tools remain deferred. No managed payments, merchant onboarding, checkout, subscription/customer/order management, refunds, webhooks, credits/entitlements, catalogue writes/synchronization or customer login is shipped by this adapter. No merchant OAuth, customer-access-token mode, token provisioning, extra array/metadata/sort filters or automatic pagination. Changing environment requires verification; local disconnect does not revoke the token. The app supplies its own organization token, permissions, UI and access policy. To extend: implement the separately deferred editor tool bridge for the captured use case; require a separate scope decision before adding an app billing product. Do not infer Stripe/Paddle parity from this catalogue reader. No live provider account, provider registration, paid request or generated-application execution was tested. No new editor coding-assistant tool attachment is claimed. Other frameworks use the same project configuration and their own native tools; JSKIT is optional.
62
-
63
- 2 Polar-specific plus 2 shared environment/pagination source checks passed, and the same 4 installed-package checks passed on September 13. Existing shared token/environment form evidence is retained; no fresh browser run.
61
+ Coding-assistant attachment and MCP authentication/tools are not supplied. No managed payments, merchant onboarding, checkout, subscription/customer/order management, refunds, webhooks, credits/entitlements, catalogue writes/synchronization or customer login is shipped by this adapter. No merchant OAuth, customer-access-token mode, token provisioning, extra array/metadata/sort filters or automatic pagination. Changing environment requires verification; local disconnect does not revoke the token. The app supplies its own organization token, permissions, UI and access policy. Adding an app billing product requires a separate scope decision; do not infer Stripe/Paddle parity from this catalogue reader. Other frameworks use the same project configuration and their own native tools; JSKIT is optional.
package/docs/posthog.md CHANGED
@@ -186,25 +186,11 @@ not enable OAuth in the implemented fragment. A separate OAuth implementation
186
186
  must register the application's actual callback, bind consent to its authenticated
187
187
  user and own its grants. That consent journey remains unfinished.
188
188
 
189
- ## Focused evidence
190
-
191
- Nine tests exercise simulated PostHog responses with actual temporary encrypted
192
- JSON files: both regions, restart, rotation, ownership, disconnect, settings,
193
- explicit verification input, public-token validation, request boundaries,
194
- flag results, capture acceptance, quota and HTTP errors. No live provider
195
- account, consent, event submission or generated application is used.
196
-
197
-
198
- ## Existing-scope closeout — 13 September 2026
189
+ ## Scope and limitations
199
190
 
200
191
  Supported: public Cloud project-token verification through explicit-subject flag
201
192
  evaluation, `flags.evaluate` and `events.capture`, EU/US region configuration,
202
193
  Env references, encrypted local connection state, token rotation and disconnect.
203
- Nine controlled source tests and nine installed-package tests pass. Existing
204
- phone/desktop configuration evidence is retained; no new browser run was made
205
- for this closeout and no runtime/form behavior changed.
206
-
207
- Limitations:
208
194
 
209
195
  - No private analytics querying, dashboards, project provisioning, personal API
210
196
  credentials, OAuth, MCP or self-hosted/custom ingestion domains.
@@ -220,8 +206,7 @@ Limitations:
220
206
  - Flag quota or partial-evaluation failures are errors, with no automatic
221
207
  fallback value. The backend supplies no visitor IP forwarding.
222
208
  - Disconnect removes local state only; rotate the token in PostHog when needed.
223
- Assistant tool attachment requires explicit host integration. No live token, tracking,
224
- ingestion, provider quota behavior or generated application was exercised.
209
+ Assistant tool attachment requires explicit host integration.
225
210
 
226
211
  The application must compose the browser lifecycle and analytics features
227
212
  it needs; this connector does not supply a complete analytics product.
@@ -95,7 +95,7 @@ segments. It does not perform DNS filtering. The application controls who can
95
95
  edit this credential destination and what networks its backend can reach.
96
96
  Operation input cannot substitute a different URL.
97
97
 
98
- ## Automation and Online ownership
98
+ ## Automation and hosted ownership
99
99
 
100
100
  An AI can prepare the JSON and runtime wiring. With authorized access to the
101
101
  store's PHP runtime, provider APIs can enable `PS_WEBSERVICE`, create a
@@ -129,16 +129,13 @@ writes, order processing, stock changes, additional filters, explicit multistore
129
129
  selection per request, webhooks and complete account-connection UI
130
130
  remain outside this fragment. The newer Admin API is a separate protocol.
131
131
 
132
-
133
- ## Existing-scope closeout — 13 September 2026
132
+ ## Scope and limitations
134
133
 
135
134
  The supported surface is `products.list` and `orders.list` with explicit
136
135
  pagination/language, a merchant-owned Webservice key and the configured HTTPS
137
- store path. Source and offline installed-package tests each pass 7/7. Historical
138
- editor form checks are retained; no fresh browser run or runtime/form change was
139
- made for this closeout. This is not full commerce or Lovable parity.
136
+ store path. This is not full commerce.
140
137
 
141
- Full deferred work: product/order writes and XML write composition, customer and
138
+ Not implemented: product/order writes and XML write composition, customer and
142
139
  inventory resource operations, stock updates, checkout/payments, fulfilment,
143
140
  refunds, carts, additional search/filter/detail operations, automatic traversal
144
141
  of associations, webhooks, automatic pagination, retries and newer Admin API
@@ -147,5 +144,4 @@ per-request shop selector. No OAuth, shopper authentication or per-shopper grant
147
144
  The application owns business UI, routes, access policy and native framework
148
145
  composition. Verification reads products only and cannot establish order access.
149
146
  Disconnect removes local state; disable/revoke the key in the merchant back office.
150
- Editor coding-agent attachment remains deferred. Live store compatibility,
151
- actual permissions/data and generated-app execution have not been verified.
147
+ Assistant tool attachment requires explicit host integration.
@@ -161,9 +161,10 @@ not exposed as user messages. Cancellation/deadlines do not replay a request.
161
161
  ## Application ownership, callbacks and capacity
162
162
 
163
163
  The application owner creates the provider registration and stores its secret
164
- in the application's private Env. Public Vibe64, Vibe64 Online and CLI users use
165
- this same ownership model. The configuration file holds the client ID and Env
166
- references; the editor does not own the application's grants.
164
+ in the application's private Env. Every editor and CLI uses this same
165
+ [ownership model](../../connectors-core/docs/online-setup.md): the configuration
166
+ file holds the client ID and Env references; the editor does not own the
167
+ application's grants.
167
168
 
168
169
  Register the exact callback implemented by the application. For a hosted project,
169
170
  start with its assigned application URL and append the implemented callback path.
@@ -207,17 +208,13 @@ customer data and application generation are outside this delivery's tests.
207
208
  Writes, Bulk API, SOAP, streaming, MCP, client-credentials/JWT grants, identity
208
209
  login and additional domains remain outside the initial runtime fragment.
209
210
 
210
-
211
- ## Existing-scope closeout — 13 September 2026
211
+ ## Scope and limitations
212
212
 
213
213
  Supported operations are `limits.read`, `objects.list`, `objects.describe`,
214
214
  `query.read` and `query.next`, through project-owned confidential OAuth on the
215
- configured production/developer/sandbox My Domain. Source and offline installed
216
- public-export tests each pass 13/13, including the packaged configuration example.
217
- Historical editor form proof is retained; no new browser run or runtime/form
218
- change was needed for this closeout.
215
+ configured production/developer/sandbox My Domain.
219
216
 
220
- Deferred work and limitations: record create/update/delete and relationship
217
+ Not implemented: record create/update/delete and relationship
221
218
  mutations, bulk/partial-write handling, SOAP, streaming/events, MCP, automatic
222
219
  pagination, query building/parameter binding, client-credentials/JWT or other
223
220
  grants, identity login, Experience Cloud/sovereign/legacy instance hosts and API
@@ -229,5 +226,37 @@ does not establish access to a particular object or field. A missing token expir
229
226
  uses a five-minute local renewal policy, not a provider lifetime guarantee.
230
227
  Disconnect removes local grants only; provider revocation remains an org/admin
231
228
  action. Native framework routes, business UI, app sessions and access policy are
232
- application-owned. Assistant tool attachment requires explicit host integration. Live
233
- org/consent/data outcomes and generated-app execution remain unverified.
229
+ application-owned. Assistant tool attachment requires explicit host integration.
230
+
231
+ ## OAuth pattern composition: Salesforce
232
+
233
+ Use `salesforceProvider` from `@jskit-ai/connectors-catalog/server/salesforce`
234
+ and the portable JSON in this guide. Read that guide before provisioning
235
+ an External Client App. Production/Developer Edition and Sandbox have distinct
236
+ My Domain formats. Client credentials remain in references; the runtime pins
237
+ consent, token exchange and APIs to that org and handles undated/rotating grants.
238
+ The ordinary file service, Env resolver and application owner policy of the [OAuth pattern](../patterns/oauth-connection/PATTERN.md) apply.
239
+
240
+ After consent, `limits.read` verifies API access. A server action can expose an
241
+ approved query through the same library:
242
+
243
+ ```js
244
+ const result = await connections.invoke({
245
+ context: authenticatedContext, integrationId: "crm", operation: "query.read",
246
+ input: { q: "SELECT Id, Name FROM Account ORDER BY Id LIMIT 20" }, signal
247
+ });
248
+ ```
249
+
250
+ The application supplies the trusted context and abort signal. It authorizes
251
+ objects, fields and any query parameters in its existing action/policy; avoid
252
+ an unrestricted query endpoint. `api` can authorize writes even though these
253
+ operations only read. Do not use provider connection identity as application
254
+ login. For metadata, call `objects.list` and `objects.describe` with an object
255
+ API name. Keep a returned `nextRecordsUrl` with its original owner/query and pass
256
+ it only to `query.next`. No automatic paging is installed.
257
+
258
+ Map `connector_cursor_expired` to restarting the authorized query and
259
+ `connector_reconnect_required` to the existing connection UI. Do not retry a
260
+ failed operation in a loop. Register the application's implemented callback and
261
+ follow provider requirements for distributing an app across customer orgs.
262
+ Separate registrations do not divide an org's API allocation.
package/docs/sentry.md CHANGED
@@ -89,16 +89,7 @@ with explicit MCP discovery and authorized tool calls. No alias or automatic
89
89
  conversion retains the old connection; remove its local record through its
90
90
  owning application and review whether its old Env token is still used elsewhere.
91
91
 
92
- ## Verification and limitations
93
-
94
- Two focused tests cover resource and registration validation. Seven OAuth/MCP
95
- tests cover consent, PKCE, encrypted persistence, refresh, owner/resource
96
- isolation, issue details, exact tool authorization, errors and cancellation;
97
- those seven also pass through installed public package exports. Public editor
98
- registration has a passing owner/Env test, and phone/desktop browser checks cover
99
- registration, consent cancellation, reconnect, reload and disconnect. All use
100
- controlled fixtures; live tool schemas, consent and account behavior are unverified.
101
- The previous REST organization probe is replaced without a compatibility alias.
92
+ ## Limitations and sources
102
93
 
103
94
  The official repository also documents a remote `Sentry-Bearer` token alternative,
104
95
  distinct from OAuth `Bearer`. That alternative is not implemented here yet.
@@ -108,5 +99,3 @@ Sources: [hosted MCP instructions](https://mcp.sentry.dev/),
108
99
  [resource binding](https://github.com/getsentry/sentry-mcp/blob/main/packages/mcp-cloudflare/src/server/protected-resource-metadata.ts),
109
100
  [OAuth metadata](https://github.com/getsentry/sentry-mcp/blob/main/packages/mcp-cloudflare/src/server/authorization-server-metadata.ts),
110
101
  [scope definitions](https://github.com/getsentry/sentry-mcp/blob/main/packages/mcp-core/src/scopes.ts).
111
- Public discovery requests returned HTTP 403 from the development environment;
112
- source evidence does not establish successful live consent.
package/docs/sevdesk.md CHANGED
@@ -91,17 +91,6 @@ independent-capacity arrangement need confirmation. The application enforces
91
91
  its own usage limits. No callback URL is
92
92
  used, so editor VM and app hosting domains do not affect this flow.
93
93
 
94
- ## Focused evidence
94
+ ## Scope and limitations
95
95
 
96
- Tests use simulated HTTP replies and real temporary encrypted JSON storage.
97
- They cover raw authorization, page defaults, explicit organization-only reads,
98
- numeric-string totals, invalid inputs/envelopes, restart, rotation, ownership
99
- and disconnect. Editor automation verifies the token label, reference-only
100
- storage and save/reload. Live provider use, account creation and sample-app
101
- generation are excluded.
102
-
103
- ## Existing-scope closeout — 13 September 2026
104
-
105
- Contact listing only, including people by default (`depth: 1`), explicit organization-only depth, bounded offset pagination and numeric-string totals. The project supplies its existing raw API token through Env. No contact detail/search/create/update/delete, related-object expansion, invoices, orders, vouchers or bookkeeping operations are implemented. There is no OAuth/app registration, application-user login, token-issuance automation, automatic pagination/retry or remote token revocation. Applications still own their UI, authorization and pagination; disconnect removes local connection state. Deferred work is the missing contact/accounting operations and their validation, permissions, setup guidance and tests. No live Sevdesk account, provider-console login or generated-app run was tested.
106
-
107
- Three selected source tests and the same three installed-package tests passed on September 13. They cover credential verification, encrypted file restart, rotation, isolation, disconnect, pagination/depth/totals and redacted invalid-input/provider failures. Existing shared business-token UI evidence is retained; no fresh browser run or form change is claimed.
96
+ Contact listing only, including people by default (`depth: 1`), explicit organization-only depth, bounded offset pagination and numeric-string totals. The project supplies its existing raw API token through Env. No contact detail/search/create/update/delete, related-object expansion, invoices, orders, vouchers or bookkeeping operations are implemented. There is no OAuth/app registration, application-user login, token-issuance automation, automatic pagination/retry or remote token revocation. Applications still own their UI, authorization and pagination; disconnect removes local connection state.
package/docs/shopify.md CHANGED
@@ -96,8 +96,7 @@ operations locally; Shopify remains the authority for the token's actual rights.
96
96
 
97
97
  ## Application registrations, callbacks and domains
98
98
 
99
- Shopify's word *online* describes a staff-user access token. It is unrelated to
100
- the Vibe64 Online product.
99
+ Shopify's word *online* describes a staff-user access token.
101
100
 
102
101
  The application owner creates its Shopify app in the Dev Dashboard, configures
103
102
  its distribution, access scopes and application URL, and completes any required
@@ -204,3 +203,37 @@ Operation references: [products](https://shopify.dev/docs/api/admin-graphql/late
204
203
  [productCreate](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productCreate),
205
204
  [productUpdate](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productUpdate),
206
205
  [productDelete](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productDelete).
206
+
207
+ ## OAuth pattern composition: Shopify product operations and assistant permissions
208
+
209
+ Import `shopifyProvider` from `@jskit-ai/connectors-catalog/server/shopify` and read
210
+ this guide. The supported new-app flow is an installed app in
211
+ the **same Shopify organization** as its store, with `grantType: "client_credentials"`.
212
+ There is no callback in this flow. Put the client secret in an environment
213
+ reference and configure the permanent `shopDomain`, not a custom storefront URL.
214
+ Call `connectClientCredentials` before the named product operations. Existing
215
+ Admin API tokens use `connectApiKey` instead. Other merchants need the unfinished
216
+ Shopify installation/consent flow; do not pretend client credentials cover them.
217
+
218
+ The runtime sends Shopify's header and GraphQL Admin API 2026-07 requests. It
219
+ supports bounded product listing, creation, update and deletion. Create defaults
220
+ to draft. Use Product GIDs; price/SKU/variants and publication are separate work.
221
+ Do not retry a mutation blindly after timeout. A store connection is not shopper
222
+ login or an individual staff member's authorized session.
223
+
224
+ Construct assistant-facing services with `executionMode: "assistant"`; the
225
+ host's trusted authorization callback receives `{ assistantPermission, input }`.
226
+ It must verify real human approval and return `approved: true` for `ask`, together
227
+ with the checked owner identity. The shared runtime denies `never` and does not
228
+ accept a browser-supplied approval flag. `always` still checks application access.
229
+ The host must bind approval to the exact request and supply its existing decision
230
+ UI/storage; the library does not create another approval system.
231
+
232
+ The portable `assistantPolicy` holds enablement, a default and action overrides.
233
+ It is independent of credentials, provider scopes and connection sharing. Host
234
+ workspace policy may further restrict it. Use `authorizeAssistantAction` only
235
+ before a host-owned lifecycle operation such as enabling or claiming a store;
236
+ it authorizes but does not execute that action. The captured remaining action
237
+ choices do not mean variant/discount/store lifecycle adapters are implemented.
238
+ The application owns its registration and token storage. The editor's
239
+ Connect/approval journey must invoke that application's setup operations.
package/docs/slack.md CHANGED
@@ -133,7 +133,7 @@ it does not uninstall the Slack app or revoke every grant in that workspace.
133
133
  Socket mode, slash commands, organization-wide
134
134
  installs, GovSlack and Sign in with Slack are outside this initial fragment.
135
135
 
136
- ## Online, public editor and automation
136
+ ## Editors, hosting and automation
137
137
 
138
138
  Each application owns its provider registration, callback route, credentials
139
139
  and grants. Hosted and installed editors configure the same app-owned setup;
@@ -182,20 +182,10 @@ registration provisioner. For a manual manifest path, select **Create New App
182
182
  From a manifest**, select the workspace, paste JSON/YAML, review and create.
183
183
  [Manifest UI](https://docs.slack.dev/app-manifests/configuring-apps-with-app-manifests/).
184
184
 
185
- ## Verification boundary
186
-
187
- Controlled local tests exercise both identities, encrypted file restart,
188
- rotating and non-rotating grants, scope restrictions, cancellation, actor changes,
189
- bounded paging, HTTP-200 failures, malformed responses and interruption. Shared
190
- form tests and Vibe64 browser tests cover conditional scopes and file round trips.
191
- No live Slack registration, provider consent, customer data or generated app is
192
- part of this proof. Current controlled source and installed-package suites each pass 17/17.
193
- Current-source compact and expanded editor cases pass separately, including
194
- actor/scope persistence, signing-secret reference, inline guidance, per-user
195
- connection instructions and shared connect/cancel/disconnect controls. Registration
196
- provisioning remains an operator action; assistant tool attachment requires
197
- explicit host integration.
185
+ ## Limitations
198
186
 
187
+ Registration provisioning remains an operator action; assistant tool attachment
188
+ requires explicit host integration.
199
189
 
200
190
  ## Message operations
201
191
 
@@ -255,3 +245,38 @@ CLI applications use this same code without the editor; other frameworks can use
255
245
  native Slack verification support with the same Env and route contract.
256
246
 
257
247
  [Slack signature contract](https://docs.slack.dev/authentication/verifying-requests-from-slack/).
248
+
249
+ ## OAuth pattern composition: Slack
250
+
251
+ Import `slackProvider` from `@jskit-ai/connectors-catalog/server/slack` and include
252
+ it in the provider array used for parsing and `createConnectionService`.
253
+ Set `settings.actor` to `user` or `bot`, independently of application ownership.
254
+ Use an own confidential registration and a real registered HTTPS callback;
255
+ plain HTTP loopback is not supported by Slack. The [Slack guide](slack.md)
256
+ contains a complete portable JSON file and manual/API registration instructions.
257
+
258
+ For channel listing, request `channels:read` and call:
259
+
260
+ ```js
261
+ const firstPage = await connections.invoke({
262
+ context: authenticatedContext,
263
+ integrationId: "slack",
264
+ operation: "channels.list",
265
+ input: { limit: 50, exclude_archived: true }
266
+ });
267
+ // Retain next_cursor even when filtering leaves this page empty.
268
+ const nextCursor = firstPage.response_metadata?.next_cursor;
269
+ ```
270
+
271
+ The host supplies `authenticatedContext`; user request parameters cannot select
272
+ another owner. The library selects `user_scope` versus `scope`, extracts the
273
+ requested token identity, checks Slack's HTTP-200 errors and refreshes rotating
274
+ grants under the file lock. Do not duplicate that code in generated handlers.
275
+ Add the corresponding read permission before using `groups.list`,
276
+ `directMessages.list` or `groupMessages.list`. `auth.test` returns identity.
277
+
278
+ An individually owned bot connection still acts as the installed workspace bot.
279
+ It is not a personal account or an application login. Actor changes require
280
+ reconnection and remove incompatible form scopes. Captured permission choices
281
+ do not imply implemented operations: history, sends, events, organization-wide
282
+ installs and Sign in with Slack remain outside this fragment. The application implements and registers its own callback.
package/docs/snowflake.md CHANGED
@@ -124,8 +124,8 @@ For an application integration, use the application's assigned hosting URL as
124
124
  the initial origin and its implemented callback path. Store the exact callback
125
125
  in its Env reference and provider registration. A domain change requires updating
126
126
  both values if the callback URL changes; retain the application identity and its
127
- persistent grants when moving hosts. Public Vibe64, Online and CLI users supply
128
- their own registrations through this same contract.
127
+ persistent grants when moving hosts. Every editor and CLI supplies its own
128
+ registrations through this same contract.
129
129
  See the [callback guide](../../connectors-core/docs/oauth-callbacks.md).
130
130
 
131
131
  A Snowflake security integration belongs to one Snowflake account. Separate
@@ -269,3 +269,28 @@ the confidential-client/PKCE consent and refresh lifecycle there; JSKIT is not a
269
269
  remote service. Preserve string-valued numeric results, one explicit statement
270
270
  request ID, partition polling and cancellation. Apply the same application
271
271
  policy to SQL text, handles and warehouse names before invoking the provider.
272
+
273
+ ## OAuth pattern composition: Snowflake account OAuth
274
+
275
+ Use `snowflakeProvider` from `@jskit-ai/connectors-catalog/server/snowflake` and
276
+ this guide. Its portable settings are `accountUrl` and optional `role`.
277
+ The shared form and CLI parser derive compatible scope choices from the role.
278
+ Omit the role for the connected user's default and retain `refresh_token`;
279
+ otherwise include the exact required role scope returned by `getProviderScopes`.
280
+ Do not hand-encode a space-containing role twice. Changing role/account requires
281
+ new consent. The registration supports confidential client secret POST or Basic;
282
+ PKCE remains enabled for both.
283
+
284
+ The useful operation is `databases.list` with `showLimit`, `like`, `startsWith`,
285
+ `fromName` and `history`. It reads one metadata page and pins the configured role
286
+ in the request header. Do not turn user text into SQL or infer table access from
287
+ successful metadata verification. HTTP 202 remains an explicit incomplete
288
+ response, with no polling implementation in this fragment.
289
+
290
+ An administrator creates the custom OAuth integration inside each customer's
291
+ Snowflake account. AI can assist through authorized SQL/CLI provisioning, but
292
+ reader credentials do not grant that authority. Keep secret results out of chat.
293
+ Register the application's callback and update that registration and its
294
+ environment binding when the callback domain changes. Compute billing belongs
295
+ to the Snowflake account. Use application authorization, reference resolution
296
+ and durable storage; the editor does not hold the grant.
package/docs/telegram.md CHANGED
@@ -99,16 +99,6 @@ ownership. The application owner must confirm provider capacity for its usage. D
99
99
  outbound API calls; a separately implemented webhook consumer must own its explicit callback and
100
100
  delivery lifecycle.
101
101
 
102
- ## Focused evidence
103
-
104
- Automated fixtures check token validation, fixed destinations, bot-only
105
- verification, empty webhook URLs, malformed results, unsuccessful HTTP-200
106
- envelopes, authorization failures, rate limits, file-store restart, isolation,
107
- rotation and disconnect. The editor test checks the bot-token label, rejection
108
- of raw credentials, setup link and saved-reference reload. No live bot,
109
- provider consent, message delivery or sample application is exercised.
110
-
111
-
112
102
  ## Interactive message workflow
113
103
 
114
104
  Before polling, call `webhook.read`. A nonempty webhook URL means another
package/docs/tiktok.md CHANGED
@@ -168,7 +168,7 @@ read the same registration references and ownership/scopes, call GET
168
168
  response. It must retain the provider-specific `client_key`, comma scopes and
169
169
  refresh-token rules described above. JSKIT supplies no PHP implementation.
170
170
 
171
- ## Online, public and custom domains
171
+ ## Editors, hosting and custom domains
172
172
 
173
173
  Each application owns its provider registration, callback route, credentials
174
174
  and grants. Hosted and installed editors configure the same app-owned setup;
@@ -199,3 +199,21 @@ The app developer must obtain approval for the actual integration and user flow.
199
199
  The initial fragment is tested with controlled token/API responses and the editor
200
200
  configuration UI. No live TikTok registration, production approval, provider
201
201
  consent or generated application has been exercised.
202
+
203
+ ## OAuth pattern composition: TikTok
204
+
205
+ Use `tiktokProvider` from `@jskit-ai/connectors-catalog/server/tiktok` and the
206
+ packaged this guide. The portable `clientId` field stores TikTok's Client
207
+ key. The adapter sends `client_key` during authorize/token exchanges, comma
208
+ separated scopes, and requires a static HTTPS Web callback under 512 characters.
209
+ The CLI uses that same callback-owning backend and file runtime; do not embed
210
+ its secret into distributed clients or assume HTTP loopback/native support.
211
+
212
+ `profile.read` verifies basic access. `profile.extended`, `profile.stats` and
213
+ `videos.list` require their respective optional permissions. Handle declined
214
+ permissions as unavailable operations; never substitute the builder's account
215
+ for an app user's connection. Video reads use explicit pages with string IDs;
216
+ the runtime implements no posting or Research API. Refresh rotates credentials
217
+ and may reduce permissions. Local disconnect does not revoke access at TikTok.
218
+ The application owns its callback and allowed return destination. App login
219
+ remains a separate concern from this data connection.
package/docs/twilio.md CHANGED
@@ -257,7 +257,7 @@ same account do not establish separate billing or guaranteed quota isolation.
257
257
  The application operator selects its account, key and region and owns usage
258
258
  limits. This adapter does not provision capacity or enforce a budget. Use
259
259
  separate parent accounts where independent billing is required, subject to
260
- Twilio's account arrangements. Online, installed editor and CLI users configure
260
+ Twilio's account arrangements. Hosted editor, installed editor and CLI users configure
261
261
  the same application-owned credentials.
262
262
 
263
263
  There is no OAuth callback in this API-key flow, so editor VM URLs and custom
package/docs/twitch.md CHANGED
@@ -399,7 +399,7 @@ reconnection; a Helix 401 likewise requires reconnection without replay. This
399
399
  fragment does not implement Twitch's recommended reactive refresh on 401.
400
400
  [Refresh behavior](https://dev.twitch.tv/docs/authentication/refresh-tokens/).
401
401
 
402
- ## Online, public editor and automation
402
+ ## Editors, hosting and automation
403
403
 
404
404
  Twitch requires a distinct client ID for each application. Each generated app
405
405
  owns its registration, whether created with a hosted editor, installed editor or
@@ -417,12 +417,42 @@ The documented registration path is the console. No supported application
417
417
  creation API was established in this review. An AI can prepare the JSON,
418
418
  environment references, callback wiring and validation job. The owner handles
419
419
  account verification, human verification, registration and consent; automation
420
- must not invent a registration endpoint or bypass those steps. For Online,
421
- operator-managed credential storage can simplify wiring after the app-specific
422
- registration exists, but this fragment does not provision that service.
420
+ must not invent a registration endpoint or bypass those steps. A hosting
421
+ platform's operator-managed credential storage can simplify wiring after the
422
+ app-specific registration exists, but this fragment does not provision that service.
423
423
 
424
424
  Twenty controlled runtime tests cover consent formats and replay, encrypted file
425
425
  restart, refresh rotation, owner/client isolation, validation, bounded paging,
426
426
  malformed responses, provider failures and interruption. Public-editor tests
427
427
  cover the configuration form. No live registration, user data, consent or
428
428
  sample application is part of this proof.
429
+
430
+ ## OAuth pattern composition: Twitch
431
+
432
+ Use `twitchProvider` from `@jskit-ai/connectors-catalog/server/twitch` in the
433
+ provider array of the [OAuth pattern](../patterns/oauth-connection/PATTERN.md) and the portable JSON in this guide. Start with
434
+ `user:read:email` and `user:read:follows` for `profile.read` and
435
+ `channels.followed`; remove any permission whose operation is not used.
436
+ Its normal operations verify the token before data access. The provider also
437
+ exposes `token.validate` for Twitch's required startup/hourly validation of
438
+ maintained sessions, including idle connections:
439
+
440
+ ```js
441
+ // Run from the host's startup and scheduled-job paths. Contexts are derived
442
+ // by its existing authorization owner, never from caller-supplied user IDs.
443
+ for (const context of maintainedTwitchContexts) {
444
+ try {
445
+ await connections.invoke({ context, integrationId: "twitch", operation: "token.validate" });
446
+ } catch (error) {
447
+ await reportConnectionFailure(context, error);
448
+ }
449
+ }
450
+ ```
451
+
452
+ The host supplies `maintainedTwitchContexts` and `reportConnectionFailure`;
453
+ these are not JSKIT exports. Its scheduler must prevent overlapping runs and
454
+ surface reconnect state. Merely saving configuration installs no scheduled
455
+ job. Neither the provider nor this composition implements application login.
456
+ Twitch requires an application-specific registration: do not reuse one editor
457
+ client ID across independent generated apps. Register the application's own callback URL. The runtime handles array/string token
458
+ scopes and Client-ID headers; do not duplicate those details in app scaffolding.
package/docs/wave.md CHANGED
@@ -268,21 +268,10 @@ application must follow its approved usage and account limits.
268
268
  Changed client IDs or callbacks require reconnecting; changing the secret
269
269
  binding can support ordinary provider-side secret rotation.
270
270
 
271
- ## Verification and remaining scope
272
-
273
- `test/wave.test.js` exercises the real shared service with temporary encrypted
274
- files and controlled HTTP responses. It covers code consent, restart, named
275
- queries, input boundaries, scopes, owner policy, callback changes, serialized
276
- refresh, permission/subscription failures, partial GraphQL errors, cancellation
277
- and malformed success responses. The guide's JSON is parsed by the same schema.
278
- The public editor cases passed at desktop and phone widths, checking all ten
279
- setup steps, configuration/Env references and file persistence, owner-mode
280
- changes, consent cancellation, reconnect and local disconnect.
281
-
282
- These tests use no live Wave account, consent, invoices or registration. They do
283
- not generate a sample application. Live success, provider PKCE enforcement,
284
- partner approval and actual quota allocation remain unproven. Full-access
285
- tokens, webhooks and provider-side revocation are not implemented. The implemented mutations are described below.
271
+ ## Limitations
272
+
273
+ Full-access tokens, webhooks and provider-side revocation are not implemented.
274
+ The implemented mutations are described below.
286
275
 
287
276
  ## Estimates in the application
288
277
 
@@ -438,3 +427,35 @@ view. This hides an account from the default view, rather than deleting it.
438
427
  Native frameworks use the same ownership lookup and `AccountArchiveInput`, whose
439
428
  output provides `didSucceed` and `inputErrors`, without an account object. See
440
429
  [Wave API reference](https://developer.waveapps.com/hc/en-us/articles/360019968212-API-Reference).
430
+
431
+ ## OAuth pattern composition: Wave
432
+
433
+ Import `waveProvider` from `@jskit-ai/connectors-catalog/server/wave` into the
434
+ same provider array and use this guide for portable JSON and registration
435
+ setup. Keep `client_secret_post` authentication. Grant `user:read` for verification,
436
+ `business:read` for selection, and the matching customer/invoice read permission.
437
+
438
+ ```js
439
+ const businesses = await connections.invoke({
440
+ context, integrationId: "wave", operation: "businesses.list",
441
+ input: { page: 1, pageSize: 20 }
442
+ });
443
+ const businessId = await choosePermittedBusiness(businesses.data.businesses, context);
444
+ const customers = await connections.invoke({
445
+ context, integrationId: "wave", operation: "customers.list",
446
+ input: { businessId, page: 1, pageSize: 20 }
447
+ });
448
+ ```
449
+
450
+ `choosePermittedBusiness` is the host's selection and authorization function,
451
+ not a JSKIT export. Do not default to the first business or trust an incoming
452
+ business ID without policy checks. Preserve `pageInfo` and nullable edge nodes;
453
+ advance only when the caller requests another page. `invoice:write` alone cannot
454
+ authorize invoice reads. Results with GraphQL errors are rejected even if they
455
+ contain partial data. The library sends fixed queries and owns token refresh,
456
+ including Wave's original redirect URI, under encrypted file storage.
457
+
458
+ Wave OAuth business access requires Pro or Advisor, and use for other customers
459
+ requires provider approval. This is a data connection, not login. The application must implement and register an actual
460
+ served callback. Do not replace OAuth with a personal full-access token for
461
+ customer applications or copy protocol logic into generated routes.
package/docs/wix.md CHANGED
@@ -100,7 +100,7 @@ provider key. API failures are sanitized; 401 requires reconnect, 403 indicates
100
100
  missing access, and 429 reports a rate limit without retrying. Malformed result
101
101
  fields and input values fail explicitly. Cancellation preserves a verified grant.
102
102
 
103
- ## Public, Online and automation
103
+ ## Editors, hosting and automation
104
104
 
105
105
  For this account-key flow, the universal OAuth callback is **not applicable**.
106
106
  Customer VPS and custom-domain URLs do not enter the provider authentication
@@ -146,22 +146,9 @@ The runtime's trusted host policy must authorize the actual operation and its
146
146
  business object. A shared site key is not proof that an app user owns a booking,
147
147
  contact or order. Authorize that relationship before returning data or writing.
148
148
  The generated app owns its customer screens, checkout and domain-specific rules.
149
- Public Vibe64 owns editing this project configuration; Online adds no Wix gateway.
150
-
151
- ## Verification status
152
-
153
- The controlled provider suite currently passes **40/40**, including identity
154
- headers, input validation, pagination, exact revisions, write bodies, ownership,
155
- key rotation and failure handling. These use fixtures, not a live Wix account.
156
- The expanded and compact editor cases each pass with the current Site ID,
157
- Selectable Site IDs and setup guidance: invalid input, text configuration save and
158
- reload, missing credentials, connect, reconnect and local disconnect. These browser
159
- cases use controlled connection responses. A freshly packed catalog installed
160
- offline in a standalone consumer passed the same 29 controlled cases through
161
- public package exports, including this guide’s configuration. This proves the
162
- implemented operations and configuration/lifecycle UI, not the missing workflows
163
- below or live provider behavior.
164
- No generated application, payment, real booking or release has been exercised.
149
+ The editor owns editing this project configuration; no Wix gateway is added.
150
+
151
+ ## Not implemented
165
152
 
166
153
  The following remain outside the implemented operations and need explicit scope
167
154
  reconciliation before acceptance: scheduled session management,
package/docs/wiz.md CHANGED
@@ -134,13 +134,13 @@ There are no automatic retries. A new scan is a separate explicit operation.
134
134
  ## Application ownership and custom domains
135
135
 
136
136
  **Provider callback: not applicable.** Service-account CLI authentication has no
137
- browser redirect. Do not register `https://connect.vibe64.dev/oauth/wiz/callback`
138
- or each customer's VPS/custom domain as a Wiz callback for this mode.
137
+ browser redirect. Do not register a hosting platform's shared callback or each
138
+ customer's own domain as a Wiz callback for this mode.
139
139
 
140
140
  The application or scanning workflow owner supplies an authorized Wiz service
141
141
  account scoped to the intended Wiz projects. Store its credentials in private
142
- worker Env and enforce permission to scan the selected source directory. Public
143
- Vibe64 and Online do not supply a universal scanning credential. The runtime
142
+ worker Env and enforce permission to scan the selected source directory. No
143
+ editor or hosting platform supplies a universal scanning credential. The runtime
144
144
  rejects managed registration assignments; there is no hosted universal scan
145
145
  endpoint.
146
146