@nodaro/prompts 1.17.0 → 1.17.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nodaro/prompts",
3
- "version": "1.17.0",
3
+ "version": "1.17.2",
4
4
  "description": "Nodaro's prompt-engineering layer — person/picker catalogs with prompt hints, identity-lock clauses, entity prompt builders, brand presets, and prompt/reference assembly shared by the Nodaro platform and SDK.",
5
5
  "type": "module",
6
6
  "license": "FSL-1.1-Apache-2.0",
@@ -20,7 +20,7 @@
20
20
  "test": "vitest run"
21
21
  },
22
22
  "dependencies": {
23
- "@nodaro/shared": "^2.23.0"
23
+ "@nodaro/shared": "^3.0.0"
24
24
  },
25
25
  "devDependencies": {
26
26
  "tsup": "^8.5.0",
@@ -1001,10 +1001,16 @@ describe("lottie-overlay factory preset data validity", () => {
1001
1001
  })
1002
1002
 
1003
1003
  describe("PRESET_APPLY_CLEAR_KEYS", () => {
1004
- it("equals every COMPOSER_PLAN_MAP plan field plus lottieUrl (drift guard)", () => {
1004
+ it("clears every composition plan, its artifact and Scene3D revision context (drift guard)", () => {
1005
1005
  // Deliberately re-derived from COMPOSER_PLAN_MAP (not COMPOSER_PLAN_FIELDS):
1006
1006
  // asserting against the same constant production reads would be tautological.
1007
- const expected = [...new Set(Object.values(COMPOSER_PLAN_MAP).map((m) => m.planField)), "lottieUrl"]
1007
+ const expected = [
1008
+ ...new Set(Object.values(COMPOSER_PLAN_MAP).map((m) => m.planField)), "lottieUrl",
1009
+ // Histories contain previous prompts/references; revision-bound selections
1010
+ // and locks cannot survive replacing the plan with a preset.
1011
+ "sceneHistory", "scenePendingPlan", "sceneJobBaseRevisionId", "expectedRevisionId",
1012
+ "changeSummary", "selectedObjectIds", "lockedObjectIds", "referenceObjectIds", "referenceRoles",
1013
+ ]
1008
1014
  expect([...PRESET_APPLY_CLEAR_KEYS].sort()).toEqual([...expected].sort())
1009
1015
  })
1010
1016
 
@@ -16,10 +16,10 @@ describe("nodeSupportsPromptAffixes", () => {
16
16
  expect(nodeSupportsPromptAffixes("not-a-node")).toBe(false)
17
17
  expect(nodeSupportsPromptAffixes(undefined)).toBe(false)
18
18
  })
19
- it("PROMPT_AFFIX_NODE_TYPES is exactly the registry minus opt-outs (37 types)", () => {
19
+ it("PROMPT_AFFIX_NODE_TYPES is exactly the registry minus opt-outs (39 types)", () => {
20
20
  const expected = Object.entries(NODE_PROMPT_FIELDS).filter(([, s]) => s.affixes !== false).map(([t]) => t)
21
21
  expect([...PROMPT_AFFIX_NODE_TYPES].sort()).toEqual(expected.sort())
22
- expect(PROMPT_AFFIX_NODE_TYPES.size).toBe(37)
22
+ expect(PROMPT_AFFIX_NODE_TYPES.size).toBe(39)
23
23
  })
24
24
  it("getPromptFields still resolves", () => expect(getPromptFields("generate-image")?.prompt).toBe("prompt"))
25
25
  })
@@ -28,6 +28,8 @@ describe("promptAffixCoreField — the data key the RUN wraps with pre/post text
28
28
  it("most nodes: the editor's primary prompt field", () => {
29
29
  expect(promptAffixCoreField("generate-image")).toBe("prompt")
30
30
  expect(promptAffixCoreField("llm-chat")).toBe("userInput")
31
+ expect(promptAffixCoreField("generate-3d-scene")).toBe("scenePrompt")
32
+ expect(promptAffixCoreField("edit-3d-scene")).toBe("editPrompt")
31
33
  expect(promptAffixCoreField("text-to-speech")).toBe("directText")
32
34
  })
33
35
  it("generate-script: the run wraps the topic `prompt`, NOT the editor's styleGuide (spec §7)", () => {
@@ -118,6 +118,8 @@ export const NODE_PROMPT_FIELDS: Readonly<Record<string, PromptFieldSpec>> = {
118
118
  // ── Composition / FX (compact, no media-result preview → no inline editor) ──
119
119
  "image-critic": { prompt: "prompt", promptLabel: "Criteria", media: "image", inline: false },
120
120
  "motion-graphics": { prompt: "motionPrompt", promptLabel: "Motion prompt", media: "video", inline: false },
121
+ "generate-3d-scene": { prompt: "scenePrompt", promptLabel: "Scene", media: "text", inline: false },
122
+ "edit-3d-scene": { prompt: "editPrompt", promptLabel: "Edit instruction", media: "text", inline: false },
121
123
  "3d-title": { prompt: "titlePrompt", promptLabel: "Title", media: "text", inline: false },
122
124
  // ── Script / alignment (their primary text field) ──
123
125
  "generate-script": { prompt: "styleGuide", promptLabel: "Style guide", media: "text", inline: false },