@opencxh/domain 1.171.0 → 1.172.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/entities/activity/blocks.d.ts +30 -30
- package/dist/entities/activity/catalog.d.ts +63 -86
- package/dist/entities/activity/descriptor.d.ts +31 -32
- package/dist/entities/activity/index.d.ts +2 -2
- package/dist/entities/activity/preview.d.ts +7 -7
- package/dist/entities/activity/resolve.d.ts +37 -38
- package/dist/entities/activity/types.d.ts +34 -34
- package/dist/entities/ai-account/types.d.ts +3 -3
- package/dist/entities/ai-account/vendors.d.ts +25 -32
- package/dist/entities/ai-budget/types.d.ts +12 -8
- package/dist/entities/ai-conversation/types.d.ts +12 -12
- package/dist/entities/ai-profile/types.d.ts +21 -26
- package/dist/entities/ai-settings/types.d.ts +12 -13
- package/dist/entities/analytics/dashboard.d.ts +1 -1
- package/dist/entities/analytics/index.d.ts +4 -4
- package/dist/entities/analytics/source.d.ts +1 -1
- package/dist/entities/analytics/usage.d.ts +23 -28
- package/dist/entities/artifact/blocks.d.ts +54 -69
- package/dist/entities/artifact/markdown.d.ts +2 -3
- package/dist/entities/artifact/types.d.ts +47 -55
- package/dist/entities/assignment/types.d.ts +74 -88
- package/dist/entities/calendar-event/types.d.ts +1 -1
- package/dist/entities/channel/index.d.ts +1 -1
- package/dist/entities/channel/signature.d.ts +8 -9
- package/dist/entities/communication/index.d.ts +1 -1
- package/dist/entities/communication/message-template.d.ts +1 -1
- package/dist/entities/company/types.d.ts +1 -1
- package/dist/entities/contact/index.d.ts +1 -1
- package/dist/entities/contact/provider.d.ts +2 -1
- package/dist/entities/contact/types.d.ts +1 -10
- package/dist/entities/custom-field-def/types.d.ts +14 -14
- package/dist/entities/external-identity/types.d.ts +45 -50
- package/dist/entities/interaction/index.d.ts +1 -1
- package/dist/entities/interaction/types.d.ts +44 -47
- package/dist/entities/live-lens/types.d.ts +39 -44
- package/dist/entities/mcp/types.d.ts +53 -57
- package/dist/entities/memory/alias.d.ts +7 -7
- package/dist/entities/memory/browse.d.ts +21 -21
- package/dist/entities/memory/ingest.d.ts +26 -17
- package/dist/entities/memory/item.d.ts +53 -58
- package/dist/entities/memory/kind.d.ts +26 -26
- package/dist/entities/memory/query.d.ts +49 -51
- package/dist/entities/playbook/actor.d.ts +20 -19
- package/dist/entities/playbook/assignment.d.ts +54 -63
- package/dist/entities/playbook/index.d.ts +2 -2
- package/dist/entities/playbook/labels.d.ts +4 -4
- package/dist/entities/playbook/trigger-vars.d.ts +14 -15
- package/dist/entities/playbook/types.d.ts +173 -303
- package/dist/entities/resource-reminder/types.d.ts +8 -9
- package/dist/entities/scope/actor.d.ts +16 -0
- package/dist/entities/{note → scope}/index.d.ts +1 -0
- package/dist/entities/scope/scope.test.d.ts +1 -0
- package/dist/entities/scope/types.d.ts +53 -0
- package/dist/entities/task/types.d.ts +1 -1
- package/dist/entities/time-entry/duration.d.ts +11 -11
- package/dist/entities/time-entry/types.d.ts +60 -60
- package/dist/entities/time-entry/work-type.d.ts +21 -24
- package/dist/entities/topic/examples.d.ts +26 -27
- package/dist/entities/topic/scope.d.ts +11 -12
- package/dist/entities/topic/types.d.ts +28 -28
- package/dist/entities/user/types.d.ts +24 -28
- package/dist/entities/webhook/types.d.ts +6 -6
- package/dist/entities/work/keys.d.ts +25 -26
- package/dist/entities/work/ladder.d.ts +48 -52
- package/dist/entities/work/types.d.ts +109 -115
- package/dist/index.cjs +6 -6
- package/dist/index.d.ts +29 -33
- package/dist/index.js +1391 -1254
- package/dist/platform/account.d.ts +34 -38
- package/dist/platform/ai-tools.d.ts +48 -52
- package/dist/platform/api.d.ts +9 -8
- package/dist/platform/author.d.ts +7 -9
- package/dist/platform/capabilities.d.ts +3 -3
- package/dist/platform/communication.d.ts +163 -204
- package/dist/platform/context.d.ts +8 -8
- package/dist/platform/identity.d.ts +16 -19
- package/dist/platform/kernel.d.ts +1 -1
- package/dist/platform/manifest.d.ts +2 -2
- package/dist/platform/media.d.ts +13 -15
- package/dist/platform/permission.d.ts +39 -0
- package/dist/platform/permission.test.d.ts +1 -0
- package/dist/platform/presence.d.ts +30 -30
- package/dist/platform/provider.d.ts +14 -76
- package/dist/platform/resource-source.d.ts +43 -45
- package/dist/platform/resource.d.ts +17 -23
- package/dist/platform/scope.d.ts +36 -62
- package/dist/platform/services.d.ts +4 -4
- package/dist/platform/settings.d.ts +0 -14
- package/dist/platform/storage.d.ts +2 -2
- package/dist/platform/sync-source.d.ts +196 -216
- package/dist/platform/transcript-cadence.d.ts +37 -41
- package/dist/platform/ui.d.ts +6 -6
- package/dist/text/endpoint.d.ts +11 -27
- package/package.json +3 -5
- package/dist/entities/note/types.d.ts +0 -14
- package/dist/entities/shopify/index.d.ts +0 -1
- package/dist/entities/shopify/types.d.ts +0 -79
- package/dist/platform/lifecycle.d.ts +0 -13
- package/dist/platform/reactive.d.ts +0 -13
- package/dist/platform/sdk.d.ts +0 -182
- package/dist/platform/service-registry.d.ts +0 -13
|
@@ -1,34 +1,30 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Layer 1 of the integration layers: **Account** — the credential.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* |
|
|
4
|
+
* Four layers, and this is the bottom one:
|
|
5
|
+
* | Layer | Question | Word |
|
|
6
6
|
* |---|---|---|
|
|
7
|
-
* | 1 Credential |
|
|
8
|
-
* | 2 Connector |
|
|
9
|
-
* | 3 Capability |
|
|
10
|
-
* | 4 Usage |
|
|
7
|
+
* | 1 Credential | may I get in? | **Account** (`ManagedAccount`) |
|
|
8
|
+
* | 2 Connector | where is it, which protocol? | **Connector** (`McpServerEntity`) |
|
|
9
|
+
* | 3 Capability | what can I do with it? | **Source** (`sync-source`, `memory-source`, …) |
|
|
10
|
+
* | 4 Usage | is it on, with which settings? | **Connection** (`SyncConnection`, `Channel`) |
|
|
11
11
|
*
|
|
12
|
-
* `ManagedAccount` is
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
12
|
+
* `ManagedAccount` is a **platform** primitive, not a comms entity — that the type historically
|
|
13
|
+
* sat in `entities/communication/types.ts` was only because the *store* lives there. The store
|
|
14
|
+
* stays in comms (the scope guard and the OAuth orchestrator are there); the type belongs here,
|
|
15
|
+
* because ai, mail, ftp, s3, google and microsoft all hang off it.
|
|
16
16
|
*
|
|
17
|
-
*
|
|
17
|
+
* **Not to be confused with a Registration.** `google_account`, `microsoft_account`,
|
|
18
|
+
* `shopify_account`, `slack_account` and `meta_app` are NOT accounts in this sense. Those are
|
|
19
|
+
* **registrations**: the clientId/clientSecret the organisation identifies itself to the vendor
|
|
20
|
+
* with. One registration carries N accounts. They only share the word.
|
|
18
21
|
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* `userId` afwezig/`null` = org-breed, gedeeld. Gezet = persoonlijk, van die ene gebruiker.
|
|
27
|
-
* Er is bewust **geen** `ownerScope` en **geen** `createdBy` op een credential:
|
|
28
|
-
* - `ownerScope` (`personal`/`team`/`org`) is de as van een *resource* — met wie deel ik dit
|
|
29
|
-
* contact, werkitem of geheugen. Een token heeft geen teamvariant.
|
|
30
|
-
* - "wat eist de vendor" (één gedeeld token vs. iedereen zijn eigen) is een eigenschap van de
|
|
31
|
-
* **connector**, niet van de accountrij: zie `credentialScope` in `entities/mcp/types.ts`.
|
|
22
|
+
* **Scope: `userId` is the only ownership axis.** Absent/`null` = org-wide, shared. Set =
|
|
23
|
+
* personal, of that one user. There is deliberately **no** `ownerScope` and **no** `createdBy` on
|
|
24
|
+
* a credential: `ownerScope` (`personal`/`team`/`org`) is the axis of a *resource* — who do I
|
|
25
|
+
* share this contact, work item or memory with — and a token has no team variant; and "what does
|
|
26
|
+
* the vendor demand" (one shared token vs. everyone their own) is a property of the **connector**,
|
|
27
|
+
* not of the account row: see `credentialScope` in `entities/mcp/types.ts`.
|
|
32
28
|
*/
|
|
33
29
|
export type AuthState = {
|
|
34
30
|
type: "oauth2";
|
|
@@ -41,16 +37,16 @@ export type AuthState = {
|
|
|
41
37
|
} | {
|
|
42
38
|
type: "password";
|
|
43
39
|
username: string;
|
|
44
|
-
/**
|
|
40
|
+
/** Raw password (no secret store in the repo). Internal path only. */
|
|
45
41
|
password: string;
|
|
46
|
-
/**
|
|
42
|
+
/** Future secret-store reference instead of the raw `password`. */
|
|
47
43
|
passwordRef?: string;
|
|
48
44
|
} | {
|
|
49
45
|
type: "certificate";
|
|
50
46
|
certRef: string;
|
|
51
47
|
} | {
|
|
52
48
|
type: "apikey";
|
|
53
|
-
/**
|
|
49
|
+
/** Raw API key (no secret store in the repo). Internal path only. */
|
|
54
50
|
apiKey: string;
|
|
55
51
|
} | {
|
|
56
52
|
type: "static";
|
|
@@ -60,29 +56,29 @@ export interface ManagedAccount {
|
|
|
60
56
|
id: string;
|
|
61
57
|
organizationId: string;
|
|
62
58
|
/**
|
|
63
|
-
*
|
|
64
|
-
*
|
|
59
|
+
* Absent/`null` = org-wide shared account. Set = personal account of that user. The only
|
|
60
|
+
* ownership axis at this level — see the module doc.
|
|
65
61
|
*/
|
|
66
62
|
userId?: string;
|
|
67
63
|
providerId: string;
|
|
68
|
-
/** "oauth2" | "imap" | "sip" | "webhook" | "apikey" | provider
|
|
64
|
+
/** "oauth2" | "imap" | "sip" | "webhook" | "apikey" | a provider's own string */
|
|
69
65
|
protocol: string;
|
|
70
66
|
displayName: string;
|
|
71
67
|
status: ManagedAccountStatus;
|
|
72
68
|
auth: AuthState;
|
|
73
|
-
/** Provider-
|
|
69
|
+
/** Provider-specific metadata (tenantId, externalUserId, scope flags). */
|
|
74
70
|
metadata: Record<string, unknown>;
|
|
75
71
|
createdAt?: number;
|
|
76
72
|
updatedAt?: number;
|
|
77
73
|
}
|
|
78
74
|
/**
|
|
79
|
-
* Public
|
|
80
|
-
*
|
|
75
|
+
* Public view without tokens — what `account/list` and `account/get` return to the UI and
|
|
76
|
+
* comm-server. `auth` is stripped down to its type.
|
|
81
77
|
*
|
|
82
|
-
* **
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
78
|
+
* **Read asymmetry, and this is the trap:** the public `account/list` filters on the *current*
|
|
79
|
+
* user, so a job or cron (which has no session) sees nothing there — not even org-wide rows.
|
|
80
|
+
* Server-side code that needs to see accounts always uses the `account-internal/` route
|
|
81
|
+
* (`listManagedAccountsInternal` / `getManagedAccountInternal`).
|
|
86
82
|
*/
|
|
87
83
|
export type ManagedAccountPublic = Omit<ManagedAccount, "auth"> & {
|
|
88
84
|
authType: AuthState["type"];
|
|
@@ -105,20 +105,20 @@ export interface AiToolResult {
|
|
|
105
105
|
sources?: ToolSource[];
|
|
106
106
|
}
|
|
107
107
|
/**
|
|
108
|
-
*
|
|
108
|
+
* Stable key for "I have already shown this".
|
|
109
109
|
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
*
|
|
110
|
+
* The order `id` → `url` → `title` descends in reliability: an id is stable, a url usually, a title
|
|
111
|
+
* only for lack of both. That last one is deliberately not an error — a memory item has no page and
|
|
112
|
+
* sometimes no id, and then the title is the only identity it has. A key is never empty, because
|
|
113
|
+
* then the same item would come back every round.
|
|
114
114
|
*/
|
|
115
115
|
export declare function sourceKey(source: ToolSource): string;
|
|
116
116
|
/**
|
|
117
|
-
*
|
|
117
|
+
* Which of these are new, with their keys.
|
|
118
118
|
*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
121
|
-
*
|
|
119
|
+
* For a surface that updates itself unasked (live assist) this is the difference between "three
|
|
120
|
+
* cards" and "the same three cards, every eight seconds again". Deduplicates within the payload
|
|
121
|
+
* itself too: two lanes can surface the same article.
|
|
122
122
|
*/
|
|
123
123
|
export declare function freshSources(sources: readonly ToolSource[], alreadyShown?: readonly string[]): {
|
|
124
124
|
sources: ToolSource[];
|
|
@@ -127,83 +127,79 @@ export declare function freshSources(sources: readonly ToolSource[], alreadyShow
|
|
|
127
127
|
/**
|
|
128
128
|
* Returned by an app's `GET /provider/ai-tools/describe`.
|
|
129
129
|
*
|
|
130
|
-
*
|
|
131
|
-
*
|
|
132
|
-
*
|
|
133
|
-
*
|
|
130
|
+
* Both extra fields are optional and additive: a tool that does not set them behaves exactly as
|
|
131
|
+
* before. They exist so generic layers (the suggest gate, the scope gate in
|
|
132
|
+
* `registerAiToolProvider`) can judge a tool **without knowing it** — today that knowledge sits in
|
|
133
|
+
* `AIProfile.toolPolicy` with "unknown = write".
|
|
134
134
|
*/
|
|
135
135
|
export interface AiToolDescriptor extends AiTool {
|
|
136
|
-
/**
|
|
136
|
+
/** Does this tool mutate anything? Drives the suggest gate. Absent = unknown. */
|
|
137
137
|
access?: "read" | "write";
|
|
138
138
|
/**
|
|
139
|
-
*
|
|
140
|
-
*
|
|
141
|
-
*
|
|
139
|
+
* The resource this tool works on, so a generic gate can authorize it:
|
|
140
|
+
* `{ param: "interactionId", kind: "interaction" }` means "authorize
|
|
141
|
+
* `interaction:<args.interactionId>` for the acting identity".
|
|
142
142
|
*/
|
|
143
143
|
scope?: {
|
|
144
144
|
param: string;
|
|
145
145
|
kind: string;
|
|
146
146
|
};
|
|
147
147
|
/**
|
|
148
|
-
* `"interactive"` =
|
|
149
|
-
*
|
|
150
|
-
*
|
|
151
|
-
*
|
|
152
|
-
* overal.
|
|
148
|
+
* `"interactive"` = this tool needs a watching user, because it delivers to a client surface (an
|
|
149
|
+
* SSE to an open window, say) instead of persisting something. Unattended runs are not offered
|
|
150
|
+
* such tools: otherwise the model reports success for something that lands nowhere. Absent =
|
|
151
|
+
* works everywhere.
|
|
153
152
|
*/
|
|
154
153
|
surface?: "interactive";
|
|
155
154
|
/**
|
|
156
|
-
*
|
|
155
|
+
* Does this tool reach **outside** the organisation, or stay internal?
|
|
157
156
|
*
|
|
158
|
-
* `"outward"` =
|
|
159
|
-
*
|
|
160
|
-
*
|
|
161
|
-
* hoort een mens tussen te staan.
|
|
157
|
+
* `"outward"` = something leaves the building or appears at a third party: sending a mail,
|
|
158
|
+
* creating a ticket, posting in Slack. Two autonomous playbooks doing that at once on the same
|
|
159
|
+
* conversation deliver duplicate messages to a customer, and a human belongs in between.
|
|
162
160
|
*
|
|
163
|
-
* `"internal"` =
|
|
164
|
-
*
|
|
165
|
-
*
|
|
161
|
+
* `"internal"` = the result stays inside the platform: an attribute, a memory item, a note. Two
|
|
162
|
+
* playbooks doing that at once do not get in each other's way — different rows, and the store
|
|
163
|
+
* already handles the concurrency.
|
|
166
164
|
*
|
|
167
|
-
* **
|
|
168
|
-
*
|
|
169
|
-
*
|
|
165
|
+
* **Absent means `"outward"`.** Deliberately the careful side: a tool that declares nothing
|
|
166
|
+
* should not silently count as harmless. See `shouldDemoteAuto` in the playbook engine, which
|
|
167
|
+
* decides the suggest downgrade on this.
|
|
170
168
|
*/
|
|
171
169
|
effect?: "internal" | "outward";
|
|
172
170
|
}
|
|
173
171
|
/**
|
|
174
|
-
* Body
|
|
175
|
-
*
|
|
172
|
+
* Body of `POST /provider/ai-tools/invoke`. Replaces five inline structural types (the caller in
|
|
173
|
+
* the ai app plus the four receiving apps).
|
|
176
174
|
*
|
|
177
|
-
*
|
|
178
|
-
*
|
|
179
|
-
*
|
|
175
|
+
* The acting identity is **not** in here: it travels as a header (`ACTING_IDENTITY_HEADER` in
|
|
176
|
+
* `@opencxh/platform-api`). Phase 0 measured that this works from a request, a job and a
|
|
177
|
+
* subscriber — so no second channel.
|
|
180
178
|
*/
|
|
181
179
|
export interface AiToolInvokeRequest {
|
|
182
180
|
tool: string;
|
|
183
181
|
arguments?: Record<string, unknown>;
|
|
184
182
|
/**
|
|
185
|
-
*
|
|
186
|
-
*
|
|
183
|
+
* What already happened in *this* turn, for a tool that needs not only its own arguments but
|
|
184
|
+
* also the context it is called in.
|
|
187
185
|
*
|
|
188
|
-
*
|
|
189
|
-
*
|
|
186
|
+
* Optional and additive, like the extra fields on {@link AiToolDescriptor}: a tool ignoring this
|
|
187
|
+
* behaves exactly as before.
|
|
190
188
|
*
|
|
191
|
-
*
|
|
192
|
-
*
|
|
193
|
-
*
|
|
194
|
-
*
|
|
195
|
-
* Het model ernaar laten raden levert verzonnen bronvermelding op, precies wat
|
|
196
|
-
* `ToolSource` moest voorkomen.
|
|
189
|
+
* The reason is provenance that holds up. The runner already collects the {@link ToolSource}s of
|
|
190
|
+
* *all* tools in a turn, but the invoke contract carried only `{tool, arguments}` — so a tool
|
|
191
|
+
* that *stores* something (an artifact, a memory item) could not record what it was built from.
|
|
192
|
+
* Letting the model guess yields invented provenance, exactly what `ToolSource` had to prevent.
|
|
197
193
|
*/
|
|
198
194
|
turn?: AiToolTurnContext;
|
|
199
195
|
}
|
|
200
|
-
/**
|
|
196
|
+
/** See {@link AiToolInvokeRequest.turn}. */
|
|
201
197
|
export interface AiToolTurnContext {
|
|
202
|
-
/**
|
|
198
|
+
/** The conversation this turn runs in, when there is one. */
|
|
203
199
|
conversationId?: string;
|
|
204
200
|
/**
|
|
205
|
-
*
|
|
206
|
-
*
|
|
201
|
+
* What has been consulted so far in this turn, deduplicated. Does **not** include the results of
|
|
202
|
+
* this call itself — those do not exist yet.
|
|
207
203
|
*/
|
|
208
204
|
sources?: ToolSource[];
|
|
209
205
|
}
|
package/dist/platform/api.d.ts
CHANGED
|
@@ -9,16 +9,17 @@ export interface InvokeOptions {
|
|
|
9
9
|
headers?: Record<string, string>;
|
|
10
10
|
manifest?: AppManifest;
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
13
|
-
*
|
|
12
|
+
* Make the call **reject** when the server returns an error, instead of succeeding with an empty
|
|
13
|
+
* `data`.
|
|
14
14
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
15
|
+
* Without this, `invoke` always resolved: `sendViaHttp` did not look at `response.ok` and the ws
|
|
16
|
+
* side had no reject path. A refused mutation therefore arrived as `data: undefined`, the entity
|
|
17
|
+
* store dropped it silently, and the mutation's `next` branch ran anyway — the composer cleared
|
|
18
|
+
* itself and the user thought the message had been sent. Every `error:` handler in the app was
|
|
19
|
+
* dead code.
|
|
20
20
|
*
|
|
21
|
-
*
|
|
21
|
+
* **On by default.** Set it to `false` to deliberately keep one call quiet — then it is a choice
|
|
22
|
+
* that stands in the code, not the default state everyone walks into.
|
|
22
23
|
*/
|
|
23
24
|
throwOnError?: boolean;
|
|
24
25
|
}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* een author direct als activity-author kan worden weggeschreven.
|
|
2
|
+
* Who performed a mutation — for attribution on the timeline and in analytics. Derived server-side
|
|
3
|
+
* from the request (see `resolveAuthor` in `@opencxh/platform-api`). The shape lines up with
|
|
4
|
+
* `BaseActivity.author`, so an author can be written straight as an activity author.
|
|
6
5
|
*
|
|
7
|
-
* - `user` —
|
|
8
|
-
* - `app` —
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* - `system` — geen geïdentificeerde actor (cron, achtergrondjob).
|
|
6
|
+
* - `user` — a logged-in user; `id` is the user id (analytics attribution).
|
|
7
|
+
* - `app` — a provider/integration app (a playbook mutating as the `ai` app, say); `id` is the
|
|
8
|
+
* app name. The timeline then shows the app instead of an anonymous "System".
|
|
9
|
+
* - `system` — no identified actor (cron, background job).
|
|
12
10
|
*/
|
|
13
11
|
export type MutationAuthor = {
|
|
14
12
|
type: "user";
|
|
@@ -40,9 +40,9 @@ export declare function resolveChannelIntents(channel: Channel, description: Pro
|
|
|
40
40
|
*/
|
|
41
41
|
export declare function resolveAccountCapabilities(description: ProviderDescription, accountCaps: Record<string, boolean> | undefined): Record<string, boolean>;
|
|
42
42
|
/**
|
|
43
|
-
*
|
|
44
|
-
* `Channel.disabledIntents`.
|
|
45
|
-
*
|
|
43
|
+
* List of intent names that are OFF for this account. Maps one-to-one onto
|
|
44
|
+
* `Channel.disabledIntents`. Non-togglable intents never make the list — a provider can hardcode
|
|
45
|
+
* those through its own channel-kind constraint.
|
|
46
46
|
*/
|
|
47
47
|
export declare function disabledIntentsFromCapabilities(description: ProviderDescription, accountCaps: Record<string, boolean> | undefined): string[];
|
|
48
48
|
/**
|