@open-core/framework 1.0.5-beta.2 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/README.md +2 -8
  2. package/dist/adapters/contracts/IEngineEvents.d.ts +3 -3
  3. package/dist/adapters/contracts/IExports.d.ts +2 -2
  4. package/dist/adapters/contracts/client/IClientLocalPlayerBridge.d.ts +21 -0
  5. package/dist/adapters/contracts/client/IClientLocalPlayerBridge.js +6 -0
  6. package/dist/adapters/contracts/client/IClientRuntimeBridge.d.ts +5 -5
  7. package/dist/adapters/contracts/client/camera/IClientCameraPort.d.ts +107 -0
  8. package/dist/adapters/contracts/client/camera/IClientCameraPort.js +8 -0
  9. package/dist/adapters/contracts/client/camera/index.d.ts +1 -0
  10. package/dist/adapters/contracts/client/camera/index.js +1 -0
  11. package/dist/adapters/contracts/client/index.d.ts +4 -0
  12. package/dist/adapters/contracts/client/index.js +4 -0
  13. package/dist/adapters/contracts/client/ped/IClientPedPort.d.ts +62 -0
  14. package/dist/adapters/contracts/client/ped/IClientPedPort.js +5 -0
  15. package/dist/adapters/contracts/client/ped/index.d.ts +1 -0
  16. package/dist/adapters/contracts/client/ped/index.js +1 -0
  17. package/dist/adapters/contracts/client/progress/IClientProgressPort.d.ts +53 -0
  18. package/dist/adapters/contracts/client/progress/IClientProgressPort.js +8 -0
  19. package/dist/adapters/contracts/client/progress/index.d.ts +1 -0
  20. package/dist/adapters/contracts/client/progress/index.js +1 -0
  21. package/dist/adapters/contracts/client/spawn/IClientSpawnBridge.d.ts +5 -6
  22. package/dist/adapters/contracts/client/spawn/IClientSpawnBridge.js +5 -1
  23. package/dist/adapters/contracts/client/spawn/IClientSpawnPort.d.ts +19 -0
  24. package/dist/adapters/contracts/client/spawn/IClientSpawnPort.js +2 -0
  25. package/dist/adapters/contracts/client/spawn/index.d.ts +2 -0
  26. package/dist/adapters/contracts/client/spawn/index.js +2 -0
  27. package/dist/adapters/contracts/client/spawn/types.d.ts +3 -0
  28. package/dist/adapters/contracts/client/ui/webview/IClientWebViewBridge.d.ts +1 -0
  29. package/dist/adapters/contracts/client/ui/webview/types.d.ts +2 -0
  30. package/dist/adapters/contracts/client/vehicle/IClientVehiclePort.d.ts +166 -0
  31. package/dist/adapters/contracts/client/vehicle/IClientVehiclePort.js +8 -0
  32. package/dist/adapters/contracts/client/vehicle/index.d.ts +1 -0
  33. package/dist/adapters/contracts/client/vehicle/index.js +1 -0
  34. package/dist/adapters/contracts/transport/events.api.d.ts +3 -3
  35. package/dist/adapters/contracts/transport/index.d.ts +1 -0
  36. package/dist/adapters/contracts/transport/index.js +1 -0
  37. package/dist/adapters/contracts/transport/rpc-error.d.ts +17 -0
  38. package/dist/adapters/contracts/transport/rpc-error.js +28 -0
  39. package/dist/adapters/contracts/transport/rpc.api.d.ts +3 -3
  40. package/dist/adapters/node/transport/node.events.d.ts +4 -4
  41. package/dist/adapters/node/transport/node.rpc.d.ts +3 -3
  42. package/dist/adapters/node/transport/node.rpc.js +1 -1
  43. package/dist/contracts.d.ts +1 -0
  44. package/dist/contracts.js +1 -0
  45. package/dist/index.d.ts +1 -0
  46. package/dist/index.js +1 -0
  47. package/dist/kernel/logger/client-log-console.js +8 -8
  48. package/dist/kernel/logger/index.d.ts +1 -1
  49. package/dist/kernel/logger/index.js +1 -1
  50. package/dist/kernel/logger/logger.types.d.ts +1 -0
  51. package/dist/kernel/logger/logger.types.js +35 -0
  52. package/dist/kernel/logger/transports/buffered.transport.js +4 -4
  53. package/dist/kernel/logger/transports/console.transport.js +2 -2
  54. package/dist/kernel/logger/transports/simple-console.transport.js +2 -2
  55. package/dist/runtime/client/adapter/index.d.ts +5 -0
  56. package/dist/runtime/client/adapter/index.js +5 -0
  57. package/dist/runtime/client/adapter/node-camera-port.d.ts +19 -0
  58. package/dist/runtime/client/adapter/node-camera-port.js +31 -0
  59. package/dist/runtime/client/adapter/node-client-adapter.js +15 -1
  60. package/dist/runtime/client/adapter/node-local-player-bridge.d.ts +3 -0
  61. package/dist/runtime/client/adapter/node-local-player-bridge.js +9 -0
  62. package/dist/runtime/client/adapter/node-log-console.js +8 -8
  63. package/dist/runtime/client/adapter/node-ped-port.d.ts +20 -0
  64. package/dist/runtime/client/adapter/node-ped-port.js +38 -0
  65. package/dist/runtime/client/adapter/node-progress-port.d.ts +8 -0
  66. package/dist/runtime/client/adapter/node-progress-port.js +27 -0
  67. package/dist/runtime/client/adapter/node-runtime-bridge.d.ts +2 -4
  68. package/dist/runtime/client/adapter/node-spawn-bridge.d.ts +5 -5
  69. package/dist/runtime/client/adapter/node-spawn-bridge.js +8 -4
  70. package/dist/runtime/client/adapter/node-vehicle-port.d.ts +31 -0
  71. package/dist/runtime/client/adapter/node-vehicle-port.js +73 -0
  72. package/dist/runtime/client/adapter/node-webview-bridge.d.ts +1 -0
  73. package/dist/runtime/client/adapter/node-webview-bridge.js +2 -0
  74. package/dist/runtime/client/controllers/appearance.controller.d.ts +3 -3
  75. package/dist/runtime/client/controllers/appearance.controller.js +11 -10
  76. package/dist/runtime/client/controllers/spawner.controller.js +4 -3
  77. package/dist/runtime/client/services/camera.d.ts +4 -26
  78. package/dist/runtime/client/services/camera.js +21 -27
  79. package/dist/runtime/client/services/notification.service.d.ts +3 -3
  80. package/dist/runtime/client/services/notification.service.js +7 -7
  81. package/dist/runtime/client/services/ped.service.d.ts +6 -21
  82. package/dist/runtime/client/services/ped.service.js +31 -78
  83. package/dist/runtime/client/services/progress.service.d.ts +4 -50
  84. package/dist/runtime/client/services/progress.service.js +11 -143
  85. package/dist/runtime/client/services/session-bridge.service.js +3 -2
  86. package/dist/runtime/client/services/spawn.service.d.ts +3 -5
  87. package/dist/runtime/client/services/spawn.service.js +12 -17
  88. package/dist/runtime/client/services/vehicle-client.service.d.ts +3 -3
  89. package/dist/runtime/client/services/vehicle-client.service.js +43 -143
  90. package/dist/runtime/client/services/vehicle.service.d.ts +4 -41
  91. package/dist/runtime/client/services/vehicle.service.js +24 -130
  92. package/dist/runtime/client/webview-bridge.d.ts +3 -0
  93. package/dist/runtime/client/webview-bridge.js +6 -0
  94. package/dist/runtime/client/webview.service.d.ts +1 -0
  95. package/dist/runtime/client/webview.service.js +5 -0
  96. package/dist/runtime/server/adapter/node-player-appearance-lifecycle-server.js +3 -2
  97. package/dist/runtime/server/adapter/node-player-lifecycle-server.js +4 -3
  98. package/dist/runtime/server/adapter/node-vehicle-lifecycle-server.js +2 -1
  99. package/dist/runtime/server/apis/chat.api.js +6 -5
  100. package/dist/runtime/server/apis/npcs.api.js +2 -1
  101. package/dist/runtime/server/apis/parallel-compute.api.js +1 -0
  102. package/dist/runtime/server/apis/vehicle-modification.api.js +6 -4
  103. package/dist/runtime/server/apis/vehicles.api.js +7 -4
  104. package/dist/runtime/server/bootstrap.js +13 -12
  105. package/dist/runtime/server/controllers/command-export.controller.js +4 -2
  106. package/dist/runtime/server/controllers/remote-command-execution.controller.js +2 -1
  107. package/dist/runtime/server/controllers/vehicle.controller.js +6 -5
  108. package/dist/runtime/server/decorators/command.d.ts +2 -0
  109. package/dist/runtime/server/decorators/command.js +3 -1
  110. package/dist/runtime/server/entities/npc.d.ts +1 -1
  111. package/dist/runtime/server/entities/player.d.ts +1 -1
  112. package/dist/runtime/server/entities/player.js +10 -3
  113. package/dist/runtime/server/helpers/command-validation.helper.js +20 -7
  114. package/dist/runtime/server/helpers/function-helper.d.ts +1 -0
  115. package/dist/runtime/server/helpers/function-helper.js +15 -8
  116. package/dist/runtime/server/implementations/local/channel.local.d.ts +1 -1
  117. package/dist/runtime/server/implementations/local/channel.local.js +3 -2
  118. package/dist/runtime/server/ports/channel.api-port.d.ts +1 -1
  119. package/dist/runtime/server/services/parallel/worker-pool.d.ts +1 -1
  120. package/dist/runtime/server/services/parallel/worker-pool.js +38 -6
  121. package/dist/runtime/server/services/parallel/worker.js +1 -0
  122. package/dist/runtime/server/system/processors/onRpc.processor.js +14 -3
  123. package/dist/runtime/server/system/schema-generator.d.ts +1 -1
  124. package/dist/runtime/server/system/schema-generator.js +6 -3
  125. package/dist/runtime/shared/helpers/process-tuple-schema.js +3 -0
  126. package/dist/runtime/shared/types/system-types.d.ts +55 -0
  127. package/dist/runtime/shared/types/system-types.js +54 -0
  128. package/package.json +21 -11
package/README.md CHANGED
@@ -6,9 +6,9 @@
6
6
  [![website](https://img.shields.io/badge/web-opencorejs.dev-black?style=flat-square)](https://opencorejs.dev)
7
7
 
8
8
 
9
- # OpenCore Framework - Open Stable beta
9
+ # OpenCore Framework - Stable v1
10
10
 
11
- OpenCore is a TypeScript multiplayer runtime framework targeting CitizenFX runtimes (Cfx) via adapters.
11
+ OpenCore is a TypeScript multiplayer runtime framework targeting CitizenFX runtimes (Cfx/RageMP) via adapters.
12
12
 
13
13
  It is not a gamemode or RP framework. It provides:
14
14
 
@@ -277,12 +277,6 @@ pnpm lint:fix
277
277
  pnpm format
278
278
  ```
279
279
 
280
- ## Ecosystem
281
-
282
- OpenCore is designed to be extended via separate packages/resources.
283
-
284
- - `@open-core/identity`: identity and permission system
285
-
286
280
  ## License
287
281
 
288
282
  MPL-2.0. See `LICENSE`.
@@ -6,8 +6,8 @@ export declare abstract class IEngineEvents {
6
6
  * @param eventName - The event name to listen for
7
7
  * @param handler - The callback to invoke when the event is emitted
8
8
  */
9
- abstract on(eventName: string, handler?: (...args: any[]) => void): void;
10
- onRuntime(eventName: RuntimeEventName, handler?: (...args: any[]) => void): void;
9
+ abstract on<TArgs extends readonly unknown[]>(eventName: string, handler?: (...args: TArgs) => void): void;
10
+ onRuntime<TArgs extends readonly unknown[]>(eventName: RuntimeEventName, handler?: (...args: TArgs) => void): void;
11
11
  getRuntimeEventMap(): RuntimeEventMap;
12
12
  /**
13
13
  * Emits a local event.
@@ -19,5 +19,5 @@ export declare abstract class IEngineEvents {
19
19
  * @param eventName - The event name to emit
20
20
  * @param args - Arguments to pass to event handlers
21
21
  */
22
- abstract emit(eventName: string, ...args: any[]): void;
22
+ abstract emit<TArgs extends readonly unknown[]>(eventName: string, ...args: TArgs): void;
23
23
  }
@@ -1,4 +1,4 @@
1
1
  export declare abstract class IExports {
2
- abstract register(exportName: string, handler: (...args: any[]) => any): void;
3
- abstract getResource<T = any>(resourceName: string): T | undefined;
2
+ abstract register(exportName: string, handler: (...args: unknown[]) => unknown): void;
3
+ abstract getResource<T = unknown>(resourceName: string): T | undefined;
4
4
  }
@@ -1,4 +1,25 @@
1
1
  import type { Vector3 } from '../../../kernel/utils/vector3';
2
+ /**
3
+ * Port describing the local player from the client perspective.
4
+ *
5
+ * Adapters expose the local player's handle and spatial context so framework
6
+ * services do not need to reach into low-level platform primitives.
7
+ */
2
8
  export declare abstract class IClientLocalPlayerBridge {
9
+ /**
10
+ * Returns the current runtime handle for the local player entity.
11
+ */
12
+ abstract getHandle(): number;
13
+ /**
14
+ * Returns the current world position for the local player.
15
+ */
16
+ abstract getPosition(): Vector3;
17
+ /**
18
+ * Returns the current heading for the local player.
19
+ */
20
+ abstract getHeading(): number;
21
+ /**
22
+ * Moves the local player to a new position and optional heading.
23
+ */
3
24
  abstract setPosition(position: Vector3, heading?: number): void;
4
25
  }
@@ -1,2 +1,8 @@
1
+ /**
2
+ * Port describing the local player from the client perspective.
3
+ *
4
+ * Adapters expose the local player's handle and spatial context so framework
5
+ * services do not need to reach into low-level platform primitives.
6
+ */
1
7
  export class IClientLocalPlayerBridge {
2
8
  }
@@ -1,18 +1,18 @@
1
1
  export declare abstract class IClientRuntimeBridge {
2
2
  abstract getCurrentResourceName(): string;
3
- abstract on(eventName: string, handler: (...args: any[]) => void | Promise<void>): void;
4
- abstract registerCommand(commandName: string, handler: (...args: any[]) => void, restricted: boolean): void;
3
+ abstract on<TArgs extends readonly unknown[]>(eventName: string, handler: (...args: TArgs) => void | Promise<void>): void;
4
+ abstract registerCommand(commandName: string, handler: (...args: unknown[]) => void, restricted: boolean): void;
5
5
  abstract registerKeyMapping(commandName: string, description: string, inputMapper: string, key: string): void;
6
6
  abstract setTick(handler: () => void | Promise<void>): unknown;
7
7
  abstract clearTick(handle: unknown): void;
8
8
  abstract getGameTimer(): number;
9
- registerWebViewCallback(eventName: string, handler: (data: any, cb: (response: unknown) => void) => void | Promise<void>): void;
9
+ registerWebViewCallback(eventName: string, handler: (data: unknown, cb: (response: unknown) => void) => void | Promise<void>): void;
10
10
  sendWebViewMessage(message: string): void;
11
11
  setWebViewFocus(hasFocus: boolean, hasCursor: boolean): void;
12
12
  setWebViewInputPassthrough(enabled: boolean): void;
13
- abstract registerNuiCallback(eventName: string, handler: (data: any, cb: (response: unknown) => void) => void | Promise<void>): void;
13
+ abstract registerNuiCallback(eventName: string, handler: (data: unknown, cb: (response: unknown) => void) => void | Promise<void>): void;
14
14
  abstract sendNuiMessage(message: string): void;
15
15
  abstract setNuiFocus(hasFocus: boolean, hasCursor: boolean): void;
16
16
  abstract setNuiFocusKeepInput(keepInput: boolean): void;
17
- abstract registerExport(exportName: string, handler: (...args: any[]) => any): void;
17
+ abstract registerExport<TArgs extends readonly unknown[], TResult = unknown>(exportName: string, handler: (...args: TArgs) => TResult): void;
18
18
  }
@@ -0,0 +1,107 @@
1
+ import type { Vector3 } from '../../../../kernel/utils/vector3';
2
+ /**
3
+ * Euler rotation used by scripted camera implementations.
4
+ */
5
+ export interface ClientCameraRotation {
6
+ x: number;
7
+ y: number;
8
+ z: number;
9
+ }
10
+ /**
11
+ * Complete transform payload for a scripted camera.
12
+ */
13
+ export interface ClientCameraTransform {
14
+ position: Vector3;
15
+ rotation?: ClientCameraRotation;
16
+ fov?: number;
17
+ }
18
+ /**
19
+ * Options for creating a new scripted camera.
20
+ */
21
+ export interface ClientCameraCreateOptions {
22
+ camName?: string;
23
+ active?: boolean;
24
+ transform?: ClientCameraTransform;
25
+ }
26
+ /**
27
+ * Options for enabling or disabling camera rendering.
28
+ */
29
+ export interface ClientCameraRenderOptions {
30
+ ease?: boolean;
31
+ easeTimeMs?: number;
32
+ }
33
+ /**
34
+ * Shake parameters for a scripted camera.
35
+ */
36
+ export interface ClientCameraShakeOptions {
37
+ type: string;
38
+ amplitude: number;
39
+ }
40
+ /**
41
+ * Intent-oriented client camera port.
42
+ *
43
+ * The framework asks for high-level camera actions through this port and the
44
+ * active adapter decides how those actions are achieved for the runtime.
45
+ */
46
+ export declare abstract class IClientCameraPort {
47
+ /**
48
+ * Creates a new scripted camera and returns its runtime handle.
49
+ */
50
+ abstract create(options?: ClientCameraCreateOptions): number;
51
+ /**
52
+ * Activates or deactivates a specific camera.
53
+ */
54
+ abstract setActive(camera: number, active: boolean): void;
55
+ /**
56
+ * Enables or disables scripted camera rendering.
57
+ */
58
+ abstract render(enable: boolean, options?: ClientCameraRenderOptions): void;
59
+ /**
60
+ * Destroys a single scripted camera.
61
+ */
62
+ abstract destroy(camera: number, destroyActiveCamera?: boolean): void;
63
+ /**
64
+ * Destroys every scripted camera controlled by the adapter/runtime.
65
+ */
66
+ abstract destroyAll(destroyActiveCamera?: boolean): void;
67
+ /**
68
+ * Applies a transform to a camera.
69
+ */
70
+ abstract setTransform(camera: number, transform: ClientCameraTransform): void;
71
+ /**
72
+ * Updates only the position of a camera.
73
+ */
74
+ abstract setPosition(camera: number, position: Vector3): void;
75
+ /**
76
+ * Updates only the rotation of a camera.
77
+ */
78
+ abstract setRotation(camera: number, rotation: ClientCameraRotation, rotationOrder?: number): void;
79
+ /**
80
+ * Updates only the field of view of a camera.
81
+ */
82
+ abstract setFov(camera: number, fov: number): void;
83
+ /**
84
+ * Makes the camera point at a world position.
85
+ */
86
+ abstract pointAtCoords(camera: number, position: Vector3): void;
87
+ /**
88
+ * Makes the camera point at an entity with an optional offset.
89
+ */
90
+ abstract pointAtEntity(camera: number, entity: number, offset?: Vector3): void;
91
+ /**
92
+ * Stops any pointing target on the camera.
93
+ */
94
+ abstract stopPointing(camera: number): void;
95
+ /**
96
+ * Interpolates from one camera to another.
97
+ */
98
+ abstract interpolate(fromCamera: number, toCamera: number, durationMs: number, easeLocation?: boolean, easeRotation?: boolean): void;
99
+ /**
100
+ * Starts a camera shake effect.
101
+ */
102
+ abstract shake(camera: number, options: ClientCameraShakeOptions): void;
103
+ /**
104
+ * Stops any active shake effect on a camera.
105
+ */
106
+ abstract stopShaking(camera: number, stopImmediately?: boolean): void;
107
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Intent-oriented client camera port.
3
+ *
4
+ * The framework asks for high-level camera actions through this port and the
5
+ * active adapter decides how those actions are achieved for the runtime.
6
+ */
7
+ export class IClientCameraPort {
8
+ }
@@ -0,0 +1 @@
1
+ export * from './IClientCameraPort';
@@ -0,0 +1 @@
1
+ export * from './IClientCameraPort';
@@ -1,7 +1,11 @@
1
+ export * from './camera';
1
2
  export * from './IClientLogConsole';
2
3
  export * from './IClientLocalPlayerBridge';
3
4
  export * from './IClientPlatformBridge';
4
5
  export * from './IClientRuntimeBridge';
5
6
  export * from './IGtaPedAppearanceBridge';
7
+ export * from './ped';
8
+ export * from './progress';
6
9
  export * from './spawn';
7
10
  export * from './ui';
11
+ export * from './vehicle';
@@ -1,7 +1,11 @@
1
+ export * from './camera';
1
2
  export * from './IClientLogConsole';
2
3
  export * from './IClientLocalPlayerBridge';
3
4
  export * from './IClientPlatformBridge';
4
5
  export * from './IClientRuntimeBridge';
5
6
  export * from './IGtaPedAppearanceBridge';
7
+ export * from './ped';
8
+ export * from './progress';
6
9
  export * from './spawn';
7
10
  export * from './ui';
11
+ export * from './vehicle';
@@ -0,0 +1,62 @@
1
+ import type { Vector3 } from '../../../../kernel/utils/vector3';
2
+ /**
3
+ * High-level options for spawning a ped.
4
+ */
5
+ export interface ClientPedSpawnOptions {
6
+ model: string;
7
+ position: Vector3;
8
+ heading?: number;
9
+ networked?: boolean;
10
+ missionEntity?: boolean;
11
+ relationshipGroup?: string;
12
+ blockEvents?: boolean;
13
+ }
14
+ /**
15
+ * High-level animation request for a ped.
16
+ */
17
+ export interface ClientPedAnimationOptions {
18
+ dict: string;
19
+ anim: string;
20
+ blendInSpeed?: number;
21
+ blendOutSpeed?: number;
22
+ duration?: number;
23
+ flags?: number;
24
+ playbackRate?: number;
25
+ }
26
+ /**
27
+ * Intent-oriented client ped port.
28
+ */
29
+ export declare abstract class IClientPedPort {
30
+ /** Spawns a ped and returns its runtime handle. */
31
+ abstract spawn(options: ClientPedSpawnOptions): Promise<number>;
32
+ /** Deletes a ped handle if it exists. */
33
+ abstract delete(handle: number): void;
34
+ /** Returns whether a ped handle exists. */
35
+ abstract exists(handle: number): boolean;
36
+ /** Plays an animation on a ped. */
37
+ abstract playAnimation(handle: number, options: ClientPedAnimationOptions): Promise<void>;
38
+ /** Stops the current animation/task on a ped. */
39
+ abstract stopAnimation(handle: number): void;
40
+ /** Stops the current animation/task immediately on a ped. */
41
+ abstract stopAnimationImmediately(handle: number): void;
42
+ /** Freezes or unfreezes a ped. */
43
+ abstract freeze(handle: number, freeze: boolean): void;
44
+ /** Sets invincibility for a ped. */
45
+ abstract setInvincible(handle: number, invincible: boolean): void;
46
+ /** Gives a weapon to a ped. */
47
+ abstract giveWeapon(handle: number, weapon: string, ammo?: number, hidden?: boolean, forceInHand?: boolean): void;
48
+ /** Removes all weapons from a ped. */
49
+ abstract removeAllWeapons(handle: number): void;
50
+ /** Returns the closest ped to the local player. */
51
+ abstract getClosest(radius?: number, excludeLocalPlayer?: boolean): number | null;
52
+ /** Returns nearby ped handles. */
53
+ abstract getNearby(position: Vector3, radius: number, excludeEntity?: number): number[];
54
+ /** Makes a ped look at an entity. */
55
+ abstract lookAtEntity(handle: number, entity: number, duration?: number): void;
56
+ /** Makes a ped look at coordinates. */
57
+ abstract lookAtCoords(handle: number, position: Vector3, duration?: number): void;
58
+ /** Makes a ped walk to coordinates. */
59
+ abstract walkTo(handle: number, position: Vector3, speed?: number): void;
60
+ /** Sets basic combat intent flags for a ped. */
61
+ abstract setCombatAttributes(handle: number, canFight: boolean, canUseCover?: boolean): void;
62
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Intent-oriented client ped port.
3
+ */
4
+ export class IClientPedPort {
5
+ }
@@ -0,0 +1 @@
1
+ export * from './IClientPedPort';
@@ -0,0 +1 @@
1
+ export * from './IClientPedPort';
@@ -0,0 +1,53 @@
1
+ import type { Vector3 } from '../../../../kernel/utils/vector3';
2
+ /**
3
+ * Progress task options used by client adapters.
4
+ */
5
+ export interface ClientProgressOptions {
6
+ label: string;
7
+ duration: number;
8
+ useCircular?: boolean;
9
+ canCancel?: boolean;
10
+ disableControls?: boolean;
11
+ disableMovement?: boolean;
12
+ disableCombat?: boolean;
13
+ animation?: {
14
+ dict: string;
15
+ anim: string;
16
+ flags?: number;
17
+ };
18
+ prop?: {
19
+ model: string;
20
+ bone: number;
21
+ offset: Vector3;
22
+ rotation: Vector3;
23
+ };
24
+ }
25
+ /**
26
+ * Runtime snapshot for an active progress task.
27
+ */
28
+ export interface ClientProgressState {
29
+ active: boolean;
30
+ progress: number;
31
+ label: string;
32
+ startTime: number;
33
+ duration: number;
34
+ options: ClientProgressOptions;
35
+ }
36
+ /**
37
+ * Intent-oriented client progress port.
38
+ *
39
+ * Adapters own the platform-specific implementation for task animations,
40
+ * props, controls, and HUD rendering while the framework exposes a stable API.
41
+ */
42
+ export declare abstract class IClientProgressPort {
43
+ /** Starts a progress task and resolves to true when completed. */
44
+ abstract start(options: ClientProgressOptions): Promise<boolean>;
45
+ /** Cancels the active task if one exists. */
46
+ abstract cancel(): void;
47
+ /** Returns whether a task is active. */
48
+ abstract isActive(): boolean;
49
+ /** Returns the current progress percentage. */
50
+ abstract getProgress(): number;
51
+ /** Returns the active task snapshot. */
52
+ abstract getState(): ClientProgressState | null;
53
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Intent-oriented client progress port.
3
+ *
4
+ * Adapters own the platform-specific implementation for task animations,
5
+ * props, controls, and HUD rendering while the framework exposes a stable API.
6
+ */
7
+ export class IClientProgressPort {
8
+ }
@@ -0,0 +1 @@
1
+ export * from './IClientProgressPort';
@@ -0,0 +1 @@
1
+ export * from './IClientProgressPort';
@@ -1,7 +1,6 @@
1
- import type { RespawnRequest, SpawnRequest, TeleportRequest } from './types';
2
- export declare abstract class IClientSpawnBridge {
3
- abstract waitUntilReady(timeoutMs?: number): Promise<void>;
4
- abstract spawn(request: SpawnRequest): Promise<void>;
5
- abstract respawn(request: RespawnRequest): Promise<void>;
6
- abstract teleport(request: TeleportRequest): Promise<void>;
1
+ import { IClientSpawnPort } from './IClientSpawnPort';
2
+ /**
3
+ * @deprecated Use IClientSpawnPort for new runtime integrations.
4
+ */
5
+ export declare abstract class IClientSpawnBridge extends IClientSpawnPort {
7
6
  }
@@ -1,2 +1,6 @@
1
- export class IClientSpawnBridge {
1
+ import { IClientSpawnPort } from './IClientSpawnPort';
2
+ /**
3
+ * @deprecated Use IClientSpawnPort for new runtime integrations.
4
+ */
5
+ export class IClientSpawnBridge extends IClientSpawnPort {
2
6
  }
@@ -0,0 +1,19 @@
1
+ import type { RespawnRequest, SpawnExecutionResult, SpawnRequest, TeleportRequest } from './types';
2
+ export declare abstract class IClientSpawnPort {
3
+ /**
4
+ * Waits until the runtime reports that spawning can safely occur.
5
+ */
6
+ abstract waitUntilReady(timeoutMs?: number): Promise<void>;
7
+ /**
8
+ * Performs a full local-player spawn.
9
+ */
10
+ abstract spawn(request: SpawnRequest): Promise<SpawnExecutionResult>;
11
+ /**
12
+ * Performs a respawn flow for the local player.
13
+ */
14
+ abstract respawn(request: RespawnRequest): Promise<SpawnExecutionResult>;
15
+ /**
16
+ * Repositions the local player without a full spawn sequence.
17
+ */
18
+ abstract teleport(request: TeleportRequest): Promise<void>;
19
+ }
@@ -0,0 +1,2 @@
1
+ export class IClientSpawnPort {
2
+ }
@@ -1,2 +1,4 @@
1
+ export * from './IClientSpawnPort';
1
2
  export * from './IClientSpawnBridge';
2
3
  export * from './types';
4
+ export * from './types';
@@ -1,2 +1,4 @@
1
+ export * from './IClientSpawnPort';
1
2
  export * from './IClientSpawnBridge';
2
3
  export * from './types';
4
+ export * from './types';
@@ -4,6 +4,9 @@ export interface SpawnRequest {
4
4
  model: string;
5
5
  heading?: number;
6
6
  }
7
+ export interface SpawnExecutionResult {
8
+ localPlayerHandle?: number;
9
+ }
7
10
  export interface TeleportRequest {
8
11
  position: Vector3;
9
12
  heading?: number;
@@ -8,6 +8,7 @@ export declare abstract class IClientWebViewBridge {
8
8
  abstract hide(viewId: string): void;
9
9
  abstract focus(viewId: string, options?: WebViewFocusOptions): void;
10
10
  abstract blur(viewId: string): void;
11
+ abstract markAsChat(viewId: string): void;
11
12
  abstract send(viewId: string, event: string, payload: unknown): void;
12
13
  abstract onMessage(handler: (message: WebViewMessage) => void | Promise<void>): () => void;
13
14
  }
@@ -5,6 +5,7 @@ export interface WebViewCapabilities {
5
5
  supportsBidirectionalMessaging: boolean;
6
6
  supportsExecute: boolean;
7
7
  supportsHeadless: boolean;
8
+ supportsChatMode: boolean;
8
9
  }
9
10
  export interface WebViewDefinition {
10
11
  id: string;
@@ -13,6 +14,7 @@ export interface WebViewDefinition {
13
14
  focused?: boolean;
14
15
  cursor?: boolean;
15
16
  inputPassthrough?: boolean;
17
+ chatMode?: boolean;
16
18
  }
17
19
  export interface WebViewFocusOptions {
18
20
  cursor?: boolean;