@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.
- package/dist/assets/client.js +4 -2
- package/dist/assets/messages.js +2 -0
- package/dist/audio-source/messages.js +35 -0
- package/dist/commands/assets.js +1 -1
- package/dist/commands/audio-program.js +82 -0
- package/dist/commands/audio-source.js +109 -0
- package/dist/commands/audio.js +13 -4
- package/dist/commands/build.js +4 -2
- package/dist/commands/tools-context.js +46 -0
- package/dist/commands/tools.js +2 -0
- package/dist/project-skills/builtin-import.js +69 -22
- package/dist/project-skills/commands.js +11 -2
- package/dist/project-skills/lifecycle.js +1 -1
- package/dist/project-skills/local-store.js +90 -31
- package/dist/project-skills/messages.js +16 -0
- package/dist/project-skills/migrate-lock.js +166 -0
- package/dist/project-skills/remote-cache.js +36 -5
- package/dist/utils/agent-api-client.js +18 -1
- package/dist/utils/agent-generation-provenance.js +8 -2
- package/dist/utils/audio-export.js +249 -0
- package/dist/utils/audio-processor.js +22 -99
- package/dist/utils/execution-context-bridge.js +28 -0
- package/dist/workspace-runtime/batch/control.js +13 -2
- package/dist/workspace-runtime/batch/generate.js +43 -2
- package/dist/workspace-runtime/batch/prepare.js +4 -0
- package/dist/workspace-runtime/batch/skill-artifacts.js +103 -0
- package/dist/workspace-runtime/batch/source-capture.js +6 -8
- package/dist/workspace-runtime/codex/app-server.js +26 -2
- package/dist/workspace-runtime/codex/execution-context-broker.js +61 -0
- package/dist/workspace-runtime/codex/execution-context-tools.js +37 -0
- package/dist/workspace-runtime/codex/generation-provenance-broker.js +9 -6
- package/dist/workspace-runtime/codex/level-editor-tools.js +18 -0
- package/dist/workspace-runtime/codex/model-broker.js +15 -2
- package/dist/workspace-runtime/codex/scheduled-task-tools.js +1 -1
- package/dist/workspace-runtime/previews/finalize.js +1 -1
- package/dist/workspace-runtime/previews/output.js +4 -1
- package/dist/workspace-runtime/previews/publish.js +5 -2
- package/dist/workspace-runtime/previews/runtime-preview.js +38 -3
- package/dist/workspace-runtime/serve.js +6 -0
- package/dist/workspace-runtime/server/accept-operation.js +85 -13
- package/dist/workspace-runtime/server/audio-assets.js +257 -0
- package/dist/workspace-runtime/server/audio-export.js +136 -0
- package/dist/workspace-runtime/server/directory-access.js +222 -67
- package/dist/workspace-runtime/server/dispatch.js +252 -29
- package/dist/workspace-runtime/server/http.js +97 -3
- package/dist/workspace-runtime/server/operation-record.js +1 -1
- package/dist/workspace-runtime/workspaces/artifact-files.js +10 -3
- package/dist/workspace-runtime/workspaces/artifacts.js +47 -6
- package/dist/workspace-runtime/workspaces/asset-library-import.js +27 -7
- package/dist/workspace-runtime/workspaces/audio-assets/artifact-package.js +104 -0
- package/dist/workspace-runtime/workspaces/audio-assets/binding-usage.js +71 -0
- package/dist/workspace-runtime/workspaces/audio-assets/build-inputs.js +80 -0
- package/dist/workspace-runtime/workspaces/audio-assets/library-import.js +149 -0
- package/dist/workspace-runtime/workspaces/audio-assets/library-package.js +26 -0
- package/dist/workspace-runtime/workspaces/audio-assets/program-artifact-audit.js +90 -0
- package/dist/workspace-runtime/workspaces/audio-assets/program-browser.js +194 -0
- package/dist/workspace-runtime/workspaces/audio-assets/program-build-inputs.js +122 -0
- package/dist/workspace-runtime/workspaces/audio-assets/program-engine.js +39 -0
- package/dist/workspace-runtime/workspaces/audio-assets/program-package.js +289 -0
- package/dist/workspace-runtime/workspaces/audio-assets/program-variant-build.js +217 -0
- package/dist/workspace-runtime/workspaces/audio-assets/references.js +107 -0
- package/dist/workspace-runtime/workspaces/audio-assets/render-worker.js +117 -0
- package/dist/workspace-runtime/workspaces/audio-assets/renderer.js +128 -0
- package/dist/workspace-runtime/workspaces/audio-assets/representations.js +73 -0
- package/dist/workspace-runtime/workspaces/audio-assets/service.js +459 -0
- package/dist/workspace-runtime/workspaces/audio-assets/storage.js +125 -0
- package/dist/workspace-runtime/workspaces/build-isolation.js +2 -0
- package/dist/workspace-runtime/workspaces/composer-context.js +40 -1
- package/dist/workspace-runtime/workspaces/empty-template.js +1 -1
- package/dist/workspace-runtime/workspaces/execution-context.js +24 -0
- package/dist/workspace-runtime/workspaces/files.js +3 -5
- package/dist/workspace-runtime/workspaces/git.js +7 -0
- package/dist/workspace-runtime/workspaces/level-editor-agent-store.js +143 -0
- package/dist/workspace-runtime/workspaces/level-editor-agent.js +410 -0
- package/dist/workspace-runtime/workspaces/level-editor-atomic.js +424 -0
- package/dist/workspace-runtime/workspaces/level-editor-extensions.js +140 -0
- package/dist/workspace-runtime/workspaces/level-editor-format.js +75 -0
- package/dist/workspace-runtime/workspaces/level-editor-history-store.js +250 -0
- package/dist/workspace-runtime/workspaces/level-editor-json5.js +132 -0
- package/dist/workspace-runtime/workspaces/level-editor-requests.js +724 -0
- package/dist/workspace-runtime/workspaces/level-editor.js +454 -0
- package/dist/workspace-runtime/workspaces/parameter-initialization-skill.js +62 -22
- package/dist/workspace-runtime/workspaces/parameter-production.js +1 -1
- package/dist/workspace-runtime/workspaces/remix-reference-skill.js +4 -3
- package/dist/workspace-runtime/workspaces/skill-artifact-loader.js +19 -5
- package/dist/workspace-runtime/workspaces/skills.js +48 -13
- package/package.json +9 -4
- package/project-template/.claude/skills/playcraft-audio-generation/SKILL.md +92 -4
- package/project-template/.claude/skills/playcraft-level-editor/SKILL.md +34 -0
- package/project-template/.claude/skills/playcraft-level-editor/references/authoring-contract.json +3475 -0
- package/project-template/.claude/skills/playcraft-level-editor/references/extensions.md +37 -0
- package/project-template/.claude/skills/playcraft-level-editor/references/preview.md +15 -0
- package/project-template/.claude/skills/playcraft-level-editor/references/protocol-v1.md +35 -0
- package/project-template/vite.config.ts +1 -1
- package/project-template-v2/.claude/skills/playcraft-audio-generation/SKILL.md +92 -4
- package/project-template-v2/.playcraft/skills.lock.json +9 -2
- package/project-template-v2/vite.config.ts +1 -1
- package/project-templates/empty/AGENTS.md +2 -0
- package/project-templates/phaser/.claude/skills/playcraft-audio-generation/SKILL.md +92 -4
- package/project-templates/phaser/vite.config.ts +1 -1
- package/project-templates/playable-template-phaser/vite.config.ts +1 -1
- package/project-templates/threejs/.claude/skills/playcraft-audio-generation/SKILL.md +92 -4
- package/project-templates/threejs/vite.config.ts +1 -1
- package/templates/preview-runtime/v1/README.md +12 -0
- package/templates/preview-runtime/v1/build-preview.mjs +17 -8
- package/templates/preview-runtime/v1/manifest.json +9 -6
- package/templates/preview-runtime/v1/release-guard.mjs +1 -1
- package/templates/preview-runtime/v1/runtime.d.mts +1 -3
- package/templates/preview-runtime/v1/runtime.d.ts +1 -3
- package/templates/preview-runtime/v1/runtime.mjs +1142 -257
- package/templates/preview-runtime/v1/types/host.d.ts +29 -0
- package/templates/preview-runtime/v1/types/index.d.ts +6 -0
- 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
|
+
};
|