@womp/spark-agent 4.0.1 → 4.1.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.
- package/.env.example +6 -0
- package/README.md +67 -59
- package/dist/agent-tools.js +49 -7
- package/dist/capabilities/geometry.js +18 -14
- package/dist/capabilities/operations.js +13 -9
- package/dist/capabilities/scene.js +8 -8
- package/dist/generated/account-declarations.d.ts +1 -1
- package/dist/generated/account-declarations.js +1 -1
- package/dist/generated/asset-import-declarations.d.ts +1 -1
- package/dist/generated/asset-import-declarations.js +1 -1
- package/dist/generated/assets-declarations.d.ts +1 -1
- package/dist/generated/assets-declarations.js +1 -1
- package/dist/generated/flow-declarations.d.ts +1 -1
- package/dist/generated/flow-declarations.js +1 -1
- package/dist/generated/geometry-declarations.d.ts +1 -1
- package/dist/generated/geometry-declarations.js +1 -1
- package/dist/generated/knowledge-declarations.d.ts +1 -1
- package/dist/generated/knowledge-declarations.js +1 -1
- package/dist/generated/openscad-declarations.d.ts +1 -1
- package/dist/generated/openscad-declarations.js +1 -1
- package/dist/generated/operations-declarations.d.ts +1 -1
- package/dist/generated/operations-declarations.js +1 -1
- package/dist/generated/scene-declarations.d.ts +1 -1
- package/dist/generated/scene-declarations.js +1 -1
- package/dist/geometry/lower.js +3 -1
- package/dist/geometry/schemas/flowir-dialect.json +53 -9
- package/dist/geometry.js +2 -1
- package/dist/model-history.js +1 -1
- package/dist/prompt.d.ts +1 -1
- package/dist/prompt.js +57 -53
- package/dist/server/service.js +14 -16
- package/dist/tool-input-label.d.ts +2 -0
- package/dist/tool-input-label.js +39 -0
- package/dist/ui.d.ts +14 -0
- package/dist/ui.js +1 -0
- package/package.json +1 -1
package/.env.example
ADDED
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# @womp/spark-agent
|
|
2
2
|
|
|
3
|
-
Portable AI agent for Womp applications and Kakapo scenes with model-authored JavaScript.
|
|
4
|
-
|
|
3
|
+
Portable AI agent for Womp applications and Kakapo scenes with model-authored JavaScript.
|
|
4
|
+
|
|
5
5
|
Spark Agent uses AI SDK 7 `UIMessage` and `UIMessageChunk` as its public chat protocol. Generated
|
|
6
6
|
JavaScript uses the host's executor and capabilities. Native browser execution and isolated QuickJS
|
|
7
7
|
execution use the same model loop. The host owns conversations, artifacts, authorization, and connections.
|
|
@@ -16,47 +16,47 @@ execution use the same model loop. The host owns conversations, artifacts, autho
|
|
|
16
16
|
npm install @womp/spark-agent
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
## Run a prompt from the command line
|
|
20
|
-
|
|
21
|
-
With the Spark server already running:
|
|
22
|
-
|
|
23
|
-
```sh
|
|
24
|
-
yarn agent-run --prompt "Make a cube" --model gpt-5.6-luna --reasoning max
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
Use `--conversation <id>` to continue a thread and `--output <new-directory>` to save
|
|
28
|
-
`result.json`, `transcript.json` and original run artifacts under `artifacts/`.
|
|
29
|
-
For local runs, use the git-ignored `.spark/` directory, with a fresh subdirectory per run:
|
|
30
|
-
|
|
31
|
-
```sh
|
|
32
|
-
yarn agent-run --prompt "Make rainbow-colored boxes" --output .spark/agent-runs/rainbow-boxes
|
|
33
|
-
yarn agent-run --prompt "Model this object using both views" --image front.png --image side.jpg --output .spark/agent-runs/reference-model
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
Repeat `--image <path>` for local PNG, JPEG, WebP or GIF references, in argument order.
|
|
37
|
-
The required prompt and all images are sent in one user message. Files, format signatures,
|
|
38
|
-
and the full JSON request size (including base64 overhead) are checked before contacting the server.
|
|
39
|
-
The CLI uses the server's default 25 MiB request limit; a custom server or provider may impose
|
|
40
|
-
stricter limits. Images are never resized, and remote URLs are not accepted.
|
|
41
|
-
With `--output`, original bytes are saved under `inputs/`; `input.json` and the result's `input`
|
|
42
|
-
field list ordered original filenames, MIME types and relative paths. The submitted message in
|
|
43
|
-
`transcript.json` uses those paths instead of inline data. Generated artifacts stay in `artifacts/`.
|
|
44
|
-
|
|
45
|
-
Without output, artifacts remain server references. The CLI never clears the scene or
|
|
46
|
-
takes extra screenshots. Defaults are `gpt-6-astra`, `high`, and
|
|
47
|
-
`--api http://127.0.0.1:8787/agent`; unsupported settings are rejected.
|
|
48
|
-
|
|
49
|
-
Progress goes to stderr; one JSON result goes to stdout. Use `yarn --silent agent-run`
|
|
50
|
-
or the installed `agent-run` executable when parsing stdout (Yarn otherwise adds banners).
|
|
51
|
-
Usage comes from the provider, with per-step USD estimates; missing usage is not estimated.
|
|
52
|
-
Exit codes: 0 completed, 1 run/transport/export failure, 2 invalid arguments,
|
|
53
|
-
3 requires user action (continue in the UI), 130 interrupted. Interrupts attempt to cancel
|
|
54
|
-
only this invocation's run; a failed cancellation is reported and the run may still be active.
|
|
55
|
-
Output directories must not already exist. Artifact manifests include IDs, media types,
|
|
56
|
-
server URLs and relative paths; failed downloads retain their references and report errors.
|
|
57
|
-
Legacy inline base64 uploads in transcripts are replaced with `[inline data omitted]`.
|
|
58
|
-
|
|
59
|
-
## Package entry points
|
|
19
|
+
## Run a prompt from the command line
|
|
20
|
+
|
|
21
|
+
With the Spark server already running:
|
|
22
|
+
|
|
23
|
+
```sh
|
|
24
|
+
yarn agent-run --prompt "Make a cube" --model gpt-5.6-luna --reasoning max
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Use `--conversation <id>` to continue a thread and `--output <new-directory>` to save
|
|
28
|
+
`result.json`, `transcript.json` and original run artifacts under `artifacts/`.
|
|
29
|
+
For local runs, use the git-ignored `.spark/` directory, with a fresh subdirectory per run:
|
|
30
|
+
|
|
31
|
+
```sh
|
|
32
|
+
yarn agent-run --prompt "Make rainbow-colored boxes" --output .spark/agent-runs/rainbow-boxes
|
|
33
|
+
yarn agent-run --prompt "Model this object using both views" --image front.png --image side.jpg --output .spark/agent-runs/reference-model
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Repeat `--image <path>` for local PNG, JPEG, WebP or GIF references, in argument order.
|
|
37
|
+
The required prompt and all images are sent in one user message. Files, format signatures,
|
|
38
|
+
and the full JSON request size (including base64 overhead) are checked before contacting the server.
|
|
39
|
+
The CLI uses the server's default 25 MiB request limit; a custom server or provider may impose
|
|
40
|
+
stricter limits. Images are never resized, and remote URLs are not accepted.
|
|
41
|
+
With `--output`, original bytes are saved under `inputs/`; `input.json` and the result's `input`
|
|
42
|
+
field list ordered original filenames, MIME types and relative paths. The submitted message in
|
|
43
|
+
`transcript.json` uses those paths instead of inline data. Generated artifacts stay in `artifacts/`.
|
|
44
|
+
|
|
45
|
+
Without output, artifacts remain server references. The CLI never clears the scene or
|
|
46
|
+
takes extra screenshots. Defaults are `gpt-6-astra`, `high`, and
|
|
47
|
+
`--api http://127.0.0.1:8787/agent`; unsupported settings are rejected.
|
|
48
|
+
|
|
49
|
+
Progress goes to stderr; one JSON result goes to stdout. Use `yarn --silent agent-run`
|
|
50
|
+
or the installed `agent-run` executable when parsing stdout (Yarn otherwise adds banners).
|
|
51
|
+
Usage comes from the provider, with per-step USD estimates; missing usage is not estimated.
|
|
52
|
+
Exit codes: 0 completed, 1 run/transport/export failure, 2 invalid arguments,
|
|
53
|
+
3 requires user action (continue in the UI), 130 interrupted. Interrupts attempt to cancel
|
|
54
|
+
only this invocation's run; a failed cancellation is reported and the run may still be active.
|
|
55
|
+
Output directories must not already exist. Artifact manifests include IDs, media types,
|
|
56
|
+
server URLs and relative paths; failed downloads retain their references and report errors.
|
|
57
|
+
Legacy inline base64 uploads in transcripts are replaced with `[inline data omitted]`.
|
|
58
|
+
|
|
59
|
+
## Package entry points
|
|
60
60
|
|
|
61
61
|
- `@womp/spark-agent` — browser-safe model loop, two tools, persistence hooks, and shared contracts
|
|
62
62
|
- `@womp/spark-agent/browser` — native JavaScript executor and local chat transport
|
|
@@ -100,9 +100,9 @@ the terminal checkpoint. A host run owner must keep consuming when a view detach
|
|
|
100
100
|
A failed barrier aborts the loop. The default model-step limit is 100; a limit returns
|
|
101
101
|
`status: "incomplete"`. A host must not automatically restart to bypass that limit.
|
|
102
102
|
|
|
103
|
-
Spark does not estimate or limit input tokens or automatically shorten conversation history.
|
|
104
|
-
The provider enforces its context limit; rejections follow the normal provider-error path.
|
|
105
|
-
Provider-reported usage and cost tracking are unchanged.
|
|
103
|
+
Spark does not estimate or limit input tokens or automatically shorten conversation history.
|
|
104
|
+
The provider enforces its context limit; rejections follow the normal provider-error path.
|
|
105
|
+
Provider-reported usage and cost tracking are unchanged.
|
|
106
106
|
|
|
107
107
|
Screenshot and file APIs return serializable artifact references. `emitImage` and `emitFile` resolve
|
|
108
108
|
them through the host's artifact resolver. Keep references resolvable when reloading history, and
|
|
@@ -160,23 +160,23 @@ Closing or reloading the page only detaches the SSE subscriber. It does not canc
|
|
|
160
160
|
`SparkChatTransport` hides the durable run lifecycle from `useChat`:
|
|
161
161
|
|
|
162
162
|
```text
|
|
163
|
-
POST /agent/conversations/:conversationId/messages
|
|
164
|
-
PATCH /agent/conversations/:conversationId/settings
|
|
163
|
+
POST /agent/conversations/:conversationId/messages
|
|
164
|
+
PATCH /agent/conversations/:conversationId/settings
|
|
165
165
|
GET /agent/runs/:runId/stream?after=0
|
|
166
166
|
POST /agent/runs/:runId/cancel
|
|
167
167
|
```
|
|
168
168
|
|
|
169
|
-
Conversation settings contain `modelId` and `reasoningEffort`. The standalone UI saves selector
|
|
170
|
-
changes immediately through `transport.saveConversationSettings(id, settings)` and restores them
|
|
171
|
-
per thread. Older threads fall back to their last recorded model (or the default) and medium effort;
|
|
172
|
-
unsupported choices fall back to supported settings. Assistant footers show the model recorded on
|
|
173
|
-
that turn, independently of the selector.
|
|
174
|
-
|
|
175
|
-
Custom stores must implement `saveConversationSettings` as a settings-only update, and preserve
|
|
176
|
-
stored settings during `saveConversation` so streaming history saves cannot overwrite preferences.
|
|
177
|
-
The built-in memory and SQLite stores do this without a database migration.
|
|
178
|
-
|
|
179
|
-
The SSE response contains ordered persistence envelopes around standard AI SDK chunks:
|
|
169
|
+
Conversation settings contain `modelId` and `reasoningEffort`. The standalone UI saves selector
|
|
170
|
+
changes immediately through `transport.saveConversationSettings(id, settings)` and restores them
|
|
171
|
+
per thread. Older threads fall back to their last recorded model (or the default) and medium effort;
|
|
172
|
+
unsupported choices fall back to supported settings. Assistant footers show the model recorded on
|
|
173
|
+
that turn, independently of the selector.
|
|
174
|
+
|
|
175
|
+
Custom stores must implement `saveConversationSettings` as a settings-only update, and preserve
|
|
176
|
+
stored settings during `saveConversation` so streaming history saves cannot overwrite preferences.
|
|
177
|
+
The built-in memory and SQLite stores do this without a database migration.
|
|
178
|
+
|
|
179
|
+
The SSE response contains ordered persistence envelopes around standard AI SDK chunks:
|
|
180
180
|
|
|
181
181
|
```ts
|
|
182
182
|
type StoredSparkChunk = {
|
|
@@ -364,6 +364,14 @@ Releases use a manual package publication; no separate release service is requir
|
|
|
364
364
|
- Custom JavaScript executors must honor cancellation and host-owned user waits. Callback-based
|
|
365
365
|
scene edits and artifact references work with both the native and QuickJS executors.
|
|
366
366
|
|
|
367
|
+
### 4.1.0
|
|
368
|
+
|
|
369
|
+
- `emitImage(artifact, { inspect: false })` displays an image without adding its bytes to model input, including restored history. Inspection remains the default.
|
|
370
|
+
- Generation instructions use completed outputs directly and avoid redundant listing or emission; explicit inspection and follow-up imports remain supported.
|
|
371
|
+
- Streamed tool labels are emitted only after their label field is complete. Hosts can consume `data-tool-input-label` while the rest of the input streams.
|
|
372
|
+
- Server cancellation waits for active execution to settle before reporting its terminal state.
|
|
373
|
+
- Includes the latest geometry material, scalar-port, and primitive improvements from main.
|
|
374
|
+
|
|
367
375
|
### Publishing
|
|
368
376
|
|
|
369
377
|
1. Choose an unused package version after checking `npm view @womp/spark-agent versions --json`.
|
package/dist/agent-tools.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { tool } from "ai";
|
|
2
2
|
import { z } from "zod";
|
|
3
|
+
import { completedInputString } from "./tool-input-label.js";
|
|
3
4
|
import { UserWait } from "./execution-lifetime.js";
|
|
4
5
|
function errorMessage(error) {
|
|
5
6
|
return error instanceof Error ? error.message : String(error);
|
|
@@ -13,6 +14,7 @@ function jsonValue(value) {
|
|
|
13
14
|
}
|
|
14
15
|
return JSON.parse(json);
|
|
15
16
|
}
|
|
17
|
+
const imageOptionsSchema = z.object({ inspect: z.boolean().optional() }).strict();
|
|
16
18
|
const artifactRefSchema = z.object({
|
|
17
19
|
id: z.string().min(1),
|
|
18
20
|
mediaType: z.string().min(1),
|
|
@@ -42,8 +44,31 @@ export function createSparkTools(options) {
|
|
|
42
44
|
controller.signal.throwIfAborted();
|
|
43
45
|
return output;
|
|
44
46
|
};
|
|
47
|
+
const inputLabels = (field) => {
|
|
48
|
+
const inputs = new Map();
|
|
49
|
+
return {
|
|
50
|
+
onInputStart: ({ toolCallId }) => { inputs.set(toolCallId, ""); },
|
|
51
|
+
onInputDelta: ({ toolCallId, inputTextDelta }) => {
|
|
52
|
+
const previous = inputs.get(toolCallId);
|
|
53
|
+
if (previous === undefined)
|
|
54
|
+
return;
|
|
55
|
+
const text = previous + inputTextDelta;
|
|
56
|
+
const value = completedInputString(text, field);
|
|
57
|
+
if (value === undefined) {
|
|
58
|
+
inputs.set(toolCallId, text);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
inputs.delete(toolCallId);
|
|
62
|
+
if (!value.trim() || value.length > (field === "name" ? 160 : 240))
|
|
63
|
+
return;
|
|
64
|
+
options.write({ type: "data-tool-input-label", id: `tool-label-${toolCallId}`, data: { toolCallId, field, value } });
|
|
65
|
+
},
|
|
66
|
+
onInputAvailable: ({ toolCallId }) => { inputs.delete(toolCallId); },
|
|
67
|
+
};
|
|
68
|
+
};
|
|
45
69
|
return {
|
|
46
70
|
read_skill: tool({
|
|
71
|
+
...inputLabels("name"),
|
|
47
72
|
description: "Read a skill from the available directory, including instructions, TypeScript API declarations, and JavaScript examples.",
|
|
48
73
|
inputSchema: z.object({ name: z.string().min(1).max(160) }),
|
|
49
74
|
execute: (input, { toolCallId }) => execute({ id: toolCallId, name: "read_skill", input }, async () => {
|
|
@@ -59,9 +84,10 @@ export function createSparkTools(options) {
|
|
|
59
84
|
}),
|
|
60
85
|
}),
|
|
61
86
|
execute_javascript: tool({
|
|
87
|
+
...inputLabels("purpose"),
|
|
62
88
|
description: `Run an async JavaScript body against the APIs discovered through skills. Use print, emitImage, and emitFile for output. Each call has a fresh local scope; capabilities own their commit boundaries. Execution budget: ${executionTimeoutMs} ms per call, excluding registered user/service waits (not all awaits).`,
|
|
63
89
|
inputSchema: z.object({
|
|
64
|
-
purpose: z.string().min(1).max(240),
|
|
90
|
+
purpose: z.string().min(1).max(240).describe('A concise present-progressive description, e.g. "Generating a car image", "Inspecting the scene", or "Importing the model". Write purpose before code.'),
|
|
65
91
|
code: z.string().min(1).max(60_000),
|
|
66
92
|
}),
|
|
67
93
|
execute: (input, { toolCallId }) => execute({ id: toolCallId, name: "execute_javascript", input }, async () => {
|
|
@@ -134,7 +160,7 @@ export function createSparkTools(options) {
|
|
|
134
160
|
});
|
|
135
161
|
},
|
|
136
162
|
};
|
|
137
|
-
const emit = (reference, kind) => track((async () => {
|
|
163
|
+
const emit = (reference, kind, inspect = true) => track((async () => {
|
|
138
164
|
signal.throwIfAborted();
|
|
139
165
|
const ref = artifactRefSchema.parse(reference);
|
|
140
166
|
const { artifact } = await options.artifacts.resolve(ref);
|
|
@@ -142,8 +168,10 @@ export function createSparkTools(options) {
|
|
|
142
168
|
if (kind === "image" && artifact.mediaType.startsWith("image/") === false) {
|
|
143
169
|
throw new Error(`Artifact ${ref.id} is not an image.`);
|
|
144
170
|
}
|
|
145
|
-
artifacts.push({ kind, artifact });
|
|
146
|
-
options.write({ type: "file", url: artifact.url, mediaType: artifact.mediaType
|
|
171
|
+
artifacts.push({ kind, artifact, ...(kind === "image" && !inspect ? { inspect: false } : {}) });
|
|
172
|
+
options.write({ type: "file", url: artifact.url, mediaType: artifact.mediaType,
|
|
173
|
+
...(kind === "image" && !inspect ? { providerMetadata: { spark: { inspect: false } } } : {}),
|
|
174
|
+
});
|
|
147
175
|
})());
|
|
148
176
|
try {
|
|
149
177
|
const value = await options.executor.execute(input.code, {
|
|
@@ -159,7 +187,10 @@ export function createSparkTools(options) {
|
|
|
159
187
|
logs.push(text);
|
|
160
188
|
options.write({ type: "data-console", data: { stream: "stdout", text } });
|
|
161
189
|
},
|
|
162
|
-
emitImage: (ref) =>
|
|
190
|
+
emitImage: (ref, settings) => {
|
|
191
|
+
const parsed = imageOptionsSchema.parse(settings ?? {});
|
|
192
|
+
return emit(ref, "image", parsed.inspect ?? true);
|
|
193
|
+
},
|
|
163
194
|
emitFile: (ref) => emit(ref, "file"),
|
|
164
195
|
}, executionTimeoutMs, signal, executionWait);
|
|
165
196
|
await Promise.all(pending);
|
|
@@ -194,7 +225,7 @@ export function createSparkTools(options) {
|
|
|
194
225
|
}),
|
|
195
226
|
toModelOutput: async ({ output }) => {
|
|
196
227
|
const images = await Promise.all(output.artifacts
|
|
197
|
-
.filter(({ kind }) => kind === "image")
|
|
228
|
+
.filter(({ kind, inspect }) => kind === "image" && inspect !== false)
|
|
198
229
|
.map(async ({ artifact }) => {
|
|
199
230
|
const resolved = await options.artifacts.resolve(artifact);
|
|
200
231
|
return {
|
|
@@ -204,9 +235,20 @@ export function createSparkTools(options) {
|
|
|
204
235
|
filename: resolved.artifact.name,
|
|
205
236
|
};
|
|
206
237
|
}));
|
|
238
|
+
const modelOutput = {
|
|
239
|
+
...output,
|
|
240
|
+
artifacts: output.artifacts.map((entry) => {
|
|
241
|
+
if (entry.kind !== "image" || entry.inspect !== false)
|
|
242
|
+
return entry;
|
|
243
|
+
const { id, mediaType, name } = entry.artifact;
|
|
244
|
+
// Display URLs can themselves contain bytes (data URLs). Keep only
|
|
245
|
+
// a reusable reference in model input; the UI retains the original.
|
|
246
|
+
return { ...entry, artifact: { id, mediaType, ...(name ? { name } : {}) } };
|
|
247
|
+
}),
|
|
248
|
+
};
|
|
207
249
|
return {
|
|
208
250
|
type: "content",
|
|
209
|
-
value: [{ type: "text", text: JSON.stringify(
|
|
251
|
+
value: [{ type: "text", text: JSON.stringify(modelOutput) }, ...images],
|
|
210
252
|
};
|
|
211
253
|
},
|
|
212
254
|
}),
|
|
@@ -13,29 +13,33 @@ export function createGeometryCapability(host, reference) {
|
|
|
13
13
|
skills: [
|
|
14
14
|
{
|
|
15
15
|
name: "geometry-nodes",
|
|
16
|
-
version: "
|
|
16
|
+
version: "5",
|
|
17
17
|
description: "Create and edit visual Geometry Nodes graphs with adjustable parameters and animation.",
|
|
18
|
-
instructions: `Use womp.geometry for requested Geometry Nodes or parametric geometry workflows, not Workbench Flow graphs.
|
|
19
|
-
Keep follow-up edits to an existing Geometry Nodes object in its graph, preserving its adjustable parameters and instances.
|
|
20
|
-
Read the target
|
|
21
|
-
write updates an existing shared graph, attaches a new graph to an Area without one, or creates a new Area beneath the root/Group target. Use the returned objectId for follow-up edits.
|
|
22
|
-
Read geometry-nodes-reference before writing source. Supply the complete FlowIR text and the exact revision returned by the latest read. JavaScript calls execute JavaScript; source is a FlowIR string, not JavaScript or JSON.
|
|
23
|
-
After a stale revision rejection, read the latest graph and adapt the edit while preserving intervening user changes. Ask only when the edits conflict or remain ambiguous; never retry the old replacement with a refreshed revision token.
|
|
24
|
-
If source is null and diagnostics are present, the existing graph cannot be edited without loss. Explain the limitation; never treat it as empty or create a replacement to bypass the refusal.
|
|
25
|
-
Preserve unrelated statements, parameter names, and FlowIR node IDs from the read. Shared graph edits affect all listed instances; report the affected objects. Valid overrides migrate by parameter name and type. Removed or type-changed parameters return to graph defaults and are reported.
|
|
26
|
-
Use min/max/step for naturally bounded parameters and omit ranges for free-form positions/rotations. Meaningful parameter names become editor labels. Do not invent label fields.
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
18
|
+
instructions: `Use womp.geometry for requested Geometry Nodes or parametric geometry workflows, not Workbench Flow graphs.
|
|
19
|
+
Keep follow-up edits to an existing Geometry Nodes object in its graph, preserving its adjustable parameters and instances.
|
|
20
|
+
Read the target after any scene edit this build needs. read(0) reads the scene root as a creation container.
|
|
21
|
+
write updates an existing shared graph, attaches a new graph to an Area without one, or creates a new Area beneath the root/Group target. Use the returned objectId for follow-up edits.
|
|
22
|
+
Read geometry-nodes-reference before writing source. Supply the complete FlowIR text and the exact revision returned by the latest read. JavaScript calls execute JavaScript; source is a FlowIR string, not JavaScript or JSON.
|
|
23
|
+
After a stale revision rejection, read the latest graph and adapt the edit while preserving intervening user changes. Ask only when the edits conflict or remain ambiguous; never retry the old replacement with a refreshed revision token.
|
|
24
|
+
If source is null and diagnostics are present, the existing graph cannot be edited without loss. Explain the limitation; never treat it as empty or create a replacement to bypass the refusal.
|
|
25
|
+
Preserve unrelated statements, parameter names, and FlowIR node IDs from the read. Shared graph edits affect all listed instances; report the affected objects. Valid overrides migrate by parameter name and type. Removed or type-changed parameters return to graph defaults and are reported.
|
|
26
|
+
Use min/max/step for naturally bounded parameters and omit ranges for free-form positions/rotations. Meaningful parameter names become editor labels. Do not invent label fields.
|
|
27
|
+
SetMaterial assigns one scene material to every primitive it receives. Its Material input is a scene material ID, not a color; 0 selects the scene default material.
|
|
28
|
+
Obtain that ID from the scene-editing skill inside one scene.edit, where those lookups live: materialList with materialGetName and materialGetColor to reuse an existing material, materialCreate with materialSetColor and materialSetName for a new one, or listSuperMaterials with materialImport for a library material. Prefer reusing a material that already matches the request over creating another, and do not recolor a shared material unless every object using it should change.
|
|
29
|
+
A scene edit changes the scene revision, so create or import the material before reading the geometry target, then write, all within one JavaScript call. Each call has a fresh scope and cannot read an earlier call's variables.
|
|
30
|
+
Positions and sizes are millimetres; Boolean Blend uses the conversion in geometry-nodes-reference. Coordinates are right-handed, +X right, +Y up, +Z forward. Rotations are degrees, intrinsic X-Z-Y.
|
|
31
|
+
On compiler errors, repair the source in this same conversation and retry with a fresh read. A rejected write made no change. Committed/unknown effects remain in execution receipts even if a later call fails; inspect before retrying.
|
|
32
|
+
After applying, read the returned object and use the scene screenshot API with emitImage to inspect the applied result.`,
|
|
30
33
|
declarations: WOMP_GEOMETRY_DECLARATIONS,
|
|
31
34
|
examples: [
|
|
32
35
|
"const target = await womp.geometry.read(objectId); print(target);",
|
|
33
36
|
"const target = await womp.geometry.read(objectId); print(await womp.geometry.write({ objectId: target.objectId, source: editedFlowIR, expectedRevision: target.revision }));",
|
|
37
|
+
"const materialId = await womp.scene.edit(scene => { const id = scene.materialCreate(); scene.materialSetName(id, 'Red'); scene.materialSetColor(id, { r: 255, g: 0, b: 0 }); return id; }, (await womp.scene.read()).revision); const target = await womp.geometry.read(0); const source = ['param Float size = 20.0 min=1 max=100 step=1', 'node box Primitive Type=Cube Position=Vec3(0.0,0.0,0.0) Rotation=Vec3(0.0,0.0,0.0) Size=size Roundness=0.0', `node painted SetMaterial Material=${materialId} Geometry=box.Geometry`, 'out Geometry=painted.Geometry'].join('\\n'); print(await womp.geometry.write({ objectId: target.objectId, source, expectedRevision: target.revision }));",
|
|
34
38
|
],
|
|
35
39
|
},
|
|
36
40
|
{
|
|
37
41
|
name: "geometry-nodes-reference",
|
|
38
|
-
version: "
|
|
42
|
+
version: "2",
|
|
39
43
|
description: "FlowIR syntax, types, enums, and supported Geometry Nodes catalog; read before writing a graph.",
|
|
40
44
|
instructions: `${reference.rules}\n${reference.catalog}`,
|
|
41
45
|
declarations: "",
|
|
@@ -77,7 +77,7 @@ export function createOperationsCapability(host) {
|
|
|
77
77
|
skills: [
|
|
78
78
|
{
|
|
79
79
|
name: "generation",
|
|
80
|
-
version: "
|
|
80
|
+
version: "7",
|
|
81
81
|
description: "Generate or edit images and meshes, inspect jobs, and wait for their outputs.",
|
|
82
82
|
instructions: `Read operations.catalog() for the currently available models and selected defaults.
|
|
83
83
|
Use generation for inline chat results. If the user is working in their Flow graph and flow-graphs is available,
|
|
@@ -100,18 +100,22 @@ different requests. Host receipts and saved message IDs record submitted effects
|
|
|
100
100
|
generate() waits for cost confirmation and then for completion, failure, or cancellation.
|
|
101
101
|
Use exactly one generation per execute_javascript call and print its result. Put follow-up work in
|
|
102
102
|
another call. Do not poll, start background work, use Promise.all, or report success before completion.
|
|
103
|
-
The host waits without consuming model steps.
|
|
103
|
+
The host waits without consuming model steps. Stop ends agent execution; the host handles cancellation of its accepted jobs.
|
|
104
104
|
Refresh recovery reconnects the same job. It never resumes the interrupted JavaScript stack.
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
105
|
+
Read the recovered status and artifact references, then continue any requested remaining work in a new call; do not repeat generation.
|
|
106
|
+
generate() returns the terminal status and job.outputs artifact references directly, including after recovery.
|
|
107
|
+
Completed generations are shown automatically to the user; image bytes are intentionally omitted from your context. Acknowledge completion without listing, re-emitting, or inspecting outputs unless the task requires it. Use returned artifact references for follow-up work.
|
|
108
|
+
For a simple generation request, finish with a brief acknowledgement of the completed status.
|
|
109
|
+
Inspect images deliberately when needed for verification or reference comparisons; never claim visual verification without inspecting the image.
|
|
110
|
+
Omitted image bytes are expected; missing artifact references are not. If a completed job has no outputs, recover the references or report the missing result.
|
|
111
|
+
Reserve list() for older jobs or missing references. Follow nextFrom even when a page has no jobs.
|
|
112
|
+
Verify an uncertain submission's job status, never issue a replacement request.
|
|
113
|
+
Only returned outputs exist. Generating a mesh does not import it into the scene. Use the assets skill for requested imports.
|
|
114
|
+
Never resume stopped work or resubmit a job because cancellation or submission is uncertain.`,
|
|
111
115
|
declarations: WOMP_OPERATIONS_DECLARATIONS,
|
|
112
116
|
examples: [
|
|
113
117
|
"print(await womp.operations.catalog());",
|
|
114
|
-
'const result = await womp.operations.generate({ key: "blue-chair-preview", type: "text-to-image", prompt: "A blue chair on a plain background" }); print(result);',
|
|
118
|
+
'const result = await womp.operations.generate({ key: "blue-chair-preview", type: "text-to-image", prompt: "A blue chair on a plain background" }); print(result); // If completed with outputs, briefly acknowledge; no listing or emission is needed.',
|
|
115
119
|
],
|
|
116
120
|
},
|
|
117
121
|
],
|
|
@@ -16,7 +16,7 @@ export function createSceneCapability(host) {
|
|
|
16
16
|
skills: [
|
|
17
17
|
{
|
|
18
18
|
name: "scene-editing",
|
|
19
|
-
version: "
|
|
19
|
+
version: "25",
|
|
20
20
|
description: "Inspect the open scene and edit its objects, materials, curves, and environment.",
|
|
21
21
|
instructions: `Read the scene first and keep its revision and object IDs. read() includes health.
|
|
22
22
|
Use womp.scene.health() to refresh whole-scene health or womp.scene.health(objectIds) to check specific objects (mapped to their owning Areas).
|
|
@@ -37,10 +37,10 @@ Light power must be a finite number in [0, 100].
|
|
|
37
37
|
nodeCreate(Curve, parentId) creates an empty curve with zero blend. curvePointAdd(curveId, point, index?) returns the new index; omit index to append or supply an integer from 0 through point count to insert before that position.
|
|
38
38
|
Point defaults: position/rotation/handles zero, profile size {x:1,y:1,z:1} in project units, the curve's material, fixed false, round 0. Pass {} for defaults.
|
|
39
39
|
Removing all points is supported. One point renders a single profile primitive, not a path.
|
|
40
|
-
Curves render sampled profiles, not a continuous sweep. For smooth curves, start with nodeSetDensity(curveId, 250) and nodeSetBlend(curveId, 3).
|
|
41
|
-
Density increases sampling and primitive cost; the 3 mm blend softens joins, not sample positions. Adjust blend to preserve thin features and the intended silhouette; these settings do not guarantee continuity.
|
|
40
|
+
Curves render sampled profiles, not a continuous sweep. For smooth curves, start with nodeSetDensity(curveId, 250) and nodeSetBlend(curveId, 3).
|
|
41
|
+
Density increases sampling and primitive cost; the 3 mm blend softens joins, not sample positions. Adjust blend to preserve thin features and the intended silhouette; these settings do not guarantee continuity.
|
|
42
42
|
nodeSetUnionResolution(unionId, resolution) sets Area/Union resolution, not child-part resolution, and clamps to 0.01–0.65; higher values increase detail and voxel cost. Material emission ranges from 0 to 1.
|
|
43
|
-
|
|
43
|
+
nodeSetBlend and mirror goop take radii in millimetres before parent scaling, regardless of project units, and clamp to 0–500 mm. This does not apply to the FlowIR Boolean Blend port, which takes native units; geometry-nodes-reference gives its conversion.
|
|
44
44
|
V1/V2 curve transforms are read-only;
|
|
45
45
|
edit their points instead. Handles and closure are available only on V3 Bezier curves.
|
|
46
46
|
Typed rotations are right-handed intrinsic XYZ Euler degrees, relative to the parent (R = Rx Ry Rz), including curve points and mirrors.
|
|
@@ -53,10 +53,10 @@ Colors use RGB values from 0 to 255. Use the exposed enums instead of guessing v
|
|
|
53
53
|
For visible geometry color, create or clone a material, call materialSetColor, and assign it with nodeSetMaterialId only to
|
|
54
54
|
Primitive, Curve, Text, SVG, Mesh, Field, Decal or OpenSCAD nodes. Assigning a curve material recolors its existing points; use curvePointSetMaterialId for per-point overrides afterward.
|
|
55
55
|
Areas/Unions, Groups, Lights and Sockets do not accept direct materials. Color ordinary containers through their supported children.
|
|
56
|
-
Geometry Nodes materials belong in the graph: the
|
|
57
|
-
|
|
56
|
+
Geometry Nodes materials belong in the graph: create or import the material here, then assign it inside the graph with the FlowIR SetMaterial node, passing the numeric ID this skill returns.
|
|
57
|
+
Never replace a parametric graph with ordinary primitives to color it. Ordinary Stain/CSG children do not modify graph output.
|
|
58
58
|
nodeSetColor writes the node color field (used by lights); it does not replace a geometry object's material color.
|
|
59
|
-
Do not recolor a shared material unless every object using it should change. Create and assign the material in the same edit as the geometry.
|
|
59
|
+
Do not recolor a shared material unless every object using it should change. Create and assign the material in the same edit as the scene geometry that uses it; a Geometry Nodes graph instead consumes a material ID created in an earlier edit.
|
|
60
60
|
Create primitives, curves, and text inside Areas/Unions. Respect tree order for subtraction and intersection.
|
|
61
61
|
Groups are organizational only; move and rotate their child Areas individually, not the Group. Use unions for blended masses.
|
|
62
62
|
Sphere uses size.x as uniform diameter (y/z do not stretch it), including new or resized spherical curve points. Cylinder/Cone/Pyramid use x as base diameter/width and y as height;
|
|
@@ -72,7 +72,7 @@ For primitives, nodeSetBlend joins against all accumulated preceding geometry in
|
|
|
72
72
|
For organic joins, overlap primitives and tune blend on the joining children while preserving intended gaps; keep crisp accessories separate.
|
|
73
73
|
Check font, HDR, and material catalogs before selecting names. A host can explicitly report a catalog as
|
|
74
74
|
unavailable. Selecting an HDR resets its intensity; apply a custom intensity after selecting it.
|
|
75
|
-
For library materials, use listSuperMaterials(), then await materialImport(name) inside scene.edit and assign the returned numeric ID
|
|
75
|
+
For library materials, use listSuperMaterials(), then await materialImport(name) inside scene.edit and assign the returned numeric ID the way that object requires: nodeSetMaterialId or curvePointSetMaterialId for scene nodes, the FlowIR SetMaterial node for a Geometry Nodes graph. A failed import rolls back the draft.
|
|
76
76
|
Filter large read results with JavaScript and print only useful details.
|
|
77
77
|
After a major edit, capture a screenshot outside the transaction and emitImage its reference.
|
|
78
78
|
screenshot({ camera: { position: {x,y,z}, target: {x,y,z}, projection: 'perspective', horizontalFovDegrees: 60 } })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const WOMP_ACCOUNT_DECLARATIONS = "declare const womp: { account: {\n\"read\": ((options: {\n\"sections\": Array<\"profile\" | \"teams\" | \"credits\" | \"subscription\" | \"billing\" | \"orders\" | \"cart\" | \"projects\" | \"notifications\" | \"workflows\">;\n\"from\"?: undefined | number;\n\"count\"?: undefined | number;\n}) => Promise<{\n\"provenance\": {\n\"kind\": \"live\";\n\"observedAt\": string;\n} | {\n\"kind\": \"fixture\";\n\"profile\": \"demo-account\";\n\"fictional\": true;\n};\n\"profile\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": {\n\"userId\": string;\n\"name\": string;\n\"email\"?: undefined | null | string;\n\"biography\"?: undefined | null | string;\n\"picture\"?: undefined | null | string;\n\"isPro\"?: undefined | false | true;\n\"subStatus\"?: undefined | null | string;\n\"verified\"?: undefined | false | true;\n\"tier\"?: undefined | number;\n\"roles\"?: undefined | string;\n\"permissions\"?: undefined | string;\n\"projectCount\"?: undefined | number;\n\"publicProjectCount\"?: undefined | number;\n\"followerCount\"?: undefined | number;\n\"followeeCount\"?: undefined | number;\n\"totalLikeCount\"?: undefined | number;\n\"point\"?: undefined | number;\n\"thisWeekPoint\"?: undefined | number;\n\"createdAt\"?: undefined | string;\n\"lastEditedAt\"?: undefined | string;\n\"addresses\"?: undefined | Array<{\n\"name\": string;\n\"city\": string;\n\"country\": string;\n\"line1\": string;\n\"line2\"?: undefined | null | string;\n\"postalCode\": string;\n\"state\"?: undefined | null | string;\n\"phoneNumber\"?: undefined | null | string;\n}>;\n\"badges\"?: undefined | Array<{\n\"id\": string;\n\"description\": string;\n\"symbol\": string;\n}>;\n};\n};\n\"teams\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": Array<{\n\"teamId\": string;\n\"name\": string;\n\"roles\": string;\n\"accepted\": false | true;\n\"memberCount\"?: undefined | number;\n\"seats\"?: undefined | number;\n}>;\n};\n\"credits\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": Array<{\n\"unit\": \"aip\" | \"3dpd\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"available\": number;\n\"subscription\": number;\n\"periodical\": number;\n\"canUseSubscriptionCredit\": false | true;\n\"buckets\": Array<{\n\"net\": number;\n\"originalNet\": number;\n\"activeSubscriptionId\": null | string;\n\"periodicalFrom\": null | string;\n\"transactionId\": null | string;\n\"transactionFrom\": null | string;\n}>;\n}>;\n};\n\"subscription\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": null | {\n\"id\": number;\n\"status\": string;\n\"period\": string;\n\"createdAt\": string;\n\"trialEndAt\"?: undefined | null | string;\n\"endAt\"?: undefined | null | string;\n\"cancelAt\"?: undefined | null | string;\n\"canceledAt\"?: undefined | null | string;\n\"endedAt\"?: undefined | null | string;\n\"price\"?: undefined | number;\n};\n};\n\"billing\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": {\n\"balance\": number;\n\"history\": {\n\"items\": Array<{\n\"invoiceId\": string;\n\"amountPaid\": number;\n\"paymentDate\": string;\n\"paymentStatus\": string;\n\"description\": null | string;\n\"via\": string;\n}>;\n\"from\": number;\n\"nextFrom\": null | number;\n\"totalCount\"?: undefined | number;\n};\n\"upcoming\": null | {\n\"amountDue\": number;\n\"total\": number;\n\"dueDate\": string;\n\"lines\": Array<{\n\"amount\": number;\n\"description\": null | string;\n}>;\n};\n\"paymentMethods\": Array<{\n\"type\": string;\n\"brand\"?: undefined | string;\n\"last4\"?: undefined | string;\n\"default\": false | true;\n\"status\"?: undefined | string;\n}>;\n};\n};\n\"orders\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": {\n\"items\": Array<{\n\"id\": number;\n\"status\": number;\n\"statusName\": string;\n\"totalCost\": number;\n\"shippingCost\": number;\n\"shippingService\"?: undefined | null | string;\n\"createdAt\": string;\n\"deliveredAt\"?: undefined | null | string;\n\"clientShippingStartedAt\"?: undefined | null | string;\n\"clientShippingDays\"?: undefined | null | number;\n\"orderItems\": Array<{\n\"id\": number;\n\"title\": string;\n\"projectId\": null | number;\n\"projectTitle\"?: undefined | null | string;\n\"quantity\": number;\n\"status\": number;\n\"materialName\"?: undefined | null | string;\n\"color\"?: undefined | null | string;\n\"surface\"?: undefined | null | string;\n\"previewUrl\"?: undefined | null | string;\n\"pricings\"?: undefined | null | Array<{\n\"selected\": false | true;\n\"salePrice\": number;\n\"discount\"?: undefined | number;\n\"needPro\"?: undefined | false | true;\n}>;\n}>;\n\"addrTo\"?: undefined | null | {\n\"name\": string;\n\"city\": string;\n\"country\": string;\n\"line1\": string;\n\"line2\"?: undefined | null | string;\n\"postalCode\": string;\n\"state\"?: undefined | null | string;\n\"phoneNumber\"?: undefined | null | string;\n};\n\"shipments\"?: undefined | Array<{\n\"carrier\"?: undefined | string;\n\"trackingNumber\": string;\n\"trackingStatus\": string;\n}>;\n}>;\n\"from\": number;\n\"nextFrom\": null | number;\n\"totalCount\"?: undefined | number;\n};\n};\n\"cart\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": {\n\"items\": Array<{\n\"id\": number;\n\"title\": string;\n\"projectId\": null | number;\n\"projectTitle\"?: undefined | null | string;\n\"quantity\": number;\n\"status\": number;\n\"materialName\"?: undefined | null | string;\n\"color\"?: undefined | null | string;\n\"surface\"?: undefined | null | string;\n\"previewUrl\"?: undefined | null | string;\n\"pricings\"?: undefined | null | Array<{\n\"selected\": false | true;\n\"salePrice\": number;\n\"discount\"?: undefined | number;\n\"needPro\"?: undefined | false | true;\n}>;\n}>;\n\"from\": number;\n\"nextFrom\": null | number;\n\"totalCount\"?: undefined | number;\n};\n};\n\"projects\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": {\n\"items\": Array<{\n\"id\": number;\n\"title\": string;\n\"userId\"?: undefined | string;\n\"teamId\"?: undefined | null | string;\n\"public\": false | true;\n\"createdAt\"?: undefined | string;\n\"updatedAt\"?: undefined | string;\n\"thumbnailUrl\"?: undefined | null | string;\n\"labels\"?: undefined | Array<string>;\n}>;\n\"from\": number;\n\"nextFrom\": null | number;\n\"totalCount\"?: undefined | number;\n};\n};\n\"notifications\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": {\n\"items\": Array<{\n\"id\": number;\n\"type\": string;\n\"read\": false | true;\n\"seen\": false | true;\n\"createdAt\": string;\n\"details\": {\n[key: string]: unknown;\n};\n}>;\n\"from\": number;\n\"nextFrom\": null | number;\n\"totalCount\"?: undefined | number;\n};\n};\n\"workflows\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": {\n\"items\": Array<{\n\"id\": number;\n\"name\": string;\n\"type\": string;\n\"description\"?: undefined | null | string;\n\"capabilities\"?: undefined | Array<string>;\n}>;\n\"from\": number;\n\"nextFrom\": null | number;\n\"totalCount\"?: undefined | number;\n};\n};\n}>);\n} };\ndeclare function print(...values: unknown[]): void;\ndeclare function emitImage(ref: { id: string; mediaType: string; name?: string }): Promise<void>;\ndeclare function emitFile(ref: { id: string; mediaType: string; name?: string }): Promise<void>;\n";
|
|
1
|
+
export declare const WOMP_ACCOUNT_DECLARATIONS = "declare const womp: { account: {\n\"read\": ((options: {\n\"sections\": Array<\"profile\" | \"teams\" | \"credits\" | \"subscription\" | \"billing\" | \"orders\" | \"cart\" | \"projects\" | \"notifications\" | \"workflows\">;\n\"from\"?: undefined | number;\n\"count\"?: undefined | number;\n}) => Promise<{\n\"provenance\": {\n\"kind\": \"live\";\n\"observedAt\": string;\n} | {\n\"kind\": \"fixture\";\n\"profile\": \"demo-account\";\n\"fictional\": true;\n};\n\"profile\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": {\n\"userId\": string;\n\"name\": string;\n\"email\"?: undefined | null | string;\n\"biography\"?: undefined | null | string;\n\"picture\"?: undefined | null | string;\n\"isPro\"?: undefined | false | true;\n\"subStatus\"?: undefined | null | string;\n\"verified\"?: undefined | false | true;\n\"tier\"?: undefined | number;\n\"roles\"?: undefined | string;\n\"permissions\"?: undefined | string;\n\"projectCount\"?: undefined | number;\n\"publicProjectCount\"?: undefined | number;\n\"followerCount\"?: undefined | number;\n\"followeeCount\"?: undefined | number;\n\"totalLikeCount\"?: undefined | number;\n\"point\"?: undefined | number;\n\"thisWeekPoint\"?: undefined | number;\n\"createdAt\"?: undefined | string;\n\"lastEditedAt\"?: undefined | string;\n\"addresses\"?: undefined | Array<{\n\"name\": string;\n\"city\": string;\n\"country\": string;\n\"line1\": string;\n\"line2\"?: undefined | null | string;\n\"postalCode\": string;\n\"state\"?: undefined | null | string;\n\"phoneNumber\"?: undefined | null | string;\n}>;\n\"badges\"?: undefined | Array<{\n\"id\": string;\n\"description\": string;\n\"symbol\": string;\n}>;\n};\n};\n\"teams\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": Array<{\n\"teamId\": string;\n\"name\": string;\n\"roles\": string;\n\"accepted\": false | true;\n\"memberCount\"?: undefined | number;\n\"seats\"?: undefined | number;\n}>;\n};\n\"credits\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": Array<{\n\"unit\": \"aip\" | \"3dpd\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"available\": number;\n\"subscription\": number;\n\"periodical\": number;\n\"canUseSubscriptionCredit\": false | true;\n\"buckets\": Array<{\n\"net\": number;\n\"originalNet\": number;\n\"activeSubscriptionId\": null | string;\n\"periodicalFrom\": null | string;\n\"transactionId\": null | string;\n\"transactionFrom\": null | string;\n}>;\n}>;\n};\n\"subscription\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": null | {\n\"id\": number;\n\"status\": string;\n\"period\": string;\n\"createdAt\": string;\n\"trialEndAt\"?: undefined | null | string;\n\"endAt\"?: undefined | null | string;\n\"cancelAt\"?: undefined | null | string;\n\"canceledAt\"?: undefined | null | string;\n\"endedAt\"?: undefined | null | string;\n\"price\"?: undefined | number;\n};\n};\n\"billing\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": {\n\"balance\": number;\n\"history\": {\n\"items\": Array<{\n\"invoiceId\": string;\n\"amountPaid\": number;\n\"paymentDate\": string;\n\"paymentStatus\": string;\n\"description\": null | string;\n\"via\": string;\n}>;\n\"from\": number;\n\"nextFrom\": null | number;\n\"totalCount\"?: undefined | number;\n};\n\"upcoming\": null | {\n\"amountDue\": number;\n\"total\": number;\n\"dueDate\": string;\n\"lines\": Array<{\n\"amount\": number;\n\"description\": null | string;\n}>;\n};\n\"paymentMethods\": Array<{\n\"type\": string;\n\"brand\"?: undefined | string;\n\"last4\"?: undefined | string;\n\"default\": false | true;\n\"status\"?: undefined | string;\n}>;\n};\n};\n\"orders\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": {\n\"items\": Array<{\n\"id\": number;\n\"status\": number;\n\"statusName\": string;\n\"totalCost\": number;\n\"shippingCost\": number;\n\"shippingService\"?: undefined | null | string;\n\"createdAt\": string;\n\"deliveredAt\"?: undefined | null | string;\n\"clientShippingStartedAt\"?: undefined | null | string;\n\"clientShippingDays\"?: undefined | null | number;\n\"orderItems\": Array<{\n\"id\": number;\n\"title\": string;\n\"projectId\": null | number;\n\"projectTitle\"?: undefined | null | string;\n\"quantity\": number;\n\"status\": number;\n\"materialName\"?: undefined | null | string;\n\"color\"?: undefined | null | string;\n\"surface\"?: undefined | null | string;\n\"previewUrl\"?: undefined | null | string;\n\"pricings\"?: undefined | null | Array<{\n\"selected\": false | true;\n\"salePrice\": number;\n\"discount\"?: undefined | number;\n\"needPro\"?: undefined | false | true;\n}>;\n}>;\n\"addrTo\"?: undefined | null | {\n\"name\": string;\n\"city\": string;\n\"country\": string;\n\"line1\": string;\n\"line2\"?: undefined | null | string;\n\"postalCode\": string;\n\"state\"?: undefined | null | string;\n\"phoneNumber\"?: undefined | null | string;\n};\n\"shipments\"?: undefined | Array<{\n\"carrier\"?: undefined | string;\n\"trackingNumber\": string;\n\"trackingStatus\": string;\n}>;\n}>;\n\"from\": number;\n\"nextFrom\": null | number;\n\"totalCount\"?: undefined | number;\n};\n};\n\"cart\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": {\n\"items\": Array<{\n\"id\": number;\n\"title\": string;\n\"projectId\": null | number;\n\"projectTitle\"?: undefined | null | string;\n\"quantity\": number;\n\"status\": number;\n\"materialName\"?: undefined | null | string;\n\"color\"?: undefined | null | string;\n\"surface\"?: undefined | null | string;\n\"previewUrl\"?: undefined | null | string;\n\"pricings\"?: undefined | null | Array<{\n\"selected\": false | true;\n\"salePrice\": number;\n\"discount\"?: undefined | number;\n\"needPro\"?: undefined | false | true;\n}>;\n}>;\n\"from\": number;\n\"nextFrom\": null | number;\n\"totalCount\"?: undefined | number;\n};\n};\n\"projects\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": {\n\"items\": Array<{\n\"id\": number;\n\"title\": string;\n\"userId\"?: undefined | string;\n\"teamId\"?: undefined | null | string;\n\"public\": false | true;\n\"createdAt\"?: undefined | string;\n\"updatedAt\"?: undefined | string;\n\"thumbnailUrl\"?: undefined | null | string;\n\"labels\"?: undefined | Array<string>;\n}>;\n\"from\": number;\n\"nextFrom\": null | number;\n\"totalCount\"?: undefined | number;\n};\n};\n\"notifications\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": {\n\"items\": Array<{\n\"id\": number;\n\"type\": string;\n\"read\": false | true;\n\"seen\": false | true;\n\"createdAt\": string;\n\"details\": {\n[key: string]: unknown;\n};\n}>;\n\"from\": number;\n\"nextFrom\": null | number;\n\"totalCount\"?: undefined | number;\n};\n};\n\"workflows\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": {\n\"items\": Array<{\n\"id\": number;\n\"name\": string;\n\"type\": string;\n\"description\"?: undefined | null | string;\n\"capabilities\"?: undefined | Array<string>;\n}>;\n\"from\": number;\n\"nextFrom\": null | number;\n\"totalCount\"?: undefined | number;\n};\n};\n}>);\n} };\ndeclare function print(...values: unknown[]): void;\ndeclare function emitImage(ref: { id: string; mediaType: string; name?: string }, options?: { inspect?: boolean }): Promise<void>;\ndeclare function emitFile(ref: { id: string; mediaType: string; name?: string }): Promise<void>;\n";
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// Generated by scripts/generate-skill-declarations.mjs.
|
|
2
2
|
// prettier-ignore
|
|
3
|
-
export const WOMP_ACCOUNT_DECLARATIONS = "declare const womp: { account: {\n\"read\": ((options: {\n\"sections\": Array<\"profile\" | \"teams\" | \"credits\" | \"subscription\" | \"billing\" | \"orders\" | \"cart\" | \"projects\" | \"notifications\" | \"workflows\">;\n\"from\"?: undefined | number;\n\"count\"?: undefined | number;\n}) => Promise<{\n\"provenance\": {\n\"kind\": \"live\";\n\"observedAt\": string;\n} | {\n\"kind\": \"fixture\";\n\"profile\": \"demo-account\";\n\"fictional\": true;\n};\n\"profile\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": {\n\"userId\": string;\n\"name\": string;\n\"email\"?: undefined | null | string;\n\"biography\"?: undefined | null | string;\n\"picture\"?: undefined | null | string;\n\"isPro\"?: undefined | false | true;\n\"subStatus\"?: undefined | null | string;\n\"verified\"?: undefined | false | true;\n\"tier\"?: undefined | number;\n\"roles\"?: undefined | string;\n\"permissions\"?: undefined | string;\n\"projectCount\"?: undefined | number;\n\"publicProjectCount\"?: undefined | number;\n\"followerCount\"?: undefined | number;\n\"followeeCount\"?: undefined | number;\n\"totalLikeCount\"?: undefined | number;\n\"point\"?: undefined | number;\n\"thisWeekPoint\"?: undefined | number;\n\"createdAt\"?: undefined | string;\n\"lastEditedAt\"?: undefined | string;\n\"addresses\"?: undefined | Array<{\n\"name\": string;\n\"city\": string;\n\"country\": string;\n\"line1\": string;\n\"line2\"?: undefined | null | string;\n\"postalCode\": string;\n\"state\"?: undefined | null | string;\n\"phoneNumber\"?: undefined | null | string;\n}>;\n\"badges\"?: undefined | Array<{\n\"id\": string;\n\"description\": string;\n\"symbol\": string;\n}>;\n};\n};\n\"teams\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": Array<{\n\"teamId\": string;\n\"name\": string;\n\"roles\": string;\n\"accepted\": false | true;\n\"memberCount\"?: undefined | number;\n\"seats\"?: undefined | number;\n}>;\n};\n\"credits\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": Array<{\n\"unit\": \"aip\" | \"3dpd\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"available\": number;\n\"subscription\": number;\n\"periodical\": number;\n\"canUseSubscriptionCredit\": false | true;\n\"buckets\": Array<{\n\"net\": number;\n\"originalNet\": number;\n\"activeSubscriptionId\": null | string;\n\"periodicalFrom\": null | string;\n\"transactionId\": null | string;\n\"transactionFrom\": null | string;\n}>;\n}>;\n};\n\"subscription\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": null | {\n\"id\": number;\n\"status\": string;\n\"period\": string;\n\"createdAt\": string;\n\"trialEndAt\"?: undefined | null | string;\n\"endAt\"?: undefined | null | string;\n\"cancelAt\"?: undefined | null | string;\n\"canceledAt\"?: undefined | null | string;\n\"endedAt\"?: undefined | null | string;\n\"price\"?: undefined | number;\n};\n};\n\"billing\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": {\n\"balance\": number;\n\"history\": {\n\"items\": Array<{\n\"invoiceId\": string;\n\"amountPaid\": number;\n\"paymentDate\": string;\n\"paymentStatus\": string;\n\"description\": null | string;\n\"via\": string;\n}>;\n\"from\": number;\n\"nextFrom\": null | number;\n\"totalCount\"?: undefined | number;\n};\n\"upcoming\": null | {\n\"amountDue\": number;\n\"total\": number;\n\"dueDate\": string;\n\"lines\": Array<{\n\"amount\": number;\n\"description\": null | string;\n}>;\n};\n\"paymentMethods\": Array<{\n\"type\": string;\n\"brand\"?: undefined | string;\n\"last4\"?: undefined | string;\n\"default\": false | true;\n\"status\"?: undefined | string;\n}>;\n};\n};\n\"orders\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": {\n\"items\": Array<{\n\"id\": number;\n\"status\": number;\n\"statusName\": string;\n\"totalCost\": number;\n\"shippingCost\": number;\n\"shippingService\"?: undefined | null | string;\n\"createdAt\": string;\n\"deliveredAt\"?: undefined | null | string;\n\"clientShippingStartedAt\"?: undefined | null | string;\n\"clientShippingDays\"?: undefined | null | number;\n\"orderItems\": Array<{\n\"id\": number;\n\"title\": string;\n\"projectId\": null | number;\n\"projectTitle\"?: undefined | null | string;\n\"quantity\": number;\n\"status\": number;\n\"materialName\"?: undefined | null | string;\n\"color\"?: undefined | null | string;\n\"surface\"?: undefined | null | string;\n\"previewUrl\"?: undefined | null | string;\n\"pricings\"?: undefined | null | Array<{\n\"selected\": false | true;\n\"salePrice\": number;\n\"discount\"?: undefined | number;\n\"needPro\"?: undefined | false | true;\n}>;\n}>;\n\"addrTo\"?: undefined | null | {\n\"name\": string;\n\"city\": string;\n\"country\": string;\n\"line1\": string;\n\"line2\"?: undefined | null | string;\n\"postalCode\": string;\n\"state\"?: undefined | null | string;\n\"phoneNumber\"?: undefined | null | string;\n};\n\"shipments\"?: undefined | Array<{\n\"carrier\"?: undefined | string;\n\"trackingNumber\": string;\n\"trackingStatus\": string;\n}>;\n}>;\n\"from\": number;\n\"nextFrom\": null | number;\n\"totalCount\"?: undefined | number;\n};\n};\n\"cart\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": {\n\"items\": Array<{\n\"id\": number;\n\"title\": string;\n\"projectId\": null | number;\n\"projectTitle\"?: undefined | null | string;\n\"quantity\": number;\n\"status\": number;\n\"materialName\"?: undefined | null | string;\n\"color\"?: undefined | null | string;\n\"surface\"?: undefined | null | string;\n\"previewUrl\"?: undefined | null | string;\n\"pricings\"?: undefined | null | Array<{\n\"selected\": false | true;\n\"salePrice\": number;\n\"discount\"?: undefined | number;\n\"needPro\"?: undefined | false | true;\n}>;\n}>;\n\"from\": number;\n\"nextFrom\": null | number;\n\"totalCount\"?: undefined | number;\n};\n};\n\"projects\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": {\n\"items\": Array<{\n\"id\": number;\n\"title\": string;\n\"userId\"?: undefined | string;\n\"teamId\"?: undefined | null | string;\n\"public\": false | true;\n\"createdAt\"?: undefined | string;\n\"updatedAt\"?: undefined | string;\n\"thumbnailUrl\"?: undefined | null | string;\n\"labels\"?: undefined | Array<string>;\n}>;\n\"from\": number;\n\"nextFrom\": null | number;\n\"totalCount\"?: undefined | number;\n};\n};\n\"notifications\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": {\n\"items\": Array<{\n\"id\": number;\n\"type\": string;\n\"read\": false | true;\n\"seen\": false | true;\n\"createdAt\": string;\n\"details\": {\n[key: string]: unknown;\n};\n}>;\n\"from\": number;\n\"nextFrom\": null | number;\n\"totalCount\"?: undefined | number;\n};\n};\n\"workflows\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": {\n\"items\": Array<{\n\"id\": number;\n\"name\": string;\n\"type\": string;\n\"description\"?: undefined | null | string;\n\"capabilities\"?: undefined | Array<string>;\n}>;\n\"from\": number;\n\"nextFrom\": null | number;\n\"totalCount\"?: undefined | number;\n};\n};\n}>);\n} };\ndeclare function print(...values: unknown[]): void;\ndeclare function emitImage(ref: { id: string; mediaType: string; name?: string }): Promise<void>;\ndeclare function emitFile(ref: { id: string; mediaType: string; name?: string }): Promise<void>;\n";
|
|
3
|
+
export const WOMP_ACCOUNT_DECLARATIONS = "declare const womp: { account: {\n\"read\": ((options: {\n\"sections\": Array<\"profile\" | \"teams\" | \"credits\" | \"subscription\" | \"billing\" | \"orders\" | \"cart\" | \"projects\" | \"notifications\" | \"workflows\">;\n\"from\"?: undefined | number;\n\"count\"?: undefined | number;\n}) => Promise<{\n\"provenance\": {\n\"kind\": \"live\";\n\"observedAt\": string;\n} | {\n\"kind\": \"fixture\";\n\"profile\": \"demo-account\";\n\"fictional\": true;\n};\n\"profile\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": {\n\"userId\": string;\n\"name\": string;\n\"email\"?: undefined | null | string;\n\"biography\"?: undefined | null | string;\n\"picture\"?: undefined | null | string;\n\"isPro\"?: undefined | false | true;\n\"subStatus\"?: undefined | null | string;\n\"verified\"?: undefined | false | true;\n\"tier\"?: undefined | number;\n\"roles\"?: undefined | string;\n\"permissions\"?: undefined | string;\n\"projectCount\"?: undefined | number;\n\"publicProjectCount\"?: undefined | number;\n\"followerCount\"?: undefined | number;\n\"followeeCount\"?: undefined | number;\n\"totalLikeCount\"?: undefined | number;\n\"point\"?: undefined | number;\n\"thisWeekPoint\"?: undefined | number;\n\"createdAt\"?: undefined | string;\n\"lastEditedAt\"?: undefined | string;\n\"addresses\"?: undefined | Array<{\n\"name\": string;\n\"city\": string;\n\"country\": string;\n\"line1\": string;\n\"line2\"?: undefined | null | string;\n\"postalCode\": string;\n\"state\"?: undefined | null | string;\n\"phoneNumber\"?: undefined | null | string;\n}>;\n\"badges\"?: undefined | Array<{\n\"id\": string;\n\"description\": string;\n\"symbol\": string;\n}>;\n};\n};\n\"teams\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": Array<{\n\"teamId\": string;\n\"name\": string;\n\"roles\": string;\n\"accepted\": false | true;\n\"memberCount\"?: undefined | number;\n\"seats\"?: undefined | number;\n}>;\n};\n\"credits\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": Array<{\n\"unit\": \"aip\" | \"3dpd\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"available\": number;\n\"subscription\": number;\n\"periodical\": number;\n\"canUseSubscriptionCredit\": false | true;\n\"buckets\": Array<{\n\"net\": number;\n\"originalNet\": number;\n\"activeSubscriptionId\": null | string;\n\"periodicalFrom\": null | string;\n\"transactionId\": null | string;\n\"transactionFrom\": null | string;\n}>;\n}>;\n};\n\"subscription\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": null | {\n\"id\": number;\n\"status\": string;\n\"period\": string;\n\"createdAt\": string;\n\"trialEndAt\"?: undefined | null | string;\n\"endAt\"?: undefined | null | string;\n\"cancelAt\"?: undefined | null | string;\n\"canceledAt\"?: undefined | null | string;\n\"endedAt\"?: undefined | null | string;\n\"price\"?: undefined | number;\n};\n};\n\"billing\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": {\n\"balance\": number;\n\"history\": {\n\"items\": Array<{\n\"invoiceId\": string;\n\"amountPaid\": number;\n\"paymentDate\": string;\n\"paymentStatus\": string;\n\"description\": null | string;\n\"via\": string;\n}>;\n\"from\": number;\n\"nextFrom\": null | number;\n\"totalCount\"?: undefined | number;\n};\n\"upcoming\": null | {\n\"amountDue\": number;\n\"total\": number;\n\"dueDate\": string;\n\"lines\": Array<{\n\"amount\": number;\n\"description\": null | string;\n}>;\n};\n\"paymentMethods\": Array<{\n\"type\": string;\n\"brand\"?: undefined | string;\n\"last4\"?: undefined | string;\n\"default\": false | true;\n\"status\"?: undefined | string;\n}>;\n};\n};\n\"orders\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": {\n\"items\": Array<{\n\"id\": number;\n\"status\": number;\n\"statusName\": string;\n\"totalCost\": number;\n\"shippingCost\": number;\n\"shippingService\"?: undefined | null | string;\n\"createdAt\": string;\n\"deliveredAt\"?: undefined | null | string;\n\"clientShippingStartedAt\"?: undefined | null | string;\n\"clientShippingDays\"?: undefined | null | number;\n\"orderItems\": Array<{\n\"id\": number;\n\"title\": string;\n\"projectId\": null | number;\n\"projectTitle\"?: undefined | null | string;\n\"quantity\": number;\n\"status\": number;\n\"materialName\"?: undefined | null | string;\n\"color\"?: undefined | null | string;\n\"surface\"?: undefined | null | string;\n\"previewUrl\"?: undefined | null | string;\n\"pricings\"?: undefined | null | Array<{\n\"selected\": false | true;\n\"salePrice\": number;\n\"discount\"?: undefined | number;\n\"needPro\"?: undefined | false | true;\n}>;\n}>;\n\"addrTo\"?: undefined | null | {\n\"name\": string;\n\"city\": string;\n\"country\": string;\n\"line1\": string;\n\"line2\"?: undefined | null | string;\n\"postalCode\": string;\n\"state\"?: undefined | null | string;\n\"phoneNumber\"?: undefined | null | string;\n};\n\"shipments\"?: undefined | Array<{\n\"carrier\"?: undefined | string;\n\"trackingNumber\": string;\n\"trackingStatus\": string;\n}>;\n}>;\n\"from\": number;\n\"nextFrom\": null | number;\n\"totalCount\"?: undefined | number;\n};\n};\n\"cart\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": {\n\"items\": Array<{\n\"id\": number;\n\"title\": string;\n\"projectId\": null | number;\n\"projectTitle\"?: undefined | null | string;\n\"quantity\": number;\n\"status\": number;\n\"materialName\"?: undefined | null | string;\n\"color\"?: undefined | null | string;\n\"surface\"?: undefined | null | string;\n\"previewUrl\"?: undefined | null | string;\n\"pricings\"?: undefined | null | Array<{\n\"selected\": false | true;\n\"salePrice\": number;\n\"discount\"?: undefined | number;\n\"needPro\"?: undefined | false | true;\n}>;\n}>;\n\"from\": number;\n\"nextFrom\": null | number;\n\"totalCount\"?: undefined | number;\n};\n};\n\"projects\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": {\n\"items\": Array<{\n\"id\": number;\n\"title\": string;\n\"userId\"?: undefined | string;\n\"teamId\"?: undefined | null | string;\n\"public\": false | true;\n\"createdAt\"?: undefined | string;\n\"updatedAt\"?: undefined | string;\n\"thumbnailUrl\"?: undefined | null | string;\n\"labels\"?: undefined | Array<string>;\n}>;\n\"from\": number;\n\"nextFrom\": null | number;\n\"totalCount\"?: undefined | number;\n};\n};\n\"notifications\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": {\n\"items\": Array<{\n\"id\": number;\n\"type\": string;\n\"read\": false | true;\n\"seen\": false | true;\n\"createdAt\": string;\n\"details\": {\n[key: string]: unknown;\n};\n}>;\n\"from\": number;\n\"nextFrom\": null | number;\n\"totalCount\"?: undefined | number;\n};\n};\n\"workflows\"?: undefined | {\n\"status\": \"unavailable\";\n\"reason\": string;\n} | {\n\"status\": \"available\";\n\"scope\": {\n\"userId\": string;\n\"teamId\": null | string;\n};\n\"data\": {\n\"items\": Array<{\n\"id\": number;\n\"name\": string;\n\"type\": string;\n\"description\"?: undefined | null | string;\n\"capabilities\"?: undefined | Array<string>;\n}>;\n\"from\": number;\n\"nextFrom\": null | number;\n\"totalCount\"?: undefined | number;\n};\n};\n}>);\n} };\ndeclare function print(...values: unknown[]): void;\ndeclare function emitImage(ref: { id: string; mediaType: string; name?: string }, options?: { inspect?: boolean }): Promise<void>;\ndeclare function emitFile(ref: { id: string; mediaType: string; name?: string }): Promise<void>;\n";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const WOMP_ASSET_IMPORT_DECLARATIONS = "declare const womp: { assets: {\n\"importMesh\": ((request: {\n\"key\": string;\n\"source\": {\n\"id\": string;\n\"mediaType\": string;\n\"name\"?: undefined | string;\n};\n\"destination\": \"scene\" | \"library\";\n}) => Promise<{\n\"key\": string;\n\"status\": \"processing\" | \"ready\" | \"completed\" | \"partial\" | \"cancelled\" | \"failed\" | \"unknown\";\n\"tasks\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"status\": string;\n\"fileName\"?: undefined | string;\n\"error\"?: undefined | string;\n}>;\n\"assets\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"type\": \"mesh\" | \"field\" | \"decal\";\n}>;\n\"objectIds\": Array<number>;\n\"omittedFiles\"?: undefined | Array<{\n\"fileName\": string;\n\"projectId\": null | number;\n}>;\n\"reason\"?: undefined | string;\n}>);\n\"retryMeshImport\": ((request: {\n\"key\": string;\n\"fileName\": string;\n}) => Promise<{\n\"key\": string;\n\"status\": \"processing\" | \"ready\" | \"completed\" | \"partial\" | \"cancelled\" | \"failed\" | \"unknown\";\n\"tasks\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"status\": string;\n\"fileName\"?: undefined | string;\n\"error\"?: undefined | string;\n}>;\n\"assets\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"type\": \"mesh\" | \"field\" | \"decal\";\n}>;\n\"objectIds\": Array<number>;\n\"omittedFiles\"?: undefined | Array<{\n\"fileName\": string;\n\"projectId\": null | number;\n}>;\n\"reason\"?: undefined | string;\n}>);\n\"importImage\": ((request: {\n\"key\": string;\n\"source\": {\n\"id\": string;\n\"mediaType\": string;\n\"name\"?: undefined | string;\n};\n\"destination\": \"scene\" | \"library\";\n} & {\n\"kind\": \"image-plane\" | \"sticker\";\n\"removeBackground\"?: undefined | false | true;\n}) => Promise<{\n\"key\": string;\n\"status\": \"processing\" | \"ready\" | \"completed\" | \"partial\" | \"cancelled\" | \"failed\" | \"unknown\";\n\"tasks\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"status\": string;\n\"fileName\"?: undefined | string;\n\"error\"?: undefined | string;\n}>;\n\"assets\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"type\": \"mesh\" | \"field\" | \"decal\";\n}>;\n\"objectIds\": Array<number>;\n\"omittedFiles\"?: undefined | Array<{\n\"fileName\": string;\n\"projectId\": null | number;\n}>;\n\"reason\"?: undefined | string;\n}>);\n\"readImport\": ((key: string) => Promise<{\n\"key\": string;\n\"status\": \"processing\" | \"ready\" | \"completed\" | \"partial\" | \"cancelled\" | \"failed\" | \"unknown\";\n\"tasks\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"status\": string;\n\"fileName\"?: undefined | string;\n\"error\"?: undefined | string;\n}>;\n\"assets\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"type\": \"mesh\" | \"field\" | \"decal\";\n}>;\n\"objectIds\": Array<number>;\n\"omittedFiles\"?: undefined | Array<{\n\"fileName\": string;\n\"projectId\": null | number;\n}>;\n\"reason\"?: undefined | string;\n}>);\n\"finishImport\": ((key: string, options?: undefined | {\n\"timeoutMs\"?: undefined | number;\n}) => Promise<{\n\"key\": string;\n\"status\": \"processing\" | \"ready\" | \"completed\" | \"partial\" | \"cancelled\" | \"failed\" | \"unknown\";\n\"tasks\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"status\": string;\n\"fileName\"?: undefined | string;\n\"error\"?: undefined | string;\n}>;\n\"assets\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"type\": \"mesh\" | \"field\" | \"decal\";\n}>;\n\"objectIds\": Array<number>;\n\"omittedFiles\"?: undefined | Array<{\n\"fileName\": string;\n\"projectId\": null | number;\n}>;\n\"reason\"?: undefined | string;\n}>);\n} };\ndeclare function print(...values: unknown[]): void;\ndeclare function emitImage(ref: { id: string; mediaType: string; name?: string }): Promise<void>;\ndeclare function emitFile(ref: { id: string; mediaType: string; name?: string }): Promise<void>;\n";
|
|
1
|
+
export declare const WOMP_ASSET_IMPORT_DECLARATIONS = "declare const womp: { assets: {\n\"importMesh\": ((request: {\n\"key\": string;\n\"source\": {\n\"id\": string;\n\"mediaType\": string;\n\"name\"?: undefined | string;\n};\n\"destination\": \"scene\" | \"library\";\n}) => Promise<{\n\"key\": string;\n\"status\": \"processing\" | \"ready\" | \"completed\" | \"partial\" | \"cancelled\" | \"failed\" | \"unknown\";\n\"tasks\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"status\": string;\n\"fileName\"?: undefined | string;\n\"error\"?: undefined | string;\n}>;\n\"assets\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"type\": \"mesh\" | \"field\" | \"decal\";\n}>;\n\"objectIds\": Array<number>;\n\"omittedFiles\"?: undefined | Array<{\n\"fileName\": string;\n\"projectId\": null | number;\n}>;\n\"reason\"?: undefined | string;\n}>);\n\"retryMeshImport\": ((request: {\n\"key\": string;\n\"fileName\": string;\n}) => Promise<{\n\"key\": string;\n\"status\": \"processing\" | \"ready\" | \"completed\" | \"partial\" | \"cancelled\" | \"failed\" | \"unknown\";\n\"tasks\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"status\": string;\n\"fileName\"?: undefined | string;\n\"error\"?: undefined | string;\n}>;\n\"assets\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"type\": \"mesh\" | \"field\" | \"decal\";\n}>;\n\"objectIds\": Array<number>;\n\"omittedFiles\"?: undefined | Array<{\n\"fileName\": string;\n\"projectId\": null | number;\n}>;\n\"reason\"?: undefined | string;\n}>);\n\"importImage\": ((request: {\n\"key\": string;\n\"source\": {\n\"id\": string;\n\"mediaType\": string;\n\"name\"?: undefined | string;\n};\n\"destination\": \"scene\" | \"library\";\n} & {\n\"kind\": \"image-plane\" | \"sticker\";\n\"removeBackground\"?: undefined | false | true;\n}) => Promise<{\n\"key\": string;\n\"status\": \"processing\" | \"ready\" | \"completed\" | \"partial\" | \"cancelled\" | \"failed\" | \"unknown\";\n\"tasks\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"status\": string;\n\"fileName\"?: undefined | string;\n\"error\"?: undefined | string;\n}>;\n\"assets\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"type\": \"mesh\" | \"field\" | \"decal\";\n}>;\n\"objectIds\": Array<number>;\n\"omittedFiles\"?: undefined | Array<{\n\"fileName\": string;\n\"projectId\": null | number;\n}>;\n\"reason\"?: undefined | string;\n}>);\n\"readImport\": ((key: string) => Promise<{\n\"key\": string;\n\"status\": \"processing\" | \"ready\" | \"completed\" | \"partial\" | \"cancelled\" | \"failed\" | \"unknown\";\n\"tasks\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"status\": string;\n\"fileName\"?: undefined | string;\n\"error\"?: undefined | string;\n}>;\n\"assets\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"type\": \"mesh\" | \"field\" | \"decal\";\n}>;\n\"objectIds\": Array<number>;\n\"omittedFiles\"?: undefined | Array<{\n\"fileName\": string;\n\"projectId\": null | number;\n}>;\n\"reason\"?: undefined | string;\n}>);\n\"finishImport\": ((key: string, options?: undefined | {\n\"timeoutMs\"?: undefined | number;\n}) => Promise<{\n\"key\": string;\n\"status\": \"processing\" | \"ready\" | \"completed\" | \"partial\" | \"cancelled\" | \"failed\" | \"unknown\";\n\"tasks\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"status\": string;\n\"fileName\"?: undefined | string;\n\"error\"?: undefined | string;\n}>;\n\"assets\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"type\": \"mesh\" | \"field\" | \"decal\";\n}>;\n\"objectIds\": Array<number>;\n\"omittedFiles\"?: undefined | Array<{\n\"fileName\": string;\n\"projectId\": null | number;\n}>;\n\"reason\"?: undefined | string;\n}>);\n} };\ndeclare function print(...values: unknown[]): void;\ndeclare function emitImage(ref: { id: string; mediaType: string; name?: string }, options?: { inspect?: boolean }): Promise<void>;\ndeclare function emitFile(ref: { id: string; mediaType: string; name?: string }): Promise<void>;\n";
|