@deepblend/dsh-blender-tool 0.3.4 → 0.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/lib/tools.js +10 -0
  2. package/package.json +2 -2
package/lib/tools.js CHANGED
@@ -33,6 +33,7 @@ import {
33
33
  SCENE_OPERATION_NAMES,
34
34
  BlenderError,
35
35
  BlenderErrorCode,
36
+ CREATION_REQUEST_VERSION,
36
37
  BlenderWarningCode,
37
38
  warning,
38
39
  } from '@deepblend/dsh-blender-contracts'
@@ -192,6 +193,10 @@ function projectCreate(ctx) {
192
193
  description:
193
194
  'Also render the preview profile now, so the first revision already has a viewable image. Default false.',
194
195
  },
196
+ creationKey: {
197
+ type: 'string',
198
+ description: 'Optional stable key for this creation intent (1–128 characters, no control characters). Reuse it with the same inputs when retrying an uncertain result. A completed request opens the same project without another compile or render; a new project needs a new key. Recovery returns its current saved revision.',
199
+ },
195
200
  },
196
201
  output: TOOL_OUTPUT,
197
202
  async execute(args, exec) {
@@ -199,6 +204,9 @@ function projectCreate(ctx) {
199
204
  if (resolved.unavailable !== undefined) return { ok: false, ...resolved.unavailable }
200
205
  try {
201
206
  if (args.recipe !== undefined && args.sceneSpec !== undefined) throw new BlenderError('RECIPE_REQUEST_INVALID', 'Pass either recipe or sceneSpec, not both')
207
+ if (args.creationKey !== undefined && resolved.studio.creationRequestProtocol !== CREATION_REQUEST_VERSION) {
208
+ throw new BlenderError('UI_HOST_API_STALE', 'The running Host cannot recover keyed creation requests. Update DeepBlend and restart the profile before retrying.')
209
+ }
202
210
  const { data, canonicalWarnings } = await canonicalCall(resolved.studio.createProject({
203
211
  ...definedFields({
204
212
  title: args.title,
@@ -206,6 +214,7 @@ function projectCreate(ctx) {
206
214
  sceneSpec: args.sceneSpec,
207
215
  recipe: args.recipe,
208
216
  projectId: args.projectId,
217
+ creationKey: args.creationKey,
209
218
  saveCheckpoint: args.saveCheckpoint,
210
219
  }),
211
220
  renderPreview: args.renderPreview === true,
@@ -216,6 +225,7 @@ function projectCreate(ctx) {
216
225
  `Revision: ${describeRevision(data.revision)}`,
217
226
  `Digest: ${data.revision.digest}`,
218
227
  ]
228
+ if (data.creationReplayed) notes.push('Recovered the existing creation; no new project, compile or render was started. This is the current saved revision.')
219
229
  if (data.revision.checkpoint === null) {
220
230
  notes.push('No checkpoint was saved. The first preview will compile this revision lazily.')
221
231
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deepblend/dsh-blender-tool",
3
- "version": "0.3.4",
3
+ "version": "0.3.6",
4
4
  "type": "module",
5
5
  "description": "Agent-preset tool consumer: registers the model-visible DeepBlend Blender tools. Publishes no service.",
6
6
  "main": "lib/index.js",
@@ -11,7 +11,7 @@
11
11
  "./package.json": "./package.json"
12
12
  },
13
13
  "dependencies": {
14
- "@deepblend/dsh-blender-contracts": "0.3.4"
14
+ "@deepblend/dsh-blender-contracts": "0.3.6"
15
15
  },
16
16
  "license": "MIT",
17
17
  "repository": {