@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.
package/dist/index.d.cts CHANGED
@@ -623,7 +623,7 @@ interface paths {
623
623
  patch?: never;
624
624
  trace?: never;
625
625
  };
626
- "/tools/designWhiteboard": {
626
+ "/tools/autoDesignWhiteboard": {
627
627
  parameters: {
628
628
  query?: never;
629
629
  header?: never;
@@ -633,10 +633,10 @@ interface paths {
633
633
  get?: never;
634
634
  put?: never;
635
635
  /**
636
- * designWhiteboard
637
- * @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.
636
+ * autoDesignWhiteboard
637
+ * @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.
638
638
  */
639
- post: operations["designWhiteboard"];
639
+ post: operations["autoDesignWhiteboard"];
640
640
  delete?: never;
641
641
  options?: never;
642
642
  head?: never;
@@ -654,7 +654,7 @@ interface paths {
654
654
  put?: never;
655
655
  /**
656
656
  * designComponent
657
- * @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.
657
+ * @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.
658
658
  */
659
659
  post: operations["designComponent"];
660
660
  delete?: never;
@@ -674,7 +674,7 @@ interface paths {
674
674
  put?: never;
675
675
  /**
676
676
  * editWhiteboardImageRegion
677
- * @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.
677
+ * @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).
678
678
  */
679
679
  post: operations["editWhiteboardImageRegion"];
680
680
  delete?: never;
@@ -683,7 +683,7 @@ interface paths {
683
683
  patch?: never;
684
684
  trace?: never;
685
685
  };
686
- "/tools/exportDeck": {
686
+ "/tools/designDeckInWhiteboard": {
687
687
  parameters: {
688
688
  query?: never;
689
689
  header?: never;
@@ -693,17 +693,17 @@ interface paths {
693
693
  get?: never;
694
694
  put?: never;
695
695
  /**
696
- * exportDeck
697
- * @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.
696
+ * designDeckInWhiteboard
697
+ * @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.
698
698
  */
699
- post: operations["exportDeck"];
699
+ post: operations["designDeckInWhiteboard"];
700
700
  delete?: never;
701
701
  options?: never;
702
702
  head?: never;
703
703
  patch?: never;
704
704
  trace?: never;
705
705
  };
706
- "/tools/generateIllustration": {
706
+ "/tools/designIllustrationInWhiteboard": {
707
707
  parameters: {
708
708
  query?: never;
709
709
  header?: never;
@@ -713,17 +713,17 @@ interface paths {
713
713
  get?: never;
714
714
  put?: never;
715
715
  /**
716
- * generateIllustration
717
- * @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.
716
+ * designIllustrationInWhiteboard
717
+ * @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.
718
718
  */
719
- post: operations["generateIllustration"];
719
+ post: operations["designIllustrationInWhiteboard"];
720
720
  delete?: never;
721
721
  options?: never;
722
722
  head?: never;
723
723
  patch?: never;
724
724
  trace?: never;
725
725
  };
726
- "/tools/designDeck": {
726
+ "/tools/getDeckReplyInWhiteboard": {
727
727
  parameters: {
728
728
  query?: never;
729
729
  header?: never;
@@ -733,17 +733,17 @@ interface paths {
733
733
  get?: never;
734
734
  put?: never;
735
735
  /**
736
- * designDeck
737
- * @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.
736
+ * getDeckReplyInWhiteboard
737
+ * @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.
738
738
  */
739
- post: operations["designDeck"];
739
+ post: operations["getDeckReplyInWhiteboard"];
740
740
  delete?: never;
741
741
  options?: never;
742
742
  head?: never;
743
743
  patch?: never;
744
744
  trace?: never;
745
745
  };
746
- "/tools/editDeck": {
746
+ "/tools/exportFromWhiteboard": {
747
747
  parameters: {
748
748
  query?: never;
749
749
  header?: never;
@@ -753,30 +753,10 @@ interface paths {
753
753
  get?: never;
754
754
  put?: never;
755
755
  /**
756
- * editDeck
757
- * @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.
756
+ * exportFromWhiteboard
757
+ * @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.
758
758
  */
759
- post: operations["editDeck"];
760
- delete?: never;
761
- options?: never;
762
- head?: never;
763
- patch?: never;
764
- trace?: never;
765
- };
766
- "/tools/insertDeckIntoWhiteboard": {
767
- parameters: {
768
- query?: never;
769
- header?: never;
770
- path?: never;
771
- cookie?: never;
772
- };
773
- get?: never;
774
- put?: never;
775
- /**
776
- * insertDeckIntoWhiteboard
777
- * @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.
778
- */
779
- post: operations["insertDeckIntoWhiteboard"];
759
+ post: operations["exportFromWhiteboard"];
780
760
  delete?: never;
781
761
  options?: never;
782
762
  head?: never;
@@ -1014,7 +994,7 @@ interface paths {
1014
994
  put?: never;
1015
995
  /**
1016
996
  * getWhiteboardImage
1017
- * @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.
997
+ * @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.
1018
998
  */
1019
999
  post: operations["getWhiteboardImage"];
1020
1000
  delete?: never;
@@ -6740,7 +6720,7 @@ interface operations {
6740
6720
  };
6741
6721
  };
6742
6722
  };
6743
- designWhiteboard: {
6723
+ autoDesignWhiteboard: {
6744
6724
  parameters: {
6745
6725
  query?: never;
6746
6726
  header?: never;
@@ -6761,7 +6741,7 @@ interface operations {
6761
6741
  /** @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. */
6762
6742
  confirm?: boolean;
6763
6743
  /**
6764
- * @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.
6744
+ * @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.
6765
6745
  * @enum {string}
6766
6746
  */
6767
6747
  designProfile?: "standard" | "branded-executive" | "illustrated" | "image" | "agentic" | "agentic-deck";
@@ -7034,7 +7014,7 @@ interface operations {
7034
7014
  };
7035
7015
  };
7036
7016
  };
7037
- exportDeck: {
7017
+ designDeckInWhiteboard: {
7038
7018
  parameters: {
7039
7019
  query?: never;
7040
7020
  header?: never;
@@ -7044,108 +7024,38 @@ interface operations {
7044
7024
  requestBody?: {
7045
7025
  content: {
7046
7026
  "application/json": {
7047
- /** @description The id of an existing, finished ('ready') deck to export. */
7048
- deckId: string;
7027
+ /** @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. */
7028
+ documentId: string;
7029
+ /** @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. */
7030
+ message: string;
7031
+ /** @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. */
7032
+ sessionId?: string;
7033
+ /** @description Optional. An existing deck to continue designing (usually you pass sessionId instead; when both are given the session's deck wins). */
7034
+ deckId?: string;
7049
7035
  /**
7050
- * @description Output format. 'pptx' (default) = editable PowerPoint; 'pdf' = vector PDF; 'png' = one base64 image per slide; 'html' = the deck's self-contained HTML.
7036
+ * @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).
7051
7037
  * @enum {string}
7052
7038
  */
7053
- format?: "pptx" | "pdf" | "png" | "html";
7054
- /** @description Optional brand kit id (reserved for future per-export theming; the deck is already branded, so this is usually unnecessary). */
7055
- brandKitId?: string;
7056
- };
7057
- };
7058
- };
7059
- responses: {
7060
- /** @description Tool result (shape varies per tool — refer to the tool's docs for the exact return value). */
7061
- 200: {
7062
- headers: {
7063
- [name: string]: unknown;
7064
- };
7065
- content: {
7066
- "application/json": {
7067
- [key: string]: unknown;
7068
- };
7069
- };
7070
- };
7071
- /** @description Validation error. */
7072
- 400: {
7073
- headers: {
7074
- [name: string]: unknown;
7075
- };
7076
- content: {
7077
- "application/json": components["schemas"]["ErrorResponse"];
7078
- };
7079
- };
7080
- /** @description Missing or invalid credentials. */
7081
- 401: {
7082
- headers: {
7083
- [name: string]: unknown;
7084
- };
7085
- content: {
7086
- "application/json": components["schemas"]["ErrorResponse"];
7087
- };
7088
- };
7089
- /** @description Authenticated but lacking the required permission or feature flag. */
7090
- 403: {
7091
- headers: {
7092
- [name: string]: unknown;
7093
- };
7094
- content: {
7095
- "application/json": components["schemas"]["ErrorResponse"];
7096
- };
7097
- };
7098
- /** @description Resource not found. */
7099
- 404: {
7100
- headers: {
7101
- [name: string]: unknown;
7102
- };
7103
- content: {
7104
- "application/json": components["schemas"]["ErrorResponse"];
7105
- };
7106
- };
7107
- /** @description Body did not match the tool's input schema. */
7108
- 422: {
7109
- headers: {
7110
- [name: string]: unknown;
7111
- };
7112
- content: {
7113
- "application/json": components["schemas"]["ErrorResponse"];
7114
- };
7115
- };
7116
- /** @description Server error. */
7117
- 500: {
7118
- headers: {
7119
- [name: string]: unknown;
7120
- };
7121
- content: {
7122
- "application/json": components["schemas"]["ErrorResponse"];
7123
- };
7124
- };
7125
- };
7126
- };
7127
- generateIllustration: {
7128
- parameters: {
7129
- query?: never;
7130
- header?: never;
7131
- path?: never;
7132
- cookie?: never;
7133
- };
7134
- requestBody?: {
7135
- content: {
7136
- "application/json": {
7137
- /** @description Plain-language description of the illustration to generate (e.g. 'a friendly robot assistant helping a small team'). */
7138
- prompt: string;
7139
- /** @description Optional output width in px (rounded to a multiple of 64, 512 to 2048). Default 1024. */
7140
- width?: number;
7141
- /** @description Optional output height in px (rounded to a multiple of 64, 512 to 2048). Default 1024. */
7142
- height?: number;
7143
- /** @description Optional extra style hint appended to the prompt (e.g. 'isometric', 'soft gradients, pastel'). */
7144
- style?: string;
7145
- /** @description Optional brand kit id to colour-condition the illustration. Defaults to the organisation's effective brand. */
7039
+ kind?: "deck" | "illustration" | "design" | "express";
7040
+ /** @description Optional title. If omitted, a clear one is derived from the brief. */
7041
+ title?: string;
7042
+ /** @description Optional brand kit id (from listBrandKits) to theme the deck. If omitted, the organisation's effective brand is used. */
7146
7043
  brandKitId?: string;
7147
- /** @description Optional document this illustration is for (used only for usage logging and provenance). */
7148
- documentId?: string;
7044
+ /** @description Optional target number of slides for a build turn (the composer adjusts to fit the story). Typical 6 to 12. */
7045
+ slideCount?: number;
7046
+ /** @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. */
7047
+ attachments?: {
7048
+ /** @description A public https URL to the image. */
7049
+ url?: string;
7050
+ /** @description The image as base64 (no data: prefix). Provide mediaType alongside it. */
7051
+ data?: string;
7052
+ /** @description The image MIME type, e.g. 'image/png' or 'image/jpeg'. */
7053
+ mediaType?: string;
7054
+ /** @description Optional human-readable name for the image. */
7055
+ name?: string;
7056
+ }[];
7057
+ /** @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. */
7058
+ confirm?: boolean;
7149
7059
  };
7150
7060
  };
7151
7061
  };
@@ -7217,7 +7127,7 @@ interface operations {
7217
7127
  };
7218
7128
  };
7219
7129
  };
7220
- designDeck: {
7130
+ designIllustrationInWhiteboard: {
7221
7131
  parameters: {
7222
7132
  query?: never;
7223
7133
  header?: never;
@@ -7227,19 +7137,30 @@ interface operations {
7227
7137
  requestBody?: {
7228
7138
  content: {
7229
7139
  "application/json": {
7230
- /** @description The deck to build, in plain language (topic, audience, and what it should cover). */
7231
- goal: string;
7232
- /** @description The project to create the deck in. Required when no deckId is given (a deck must live in a project). */
7233
- projectId: string;
7234
- /** @description Optional deck title. If omitted, a clear title is derived from the goal. */
7235
- title?: string;
7236
- /** @description Optional. An existing deck to rebuild. If omitted, a new deck is created in projectId. */
7140
+ /** @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. */
7141
+ documentId: string;
7142
+ /** @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. */
7143
+ message: string;
7144
+ /** @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. */
7145
+ sessionId?: string;
7146
+ /** @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. */
7237
7147
  deckId?: string;
7238
- /** @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. */
7148
+ /** @description Optional title. If omitted, a clear one is derived from the brief. */
7149
+ title?: string;
7150
+ /** @description Optional brand kit id (from listBrandKits) to colour-condition the illustration. If omitted, the organisation's effective brand is used. */
7239
7151
  brandKitId?: string;
7240
- /** @description Optional target number of slides (the composer adjusts to fit the story). Typical 6 to 12. */
7241
- slideCount?: number;
7242
- /** @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. */
7152
+ /** @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. */
7153
+ attachments?: {
7154
+ /** @description A public https URL to the image. */
7155
+ url?: string;
7156
+ /** @description The image as base64 (no data: prefix). Provide mediaType alongside it. */
7157
+ data?: string;
7158
+ /** @description The image MIME type, e.g. 'image/png' or 'image/jpeg'. */
7159
+ mediaType?: string;
7160
+ /** @description Optional human-readable name for the image. */
7161
+ name?: string;
7162
+ }[];
7163
+ /** @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. */
7243
7164
  confirm?: boolean;
7244
7165
  };
7245
7166
  };
@@ -7312,7 +7233,7 @@ interface operations {
7312
7233
  };
7313
7234
  };
7314
7235
  };
7315
- editDeck: {
7236
+ getDeckReplyInWhiteboard: {
7316
7237
  parameters: {
7317
7238
  query?: never;
7318
7239
  header?: never;
@@ -7322,14 +7243,10 @@ interface operations {
7322
7243
  requestBody?: {
7323
7244
  content: {
7324
7245
  "application/json": {
7325
- /** @description The id of the finished deck to edit. */
7246
+ /** @description The whiteboard that hosts the deck or illustration (it lives inside the board). REQUIRED. */
7247
+ documentId: string;
7248
+ /** @description The deck or illustration to poll, as returned by designDeckInWhiteboard or designIllustrationInWhiteboard. */
7326
7249
  deckId: string;
7327
- /** @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 ...'). */
7328
- instruction: string;
7329
- /** @description Optional 1-based slide number to focus the edit on. Omit to let the builder find the right slide(s) from the instruction. */
7330
- slideIndex?: number;
7331
- /** @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. */
7332
- confirm?: boolean;
7333
7250
  };
7334
7251
  };
7335
7252
  };
@@ -7401,7 +7318,7 @@ interface operations {
7401
7318
  };
7402
7319
  };
7403
7320
  };
7404
- insertDeckIntoWhiteboard: {
7321
+ exportFromWhiteboard: {
7405
7322
  parameters: {
7406
7323
  query?: never;
7407
7324
  header?: never;
@@ -7411,12 +7328,22 @@ interface operations {
7411
7328
  requestBody?: {
7412
7329
  content: {
7413
7330
  "application/json": {
7414
- /** @description The id of an existing, finished ('ready') deck whose slides to place on a whiteboard. */
7415
- deckId: string;
7416
- /** @description Optional existing whiteboard to place the slides on. When omitted, a new whiteboard is created in projectId. */
7417
- documentId?: string;
7418
- /** @description Optional project to create the new whiteboard in when documentId is omitted. Defaults to the deck's own project. */
7419
- projectId?: string;
7331
+ /** @description The whiteboard that hosts the design. */
7332
+ documentId: string;
7333
+ /** @description The design to export (the deck id), as returned by designDeckInWhiteboard. */
7334
+ designId: string;
7335
+ /**
7336
+ * @description Which engine. 'deck' (default).
7337
+ * @enum {string}
7338
+ */
7339
+ kind?: "deck";
7340
+ /**
7341
+ * @description Output format. 'pptx' (default) = editable PowerPoint; 'pdf' = vector PDF; 'png' = one base64 image per slide; 'html' = the design's self-contained HTML.
7342
+ * @enum {string}
7343
+ */
7344
+ format?: "pptx" | "pdf" | "png" | "html";
7345
+ /** @description Optional brand kit id (reserved for future per-export theming; the design is already branded, so this is usually unnecessary). */
7346
+ brandKitId?: string;
7420
7347
  };
7421
7348
  };
7422
7349
  };
@@ -7930,6 +7857,10 @@ interface operations {
7930
7857
  columns?: (string | Record<string, never>)[];
7931
7858
  /** @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']]. */
7932
7859
  rows?: (string | number)[][];
7860
+ /** @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. */
7861
+ customData?: {
7862
+ [key: string]: unknown;
7863
+ };
7933
7864
  } & {
7934
7865
  [key: string]: unknown;
7935
7866
  })[];
@@ -8134,6 +8065,8 @@ interface operations {
8134
8065
  align?: "left" | "center" | "right";
8135
8066
  /** @description Optional original filename (for storage + type hinting). */
8136
8067
  fileName?: string;
8068
+ /** @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. */
8069
+ locked?: boolean;
8137
8070
  };
8138
8071
  };
8139
8072
  };
@@ -8609,11 +8542,6 @@ interface operations {
8609
8542
  "application/json": {
8610
8543
  /** @description The whiteboard's documentId. */
8611
8544
  documentId: string;
8612
- /**
8613
- * @description png (default — a viewable raster) or svg (vector markup).
8614
- * @enum {string}
8615
- */
8616
- format?: "png" | "svg";
8617
8545
  /** @description Render only these element ids (plus their bound labels + group peers) instead of the whole board. */
8618
8546
  elementIds?: string[];
8619
8547
  /** @description Canvas background colour (default white), e.g. '#ffffff' or 'transparent'. */