@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
@@ -64,7 +64,7 @@ reader. The editor no longer asks for a token or pilot selection.
64
64
  ```
65
65
 
66
66
  Replace the placeholders with project-owned resources. Secrets and grants stay
67
- with the application. CLI, public Vibe64 and Online use the same configuration;
67
+ with the application. A CLI and every editor use the same configuration;
68
68
  Laravel implements it with its own framework. Host/domain changes require the
69
69
  provider registration and callback Env value to match the application's new
70
70
  callback. Keep persistent grants and application identity when moving hosts.
@@ -115,16 +115,6 @@ provider error bodies and query echoes are not exposed. Requests respect abort
115
115
  signals/timeouts and are not replayed automatically. Disconnect removes local
116
116
  access; Google account revocation is a separate owner action.
117
117
 
118
- ## Verification boundary
119
-
120
- Focused tests use controlled OAuth and Ads HTTP responses with the real shared
121
- validator and encrypted file store. They cover Cloud-project configuration, OAuth/header
122
- separation, query/page bounds, int64 preservation, empty/malformed results,
123
- restart, concurrent refresh/rotation, ownership, policy, denied consent, errors
124
- and interruption. No live accounts, Cloud-project approvals, reports,
125
- campaign actions or generated applications are used. Provider approval and live
126
- consent remain separate acceptance work.
127
-
128
118
  ## Existing-account Search campaign service
129
119
 
130
120
  `@jskit-ai/connectors-catalog/server/google-ads-search` exports
@@ -154,3 +144,55 @@ live coding-assistant tool attachment. For example, asking chat to create a new
154
144
  Ads account and autonomously optimize a PMax campaign remains unsupported. The
155
145
  current editor command uses development Env and may affect a real Ads account.
156
146
  Fixtures prove composition and request/approval behavior, not Google live approval.
147
+
148
+ ## OAuth pattern composition: Google Ads
149
+
150
+ Use `googleAdsProvider` from `@jskit-ai/connectors-catalog/server/google-ads`
151
+ with the same file service and owner policy. Start from the actual portable JSON
152
+ in this guide. Setup needs a Web OAuth client in a Cloud project
153
+ with the required Google Ads API access level. Developer tokens were retired
154
+ on September 9, 2026; do not add a developer-token reference or pilot selector.
155
+ The app owns its registration and grants. This does not establish app login
156
+ or make arbitrary reports public.
157
+
158
+ `customers.listAccessible` verifies the grant and returns directly accessible
159
+ customer resource names. It does not list every manager descendant. Use
160
+ `customers.listClients` for an authorized manager's hierarchy metadata, keeping
161
+ the operation customer ID separate from optional `settings.loginCustomerId`.
162
+ For a useful campaign report, the existing server action can call:
163
+
164
+ ```js
165
+ const report = await connections.invoke({
166
+ context: authenticatedContext,
167
+ integrationId: "ads",
168
+ operation: "reports.search",
169
+ input: {
170
+ customerId: authorizedCustomerId,
171
+ query: "SELECT campaign.id, campaign.name, metrics.impressions, metrics.clicks, metrics.cost_micros FROM campaign WHERE segments.date DURING LAST_7_DAYS LIMIT 100"
172
+ },
173
+ signal
174
+ });
175
+ ```
176
+
177
+ Derive `authorizedCustomerId` from the app's existing account-access policy.
178
+ Authorize fields, date ranges and filters too; do not send arbitrary browser/AI
179
+ GAQL to a public server route. The library passes the operation and input
180
+ snapshot to the host policy before credentials or API requests. Google's
181
+ `adwords` permission may allow writes, despite this operation set's reads.
182
+
183
+ Render `report.results ?? []`; retain integer strings and cost micros without
184
+ rounding. Keep `nextPageToken` with the exact query/customer/owner for an explicit
185
+ next call. No automatic page loop or SearchStream endpoint is installed. API
186
+ errors can reflect developer approval, account relationships or quotas even
187
+ after valid OAuth consent. Map `connector_api_access_invalid` to API setup,
188
+ `connector_scope_missing` and `connector_reconnect_required` to consent recovery,
189
+ and `connector_rate_limited` to the app's bounded usage policy. Never solve API
190
+ approval by repeatedly asking the user to reconnect.
191
+
192
+ The provider guide includes console clicks, API/CLI automation feasibility,
193
+ application-owned callback configuration and account quota boundaries.
194
+ Different client IDs do not automatically separate developer-token capacity;
195
+ approved pilot projects can have usage caps while organization/account limits
196
+ still apply. The CLI uses exactly this library and file configuration without
197
+ Vibe64. No generated app or live provider operation is required to validate the
198
+ configuration, run the focused provider tests or read the [OAuth pattern](../patterns/oauth-connection/PATTERN.md).
@@ -55,8 +55,8 @@ The shared field component and CLI validator use this same format. The public ID
55
55
  framework can expose it through its normal public build configuration. No
56
56
  secret-resolution service is needed.
57
57
 
58
- Vibe64 Public owns the editor experience. Online uses that same experience and
59
- the selected project's configuration. Saving must report **Configured**, with
58
+ The editor owns the configuration experience for the selected project. Saving
59
+ must report **Configured**, with
60
60
  an explanation that application wiring and event delivery are separate. It must
61
61
  not start OAuth, call a connection-status command, send a test tracking event,
62
62
  or show an account as verified. Changing or removing the setting is an ordinary
@@ -132,16 +132,10 @@ editor VM URL does not substitute for either. These API keys are unrelated to
132
132
  Google login or OAuth callback registration.
133
133
  [Client/server restrictions](https://developers.google.com/maps/api-security-best-practices).
134
134
 
135
- ## Focused evidence
136
-
137
- Six fixture tests cover explicit verification input, file restart, rotation,
138
- owner isolation, separate browser references, input bounds, empty responses,
139
- HTTP-200 errors and transport failures. Editor browser tests cover both
140
- reference fields, invalid values, reload and optional-field removal. The runtime
141
- does not automatically retain geocoding results; applications own display and
142
- retention behavior under the provider's requirements. No live provider use or
143
- sample-app generation is part of this evidence.
135
+ ## Result retention
144
136
 
137
+ The runtime does not automatically retain geocoding results; applications own
138
+ display and retention behavior under the provider's requirements.
145
139
 
146
140
  ## Places, routes and browser composition
147
141
 
package/docs/granola.md CHANGED
@@ -108,7 +108,7 @@ state. Revoke access separately in the personal or workspace API-key page using
108
108
  **Revoke**, then its confirmation dialog. [Key management](https://docs.granola.ai/help-center/sharing/integrations/granola-api)
109
109
 
110
110
  There is no provider OAuth application or universal callback URL for this API-key
111
- mode. Online VPS and custom-domain changes do not change API authentication.
111
+ mode. Hosting and custom-domain changes do not change API authentication.
112
112
  Keep stable application/owner identity and runtime reference bindings.
113
113
 
114
114
  The application owner supplies its own authorized key through private Env. Do
package/docs/hubspot.md CHANGED
@@ -140,3 +140,28 @@ operations. Example: a booking app can create a linked deal and advance its stag
140
140
  but it must supply the trigger and cannot import an entire CRM automatically.
141
141
  Assistant tool attachment requires explicit host integration. Fixture success does not prove live CRM
142
142
  installation, property availability, subscription features or generated-app use.
143
+
144
+ ## OAuth pattern composition: HubSpot account connections
145
+
146
+ Import `hubspotProvider` from `@jskit-ai/connectors-catalog/server/hubspot`.
147
+ Use this guide registration instructions. Configure an own
148
+ registration with `clientId`, `clientSecretRef: "env:HUBSPOT_CLIENT_SECRET"`,
149
+ `callbackUrlRef: "env:HUBSPOT_CALLBACK_URL"` and
150
+ `tokenEndpointAuthMethod: "client_secret_post"`. Select scopes `oauth` and
151
+ `crm.objects.contacts.read`; the integration's authentication is
152
+ `{ "method": "oauth2", "registrationRef": "hubspot" }` when that registration
153
+ is named `hubspot`.
154
+
155
+ Use `beginAuthorization`, the existing application's callback route and
156
+ `completeAuthorization`, then `contacts.list` with optional `limit`, `after`
157
+ and `archived`. Verification reads contacts. The provider implements confidential
158
+ code exchange, scope-array normalization and refresh through HubSpot's current
159
+ token endpoint; do not build another token exchange or gateway.
160
+
161
+ For `per-user`, the application's authenticated identity owns each local grant.
162
+ HubSpot installations normally expose account-level CRM access; this mode does
163
+ not itself enforce HubSpot record ownership or implement application login.
164
+ For `shared`, only authorized app administrators can connect the shared account.
165
+ Use the [API-key pattern](../patterns/api-key-connection/PATTERN.md) instead for a static/private token, retaining the
166
+ `crm.objects.contacts.read` configuration permission. Disconnect is local;
167
+ provider installation removal is separate.
package/docs/klipy.md CHANGED
@@ -111,19 +111,6 @@ Outbound reads need no OAuth callback, so VM subdomains and custom deployment
111
111
  domains do not alter authentication. Record the intended application URL in
112
112
  provider setup and satisfy its content/attribution agreement in the application.
113
113
 
114
- ## Focused evidence
115
-
116
- Fixtures check trending verification, search encoding, pagination bounds,
117
- locale/filter errors, unsuccessful envelopes, key rotation, private file-store
118
- restart, owner isolation and provider failures. Core tests cover path encoding,
119
- invalid destinations, ambiguous prefixes and error redaction. The editor test
120
- checks the secret reference, setup link and reload persistence. No live key,
121
- production approval, media use or generated sample application is exercised.
122
-
123
- The official Partner Panel guide was rechecked on 2026-09-12. Expanded screen
124
- steps cover Env handoff, connection verification, production approval and local
125
- disconnect. Updated rendered review passed using simulated connection responses.
126
-
127
114
  ## Embedding and limits
128
115
 
129
116
  The application supplies its own picker and native HTTP/runtime wiring in any
package/docs/lexware.md CHANGED
@@ -95,14 +95,6 @@ provides an independent allowance. Apply usage limits in the application and
95
95
  confirm provider capacity before claiming quota isolation.
96
96
  [API rate limits](https://developers.lexware.io/docs/).
97
97
 
98
- ## Focused evidence
99
-
100
- Simulated replies and real temporary file state verify authentication, restart,
101
- rotation, ownership, disconnect, empty/full contact pages, role filters,
102
- fractional/oversized input rejection and malformed/provider failures. The
103
- editor check verifies reference-only storage and persistence after reload.
104
- Live provider accounts, billing changes and sample-app generation are excluded.
105
-
106
98
  ## Accounting operations
107
99
 
108
100
  `contacts.get`, `articles.get`, `invoices.get`, `vouchers.get` take a resource UUID.
@@ -118,9 +118,10 @@ do not repeatedly retry the spent refresh token.
118
118
  ## Application ownership, callbacks and capacity
119
119
 
120
120
  The application owner creates the provider registration and stores its secret
121
- in the application's private Env. Public Vibe64, Vibe64 Online and CLI users use
122
- this same ownership model. The configuration file holds the client ID and Env
123
- references; the editor does not own the application's grants.
121
+ in the application's private Env. Every editor and CLI uses this same
122
+ [ownership model](../../connectors-core/docs/online-setup.md): the configuration
123
+ file holds the client ID and Env references; the editor does not own the
124
+ application's grants.
124
125
 
125
126
  Register the exact callback implemented by the application. For a hosted project,
126
127
  start with its assigned application URL and append the implemented callback path.
@@ -191,3 +192,31 @@ gift-card/store-credit workflows, webhook receiver or automatic editor tool
191
192
  attachment. Example: an app can report low stock and sales totals, but cannot
192
193
  replenish a shelf or charge a customer through this adapter. Adding a write scope
193
194
  does not implement a write operation. No live retailer or generated app was used.
195
+
196
+ ## OAuth pattern composition: Lightspeed X-Series
197
+
198
+ Import `lightspeedProvider` from `@jskit-ai/connectors-catalog/server/lightspeed`
199
+ and give it to the existing connection service. Use the JSON and provider setup
200
+ in this guide. The store prefix is required and fixed before consent;
201
+ never route credentials using a callback-supplied domain. Keep `products:read`
202
+ for verification and pass `verificationInput: { page_size: 1 }` when starting it.
203
+
204
+ ```js
205
+ const products = await connections.invoke({
206
+ context: authenticatedOwner, integrationId: "retail", operation: "products.list",
207
+ input: { page_size: 50, deleted: false }
208
+ });
209
+ ```
210
+
211
+ `customers.list` and `outlets.list` use the same paging inputs with their own read
212
+ scopes. Request subsequent pages explicitly with version bounds. Preserve null
213
+ customer values and avoid assuming a full page means more records certainly exist.
214
+ The library pins the current API version, validates store-bound token responses,
215
+ and persists each rotated refresh token before reading data. It sends PKCE;
216
+ provider enforcement has not been proven with a live client. Do not add retries
217
+ around authorization codes, refresh or interrupted requests.
218
+
219
+ The host owns authenticated subjects, shared-store access, callback routes and
220
+ rendering. CLI and UI use the same configuration; no database is required for
221
+ editor configuration. Each application supplies its own registration and callback; app sign-in is a separate concern. Extra
222
+ scope selections do not create write operations or independent provider quotas.
package/docs/linear.md CHANGED
@@ -99,13 +99,6 @@ permit writes at Linear. Discovery does not execute tools. Use `tools.list` to
99
99
  obtain available schemas rather than maintaining a second catalogue here.
100
100
  [Linear MCP authentication](https://linear.app/docs/mcp).
101
101
 
102
- ## Review evidence
103
-
104
- The focused fixture tests cover OAuth authorization, cancellation/denial, replay,
105
- refresh rotation after restart, app/user isolation, lost scopes, raw API-key
106
- GraphQL authorization and Bearer MCP discovery. No real Linear account, issue,
107
- consent or tool execution was used. Both credential modes passed a controlled public-editor browser review: configuration survives reload, Env links and provider guides resolve to the intended destinations, and simulated connection controls work. The 496px instruction captures were visually inspected; no live provider consent or fresh phone review is claimed.
108
-
109
102
  ## Approved project and issue workflows
110
103
 
111
104
  The existing MCP transport can discover and invoke the provider's project/issue
@@ -134,3 +127,27 @@ assistant tool attachment. Example: an app can explicitly run an approved
134
127
  issue update, but saving a Linear connection alone does not authorize assistant chat to update that issue. Provider permissions and available tools determine what
135
128
  can run. Fixture workflows prove argument/result transport and local denial, not
136
129
  actual Linear tool schemas or live execution.
130
+
131
+ ## OAuth pattern composition: Linear account connections
132
+
133
+ Import `linearProvider` from `@jskit-ai/connectors-catalog/server/linear` and
134
+ follow this guide to create the project's own registration. Store its
135
+ Client ID in configuration, Client Secret in `env:LINEAR_CLIENT_SECRET`, and
136
+ callback in `env:LINEAR_CALLBACK_URL`; select `client_secret_post`.
137
+ Use authentication `{ "method": "oauth2", "registrationRef": "linear" }`
138
+ when the registration is named `linear`, and keep `scopes: ["read"]`.
139
+
140
+ The application calls `beginAuthorization`, handles its registered callback with
141
+ `completeAuthorization`, then invokes `profile.read` or `issues.list` (optional
142
+ `first` and `after`). The provider owns S256, scope delimiter normalization and
143
+ rotating refresh. The caller owns authorization and subject identity. Shared
144
+ connections belong to the application's authorized administrator; per-user
145
+ connections belong to the signed-in application user. Connecting Linear does not
146
+ implement application login. This flow acts as the consenting Linear user.
147
+
148
+ The same grant supports `tools.list` and `tools.call` against Linear's fixed MCP
149
+ endpoint. Authorize each tool and its arguments before invocation; tools can
150
+ write if the provider permissions allow it. No second MCP registration or Vibe64
151
+ gateway is needed. For personal keys use the [API-key pattern](../patterns/api-key-connection/PATTERN.md), keep the `read`
152
+ configuration scope and restrict the actual key in Linear. Disconnect deletes
153
+ the local grant; provider revocation remains a separate account action.
package/docs/linkedin.md CHANGED
@@ -155,20 +155,7 @@ Separate client IDs do not establish independent quotas or permission to serve
155
155
  unrelated applications. Register and obtain product approval for the actual app.
156
156
  Managed assignments are invalid configuration in this runtime.
157
157
 
158
-
159
- ## Credential guidance review (2026-09-12)
160
-
161
- The inline setup steps now name the developer portal, product approval, exact
162
- callback registration and project Env handoff before connection. Current OIDC,
163
- authorization-code and refresh documentation were checked. The existing adapter
164
- was retained; no provider-login or publishing implementation was added. Ten
165
- focused runtime fixtures pass, including expiry without refresh, approved
166
- refresh, cancellation/replay, encryption, missing permissions and host isolation.
167
- The cancellation test now expects the callback URL exposed by connection status,
168
- while retaining the complete assertion that declined replacement consent keeps
169
- the previous grant. Rendered guidance passed the controlled public-editor journey: saved Client ID/callback, Env links, reload, simulated consent/cancellation/reconnect and disconnect. All six steps were visually reviewed at 496px width. No live provider consent or fresh phone review is claimed.
170
-
171
- ## Text publishing acceptance — 2026-09-13
158
+ ## Text publishing
172
159
 
173
160
  Use `posts.create` with `{ text, visibility: "PUBLIC" }` or `"CONNECTIONS"` after
174
161
  app authorization of the exact message and audience. Text is locally limited to
@@ -192,5 +179,18 @@ request; a timeout does not prove the post was never created.
192
179
 
193
180
  **LIMITATIONS:** Text only. No images/video, organization posts, scheduling, post
194
181
  editing/deletion, analytics or editor-assistant attachment. Example: publish an
195
- approved announcement, but not a photo campaign. Prior September12 review above
196
- is historical. Current tests use simulated provider responses, not live publishing.
182
+ approved announcement, but not a photo campaign.
183
+
184
+ ## OAuth pattern composition: LinkedIn
185
+
186
+ Use `linkedinProvider` from `@jskit-ai/connectors-catalog/server/linkedin` and
187
+ this guide. Both `openid` and `profile` are required; request `email`
188
+ only when needed. `profile.read` accepts no input and reads the connected
189
+ member's userinfo. Optional email fields may be absent. The fragment discards
190
+ ID tokens and does not implement app login or member posting; preserving
191
+ `w_member_social` in configuration does not provide a publishing operation.
192
+ Ordinary expiry requires reconnect unless LinkedIn approved programmatic
193
+ refresh. Keep the confidential client secret on the backend, including when
194
+ composing a CLI; the separately enabled native flow is not implemented.
195
+ Implement and register the application's callback using its assigned app URL
196
+ or explicit host override. Operator setup belongs to the application developer.
package/docs/logo-dev.md CHANGED
@@ -110,32 +110,14 @@ domain matters only if it itself loads the images. That differs from an OAuth
110
110
  redirect allowlist. Changing application domains can require provider-side
111
111
  restriction updates even though the portable reference is unchanged.
112
112
 
113
- ## Focused evidence
113
+ ## Configuration-only contract
114
114
 
115
- Node tests cover options, encoding boundaries, private-key rejection, portable
116
- configuration and the absence of false server verification. The ordinary
117
- source pattern is checked with a supplied resolver. Editor/browser tests cover
118
- save/reload, reference validation, actual image loading from a simulated CDN
119
- and a simulated missing-image failure. No live provider use or generated sample
120
- application is needed.
115
+ Logo.dev sets `configurationOnly`: an editor shows no account-connect controls,
116
+ and setup commands are refused before Env preparation or application execution.
117
+ Constructing an image URL never records Connected; image delivery is observed in
118
+ the browser.
121
119
 
122
-
123
- ## Credential guidance review (2026-09-12)
124
-
125
- Current provider key and image documentation were checked against the captured
126
- publishable-key field. The inline instructions now give the direct dashboard
127
- URL, exact reference and Env handoff, public/private distinction, domain patterns,
128
- referrer behavior and support-assisted rotation. The existing image library and
129
- public-image composition pattern remain the owners of URL generation and wiring.
130
- The first rendered review exposed an account-connect button because the editor
131
- consumes configurationOnly metadata rather than runtimeKind. Logo.dev now sets
132
- that existing flag: the editor omits account controls and the server refuses
133
- setup commands before Env preparation or application execution. Two targeted
134
- public-editor tests cover this rule for Logo.dev and Google Analytics.
135
- All four focused library tests passed, including private-key rejection, fixed-origin URL
136
- construction, portable configuration and selective reference resolution. Rendered guidance and simulated image delivery passed: the actual editor persists the reference through reload, links to Env and the provider guide, and offers no account-connect controls. Browser image load/error and origin-referrer behavior were checked with a simulated CDN. All five steps were visually reviewed at 496px width; no live provider or generated-app claim.
137
-
138
- ## Lookup coverage — 2026-09-13
120
+ ## Lookup inputs
139
121
 
140
122
  Supply exactly one of `domain`, `ticker` or `email` to the same URL helper.
141
123
  `{ ticker: "SHEL.L" }` uses the provider's ticker endpoint with an exchange suffix;
@@ -143,7 +125,7 @@ Supply exactly one of `domain`, `ticker` or `email` to the same URL helper.
143
125
  lookup. The personal part of the email never enters the URL. These are ordinary
144
126
  per-image application inputs, not project credential settings. The same source
145
127
  pattern resolves the publishable key; other frameworks can construct equivalent
146
- URLs without a Node runtime or Vibe64 service.
128
+ URLs without a Node runtime.
147
129
  [Ticker endpoint](https://www.logo.dev/docs/logo-images/ticker).
148
130
 
149
131
  **LIMITATIONS:** No private brand search/enrichment, crypto or ISIN lookup, avatar
package/docs/mailgun.md CHANGED
@@ -41,8 +41,7 @@ the number of received items to retrieve another page.
41
41
  Use the [API-key pattern](../patterns/api-key-connection/PATTERN.md) with the file
42
42
  store. Application code can use the operations below with the same configured connection. Local disconnect does not revoke the account key. Replace
43
43
  the Env value when rotating credentials, and delete obsolete keys in Mailgun.
44
- Tests cover both regional origins, HTTP Basic headers, pagination, re-verification,
45
- file restart and rejected responses without accessing a real mailbox or account.
44
+ Verification is a domain-list read; it sends no email and changes no DNS.
46
45
 
47
46
  ## Automation and application ownership
48
47
 
@@ -57,18 +56,6 @@ Each application supplies credentials for its intended Mailgun account. Keys
57
56
  within one account may share capacity and billing. The application operator
58
57
  owns account selection and budgets; key names alone do not isolate quotas.
59
58
 
60
-
61
- ## Credential guidance review (2026-09-12)
62
-
63
- Current provider key-role, credential-type and domain-list documentation were
64
- checked against the captured private key and US/EU fields. Inline setup now
65
- explains the exact dashboard flow, admin requirement, Analyst where available,
66
- one-time secret display, account-key distinction, region and named Env handoff.
67
- Verification remains a domain-list read; it sends no email and changes no DNS.
68
- Three focused test cases passed (1.15s), including the shared regional-destination
69
- regression: changing region requires verification before credentials reach the
70
- new allowed origin. No runtime change was needed. The controlled browser review passed: the EU region and MAILGUN_API_KEY reference persist after reload, Env and provider guide links are present, and simulated connect/verify/disconnect work. All six steps were visually inspected at 496px width. No live account, email sending or generated application was exercised.
71
-
72
59
  ## Sending and domain setup
73
60
 
74
61
  1. In Mailgun, open **Send → Sending → Domains → Add new domain**. Enter a
package/docs/mapbox.md CHANGED
@@ -123,14 +123,6 @@ that loads the map. Mapbox does not accept wildcard characters in these
123
123
  restrictions; consult its matching rules when adding subdomains or custom
124
124
  domains. No OAuth callback is involved in these token operations.
125
125
 
126
- ## Focused evidence
127
-
128
- Six fixture tests cover file restart, rotation, ownership, optional references,
129
- HTTP-200 validity failures, coordinates, query bounds, attribution, permanent
130
- intent and permission/quota failures. The editor test covers both reference
131
- fields, invalid raw values, save/reload and removing the optional value.
132
- No live Mapbox account, geocoding use or generated application is exercised.
133
-
134
126
  ## Browser-only maps and native SDK composition
135
127
 
136
128
  Select **Browser maps only** for `settings.usage: "browser"`, authentication
@@ -199,9 +199,10 @@ the runtime does not perform them automatically or request admin rights.
199
199
  ## Application ownership, callbacks and capacity
200
200
 
201
201
  The application owner creates the provider registration and stores its secret
202
- in the application's private Env. Public Vibe64, Vibe64 Online and CLI users use
203
- this same ownership model. The configuration file holds the client ID and Env
204
- references; the editor does not own the application's grants.
202
+ in the application's private Env. Every editor and CLI uses this same
203
+ [ownership model](../../connectors-core/docs/online-setup.md): the configuration
204
+ file holds the client ID and Env references; the editor does not own the
205
+ application's grants.
205
206
 
206
207
  Register the exact callback implemented by the application. For a hosted project,
207
208
  start with its assigned application URL and append the implemented callback path.
@@ -221,16 +222,6 @@ still requires the relevant approval and configuration.
221
222
  Separate registrations support different credentials and policies. They do not
222
223
  partition a customer's shared Fabric capacity or guarantee separate quotas.
223
224
 
224
- ## Verification boundary
225
-
226
- Local automated tests use controlled HTTP responses and encrypted temporary files.
227
- They cover both grants, endpoint/tenant binding, variables, partial errors,
228
- renewal, authorization, malformed responses, cancellation and configuration.
229
- They create no Entra applications, service principals, Fabric resources or sample
230
- apps and execute no live documents. Real tenant policy, consent, capacity, API
231
- endpoint reachability, root-type verification and customer schemas remain live
232
- acceptance checks requiring the owner's credentials.
233
-
234
225
  ## Editor credential handoff
235
226
 
236
227
  Save the Application ID, tenant GUID, endpoint and reference fields first. The
@@ -247,3 +238,49 @@ connections inside the application. Saving alone grants neither API nor source
247
238
  access. Both methods use app-owned credentials and persistent grants.
248
239
 
249
240
  **LIMITATIONS (acceptance review):** No automatic table browser, schema-specific client, subscriptions, automatic pagination or automatic assistant tool attachment. Example: the app can execute an inventory query using its real schema; this does not provide an inventory dashboard. Both authentication modes and operation/error handling have fixture proof, not live Fabric resource proof.
241
+
242
+ ## OAuth pattern composition: Microsoft Fabric GraphQL
243
+
244
+ Import `microsoftFabricProvider` from
245
+ `@jskit-ai/connectors-catalog/server/microsoft-fabric`. Read the package's
246
+ this guide before wiring it. Use its portable configuration with
247
+ an exact directory GUID, Application (client) ID, secret reference and the
248
+ existing GraphQL API endpoint. Do not reuse the ordinary Microsoft Graph
249
+ providers or their permissions: Fabric uses a different resource.
250
+
251
+ User consent uses `authorization_code`, the confidential `client_secret_post`
252
+ method, a callback reference, delegated
253
+ `https://analysis.windows.net/powerbi/api/GraphQLApi.Execute.All` and optional
254
+ `offline_access`. Service accounts use `client_credentials`, the same client
255
+ authentication method, and `https://api.fabric.microsoft.com/.default`. They
256
+ have no callback, user refresh token or per-user ownership. Switching grants
257
+ in the shared UI removes incompatible scopes; choose the new permission before
258
+ saving. The CLI parser enforces the same contract.
259
+
260
+ Reuse `createConnectionService` or `ConnectorsFeature`, the file connection store
261
+ and existing authorization/reference resolver. Call `connectClientCredentials`
262
+ or `connectors.verifyClientCredentials` for a service account; use the ordinary
263
+ authorization start/callback methods for user consent. The library owns token
264
+ exchange, renewal, locking, scope validation and encrypted storage. The app owns
265
+ the authenticated owner mapping and its allowed GraphQL documents.
266
+
267
+ Verification runs `connection.check`, a fixed root `__typename` query. It does
268
+ not establish access to every table. `schema.types` uses explicit introspection,
269
+ which a Fabric workspace administrator must enable; an exported SDL is an
270
+ alternative for authoring. `graphql.execute` accepts a document, optional JSON
271
+ variables and an operation name and returns one response. It can execute writes.
272
+ Keep documents in app server code, validate the permitted variables, and use
273
+ the shared authorization callback to restrict each operation. Do not present
274
+ this as a read-only proxy or accept arbitrary documents from app users. Request
275
+ pagination in the app's chosen document; no automatic traversal is implemented.
276
+
277
+ GraphQL errors, including partial successes, fail without exposing provider
278
+ messages. A failed mutation may have changed data; the runtime does not replay
279
+ it. Cancellation is local interruption, not proof of remote rollback. Token
280
+ renewal persists before the document executes, including when that execution
281
+ fails. Changing tenant, API endpoint, client or grant requires reconnecting.
282
+
283
+ User consent returns to the application's own implemented and registered callback.
284
+ Service access has no callback. Entra registrations, tenant enablement, API
285
+ permissions and source access remain administrator-owned provisioning. Distinct registration names do not isolate Fabric capacity. The application
286
+ owns login separately and keeps its client secret in private Env.
@@ -141,3 +141,36 @@ Rotate expiring registration secrets in Env before removing old credentials.
141
141
  Do not log token exchange bodies. Tests cover code/state consumption, PKCE,
142
142
  permission failures, request boundaries, encrypted file restart and refresh
143
143
  rotation for all eight providers.
144
+
145
+ ## OAuth pattern composition: Microsoft document
146
+
147
+ Import `microsoftWordProvider` or `microsoftPowerPointProvider` from the matching
148
+ `@jskit-ai/connectors-catalog/server/microsoft-word` or
149
+ `@jskit-ai/connectors-catalog/server/microsoft-powerpoint` export. Use that provider
150
+ in the [OAuth pattern](../patterns/oauth-connection/PATTERN.md) composition and the [Word](microsoft-word.md) or [PowerPoint](microsoft-powerpoint.md) guide's JSON. A `files` slot requests
151
+ `Files.Read` and, for refresh capability, `offline_access`. Set `settings.tenantId`
152
+ to an allowed audience or directory GUID matching the registration. The shared
153
+ library uses it for authorization, token exchange and refresh; changing the
154
+ tenant requires reconnecting. Never build token URLs from unvalidated user input.
155
+
156
+ After consent and verification, the host can call the same service:
157
+
158
+ ```js
159
+ const page = await connections.invoke({
160
+ context, integrationId: "files", operation: "items.list",
161
+ input: { folderId, pageSize: 25, nextLink }
162
+ });
163
+ const file = await connections.invoke({
164
+ context, integrationId: "files", operation: "items.get", input: { itemId }
165
+ });
166
+ ```
167
+
168
+ The host supplies authenticated `context`, an optional `folderId`/`nextLink`
169
+ and the chosen `itemId`. Pass the original folder ID with every continuation.
170
+ Keep `page["@odata.nextLink"]` even if `page.value` is empty: the adapter filters
171
+ an upstream page by file extension, so the next page can contain matching files.
172
+ Display folder and file metadata through the app's existing UI. The returned
173
+ `file` is metadata, not document contents; returned web URLs do not authorize
174
+ additional downloads. These adapters implement no document editing, recursive
175
+ crawl or app login. Leave paging and named-operation HTTP ownership in JSKIT;
176
+ the app owns its file selection, presentation and access policy.
@@ -91,15 +91,6 @@ See the [callback guide](../../connectors-core/docs/oauth-callbacks.md) for doma
91
91
  changes and reconnect behavior. Keep the selected Microsoft tenant/audience
92
92
  consistent with the provider registration.
93
93
 
94
- ## Evidence and limits
95
-
96
- Focused fixtures cover consent, cancellation, encrypted restart, refresh,
97
- reduced permissions, owner isolation, tenant changes, folder paging, empty
98
- filtered pages, metadata validation and controlled provider failures. Provider
99
- HTTP is simulated. No live account, provider registration or generated app is
100
- used. Provider-console administration and live account acceptance remain
101
- outside this fixture evidence.
102
-
103
94
  ## Editor credential handoff
104
95
 
105
96
  The inline guide supplies Entra registration, account audience, Web callback,
@@ -110,10 +101,8 @@ delegated permissions, secret Value and expiry steps. Save
110
101
  the prepared application runtime. Per-user connections belong to individual
111
102
  users inside that application. No Vibe64 gateway or shared registration is used.
112
103
 
113
- ## Existing-scope closeout — 13 September 2026
104
+ ## Scope and limitations
114
105
 
115
106
  Delegated project-owned OAuth browses default-drive folders and PowerPoint candidate filenames and fetches selected file metadata, with bounded paging, tenant/audience configuration and refreshed private grants.
116
107
 
117
- No slide/presentation content reading, creation/editing, upload/download, conversion, macros, sharing, recursive search, arbitrary drive/site selection or file format validation. Filename extension filtering is not content inspection; filtered empty pages can still have a continuation. No app-only/client-credentials or device-code grant, application login or automatic remote consent revocation. The app owns callback routes, account connection UI, authorization and file-picker/pagination behavior. Exact Lovable shared-form fields/scopes remain unverified because the saved shared-form reference is a loading placeholder. To extend: use supported native presentation tooling and file transfer, proving actual slide changes, conflict handling and format preservation; no invented Graph slide-editing endpoint. 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.
118
-
119
- 7 provider-specific source and 7 installed-package cases passed, plus 2 shared Microsoft tenant checks in each 16-test Word/PowerPoint run on September 13. September 12 rendered guidance/form/lifecycle evidence at 496px is retained; no new phone or browser run.
108
+ No slide/presentation content reading, creation/editing, upload/download, conversion, macros, sharing, recursive search, arbitrary drive/site selection or file format validation. Filename extension filtering is not content inspection; filtered empty pages can still have a continuation. No app-only/client-credentials or device-code grant, application login or automatic remote consent revocation. The app owns callback routes, account connection UI, authorization and file-picker/pagination behavior. To extend: use supported native presentation tooling and file transfer, proving actual slide changes, conflict handling and format preservation; no invented Graph slide-editing endpoint. Assistant tool attachment requires explicit host integration. Other frameworks use the same project configuration and their own native tools; JSKIT is optional.
@@ -91,15 +91,6 @@ See the [callback guide](../../connectors-core/docs/oauth-callbacks.md) for doma
91
91
  changes and reconnect behavior. Keep the selected Microsoft tenant/audience
92
92
  consistent with the provider registration.
93
93
 
94
- ## Evidence and limits
95
-
96
- Focused fixtures cover consent, cancellation, encrypted restart, refresh,
97
- reduced permissions, owner isolation, tenant changes, folder paging, empty
98
- filtered pages, metadata validation and controlled provider failures. Provider
99
- HTTP is simulated. No live account, provider registration or generated app is
100
- used. Provider-console administration and live account acceptance remain outside
101
- this fixture evidence.
102
-
103
94
  ## Editor credential handoff
104
95
 
105
96
  The inline guide supplies Entra registration, account audience, Web callback,
@@ -110,10 +101,8 @@ Shared/assistant **Connect account** invokes the prepared application runtime.
110
101
  Per-user connections belong to individual users inside that application.
111
102
  No Vibe64 gateway or shared registration is used.
112
103
 
113
- ## Existing-scope closeout — 13 September 2026
104
+ ## Scope and limitations
114
105
 
115
106
  Delegated project-owned OAuth browses default-drive folders and Word candidate filenames and fetches selected file metadata, with bounded paging, tenant/audience configuration and refreshed private grants.
116
107
 
117
- No document content reading, creation/editing, upload/download, conversion, macros, sharing, recursive search, arbitrary drive/site selection or document format validation. Filename extension filtering is not content inspection; filtered empty pages can still have a continuation. No app-only/client-credentials or device-code grant, application login or automatic remote consent revocation. The app owns callback routes, account connection UI, authorization and file-picker/pagination behavior. Exact Lovable shared-form fields/scopes remain unverified because the saved shared-form reference is a loading placeholder. To extend: choose supported native document tooling, implement content/file transfers with conflict and format preservation tests; do not invent Graph document-editing endpoints. 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.
118
-
119
- 7 provider-specific source and 7 installed-package cases passed, plus 2 shared Microsoft tenant checks in each 16-test Word/PowerPoint run on September 13. September 12 rendered guidance/form/lifecycle evidence at 496px is retained; no new phone or browser run.
108
+ No document content reading, creation/editing, upload/download, conversion, macros, sharing, recursive search, arbitrary drive/site selection or document format validation. Filename extension filtering is not content inspection; filtered empty pages can still have a continuation. No app-only/client-credentials or device-code grant, application login or automatic remote consent revocation. The app owns callback routes, account connection UI, authorization and file-picker/pagination behavior. To extend: choose supported native document tooling, implement content/file transfers with conflict and format preservation tests; do not invent Graph document-editing endpoints. Assistant tool attachment requires explicit host integration. Other frameworks use the same project configuration and their own native tools; JSKIT is optional.
package/docs/miro.md CHANGED
@@ -90,8 +90,8 @@ For an application integration, use the application's assigned hosting URL as
90
90
  the initial origin and its implemented callback path. Store the exact callback
91
91
  in its Env reference and provider registration. A domain change requires updating
92
92
  both values if the callback URL changes; retain the application identity and its
93
- persistent grants when moving hosts. Public Vibe64, Online and CLI users supply
94
- their own registrations through this same contract.
93
+ persistent grants when moving hosts. Every editor and CLI supplies its own
94
+ registrations through this same contract.
95
95
  See the [callback guide](../../connectors-core/docs/oauth-callbacks.md).
96
96
 
97
97
  The application or explicitly authorized assistant host owns the client secret
package/docs/oura.md CHANGED
@@ -124,9 +124,10 @@ An AI can prepare JSON, callback handlers and runtime composition after an owner
124
124
  creates and authorizes the registration; approval remains a provider process.
125
125
 
126
126
  The application owner creates the provider registration and stores its secret
127
- in the application's private Env. Public Vibe64, Vibe64 Online and CLI users use
128
- this same ownership model. The configuration file holds the client ID and Env
129
- references; the editor does not own the application's grants.
127
+ in the application's private Env. Every editor and CLI uses this same
128
+ [ownership model](../../connectors-core/docs/online-setup.md): the configuration
129
+ file holds the client ID and Env references; the editor does not own the
130
+ application's grants.
130
131
 
131
132
  Register the exact callback implemented by the application. For a hosted project,
132
133
  start with its assigned application URL and append the implemented callback path.