@crowdedkingdoms/crowdyjs 12.0.0 → 12.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/MIGRATION.md +45 -0
  2. package/README.md +70 -1
  3. package/dist/crowdy-studio/agent-dom-shell.d.ts +29 -1
  4. package/dist/crowdy-studio/agent-dom-shell.d.ts.map +1 -1
  5. package/dist/crowdy-studio/agent-dom-shell.js +108 -44
  6. package/dist/crowdy-studio/dom-shell.d.ts +46 -3
  7. package/dist/crowdy-studio/dom-shell.d.ts.map +1 -1
  8. package/dist/crowdy-studio/dom-shell.js +551 -125
  9. package/dist/crowdy-studio/embed/dock.d.ts +56 -0
  10. package/dist/crowdy-studio/embed/dock.d.ts.map +1 -0
  11. package/dist/crowdy-studio/embed/dock.js +231 -0
  12. package/dist/crowdy-studio/embed/embed-styles.d.ts +12 -0
  13. package/dist/crowdy-studio/embed/embed-styles.d.ts.map +1 -0
  14. package/dist/crowdy-studio/embed/embed-styles.js +549 -0
  15. package/dist/crowdy-studio/embed/hud-layer.d.ts +40 -0
  16. package/dist/crowdy-studio/embed/hud-layer.d.ts.map +1 -0
  17. package/dist/crowdy-studio/embed/hud-layer.js +100 -0
  18. package/dist/crowdy-studio/embed/index.d.ts +5 -0
  19. package/dist/crowdy-studio/embed/index.d.ts.map +1 -0
  20. package/dist/crowdy-studio/embed/index.js +4 -0
  21. package/dist/crowdy-studio/embed/panel.d.ts +162 -0
  22. package/dist/crowdy-studio/embed/panel.d.ts.map +1 -0
  23. package/dist/crowdy-studio/embed/panel.js +642 -0
  24. package/dist/crowdy-studio/index.d.ts +3 -0
  25. package/dist/crowdy-studio/index.d.ts.map +1 -1
  26. package/dist/crowdy-studio/index.js +3 -0
  27. package/dist/crowdy-studio/layout.d.ts +50 -0
  28. package/dist/crowdy-studio/layout.d.ts.map +1 -0
  29. package/dist/crowdy-studio/layout.js +155 -0
  30. package/dist/crowdy-studio/mount.d.ts.map +1 -1
  31. package/dist/crowdy-studio/mount.js +3 -1
  32. package/dist/crowdy-studio/splitter.d.ts +33 -0
  33. package/dist/crowdy-studio/splitter.d.ts.map +1 -0
  34. package/dist/crowdy-studio/splitter.js +133 -0
  35. package/dist/crowdy-studio/styles.d.ts +1 -1
  36. package/dist/crowdy-studio/styles.d.ts.map +1 -1
  37. package/dist/crowdy-studio/styles.js +128 -13
  38. package/dist/domains/gameModel.d.ts +68 -1
  39. package/dist/domains/gameModel.d.ts.map +1 -1
  40. package/dist/domains/gameModel.js +88 -1
  41. package/dist/generated/graphql.d.ts +132 -15
  42. package/dist/generated/graphql.d.ts.map +1 -1
  43. package/dist/generated/graphql.js +12 -0
  44. package/dist/index.d.ts +4 -4
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +3 -3
  47. package/dist/kit/npcs.d.ts.map +1 -1
  48. package/dist/kit/social.d.ts.map +1 -1
  49. package/dist/player-host/control-banner.d.ts +40 -0
  50. package/dist/player-host/control-banner.d.ts.map +1 -0
  51. package/dist/player-host/control-banner.js +252 -0
  52. package/dist/player-host/control-gate.d.ts +77 -0
  53. package/dist/player-host/control-gate.d.ts.map +1 -0
  54. package/dist/player-host/control-gate.js +197 -0
  55. package/dist/player-host/index.d.ts +2 -0
  56. package/dist/player-host/index.d.ts.map +1 -1
  57. package/dist/player-host/index.js +2 -0
  58. package/package.json +6 -1
@@ -0,0 +1,162 @@
1
+ import { type MountCrowdyStudioOptions } from '../mount.js';
2
+ import type { CrowdyStudioController, CrowdyStudioPlayerCompute, CrowdyStudioPlayerWallet } from '../controller.js';
3
+ import type { CrowdyStudioProjectProvider } from '../models.js';
4
+ import type { CrowdyAgentMode, CrowdyAgentPreemptionReason, CrowdyStudioAgentController, CrowdyStudioAgentTransportV1 } from '../../crowdy-agent/index.js';
5
+ import type { AgentControlLeaseManager, AgentControlLeaseManagerOptionsV1, PlayerHostAdapterV1 } from '../../player-host/index.js';
6
+ import type { PlayerCodeGridBounds, PlayerCodeHostCall, PlayerCodePresentation } from '../../player-runtime/player-code-broker.js';
7
+ import { type CrowdyStudioEmbedDockStorage } from './dock.js';
8
+ import type { CrowdyStudioTextHud } from './hud-layer.js';
9
+ export type CrowdyStudioEmbedDisplayMode = 'docked' | 'fullscreen';
10
+ /**
11
+ * The studio-facing domain services the embed needs. `CrowdyClient`
12
+ * satisfies this structurally, so most games pass their client directly.
13
+ */
14
+ export interface CrowdyStudioEmbedServices {
15
+ crowdyStudio: CrowdyStudioProjectProvider;
16
+ playerCompute: CrowdyStudioPlayerCompute;
17
+ playerWallet?: CrowdyStudioPlayerWallet;
18
+ /** Production agent transport; omission keeps the agent fail-closed/hidden. */
19
+ crowdyStudioAgent?: CrowdyStudioAgentTransportV1;
20
+ }
21
+ export interface CrowdyStudioEmbedTargetPermission {
22
+ canWrite: boolean;
23
+ canRun: boolean;
24
+ }
25
+ export interface CrowdyStudioEmbedTargetPermissions {
26
+ SERVER: CrowdyStudioEmbedTargetPermission;
27
+ CLIENT: CrowdyStudioEmbedTargetPermission;
28
+ }
29
+ export interface CrowdyStudioEmbedHandle {
30
+ readonly api: 'crowdy-studio';
31
+ readonly controller: CrowdyStudioController;
32
+ readonly agent: CrowdyStudioAgentController | null;
33
+ readonly controlLeaseManager: AgentControlLeaseManager | null;
34
+ destroy(): void;
35
+ }
36
+ export interface CrowdyStudioEmbedAgentSessionOptions {
37
+ mode?: CrowdyAgentMode;
38
+ providerDataConsent?: boolean;
39
+ /** Prefixes the generated per-session idempotency key. */
40
+ idempotencyKeyPrefix?: string;
41
+ }
42
+ /** Static, game-lifetime configuration for the embed shell. */
43
+ export interface CrowdyStudioEmbedOptions {
44
+ client: CrowdyStudioEmbedServices;
45
+ appId: string | (() => string);
46
+ /** Header title. Defaults to "Crowdy Studio". */
47
+ title?: string;
48
+ /** Game name used in the screen-reader description of the panel. */
49
+ gameName?: string;
50
+ /**
51
+ * Keyboard code that closes the studio from chrome (not from text entry).
52
+ * Defaults to `KeyM` to match the common open keybind; `null` disables the
53
+ * key entirely. Escape always closes.
54
+ */
55
+ closeKeyCode?: string | null;
56
+ agentSession?: CrowdyStudioEmbedAgentSessionOptions;
57
+ controlGate?: AgentControlLeaseManagerOptionsV1;
58
+ onLocalPreempt?(reason: CrowdyAgentPreemptionReason): void;
59
+ /**
60
+ * Suppress gameplay input and return a restoration callback. Used only by
61
+ * the narrow-screen modal; the desktop dock remains non-modal.
62
+ */
63
+ suppressGameplayInput?(): () => void;
64
+ /** Re-measure the game canvas and HUD after dock geometry changes. */
65
+ onLayoutChange?(): void;
66
+ onAgentMounted?(handle: CrowdyStudioEmbedHandle): void;
67
+ onAgentUnavailable?(message: string): void;
68
+ onAgentUnmounted?(): void;
69
+ /** Called after the panel closes for any reason (Escape, key, close()). */
70
+ onClosed?(): void;
71
+ dockStorage?: CrowdyStudioEmbedDockStorage | null;
72
+ /** Browser-regression-only fault/config injection; never set by a game. */
73
+ runtimeOverrides?: Partial<MountCrowdyStudioOptions>;
74
+ }
75
+ /** Per-open context: the grid the player is editing and its capabilities. */
76
+ export interface CrowdyStudioEmbedContext {
77
+ gridId: string;
78
+ /** Chunk AABB; required to run CLIENT projects. */
79
+ grid?: PlayerCodeGridBounds;
80
+ targetPermissions: CrowdyStudioEmbedTargetPermissions;
81
+ /** Optional provenance note rendered under the permission cards. */
82
+ permissionsNote?: string;
83
+ /** Same-origin glue worker URL; required to run CLIENT projects. */
84
+ workerUrl?: string;
85
+ /** Allow-listed world reads/writes for CLIENT projects. */
86
+ onHostCall?(call: PlayerCodeHostCall): Promise<unknown>;
87
+ /** Text-only HUD sink; enables the drawer HUD preview when provided. */
88
+ hud?: CrowdyStudioTextHud;
89
+ /** Custom presentation routing; defaults to `hud` when omitted. */
90
+ onPresentation?(presentation: PlayerCodePresentation): void;
91
+ /** Game Play adapter; with `client.crowdyStudioAgent` enables the agent. */
92
+ playerHost?: PlayerHostAdapterV1;
93
+ }
94
+ /**
95
+ * Responsive game shell around CrowdyJS's project-first Crowdy Studio.
96
+ * Desktop uses a resizable right dock; narrow screens use a focus-trapped
97
+ * modal. Construct once per game and `toggle(context)` per open.
98
+ */
99
+ export declare class CrowdyStudioEmbed {
100
+ private readonly options;
101
+ private root;
102
+ private mountElement;
103
+ private statusElement;
104
+ private drawerElement;
105
+ private drawerButton;
106
+ private handle;
107
+ private context;
108
+ private previousFocus;
109
+ private restoreGameplayInput;
110
+ private unmountHudPreview;
111
+ private mountGeneration;
112
+ private displayMode;
113
+ private readonly dock;
114
+ constructor(options: CrowdyStudioEmbedOptions);
115
+ get open(): boolean;
116
+ get modal(): boolean;
117
+ get mode(): CrowdyStudioEmbedDisplayMode | null;
118
+ toggle(context: CrowdyStudioEmbedContext): void;
119
+ destroy(): void;
120
+ close(): void;
121
+ private show;
122
+ /**
123
+ * Single compact header row: title, context pill, on-demand Context drawer
124
+ * toggle, Close. Project context and permission details live in the drawer
125
+ * so every workflow starts with maximum studio space.
126
+ */
127
+ private header;
128
+ /**
129
+ * On-demand context drawer: grid context, effective permissions, and (when
130
+ * a HUD sink is supplied) a lazily mounted HUD preview. Hidden by default;
131
+ * toggled from the header.
132
+ */
133
+ private drawer;
134
+ private toggleDrawer;
135
+ private mountStudio;
136
+ /** Assemble mount options from the game client + per-open context. */
137
+ private mountSdkStudio;
138
+ private currentAppId;
139
+ private agentIdempotencyKey;
140
+ private presentationSource;
141
+ private accessibleDescription;
142
+ private shortcutHint;
143
+ private closeKeyLabel;
144
+ private closeKeyCode;
145
+ private readonly viewportResize;
146
+ private updateDisplayMode;
147
+ private enterModalMode;
148
+ private leaveModalMode;
149
+ private applyDockWidth;
150
+ private clearDockWidth;
151
+ private readonly keyDown;
152
+ private readonly documentKeyDown;
153
+ private readonly captureEscape;
154
+ private handleDialogKey;
155
+ private trapTab;
156
+ private readonly stopKeyboardEvent;
157
+ private readonly documentKeyUp;
158
+ private readonly keepFocusInside;
159
+ }
160
+ /** Convenience factory mirroring the class constructor. */
161
+ export declare function createCrowdyStudioEmbed(options: CrowdyStudioEmbedOptions): CrowdyStudioEmbed;
162
+ //# sourceMappingURL=panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panel.d.ts","sourceRoot":"","sources":["../../../src/crowdy-studio/embed/panel.ts"],"names":[],"mappings":"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"}