@playcraft/cli 0.1.65 → 0.1.67

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 (102) hide show
  1. package/dist/assets/client.js +4 -2
  2. package/dist/assets/messages.js +2 -0
  3. package/dist/audio-source/messages.js +35 -0
  4. package/dist/commands/assets.js +1 -1
  5. package/dist/commands/audio-source.js +109 -0
  6. package/dist/commands/audio.js +11 -4
  7. package/dist/commands/build.js +4 -2
  8. package/dist/commands/tools-context.js +46 -0
  9. package/dist/commands/tools.js +2 -0
  10. package/dist/model-adaptation/project.js +1 -1
  11. package/dist/project-skills/builtin-import.js +69 -22
  12. package/dist/project-skills/commands.js +11 -2
  13. package/dist/project-skills/lifecycle.js +1 -1
  14. package/dist/project-skills/local-store.js +90 -31
  15. package/dist/project-skills/messages.js +16 -0
  16. package/dist/project-skills/migrate-lock.js +166 -0
  17. package/dist/project-skills/remote-cache.js +36 -5
  18. package/dist/utils/agent-api-client.js +18 -1
  19. package/dist/utils/agent-generation-provenance.js +8 -2
  20. package/dist/utils/audio-export.js +249 -0
  21. package/dist/utils/audio-processor.js +22 -99
  22. package/dist/utils/execution-context-bridge.js +28 -0
  23. package/dist/workspace-runtime/batch/control.js +13 -2
  24. package/dist/workspace-runtime/batch/generate.js +43 -2
  25. package/dist/workspace-runtime/batch/prepare.js +4 -0
  26. package/dist/workspace-runtime/batch/skill-artifacts.js +103 -0
  27. package/dist/workspace-runtime/batch/source-capture.js +6 -8
  28. package/dist/workspace-runtime/codex/app-server.js +26 -2
  29. package/dist/workspace-runtime/codex/execution-context-broker.js +61 -0
  30. package/dist/workspace-runtime/codex/execution-context-tools.js +37 -0
  31. package/dist/workspace-runtime/codex/generation-provenance-broker.js +9 -6
  32. package/dist/workspace-runtime/codex/level-editor-tools.js +18 -0
  33. package/dist/workspace-runtime/codex/model-broker.js +15 -2
  34. package/dist/workspace-runtime/codex/scheduled-task-tools.js +1 -1
  35. package/dist/workspace-runtime/previews/finalize.js +1 -1
  36. package/dist/workspace-runtime/previews/output.js +4 -1
  37. package/dist/workspace-runtime/previews/publish.js +5 -2
  38. package/dist/workspace-runtime/previews/runtime-preview.js +38 -3
  39. package/dist/workspace-runtime/serve.js +6 -0
  40. package/dist/workspace-runtime/server/accept-operation.js +85 -13
  41. package/dist/workspace-runtime/server/audio-assets.js +211 -0
  42. package/dist/workspace-runtime/server/audio-export.js +136 -0
  43. package/dist/workspace-runtime/server/directory-access.js +222 -67
  44. package/dist/workspace-runtime/server/dispatch.js +252 -29
  45. package/dist/workspace-runtime/server/http.js +97 -3
  46. package/dist/workspace-runtime/server/operation-record.js +1 -1
  47. package/dist/workspace-runtime/workspaces/artifact-files.js +10 -3
  48. package/dist/workspace-runtime/workspaces/artifacts.js +47 -6
  49. package/dist/workspace-runtime/workspaces/audio-assets/artifact-package.js +104 -0
  50. package/dist/workspace-runtime/workspaces/audio-assets/binding-usage.js +71 -0
  51. package/dist/workspace-runtime/workspaces/audio-assets/build-inputs.js +76 -0
  52. package/dist/workspace-runtime/workspaces/audio-assets/render-worker.js +117 -0
  53. package/dist/workspace-runtime/workspaces/audio-assets/renderer.js +128 -0
  54. package/dist/workspace-runtime/workspaces/audio-assets/representations.js +73 -0
  55. package/dist/workspace-runtime/workspaces/audio-assets/service.js +327 -0
  56. package/dist/workspace-runtime/workspaces/audio-assets/storage.js +125 -0
  57. package/dist/workspace-runtime/workspaces/build-isolation.js +2 -0
  58. package/dist/workspace-runtime/workspaces/composer-context.js +40 -1
  59. package/dist/workspace-runtime/workspaces/empty-template.js +1 -1
  60. package/dist/workspace-runtime/workspaces/execution-context.js +24 -0
  61. package/dist/workspace-runtime/workspaces/files.js +3 -5
  62. package/dist/workspace-runtime/workspaces/level-editor-agent-store.js +143 -0
  63. package/dist/workspace-runtime/workspaces/level-editor-agent.js +410 -0
  64. package/dist/workspace-runtime/workspaces/level-editor-atomic.js +424 -0
  65. package/dist/workspace-runtime/workspaces/level-editor-extensions.js +140 -0
  66. package/dist/workspace-runtime/workspaces/level-editor-format.js +75 -0
  67. package/dist/workspace-runtime/workspaces/level-editor-history-store.js +250 -0
  68. package/dist/workspace-runtime/workspaces/level-editor-json5.js +132 -0
  69. package/dist/workspace-runtime/workspaces/level-editor-requests.js +724 -0
  70. package/dist/workspace-runtime/workspaces/level-editor.js +454 -0
  71. package/dist/workspace-runtime/workspaces/parameter-initialization-skill.js +62 -22
  72. package/dist/workspace-runtime/workspaces/parameter-production.js +1 -1
  73. package/dist/workspace-runtime/workspaces/remix-reference-skill.js +4 -3
  74. package/dist/workspace-runtime/workspaces/skill-artifact-loader.js +19 -5
  75. package/dist/workspace-runtime/workspaces/skills.js +48 -13
  76. package/package.json +6 -4
  77. package/project-template/.claude/skills/playcraft-audio-generation/SKILL.md +74 -4
  78. package/project-template/.claude/skills/playcraft-level-editor/SKILL.md +34 -0
  79. package/project-template/.claude/skills/playcraft-level-editor/references/authoring-contract.json +3475 -0
  80. package/project-template/.claude/skills/playcraft-level-editor/references/extensions.md +37 -0
  81. package/project-template/.claude/skills/playcraft-level-editor/references/preview.md +15 -0
  82. package/project-template/.claude/skills/playcraft-level-editor/references/protocol-v1.md +35 -0
  83. package/project-template/vite.config.ts +1 -1
  84. package/project-template-v2/.claude/skills/playcraft-audio-generation/SKILL.md +74 -4
  85. package/project-template-v2/.playcraft/skills.lock.json +9 -2
  86. package/project-template-v2/vite.config.ts +1 -1
  87. package/project-templates/empty/AGENTS.md +8 -4
  88. package/project-templates/phaser/.claude/skills/playcraft-audio-generation/SKILL.md +74 -4
  89. package/project-templates/phaser/vite.config.ts +1 -1
  90. package/project-templates/playable-template-phaser/vite.config.ts +1 -1
  91. package/project-templates/threejs/.claude/skills/playcraft-audio-generation/SKILL.md +74 -4
  92. package/project-templates/threejs/vite.config.ts +1 -1
  93. package/templates/preview-runtime/v1/README.md +12 -0
  94. package/templates/preview-runtime/v1/build-preview.mjs +17 -8
  95. package/templates/preview-runtime/v1/manifest.json +9 -6
  96. package/templates/preview-runtime/v1/release-guard.mjs +1 -1
  97. package/templates/preview-runtime/v1/runtime.d.mts +1 -3
  98. package/templates/preview-runtime/v1/runtime.d.ts +1 -3
  99. package/templates/preview-runtime/v1/runtime.mjs +1142 -257
  100. package/templates/preview-runtime/v1/types/host.d.ts +29 -0
  101. package/templates/preview-runtime/v1/types/index.d.ts +6 -0
  102. package/templates/preview-runtime/v1/types/level-editor.d.ts +123 -0
@@ -0,0 +1,29 @@
1
+ import type { ApplicationResult, Capabilities, Operation, RawDocuments, Receipt, SessionBinding, ImageResourceData, ImageResourceRequest, ImageRefreshTarget, ImageRefreshReceipt } from './protocol.js';
2
+ export interface HostState {
3
+ connection: 'idle' | 'connecting' | 'ready' | 'error' | 'disposed';
4
+ draftRevision: number;
5
+ documents: RawDocuments;
6
+ capabilities?: Capabilities;
7
+ result?: ApplicationResult;
8
+ error?: string;
9
+ }
10
+ export interface HostOptions {
11
+ iframe: HTMLIFrameElement;
12
+ targetOrigin: string;
13
+ /** Opaque sandbox mode keeps the frame isolated from the platform's origin. */
14
+ transport?: 'origin' | 'opaque-sandbox';
15
+ binding: SessionBinding;
16
+ documents: RawDocuments;
17
+ onState?: (state: HostState) => void;
18
+ resolveImage?(request: Pick<ImageResourceRequest, 'documentId' | 'path' | 'value'>, signal: AbortSignal): Promise<ImageResourceData>;
19
+ }
20
+ export declare function createParameterHost(options: HostOptions): {
21
+ getState: () => HostState;
22
+ connect(): Promise<Capabilities>;
23
+ patch(operations: Operation[], phase?: "preview" | "commit"): Promise<Receipt>;
24
+ refreshImages(images: ImageRefreshTarget[]): Promise<ImageRefreshReceipt>;
25
+ dispose(options?: {
26
+ notifyRuntime?: boolean;
27
+ }): void;
28
+ };
29
+ export type ParameterHost = ReturnType<typeof createParameterHost>;
@@ -0,0 +1,6 @@
1
+ export * from './protocol.js';
2
+ export * from './adapters.js';
3
+ export { createParameterHost } from './host.js';
4
+ export { createParameterRuntime } from './runtime.js';
5
+ export { connectPreviewRuntime, readWorkspacePreviewContext } from './preview.js';
6
+ export * from './level-editor.js';
@@ -0,0 +1,123 @@
1
+ export type LevelEditorBinding = {
2
+ workspaceId: string;
3
+ directoryName: string;
4
+ editorId: string;
5
+ dataContractVersion: number;
6
+ executionContractHash: string;
7
+ };
8
+ export type LevelEditorIdentity = LevelEditorBinding & {
9
+ protocolVersion: 1;
10
+ hostSessionId: string;
11
+ frameEpoch: number;
12
+ runtimeInstanceId: string;
13
+ };
14
+ export type LevelEditorContext = {
15
+ documents: Record<string, unknown>;
16
+ selection: Record<string, string | number>;
17
+ draftRevision: number;
18
+ mode: 'edit' | 'play';
19
+ signal: AbortSignal;
20
+ };
21
+ export type LevelEditorGameAdapter = {
22
+ enterEdit(context: LevelEditorContext): void | Promise<void>;
23
+ loadLevel(context: LevelEditorContext): void | Promise<void>;
24
+ afterRender(context: LevelEditorContext): void | Promise<void>;
25
+ dispose(context: {
26
+ signal: AbortSignal;
27
+ reason: string;
28
+ }): void | Promise<void>;
29
+ };
30
+ export type LevelEditorLifecycle = {
31
+ version: 1;
32
+ canCancel: true;
33
+ requiresNewFrameOnFailure: true;
34
+ applicationTimeoutMs: number;
35
+ disposeTimeoutMs: number;
36
+ maxPendingSnapshots: number;
37
+ };
38
+ export type LevelEditorCapabilities = LevelEditorIdentity & {
39
+ commands: string[];
40
+ lifecycle?: LevelEditorLifecycle;
41
+ };
42
+ export type LevelEditorApplication = LevelEditorIdentity & {
43
+ applied: true;
44
+ draftRevision: number;
45
+ mode: 'edit' | 'play';
46
+ };
47
+ export type LevelEditorRuntimeOptions = {
48
+ binding: LevelEditorBinding;
49
+ commands: readonly string[];
50
+ adapter: LevelEditorGameAdapter;
51
+ applicationTimeoutMs?: number;
52
+ disposeTimeoutMs?: number;
53
+ maxPendingSnapshots?: number;
54
+ };
55
+ export declare class LevelEditorFrameResetError extends Error {
56
+ readonly reason: string;
57
+ readonly code = "LEVEL_EDITOR_FRAME_RESET_REQUIRED";
58
+ readonly requiresNewFrame = true;
59
+ constructor(reason: string, cause?: unknown);
60
+ }
61
+ export declare function isLevelEditorFrameResetError(value: unknown): boolean;
62
+ /** Receipts follow the real game callbacks; a declaration alone cannot claim application. */
63
+ export declare function createLevelEditorRuntime(options: LevelEditorRuntimeOptions): {
64
+ hello(value: unknown): LevelEditorCapabilities;
65
+ snapshot(value: unknown): Promise<LevelEditorApplication>;
66
+ cancel(value: unknown): {
67
+ cancelled: boolean;
68
+ requiresNewFrame: boolean;
69
+ workspaceId: string;
70
+ directoryName: string;
71
+ editorId: string;
72
+ dataContractVersion: number;
73
+ executionContractHash: string;
74
+ protocolVersion: 1;
75
+ hostSessionId: string;
76
+ frameEpoch: number;
77
+ runtimeInstanceId: string;
78
+ };
79
+ dispose(value?: unknown): Promise<void>;
80
+ };
81
+ /** The immutable development build stamps its contract; the host supplies only the parent origin. */
82
+ export declare function readLevelEditorPreviewContext(): {
83
+ binding: LevelEditorBinding;
84
+ parentOrigin: string;
85
+ };
86
+ export declare function connectLevelEditorRuntime(options: Parameters<typeof createLevelEditorRuntime>[0] & {
87
+ parentOrigin: string;
88
+ }): {
89
+ runtime: {
90
+ hello(value: unknown): LevelEditorCapabilities;
91
+ snapshot(value: unknown): Promise<LevelEditorApplication>;
92
+ cancel(value: unknown): {
93
+ cancelled: boolean;
94
+ requiresNewFrame: boolean;
95
+ workspaceId: string;
96
+ directoryName: string;
97
+ editorId: string;
98
+ dataContractVersion: number;
99
+ executionContractHash: string;
100
+ protocolVersion: 1;
101
+ hostSessionId: string;
102
+ frameEpoch: number;
103
+ runtimeInstanceId: string;
104
+ };
105
+ dispose(value?: unknown): Promise<void>;
106
+ };
107
+ dispose(): Promise<void>;
108
+ };
109
+ export declare function createLevelEditorHost(options: {
110
+ iframe: HTMLIFrameElement;
111
+ targetOrigin: string;
112
+ binding: LevelEditorBinding;
113
+ opaque?: boolean;
114
+ frameEpoch?: number;
115
+ requestTimeoutMs?: number;
116
+ connectTimeoutMs?: number;
117
+ }): {
118
+ connect(): Promise<LevelEditorCapabilities>;
119
+ snapshot(input: Pick<LevelEditorContext, "documents" | "selection" | "draftRevision" | "mode">, request?: {
120
+ signal?: AbortSignal;
121
+ }): Promise<LevelEditorApplication>;
122
+ dispose(): void;
123
+ };