@stablebaseline/sdk 0.4.4 → 0.5.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.
@@ -624,7 +624,7 @@ export interface paths {
624
624
  patch?: never;
625
625
  trace?: never;
626
626
  };
627
- "/tools/designWhiteboard": {
627
+ "/tools/autoDesignWhiteboard": {
628
628
  parameters: {
629
629
  query?: never;
630
630
  header?: never;
@@ -634,10 +634,10 @@ export interface paths {
634
634
  get?: never;
635
635
  put?: never;
636
636
  /**
637
- * designWhiteboard
638
- * @description Design a complete, visually polished whiteboard from a natural-language goal using the PREMIUM multi-agent pipeline (the same one the in-app assistant uses): it browses the stencil/icon library, composes the board, renders it, critiques the rendered image, and refines — far better than hand-placing shapes. COST + APPROVAL: this costs 50 credits per board and requires the user's explicit approval. Call it FIRST without `confirm` to get the exact cost + the workspace credit balance; show that to the user and only call again with `confirm: true` once they agree. If they decline (or lack credits), build the board directly with the standard whiteboard tools (addWhiteboardElements / insertWhiteboardDiagram / listWhiteboardStencils) at no extra charge. It runs in the BACKGROUND and returns immediately with a sessionId; the board fills in over 1-3 minutes. The 50 credits are refunded automatically if the design fails on our side. Optional `designProfile: 'branded-executive'` instead builds an ON-BRAND, fully-editable McKinsey-style SLIDE DECK themed by the org's brand kit (palette/fonts) — use it when the user wants polished branded business slides; it builds in-process and the board is ready on return. Optional `designProfile: 'illustrated'` instead builds an editable-illustration board: pick it for illustrated, image-based, picture-style, richly-drawn or educational explainer boards (e.g. illustrate photosynthesis, an illustrated diagram of the water cycle, a textbook-style visual). It generates a rich text-free vector illustration and overlays real, editable text labels with leader lines on top. It is gated per organisation; if it is not enabled the call returns a clear message, so fall back to the standard design. Optional `designProfile: 'image'` instead builds a single, polished, on-brand IMAGE board with all the text baked into the picture (no editable shapes): pick 'image' when the user wants a single finished image, poster or infographic they will refine by AI mask edits rather than by moving editable shapes. It is also gated per organisation; if it is not enabled the call returns a clear message.
637
+ * autoDesignWhiteboard
638
+ * @description Auto-design a complete, visually polished whiteboard from a natural-language goal using the PREMIUM multi-agent pipeline (the same one the in-app assistant uses): it browses the stencil/icon library, composes the WHOLE board, renders it, critiques the rendered image, and refines — far better than hand-placing shapes. This is the one-shot whole-board designer; it is NOT a conversation (for a deck you can chat with and refine turn by turn use designDeckInWhiteboard, and for a refinable illustration use designIllustrationInWhiteboard). COST + APPROVAL: this costs 50 credits per board and requires the user's explicit approval. Call it FIRST without `confirm` to get the exact cost + the workspace credit balance; show that to the user and only call again with `confirm: true` once they agree. If they decline (or lack credits), build the board directly with the standard whiteboard tools (addWhiteboardElements / insertWhiteboardDiagram / listWhiteboardStencils) at no extra charge. It runs in the BACKGROUND and returns immediately with a sessionId; the board fills in over 1-3 minutes. The 50 credits are refunded automatically if the design fails on our side. Optional `designProfile: 'branded-executive'` instead builds an ON-BRAND, fully-editable McKinsey-style SLIDE DECK themed by the org's brand kit (palette/fonts) — use it when the user wants polished branded business slides; it builds in-process and the board is ready on return. Optional `designProfile: 'illustrated'` instead builds an editable-illustration board: pick it for illustrated, image-based, picture-style, richly-drawn or educational explainer boards (e.g. illustrate photosynthesis, an illustrated diagram of the water cycle, a textbook-style visual). It generates a rich text-free vector illustration and overlays real, editable text labels with leader lines on top. It is available to every organisation and costs the same flat 50 credits (credits are the only gate). Optional `designProfile: 'image'` instead builds a single, polished, on-brand IMAGE board with all the text baked into the picture (no editable shapes): pick 'image' when the user wants a single finished image, poster or infographic they will refine by AI mask edits rather than by moving editable shapes. It is also available to every organisation at the same flat 50 credits.
639
639
  */
640
- post: operations["designWhiteboard"];
640
+ post: operations["autoDesignWhiteboard"];
641
641
  delete?: never;
642
642
  options?: never;
643
643
  head?: never;
@@ -655,7 +655,7 @@ export interface paths {
655
655
  put?: never;
656
656
  /**
657
657
  * designComponent
658
- * @description Design ONE reusable, on-brand SLIDE COMPONENT and add it to the org's component library so every future branded deck (designWhiteboard designProfile:'branded-executive') can use it. This is the self-improving design loop: an agent AUTHORS the component as a declarative template (a gradient/shadow/curve SVG skin + a native editable PPTX shape + reflowing bound-text slots), RENDERS it, a vision critic COMPARES the render to your brief and lists gaps, and it FIXES + re-renders until polished — then validates and stores it. Use it to grow the deck component catalogue beyond the built-ins (e.g. a 'kpi.delta' stat with an up/down arrow, a 'quote.card', a 'logo.strip'). Browse-first: if a component with this `key` already exists it is reused (pass force:true to redesign). Provide example `sampleSlots` so it can lay out real content, and a `projectId` for the small preview board it builds. Returns the stored component, the per-round critique trail, and the preview board id. It uses a few AI calls + renders (no flat credit charge); the new component is then free to reuse forever.
658
+ * @description Design ONE reusable, on-brand SLIDE COMPONENT and add it to the org's component library so every future branded deck (autoDesignWhiteboard designProfile:'branded-executive') can use it. This is the self-improving design loop: an agent AUTHORS the component as a declarative template (a gradient/shadow/curve SVG skin + a native editable PPTX shape + reflowing bound-text slots), RENDERS it, a vision critic COMPARES the render to your brief and lists gaps, and it FIXES + re-renders until polished — then validates and stores it. Use it to grow the deck component catalogue beyond the built-ins (e.g. a 'kpi.delta' stat with an up/down arrow, a 'quote.card', a 'logo.strip'). Browse-first: if a component with this `key` already exists it is reused (pass force:true to redesign). Provide example `sampleSlots` so it can lay out real content, and a `projectId` for the small preview board it builds. Returns the stored component, the per-round critique trail, and the preview board id. It uses a few AI calls + renders (no flat credit charge); the new component is then free to reuse forever.
659
659
  */
660
660
  post: operations["designComponent"];
661
661
  delete?: never;
@@ -675,7 +675,7 @@ export interface paths {
675
675
  put?: never;
676
676
  /**
677
677
  * editWhiteboardImageRegion
678
- * @description Mask-edit (inpaint) one region of an image element on a whiteboard. Given the target image element id and a paint MASK (a PNG where WHITE marks the area to regenerate and BLACK is kept), it regenerates only the masked region using the prompt and replaces the image IN PLACE (same position + size). This is mainly used by the in-app image-board mask editor for boards designed with designProfile:'image'. It costs a small flat credit charge (refunded automatically if the edit fails on our side). It is gated per organisation behind the same 'whiteboard_design_image' feature as the image design profile; if that is not enabled the call returns a clear message.
678
+ * @description Mask-edit (inpaint) one region of an image element on a whiteboard. Given the target image element id and a paint MASK (a PNG where WHITE marks the area to regenerate and BLACK is kept), it regenerates only the masked region using the prompt and replaces the image IN PLACE (same position + size). This is mainly used by the in-app image-board mask editor for boards designed with designProfile:'image'. It is available to every organisation; the small flat credit charge is the only gate (refunded automatically if the edit fails on our side).
679
679
  */
680
680
  post: operations["editWhiteboardImageRegion"];
681
681
  delete?: never;
@@ -684,7 +684,7 @@ export interface paths {
684
684
  patch?: never;
685
685
  trace?: never;
686
686
  };
687
- "/tools/exportDeck": {
687
+ "/tools/designDeckInWhiteboard": {
688
688
  parameters: {
689
689
  query?: never;
690
690
  header?: never;
@@ -694,17 +694,17 @@ export interface paths {
694
694
  get?: never;
695
695
  put?: never;
696
696
  /**
697
- * exportDeck
698
- * @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.
697
+ * designDeckInWhiteboard
698
+ * @description Create or refine a slide deck INSIDE an existing 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 getDeckReplyInWhiteboard for the result. Use for building or editing slide decks / presentations. WHITEBOARD IS REQUIRED: a deck always lives inside a whiteboard, so documentId (the whiteboard's id) is required. If you do NOT already have a whiteboard id, ASK THE USER which whiteboard they want the deck designed in — do NOT create a whiteboard automatically. Only call createWhiteboard first if the user explicitly asks for a brand-new board; otherwise use the id of the whiteboard they name. 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.
699
699
  */
700
- post: operations["exportDeck"];
700
+ post: operations["designDeckInWhiteboard"];
701
701
  delete?: never;
702
702
  options?: never;
703
703
  head?: never;
704
704
  patch?: never;
705
705
  trace?: never;
706
706
  };
707
- "/tools/generateIllustration": {
707
+ "/tools/designIllustrationInWhiteboard": {
708
708
  parameters: {
709
709
  query?: never;
710
710
  header?: never;
@@ -714,17 +714,17 @@ export interface paths {
714
714
  get?: never;
715
715
  put?: never;
716
716
  /**
717
- * generateIllustration
718
- * @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.
717
+ * designIllustrationInWhiteboard
718
+ * @description Create or refine a standalone ILLUSTRATION INSIDE an existing whiteboard by conversing with the AI design agent. This is the illustration sibling of designDeckInWhiteboard: same conversation, same follow-up flow, but it makes ONE on-brand illustration placed on the board (not a slide deck). Send a brief for a NEW illustration, a change to an existing one, or an answer to the agent's question. The agent generates the illustration, places it on the board, and if the brief is ambiguous it asks ONE clarifying question (answer with the same sessionId). Returns immediately; poll getDeckReplyInWhiteboard for the result. Use it when the user wants a picture they can talk about and refine turn by turn (e.g. 'draw a friendly robot onboarding a new team', then 'make it warmer', 'add a second robot'). For a quick one-shot illustration with no follow-up, use generateIllustrationInWhiteboard instead. WHITEBOARD IS REQUIRED: an illustration always lives inside a whiteboard, so documentId (the whiteboard's id) is required. If you do NOT already have a whiteboard id, ASK THE USER which whiteboard they want the illustration designed in — do NOT create a whiteboard automatically. Only call createWhiteboard first if the user explicitly asks for a brand-new board; otherwise use the id of the whiteboard they name. 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. 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 illustration's id), status, turnType, started, awaitingUser, needsConfirmation, insufficientCredits, and assistantMessage.
719
719
  */
720
- post: operations["generateIllustration"];
720
+ post: operations["designIllustrationInWhiteboard"];
721
721
  delete?: never;
722
722
  options?: never;
723
723
  head?: never;
724
724
  patch?: never;
725
725
  trace?: never;
726
726
  };
727
- "/tools/designDeck": {
727
+ "/tools/getDeckReplyInWhiteboard": {
728
728
  parameters: {
729
729
  query?: never;
730
730
  header?: never;
@@ -734,17 +734,17 @@ export interface paths {
734
734
  get?: never;
735
735
  put?: never;
736
736
  /**
737
- * designDeck
738
- * @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.
737
+ * getDeckReplyInWhiteboard
738
+ * @description Get the design agent's reply after calling designDeckInWhiteboard OR designIllustrationInWhiteboard: the status (thinking/building/ready) and EITHER the finished result (a deck's slide count + preview, or the placed illustration) OR a clarifying question to answer (call the SAME tool you started with, passing the sessionId + your answer). Poll until ready or a question appears. Give it the whiteboard documentId and the deckId (both returned by the tool you called). It returns the build status ('generating' while working, 'ready' when 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 the SAME design tool 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 or illustration has already been placed on the whiteboard; a deck can also be exported with exportFromWhiteboard. If a turn failed or produced no change, the user was not charged.
739
739
  */
740
- post: operations["designDeck"];
740
+ post: operations["getDeckReplyInWhiteboard"];
741
741
  delete?: never;
742
742
  options?: never;
743
743
  head?: never;
744
744
  patch?: never;
745
745
  trace?: never;
746
746
  };
747
- "/tools/editDeck": {
747
+ "/tools/exportFromWhiteboard": {
748
748
  parameters: {
749
749
  query?: never;
750
750
  header?: never;
@@ -754,30 +754,10 @@ export interface paths {
754
754
  get?: never;
755
755
  put?: never;
756
756
  /**
757
- * editDeck
758
- * @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.
757
+ * exportFromWhiteboard
758
+ * @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.
759
759
  */
760
- post: operations["editDeck"];
761
- delete?: never;
762
- options?: never;
763
- head?: never;
764
- patch?: never;
765
- trace?: never;
766
- };
767
- "/tools/insertDeckIntoWhiteboard": {
768
- parameters: {
769
- query?: never;
770
- header?: never;
771
- path?: never;
772
- cookie?: never;
773
- };
774
- get?: never;
775
- put?: never;
776
- /**
777
- * insertDeckIntoWhiteboard
778
- * @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.
779
- */
780
- post: operations["insertDeckIntoWhiteboard"];
760
+ post: operations["exportFromWhiteboard"];
781
761
  delete?: never;
782
762
  options?: never;
783
763
  head?: never;
@@ -1015,7 +995,7 @@ export interface paths {
1015
995
  put?: never;
1016
996
  /**
1017
997
  * getWhiteboardImage
1018
- * @description Render a whiteboard to an IMAGE so you can SEE it and confirm your edits look right, then iterate — like taking a screenshot. Returns the rendered board as a viewable image attached to the result. Pass elementIds to render only specific shapes (e.g. to inspect one section/slide), region:{x,y,width,height} to capture an exact scene-coordinate window (e.g. the user's viewport), theme:'light' for the fastest single-variant render, format:'svg' for vector markup, or background to set the canvas colour. Unchanged boards return instantly from a content-keyed cache. Call this after addWhiteboardElements/updateWhiteboardScene to check layout, overlaps, labels and alignment before continuing.
998
+ * @description Render a whiteboard to a raster IMAGE so you can SEE it and confirm your edits look right, then iterate — like taking a screenshot. Returns the rendered board as a viewable image attached to the result (always raster: a JPEG light variant and/or a PNG dark variant; there is no vector/SVG output, so for a vector export of a single diagram use getDiagramImage). Pass elementIds to render only specific shapes (e.g. to inspect one section/slide), region:{x,y,width,height} to capture an exact scene-coordinate window (e.g. the user's viewport), theme:'light' for the fastest single-variant render, or background to set the canvas colour. Unchanged boards return instantly from a content-keyed cache. Call this after addWhiteboardElements/updateWhiteboardScene to check layout, overlaps, labels and alignment before continuing.
1019
999
  */
1020
1000
  post: operations["getWhiteboardImage"];
1021
1001
  delete?: never;
@@ -6741,7 +6721,7 @@ export interface operations {
6741
6721
  };
6742
6722
  };
6743
6723
  };
6744
- designWhiteboard: {
6724
+ autoDesignWhiteboard: {
6745
6725
  parameters: {
6746
6726
  query?: never;
6747
6727
  header?: never;
@@ -6762,7 +6742,7 @@ export interface operations {
6762
6742
  /** @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 + balance. */
6763
6743
  confirm?: boolean;
6764
6744
  /**
6765
- * @description Optional. 'standard' (default) = the general multi-agent design. 'agentic' = an AI-chat-style agentic slide composer that drives the whiteboard tools and self-corrects from renders, composing ONE polished slide. 'agentic-deck' = the same agentic composer run over a planned storyline, building a multi-slide deck (each slide on its own frame, tiled left to right). 'branded-executive' = an on-brand, McKinsey-style editable SLIDE DECK themed by the org's brand kit (pair with brandKitId, or omit for the org default). 'illustrated' = an editable-illustration board: a rich text-free vector illustration with real editable text labels and leader lines placed on top. 'image' = a single polished, on-brand IMAGE board with all the text baked into the picture (no editable shapes), which the user then refines with AI mask edits. 'illustrated' and 'image' are each gated per organisation; if not enabled the call returns a clear message.
6745
+ * @description Optional. 'standard' (default) = the general multi-agent design. 'agentic' = an AI-chat-style agentic slide composer that drives the whiteboard tools and self-corrects from renders, composing ONE polished slide. 'agentic-deck' = the same agentic composer run over a planned storyline, building a multi-slide deck (each slide on its own frame, tiled left to right). 'branded-executive' = an on-brand, McKinsey-style editable SLIDE DECK themed by the org's brand kit (pair with brandKitId, or omit for the org default). 'illustrated' = an editable-illustration board: a rich text-free vector illustration with real editable text labels and leader lines placed on top. 'image' = a single polished, on-brand IMAGE board with all the text baked into the picture (no editable shapes), which the user then refines with AI mask edits. Every profile is available to every organisation; the flat credit fee is the only gate.
6766
6746
  * @enum {string}
6767
6747
  */
6768
6748
  designProfile?: "standard" | "branded-executive" | "illustrated" | "image" | "agentic" | "agentic-deck";
@@ -7035,7 +7015,7 @@ export interface operations {
7035
7015
  };
7036
7016
  };
7037
7017
  };
7038
- exportDeck: {
7018
+ designDeckInWhiteboard: {
7039
7019
  parameters: {
7040
7020
  query?: never;
7041
7021
  header?: never;
@@ -7045,108 +7025,38 @@ export interface operations {
7045
7025
  requestBody?: {
7046
7026
  content: {
7047
7027
  "application/json": {
7048
- /** @description The id of an existing, finished ('ready') deck to export. */
7049
- deckId: string;
7028
+ /** @description The whiteboard the deck lives in. REQUIRED: a deck cannot exist without a whiteboard, and this is that whiteboard's id. If you do not already have a whiteboard id, ASK THE USER which whiteboard to design the deck in — never create one automatically. Only call createWhiteboard first if the user explicitly wants a new board. */
7029
+ documentId: string;
7030
+ /** @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. */
7031
+ message: string;
7032
+ /** @description The design conversation to continue, as returned by an earlier designDeckInWhiteboard 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. */
7033
+ sessionId?: string;
7034
+ /** @description Optional. An existing deck to continue designing (usually you pass sessionId instead; when both are given the session's deck wins). */
7035
+ deckId?: string;
7050
7036
  /**
7051
- * @description Output format. 'pptx' (default) = editable PowerPoint; 'pdf' = vector PDF; 'png' = one base64 image per slide; 'html' = the deck's self-contained HTML.
7037
+ * @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).
7052
7038
  * @enum {string}
7053
7039
  */
7054
- format?: "pptx" | "pdf" | "png" | "html";
7055
- /** @description Optional brand kit id (reserved for future per-export theming; the deck is already branded, so this is usually unnecessary). */
7056
- brandKitId?: string;
7057
- };
7058
- };
7059
- };
7060
- responses: {
7061
- /** @description Tool result (shape varies per tool — refer to the tool's docs for the exact return value). */
7062
- 200: {
7063
- headers: {
7064
- [name: string]: unknown;
7065
- };
7066
- content: {
7067
- "application/json": {
7068
- [key: string]: unknown;
7069
- };
7070
- };
7071
- };
7072
- /** @description Validation error. */
7073
- 400: {
7074
- headers: {
7075
- [name: string]: unknown;
7076
- };
7077
- content: {
7078
- "application/json": components["schemas"]["ErrorResponse"];
7079
- };
7080
- };
7081
- /** @description Missing or invalid credentials. */
7082
- 401: {
7083
- headers: {
7084
- [name: string]: unknown;
7085
- };
7086
- content: {
7087
- "application/json": components["schemas"]["ErrorResponse"];
7088
- };
7089
- };
7090
- /** @description Authenticated but lacking the required permission or feature flag. */
7091
- 403: {
7092
- headers: {
7093
- [name: string]: unknown;
7094
- };
7095
- content: {
7096
- "application/json": components["schemas"]["ErrorResponse"];
7097
- };
7098
- };
7099
- /** @description Resource not found. */
7100
- 404: {
7101
- headers: {
7102
- [name: string]: unknown;
7103
- };
7104
- content: {
7105
- "application/json": components["schemas"]["ErrorResponse"];
7106
- };
7107
- };
7108
- /** @description Body did not match the tool's input schema. */
7109
- 422: {
7110
- headers: {
7111
- [name: string]: unknown;
7112
- };
7113
- content: {
7114
- "application/json": components["schemas"]["ErrorResponse"];
7115
- };
7116
- };
7117
- /** @description Server error. */
7118
- 500: {
7119
- headers: {
7120
- [name: string]: unknown;
7121
- };
7122
- content: {
7123
- "application/json": components["schemas"]["ErrorResponse"];
7124
- };
7125
- };
7126
- };
7127
- };
7128
- generateIllustration: {
7129
- parameters: {
7130
- query?: never;
7131
- header?: never;
7132
- path?: never;
7133
- cookie?: never;
7134
- };
7135
- requestBody?: {
7136
- content: {
7137
- "application/json": {
7138
- /** @description Plain-language description of the illustration to generate (e.g. 'a friendly robot assistant helping a small team'). */
7139
- prompt: string;
7140
- /** @description Optional output width in px (rounded to a multiple of 64, 512 to 2048). Default 1024. */
7141
- width?: number;
7142
- /** @description Optional output height in px (rounded to a multiple of 64, 512 to 2048). Default 1024. */
7143
- height?: number;
7144
- /** @description Optional extra style hint appended to the prompt (e.g. 'isometric', 'soft gradients, pastel'). */
7145
- style?: string;
7146
- /** @description Optional brand kit id to colour-condition the illustration. Defaults to the organisation's effective brand. */
7040
+ kind?: "deck" | "illustration" | "design" | "express";
7041
+ /** @description Optional title. If omitted, a clear one is derived from the brief. */
7042
+ title?: string;
7043
+ /** @description Optional brand kit id (from listBrandKits) to theme the deck. If omitted, the organisation's effective brand is used. */
7147
7044
  brandKitId?: string;
7148
- /** @description Optional document this illustration is for (used only for usage logging and provenance). */
7149
- documentId?: string;
7045
+ /** @description Optional target number of slides for a build turn (the composer adjusts to fit the story). Typical 6 to 12. */
7046
+ slideCount?: number;
7047
+ /** @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. */
7048
+ attachments?: {
7049
+ /** @description A public https URL to the image. */
7050
+ url?: string;
7051
+ /** @description The image as base64 (no data: prefix). Provide mediaType alongside it. */
7052
+ data?: string;
7053
+ /** @description The image MIME type, e.g. 'image/png' or 'image/jpeg'. */
7054
+ mediaType?: string;
7055
+ /** @description Optional human-readable name for the image. */
7056
+ name?: string;
7057
+ }[];
7058
+ /** @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. */
7059
+ confirm?: boolean;
7150
7060
  };
7151
7061
  };
7152
7062
  };
@@ -7218,7 +7128,7 @@ export interface operations {
7218
7128
  };
7219
7129
  };
7220
7130
  };
7221
- designDeck: {
7131
+ designIllustrationInWhiteboard: {
7222
7132
  parameters: {
7223
7133
  query?: never;
7224
7134
  header?: never;
@@ -7228,19 +7138,30 @@ export interface operations {
7228
7138
  requestBody?: {
7229
7139
  content: {
7230
7140
  "application/json": {
7231
- /** @description The deck to build, in plain language (topic, audience, and what it should cover). */
7232
- goal: string;
7233
- /** @description The project to create the deck in. Required when no deckId is given (a deck must live in a project). */
7234
- projectId: string;
7235
- /** @description Optional deck title. If omitted, a clear title is derived from the goal. */
7236
- title?: string;
7237
- /** @description Optional. An existing deck to rebuild. If omitted, a new deck is created in projectId. */
7141
+ /** @description The whiteboard the illustration lives in. REQUIRED: an illustration cannot exist without a whiteboard, and this is that whiteboard's id. If you do not already have a whiteboard id, ASK THE USER which whiteboard to design the illustration in — never create one automatically. Only call createWhiteboard first if the user explicitly wants a new board. */
7142
+ documentId: string;
7143
+ /** @description This turn's message in plain language: the illustration brief on the first turn, a change 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. */
7144
+ message: string;
7145
+ /** @description The design conversation to continue, as returned by an earlier designIllustrationInWhiteboard call. Pass it together with message to answer a question, make a change, or send a follow-up. Omit on the very first call to start a new conversation. */
7146
+ sessionId?: string;
7147
+ /** @description Optional. An existing illustration to continue refining (usually you pass sessionId instead; when both are given the session's illustration wins). The id is called deckId because illustrations and decks share the same conversation spine. */
7238
7148
  deckId?: string;
7239
- /** @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. */
7149
+ /** @description Optional title. If omitted, a clear one is derived from the brief. */
7150
+ title?: string;
7151
+ /** @description Optional brand kit id (from listBrandKits) to colour-condition the illustration. If omitted, the organisation's effective brand is used. */
7240
7152
  brandKitId?: string;
7241
- /** @description Optional target number of slides (the composer adjusts to fit the story). Typical 6 to 12. */
7242
- slideCount?: number;
7243
- /** @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. */
7153
+ /** @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. */
7154
+ attachments?: {
7155
+ /** @description A public https URL to the image. */
7156
+ url?: string;
7157
+ /** @description The image as base64 (no data: prefix). Provide mediaType alongside it. */
7158
+ data?: string;
7159
+ /** @description The image MIME type, e.g. 'image/png' or 'image/jpeg'. */
7160
+ mediaType?: string;
7161
+ /** @description Optional human-readable name for the image. */
7162
+ name?: string;
7163
+ }[];
7164
+ /** @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. */
7244
7165
  confirm?: boolean;
7245
7166
  };
7246
7167
  };
@@ -7313,7 +7234,7 @@ export interface operations {
7313
7234
  };
7314
7235
  };
7315
7236
  };
7316
- editDeck: {
7237
+ getDeckReplyInWhiteboard: {
7317
7238
  parameters: {
7318
7239
  query?: never;
7319
7240
  header?: never;
@@ -7323,14 +7244,10 @@ export interface operations {
7323
7244
  requestBody?: {
7324
7245
  content: {
7325
7246
  "application/json": {
7326
- /** @description The id of the finished deck to edit. */
7247
+ /** @description The whiteboard that hosts the deck or illustration (it lives inside the board). REQUIRED. */
7248
+ documentId: string;
7249
+ /** @description The deck or illustration to poll, as returned by designDeckInWhiteboard or designIllustrationInWhiteboard. */
7327
7250
  deckId: string;
7328
- /** @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 ...'). */
7329
- instruction: string;
7330
- /** @description Optional 1-based slide number to focus the edit on. Omit to let the builder find the right slide(s) from the instruction. */
7331
- slideIndex?: number;
7332
- /** @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. */
7333
- confirm?: boolean;
7334
7251
  };
7335
7252
  };
7336
7253
  };
@@ -7402,7 +7319,7 @@ export interface operations {
7402
7319
  };
7403
7320
  };
7404
7321
  };
7405
- insertDeckIntoWhiteboard: {
7322
+ exportFromWhiteboard: {
7406
7323
  parameters: {
7407
7324
  query?: never;
7408
7325
  header?: never;
@@ -7412,12 +7329,22 @@ export interface operations {
7412
7329
  requestBody?: {
7413
7330
  content: {
7414
7331
  "application/json": {
7415
- /** @description The id of an existing, finished ('ready') deck whose slides to place on a whiteboard. */
7416
- deckId: string;
7417
- /** @description Optional existing whiteboard to place the slides on. When omitted, a new whiteboard is created in projectId. */
7418
- documentId?: string;
7419
- /** @description Optional project to create the new whiteboard in when documentId is omitted. Defaults to the deck's own project. */
7420
- projectId?: string;
7332
+ /** @description The whiteboard that hosts the design. */
7333
+ documentId: string;
7334
+ /** @description The design to export (the deck id), as returned by designDeckInWhiteboard. */
7335
+ designId: string;
7336
+ /**
7337
+ * @description Which engine. 'deck' (default).
7338
+ * @enum {string}
7339
+ */
7340
+ kind?: "deck";
7341
+ /**
7342
+ * @description Output format. 'pptx' (default) = editable PowerPoint; 'pdf' = vector PDF; 'png' = one base64 image per slide; 'html' = the design's self-contained HTML.
7343
+ * @enum {string}
7344
+ */
7345
+ format?: "pptx" | "pdf" | "png" | "html";
7346
+ /** @description Optional brand kit id (reserved for future per-export theming; the design is already branded, so this is usually unnecessary). */
7347
+ brandKitId?: string;
7421
7348
  };
7422
7349
  };
7423
7350
  };
@@ -7931,6 +7858,10 @@ export interface operations {
7931
7858
  columns?: (string | Record<string, never>)[];
7932
7859
  /** @description For type:'table' — data rows; each row is an array of cell values (string|number) aligned to columns, e.g. [['T-1','Sam','Done'],['T-2','Lee','WIP']]. */
7933
7860
  rows?: (string | number)[][];
7861
+ /** @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. */
7862
+ customData?: {
7863
+ [key: string]: unknown;
7864
+ };
7934
7865
  } & {
7935
7866
  [key: string]: unknown;
7936
7867
  })[];
@@ -8135,6 +8066,8 @@ export interface operations {
8135
8066
  align?: "left" | "center" | "right";
8136
8067
  /** @description Optional original filename (for storage + type hinting). */
8137
8068
  fileName?: string;
8069
+ /** @description Lock the placed image so it cannot be moved, resized, or deleted by hand (e.g. a deck-owned framed slide image that changes only via the deck conversation). Defaults to false. */
8070
+ locked?: boolean;
8138
8071
  };
8139
8072
  };
8140
8073
  };
@@ -8610,11 +8543,6 @@ export interface operations {
8610
8543
  "application/json": {
8611
8544
  /** @description The whiteboard's documentId. */
8612
8545
  documentId: string;
8613
- /**
8614
- * @description png (default — a viewable raster) or svg (vector markup).
8615
- * @enum {string}
8616
- */
8617
- format?: "png" | "svg";
8618
8546
  /** @description Render only these element ids (plus their bound labels + group peers) instead of the whole board. */
8619
8547
  elementIds?: string[];
8620
8548
  /** @description Canvas background colour (default white), e.g. '#ffffff' or 'transparent'. */