@playcraft/cli 0.1.66 → 0.1.68

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 (113) 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-program.js +82 -0
  6. package/dist/commands/audio-source.js +109 -0
  7. package/dist/commands/audio.js +13 -4
  8. package/dist/commands/build.js +4 -2
  9. package/dist/commands/tools-context.js +46 -0
  10. package/dist/commands/tools.js +2 -0
  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 +257 -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/asset-library-import.js +27 -7
  50. package/dist/workspace-runtime/workspaces/audio-assets/artifact-package.js +104 -0
  51. package/dist/workspace-runtime/workspaces/audio-assets/binding-usage.js +71 -0
  52. package/dist/workspace-runtime/workspaces/audio-assets/build-inputs.js +80 -0
  53. package/dist/workspace-runtime/workspaces/audio-assets/library-import.js +149 -0
  54. package/dist/workspace-runtime/workspaces/audio-assets/library-package.js +26 -0
  55. package/dist/workspace-runtime/workspaces/audio-assets/program-artifact-audit.js +90 -0
  56. package/dist/workspace-runtime/workspaces/audio-assets/program-browser.js +194 -0
  57. package/dist/workspace-runtime/workspaces/audio-assets/program-build-inputs.js +122 -0
  58. package/dist/workspace-runtime/workspaces/audio-assets/program-engine.js +39 -0
  59. package/dist/workspace-runtime/workspaces/audio-assets/program-package.js +289 -0
  60. package/dist/workspace-runtime/workspaces/audio-assets/program-variant-build.js +217 -0
  61. package/dist/workspace-runtime/workspaces/audio-assets/references.js +107 -0
  62. package/dist/workspace-runtime/workspaces/audio-assets/render-worker.js +117 -0
  63. package/dist/workspace-runtime/workspaces/audio-assets/renderer.js +128 -0
  64. package/dist/workspace-runtime/workspaces/audio-assets/representations.js +73 -0
  65. package/dist/workspace-runtime/workspaces/audio-assets/service.js +459 -0
  66. package/dist/workspace-runtime/workspaces/audio-assets/storage.js +125 -0
  67. package/dist/workspace-runtime/workspaces/build-isolation.js +2 -0
  68. package/dist/workspace-runtime/workspaces/composer-context.js +40 -1
  69. package/dist/workspace-runtime/workspaces/empty-template.js +1 -1
  70. package/dist/workspace-runtime/workspaces/execution-context.js +24 -0
  71. package/dist/workspace-runtime/workspaces/files.js +3 -5
  72. package/dist/workspace-runtime/workspaces/git.js +7 -0
  73. package/dist/workspace-runtime/workspaces/level-editor-agent-store.js +143 -0
  74. package/dist/workspace-runtime/workspaces/level-editor-agent.js +410 -0
  75. package/dist/workspace-runtime/workspaces/level-editor-atomic.js +424 -0
  76. package/dist/workspace-runtime/workspaces/level-editor-extensions.js +140 -0
  77. package/dist/workspace-runtime/workspaces/level-editor-format.js +75 -0
  78. package/dist/workspace-runtime/workspaces/level-editor-history-store.js +250 -0
  79. package/dist/workspace-runtime/workspaces/level-editor-json5.js +132 -0
  80. package/dist/workspace-runtime/workspaces/level-editor-requests.js +724 -0
  81. package/dist/workspace-runtime/workspaces/level-editor.js +454 -0
  82. package/dist/workspace-runtime/workspaces/parameter-initialization-skill.js +62 -22
  83. package/dist/workspace-runtime/workspaces/parameter-production.js +1 -1
  84. package/dist/workspace-runtime/workspaces/remix-reference-skill.js +4 -3
  85. package/dist/workspace-runtime/workspaces/skill-artifact-loader.js +19 -5
  86. package/dist/workspace-runtime/workspaces/skills.js +48 -13
  87. package/package.json +9 -4
  88. package/project-template/.claude/skills/playcraft-audio-generation/SKILL.md +92 -4
  89. package/project-template/.claude/skills/playcraft-level-editor/SKILL.md +34 -0
  90. package/project-template/.claude/skills/playcraft-level-editor/references/authoring-contract.json +3475 -0
  91. package/project-template/.claude/skills/playcraft-level-editor/references/extensions.md +37 -0
  92. package/project-template/.claude/skills/playcraft-level-editor/references/preview.md +15 -0
  93. package/project-template/.claude/skills/playcraft-level-editor/references/protocol-v1.md +35 -0
  94. package/project-template/vite.config.ts +1 -1
  95. package/project-template-v2/.claude/skills/playcraft-audio-generation/SKILL.md +92 -4
  96. package/project-template-v2/.playcraft/skills.lock.json +9 -2
  97. package/project-template-v2/vite.config.ts +1 -1
  98. package/project-templates/empty/AGENTS.md +2 -0
  99. package/project-templates/phaser/.claude/skills/playcraft-audio-generation/SKILL.md +92 -4
  100. package/project-templates/phaser/vite.config.ts +1 -1
  101. package/project-templates/playable-template-phaser/vite.config.ts +1 -1
  102. package/project-templates/threejs/.claude/skills/playcraft-audio-generation/SKILL.md +92 -4
  103. package/project-templates/threejs/vite.config.ts +1 -1
  104. package/templates/preview-runtime/v1/README.md +12 -0
  105. package/templates/preview-runtime/v1/build-preview.mjs +17 -8
  106. package/templates/preview-runtime/v1/manifest.json +9 -6
  107. package/templates/preview-runtime/v1/release-guard.mjs +1 -1
  108. package/templates/preview-runtime/v1/runtime.d.mts +1 -3
  109. package/templates/preview-runtime/v1/runtime.d.ts +1 -3
  110. package/templates/preview-runtime/v1/runtime.mjs +1142 -257
  111. package/templates/preview-runtime/v1/types/host.d.ts +29 -0
  112. package/templates/preview-runtime/v1/types/index.d.ts +6 -0
  113. 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
+ };