@opencxh/domain 1.221.0 → 1.224.0
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/catalog.d.ts +17 -0
- package/dist/entities/activity/resolve.d.ts +2 -0
- package/dist/entities/activity/types.d.ts +17 -0
- package/dist/entities/assignment/types.d.ts +42 -4
- package/dist/entities/reaction/index.d.ts +1 -0
- package/dist/entities/reaction/summarize.test.d.ts +1 -0
- package/dist/entities/reaction/types.d.ts +98 -0
- package/dist/entities/work/activity.d.ts +9 -0
- package/dist/entities/work/keys.d.ts +9 -0
- package/dist/index.cjs +14 -14
- package/dist/index.d.ts +1 -0
- package/dist/index.js +878 -806
- package/dist/platform/communication.d.ts +25 -0
- package/dist/platform/documents.d.ts +9 -0
- package/dist/platform/permission.d.ts +1 -1
- package/dist/platform/resource-source.d.ts +24 -0
- package/package.json +1 -1
|
@@ -510,6 +510,24 @@ export type ServerOp = {
|
|
|
510
510
|
channelId: string;
|
|
511
511
|
interactionId: string;
|
|
512
512
|
body: NoteBody;
|
|
513
|
+
}
|
|
514
|
+
/**
|
|
515
|
+
* Put an emoji on a message at the provider, or take it off.
|
|
516
|
+
*
|
|
517
|
+
* Only dispatched to a provider that declares the `message_reactions` feature — everywhere
|
|
518
|
+
* else the reaction stays ours alone, which is the honest outcome for a channel whose
|
|
519
|
+
* protocol has no such thing (mail).
|
|
520
|
+
*
|
|
521
|
+
* `emoji` is the literal character. Providers that speak their own vocabulary translate at
|
|
522
|
+
* their own edge; a reaction means the same thing on every channel and should read the same.
|
|
523
|
+
*/
|
|
524
|
+
| {
|
|
525
|
+
kind: "message.react";
|
|
526
|
+
channelId: string;
|
|
527
|
+
activityId: string;
|
|
528
|
+
emoji: string;
|
|
529
|
+
/** `true` sets it, `false` removes it. */
|
|
530
|
+
on: boolean;
|
|
513
531
|
} | {
|
|
514
532
|
kind: "message.forward";
|
|
515
533
|
channelId: string;
|
|
@@ -640,6 +658,13 @@ export declare const FEATURE_FOLDER_MANAGEMENT = "folder_management";
|
|
|
640
658
|
* channels in `GET /search/sources`; the client fans out via `POST /search/mailbox`.
|
|
641
659
|
*/
|
|
642
660
|
export declare const FEATURE_REMOTE_SEARCH = "remote_search";
|
|
661
|
+
/**
|
|
662
|
+
* Well-known `ProviderFeature.name` for per-message emoji reactions. A provider that can both
|
|
663
|
+
* report the reactions on a message and set one on the user's behalf declares it true; the
|
|
664
|
+
* comm-server then dispatches `message.react` there. Everywhere else the reaction is ours
|
|
665
|
+
* alone, which is the honest outcome for a protocol that has no such thing (mail).
|
|
666
|
+
*/
|
|
667
|
+
export declare const FEATURE_MESSAGE_REACTIONS = "message_reactions";
|
|
643
668
|
/**
|
|
644
669
|
* Result shape for `IProvider.dispatch` and the comm-server
|
|
645
670
|
* `dispatchToProvider` helper, discriminated on `ok`. Deliberately not
|
|
@@ -84,6 +84,15 @@ export interface DocumentCapability {
|
|
|
84
84
|
title: string;
|
|
85
85
|
/** Someone else holds the lock, or a write-back would drop content, or it is read-only. */
|
|
86
86
|
readOnly: boolean;
|
|
87
|
+
/**
|
|
88
|
+
* Is the document parsed and answerable, or still loading?
|
|
89
|
+
*
|
|
90
|
+
* A separate field because the page knows what the file *is* (name, kind, which operations
|
|
91
|
+
* apply) the moment it opens, while the engine needs a second or two to parse it. Without the
|
|
92
|
+
* distinction a consumer cannot tell "no content" from "not yet", and a model told the first
|
|
93
|
+
* reports an empty document.
|
|
94
|
+
*/
|
|
95
|
+
ready: boolean;
|
|
87
96
|
/** What a write-back would lose, from the editor's own `unsupportedFeatures`. */
|
|
88
97
|
blocked: string[];
|
|
89
98
|
/** The subset of {@link DOCUMENT_OPERATIONS} this mounted editor actually implements. */
|
|
@@ -18,7 +18,7 @@ export declare const APP_PERMISSIONS: {
|
|
|
18
18
|
readonly "app-store": readonly ["app.publish", "app.read", "app.write", "setting.read", "setting.write"];
|
|
19
19
|
readonly assist: readonly ["board.read"];
|
|
20
20
|
readonly automations: readonly ["sync.read", "sync.write", "webhook.read", "webhook.write"];
|
|
21
|
-
readonly communication: readonly ["account.read", "account.write", "activity-type.read", "activity.read", "activity.write", "attachment.read", "attribute.read", "attribute.write", "calendar.read", "calendar.write", "channel.read", "channel.write", "custom-field.read", "custom-field.write", "folder.read", "folder.write", "inbox.read", "inbox.write", "interaction.read", "interaction.write", "reminder.read", "template.read", "template.write", "topic.read", "topic.write"];
|
|
21
|
+
readonly communication: readonly ["account.read", "account.write", "activity-type.read", "activity.read", "activity.write", "attachment.read", "attribute.read", "attribute.write", "calendar.read", "calendar.write", "channel.read", "channel.write", "custom-field.read", "custom-field.write", "folder.read", "folder.write", "inbox.read", "inbox.write", "interaction.read", "interaction.write", "reaction.read", "reaction.write", "reminder.read", "template.read", "template.write", "topic.read", "topic.write"];
|
|
22
22
|
readonly context: readonly ["kind.read", "kind.write", "memory.read", "memory.write"];
|
|
23
23
|
readonly crm: readonly ["company.read", "company.write", "contact.read", "contact.write"];
|
|
24
24
|
readonly "eylo-voip": readonly ["account.read", "account.write", "callflow.read", "callflow.write", "channel.read", "channel.write", "contact.read", "contact.write", "device.read", "device.write", "group.read", "group.write", "interaction.read", "interaction.write", "media.read", "media.write", "menu.read", "menu.write", "phone-number.read", "phone-number.write", "recording.read", "recording.write", "sip.read", "temporal-rule.read", "temporal-rule.write", "user.read", "user.write", "vmbox.read", "vmbox.write", "webhook.read", "webhook.write"];
|
|
@@ -161,6 +161,30 @@ export interface Relation {
|
|
|
161
161
|
createdBy: string;
|
|
162
162
|
createdAt?: number;
|
|
163
163
|
}
|
|
164
|
+
/**
|
|
165
|
+
* One resource a single person keeps in reach, stored by apps/context.
|
|
166
|
+
*
|
|
167
|
+
* **Private by construction.** `userId` comes from the session, never from the body, so a pin is
|
|
168
|
+
* not an org-wide fact about the resource — which is exactly why it is not a {@link Relation}:
|
|
169
|
+
* relations are merged into `/resource/related` and would surface everyone's pins in a customer
|
|
170
|
+
* file. Nothing reads another user's pins.
|
|
171
|
+
*
|
|
172
|
+
* `label` and `icon` are **snapshots**, used cold: a pinned conversation from three months ago is
|
|
173
|
+
* not in any list the screen loaded, so without them the row has no name. Whoever renders it
|
|
174
|
+
* lets the live value win when the resource is at hand.
|
|
175
|
+
*/
|
|
176
|
+
export interface Pin {
|
|
177
|
+
id: string;
|
|
178
|
+
organizationId: string;
|
|
179
|
+
userId: string;
|
|
180
|
+
/** `<kind>:<ref>` — the same key vocabulary as {@link ResourceSummary} and {@link Relation}. */
|
|
181
|
+
scopeKey: string;
|
|
182
|
+
/** Title snapshot. See the note above. */
|
|
183
|
+
label: string;
|
|
184
|
+
/** Icon hint the owning app understands (comms stores the channel scheme). */
|
|
185
|
+
icon?: string;
|
|
186
|
+
createdAt?: number;
|
|
187
|
+
}
|
|
164
188
|
/**
|
|
165
189
|
* What the hub asks one app. `scopeKey` is already authorized — the answering app must not
|
|
166
190
|
* re-gate it, but it must filter its own rows for the stamped acting identity.
|