@stablebaseline/sdk 0.4.4 → 0.4.5

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/openapi.json CHANGED
@@ -4281,11 +4281,11 @@
4281
4281
  }
4282
4282
  }
4283
4283
  },
4284
- "/tools/exportDeck": {
4284
+ "/tools/designDeck": {
4285
4285
  "post": {
4286
- "summary": "exportDeck",
4287
- "description": "Export an already-generated slide DECK (from the branded HTML-deck pipeline) to an editable PowerPoint (PPTX), PDF, PNG images, or raw HTML. Give it the deckId of a deck whose status is 'ready'; it downloads the deck's stored HTML and renders it in a headless browser via the export worker. 'pptx' = native, fully-editable PowerPoint (real shapes and text, not screenshots); 'pdf' = vector, one page per slide; 'png' = one image per slide (returned as a base64 array); 'html' = the self-contained deck HTML. Returns the file as base64 in `data` (pptx/pdf/html) or per-slide base64 in `slides` (png). The deck must be finished; a deck that is still generating, failed, or archived returns a clear message.",
4288
- "operationId": "exportDeck",
4286
+ "summary": "designDeck",
4287
+ "description": "Create or refine a slide deck on a whiteboard by conversing with the AI design agent. Send a brief for a NEW deck, a change to an EXISTING one, or an answer to the agent's question. The agent builds a polished, on-brand deck and places it on the board; if the brief is ambiguous it asks ONE clarifying question (answer with the same sessionId). Returns immediately; poll getDeckReply for the result. Use for building or editing slide decks / presentations. The deck lives in a whiteboard, so it needs an existing whiteboard documentId: if you do not have one, create it first with createWhiteboard and pass its documentId here. FIRST vs FOLLOW-UP: the first call (from nothing) builds; a follow-up call (an answer, a change, or a new instruction) passes the sessionId (or the deckId) plus the new message. kind:'deck' (default) is the premium on-brand HTML deck; kind:'express' builds the native, deterministic branded-executive deck directly on the whiteboard (faster, lower fidelity, one-shot, not conversational). COST + APPROVAL: a build costs 50 credits and an edit 10; a clarifying question is FREE. Call FIRST without confirm to get the exact cost plus the workspace balance, show it to the user, and only call again with confirm:true once they agree. The fee is auto-refunded if a turn produces no change or fails. Returns sessionId (the conversation), deckId (the deck), status, turnType, started, awaitingUser, needsConfirmation, insufficientCredits, and assistantMessage. Export the finished deck with exportFromWhiteboard.",
4288
+ "operationId": "designDeck",
4289
4289
  "tags": [
4290
4290
  "uncategorized"
4291
4291
  ],
@@ -4296,27 +4296,78 @@
4296
4296
  "schema": {
4297
4297
  "type": "object",
4298
4298
  "properties": {
4299
+ "documentId": {
4300
+ "type": "string",
4301
+ "description": "The whiteboard to design into. REQUIRED: the deck lives in this whiteboard. Create one first with createWhiteboard if you do not already have its id."
4302
+ },
4303
+ "message": {
4304
+ "type": "string",
4305
+ "description": "This turn's message in plain language: the design brief on the first turn, an edit instruction later, or the user's ANSWER to a clarifying question the agent asked. On a follow-up turn, pass this together with the sessionId (or deckId) from the earlier call."
4306
+ },
4307
+ "sessionId": {
4308
+ "type": "string",
4309
+ "description": "The design conversation to continue, as returned by an earlier designDeck call. Pass it together with message to answer a question, make an edit, or send a follow-up. Omit on the very first call to start a new conversation."
4310
+ },
4299
4311
  "deckId": {
4300
4312
  "type": "string",
4301
- "description": "The id of an existing, finished ('ready') deck to export."
4313
+ "description": "Optional. An existing deck to continue designing (usually you pass sessionId instead; when both are given the session's deck wins)."
4302
4314
  },
4303
- "format": {
4315
+ "kind": {
4304
4316
  "type": "string",
4305
4317
  "enum": [
4306
- "pptx",
4307
- "pdf",
4308
- "png",
4309
- "html"
4318
+ "deck",
4319
+ "illustration",
4320
+ "design",
4321
+ "express"
4310
4322
  ],
4311
- "description": "Output format. 'pptx' (default) = editable PowerPoint; 'pdf' = vector PDF; 'png' = one base64 image per slide; 'html' = the deck's self-contained HTML."
4323
+ "description": "Which engine. 'deck' (default) = the premium on-brand HTML deck (conversational, build + edit); 'illustration' and 'design' are conversational variants. 'express' = the native, deterministic branded-executive deck (faster, lower fidelity, one-shot, not conversational)."
4324
+ },
4325
+ "title": {
4326
+ "type": "string",
4327
+ "description": "Optional title. If omitted, a clear one is derived from the brief."
4312
4328
  },
4313
4329
  "brandKitId": {
4314
4330
  "type": "string",
4315
- "description": "Optional brand kit id (reserved for future per-export theming; the deck is already branded, so this is usually unnecessary)."
4331
+ "description": "Optional brand kit id (from listBrandKits) to theme the deck. If omitted, the organisation's effective brand is used."
4332
+ },
4333
+ "slideCount": {
4334
+ "type": "number",
4335
+ "description": "Optional target number of slides for a build turn (the composer adjusts to fit the story). Typical 6 to 12."
4336
+ },
4337
+ "attachments": {
4338
+ "type": "array",
4339
+ "description": "Optional reference images for THIS turn (up to 8; images only). The agent lifts palette, layout, and tone from them (it does not pixel-copy). Non-image attachments are ignored.",
4340
+ "items": {
4341
+ "type": "object",
4342
+ "description": "One reference image: give a public url, OR base64 data plus its mediaType.",
4343
+ "properties": {
4344
+ "url": {
4345
+ "type": "string",
4346
+ "description": "A public https URL to the image."
4347
+ },
4348
+ "data": {
4349
+ "type": "string",
4350
+ "description": "The image as base64 (no data: prefix). Provide mediaType alongside it."
4351
+ },
4352
+ "mediaType": {
4353
+ "type": "string",
4354
+ "description": "The image MIME type, e.g. 'image/png' or 'image/jpeg'."
4355
+ },
4356
+ "name": {
4357
+ "type": "string",
4358
+ "description": "Optional human-readable name for the image."
4359
+ }
4360
+ }
4361
+ }
4362
+ },
4363
+ "confirm": {
4364
+ "type": "boolean",
4365
+ "description": "Set true ONLY after the user has approved the cost (50 for a build, 10 for an edit). Leave unset/false on the first call of a turn to receive the cost quote plus balance. A clarifying question turn is never charged."
4316
4366
  }
4317
4367
  },
4318
4368
  "required": [
4319
- "deckId"
4369
+ "documentId",
4370
+ "message"
4320
4371
  ]
4321
4372
  }
4322
4373
  }
@@ -4397,11 +4448,11 @@
4397
4448
  }
4398
4449
  }
4399
4450
  },
4400
- "/tools/generateIllustration": {
4451
+ "/tools/getDeckReply": {
4401
4452
  "post": {
4402
- "summary": "generateIllustration",
4403
- "description": "Generate a standalone, on-brand ILLUSTRATION (raw pixels) from a plain-language prompt, the one thing native shapes and diagrams cannot make. Returns a durable image URL you can insert into a whiteboard or document. Colour-conditioned to the organisation's brand (or a specific brandKitId) and rendered in a clean flat-vector editorial style with NO text, letters, or numbers baked in. Costs a small flat credit charge (refunded automatically if generation fails on our side); an identical prompt reuses a cached image at no charge.",
4404
- "operationId": "generateIllustration",
4453
+ "summary": "getDeckReply",
4454
+ "description": "Get the design agent's reply after calling designDeck: the status (thinking/building/ready) and EITHER the finished deck (slide count + preview) OR a clarifying question to answer (call designDeck with the sessionId + your answer). Poll until ready or a question appears. Give it the whiteboard documentId and the deckId (both returned by designDeck). It returns the build status ('generating' while working, 'ready' when the deck is finished, 'failed' if it failed) plus, once ready, the slide count and a thumbnail image URL. IMPORTANT for the conversation: if the agent asked a CLARIFYING QUESTION instead of doing the work, this returns awaitingUser:true with pendingQuestion (and assistantMessage) — relay that question to the user, then call designDeck again with the same sessionId and the user's answer as message to continue. It also returns the full conversation (history + status + pending question). A turn usually takes about 1 to 3 minutes, so poll every 15 to 30 seconds until it is 'ready' or awaitingUser is true. When ready, the deck has already been placed on the whiteboard; you can also export it with exportFromWhiteboard. If a turn failed or produced no change, the user was not charged.",
4455
+ "operationId": "getDeckReply",
4405
4456
  "tags": [
4406
4457
  "uncategorized"
4407
4458
  ],
@@ -4412,34 +4463,229 @@
4412
4463
  "schema": {
4413
4464
  "type": "object",
4414
4465
  "properties": {
4415
- "prompt": {
4466
+ "documentId": {
4416
4467
  "type": "string",
4417
- "description": "Plain-language description of the illustration to generate (e.g. 'a friendly robot assistant helping a small team')."
4468
+ "description": "The whiteboard that hosts the deck."
4418
4469
  },
4419
- "width": {
4420
- "type": "number",
4421
- "description": "Optional output width in px (rounded to a multiple of 64, 512 to 2048). Default 1024."
4422
- },
4423
- "height": {
4424
- "type": "number",
4425
- "description": "Optional output height in px (rounded to a multiple of 64, 512 to 2048). Default 1024."
4470
+ "deckId": {
4471
+ "type": "string",
4472
+ "description": "The deck to poll, as returned by designDeck."
4473
+ }
4474
+ },
4475
+ "required": [
4476
+ "documentId",
4477
+ "deckId"
4478
+ ]
4479
+ }
4480
+ }
4481
+ }
4482
+ },
4483
+ "responses": {
4484
+ "200": {
4485
+ "description": "Tool result (shape varies per tool — refer to the tool's docs for the exact return value).",
4486
+ "content": {
4487
+ "application/json": {
4488
+ "schema": {
4489
+ "type": "object",
4490
+ "additionalProperties": true
4491
+ }
4492
+ }
4493
+ }
4494
+ },
4495
+ "400": {
4496
+ "description": "Validation error.",
4497
+ "content": {
4498
+ "application/json": {
4499
+ "schema": {
4500
+ "$ref": "#/components/schemas/ErrorResponse"
4501
+ }
4502
+ }
4503
+ }
4504
+ },
4505
+ "401": {
4506
+ "description": "Missing or invalid credentials.",
4507
+ "content": {
4508
+ "application/json": {
4509
+ "schema": {
4510
+ "$ref": "#/components/schemas/ErrorResponse"
4511
+ }
4512
+ }
4513
+ }
4514
+ },
4515
+ "403": {
4516
+ "description": "Authenticated but lacking the required permission or feature flag.",
4517
+ "content": {
4518
+ "application/json": {
4519
+ "schema": {
4520
+ "$ref": "#/components/schemas/ErrorResponse"
4521
+ }
4522
+ }
4523
+ }
4524
+ },
4525
+ "404": {
4526
+ "description": "Resource not found.",
4527
+ "content": {
4528
+ "application/json": {
4529
+ "schema": {
4530
+ "$ref": "#/components/schemas/ErrorResponse"
4531
+ }
4532
+ }
4533
+ }
4534
+ },
4535
+ "422": {
4536
+ "description": "Body did not match the tool's input schema.",
4537
+ "content": {
4538
+ "application/json": {
4539
+ "schema": {
4540
+ "$ref": "#/components/schemas/ErrorResponse"
4541
+ }
4542
+ }
4543
+ }
4544
+ },
4545
+ "500": {
4546
+ "description": "Server error.",
4547
+ "content": {
4548
+ "application/json": {
4549
+ "schema": {
4550
+ "$ref": "#/components/schemas/ErrorResponse"
4551
+ }
4552
+ }
4553
+ }
4554
+ }
4555
+ }
4556
+ }
4557
+ },
4558
+ "/tools/designInWhiteboard": {
4559
+ "post": {
4560
+ "summary": "designInWhiteboard",
4561
+ "description": "DEPRECATED — use designDeck instead. This tool no longer designs anything; it returns a short message pointing you at designDeck (to build or edit a slide deck on a whiteboard) or at createWhiteboard + addWhiteboardElements (for manual whiteboard content). It has NO side effects and runs no design. It is kept only so existing callers get a clear message; it will be upgraded in a future update.",
4562
+ "operationId": "designInWhiteboard",
4563
+ "tags": [
4564
+ "whiteboards"
4565
+ ],
4566
+ "requestBody": {
4567
+ "required": false,
4568
+ "content": {
4569
+ "application/json": {
4570
+ "schema": {
4571
+ "type": "object",
4572
+ "properties": {
4573
+ "documentId": {
4574
+ "type": "string",
4575
+ "description": "Ignored. Deprecated tool — use designDeck."
4426
4576
  },
4427
- "style": {
4577
+ "message": {
4428
4578
  "type": "string",
4429
- "description": "Optional extra style hint appended to the prompt (e.g. 'isometric', 'soft gradients, pastel')."
4579
+ "description": "Ignored. Deprecated tool use designDeck."
4580
+ }
4581
+ }
4582
+ }
4583
+ }
4584
+ }
4585
+ },
4586
+ "responses": {
4587
+ "200": {
4588
+ "description": "Tool result (shape varies per tool — refer to the tool's docs for the exact return value).",
4589
+ "content": {
4590
+ "application/json": {
4591
+ "schema": {
4592
+ "type": "object",
4593
+ "additionalProperties": true
4594
+ }
4595
+ }
4596
+ }
4597
+ },
4598
+ "400": {
4599
+ "description": "Validation error.",
4600
+ "content": {
4601
+ "application/json": {
4602
+ "schema": {
4603
+ "$ref": "#/components/schemas/ErrorResponse"
4604
+ }
4605
+ }
4606
+ }
4607
+ },
4608
+ "401": {
4609
+ "description": "Missing or invalid credentials.",
4610
+ "content": {
4611
+ "application/json": {
4612
+ "schema": {
4613
+ "$ref": "#/components/schemas/ErrorResponse"
4614
+ }
4615
+ }
4616
+ }
4617
+ },
4618
+ "403": {
4619
+ "description": "Authenticated but lacking the required permission or feature flag.",
4620
+ "content": {
4621
+ "application/json": {
4622
+ "schema": {
4623
+ "$ref": "#/components/schemas/ErrorResponse"
4624
+ }
4625
+ }
4626
+ }
4627
+ },
4628
+ "404": {
4629
+ "description": "Resource not found.",
4630
+ "content": {
4631
+ "application/json": {
4632
+ "schema": {
4633
+ "$ref": "#/components/schemas/ErrorResponse"
4634
+ }
4635
+ }
4636
+ }
4637
+ },
4638
+ "422": {
4639
+ "description": "Body did not match the tool's input schema.",
4640
+ "content": {
4641
+ "application/json": {
4642
+ "schema": {
4643
+ "$ref": "#/components/schemas/ErrorResponse"
4644
+ }
4645
+ }
4646
+ }
4647
+ },
4648
+ "500": {
4649
+ "description": "Server error.",
4650
+ "content": {
4651
+ "application/json": {
4652
+ "schema": {
4653
+ "$ref": "#/components/schemas/ErrorResponse"
4654
+ }
4655
+ }
4656
+ }
4657
+ }
4658
+ }
4659
+ }
4660
+ },
4661
+ "/tools/editInWhiteboard": {
4662
+ "post": {
4663
+ "summary": "editInWhiteboard",
4664
+ "description": "DEPRECATED — use designDeck instead. An edit is just another turn in the design conversation, and designDeck handles build AND edit. This tool no longer edits anything; it returns a short message pointing you at designDeck. It has NO side effects and runs no design. It is kept only so existing callers get a clear message; it will be upgraded in a future update.",
4665
+ "operationId": "editInWhiteboard",
4666
+ "tags": [
4667
+ "whiteboards"
4668
+ ],
4669
+ "requestBody": {
4670
+ "required": false,
4671
+ "content": {
4672
+ "application/json": {
4673
+ "schema": {
4674
+ "type": "object",
4675
+ "properties": {
4676
+ "documentId": {
4677
+ "type": "string",
4678
+ "description": "Ignored. Deprecated tool — use designDeck."
4430
4679
  },
4431
- "brandKitId": {
4680
+ "designId": {
4432
4681
  "type": "string",
4433
- "description": "Optional brand kit id to colour-condition the illustration. Defaults to the organisation's effective brand."
4682
+ "description": "Ignored. Deprecated tool use designDeck."
4434
4683
  },
4435
- "documentId": {
4684
+ "instruction": {
4436
4685
  "type": "string",
4437
- "description": "Optional document this illustration is for (used only for usage logging and provenance)."
4686
+ "description": "Ignored. Deprecated tool use designDeck."
4438
4687
  }
4439
- },
4440
- "required": [
4441
- "prompt"
4442
- ]
4688
+ }
4443
4689
  }
4444
4690
  }
4445
4691
  }
@@ -4519,13 +4765,13 @@
4519
4765
  }
4520
4766
  }
4521
4767
  },
4522
- "/tools/designDeck": {
4768
+ "/tools/exportFromWhiteboard": {
4523
4769
  "post": {
4524
- "summary": "designDeck",
4525
- "description": "Design a complete, branded HTML slide deck from a plain-language goal using the premium agentic deck builder. COST-GATED (50 credits): the first call (confirm unset) returns the cost quote plus the workspace balance so you can ask the user; only a call with confirm:true charges the flat fee and builds the deck. The deck is themed to the organisation's brand (or a brandKitId), composed slide by slide, rendered and self-corrected, then saved as a finished deck you can export with exportDeck (pptx/pdf/png/html). The fee is auto-refunded if the build fails or produces nothing. If the user would rather not spend the credits, build slides another way. Requires a projectId for a new deck, or a deckId to rebuild an existing one.",
4526
- "operationId": "designDeck",
4770
+ "summary": "exportFromWhiteboard",
4771
+ "description": "Export a design that lives in a whiteboard to an editable PowerPoint (PPTX), PDF, PNG images, or raw HTML. Give it the whiteboard documentId and the designId (the deck). kind:'deck' (default) renders the finished deck via the export worker: 'pptx' = native, fully-editable PowerPoint (real shapes and text, not screenshots); 'pdf' = vector, one page per slide; 'png' = one image per slide (returned as a base64 array); 'html' = the self-contained deck HTML. Returns the file as base64 in data (pptx/pdf/html) or per-slide base64 in slides (png). The design must be finished; one that is still generating, failed, or archived returns a clear message.",
4772
+ "operationId": "exportFromWhiteboard",
4527
4773
  "tags": [
4528
- "uncategorized"
4774
+ "whiteboards"
4529
4775
  ],
4530
4776
  "requestBody": {
4531
4777
  "required": false,
@@ -4534,38 +4780,39 @@
4534
4780
  "schema": {
4535
4781
  "type": "object",
4536
4782
  "properties": {
4537
- "goal": {
4783
+ "documentId": {
4538
4784
  "type": "string",
4539
- "description": "The deck to build, in plain language (topic, audience, and what it should cover)."
4785
+ "description": "The whiteboard that hosts the design."
4540
4786
  },
4541
- "projectId": {
4787
+ "designId": {
4542
4788
  "type": "string",
4543
- "description": "The project to create the deck in. Required when no deckId is given (a deck must live in a project)."
4789
+ "description": "The design to export (the deck id), as returned by designInWhiteboard."
4544
4790
  },
4545
- "title": {
4791
+ "kind": {
4546
4792
  "type": "string",
4547
- "description": "Optional deck title. If omitted, a clear title is derived from the goal."
4793
+ "enum": [
4794
+ "deck"
4795
+ ],
4796
+ "description": "Which engine. 'deck' (default)."
4548
4797
  },
4549
- "deckId": {
4798
+ "format": {
4550
4799
  "type": "string",
4551
- "description": "Optional. An existing deck to rebuild. If omitted, a new deck is created in projectId."
4800
+ "enum": [
4801
+ "pptx",
4802
+ "pdf",
4803
+ "png",
4804
+ "html"
4805
+ ],
4806
+ "description": "Output format. 'pptx' (default) = editable PowerPoint; 'pdf' = vector PDF; 'png' = one base64 image per slide; 'html' = the design's self-contained HTML."
4552
4807
  },
4553
4808
  "brandKitId": {
4554
4809
  "type": "string",
4555
- "description": "Optional brand kit id (from listBrandKits) to theme the deck. If omitted, the organisation's effective brand is used. Create one from a logo or a .pptx/.docx via createBrandKit."
4556
- },
4557
- "slideCount": {
4558
- "type": "number",
4559
- "description": "Optional target number of slides (the composer adjusts to fit the story). Typical 6 to 12."
4560
- },
4561
- "confirm": {
4562
- "type": "boolean",
4563
- "description": "Set true ONLY after the user has approved the 50-credit cost. Leave unset/false on the first call to receive the cost quote plus balance."
4810
+ "description": "Optional brand kit id (reserved for future per-export theming; the design is already branded, so this is usually unnecessary)."
4564
4811
  }
4565
4812
  },
4566
4813
  "required": [
4567
- "goal",
4568
- "projectId"
4814
+ "documentId",
4815
+ "designId"
4569
4816
  ]
4570
4817
  }
4571
4818
  }
@@ -4646,13 +4893,13 @@
4646
4893
  }
4647
4894
  }
4648
4895
  },
4649
- "/tools/editDeck": {
4896
+ "/tools/getDesignStatusInWhiteboard": {
4650
4897
  "post": {
4651
- "summary": "editDeck",
4652
- "description": "Make a targeted change to an existing, finished deck using the agentic deck builder. COST-GATED (10 credits): the first call (confirm unset) returns the cost quote plus balance; only confirm:true charges the fee and applies the edit. Loads the deck's current HTML, makes ONLY the requested change (leaving other slides intact), renders to verify it, and re-saves. The fee is auto-refunded if the edit makes no change or fails.",
4653
- "operationId": "editDeck",
4898
+ "summary": "getDesignStatusInWhiteboard",
4899
+ "description": "DEPRECATED use getDeckReply instead. This tool no longer reads any status; it returns a short message pointing you at getDeckReply (poll it after calling designDeck to get the agent's reply the deck, or a clarifying question). It has NO side effects. It is kept only so existing callers get a clear message; it will be upgraded in a future update.",
4900
+ "operationId": "getDesignStatusInWhiteboard",
4654
4901
  "tags": [
4655
- "uncategorized"
4902
+ "whiteboards"
4656
4903
  ],
4657
4904
  "requestBody": {
4658
4905
  "required": false,
@@ -4661,27 +4908,15 @@
4661
4908
  "schema": {
4662
4909
  "type": "object",
4663
4910
  "properties": {
4664
- "deckId": {
4911
+ "documentId": {
4665
4912
  "type": "string",
4666
- "description": "The id of the finished deck to edit."
4913
+ "description": "Ignored. Deprecated tool use getDeckReply."
4667
4914
  },
4668
- "instruction": {
4915
+ "designId": {
4669
4916
  "type": "string",
4670
- "description": "The change to make, in plain language (e.g. 'change the title slide subhead to ...', 'make slide 3 a bar chart of these numbers ...')."
4671
- },
4672
- "slideIndex": {
4673
- "type": "number",
4674
- "description": "Optional 1-based slide number to focus the edit on. Omit to let the builder find the right slide(s) from the instruction."
4675
- },
4676
- "confirm": {
4677
- "type": "boolean",
4678
- "description": "Set true ONLY after the user has approved the 10-credit cost. Leave unset/false on the first call to receive the cost quote plus balance."
4917
+ "description": "Ignored. Deprecated tool use getDeckReply."
4679
4918
  }
4680
- },
4681
- "required": [
4682
- "deckId",
4683
- "instruction"
4684
- ]
4919
+ }
4685
4920
  }
4686
4921
  }
4687
4922
  }
@@ -4761,11 +4996,11 @@
4761
4996
  }
4762
4997
  }
4763
4998
  },
4764
- "/tools/insertDeckIntoWhiteboard": {
4999
+ "/tools/generateInWhiteboard": {
4765
5000
  "post": {
4766
- "summary": "insertDeckIntoWhiteboard",
4767
- "description": "Render a FINISHED slide DECK's pages into framed images on a WHITEBOARD: one Excalidraw frame per slide, laid out as a horizontal row of pages so the whole deck appears on the board to pan across, annotate around, and edit beside. Give it the deckId of a deck whose status is 'ready'; it renders each slide to a PNG (via the export worker) and drops each image inside its own 1280x720 frame named 'Slide N'. Pass an existing whiteboard documentId to place the slides on it, or a projectId to create a new board (defaults to the deck's own project; the new board is named '<deck title> (deck)'). Returns the documentId, the number of slide frames placed, and the board title. The deck must be finished; a deck that is still generating, failed, or archived returns a clear message.",
4768
- "operationId": "insertDeckIntoWhiteboard",
5001
+ "summary": "generateInWhiteboard",
5002
+ "description": "Generate an on-brand ASSET inside a whiteboard and place it on the board. kind:'illustration' (default) makes a standalone, on-brand illustration (raw pixels, the one thing native shapes and diagrams cannot make) from a plain-language prompt, colour-conditioned to the organisation's brand (or a specific brandKitId), in a clean flat-vector editorial style with NO text, letters, or numbers baked in. It is stored and dropped onto the whiteboard as an image element. Costs a small flat credit charge (refunded automatically if generation fails on our side); an identical prompt reuses a cached image at no charge. Returns the durable image URL and confirms it was placed.",
5003
+ "operationId": "generateInWhiteboard",
4769
5004
  "tags": [
4770
5005
  "whiteboards"
4771
5006
  ],
@@ -4776,21 +5011,49 @@
4776
5011
  "schema": {
4777
5012
  "type": "object",
4778
5013
  "properties": {
4779
- "deckId": {
5014
+ "documentId": {
4780
5015
  "type": "string",
4781
- "description": "The id of an existing, finished ('ready') deck whose slides to place on a whiteboard."
5016
+ "description": "The whiteboard to generate the asset into (the asset is placed on this board)."
4782
5017
  },
4783
- "documentId": {
5018
+ "prompt": {
4784
5019
  "type": "string",
4785
- "description": "Optional existing whiteboard to place the slides on. When omitted, a new whiteboard is created in projectId."
5020
+ "description": "Plain-language description of the asset to generate (e.g. 'a friendly robot assistant helping a small team')."
4786
5021
  },
4787
- "projectId": {
5022
+ "kind": {
4788
5023
  "type": "string",
4789
- "description": "Optional project to create the new whiteboard in when documentId is omitted. Defaults to the deck's own project."
5024
+ "enum": [
5025
+ "illustration"
5026
+ ],
5027
+ "description": "What to make. 'illustration' (default)."
5028
+ },
5029
+ "width": {
5030
+ "type": "number",
5031
+ "description": "Optional output width in px (rounded to a multiple of 64, 512 to 2048). Default 1024."
5032
+ },
5033
+ "height": {
5034
+ "type": "number",
5035
+ "description": "Optional output height in px (rounded to a multiple of 64, 512 to 2048). Default 1024."
5036
+ },
5037
+ "style": {
5038
+ "type": "string",
5039
+ "description": "Optional extra style hint appended to the prompt (e.g. 'isometric', 'soft gradients, pastel')."
5040
+ },
5041
+ "brandKitId": {
5042
+ "type": "string",
5043
+ "description": "Optional brand kit id to colour-condition the asset. Defaults to the organisation's effective brand."
5044
+ },
5045
+ "x": {
5046
+ "type": "number",
5047
+ "description": "Optional x position on the board. Omit to auto-place."
5048
+ },
5049
+ "y": {
5050
+ "type": "number",
5051
+ "description": "Optional y position on the board. Omit to auto-place."
4790
5052
  }
4791
5053
  },
4792
5054
  "required": [
4793
- "deckId"
5055
+ "documentId",
5056
+ "prompt"
4794
5057
  ]
4795
5058
  }
4796
5059
  }
@@ -5546,6 +5809,11 @@
5546
5809
  ]
5547
5810
  }
5548
5811
  }
5812
+ },
5813
+ "customData": {
5814
+ "type": "object",
5815
+ "description": "Arbitrary Excalidraw customData stored on the element (e.g. a slide frame's { deckId } so a board frame resolves back to its source deck). Merged with any builder-set customData.",
5816
+ "additionalProperties": true
5549
5817
  }
5550
5818
  },
5551
5819
  "additionalProperties": true
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stablebaseline/sdk",
3
- "version": "0.4.4",
3
+ "version": "0.4.5",
4
4
  "description": "TypeScript SDK for the Stable Baseline REST API. End-to-end agent-managed company brain — docs, diagrams, plans, and a self-learning Knowledge Graph. 184 tools across 19 categories.",
5
5
  "homepage": "https://stablebaseline.io",
6
6
  "repository": {