@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,94 +1,92 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Pointable resources, across app boundaries.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* `resource_ref
|
|
7
|
-
*
|
|
4
|
+
* One question that kept coming back in this platform and was solved case by case until now:
|
|
5
|
+
* *which things can I point at here, and what are they called?* Linking a work item to a
|
|
6
|
+
* conversation, filling a `resource_ref` field, attaching a file later — the same question asked
|
|
7
|
+
* of three different apps three times.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
9
|
+
* The answer is a **service-bus contract**, not an HTTP provider role: both questions are asked on
|
|
10
|
+
* the client by a user who has the source app open anyway, and that app already has its
|
|
11
|
+
* conversations and companies in a store. A provider role would turn that into a round trip for
|
|
12
|
+
* data sitting in memory.
|
|
13
13
|
*
|
|
14
|
-
*
|
|
15
|
-
* app
|
|
14
|
+
* Three keys, all three through `sdk.services.execute` (which returns the answers of every
|
|
15
|
+
* installed app as an array):
|
|
16
16
|
*
|
|
17
|
-
* |
|
|
17
|
+
* | Key | Params | Answer |
|
|
18
18
|
* |---|---|---|
|
|
19
19
|
* | `resources.describe` | — | {@link ResourceSourceDescribe} |
|
|
20
20
|
* | `resources.search` | {@link ResourceSearchParams} | {@link ResourceSummary}`[]` |
|
|
21
21
|
* | `resources.resolve` | {@link ResourceResolveParams} | {@link ResourceSummary}`[]` |
|
|
22
22
|
*
|
|
23
|
-
* `describe` is
|
|
24
|
-
*
|
|
25
|
-
*
|
|
23
|
+
* `describe` is not cosmetic: a picker draws its kind filters from what actually answers. Without
|
|
24
|
+
* that call it would show a fixed list with tabs that stay empty as soon as an app is not
|
|
25
|
+
* installed — exactly the per-provider assumption this contract avoids.
|
|
26
26
|
*/
|
|
27
|
-
/**
|
|
27
|
+
/** The service-bus keys, as constants so a typo does not silently yield an empty list. */
|
|
28
28
|
export declare const RESOURCE_DESCRIBE_SERVICE = "resources.describe";
|
|
29
29
|
export declare const RESOURCE_SEARCH_SERVICE = "resources.search";
|
|
30
30
|
export declare const RESOURCE_RESOLVE_SERVICE = "resources.resolve";
|
|
31
|
-
/**
|
|
31
|
+
/** One pointable resource, as the app that owns it shows it. */
|
|
32
32
|
export interface ResourceSummary {
|
|
33
33
|
/**
|
|
34
|
-
* `<kind>:<ref>` —
|
|
34
|
+
* `<kind>:<ref>` — the same shape `ScopeAuth` authorizes and `WorkLink.toKey` carries.
|
|
35
35
|
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
* ontdubbelt daarop.
|
|
36
|
+
* This is the identity: two providers knowing the same resource (comms federates address books,
|
|
37
|
+
* crm has its own contacts) deliver the same key, and a consumer deduplicates on it.
|
|
39
38
|
*/
|
|
40
39
|
scopeKey: string;
|
|
41
|
-
/**
|
|
40
|
+
/** The prefix of {@link ResourceSummary.scopeKey}, separate so filtering needs no split. */
|
|
42
41
|
kind: string;
|
|
43
42
|
title: string;
|
|
44
|
-
/**
|
|
43
|
+
/** Second line: sender, email address, company name, status label. */
|
|
45
44
|
subtitle?: string;
|
|
46
|
-
/** Lucide
|
|
45
|
+
/** Lucide icon name, like `TimeTarget.icon`. Absent = the consumer picks one for the kind. */
|
|
47
46
|
icon?: string;
|
|
48
47
|
/**
|
|
49
|
-
*
|
|
48
|
+
* Path inside the shell to open this resource.
|
|
50
49
|
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
50
|
+
* Absent = the row is not clickable. Deliberately a separate state and not a guess: an invented
|
|
51
|
+
* path yields a dead-end navigation, which is worse than no link.
|
|
53
52
|
*/
|
|
54
53
|
href?: string;
|
|
55
|
-
/**
|
|
54
|
+
/** Sort hint; more recent ranks higher. Absent counts as oldest. */
|
|
56
55
|
updatedAt?: number;
|
|
57
56
|
/**
|
|
58
|
-
*
|
|
59
|
-
*
|
|
57
|
+
* Other scopeKeys belonging to this resource — the contact and the company behind a
|
|
58
|
+
* conversation, the customer behind a case.
|
|
60
59
|
*
|
|
61
|
-
* **
|
|
62
|
-
* `partyKeys
|
|
63
|
-
*
|
|
64
|
-
*
|
|
60
|
+
* **The source says it, the consumer does not guess it.** Comms knows an interaction has
|
|
61
|
+
* `partyKeys`; `apps/work` does not and should not. Without this field, "bring the contact
|
|
62
|
+
* along" in the link flow would become an `if (kind === "interaction")` with a comms-specific
|
|
63
|
+
* field name, and that breaks at the next provider.
|
|
65
64
|
*
|
|
66
|
-
*
|
|
67
|
-
* kiezer, geen graaf.
|
|
65
|
+
* One hop only, and only what the source already holds: this is a hint for a picker, not a graph.
|
|
68
66
|
*/
|
|
69
67
|
related?: string[];
|
|
70
68
|
}
|
|
71
|
-
/**
|
|
69
|
+
/** Answer to `resources.describe`: which kinds this app can search and resolve. */
|
|
72
70
|
export interface ResourceSourceDescribe {
|
|
73
71
|
kinds: string[];
|
|
74
72
|
}
|
|
75
|
-
/** Params
|
|
73
|
+
/** Params for `resources.search`. */
|
|
76
74
|
export interface ResourceSearchParams {
|
|
77
|
-
/**
|
|
75
|
+
/** Free text. Empty = "what is recent", not "everything". */
|
|
78
76
|
query: string;
|
|
79
|
-
/**
|
|
77
|
+
/** Restrict to these kinds. Empty/absent = everything the provider has. */
|
|
80
78
|
kinds?: string[];
|
|
81
|
-
/** Maximum per
|
|
79
|
+
/** Maximum per provider, not in total — the consumer truncates after deduplicating. */
|
|
82
80
|
limit?: number;
|
|
83
81
|
}
|
|
84
|
-
/** Params
|
|
82
|
+
/** Params for `resources.resolve`: from key to readable row. */
|
|
85
83
|
export interface ResourceResolveParams {
|
|
86
84
|
scopeKeys: string[];
|
|
87
85
|
}
|
|
88
86
|
/**
|
|
89
|
-
*
|
|
87
|
+
* The kind out of a scopeKey, without having to split the rest.
|
|
90
88
|
*
|
|
91
|
-
*
|
|
92
|
-
* contract
|
|
89
|
+
* A separate helper and not a reuse of `splitScopeKey`: that one sits in `platform-api` (server),
|
|
90
|
+
* and this contract is read mostly on the client.
|
|
93
91
|
*/
|
|
94
92
|
export declare function resourceKindOf(scopeKey: string): string;
|
|
@@ -1,39 +1,33 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* What something is **about**: a reference to a resource, independent of which app owns it.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* exporteert hem door, zodat geen enkele bestaande importeur verandert.
|
|
4
|
+
* The platform-wide key shape is `"<kind>:<id>"`: what `authorizeScope` accepts, what
|
|
5
|
+
* `ScopeAuthorizeRequest.scopeKey` carries, and what the file keys are made of. {@link refKey} is
|
|
6
|
+
* the bridge there.
|
|
8
7
|
*
|
|
9
|
-
*
|
|
10
|
-
* `
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* Let op de veldnaam: `type`, terwijl de rest van de codebase `kind` gebruikt voor een
|
|
14
|
-
* discriminant (`OwnerScope.kind`, `ActingIdentity.kind`, `Decider.kind`, `splitScopeKey().kind`).
|
|
15
|
-
* Dat is een inconsistentie van vóór dit type, en hem hier omdopen zou read-state en de
|
|
16
|
-
* resource-reminders meesleuren — een eigen opruiming, niet deze.
|
|
8
|
+
* Mind the field name: `type`, while the rest of the codebase uses `kind` for a discriminant
|
|
9
|
+
* (`OwnerScope.kind`, `ActingIdentity.kind`, `Decider.kind`, `splitScopeKey().kind`). That
|
|
10
|
+
* inconsistency predates this type, and renaming it here would drag read-state and the resource
|
|
11
|
+
* reminders along — a cleanup of its own, not this one.
|
|
17
12
|
*/
|
|
18
13
|
export interface ResourceRef {
|
|
19
|
-
/** `"interaction"`, `"task"`, … —
|
|
14
|
+
/** `"interaction"`, `"task"`, … — the same kinds a scope provider declares. */
|
|
20
15
|
type: string;
|
|
21
16
|
id: string;
|
|
22
17
|
}
|
|
23
|
-
/**
|
|
18
|
+
/** The key shape `authorizeScope` and the file keys use. */
|
|
24
19
|
export declare function refKey(ref: ResourceRef): string;
|
|
25
20
|
/**
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
21
|
+
* The kind comms owns, and the only one the engine knows something extra about: on an interaction
|
|
22
|
+
* you can wait for a reply and put a line in the timeline. Other kinds cannot, and that is not an
|
|
23
|
+
* omission but the difference between a conversation and a task.
|
|
29
24
|
*/
|
|
30
25
|
export declare const INTERACTION_KIND = "interaction";
|
|
31
26
|
/**
|
|
32
|
-
*
|
|
27
|
+
* The interaction id, when this subject is a conversation.
|
|
33
28
|
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
* stilzwijgend een id dat naar het verkeerde soort wijst.
|
|
29
|
+
* Exists so the two things that really need a conversation (`wait-for-reply` and the lifecycle
|
|
30
|
+
* marker) can ask for it without spelling out `type === "interaction"` everywhere — and so a run
|
|
31
|
+
* about a task gets a clean `undefined` instead of silently an id pointing at the wrong kind.
|
|
38
32
|
*/
|
|
39
33
|
export declare function interactionIdOf(subject: ResourceRef | undefined): string | undefined;
|
package/dist/platform/scope.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { OwnerScope } from '../entities/
|
|
1
|
+
import { OwnerScope } from '../entities/scope/types';
|
|
2
2
|
import { ActingIdentity } from './identity';
|
|
3
3
|
/** Access decision + whether the scope anchor is team-shared + the SSE audience. */
|
|
4
4
|
export interface ScopeAuth {
|
|
@@ -6,63 +6,38 @@ export interface ScopeAuth {
|
|
|
6
6
|
shared?: boolean;
|
|
7
7
|
audience?: string[];
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* Eerste consument is de geheugenlaag: een org-brede geheugensoort wordt bij het schrijven
|
|
19
|
-
* versmald naar `audience` als het bronsubject persoonlijk is, zodat een gesprek uit iemands
|
|
20
|
-
* eigen mailbox niet in de cross-klant-zoekresultaten van een collega opduikt. Afwezig =
|
|
21
|
-
* onbekend, en dat wordt daar als "versmallen" gelezen: de veilige kant.
|
|
9
|
+
* Who owns this resource as the owner app sees it: a personal mailbox, a
|
|
10
|
+
* team inbox, or the organization. Distinct from `shared` (whether an AI
|
|
11
|
+
* conversation on this scope is team-shared) and `audience` (current member
|
|
12
|
+
* list for SSE): this is **ownership** — what a consumer needs to decide
|
|
13
|
+
* whether derived knowledge may travel wider than the resource itself.
|
|
14
|
+
* First consumer is the memory layer: an org-wide memory kind is narrowed
|
|
15
|
+
* to `audience` at write time when the source subject is personal. Absent =
|
|
16
|
+
* unknown, read there as "narrow": the safe side.
|
|
22
17
|
*/
|
|
23
18
|
ownerScope?: OwnerScope;
|
|
24
19
|
/**
|
|
25
|
-
*
|
|
26
|
-
* apps
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* vastgelegde `contact:<id>` / `company:<id>` / `interaction:<id>`. Twee rollen, één
|
|
37
|
-
* vorm — *identiteit* ("dit ben ik", `Contact.keys`) en *verwijzing* ("hier hoor ik bij",
|
|
38
|
-
* `partyKeys`).
|
|
39
|
-
*
|
|
40
|
-
* **Klein houden.** Dit is de set van de rij zelf, niet zijn hele omgeving: een company
|
|
41
|
-
* geeft zijn eigen sleutels en domeinen, níet die van tweehonderd medewerkers. Die
|
|
42
|
-
* fan-out hoort bij een expliciete zoekvraag (`keySetForCompany`), niet bij elke
|
|
43
|
-
* autorisatie — deze call zit op het hete pad van elke geheugen-schrijfactie.
|
|
44
|
-
*
|
|
45
|
-
* Afwezig = onbekend, en dat wordt gelezen als "alleen het subject zelf": minder
|
|
46
|
-
* vindbaar, nooit ruimer. Dezelfde richting als {@link ScopeAuth.ownerScope}.
|
|
20
|
+
* The **dossier keys** this resource falls under: the canonical keys other
|
|
21
|
+
* apps use to find it in one indexed `$in`. The platform's one convention for
|
|
22
|
+
* relationships — the datastore cannot join or traverse, so each
|
|
23
|
+
* context-bearing row carries its own keys, flattened at **write time**
|
|
24
|
+
* (`Interaction.partyKeys`, `Contact.keys`, `MemoryItem.keys` via this
|
|
25
|
+
* field). Vocabulary is `endpointKey` (`mailto:`, `tel:`, `domain:`) plus
|
|
26
|
+
* `contact:<id>` / `company:<id>` / `interaction:<id>`. Keep it small: the
|
|
27
|
+
* row's own keys, not its whole neighborhood — fan-out belongs to an explicit
|
|
28
|
+
* search (`keySetForCompany`), and this call sits on the hot path of every
|
|
29
|
+
* memory write. Absent = unknown, read as "only the subject itself": less
|
|
30
|
+
* findable, never wider. Same direction as {@link ScopeAuth.ownerScope}.
|
|
47
31
|
*/
|
|
48
32
|
keys?: string[];
|
|
49
33
|
/**
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
* Eerste consument is `apps/work`: werk dat de assistent uit een gesprek aanmaakt hoort
|
|
59
|
-
* bij de behandelaar van dat gesprek te landen, niet op naam van de agent die het
|
|
60
|
-
* aanmaakte. Comms leidde dat vroeger in-process af (`resolveInteractionOwnership`);
|
|
61
|
-
* cross-app is dit hetzelfde antwoord zonder een tweede endpoint, want de aanroeper heeft
|
|
62
|
-
* de interactie en de inbox hier toch al gelezen.
|
|
63
|
-
*
|
|
64
|
-
* Afwezig = onbekend, en dat leest een consument als "val terug op je eigen regels" —
|
|
65
|
-
* nooit als "niemand".
|
|
34
|
+
* Who *handles* this resource, if the owner app knows: the assigned
|
|
35
|
+
* handler's userId. Distinct from {@link ScopeAuth.ownerScope} (ownership) —
|
|
36
|
+
* a team-inbox conversation has `ownerScope.kind === "team"` *and* a
|
|
37
|
+
* concrete handler. First consumer is `apps/work`: work the assistant
|
|
38
|
+
* creates from a conversation must land with that conversation's handler,
|
|
39
|
+
* not under the creating agent's name. Absent = unknown, read by consumers
|
|
40
|
+
* as "fall back to your own rules" — never as "nobody".
|
|
66
41
|
*/
|
|
67
42
|
ownerUserId?: string;
|
|
68
43
|
}
|
|
@@ -70,22 +45,21 @@ export interface ScopeAuth {
|
|
|
70
45
|
export interface ScopeDescribe {
|
|
71
46
|
kinds: string[];
|
|
72
47
|
/**
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
* `
|
|
78
|
-
*
|
|
79
|
-
* weigert daarom een `team`-actor zolang de eigenaar `"team"` niet declareert.
|
|
48
|
+
* Which acting-identity kinds this provider actually evaluates. Absent =
|
|
49
|
+
* only the classic `userId` contract. A fail-closed switch, not
|
|
50
|
+
* documentation: a provider that ignores `actor` sees an empty `userId` for
|
|
51
|
+
* a team actor and would read that as "trusted system caller" — full access.
|
|
52
|
+
* `authorizeIdentity` therefore refuses a `team` actor until the owner
|
|
53
|
+
* declares `"team"`.
|
|
80
54
|
*/
|
|
81
55
|
actorKinds?: ActingIdentity["kind"][];
|
|
82
56
|
}
|
|
83
57
|
/**
|
|
84
58
|
* POST /provider/scope/authorize body.
|
|
85
59
|
*
|
|
86
|
-
* `userId`
|
|
87
|
-
*
|
|
88
|
-
*
|
|
60
|
+
* `userId` stays for back-compat: existing providers read only that field, and
|
|
61
|
+
* a `user` actor fills it so they keep working unchanged. Absent `userId` =
|
|
62
|
+
* trusted system caller (broad!) — see the warning at
|
|
89
63
|
* {@link ScopeDescribe.actorKinds}.
|
|
90
64
|
*/
|
|
91
65
|
export interface ScopeAuthorizeRequest {
|
|
@@ -7,21 +7,21 @@ export type ServiceMap = {
|
|
|
7
7
|
[key: string]: ServiceDefinition;
|
|
8
8
|
};
|
|
9
9
|
export interface GlobalServices extends ServiceMap {
|
|
10
|
-
|
|
10
|
+
"platform:router:push": {
|
|
11
11
|
params: {
|
|
12
12
|
path: string;
|
|
13
13
|
options?: any;
|
|
14
14
|
};
|
|
15
15
|
response: void;
|
|
16
16
|
};
|
|
17
|
-
|
|
17
|
+
"platform:auth:expired": {
|
|
18
18
|
params: {};
|
|
19
19
|
response: void;
|
|
20
20
|
};
|
|
21
|
-
|
|
21
|
+
"platform:ui:toast": {
|
|
22
22
|
params: {
|
|
23
23
|
message: string;
|
|
24
|
-
type:
|
|
24
|
+
type: "success" | "error";
|
|
25
25
|
};
|
|
26
26
|
response: void;
|
|
27
27
|
};
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { Observable } from 'rxjs';
|
|
2
1
|
export interface UserSettings {
|
|
3
2
|
audio: {
|
|
4
3
|
selectedMicrophone: string;
|
|
@@ -30,16 +29,3 @@ export interface DeviceList {
|
|
|
30
29
|
input: MediaDeviceInfo[];
|
|
31
30
|
output: MediaDeviceInfo[];
|
|
32
31
|
}
|
|
33
|
-
export interface ISettingsManager {
|
|
34
|
-
readonly settings$: Observable<UserSettings>;
|
|
35
|
-
get(): UserSettings;
|
|
36
|
-
update(partial: DeepPartial<UserSettings>): void;
|
|
37
|
-
getIceServers(): RTCIceServer[];
|
|
38
|
-
getAudioInputDeviceId(): string;
|
|
39
|
-
setAudioInputDeviceId(deviceId: string): void;
|
|
40
|
-
getAudioOutputDeviceId(): string;
|
|
41
|
-
setAudioOutputDeviceId(deviceId: string): void;
|
|
42
|
-
getVideoDeviceId(): string;
|
|
43
|
-
setVideoDeviceId(deviceId: string): void;
|
|
44
|
-
setIceServers(servers: RTCIceServer[]): void;
|
|
45
|
-
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { OwnerScope } from '../entities/
|
|
1
|
+
import { OwnerScope } from '../entities/scope/types';
|
|
2
2
|
/**
|
|
3
3
|
* A virtual folder: a named, scoped root that binds to a storage backend
|
|
4
4
|
* (a StorageAccount on a storage provider) at a base path. Its `ownerScope`
|
|
@@ -26,7 +26,7 @@ export interface FilePointer {
|
|
|
26
26
|
id: string;
|
|
27
27
|
mountId: string;
|
|
28
28
|
name: string;
|
|
29
|
-
type:
|
|
29
|
+
type: "file" | "folder";
|
|
30
30
|
path: string;
|
|
31
31
|
providerKey: string;
|
|
32
32
|
mimeType: string;
|