@realitycollective/service-framework-client 1.0.0-preview.1
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/Examples/App.tsx +59 -0
- package/LICENSE +21 -0
- package/dist/contracts.d.ts +143 -0
- package/dist/contracts.d.ts.map +1 -0
- package/dist/contracts.js +2 -0
- package/dist/contracts.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/profile.d.ts +5 -0
- package/dist/profile.d.ts.map +1 -0
- package/dist/profile.js +102 -0
- package/dist/profile.js.map +1 -0
- package/dist/react.d.ts +20 -0
- package/dist/react.d.ts.map +1 -0
- package/dist/react.js +61 -0
- package/dist/react.js.map +1 -0
- package/dist/runtime.d.ts +14 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +37 -0
- package/dist/runtime.js.map +1 -0
- package/dist/services.d.ts +86 -0
- package/dist/services.d.ts.map +1 -0
- package/dist/services.js +344 -0
- package/dist/services.js.map +1 -0
- package/dist/tokens.d.ts +11 -0
- package/dist/tokens.d.ts.map +1 -0
- package/dist/tokens.js +11 -0
- package/dist/tokens.js.map +1 -0
- package/package.json +49 -0
package/Examples/App.tsx
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import {
|
|
3
|
+
BaseService,
|
|
4
|
+
ManualScheduler,
|
|
5
|
+
ServiceManager,
|
|
6
|
+
createServiceProfile,
|
|
7
|
+
createServiceToken,
|
|
8
|
+
type LifecycleContext
|
|
9
|
+
} from "@realitycollective/service-framework";
|
|
10
|
+
import {
|
|
11
|
+
ServiceFrameworkProvider,
|
|
12
|
+
useService
|
|
13
|
+
} from "@realitycollective/service-framework-react";
|
|
14
|
+
import { ThreeRenderLoopBridge } from "@realitycollective/service-framework-three";
|
|
15
|
+
|
|
16
|
+
const RENDERER_TOKEN = createServiceToken<RendererStateService>("RendererStateService");
|
|
17
|
+
|
|
18
|
+
class RendererStateService extends BaseService {
|
|
19
|
+
public lastFrame = 0;
|
|
20
|
+
|
|
21
|
+
override render(context: LifecycleContext): void {
|
|
22
|
+
this.lastFrame = context.frame;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function FramePanel(): React.JSX.Element {
|
|
27
|
+
const renderer = useService(RENDERER_TOKEN);
|
|
28
|
+
return <span>{renderer.lastFrame}</span>;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const scheduler = new ManualScheduler();
|
|
32
|
+
const manager = new ServiceManager({ scheduler });
|
|
33
|
+
|
|
34
|
+
manager.initializeProfile(createServiceProfile("react-three-example", [
|
|
35
|
+
{
|
|
36
|
+
token: RENDERER_TOKEN,
|
|
37
|
+
useFactory: (context) => new RendererStateService(context)
|
|
38
|
+
}
|
|
39
|
+
]));
|
|
40
|
+
manager.start();
|
|
41
|
+
|
|
42
|
+
new ThreeRenderLoopBridge({
|
|
43
|
+
scheduler,
|
|
44
|
+
host: {
|
|
45
|
+
setAnimationLoop(callback) {
|
|
46
|
+
if (callback) {
|
|
47
|
+
callback(16);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}).start();
|
|
52
|
+
|
|
53
|
+
export function App(): React.JSX.Element {
|
|
54
|
+
return (
|
|
55
|
+
<ServiceFrameworkProvider manager={manager}>
|
|
56
|
+
<FramePanel />
|
|
57
|
+
</ServiceFrameworkProvider>
|
|
58
|
+
);
|
|
59
|
+
}
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Reality Collective
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import type { IEnvironmentDescriptor, IEventService, IScheduler, LifecycleContext, ServiceProfile } from "@realitycollective/service-framework";
|
|
3
|
+
export type ClientMode = "chat-only" | "avatar" | "xr";
|
|
4
|
+
export type WidgetState = "closed" | "open" | "minimized";
|
|
5
|
+
export type ConnectionState = "idle" | "sending" | "ready" | "error";
|
|
6
|
+
export type BackendAdapterKind = "mock" | "rest";
|
|
7
|
+
export type ConversationRole = "assistant" | "system" | "user";
|
|
8
|
+
export interface CapabilitySnapshot {
|
|
9
|
+
readonly environmentName: string;
|
|
10
|
+
readonly capabilities: readonly string[];
|
|
11
|
+
}
|
|
12
|
+
export interface ExperienceStateSnapshot {
|
|
13
|
+
readonly mode: ClientMode;
|
|
14
|
+
readonly widgetState: WidgetState;
|
|
15
|
+
readonly connectionState: ConnectionState;
|
|
16
|
+
readonly lastError?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface SessionSnapshot {
|
|
19
|
+
readonly sessionId: string;
|
|
20
|
+
readonly createdAt: number;
|
|
21
|
+
readonly lastActivityAt: number;
|
|
22
|
+
}
|
|
23
|
+
export interface GeolocationSnapshot {
|
|
24
|
+
readonly latitude: number;
|
|
25
|
+
readonly longitude: number;
|
|
26
|
+
}
|
|
27
|
+
export interface ContentContextSnapshot {
|
|
28
|
+
readonly page?: string;
|
|
29
|
+
readonly campaign?: string;
|
|
30
|
+
readonly geolocation?: GeolocationSnapshot;
|
|
31
|
+
}
|
|
32
|
+
export interface ConversationMessage {
|
|
33
|
+
readonly id: string;
|
|
34
|
+
readonly role: ConversationRole;
|
|
35
|
+
readonly content: string;
|
|
36
|
+
readonly timestamp: number;
|
|
37
|
+
}
|
|
38
|
+
export interface ConversationSnapshot {
|
|
39
|
+
readonly messages: readonly ConversationMessage[];
|
|
40
|
+
readonly status: ConnectionState;
|
|
41
|
+
readonly lastError?: string;
|
|
42
|
+
}
|
|
43
|
+
export interface BackendAdapterStateSnapshot {
|
|
44
|
+
readonly preferredAdapter: BackendAdapterKind;
|
|
45
|
+
readonly activeAdapter?: BackendAdapterKind;
|
|
46
|
+
readonly state: ConnectionState;
|
|
47
|
+
readonly lastError?: string;
|
|
48
|
+
}
|
|
49
|
+
export interface BackendConversationRequest {
|
|
50
|
+
readonly sessionId: string;
|
|
51
|
+
readonly message: string;
|
|
52
|
+
readonly context: ContentContextSnapshot;
|
|
53
|
+
}
|
|
54
|
+
export interface BackendConversationResponse {
|
|
55
|
+
readonly adapter: BackendAdapterKind;
|
|
56
|
+
readonly content: string;
|
|
57
|
+
readonly timestamp: number;
|
|
58
|
+
}
|
|
59
|
+
export interface RenderStateSnapshot extends LifecycleContext {
|
|
60
|
+
}
|
|
61
|
+
export interface SessionServiceConfig {
|
|
62
|
+
readonly sessionId?: string;
|
|
63
|
+
readonly now?: () => number;
|
|
64
|
+
}
|
|
65
|
+
export interface ExperienceStateConfig {
|
|
66
|
+
readonly initialMode?: ClientMode;
|
|
67
|
+
readonly initialWidgetState?: WidgetState;
|
|
68
|
+
}
|
|
69
|
+
export interface ConversationServiceConfig {
|
|
70
|
+
readonly welcomeMessage?: string;
|
|
71
|
+
readonly now?: () => number;
|
|
72
|
+
}
|
|
73
|
+
export interface MockBackendAdapterConfig {
|
|
74
|
+
readonly replyPrefix?: string;
|
|
75
|
+
readonly now?: () => number;
|
|
76
|
+
}
|
|
77
|
+
export interface ResponseLike {
|
|
78
|
+
readonly ok: boolean;
|
|
79
|
+
readonly status: number;
|
|
80
|
+
json(): Promise<unknown>;
|
|
81
|
+
}
|
|
82
|
+
export type FetchLike = (input: string, init?: {
|
|
83
|
+
readonly method?: string;
|
|
84
|
+
readonly headers?: Record<string, string>;
|
|
85
|
+
readonly body?: string;
|
|
86
|
+
}) => Promise<ResponseLike>;
|
|
87
|
+
export interface RestBackendAdapterConfig {
|
|
88
|
+
readonly endpoint?: string;
|
|
89
|
+
readonly fetchFn?: FetchLike;
|
|
90
|
+
readonly headers?: Record<string, string>;
|
|
91
|
+
readonly now?: () => number;
|
|
92
|
+
}
|
|
93
|
+
export interface BackendAdapterServiceConfig {
|
|
94
|
+
readonly preferredAdapter?: BackendAdapterKind;
|
|
95
|
+
}
|
|
96
|
+
export interface BaseFrameworkClientProfileOptions {
|
|
97
|
+
readonly profileName?: string;
|
|
98
|
+
readonly session?: SessionServiceConfig;
|
|
99
|
+
readonly experience?: ExperienceStateConfig;
|
|
100
|
+
readonly conversation?: ConversationServiceConfig;
|
|
101
|
+
readonly context?: ContentContextSnapshot;
|
|
102
|
+
readonly backend?: {
|
|
103
|
+
readonly preferredAdapter?: BackendAdapterKind;
|
|
104
|
+
readonly includeMockAdapter?: boolean;
|
|
105
|
+
readonly mock?: MockBackendAdapterConfig;
|
|
106
|
+
readonly rest?: RestBackendAdapterConfig;
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
export interface BaseFrameworkClientEnvironmentOptions {
|
|
110
|
+
readonly name?: string;
|
|
111
|
+
readonly includeBrowserDefaults?: boolean;
|
|
112
|
+
readonly capabilities?: readonly string[];
|
|
113
|
+
}
|
|
114
|
+
export interface BaseFrameworkClientRuntimeOptions {
|
|
115
|
+
readonly autoStart?: boolean;
|
|
116
|
+
readonly environment?: IEnvironmentDescriptor;
|
|
117
|
+
readonly environmentOptions?: BaseFrameworkClientEnvironmentOptions;
|
|
118
|
+
readonly profile?: ServiceProfile;
|
|
119
|
+
readonly profileOptions?: BaseFrameworkClientProfileOptions;
|
|
120
|
+
readonly scheduler?: IScheduler;
|
|
121
|
+
}
|
|
122
|
+
export interface BaseFrameworkClientProviderProps {
|
|
123
|
+
readonly children?: ReactNode;
|
|
124
|
+
readonly runtime?: BaseFrameworkClientRuntimeLike;
|
|
125
|
+
readonly runtimeOptions?: BaseFrameworkClientRuntimeOptions;
|
|
126
|
+
}
|
|
127
|
+
export interface ChangeAwareService<TSnapshot> extends IEventService<{
|
|
128
|
+
changed: TSnapshot;
|
|
129
|
+
}> {
|
|
130
|
+
getSnapshot(): TSnapshot;
|
|
131
|
+
}
|
|
132
|
+
export interface AnimationLoopHostLike {
|
|
133
|
+
setAnimationLoop(callback: ((timestamp: number) => void) | null): void;
|
|
134
|
+
}
|
|
135
|
+
export interface BaseFrameworkClientRuntimeLike {
|
|
136
|
+
readonly environment: IEnvironmentDescriptor;
|
|
137
|
+
readonly profile: ServiceProfile;
|
|
138
|
+
readonly scheduler: IScheduler;
|
|
139
|
+
readonly manager: import("@realitycollective/service-framework").ServiceManager;
|
|
140
|
+
bindRenderLoop(host: AnimationLoopHostLike): import("@realitycollective/service-framework-three").ThreeRenderLoopBridge;
|
|
141
|
+
dispose(): void;
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=contracts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EACV,sBAAsB,EACtB,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,cAAc,EACf,MAAM,sCAAsC,CAAC;AAE9C,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,IAAI,CAAC;AACvD,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAC1D,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AACrE,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,CAAC;AACjD,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE/D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,mBAAmB,CAAC;CAC5C;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAClD,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;IAC9C,QAAQ,CAAC,aAAa,CAAC,EAAE,kBAAkB,CAAC;IAC5C,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC;CAC1C;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;CAAG;AAEhE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC;IAClC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,WAAW,CAAC;CAC3C;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1B;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IAC7C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;AAE5B,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,kBAAkB,CAAC;CAChD;AAED,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,UAAU,CAAC,EAAE,qBAAqB,CAAC;IAC5C,QAAQ,CAAC,YAAY,CAAC,EAAE,yBAAyB,CAAC;IAClD,QAAQ,CAAC,OAAO,CAAC,EAAE,sBAAsB,CAAC;IAC1C,QAAQ,CAAC,OAAO,CAAC,EAAE;QACjB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,kBAAkB,CAAC;QAC/C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;QACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,wBAAwB,CAAC;QACzC,QAAQ,CAAC,IAAI,CAAC,EAAE,wBAAwB,CAAC;KAC1C,CAAC;CACH;AAED,MAAM,WAAW,qCAAqC;IACpD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAC1C,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,sBAAsB,CAAC;IAC9C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,qCAAqC,CAAC;IACpE,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,cAAc,CAAC,EAAE,iCAAiC,CAAC;IAC5D,QAAQ,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC;CACjC;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,8BAA8B,CAAC;IAClD,QAAQ,CAAC,cAAc,CAAC,EAAE,iCAAiC,CAAC;CAC7D;AAED,MAAM,WAAW,kBAAkB,CAAC,SAAS,CAAE,SAAQ,aAAa,CAAC;IAAE,OAAO,EAAE,SAAS,CAAA;CAAE,CAAC;IAC1F,WAAW,IAAI,SAAS,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;CACxE;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,WAAW,EAAE,sBAAsB,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,sCAAsC,EAAE,cAAc,CAAC;IAChF,cAAc,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,4CAA4C,EAAE,qBAAqB,CAAC;IACxH,OAAO,IAAI,IAAI,CAAC;CACjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":""}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type ServiceProfile } from "@realitycollective/service-framework";
|
|
2
|
+
import type { BaseFrameworkClientEnvironmentOptions, BaseFrameworkClientProfileOptions } from "./contracts.js";
|
|
3
|
+
export declare function createBaseFrameworkClientEnvironment(options?: BaseFrameworkClientEnvironmentOptions): import("@realitycollective/service-framework").EnvironmentDescriptor;
|
|
4
|
+
export declare function createBaseFrameworkClientProfile(options?: BaseFrameworkClientProfileOptions): ServiceProfile;
|
|
5
|
+
//# sourceMappingURL=profile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EAEpB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EACV,qCAAqC,EACrC,iCAAiC,EAClC,MAAM,gBAAgB,CAAC;AAwBxB,wBAAgB,oCAAoC,CAAC,OAAO,GAAE,qCAA0C,wEAkBvG;AAED,wBAAgB,gCAAgC,CAAC,OAAO,GAAE,iCAAsC,GAAG,cAAc,CA2FhH"}
|
package/dist/profile.js
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { createEnvironmentDescriptor, createServiceProfile } from "@realitycollective/service-framework";
|
|
2
|
+
import { BACKEND_ADAPTER_SERVICE_TOKEN, CAPABILITY_SERVICE_TOKEN, CONTENT_CONTEXT_SERVICE_TOKEN, CONVERSATION_SERVICE_TOKEN, EXPERIENCE_STATE_SERVICE_TOKEN, MOCK_BACKEND_ADAPTER_MODULE_TOKEN, RENDER_STATE_SERVICE_TOKEN, REST_BACKEND_ADAPTER_MODULE_TOKEN, SESSION_SERVICE_TOKEN } from "./tokens.js";
|
|
3
|
+
import { BackendAdapterService, CapabilityService, ContentContextService, ConversationService, ExperienceStateService, MockBackendAdapterModule, RenderStateService, RestBackendAdapterModule, SessionService } from "./services.js";
|
|
4
|
+
export function createBaseFrameworkClientEnvironment(options = {}) {
|
|
5
|
+
const capabilities = new Set();
|
|
6
|
+
if (options.includeBrowserDefaults !== false) {
|
|
7
|
+
capabilities.add("chat");
|
|
8
|
+
capabilities.add("dom");
|
|
9
|
+
capabilities.add("focus");
|
|
10
|
+
capabilities.add("network");
|
|
11
|
+
capabilities.add("render-loop");
|
|
12
|
+
capabilities.add("timers");
|
|
13
|
+
capabilities.add("visibility");
|
|
14
|
+
}
|
|
15
|
+
for (const capability of options.capabilities ?? []) {
|
|
16
|
+
capabilities.add(capability);
|
|
17
|
+
}
|
|
18
|
+
return createEnvironmentDescriptor(options.name ?? "base-framework-client", capabilities);
|
|
19
|
+
}
|
|
20
|
+
export function createBaseFrameworkClientProfile(options = {}) {
|
|
21
|
+
const backendOptions = options.backend ?? {};
|
|
22
|
+
const backendModules = [];
|
|
23
|
+
if (backendOptions.includeMockAdapter !== false) {
|
|
24
|
+
backendModules.push({
|
|
25
|
+
token: MOCK_BACKEND_ADAPTER_MODULE_TOKEN,
|
|
26
|
+
name: "mock-adapter",
|
|
27
|
+
priority: 41,
|
|
28
|
+
...(backendOptions.mock ? { config: backendOptions.mock } : {}),
|
|
29
|
+
useFactory: (context) => new MockBackendAdapterModule(context)
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
if (backendOptions.rest?.endpoint) {
|
|
33
|
+
backendModules.push({
|
|
34
|
+
token: REST_BACKEND_ADAPTER_MODULE_TOKEN,
|
|
35
|
+
name: "rest-adapter",
|
|
36
|
+
priority: 42,
|
|
37
|
+
requiredCapabilities: ["network"],
|
|
38
|
+
config: backendOptions.rest,
|
|
39
|
+
useFactory: (context) => new RestBackendAdapterModule(context)
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
return createServiceProfile(options.profileName ?? "base-framework-client", [
|
|
43
|
+
{
|
|
44
|
+
token: CAPABILITY_SERVICE_TOKEN,
|
|
45
|
+
name: "capabilities",
|
|
46
|
+
priority: 10,
|
|
47
|
+
useFactory: (context) => new CapabilityService(context)
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
token: EXPERIENCE_STATE_SERVICE_TOKEN,
|
|
51
|
+
name: "experience",
|
|
52
|
+
priority: 20,
|
|
53
|
+
config: options.experience,
|
|
54
|
+
useFactory: (context) => new ExperienceStateService(context)
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
token: SESSION_SERVICE_TOKEN,
|
|
58
|
+
name: "session",
|
|
59
|
+
priority: 30,
|
|
60
|
+
config: options.session,
|
|
61
|
+
useFactory: (context) => new SessionService(context)
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
token: CONTENT_CONTEXT_SERVICE_TOKEN,
|
|
65
|
+
name: "content-context",
|
|
66
|
+
priority: 31,
|
|
67
|
+
config: options.context,
|
|
68
|
+
useFactory: (context) => new ContentContextService(context)
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
token: BACKEND_ADAPTER_SERVICE_TOKEN,
|
|
72
|
+
name: "backend-adapter",
|
|
73
|
+
priority: 40,
|
|
74
|
+
config: {
|
|
75
|
+
preferredAdapter: backendOptions.preferredAdapter
|
|
76
|
+
},
|
|
77
|
+
modules: backendModules,
|
|
78
|
+
useFactory: (context) => new BackendAdapterService(context)
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
token: CONVERSATION_SERVICE_TOKEN,
|
|
82
|
+
name: "conversation",
|
|
83
|
+
priority: 50,
|
|
84
|
+
config: options.conversation,
|
|
85
|
+
dependencies: [
|
|
86
|
+
SESSION_SERVICE_TOKEN,
|
|
87
|
+
BACKEND_ADAPTER_SERVICE_TOKEN,
|
|
88
|
+
CONTENT_CONTEXT_SERVICE_TOKEN,
|
|
89
|
+
EXPERIENCE_STATE_SERVICE_TOKEN
|
|
90
|
+
],
|
|
91
|
+
useFactory: (context, sessionService, backendAdapterService, contentContextService, experienceStateService) => new ConversationService(context, sessionService, backendAdapterService, contentContextService, experienceStateService)
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
token: RENDER_STATE_SERVICE_TOKEN,
|
|
95
|
+
name: "render-state",
|
|
96
|
+
priority: 60,
|
|
97
|
+
requiredCapabilities: ["render-loop"],
|
|
98
|
+
useFactory: (context) => new RenderStateService(context)
|
|
99
|
+
}
|
|
100
|
+
]);
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"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"}
|
package/dist/react.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { BaseFrameworkClientProviderProps } from "./contracts.js";
|
|
3
|
+
import type { BackendAdapterStateSnapshot, CapabilitySnapshot, ContentContextSnapshot, ConversationSnapshot, ExperienceStateSnapshot, RenderStateSnapshot, SessionSnapshot } from "./contracts.js";
|
|
4
|
+
import { BackendAdapterService, CapabilityService, ContentContextService, ConversationService, ExperienceStateService, RenderStateService, SessionService } from "./services.js";
|
|
5
|
+
export declare function BaseFrameworkClientProvider({ children, runtime, runtimeOptions }: BaseFrameworkClientProviderProps): React.JSX.Element;
|
|
6
|
+
export declare function useCapabilityService(): CapabilityService;
|
|
7
|
+
export declare function useCapabilityState(): CapabilitySnapshot;
|
|
8
|
+
export declare function useExperienceStateService(): ExperienceStateService;
|
|
9
|
+
export declare function useExperienceState(): ExperienceStateSnapshot;
|
|
10
|
+
export declare function useSessionService(): SessionService;
|
|
11
|
+
export declare function useSessionState(): SessionSnapshot;
|
|
12
|
+
export declare function useContentContextService(): ContentContextService;
|
|
13
|
+
export declare function useContentContext(): ContentContextSnapshot;
|
|
14
|
+
export declare function useBackendAdapterService(): BackendAdapterService;
|
|
15
|
+
export declare function useBackendAdapterState(): BackendAdapterStateSnapshot;
|
|
16
|
+
export declare function useConversationService(): ConversationService;
|
|
17
|
+
export declare function useConversationState(): ConversationSnapshot;
|
|
18
|
+
export declare function useRenderStateService(): RenderStateService;
|
|
19
|
+
export declare function useRenderState(): RenderStateSnapshot;
|
|
20
|
+
//# sourceMappingURL=react.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwC,MAAM,OAAO,CAAC;AAG7D,OAAO,KAAK,EACV,gCAAgC,EAEjC,MAAM,gBAAgB,CAAC;AAWxB,OAAO,KAAK,EACV,2BAA2B,EAC3B,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,kBAAkB,EAClB,cAAc,EACf,MAAM,eAAe,CAAC;AAevB,wBAAgB,2BAA2B,CAAC,EAC1C,QAAQ,EACR,OAAO,EACP,cAAc,EACf,EAAE,gCAAgC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAQtD;AAED,wBAAgB,oBAAoB,IAAI,iBAAiB,CAExD;AAED,wBAAgB,kBAAkB,IAAI,kBAAkB,CAEvD;AAED,wBAAgB,yBAAyB,IAAI,sBAAsB,CAElE;AAED,wBAAgB,kBAAkB,IAAI,uBAAuB,CAE5D;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAElD;AAED,wBAAgB,eAAe,IAAI,eAAe,CAEjD;AAED,wBAAgB,wBAAwB,IAAI,qBAAqB,CAEhE;AAED,wBAAgB,iBAAiB,IAAI,sBAAsB,CAE1D;AAED,wBAAgB,wBAAwB,IAAI,qBAAqB,CAEhE;AAED,wBAAgB,sBAAsB,IAAI,2BAA2B,CAEpE;AAED,wBAAgB,sBAAsB,IAAI,mBAAmB,CAE5D;AAED,wBAAgB,oBAAoB,IAAI,oBAAoB,CAE3D;AAED,wBAAgB,qBAAqB,IAAI,kBAAkB,CAE1D;AAED,wBAAgB,cAAc,IAAI,mBAAmB,CAEpD"}
|
package/dist/react.js
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo, useSyncExternalStore } from "react";
|
|
3
|
+
import { ServiceFrameworkProvider, useService } from "@realitycollective/service-framework-react";
|
|
4
|
+
import { BaseFrameworkClientRuntime } from "./runtime.js";
|
|
5
|
+
import { BACKEND_ADAPTER_SERVICE_TOKEN, CAPABILITY_SERVICE_TOKEN, CONTENT_CONTEXT_SERVICE_TOKEN, CONVERSATION_SERVICE_TOKEN, EXPERIENCE_STATE_SERVICE_TOKEN, RENDER_STATE_SERVICE_TOKEN, SESSION_SERVICE_TOKEN } from "./tokens.js";
|
|
6
|
+
function useSnapshotService(token) {
|
|
7
|
+
const service = useService(token);
|
|
8
|
+
const getSnapshot = () => service.getSnapshot();
|
|
9
|
+
return useSyncExternalStore(
|
|
10
|
+
/* v8 ignore next 3 */
|
|
11
|
+
(onStoreChange) => service.on("changed", () => {
|
|
12
|
+
onStoreChange();
|
|
13
|
+
}), getSnapshot, getSnapshot);
|
|
14
|
+
}
|
|
15
|
+
export function BaseFrameworkClientProvider({ children, runtime, runtimeOptions }) {
|
|
16
|
+
const resolvedRuntime = useMemo(() => runtime ?? new BaseFrameworkClientRuntime(runtimeOptions), [runtime, runtimeOptions]);
|
|
17
|
+
return (_jsx(ServiceFrameworkProvider, { manager: resolvedRuntime.manager, autoStart: false, children: children }));
|
|
18
|
+
}
|
|
19
|
+
export function useCapabilityService() {
|
|
20
|
+
return useService(CAPABILITY_SERVICE_TOKEN);
|
|
21
|
+
}
|
|
22
|
+
export function useCapabilityState() {
|
|
23
|
+
return useSnapshotService(CAPABILITY_SERVICE_TOKEN);
|
|
24
|
+
}
|
|
25
|
+
export function useExperienceStateService() {
|
|
26
|
+
return useService(EXPERIENCE_STATE_SERVICE_TOKEN);
|
|
27
|
+
}
|
|
28
|
+
export function useExperienceState() {
|
|
29
|
+
return useSnapshotService(EXPERIENCE_STATE_SERVICE_TOKEN);
|
|
30
|
+
}
|
|
31
|
+
export function useSessionService() {
|
|
32
|
+
return useService(SESSION_SERVICE_TOKEN);
|
|
33
|
+
}
|
|
34
|
+
export function useSessionState() {
|
|
35
|
+
return useSnapshotService(SESSION_SERVICE_TOKEN);
|
|
36
|
+
}
|
|
37
|
+
export function useContentContextService() {
|
|
38
|
+
return useService(CONTENT_CONTEXT_SERVICE_TOKEN);
|
|
39
|
+
}
|
|
40
|
+
export function useContentContext() {
|
|
41
|
+
return useSnapshotService(CONTENT_CONTEXT_SERVICE_TOKEN);
|
|
42
|
+
}
|
|
43
|
+
export function useBackendAdapterService() {
|
|
44
|
+
return useService(BACKEND_ADAPTER_SERVICE_TOKEN);
|
|
45
|
+
}
|
|
46
|
+
export function useBackendAdapterState() {
|
|
47
|
+
return useSnapshotService(BACKEND_ADAPTER_SERVICE_TOKEN);
|
|
48
|
+
}
|
|
49
|
+
export function useConversationService() {
|
|
50
|
+
return useService(CONVERSATION_SERVICE_TOKEN);
|
|
51
|
+
}
|
|
52
|
+
export function useConversationState() {
|
|
53
|
+
return useSnapshotService(CONVERSATION_SERVICE_TOKEN);
|
|
54
|
+
}
|
|
55
|
+
export function useRenderStateService() {
|
|
56
|
+
return useService(RENDER_STATE_SERVICE_TOKEN);
|
|
57
|
+
}
|
|
58
|
+
export function useRenderState() {
|
|
59
|
+
return useSnapshotService(RENDER_STATE_SERVICE_TOKEN);
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=react.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAE7D,OAAO,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AAKlG,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EACL,6BAA6B,EAC7B,wBAAwB,EACxB,6BAA6B,EAC7B,0BAA0B,EAC1B,8BAA8B,EAC9B,0BAA0B,EAC1B,qBAAqB,EACtB,MAAM,aAAa,CAAC;AAoBrB,SAAS,kBAAkB,CAA4D,KAA6B;IAClH,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAChD,OAAO,oBAAoB;IACzB,sBAAsB;IACtB,CAAC,aAAa,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QAC5C,aAAa,EAAE,CAAC;IAClB,CAAC,CAAC,EACF,WAAW,EACX,WAAW,CACZ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,EAC1C,QAAQ,EACR,OAAO,EACP,cAAc,EACmB;IACjC,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,IAAI,IAAI,0BAA0B,CAAC,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;IAE5H,OAAO,CACL,KAAC,wBAAwB,IAAC,OAAO,EAAE,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,YACzE,QAAQ,GACgB,CAC5B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,UAAU,CAAC,wBAAwB,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,kBAAkB,CAAwC,wBAAwB,CAAC,CAAC;AAC7F,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,OAAO,UAAU,CAAC,8BAA8B,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,kBAAkB,CAAkD,8BAA8B,CAAC,CAAC;AAC7G,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,UAAU,CAAC,qBAAqB,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,kBAAkB,CAAkC,qBAAqB,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,OAAO,UAAU,CAAC,6BAA6B,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,kBAAkB,CAAgD,6BAA6B,CAAC,CAAC;AAC1G,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,OAAO,UAAU,CAAC,6BAA6B,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,kBAAkB,CAAqD,6BAA6B,CAAC,CAAC;AAC/G,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,UAAU,CAAC,0BAA0B,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,kBAAkB,CAA4C,0BAA0B,CAAC,CAAC;AACnG,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,UAAU,CAAC,0BAA0B,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,kBAAkB,CAA0C,0BAA0B,CAAC,CAAC;AACjG,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ServiceManager } from "@realitycollective/service-framework";
|
|
2
|
+
import { ThreeRenderLoopBridge } from "@realitycollective/service-framework-three";
|
|
3
|
+
import type { BaseFrameworkClientRuntimeLike, BaseFrameworkClientRuntimeOptions } from "./contracts.js";
|
|
4
|
+
export declare class BaseFrameworkClientRuntime implements BaseFrameworkClientRuntimeLike {
|
|
5
|
+
readonly scheduler: import("@realitycollective/service-framework").IScheduler;
|
|
6
|
+
readonly environment: import("@realitycollective/service-framework").IEnvironmentDescriptor;
|
|
7
|
+
readonly profile: import("@realitycollective/service-framework").ServiceProfile;
|
|
8
|
+
readonly manager: ServiceManager;
|
|
9
|
+
private renderLoopBridge;
|
|
10
|
+
constructor(options?: BaseFrameworkClientRuntimeOptions);
|
|
11
|
+
bindRenderLoop(host: ConstructorParameters<typeof ThreeRenderLoopBridge>[0]["host"]): ThreeRenderLoopBridge;
|
|
12
|
+
dispose(): void;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,EACf,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,KAAK,EAAE,8BAA8B,EAAE,iCAAiC,EAAE,MAAM,gBAAgB,CAAC;AAGxG,qBAAa,0BAA2B,YAAW,8BAA8B;IAC/E,SAAgB,SAAS,4DAAC;IAC1B,SAAgB,WAAW,wEAAC;IAC5B,SAAgB,OAAO,gEAAC;IACxB,SAAgB,OAAO,iBAAC;IAExB,OAAO,CAAC,gBAAgB,CAAoC;gBAEzC,OAAO,GAAE,iCAAsC;IAgB3D,cAAc,CAAC,IAAI,EAAE,qBAAqB,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,qBAAqB;IAU3G,OAAO,IAAI,IAAI;CAIvB"}
|
package/dist/runtime.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { ManualScheduler, ServiceManager } from "@realitycollective/service-framework";
|
|
2
|
+
import { ThreeRenderLoopBridge } from "@realitycollective/service-framework-three";
|
|
3
|
+
import { createBaseFrameworkClientEnvironment, createBaseFrameworkClientProfile } from "./profile.js";
|
|
4
|
+
export class BaseFrameworkClientRuntime {
|
|
5
|
+
scheduler;
|
|
6
|
+
environment;
|
|
7
|
+
profile;
|
|
8
|
+
manager;
|
|
9
|
+
renderLoopBridge;
|
|
10
|
+
constructor(options = {}) {
|
|
11
|
+
this.scheduler = options.scheduler ?? new ManualScheduler();
|
|
12
|
+
this.environment = options.environment ?? createBaseFrameworkClientEnvironment(options.environmentOptions);
|
|
13
|
+
this.profile = options.profile ?? createBaseFrameworkClientProfile(options.profileOptions);
|
|
14
|
+
this.manager = new ServiceManager({
|
|
15
|
+
scheduler: this.scheduler,
|
|
16
|
+
environment: this.environment
|
|
17
|
+
});
|
|
18
|
+
this.manager.initializeProfile(this.profile);
|
|
19
|
+
if (options.autoStart !== false) {
|
|
20
|
+
this.manager.start();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
bindRenderLoop(host) {
|
|
24
|
+
this.renderLoopBridge?.dispose();
|
|
25
|
+
this.renderLoopBridge = new ThreeRenderLoopBridge({
|
|
26
|
+
scheduler: this.manager.scheduler,
|
|
27
|
+
host
|
|
28
|
+
});
|
|
29
|
+
this.renderLoopBridge.start();
|
|
30
|
+
return this.renderLoopBridge;
|
|
31
|
+
}
|
|
32
|
+
dispose() {
|
|
33
|
+
this.renderLoopBridge?.dispose();
|
|
34
|
+
this.manager.scheduler.dispose();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,cAAc,EACf,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AAEnF,OAAO,EAAE,oCAAoC,EAAE,gCAAgC,EAAE,MAAM,cAAc,CAAC;AAEtG,MAAM,OAAO,0BAA0B;IACrB,SAAS,CAAC;IACV,WAAW,CAAC;IACZ,OAAO,CAAC;IACR,OAAO,CAAC;IAEhB,gBAAgB,CAAoC;IAE5D,YAAmB,UAA6C,EAAE;QAChE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,eAAe,EAAE,CAAC;QAC5D,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,oCAAoC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAC3G,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,gCAAgC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC3F,IAAI,CAAC,OAAO,GAAG,IAAI,cAAc,CAAC;YAChC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE7C,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAEM,cAAc,CAAC,IAAoE;QACxF,IAAI,CAAC,gBAAgB,EAAE,OAAO,EAAE,CAAC;QACjC,IAAI,CAAC,gBAAgB,GAAG,IAAI,qBAAqB,CAAC;YAChD,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;YACjC,IAAI;SACL,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,gBAAgB,EAAE,OAAO,EAAE,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IACnC,CAAC;CACF"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { BaseEventService, BaseServiceModule, type LifecycleContext } from "@realitycollective/service-framework";
|
|
2
|
+
import type { BackendAdapterKind, BackendAdapterServiceConfig, BackendAdapterStateSnapshot, BackendConversationRequest, BackendConversationResponse, CapabilitySnapshot, ConnectionState, ContentContextSnapshot, ConversationMessage, ConversationServiceConfig, ConversationSnapshot, ExperienceStateConfig, ExperienceStateSnapshot, MockBackendAdapterConfig, RenderStateSnapshot, RestBackendAdapterConfig, SessionServiceConfig, SessionSnapshot } from "./contracts.js";
|
|
3
|
+
export declare class CapabilityService extends BaseEventService<{
|
|
4
|
+
changed: CapabilitySnapshot;
|
|
5
|
+
}> {
|
|
6
|
+
private snapshot;
|
|
7
|
+
initialize(): void;
|
|
8
|
+
getSnapshot(): CapabilitySnapshot;
|
|
9
|
+
hasCapability(capability: string): boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare class ExperienceStateService extends BaseEventService<{
|
|
12
|
+
changed: ExperienceStateSnapshot;
|
|
13
|
+
}, ExperienceStateConfig> {
|
|
14
|
+
private snapshot;
|
|
15
|
+
initialize(): void;
|
|
16
|
+
getSnapshot(): ExperienceStateSnapshot;
|
|
17
|
+
setMode(mode: ExperienceStateSnapshot["mode"]): void;
|
|
18
|
+
openWidget(): void;
|
|
19
|
+
minimizeWidget(): void;
|
|
20
|
+
closeWidget(): void;
|
|
21
|
+
setConnectionState(connectionState: ConnectionState, lastError?: string): void;
|
|
22
|
+
}
|
|
23
|
+
export declare class SessionService extends BaseEventService<{
|
|
24
|
+
changed: SessionSnapshot;
|
|
25
|
+
}, SessionServiceConfig> {
|
|
26
|
+
private snapshot;
|
|
27
|
+
initialize(): void;
|
|
28
|
+
getSnapshot(): SessionSnapshot;
|
|
29
|
+
touch(): void;
|
|
30
|
+
}
|
|
31
|
+
export declare class ContentContextService extends BaseEventService<{
|
|
32
|
+
changed: ContentContextSnapshot;
|
|
33
|
+
}, ContentContextSnapshot> {
|
|
34
|
+
private snapshot;
|
|
35
|
+
initialize(): void;
|
|
36
|
+
getSnapshot(): ContentContextSnapshot;
|
|
37
|
+
mergeContext(context: Partial<ContentContextSnapshot>): void;
|
|
38
|
+
setGeolocation(latitude: number, longitude: number): void;
|
|
39
|
+
}
|
|
40
|
+
export declare abstract class BaseBackendAdapterModule<TConfig> extends BaseServiceModule<BackendAdapterService, TConfig> {
|
|
41
|
+
abstract readonly adapterKind: BackendAdapterKind;
|
|
42
|
+
abstract send(request: BackendConversationRequest): Promise<BackendConversationResponse>;
|
|
43
|
+
}
|
|
44
|
+
export declare class MockBackendAdapterModule extends BaseBackendAdapterModule<MockBackendAdapterConfig> {
|
|
45
|
+
readonly adapterKind: "mock";
|
|
46
|
+
send(request: BackendConversationRequest): Promise<BackendConversationResponse>;
|
|
47
|
+
}
|
|
48
|
+
export declare class RestBackendAdapterModule extends BaseBackendAdapterModule<RestBackendAdapterConfig> {
|
|
49
|
+
readonly adapterKind: "rest";
|
|
50
|
+
send(request: BackendConversationRequest): Promise<BackendConversationResponse>;
|
|
51
|
+
}
|
|
52
|
+
export declare class BackendAdapterService extends BaseEventService<{
|
|
53
|
+
changed: BackendAdapterStateSnapshot;
|
|
54
|
+
}, BackendAdapterServiceConfig> {
|
|
55
|
+
private snapshot;
|
|
56
|
+
initialize(): void;
|
|
57
|
+
getSnapshot(): BackendAdapterStateSnapshot;
|
|
58
|
+
setPreferredAdapter(preferredAdapter: BackendAdapterKind): void;
|
|
59
|
+
sendMessage(request: BackendConversationRequest): Promise<BackendConversationResponse>;
|
|
60
|
+
private resolveModule;
|
|
61
|
+
}
|
|
62
|
+
export declare class ConversationService extends BaseEventService<{
|
|
63
|
+
changed: ConversationSnapshot;
|
|
64
|
+
}, ConversationServiceConfig> {
|
|
65
|
+
private readonly sessionService;
|
|
66
|
+
private readonly backendAdapterService;
|
|
67
|
+
private readonly contentContextService;
|
|
68
|
+
private readonly experienceStateService;
|
|
69
|
+
private snapshot;
|
|
70
|
+
private sequence;
|
|
71
|
+
constructor(context: ConstructorParameters<typeof BaseEventService<{
|
|
72
|
+
changed: ConversationSnapshot;
|
|
73
|
+
}, ConversationServiceConfig>>[0], sessionService: SessionService, backendAdapterService: BackendAdapterService, contentContextService: ContentContextService, experienceStateService: ExperienceStateService);
|
|
74
|
+
initialize(): void;
|
|
75
|
+
getSnapshot(): ConversationSnapshot;
|
|
76
|
+
sendUserMessage(message: string): Promise<ConversationMessage>;
|
|
77
|
+
private createMessage;
|
|
78
|
+
}
|
|
79
|
+
export declare class RenderStateService extends BaseEventService<{
|
|
80
|
+
changed: RenderStateSnapshot;
|
|
81
|
+
}> {
|
|
82
|
+
private snapshot;
|
|
83
|
+
getSnapshot(): RenderStateSnapshot;
|
|
84
|
+
render(context: LifecycleContext): void;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=services.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"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"}
|
package/dist/services.js
ADDED
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
import { BaseEventService, BaseServiceModule } from "@realitycollective/service-framework";
|
|
2
|
+
function getNow(now) {
|
|
3
|
+
return (now ?? Date.now)();
|
|
4
|
+
}
|
|
5
|
+
function getErrorMessage(error) {
|
|
6
|
+
return error instanceof Error ? error.message : String(error);
|
|
7
|
+
}
|
|
8
|
+
export class CapabilityService extends BaseEventService {
|
|
9
|
+
snapshot = {
|
|
10
|
+
environmentName: "unknown",
|
|
11
|
+
capabilities: []
|
|
12
|
+
};
|
|
13
|
+
initialize() {
|
|
14
|
+
this.snapshot = {
|
|
15
|
+
environmentName: this.environment.name,
|
|
16
|
+
capabilities: Array.from(this.environment.capabilities).sort()
|
|
17
|
+
};
|
|
18
|
+
this.emit("changed", this.snapshot);
|
|
19
|
+
}
|
|
20
|
+
getSnapshot() {
|
|
21
|
+
return this.snapshot;
|
|
22
|
+
}
|
|
23
|
+
hasCapability(capability) {
|
|
24
|
+
return this.environment.hasCapability(capability);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export class ExperienceStateService extends BaseEventService {
|
|
28
|
+
snapshot = {
|
|
29
|
+
mode: "chat-only",
|
|
30
|
+
widgetState: "closed",
|
|
31
|
+
connectionState: "idle"
|
|
32
|
+
};
|
|
33
|
+
initialize() {
|
|
34
|
+
const config = this.serviceConfig ?? {};
|
|
35
|
+
this.snapshot = {
|
|
36
|
+
mode: config.initialMode ?? "chat-only",
|
|
37
|
+
widgetState: config.initialWidgetState ?? "closed",
|
|
38
|
+
connectionState: "idle"
|
|
39
|
+
};
|
|
40
|
+
this.emit("changed", this.snapshot);
|
|
41
|
+
}
|
|
42
|
+
getSnapshot() {
|
|
43
|
+
return this.snapshot;
|
|
44
|
+
}
|
|
45
|
+
setMode(mode) {
|
|
46
|
+
this.snapshot = {
|
|
47
|
+
...this.snapshot,
|
|
48
|
+
mode
|
|
49
|
+
};
|
|
50
|
+
this.emit("changed", this.snapshot);
|
|
51
|
+
}
|
|
52
|
+
openWidget() {
|
|
53
|
+
this.snapshot = {
|
|
54
|
+
...this.snapshot,
|
|
55
|
+
widgetState: "open"
|
|
56
|
+
};
|
|
57
|
+
this.emit("changed", this.snapshot);
|
|
58
|
+
}
|
|
59
|
+
minimizeWidget() {
|
|
60
|
+
this.snapshot = {
|
|
61
|
+
...this.snapshot,
|
|
62
|
+
widgetState: "minimized"
|
|
63
|
+
};
|
|
64
|
+
this.emit("changed", this.snapshot);
|
|
65
|
+
}
|
|
66
|
+
closeWidget() {
|
|
67
|
+
this.snapshot = {
|
|
68
|
+
...this.snapshot,
|
|
69
|
+
widgetState: "closed"
|
|
70
|
+
};
|
|
71
|
+
this.emit("changed", this.snapshot);
|
|
72
|
+
}
|
|
73
|
+
setConnectionState(connectionState, lastError) {
|
|
74
|
+
this.snapshot = {
|
|
75
|
+
...this.snapshot,
|
|
76
|
+
connectionState,
|
|
77
|
+
...(lastError ? { lastError } : {})
|
|
78
|
+
};
|
|
79
|
+
if (!lastError && "lastError" in this.snapshot) {
|
|
80
|
+
this.snapshot = {
|
|
81
|
+
mode: this.snapshot.mode,
|
|
82
|
+
widgetState: this.snapshot.widgetState,
|
|
83
|
+
connectionState: this.snapshot.connectionState
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
this.emit("changed", this.snapshot);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
export class SessionService extends BaseEventService {
|
|
90
|
+
snapshot = {
|
|
91
|
+
sessionId: "session-0",
|
|
92
|
+
createdAt: 0,
|
|
93
|
+
lastActivityAt: 0
|
|
94
|
+
};
|
|
95
|
+
initialize() {
|
|
96
|
+
const config = this.serviceConfig ?? {};
|
|
97
|
+
const timestamp = getNow(config.now);
|
|
98
|
+
this.snapshot = {
|
|
99
|
+
sessionId: config.sessionId ?? `${this.serviceName}-${timestamp}`,
|
|
100
|
+
createdAt: timestamp,
|
|
101
|
+
lastActivityAt: timestamp
|
|
102
|
+
};
|
|
103
|
+
this.emit("changed", this.snapshot);
|
|
104
|
+
}
|
|
105
|
+
getSnapshot() {
|
|
106
|
+
return this.snapshot;
|
|
107
|
+
}
|
|
108
|
+
touch() {
|
|
109
|
+
const config = this.serviceConfig ?? {};
|
|
110
|
+
this.snapshot = {
|
|
111
|
+
...this.snapshot,
|
|
112
|
+
lastActivityAt: getNow(config.now)
|
|
113
|
+
};
|
|
114
|
+
this.emit("changed", this.snapshot);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
export class ContentContextService extends BaseEventService {
|
|
118
|
+
snapshot = {};
|
|
119
|
+
initialize() {
|
|
120
|
+
this.snapshot = {
|
|
121
|
+
...this.serviceConfig
|
|
122
|
+
};
|
|
123
|
+
this.emit("changed", this.snapshot);
|
|
124
|
+
}
|
|
125
|
+
getSnapshot() {
|
|
126
|
+
return this.snapshot;
|
|
127
|
+
}
|
|
128
|
+
mergeContext(context) {
|
|
129
|
+
this.snapshot = {
|
|
130
|
+
...this.snapshot,
|
|
131
|
+
...context
|
|
132
|
+
};
|
|
133
|
+
this.emit("changed", this.snapshot);
|
|
134
|
+
}
|
|
135
|
+
setGeolocation(latitude, longitude) {
|
|
136
|
+
this.snapshot = {
|
|
137
|
+
...this.snapshot,
|
|
138
|
+
geolocation: {
|
|
139
|
+
latitude,
|
|
140
|
+
longitude
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
this.emit("changed", this.snapshot);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
export class BaseBackendAdapterModule extends BaseServiceModule {
|
|
147
|
+
}
|
|
148
|
+
export class MockBackendAdapterModule extends BaseBackendAdapterModule {
|
|
149
|
+
adapterKind = "mock";
|
|
150
|
+
async send(request) {
|
|
151
|
+
const config = this.serviceConfig ?? {};
|
|
152
|
+
return {
|
|
153
|
+
adapter: this.adapterKind,
|
|
154
|
+
content: `${config.replyPrefix ?? "Mock reply"}: ${request.message}`,
|
|
155
|
+
timestamp: getNow(config.now)
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
export class RestBackendAdapterModule extends BaseBackendAdapterModule {
|
|
160
|
+
adapterKind = "rest";
|
|
161
|
+
async send(request) {
|
|
162
|
+
const config = this.serviceConfig ?? {};
|
|
163
|
+
if (!config.endpoint) {
|
|
164
|
+
throw new Error("REST adapter endpoint is required.");
|
|
165
|
+
}
|
|
166
|
+
const fetchFn = config.fetchFn ?? globalThis.fetch?.bind(globalThis);
|
|
167
|
+
if (!fetchFn) {
|
|
168
|
+
throw new Error("REST adapter fetch implementation is required.");
|
|
169
|
+
}
|
|
170
|
+
const response = await fetchFn(config.endpoint, {
|
|
171
|
+
method: "POST",
|
|
172
|
+
headers: {
|
|
173
|
+
"Content-Type": "application/json",
|
|
174
|
+
...config.headers
|
|
175
|
+
},
|
|
176
|
+
body: JSON.stringify(request)
|
|
177
|
+
});
|
|
178
|
+
if (!response.ok) {
|
|
179
|
+
throw new Error(`REST adapter request failed with status ${response.status}.`);
|
|
180
|
+
}
|
|
181
|
+
const payload = await response.json();
|
|
182
|
+
if (typeof payload.message !== "string") {
|
|
183
|
+
throw new Error("REST adapter response must include a string message field.");
|
|
184
|
+
}
|
|
185
|
+
return {
|
|
186
|
+
adapter: this.adapterKind,
|
|
187
|
+
content: payload.message,
|
|
188
|
+
timestamp: getNow(config.now)
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
export class BackendAdapterService extends BaseEventService {
|
|
193
|
+
snapshot = {
|
|
194
|
+
preferredAdapter: "mock",
|
|
195
|
+
state: "idle"
|
|
196
|
+
};
|
|
197
|
+
initialize() {
|
|
198
|
+
const config = this.serviceConfig ?? {};
|
|
199
|
+
this.snapshot = {
|
|
200
|
+
preferredAdapter: config.preferredAdapter ?? "mock",
|
|
201
|
+
state: "idle"
|
|
202
|
+
};
|
|
203
|
+
this.emit("changed", this.snapshot);
|
|
204
|
+
}
|
|
205
|
+
getSnapshot() {
|
|
206
|
+
return this.snapshot;
|
|
207
|
+
}
|
|
208
|
+
setPreferredAdapter(preferredAdapter) {
|
|
209
|
+
this.snapshot = {
|
|
210
|
+
...this.snapshot,
|
|
211
|
+
preferredAdapter
|
|
212
|
+
};
|
|
213
|
+
this.emit("changed", this.snapshot);
|
|
214
|
+
}
|
|
215
|
+
async sendMessage(request) {
|
|
216
|
+
const module = this.resolveModule();
|
|
217
|
+
this.snapshot = {
|
|
218
|
+
...this.snapshot,
|
|
219
|
+
activeAdapter: module.adapterKind,
|
|
220
|
+
state: "sending"
|
|
221
|
+
};
|
|
222
|
+
this.emit("changed", this.snapshot);
|
|
223
|
+
try {
|
|
224
|
+
const response = await module.send(request);
|
|
225
|
+
this.snapshot = {
|
|
226
|
+
preferredAdapter: this.snapshot.preferredAdapter,
|
|
227
|
+
activeAdapter: response.adapter,
|
|
228
|
+
state: "ready"
|
|
229
|
+
};
|
|
230
|
+
this.emit("changed", this.snapshot);
|
|
231
|
+
return response;
|
|
232
|
+
}
|
|
233
|
+
catch (error) {
|
|
234
|
+
this.snapshot = {
|
|
235
|
+
...this.snapshot,
|
|
236
|
+
state: "error",
|
|
237
|
+
lastError: getErrorMessage(error)
|
|
238
|
+
};
|
|
239
|
+
this.emit("changed", this.snapshot);
|
|
240
|
+
throw error;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
resolveModule() {
|
|
244
|
+
const modules = this.serviceModules.filter((serviceModule) => serviceModule instanceof BaseBackendAdapterModule);
|
|
245
|
+
if (modules.length === 0) {
|
|
246
|
+
throw new Error("No backend adapter modules are registered.");
|
|
247
|
+
}
|
|
248
|
+
return modules.find((module) => module.adapterKind === this.snapshot.preferredAdapter) ?? modules[0];
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
export class ConversationService extends BaseEventService {
|
|
252
|
+
sessionService;
|
|
253
|
+
backendAdapterService;
|
|
254
|
+
contentContextService;
|
|
255
|
+
experienceStateService;
|
|
256
|
+
snapshot = {
|
|
257
|
+
messages: [],
|
|
258
|
+
status: "idle"
|
|
259
|
+
};
|
|
260
|
+
sequence = 0;
|
|
261
|
+
constructor(context, sessionService, backendAdapterService, contentContextService, experienceStateService) {
|
|
262
|
+
super(context);
|
|
263
|
+
this.sessionService = sessionService;
|
|
264
|
+
this.backendAdapterService = backendAdapterService;
|
|
265
|
+
this.contentContextService = contentContextService;
|
|
266
|
+
this.experienceStateService = experienceStateService;
|
|
267
|
+
}
|
|
268
|
+
initialize() {
|
|
269
|
+
const config = this.serviceConfig ?? {};
|
|
270
|
+
if (config.welcomeMessage) {
|
|
271
|
+
this.snapshot = {
|
|
272
|
+
messages: [this.createMessage("assistant", config.welcomeMessage)],
|
|
273
|
+
status: "idle"
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
this.emit("changed", this.snapshot);
|
|
277
|
+
}
|
|
278
|
+
getSnapshot() {
|
|
279
|
+
return this.snapshot;
|
|
280
|
+
}
|
|
281
|
+
async sendUserMessage(message) {
|
|
282
|
+
const userMessage = this.createMessage("user", message);
|
|
283
|
+
this.snapshot = {
|
|
284
|
+
messages: [...this.snapshot.messages, userMessage],
|
|
285
|
+
status: "sending"
|
|
286
|
+
};
|
|
287
|
+
this.experienceStateService.openWidget();
|
|
288
|
+
this.experienceStateService.setConnectionState("sending");
|
|
289
|
+
this.emit("changed", this.snapshot);
|
|
290
|
+
try {
|
|
291
|
+
const response = await this.backendAdapterService.sendMessage({
|
|
292
|
+
sessionId: this.sessionService.getSnapshot().sessionId,
|
|
293
|
+
message,
|
|
294
|
+
context: this.contentContextService.getSnapshot()
|
|
295
|
+
});
|
|
296
|
+
const assistantMessage = this.createMessage("assistant", response.content, response.timestamp);
|
|
297
|
+
this.snapshot = {
|
|
298
|
+
messages: [...this.snapshot.messages, assistantMessage],
|
|
299
|
+
status: "ready"
|
|
300
|
+
};
|
|
301
|
+
this.sessionService.touch();
|
|
302
|
+
this.experienceStateService.setConnectionState("ready");
|
|
303
|
+
this.emit("changed", this.snapshot);
|
|
304
|
+
return assistantMessage;
|
|
305
|
+
}
|
|
306
|
+
catch (error) {
|
|
307
|
+
const lastError = getErrorMessage(error);
|
|
308
|
+
this.snapshot = {
|
|
309
|
+
...this.snapshot,
|
|
310
|
+
status: "error",
|
|
311
|
+
lastError
|
|
312
|
+
};
|
|
313
|
+
this.experienceStateService.setConnectionState("error", lastError);
|
|
314
|
+
this.emit("changed", this.snapshot);
|
|
315
|
+
throw error;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
createMessage(role, content, timestamp) {
|
|
319
|
+
const config = this.serviceConfig ?? {};
|
|
320
|
+
this.sequence += 1;
|
|
321
|
+
return {
|
|
322
|
+
id: `${role}-${this.sequence}`,
|
|
323
|
+
role,
|
|
324
|
+
content,
|
|
325
|
+
timestamp: timestamp ?? getNow(config.now)
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
export class RenderStateService extends BaseEventService {
|
|
330
|
+
snapshot = {
|
|
331
|
+
timestamp: 0,
|
|
332
|
+
deltaTime: 0,
|
|
333
|
+
frame: 0,
|
|
334
|
+
source: "idle"
|
|
335
|
+
};
|
|
336
|
+
getSnapshot() {
|
|
337
|
+
return this.snapshot;
|
|
338
|
+
}
|
|
339
|
+
render(context) {
|
|
340
|
+
this.snapshot = context;
|
|
341
|
+
this.emit("changed", this.snapshot);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
//# sourceMappingURL=services.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"services.js","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"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"}
|
package/dist/tokens.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { BackendAdapterService, CapabilityService, ContentContextService, ConversationService, ExperienceStateService, MockBackendAdapterModule, RenderStateService, RestBackendAdapterModule, SessionService } from "./services.js";
|
|
2
|
+
export declare const CAPABILITY_SERVICE_TOKEN: import("@realitycollective/service-framework").ServiceToken<CapabilityService>;
|
|
3
|
+
export declare const EXPERIENCE_STATE_SERVICE_TOKEN: import("@realitycollective/service-framework").ServiceToken<ExperienceStateService>;
|
|
4
|
+
export declare const SESSION_SERVICE_TOKEN: import("@realitycollective/service-framework").ServiceToken<SessionService>;
|
|
5
|
+
export declare const CONTENT_CONTEXT_SERVICE_TOKEN: import("@realitycollective/service-framework").ServiceToken<ContentContextService>;
|
|
6
|
+
export declare const BACKEND_ADAPTER_SERVICE_TOKEN: import("@realitycollective/service-framework").ServiceToken<BackendAdapterService>;
|
|
7
|
+
export declare const CONVERSATION_SERVICE_TOKEN: import("@realitycollective/service-framework").ServiceToken<ConversationService>;
|
|
8
|
+
export declare const RENDER_STATE_SERVICE_TOKEN: import("@realitycollective/service-framework").ServiceToken<RenderStateService>;
|
|
9
|
+
export declare const MOCK_BACKEND_ADAPTER_MODULE_TOKEN: import("@realitycollective/service-framework").ServiceToken<MockBackendAdapterModule>;
|
|
10
|
+
export declare const REST_BACKEND_ADAPTER_MODULE_TOKEN: import("@realitycollective/service-framework").ServiceToken<RestBackendAdapterModule>;
|
|
11
|
+
//# sourceMappingURL=tokens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,EACxB,kBAAkB,EAClB,wBAAwB,EACxB,cAAc,EACf,MAAM,eAAe,CAAC;AAEvB,eAAO,MAAM,wBAAwB,gFAA6D,CAAC;AACnG,eAAO,MAAM,8BAA8B,qFAAuE,CAAC;AACnH,eAAO,MAAM,qBAAqB,6EAAuD,CAAC;AAC1F,eAAO,MAAM,6BAA6B,oFAAqE,CAAC;AAChH,eAAO,MAAM,6BAA6B,oFAAqE,CAAC;AAChH,eAAO,MAAM,0BAA0B,kFAAiE,CAAC;AACzG,eAAO,MAAM,0BAA0B,iFAA+D,CAAC;AACvG,eAAO,MAAM,iCAAiC,uFAA2E,CAAC;AAC1H,eAAO,MAAM,iCAAiC,uFAA2E,CAAC"}
|
package/dist/tokens.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createServiceToken } from "@realitycollective/service-framework";
|
|
2
|
+
export const CAPABILITY_SERVICE_TOKEN = createServiceToken("CapabilityService");
|
|
3
|
+
export const EXPERIENCE_STATE_SERVICE_TOKEN = createServiceToken("ExperienceStateService");
|
|
4
|
+
export const SESSION_SERVICE_TOKEN = createServiceToken("SessionService");
|
|
5
|
+
export const CONTENT_CONTEXT_SERVICE_TOKEN = createServiceToken("ContentContextService");
|
|
6
|
+
export const BACKEND_ADAPTER_SERVICE_TOKEN = createServiceToken("BackendAdapterService");
|
|
7
|
+
export const CONVERSATION_SERVICE_TOKEN = createServiceToken("ConversationService");
|
|
8
|
+
export const RENDER_STATE_SERVICE_TOKEN = createServiceToken("RenderStateService");
|
|
9
|
+
export const MOCK_BACKEND_ADAPTER_MODULE_TOKEN = createServiceToken("MockBackendAdapterModule");
|
|
10
|
+
export const REST_BACKEND_ADAPTER_MODULE_TOKEN = createServiceToken("RestBackendAdapterModule");
|
|
11
|
+
//# sourceMappingURL=tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAa1E,MAAM,CAAC,MAAM,wBAAwB,GAAG,kBAAkB,CAAoB,mBAAmB,CAAC,CAAC;AACnG,MAAM,CAAC,MAAM,8BAA8B,GAAG,kBAAkB,CAAyB,wBAAwB,CAAC,CAAC;AACnH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAAkB,CAAiB,gBAAgB,CAAC,CAAC;AAC1F,MAAM,CAAC,MAAM,6BAA6B,GAAG,kBAAkB,CAAwB,uBAAuB,CAAC,CAAC;AAChH,MAAM,CAAC,MAAM,6BAA6B,GAAG,kBAAkB,CAAwB,uBAAuB,CAAC,CAAC;AAChH,MAAM,CAAC,MAAM,0BAA0B,GAAG,kBAAkB,CAAsB,qBAAqB,CAAC,CAAC;AACzG,MAAM,CAAC,MAAM,0BAA0B,GAAG,kBAAkB,CAAqB,oBAAoB,CAAC,CAAC;AACvG,MAAM,CAAC,MAAM,iCAAiC,GAAG,kBAAkB,CAA2B,0BAA0B,CAAC,CAAC;AAC1H,MAAM,CAAC,MAAM,iCAAiC,GAAG,kBAAkB,CAA2B,0BAA0B,CAAC,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@realitycollective/service-framework-client",
|
|
3
|
+
"version": "1.0.0-preview.1",
|
|
4
|
+
"description": "Base React and three.js client composition package for the Reality Collective TypeScript Service Framework.",
|
|
5
|
+
"author": "Reality Collective",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"main": "./dist/index.js",
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"default": "./dist/index.js"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist",
|
|
18
|
+
"Examples"
|
|
19
|
+
],
|
|
20
|
+
"keywords": [
|
|
21
|
+
"service-framework",
|
|
22
|
+
"react",
|
|
23
|
+
"three",
|
|
24
|
+
"threejs",
|
|
25
|
+
"client",
|
|
26
|
+
"realitycollective",
|
|
27
|
+
"typescript"
|
|
28
|
+
],
|
|
29
|
+
"repository": {
|
|
30
|
+
"type": "git",
|
|
31
|
+
"url": "https://github.com/realitycollective/com.realitycollective.service-framework.ts.git"
|
|
32
|
+
},
|
|
33
|
+
"homepage": "https://github.com/realitycollective/com.realitycollective.service-framework.ts#readme",
|
|
34
|
+
"bugs": {
|
|
35
|
+
"url": "https://github.com/realitycollective/com.realitycollective.service-framework.ts/issues"
|
|
36
|
+
},
|
|
37
|
+
"dependencies": {
|
|
38
|
+
"@realitycollective/service-framework": "file:../service-framework",
|
|
39
|
+
"@realitycollective/service-framework-react": "file:../service-framework-react",
|
|
40
|
+
"@realitycollective/service-framework-three": "file:../service-framework-three"
|
|
41
|
+
},
|
|
42
|
+
"peerDependencies": {
|
|
43
|
+
"react": "^19.2.0"
|
|
44
|
+
},
|
|
45
|
+
"scripts": {
|
|
46
|
+
"build": "tsc -p tsconfig.build.json",
|
|
47
|
+
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
48
|
+
}
|
|
49
|
+
}
|