slotdeck 0.1.1 → 0.2.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.
Files changed (109) hide show
  1. package/README.md +94 -8
  2. package/dist/deck/alternatives.d.ts +34 -0
  3. package/dist/deck/alternatives.js +370 -0
  4. package/dist/deck/alternatives.js.map +1 -0
  5. package/dist/deck/design.d.ts +40 -0
  6. package/dist/deck/design.js +112 -0
  7. package/dist/deck/design.js.map +1 -0
  8. package/dist/deck/validate.d.ts +18 -0
  9. package/dist/deck/validate.js +44 -6
  10. package/dist/deck/validate.js.map +1 -1
  11. package/dist/index.d.ts +23 -1
  12. package/dist/index.js +14 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/llm/gemini.d.ts +4 -0
  15. package/dist/llm/gemini.js +43 -7
  16. package/dist/llm/gemini.js.map +1 -1
  17. package/dist/llm/provider.d.ts +12 -0
  18. package/dist/node.d.ts +7 -0
  19. package/dist/node.js +29 -0
  20. package/dist/node.js.map +1 -1
  21. package/dist/plan/catalog.d.ts +11 -1
  22. package/dist/plan/catalog.js +23 -8
  23. package/dist/plan/catalog.js.map +1 -1
  24. package/dist/plan/edit.js +14 -6
  25. package/dist/plan/edit.js.map +1 -1
  26. package/dist/plan/plan.d.ts +26 -2
  27. package/dist/plan/plan.js +58 -17
  28. package/dist/plan/plan.js.map +1 -1
  29. package/dist/plan/review.d.ts +43 -0
  30. package/dist/plan/review.js +141 -0
  31. package/dist/plan/review.js.map +1 -0
  32. package/dist/plan/write.d.ts +13 -1
  33. package/dist/plan/write.js +40 -7
  34. package/dist/plan/write.js.map +1 -1
  35. package/dist/preview/pagus.d.ts +30 -0
  36. package/dist/preview/pagus.js +45 -0
  37. package/dist/preview/pagus.js.map +1 -0
  38. package/dist/preview/patterns.d.ts +27 -0
  39. package/dist/preview/patterns.js +35 -0
  40. package/dist/preview/patterns.js.map +1 -0
  41. package/dist/preview/provider.d.ts +30 -0
  42. package/dist/preview/provider.js +11 -0
  43. package/dist/preview/provider.js.map +1 -0
  44. package/dist/render/render.d.ts +18 -1
  45. package/dist/render/render.js +32 -12
  46. package/dist/render/render.js.map +1 -1
  47. package/dist/render/repeat.d.ts +17 -2
  48. package/dist/render/repeat.js +150 -4
  49. package/dist/render/repeat.js.map +1 -1
  50. package/dist/render/text.d.ts +6 -0
  51. package/dist/render/text.js +24 -0
  52. package/dist/render/text.js.map +1 -1
  53. package/dist/template/budgets.d.ts +33 -0
  54. package/dist/template/budgets.js +38 -0
  55. package/dist/template/budgets.js.map +1 -0
  56. package/dist/template/change.d.ts +19 -1
  57. package/dist/template/change.js +45 -3
  58. package/dist/template/change.js.map +1 -1
  59. package/dist/template/check.d.ts +3 -0
  60. package/dist/template/check.js +53 -3
  61. package/dist/template/check.js.map +1 -1
  62. package/dist/template/derive.d.ts +54 -0
  63. package/dist/template/derive.js +402 -0
  64. package/dist/template/derive.js.map +1 -0
  65. package/dist/template/draft.d.ts +7 -0
  66. package/dist/template/draft.js +17 -1
  67. package/dist/template/draft.js.map +1 -1
  68. package/dist/template/instruct.js +15 -7
  69. package/dist/template/instruct.js.map +1 -1
  70. package/dist/template/manifest.d.ts +38 -0
  71. package/dist/template/manifest.js +43 -1
  72. package/dist/template/manifest.js.map +1 -1
  73. package/dist/template/sample.d.ts +17 -0
  74. package/dist/template/sample.js +31 -5
  75. package/dist/template/sample.js.map +1 -1
  76. package/dist/text/fontkit.d.ts +18 -0
  77. package/dist/text/fontkit.js +91 -0
  78. package/dist/text/fontkit.js.map +1 -0
  79. package/dist/text/fonts.d.ts +45 -0
  80. package/dist/text/fonts.js +59 -0
  81. package/dist/text/fonts.js.map +1 -0
  82. package/dist/text/layout.d.ts +12 -0
  83. package/dist/text/layout.js +104 -0
  84. package/dist/text/layout.js.map +1 -0
  85. package/dist/text/measure.d.ts +85 -0
  86. package/dist/text/measure.js +369 -0
  87. package/dist/text/measure.js.map +1 -0
  88. package/dist/text/styles.d.ts +123 -0
  89. package/dist/text/styles.js +417 -0
  90. package/dist/text/styles.js.map +1 -0
  91. package/dist/tools.d.ts +12 -0
  92. package/dist/tools.js +38 -6
  93. package/dist/tools.js.map +1 -1
  94. package/docs/README.md +16 -5
  95. package/docs/api-reference.md +291 -9
  96. package/docs/changelog.md +242 -0
  97. package/docs/chat-tools.md +26 -5
  98. package/docs/deck-format.md +6 -0
  99. package/docs/design-checks.md +216 -0
  100. package/docs/generating.md +43 -4
  101. package/docs/layout-freedom.md +278 -3
  102. package/docs/manifest-format.md +20 -3
  103. package/docs/preview.md +217 -0
  104. package/docs/providers.md +49 -4
  105. package/docs/rendering.md +8 -0
  106. package/docs/template-studio.md +121 -12
  107. package/docs/text-fit.md +456 -0
  108. package/docs/troubleshooting.md +21 -2
  109. package/package.json +7 -1
package/dist/tools.d.ts CHANGED
@@ -3,6 +3,7 @@ import type { LayoutMode } from './deck/validate.ts';
3
3
  import type { ImageProvider, JsonSchema, LlmProvider } from './llm/provider.ts';
4
4
  import type { AssetDef, IconDef } from './plan/catalog.ts';
5
5
  import type { DeckPlan, PlanOptions } from './plan/plan.ts';
6
+ import type { PreviewProvider, SlidePreview } from './preview/provider.ts';
6
7
  import type { Template } from './render/render.ts';
7
8
  import type { BlobStore } from './store.ts';
8
9
  import type { GenerateProgress } from './generate.ts';
@@ -25,8 +26,15 @@ export interface PresentationToolsOptions {
25
26
  /** Deck-level values every deck gets, e.g. the unit shown in the header. */
26
27
  fields?: Record<string, string>;
27
28
  numberPatterns?: PlanOptions['numberPatterns'];
29
+ /** A second look at every draft the tools write, as for `planDeck`. Off unless set. */
30
+ review?: PlanOptions['review'];
28
31
  /** Address of a picture of a pattern's layout, for showing a plan visually. */
29
32
  thumbnail?: (patternId: string) => string | undefined;
33
+ /**
34
+ * Draws the slides of every presentation the tools create or change. The pictures are kept in
35
+ * the store under `preview/<presentation id>/`, and returned to the app with the result.
36
+ */
37
+ preview?: PreviewProvider;
30
38
  /** Makes ids for plans and decks. Defaults to a short random id. */
31
39
  newId?: (kind: 'plan' | 'deck') => string;
32
40
  onProgress?: (event: GenerateProgress, tool: string) => void;
@@ -38,6 +46,8 @@ export interface ToolResult {
38
46
  plan?: DeckPlan;
39
47
  deck?: DeckSpec;
40
48
  pptx?: Uint8Array;
49
+ /** Pictures of the slides, when the tools were given a preview provider. */
50
+ previews?: SlidePreview[];
41
51
  }
42
52
  export interface PresentationTools {
43
53
  /** Tool declarations to give the chat model. */
@@ -59,6 +69,8 @@ export declare const storeKeys: {
59
69
  deck: (id: string) => string;
60
70
  pptx: (id: string) => string;
61
71
  asset: (id: string) => string;
72
+ /** A slide's picture: `extension` is `svg` or `png`, as the preview provider made it. */
73
+ preview: (id: string, slide: number, extension: string) => string;
62
74
  };
63
75
  /**
64
76
  * Builds the presentation tools for a chat model. Give `definitions` to the model and pass its
package/dist/tools.js CHANGED
@@ -4,6 +4,7 @@ import { isImageRef } from './deck/spec.js';
4
4
  import { resolveAssets } from './plan/assets.js';
5
5
  import { planEdit } from './plan/edit.js';
6
6
  import { editPlan, planOutline, writeDeck } from './plan/plan.js';
7
+ import { previewExtension } from './preview/provider.js';
7
8
  import { renderDeck } from './render/render.js';
8
9
  import { readJson, writeJson } from './store.js';
9
10
  export const TOOL_NAMES = {
@@ -18,6 +19,8 @@ export const storeKeys = {
18
19
  deck: (id) => `deck/${id}.json`,
19
20
  pptx: (id) => `pptx/${id}.pptx`,
20
21
  asset: (id) => `asset/${id}`,
22
+ /** A slide's picture: `extension` is `svg` or `png`, as the preview provider made it. */
23
+ preview: (id, slide, extension) => `preview/${id}/slide-${String(slide).padStart(2, '0')}.${extension}`,
21
24
  };
22
25
  const definitions = [
23
26
  {
@@ -35,6 +38,10 @@ const definitions = [
35
38
  language: { type: 'string', description: 'BCP 47 tag of the language to write in, e.g. "he" or "en". Defaults to the template language.' },
36
39
  image_density: { type: 'string', enum: ['none', 'low', 'medium', 'high'], description: 'How many slides carry a photo. Defaults to medium.' },
37
40
  text_size: { type: 'string', enum: ['normal', 'large', 'x-large'], description: 'Size of body text. Larger text means less of it per slide. Defaults to normal.' },
41
+ text_only: {
42
+ type: 'boolean',
43
+ description: 'True when the user asks for a presentation of text only. Every slide is then plain text: a title with paragraphs or a list, with no pictures, icons, cards, figures, tables or charts.',
44
+ },
38
45
  instructions: { type: 'string', description: 'Audience, tone, and anything else to respect' },
39
46
  },
40
47
  required: ['topic'],
@@ -108,6 +115,8 @@ export function presentationTools(options) {
108
115
  plan.assets = options.assets;
109
116
  if (options.numberPatterns)
110
117
  plan.numberPatterns = options.numberPatterns;
118
+ if (options.review)
119
+ plan.review = options.review;
111
120
  if (options.onProgress)
112
121
  plan.onProgress = (event) => options.onProgress?.(event, tool);
113
122
  if (signal)
@@ -176,7 +185,23 @@ export function presentationTools(options) {
176
185
  if (warnings.length > 0) {
177
186
  output.warnings = warnings.map((issue) => `slide ${issue.slide}${issue.slot ? ` ${issue.slot}` : ''}: ${issue.message}`);
178
187
  }
179
- return { id, output, pptx };
188
+ // Pictures of the slides are an extra: the presentation stands when they cannot be made.
189
+ let previews;
190
+ if (options.preview) {
191
+ try {
192
+ previews = await options.preview.renderSlides(signal ? { pptx, signal } : { pptx });
193
+ const keys = previews.map((picture) => storeKeys.preview(id, picture.slide, previewExtension(picture)));
194
+ await Promise.all(previews.map((picture, index) => store.set(keys[index], picture.data)));
195
+ output.previews = keys;
196
+ }
197
+ catch (error) {
198
+ if (signal?.aborted)
199
+ throw error;
200
+ previews = undefined;
201
+ output.preview_error = error instanceof Error ? error.message : String(error);
202
+ }
203
+ }
204
+ return { id, output, pptx, previews };
180
205
  };
181
206
  const text = (args, name) => {
182
207
  const value = args[name];
@@ -204,6 +229,8 @@ export function presentationTools(options) {
204
229
  const size = args.text_size;
205
230
  if (size === 'normal' || size === 'large' || size === 'x-large')
206
231
  brief.textSize = size;
232
+ if (args.text_only === true)
233
+ brief.textOnly = true;
207
234
  const plan = await planOutline(template, brief, planOptions(TOOL_NAMES.plan, signal));
208
235
  const id = newId('plan');
209
236
  await writeJson(store, storeKeys.plan(id), plan);
@@ -225,8 +252,8 @@ export function presentationTools(options) {
225
252
  if (!plan)
226
253
  throw new ToolInputError(`There is no plan with id "${planId}"`);
227
254
  const written = await writeDeck(template, plan, planOptions(TOOL_NAMES.create, signal));
228
- const { output, pptx } = await finish(TOOL_NAMES.create, written.deck, written.warnings, signal);
229
- return { output: { ...output, plan_id: planId }, deck: written.deck, pptx };
255
+ const { output, pptx, previews } = await finish(TOOL_NAMES.create, written.deck, written.warnings, signal);
256
+ return withPreviews({ output: { ...output, plan_id: planId }, deck: written.deck, pptx }, previews);
230
257
  },
231
258
  async [TOOL_NAMES.edit](args, signal) {
232
259
  const deckId = text(args, 'presentation_id');
@@ -235,12 +262,12 @@ export function presentationTools(options) {
235
262
  throw new ToolInputError(`There is no presentation with id "${deckId}"`);
236
263
  const editOptions = { ...planOptions(TOOL_NAMES.edit, signal), ...(canMakePhotos ? {} : { imageDensity: 'none' }) };
237
264
  const edited = await planEdit(template, deck, text(args, 'instruction'), editOptions);
238
- const { output, pptx } = await finish(TOOL_NAMES.edit, edited.deck, edited.warnings, signal);
239
- return {
265
+ const { output, pptx, previews } = await finish(TOOL_NAMES.edit, edited.deck, edited.warnings, signal);
266
+ return withPreviews({
240
267
  output: { ...output, summary: edited.summary, rewritten_slides: edited.rewritten, previous_presentation_id: deckId },
241
268
  deck: edited.deck,
242
269
  pptx,
243
- };
270
+ }, previews);
244
271
  },
245
272
  };
246
273
  return {
@@ -261,6 +288,11 @@ export function presentationTools(options) {
261
288
  },
262
289
  };
263
290
  }
291
+ function withPreviews(result, previews) {
292
+ if (previews)
293
+ result.previews = previews;
294
+ return result;
295
+ }
264
296
  class ToolInputError extends Error {
265
297
  }
266
298
  //# sourceMappingURL=tools.js.map
package/dist/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,2DAA2D;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAI5C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAElE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AA+CjD,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,mBAAmB;IACzB,QAAQ,EAAE,wBAAwB;IAClC,MAAM,EAAE,qBAAqB;IAC7B,IAAI,EAAE,mBAAmB;CACjB,CAAC;AAEX,2DAA2D;AAC3D,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,IAAI,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,QAAQ,EAAE,OAAO;IACvC,IAAI,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,QAAQ,EAAE,OAAO;IACvC,IAAI,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,QAAQ,EAAE,OAAO;IACvC,KAAK,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE;CACrC,CAAC;AAEF,MAAM,WAAW,GAAqB;IACpC;QACE,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,WAAW,EACT,6HAA6H;YAC7H,+FAA+F;QACjG,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,oIAAoI;iBAClJ;gBACD,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,+CAA+C,EAAE;gBACvH,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+FAA+F,EAAE;gBAC1I,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,oDAAoD,EAAE;gBAC7I,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,WAAW,EAAE,gFAAgF,EAAE;gBAClK,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8CAA8C,EAAE;aAC9F;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB;KACF;IACD;QACE,IAAI,EAAE,UAAU,CAAC,QAAQ;QACzB,WAAW,EACT,+JAA+J;QACjK,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE;gBACpE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8EAA8E,EAAE;aAC7H;YACD,QAAQ,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC;SACrC;KACF;IACD;QACE,IAAI,EAAE,UAAU,CAAC,MAAM;QACvB,WAAW,EAAE,+HAA+H;QAC5I,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE,EAAE;YACnF,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;IACD;QACE,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,WAAW,EACT,4IAA4I;YAC5I,gEAAgE;YAChE,6FAA6F;QAC/F,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kCAAkC,EAAE;gBACpF,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8EAA8E,EAAE;aAC7H;YACD,QAAQ,EAAE,CAAC,iBAAiB,EAAE,aAAa,CAAC;SAC7C;KACF;CACF,CAAC;AAEF,SAAS,QAAQ,CAAC,IAAqB;IACrC,OAAO,GAAG,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACzE,CAAC;AAED,uGAAuG;AACvG,SAAS,SAAS,CAAC,IAAc,EAAE,KAAa;IAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAA+B,CAAC;IAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;IAChC,MAAM,IAAI,GAA4B,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;IACnF,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IAClD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAiC;IACjE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IACpC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7F,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC;IACxC,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IAEzG,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,MAA+B,EAAe,EAAE;QACjF,MAAM,IAAI,GAAgB,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;QAC/C,IAAI,OAAO,CAAC,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QACjD,IAAI,OAAO,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC9C,IAAI,OAAO,CAAC,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QACjD,IAAI,OAAO,CAAC,cAAc;YAAE,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QACzE,IAAI,OAAO,CAAC,UAAU;YAAE,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACvF,IAAI,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,EAAU,EAAE,IAAc,EAA2B,EAAE,CAAC,CAAC;QAC7E,OAAO,EAAE,EAAE;QACX,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ;QAC3D,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACvC,MAAM,IAAI,GAA4B;gBACpC,MAAM,EAAE,KAAK,GAAG,CAAC;gBACjB,MAAM,EAAE,KAAK,CAAC,OAAO;gBACrB,kBAAkB,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW;gBAC5D,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC;YACF,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACrD,IAAI,SAAS;gBAAE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QACF,IAAI,EAAE,mCAAmC,UAAU,CAAC,QAAQ,oBAAoB,UAAU,CAAC,MAAM,qBAAqB;KACvH,CAAC,CAAC;IAEH,wGAAwG;IACxG,MAAM,MAAM,GAAG,KAAK,EAAE,IAAY,EAAE,IAAc,EAAE,QAAiB,EAAE,MAA+B,EAAE,EAAE;QACxG,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACvG,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;QACjC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;gBAAE,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;oBAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/H,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;QAC5C,MAAM,OAAO,CAAC,GAAG,CACf,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC9B,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YACrD,IAAI,IAAI;gBAAE,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACnC,CAAC,CAAC,CACH,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAErC,MAAM,OAAO,GAAmB,EAAE,KAAK,EAAE,CAAC;QAC1C,IAAI,OAAO,CAAC,MAAM;YAAE,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QACpD,IAAI,OAAO,CAAC,KAAK;YAAE,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QACjD,IAAI,OAAO,CAAC,MAAM;YAAE,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QACpD,IAAI,OAAO,CAAC,UAAU;YAAE,OAAO,CAAC,UAAU,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC1F,IAAI,MAAM;YAAE,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;QACpC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5D,+EAA+E;QAC/E,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAEtI,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;QAChD,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9G,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QACzB,MAAM,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACjD,MAAM,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAE1C,MAAM,MAAM,GAA4B;YACtC,eAAe,EAAE,EAAE;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SAC9D,CAAC;QACF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3H,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC9B,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,CAAC,IAA6B,EAAE,IAAY,EAAU,EAAE;QACnE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,MAAM,IAAI,cAAc,CAAC,IAAI,IAAI,eAAe,CAAC,CAAC;QACxG,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC,CAAC;IAEF,MAAM,QAAQ,GAA4G;QACxH,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM;YAClC,MAAM,KAAK,GAAU,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;YACrD,IAAI,OAAO,CAAC,MAAM;gBAAE,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAClD,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;gBAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACrG,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;gBAAE,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YACrH,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACvC,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;gBAAE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;YACnE,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;YACnC,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,MAAM;gBAAE,KAAK,CAAC,YAAY,GAAG,OAAuB,CAAC;YACxI,IAAI,CAAC,aAAa;gBAAE,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC;YAChD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;YAC5B,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,SAAS;gBAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;YAEvF,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;YACtF,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;YACzB,MAAM,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YACjD,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;QAClD,CAAC;QAED,KAAK,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,MAAM;YACtC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACrC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAW,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACxE,IAAI,CAAC,OAAO;gBAAE,MAAM,IAAI,cAAc,CAAC,6BAA6B,MAAM,GAAG,CAAC,CAAC;YAC/E,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;YACjI,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;YACzB,MAAM,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YACjD,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC;QAC5F,CAAC;QAED,KAAK,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM;YACpC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACrC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAW,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACrE,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,cAAc,CAAC,6BAA6B,MAAM,GAAG,CAAC,CAAC;YAC5E,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;YACxF,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACjG,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;QAC9E,CAAC;QAED,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM;YAClC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;YAC7C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAW,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACrE,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,cAAc,CAAC,qCAAqC,MAAM,GAAG,CAAC,CAAC;YACpF,MAAM,WAAW,GAAG,EAAE,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAe,EAAE,CAAC,EAAE,CAAC;YAC7H,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,WAAW,CAAC,CAAC;YACtF,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC7F,OAAO;gBACL,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,CAAC,SAAS,EAAE,wBAAwB,EAAE,MAAM,EAAE;gBACpH,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,IAAI;aACL,CAAC;QACJ,CAAC;KACF,CAAC;IAEF,OAAO;QACL,WAAW;QACX,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO;YAC5B,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,CAAC,OAAO;gBAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,iBAAiB,IAAI,GAAG,EAAE,EAAE,CAAC;YACrE,IAAI,CAAC;gBACH,OAAO,MAAM,OAAO,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAA4B,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAC5H,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,OAAO,EAAE,MAAM,EAAE,OAAO;oBAAE,MAAM,KAAK,CAAC;gBAC1C,mGAAmG;gBACnG,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;YACvF,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,cAAe,SAAQ,KAAK;CAAG"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
package/docs/README.md CHANGED
@@ -37,11 +37,15 @@ slotdeck makes new PowerPoint files from an existing PowerPoint template.
37
37
  | [generating.md](generating.md) | Make a deck from a brief, or change one by instruction, with a language model |
38
38
  | [chat-tools.md](chat-tools.md) | Give a chat model the four presentation tools and store what they produce |
39
39
  | [providers.md](providers.md) | Connect your own language model or image source, including an internal gateway |
40
- | [layout-freedom.md](layout-freedom.md) | Vary the number of cards, enlarge text, and derive several patterns from one slide |
40
+ | [layout-freedom.md](layout-freedom.md) | Vary the number of cards, enlarge text, derive several patterns from one slide, and find other layouts for a slide |
41
41
  | [languages.md](languages.md) | Make right-to-left decks from a left-to-right template, or the reverse |
42
+ | [text-fit.md](text-fit.md) | Measure text with the template's fonts: overflow in lines, shrinking to fit, budgets from measurement |
43
+ | [preview.md](preview.md) | Get a picture of each slide without PowerPoint, and know how close it is |
44
+ | [design-checks.md](design-checks.md) | Find empty boxes, uneven cards and orphan words by measurement, and have drafts reviewed while a deck is written |
42
45
  | [template-studio.md](template-studio.md) | Draft a manifest with a model, check it, change it by hand or by instruction |
43
46
  | [api-reference.md](api-reference.md) | Look up any export: its signature and what it does |
44
47
  | [troubleshooting.md](troubleshooting.md) | Find the meaning of an error or warning, and the known limits |
48
+ | [changelog.md](changelog.md) | See what changed in each version, and what to do when upgrading |
45
49
 
46
50
  ## Which function do I need?
47
51
 
@@ -49,6 +53,7 @@ slotdeck makes new PowerPoint files from an existing PowerPoint template.
49
53
  | --- | --- | --- |
50
54
  | Turn deck JSON into a pptx | `renderDeck` | none |
51
55
  | Check deck JSON before rendering | `validateDeck` | none |
56
+ | See which other layouts a slide's content fits | `slideAlternatives` | none |
52
57
  | Brief in, pptx out | `generateDeck` | text: 2 plus repairs; images: one per photo |
53
58
  | Brief in, deck JSON out | `planDeck` | 2 plus repairs |
54
59
  | Show a plan first, write later | `planOutline`, `editPlan`, `writeDeck` | 1 each, `writeDeck` plus repairs |
@@ -57,19 +62,25 @@ slotdeck makes new PowerPoint files from an existing PowerPoint template.
57
62
  | Describe a new template | `draftManifest` | 1 per slide, plus 1 |
58
63
  | Verify a manifest against its pptx | `checkManifest` | none |
59
64
  | See whether a manifest's budgets hold | `sampleDeck` then `renderDeck` | none |
65
+ | Know whether a text fits its box, in lines | `loadTemplate` with `fonts`, or `textMeasurer` | none |
66
+ | Set budgets from what the boxes hold | `measuredBudgets` | none |
67
+ | Show a deck or a template's layouts as pictures | `previewDeck`, `patternPreviews` with a `PreviewProvider` | none |
68
+ | List design problems of a deck | `checkDesign` | none |
69
+ | Have drafts checked for design while a deck is written | `review: designReview(template)` on the planner | none of its own; each repair is one writing call |
60
70
  | Change a manifest by operations | `changeManifest` | none |
71
+ | Add a mirrored or text-only variant of a pattern | `changeManifest` with `derivePattern`; `patternVariants` lists what is possible | none |
61
72
  | Change a manifest by instruction | `editManifest` | 1 or 2 |
62
73
  | List the shapes of a template | `inspectTemplate`, `studioView` | none |
63
74
 
64
75
  ## Facts worth knowing before writing code
65
76
 
66
77
  - The package is ESM only (`import`, not `require`) and needs Node 22.18 or later.
67
- - Entry points: `slotdeck` (everything that runs anywhere) and `slotdeck/node` (`directoryStore`, which uses
68
- the file system).
78
+ - Entry points: `slotdeck` (everything that runs anywhere) and `slotdeck/node` (`directoryStore` and
79
+ `fontFiles`, which use the file system).
69
80
  - All binary data is `Uint8Array`. In Node a `Buffer` is a `Uint8Array`, so `fs.readFileSync(path)` can be
70
81
  passed directly.
71
- - Functions that call a model are `async`. `renderDeck`, `validateDeck`, `checkManifest`, `sampleDeck`,
72
- `changeManifest`, `inspectTemplate` and `studioView` are synchronous.
82
+ - Functions that call a model are `async`. `renderDeck`, `validateDeck`, `slideAlternatives`, `checkManifest`,
83
+ `sampleDeck`, `changeManifest`, `patternVariants`, `inspectTemplate` and `studioView` are synchronous.
73
84
  - A deck never contains binary data. Pictures are referenced by an **asset id** and passed to the renderer as
74
85
  a map from id to bytes.
75
86
  - Nothing is written to disk and nothing is sent anywhere by slotdeck itself, except what your own provider