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.
- package/README.md +94 -8
- package/dist/deck/alternatives.d.ts +34 -0
- package/dist/deck/alternatives.js +370 -0
- package/dist/deck/alternatives.js.map +1 -0
- package/dist/deck/design.d.ts +40 -0
- package/dist/deck/design.js +112 -0
- package/dist/deck/design.js.map +1 -0
- package/dist/deck/validate.d.ts +18 -0
- package/dist/deck/validate.js +44 -6
- package/dist/deck/validate.js.map +1 -1
- package/dist/index.d.ts +23 -1
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -1
- package/dist/llm/gemini.d.ts +4 -0
- package/dist/llm/gemini.js +43 -7
- package/dist/llm/gemini.js.map +1 -1
- package/dist/llm/provider.d.ts +12 -0
- package/dist/node.d.ts +7 -0
- package/dist/node.js +29 -0
- package/dist/node.js.map +1 -1
- package/dist/plan/catalog.d.ts +11 -1
- package/dist/plan/catalog.js +23 -8
- package/dist/plan/catalog.js.map +1 -1
- package/dist/plan/edit.js +14 -6
- package/dist/plan/edit.js.map +1 -1
- package/dist/plan/plan.d.ts +26 -2
- package/dist/plan/plan.js +58 -17
- package/dist/plan/plan.js.map +1 -1
- package/dist/plan/review.d.ts +43 -0
- package/dist/plan/review.js +141 -0
- package/dist/plan/review.js.map +1 -0
- package/dist/plan/write.d.ts +13 -1
- package/dist/plan/write.js +40 -7
- package/dist/plan/write.js.map +1 -1
- package/dist/preview/pagus.d.ts +30 -0
- package/dist/preview/pagus.js +45 -0
- package/dist/preview/pagus.js.map +1 -0
- package/dist/preview/patterns.d.ts +27 -0
- package/dist/preview/patterns.js +35 -0
- package/dist/preview/patterns.js.map +1 -0
- package/dist/preview/provider.d.ts +30 -0
- package/dist/preview/provider.js +11 -0
- package/dist/preview/provider.js.map +1 -0
- package/dist/render/render.d.ts +18 -1
- package/dist/render/render.js +32 -12
- package/dist/render/render.js.map +1 -1
- package/dist/render/repeat.d.ts +17 -2
- package/dist/render/repeat.js +150 -4
- package/dist/render/repeat.js.map +1 -1
- package/dist/render/text.d.ts +6 -0
- package/dist/render/text.js +24 -0
- package/dist/render/text.js.map +1 -1
- package/dist/template/budgets.d.ts +33 -0
- package/dist/template/budgets.js +38 -0
- package/dist/template/budgets.js.map +1 -0
- package/dist/template/change.d.ts +19 -1
- package/dist/template/change.js +45 -3
- package/dist/template/change.js.map +1 -1
- package/dist/template/check.d.ts +3 -0
- package/dist/template/check.js +53 -3
- package/dist/template/check.js.map +1 -1
- package/dist/template/derive.d.ts +54 -0
- package/dist/template/derive.js +402 -0
- package/dist/template/derive.js.map +1 -0
- package/dist/template/draft.d.ts +7 -0
- package/dist/template/draft.js +17 -1
- package/dist/template/draft.js.map +1 -1
- package/dist/template/instruct.js +15 -7
- package/dist/template/instruct.js.map +1 -1
- package/dist/template/manifest.d.ts +38 -0
- package/dist/template/manifest.js +43 -1
- package/dist/template/manifest.js.map +1 -1
- package/dist/template/sample.d.ts +17 -0
- package/dist/template/sample.js +31 -5
- package/dist/template/sample.js.map +1 -1
- package/dist/text/fontkit.d.ts +18 -0
- package/dist/text/fontkit.js +91 -0
- package/dist/text/fontkit.js.map +1 -0
- package/dist/text/fonts.d.ts +45 -0
- package/dist/text/fonts.js +59 -0
- package/dist/text/fonts.js.map +1 -0
- package/dist/text/layout.d.ts +12 -0
- package/dist/text/layout.js +104 -0
- package/dist/text/layout.js.map +1 -0
- package/dist/text/measure.d.ts +85 -0
- package/dist/text/measure.js +369 -0
- package/dist/text/measure.js.map +1 -0
- package/dist/text/styles.d.ts +123 -0
- package/dist/text/styles.js +417 -0
- package/dist/text/styles.js.map +1 -0
- package/dist/tools.d.ts +12 -0
- package/dist/tools.js +38 -6
- package/dist/tools.js.map +1 -1
- package/docs/README.md +16 -5
- package/docs/api-reference.md +291 -9
- package/docs/changelog.md +242 -0
- package/docs/chat-tools.md +26 -5
- package/docs/deck-format.md +6 -0
- package/docs/design-checks.md +216 -0
- package/docs/generating.md +43 -4
- package/docs/layout-freedom.md +278 -3
- package/docs/manifest-format.md +20 -3
- package/docs/preview.md +217 -0
- package/docs/providers.md +49 -4
- package/docs/rendering.md +8 -0
- package/docs/template-studio.md +121 -12
- package/docs/text-fit.md +456 -0
- package/docs/troubleshooting.md +21 -2
- package/package.json +7 -1
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { Template } from '../render/render.ts';
|
|
2
|
+
import type { DeckSpec } from './spec.ts';
|
|
3
|
+
import type { Issue, LayoutMode } from './validate.ts';
|
|
4
|
+
/**
|
|
5
|
+
* - `overflow`: the text runs over its box.
|
|
6
|
+
* - `empty`: the text takes far less room than the template's own text does, so its box looks empty.
|
|
7
|
+
* - `uneven`: one item of a row of cards holds far less text than another.
|
|
8
|
+
* - `orphan`: a heading ends with a single word on a line of its own.
|
|
9
|
+
*/
|
|
10
|
+
export type DesignKind = 'overflow' | 'empty' | 'uneven' | 'orphan';
|
|
11
|
+
/** A design problem on one slot of one slide. Its message is written so that it can be sent to the model that wrote the text. */
|
|
12
|
+
export interface DesignIssue extends Issue {
|
|
13
|
+
severity: 'warning';
|
|
14
|
+
slide: number;
|
|
15
|
+
slot: string;
|
|
16
|
+
kind: DesignKind;
|
|
17
|
+
}
|
|
18
|
+
export interface DesignOptions {
|
|
19
|
+
/** As for `renderDeck`. Defaults to `strict`. */
|
|
20
|
+
layout?: LayoutMode;
|
|
21
|
+
/** Which problems to look for. Defaults to all of them. */
|
|
22
|
+
kinds?: DesignKind[];
|
|
23
|
+
/**
|
|
24
|
+
* A text leaves its box empty when it takes this share, or less, of the lines the template's own
|
|
25
|
+
* text takes there; a card is uneven when it takes this share or less of its fullest neighbour.
|
|
26
|
+
* Defaults to a third.
|
|
27
|
+
*/
|
|
28
|
+
emptyBelow?: number;
|
|
29
|
+
/** The font size in points from which a single paragraph counts as a heading. Defaults to 20. */
|
|
30
|
+
headingSize?: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Lists the design problems of a deck that follow from measurement alone: text that runs over its
|
|
34
|
+
* box, boxes and cards left mostly empty, and headings that end in a lone word. The template must
|
|
35
|
+
* be loaded with fonts. No picture is made and no model is called.
|
|
36
|
+
*
|
|
37
|
+
* A slot that cannot be measured (its typeface was not supplied) is passed over, as is a slide
|
|
38
|
+
* that cannot be rendered: `validateDeck` reports those.
|
|
39
|
+
*/
|
|
40
|
+
export declare function checkDesign(template: Template, deck: DeckSpec, options?: DesignOptions): DesignIssue[];
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { effectiveSlots, itemCount, rowLayout, slotSources } from '../template/manifest.js';
|
|
2
|
+
import { textMeasurer } from '../text/measure.js';
|
|
3
|
+
import { fitOptions, overflowMessage, resolveSlot } from './validate.js';
|
|
4
|
+
/** The slot names of each group of like slots across a row of items: every card's text, every card's heading. */
|
|
5
|
+
function rowGroups(pattern, items) {
|
|
6
|
+
const groups = [];
|
|
7
|
+
const rows = [...(pattern.sequences ?? [])];
|
|
8
|
+
if (pattern.repeat) {
|
|
9
|
+
const repeat = pattern.repeat;
|
|
10
|
+
let next = 1;
|
|
11
|
+
for (const size of rowLayout(repeat, itemCount(pattern, items))) {
|
|
12
|
+
rows.push(Array.from({ length: size }, () => {
|
|
13
|
+
const n = next++;
|
|
14
|
+
return repeat.slots.map((name) => name.replace('{n}', String(n)));
|
|
15
|
+
}));
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
for (const row of rows) {
|
|
19
|
+
const width = Math.max(0, ...row.map((item) => item.length));
|
|
20
|
+
for (let position = 0; position < width; position++) {
|
|
21
|
+
const names = row.map((item) => item[position]).filter((name) => name !== undefined);
|
|
22
|
+
if (names.length > 1)
|
|
23
|
+
groups.push(names);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return groups;
|
|
27
|
+
}
|
|
28
|
+
const quote = (text) => JSON.stringify(text.length > 30 ? `${text.slice(0, 29)}…` : text);
|
|
29
|
+
const lines = (count) => `${count} ${count === 1 ? 'line' : 'lines'}`;
|
|
30
|
+
/**
|
|
31
|
+
* Lists the design problems of a deck that follow from measurement alone: text that runs over its
|
|
32
|
+
* box, boxes and cards left mostly empty, and headings that end in a lone word. The template must
|
|
33
|
+
* be loaded with fonts. No picture is made and no model is called.
|
|
34
|
+
*
|
|
35
|
+
* A slot that cannot be measured (its typeface was not supplied) is passed over, as is a slide
|
|
36
|
+
* that cannot be rendered: `validateDeck` reports those.
|
|
37
|
+
*/
|
|
38
|
+
export function checkDesign(template, deck, options = {}) {
|
|
39
|
+
const measure = textMeasurer(template);
|
|
40
|
+
const { manifest } = template;
|
|
41
|
+
const layout = options.layout ?? 'strict';
|
|
42
|
+
const kinds = new Set(options.kinds ?? ['overflow', 'empty', 'uneven', 'orphan']);
|
|
43
|
+
const emptyBelow = options.emptyBelow ?? 1 / 3;
|
|
44
|
+
const headingSize = options.headingSize ?? 20;
|
|
45
|
+
const mirrored = (deck.direction ?? manifest.direction) !== manifest.direction;
|
|
46
|
+
const issues = [];
|
|
47
|
+
(deck.slides ?? []).forEach((slide, index) => {
|
|
48
|
+
const number = index + 1;
|
|
49
|
+
const pattern = manifest.patterns.find((entry) => entry.id === slide.pattern);
|
|
50
|
+
if (!pattern)
|
|
51
|
+
return;
|
|
52
|
+
const report = (kind, slot, message) => {
|
|
53
|
+
if (kinds.has(kind))
|
|
54
|
+
issues.push({ severity: 'warning', slide: number, slot, kind, message });
|
|
55
|
+
};
|
|
56
|
+
const sources = slotSources(pattern, mirrored, slide.items);
|
|
57
|
+
const measured = new Map();
|
|
58
|
+
for (const slot of effectiveSlots(pattern, slide.items)) {
|
|
59
|
+
if (slot.kind !== 'text')
|
|
60
|
+
continue;
|
|
61
|
+
const source = sources.get(slot.name) ?? slot.name;
|
|
62
|
+
const resolved = resolveSlot(slot, { ...slide, slots: slide.slots ?? {} }, deck, layout, source);
|
|
63
|
+
if ('error' in resolved || resolved.action.type !== 'text')
|
|
64
|
+
continue;
|
|
65
|
+
const { paragraphs } = resolved.action;
|
|
66
|
+
const fit = measure.fit(pattern, slot, paragraphs, fitOptions(manifest, deck, slide));
|
|
67
|
+
if (!fit)
|
|
68
|
+
continue;
|
|
69
|
+
const entry = { source, slot, fit, chars: paragraphs.reduce((sum, paragraph) => sum + paragraph.length, 0), paragraphs: paragraphs.length };
|
|
70
|
+
measured.set(source, entry);
|
|
71
|
+
const over = overflowMessage(fit);
|
|
72
|
+
if (over) {
|
|
73
|
+
report('overflow', source, over);
|
|
74
|
+
continue; // the other checks are about text that fits
|
|
75
|
+
}
|
|
76
|
+
// A heading whose last line holds one word. The text that would end one line sooner is the
|
|
77
|
+
// text without that word. An address on a line of its own is meant to stand there.
|
|
78
|
+
const last = fit.paragraphs[0]?.at(-1)?.trim() ?? '';
|
|
79
|
+
const lastWidth = fit.widths[0]?.at(-1) ?? 0;
|
|
80
|
+
const widest = Math.max(...(fit.widths[0] ?? [0]));
|
|
81
|
+
const lone = last !== '' && !/\s/.test(last) && !/[@/]|\.\p{L}/u.test(last);
|
|
82
|
+
if (paragraphs.length === 1 && fit.size >= headingSize && fit.lines >= 2 && lone && lastWidth <= widest * 0.4) {
|
|
83
|
+
const sooner = entry.chars - last.length - 1;
|
|
84
|
+
report('orphan', source, `the last of its ${lines(fit.lines)} holds one word, ${quote(last)}. Text of about ${sooner} characters ends a line sooner; a few words more fill the line.`);
|
|
85
|
+
}
|
|
86
|
+
// A box the template fills with several lines, holding a fraction of that. Where the
|
|
87
|
+
// manifest moved or resized the box there is no text of the template's to compare with,
|
|
88
|
+
// and the box is taken to be meant half full. A deck field is the app's text, not the model's.
|
|
89
|
+
const designed = fit.sampleLines > 0 ? fit.sampleLines : Math.ceil(fit.capacity / 2);
|
|
90
|
+
if (!slot.deckField && designed >= 3 && fit.lines <= Math.max(1, Math.floor(designed * emptyBelow))) {
|
|
91
|
+
const wanted = Math.round((entry.chars * designed) / fit.lines);
|
|
92
|
+
const against = fit.sampleLines > 0 ? `where the template's own text takes ${fit.sampleLines}` : `in a box that holds ${fit.capacity}`;
|
|
93
|
+
report('empty', source, `text takes ${lines(fit.lines)} ${against}, so its box will look empty. Text of about ${wanted} characters fills it as designed.`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// Cards of one row: a card with a fraction of its fullest neighbour's text.
|
|
97
|
+
for (const names of rowGroups(pattern, slide.items)) {
|
|
98
|
+
const row = names.map((name) => measured.get(sources.get(name) ?? name)).filter((entry) => entry !== undefined && entry.fit.fits);
|
|
99
|
+
const fullest = row.reduce((most, entry) => (!most || entry.fit.lines > most.fit.lines ? entry : most), undefined);
|
|
100
|
+
if (!fullest || fullest.fit.lines < 3)
|
|
101
|
+
continue;
|
|
102
|
+
for (const entry of row) {
|
|
103
|
+
if (entry === fullest || entry.fit.lines > Math.max(1, Math.floor(fullest.fit.lines * emptyBelow)))
|
|
104
|
+
continue;
|
|
105
|
+
const wanted = Math.round((fullest.chars * 2) / 3);
|
|
106
|
+
report('uneven', entry.source, `text takes ${lines(entry.fit.lines)} where "${fullest.source}" beside it takes ${fullest.fit.lines}, so the row will look uneven. Text of about ${wanted} characters or more evens it out.`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
return issues;
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=design.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"design.js","sourceRoot":"","sources":["../../src/deck/design.ts"],"names":[],"mappings":"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"}
|
package/dist/deck/validate.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { SlotDef, TemplateManifest } from '../template/manifest.ts';
|
|
2
|
+
import type { FitOptions, TextFit, TextMeasurer } from '../text/measure.ts';
|
|
2
3
|
import type { ChartValue, DeckSpec, ImageRef, SlideSpec, TableValue } from './spec.ts';
|
|
3
4
|
export type LayoutMode = 'strict' | 'adaptive';
|
|
4
5
|
export interface Issue {
|
|
@@ -34,7 +35,24 @@ export interface ValidateOptions {
|
|
|
34
35
|
layout?: LayoutMode;
|
|
35
36
|
/** Ids of the assets that will be available at render time. When given, image references are checked. */
|
|
36
37
|
assets?: Iterable<string>;
|
|
38
|
+
/**
|
|
39
|
+
* Measures text with the template's fonts (see `textMeasurer`). With it, text that does not fit
|
|
40
|
+
* is reported by the lines it runs over, in place of the character count. A slot it cannot
|
|
41
|
+
* measure keeps the character check.
|
|
42
|
+
*/
|
|
43
|
+
measure?: TextMeasurer;
|
|
37
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* How the text of a slide is measured: at the deck's text size, shrinkable as far as the manifest
|
|
47
|
+
* allows, in a row of as many items as the slide has. Validation, the renderer and the design
|
|
48
|
+
* checks all measure with these, so they cannot disagree.
|
|
49
|
+
*/
|
|
50
|
+
export declare function fitOptions(manifest: TemplateManifest, deck: Pick<DeckSpec, 'textScale'>, slide: Pick<SlideSpec, 'items'>): FitOptions;
|
|
51
|
+
/**
|
|
52
|
+
* The warning for a text that does not fit its slot, as measured. `undefined` when it fits,
|
|
53
|
+
* which includes fitting once it is set smaller within the manifest's `shrinkText`.
|
|
54
|
+
*/
|
|
55
|
+
export declare function overflowMessage(fit: TextFit): string | undefined;
|
|
38
56
|
/**
|
|
39
57
|
* Decides what happens to a slot, or reports why it cannot be filled.
|
|
40
58
|
* Shared by validation and rendering so they can never disagree.
|
package/dist/deck/validate.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { effectiveSlots, itemRange, slotSources, textBudget } from '../template/manifest.js';
|
|
1
|
+
import { bodyTextScale, effectiveSlots, itemRange, slotSources, tableAtScale, textBudget } from '../template/manifest.js';
|
|
2
2
|
import { isChartValue, isImageRef, isTableValue, toParagraphs } from './spec.js';
|
|
3
3
|
export class DeckValidationError extends Error {
|
|
4
4
|
issues;
|
|
@@ -10,6 +10,34 @@ export class DeckValidationError extends Error {
|
|
|
10
10
|
this.issues = issues;
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* How the text of a slide is measured: at the deck's text size, shrinkable as far as the manifest
|
|
15
|
+
* allows, in a row of as many items as the slide has. Validation, the renderer and the design
|
|
16
|
+
* checks all measure with these, so they cannot disagree.
|
|
17
|
+
*/
|
|
18
|
+
export function fitOptions(manifest, deck, slide) {
|
|
19
|
+
const options = { textScale: bodyTextScale(manifest, deck.textScale) };
|
|
20
|
+
if (manifest.shrinkText)
|
|
21
|
+
options.shrink = manifest.shrinkText;
|
|
22
|
+
if (slide.items !== undefined)
|
|
23
|
+
options.items = slide.items;
|
|
24
|
+
return options;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The warning for a text that does not fit its slot, as measured. `undefined` when it fits,
|
|
28
|
+
* which includes fitting once it is set smaller within the manifest's `shrinkText`.
|
|
29
|
+
*/
|
|
30
|
+
export function overflowMessage(fit) {
|
|
31
|
+
if (fit.fits)
|
|
32
|
+
return undefined;
|
|
33
|
+
const about = fit.approximate ? 'about ' : '';
|
|
34
|
+
const size = `${fit.scale < 1 ? 'even at ' : 'at '}${fit.size} pt`;
|
|
35
|
+
const hint = `Text of about ${fit.fitsChars} characters fits.`;
|
|
36
|
+
if (fit.overflow === 0) {
|
|
37
|
+
return `text is ${about}${Math.round((fit.widthRatio - 1) * 100)}% wider than its box ${size}, and the box does not wrap. ${hint}`;
|
|
38
|
+
}
|
|
39
|
+
return `text takes ${about}${fit.lines} lines ${size}; the box holds ${fit.capacity} (${fit.overflow} ${fit.overflow === 1 ? 'line' : 'lines'} too many). ${hint}`;
|
|
40
|
+
}
|
|
13
41
|
/**
|
|
14
42
|
* Decides what happens to a slot, or reports why it cannot be filled.
|
|
15
43
|
* Shared by validation and rendering so they can never disagree.
|
|
@@ -139,10 +167,18 @@ export function validateDeck(manifest, deck, options = {}) {
|
|
|
139
167
|
}
|
|
140
168
|
const action = resolved.action;
|
|
141
169
|
if (action.type === 'text' && slot.kind === 'text') {
|
|
142
|
-
// Larger deck
|
|
143
|
-
const
|
|
170
|
+
// Larger text, asked for by the template or the deck, leaves less room in the same box.
|
|
171
|
+
const scale = bodyTextScale(manifest, deck.textScale);
|
|
172
|
+
const budget = textBudget(slot, scale);
|
|
144
173
|
const chars = action.paragraphs.reduce((sum, paragraph) => sum + paragraph.length, 0);
|
|
145
|
-
|
|
174
|
+
// With fonts the text is measured as it will be set, and the character budget steps aside.
|
|
175
|
+
const fit = options.measure?.fit(pattern, slot, action.paragraphs, fitOptions(manifest, deck, slide));
|
|
176
|
+
if (fit) {
|
|
177
|
+
const message = overflowMessage(fit);
|
|
178
|
+
if (message)
|
|
179
|
+
issues.push({ severity: 'warning', slide: number, slot: source, message });
|
|
180
|
+
}
|
|
181
|
+
else if (budget.maxChars !== undefined && chars > budget.maxChars) {
|
|
146
182
|
issues.push({
|
|
147
183
|
severity: 'warning',
|
|
148
184
|
slide: number,
|
|
@@ -167,8 +203,10 @@ export function validateDeck(manifest, deck, options = {}) {
|
|
|
167
203
|
if (slot.maxRows !== undefined && rows.length > slot.maxRows)
|
|
168
204
|
warn(`the table has ${rows.length} rows; the slot fits ${slot.maxRows}`);
|
|
169
205
|
const longest = Math.max(0, ...[header, ...rows].flat().map((cell) => cell.length));
|
|
170
|
-
|
|
171
|
-
|
|
206
|
+
// Enlarged table text leaves less room in a cell.
|
|
207
|
+
const cellChars = tableAtScale(slot, bodyTextScale(manifest, deck.textScale)).maxCellChars;
|
|
208
|
+
if (cellChars !== undefined && longest > cellChars)
|
|
209
|
+
warn(`a cell is ${longest} characters; cells fit about ${cellChars}`);
|
|
172
210
|
}
|
|
173
211
|
if (action.type === 'chart' && slot.kind === 'chart') {
|
|
174
212
|
const { categories, series } = action.chart;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/deck/validate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/deck/validate.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -12,8 +12,9 @@ export { resolveAssets } from './plan/assets.ts';
|
|
|
12
12
|
export type { ResolveOptions } from './plan/assets.ts';
|
|
13
13
|
export { extractAssets } from './render/extract.ts';
|
|
14
14
|
export type { AssetDef, IconDef, ImageDensity } from './plan/catalog.ts';
|
|
15
|
+
export { isPlainText } from './plan/catalog.ts';
|
|
15
16
|
export { loadTemplate, renderDeck } from './render/render.ts';
|
|
16
|
-
export type { RenderOptions, RenderResult, Template } from './render/render.ts';
|
|
17
|
+
export type { RenderOptions, RenderResult, Template, TemplateOptions } from './render/render.ts';
|
|
17
18
|
export type { ImageProvider, ImageRequest, JsonRequest, JsonSchema, LlmProvider } from './llm/provider.ts';
|
|
18
19
|
export { GEMINI_DEVELOPER_ENDPOINT, GeminiError, gemini, geminiImages, vertexEndpoint } from './llm/gemini.ts';
|
|
19
20
|
export type { GeminiImageOptions, GeminiOptions } from './llm/gemini.ts';
|
|
@@ -21,6 +22,8 @@ export { DeckValidationError, validateDeck } from './deck/validate.ts';
|
|
|
21
22
|
export type { Issue, LayoutMode, ValidateOptions } from './deck/validate.ts';
|
|
22
23
|
export type { ChartType, ChartValue, DeckSpec, ImageRef, SlideSpec, SlotValue, TableValue } from './deck/spec.ts';
|
|
23
24
|
export { isChartValue, isImageRef, isTableValue } from './deck/spec.ts';
|
|
25
|
+
export { slideAlternatives } from './deck/alternatives.ts';
|
|
26
|
+
export type { AlternativesOptions, SlideAlternative } from './deck/alternatives.ts';
|
|
24
27
|
export { draftManifest } from './template/draft.ts';
|
|
25
28
|
export type { DraftOptions, DraftResult, SlidePicture } from './template/draft.ts';
|
|
26
29
|
export { checkManifest } from './template/check.ts';
|
|
@@ -29,6 +32,8 @@ export { sampleDeck } from './template/sample.ts';
|
|
|
29
32
|
export type { SampleOptions } from './template/sample.ts';
|
|
30
33
|
export { changeManifest, describeSlot } from './template/change.ts';
|
|
31
34
|
export type { ChangeResult, ManifestChange, SlotPatch } from './template/change.ts';
|
|
35
|
+
export { VARIANTS, patternVariants } from './template/derive.ts';
|
|
36
|
+
export type { PatternVariant, VariantOption } from './template/derive.ts';
|
|
32
37
|
export { describeManifest, editManifest } from './template/instruct.ts';
|
|
33
38
|
export type { ManifestEditOptions, ManifestEditResult } from './template/instruct.ts';
|
|
34
39
|
export { studioView } from './template/view.ts';
|
|
@@ -39,4 +44,21 @@ export { inspectTemplate } from './template/inspect.ts';
|
|
|
39
44
|
export type { Box, ShapeInfo, ShapeKind, SlideInfo, TemplateInfo } from './template/inspect.ts';
|
|
40
45
|
export type { AlignPolicy, ChartSlotDef, Direction, EmptyPolicy, ImageKind, ImageSlotDef, PatternDef, RepeatDef, SlideBox, SlotDef, TableSlotDef, TableTextStyle, TemplateManifest, TextSize, TextSlotDef, } from './template/manifest.ts';
|
|
41
46
|
export { TEXT_SIZES } from './template/manifest.ts';
|
|
47
|
+
export { checkDesign } from './deck/design.ts';
|
|
48
|
+
export type { DesignIssue, DesignKind, DesignOptions } from './deck/design.ts';
|
|
49
|
+
export { designReview, visionReview } from './plan/review.ts';
|
|
50
|
+
export type { DeckReview, VisionReviewOptions } from './plan/review.ts';
|
|
51
|
+
export { previewExtension } from './preview/provider.ts';
|
|
52
|
+
export type { PreviewProvider, PreviewRequest, SlidePreview } from './preview/provider.ts';
|
|
53
|
+
export { pagusPreviews } from './preview/pagus.ts';
|
|
54
|
+
export type { PagusCore, PagusOptions, PagusRenderer } from './preview/pagus.ts';
|
|
55
|
+
export { patternPreviews, previewDeck } from './preview/patterns.ts';
|
|
56
|
+
export type { PreviewDeckOptions } from './preview/patterns.ts';
|
|
57
|
+
export { fontkitMetrics } from './text/fontkit.ts';
|
|
58
|
+
export type { FontFiles, FontkitModule } from './text/fontkit.ts';
|
|
59
|
+
export type { FontFace, FontMetrics, FontStyle } from './text/fonts.ts';
|
|
60
|
+
export { templateFonts, textMeasurer } from './text/measure.ts';
|
|
61
|
+
export type { FitOptions, ShrinkLimit, TemplateFont, TextFit, TextMeasurer } from './text/measure.ts';
|
|
62
|
+
export { measuredBudgets } from './template/budgets.ts';
|
|
63
|
+
export type { BudgetOptions, MeasuredBudget } from './template/budgets.ts';
|
|
42
64
|
export { PptxPackage } from './pptx/package.ts';
|
package/dist/index.js
CHANGED
|
@@ -8,20 +8,34 @@ export { PlanError, directionOf, editPlan, planDeck, planOutline, writeDeck } fr
|
|
|
8
8
|
export { planEdit } from './plan/edit.js';
|
|
9
9
|
export { resolveAssets } from './plan/assets.js';
|
|
10
10
|
export { extractAssets } from './render/extract.js';
|
|
11
|
+
export { isPlainText } from './plan/catalog.js';
|
|
11
12
|
export { loadTemplate, renderDeck } from './render/render.js';
|
|
12
13
|
export { GEMINI_DEVELOPER_ENDPOINT, GeminiError, gemini, geminiImages, vertexEndpoint } from './llm/gemini.js';
|
|
13
14
|
// Decks.
|
|
14
15
|
export { DeckValidationError, validateDeck } from './deck/validate.js';
|
|
15
16
|
export { isChartValue, isImageRef, isTableValue } from './deck/spec.js';
|
|
17
|
+
export { slideAlternatives } from './deck/alternatives.js';
|
|
16
18
|
// Templates.
|
|
17
19
|
export { draftManifest } from './template/draft.js';
|
|
18
20
|
export { checkManifest } from './template/check.js';
|
|
19
21
|
export { sampleDeck } from './template/sample.js';
|
|
20
22
|
export { changeManifest, describeSlot } from './template/change.js';
|
|
23
|
+
export { VARIANTS, patternVariants } from './template/derive.js';
|
|
21
24
|
export { describeManifest, editManifest } from './template/instruct.js';
|
|
22
25
|
export { studioView } from './template/view.js';
|
|
23
26
|
export { ROLES } from './template/measure.js';
|
|
24
27
|
export { inspectTemplate } from './template/inspect.js';
|
|
25
28
|
export { TEXT_SIZES } from './template/manifest.js';
|
|
29
|
+
// Design checks, and a second look at a draft.
|
|
30
|
+
export { checkDesign } from './deck/design.js';
|
|
31
|
+
export { designReview, visionReview } from './plan/review.js';
|
|
32
|
+
// Pictures of slides.
|
|
33
|
+
export { previewExtension } from './preview/provider.js';
|
|
34
|
+
export { pagusPreviews } from './preview/pagus.js';
|
|
35
|
+
export { patternPreviews, previewDeck } from './preview/patterns.js';
|
|
36
|
+
// Measuring text with real fonts.
|
|
37
|
+
export { fontkitMetrics } from './text/fontkit.js';
|
|
38
|
+
export { templateFonts, textMeasurer } from './text/measure.js';
|
|
39
|
+
export { measuredBudgets } from './template/budgets.js';
|
|
26
40
|
export { PptxPackage } from './pptx/package.js';
|
|
27
41
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGvD,0EAA0E;AAC1E,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEtE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGzC,kDAAkD;AAClD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEpG,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAK9D,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAG/G,SAAS;AACT,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGvD,0EAA0E;AAC1E,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEtE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGzC,kDAAkD;AAClD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEpG,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAK9D,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAG/G,SAAS;AACT,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAG3D,aAAa;AACb,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEjE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAExE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE9C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAmBxD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,+CAA+C;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAG9D,sBAAsB;AACtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGrE,kCAAkC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/llm/gemini.d.ts
CHANGED
|
@@ -18,6 +18,10 @@ interface GeminiConnection {
|
|
|
18
18
|
}
|
|
19
19
|
export interface GeminiOptions extends GeminiConnection {
|
|
20
20
|
thinkingLevel?: 'minimal' | 'low' | 'medium' | 'high';
|
|
21
|
+
/**
|
|
22
|
+
* Output limit of a request in tokens, reasoning included. By default it is the caller's own
|
|
23
|
+
* estimate of the answer plus 8192 for reasoning, or 24576 when the caller gives no estimate.
|
|
24
|
+
*/
|
|
21
25
|
maxOutputTokens?: number;
|
|
22
26
|
}
|
|
23
27
|
export interface GeminiImageOptions extends GeminiConnection {
|
package/dist/llm/gemini.js
CHANGED
|
@@ -4,6 +4,10 @@ export function vertexEndpoint(project, location = 'global') {
|
|
|
4
4
|
const host = location === 'global' ? 'aiplatform.googleapis.com' : `${location}-aiplatform.googleapis.com`;
|
|
5
5
|
return `https://${host}/v1beta1/projects/${project}/locations/${location}/interactions`;
|
|
6
6
|
}
|
|
7
|
+
/** Room for an answer when the caller does not say how large it may be. */
|
|
8
|
+
const DEFAULT_ANSWER_TOKENS = 16_384;
|
|
9
|
+
/** Room for reasoning, which Gemini counts against the same limit as the answer. */
|
|
10
|
+
const REASONING_TOKENS = 8_192;
|
|
7
11
|
export class GeminiError extends Error {
|
|
8
12
|
status;
|
|
9
13
|
constructor(message, status) {
|
|
@@ -12,7 +16,7 @@ export class GeminiError extends Error {
|
|
|
12
16
|
this.status = status;
|
|
13
17
|
}
|
|
14
18
|
}
|
|
15
|
-
async function createInteraction(connection, body, signal) {
|
|
19
|
+
async function createInteraction(connection, body, signal, acceptCutOff = false) {
|
|
16
20
|
const extra = typeof connection.headers === 'function' ? await connection.headers() : connection.headers;
|
|
17
21
|
const headers = { 'Content-Type': 'application/json', ...extra };
|
|
18
22
|
if (connection.apiKey)
|
|
@@ -47,12 +51,24 @@ async function createInteraction(connection, body, signal) {
|
|
|
47
51
|
throw new GeminiError(`Gemini request failed (${response.status}): ${message}`, response.status);
|
|
48
52
|
}
|
|
49
53
|
const interaction = (parsed ?? {});
|
|
54
|
+
// An answer cut off at the output limit is for the caller to deal with, when it says it can.
|
|
55
|
+
if (interaction.status === 'incomplete' && acceptCutOff)
|
|
56
|
+
return interaction;
|
|
50
57
|
if (interaction.status !== 'completed') {
|
|
51
58
|
const reason = interaction.errors?.map((error) => error.message).filter(Boolean).join('; ');
|
|
52
59
|
throw new GeminiError(`Gemini interaction ended with status "${interaction.status ?? 'unknown'}"${reason ? `: ${reason}` : ''}`);
|
|
53
60
|
}
|
|
54
61
|
return interaction;
|
|
55
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* Failures that the same request usually does not repeat: a server error, or the service's
|
|
65
|
+
* recitation filter tripping on an ordinary answer. Bad keys, quotas and bad requests are not among them.
|
|
66
|
+
*/
|
|
67
|
+
function passesByItself(error) {
|
|
68
|
+
if (!(error instanceof GeminiError))
|
|
69
|
+
return false;
|
|
70
|
+
return (error.status !== undefined && error.status >= 500 && error.status <= 504) || /recitation/i.test(error.message);
|
|
71
|
+
}
|
|
56
72
|
function outputBlocks(interaction) {
|
|
57
73
|
return (interaction.steps ?? []).filter((step) => step.type === 'model_output').flatMap((step) => step.content ?? []);
|
|
58
74
|
}
|
|
@@ -60,11 +76,15 @@ function outputBlocks(interaction) {
|
|
|
60
76
|
export function gemini(options) {
|
|
61
77
|
return {
|
|
62
78
|
async generateJson(request) {
|
|
63
|
-
|
|
79
|
+
// Every request has an output limit. Now and then a model runs away inside one text field and
|
|
80
|
+
// writes until it is stopped; without a limit that takes minutes and tens of thousands of tokens.
|
|
81
|
+
const limit = options.maxOutputTokens ?? Math.ceil(request.maxOutputTokens ?? DEFAULT_ANSWER_TOKENS) + REASONING_TOKENS;
|
|
82
|
+
const generationConfig = { max_output_tokens: limit };
|
|
83
|
+
// A level set on the adapter is the caller's decision; otherwise a request that needs little reasoning gets little.
|
|
64
84
|
if (options.thinkingLevel)
|
|
65
85
|
generationConfig.thinking_level = options.thinkingLevel;
|
|
66
|
-
if (
|
|
67
|
-
generationConfig.
|
|
86
|
+
else if (request.effort === 'low')
|
|
87
|
+
generationConfig.thinking_level = 'low';
|
|
68
88
|
// With pictures, the input becomes one user step holding the text and each picture.
|
|
69
89
|
const input = request.images?.length
|
|
70
90
|
? [
|
|
@@ -85,9 +105,25 @@ export function gemini(options) {
|
|
|
85
105
|
// One-shot calls: nothing to chain to, so nothing needs to be kept server-side.
|
|
86
106
|
store: false,
|
|
87
107
|
};
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
108
|
+
body.generation_config = generationConfig;
|
|
109
|
+
const send = () => createInteraction(options, body, request.signal, true);
|
|
110
|
+
let interaction;
|
|
111
|
+
try {
|
|
112
|
+
interaction = await send();
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
// A failure that comes and goes by chance is worth one more try; any other is the caller's to see.
|
|
116
|
+
if (!passesByItself(error))
|
|
117
|
+
throw error;
|
|
118
|
+
interaction = await send();
|
|
119
|
+
}
|
|
120
|
+
if (interaction.status === 'incomplete') {
|
|
121
|
+
// Running away is a matter of chance too, so the same request is sent once more.
|
|
122
|
+
interaction = await send();
|
|
123
|
+
if (interaction.status === 'incomplete') {
|
|
124
|
+
throw new GeminiError(`Gemini's answer was cut off at the limit of ${limit} tokens, twice. The model is probably running away inside a text field; try again, or set thinkingLevel to "low"`);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
91
127
|
const text = outputBlocks(interaction)
|
|
92
128
|
.filter((block) => block.type === 'text')
|
|
93
129
|
.map((block) => block.text ?? '')
|
package/dist/llm/gemini.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/llm/gemini.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,yBAAyB,GAAG,2DAA2D,CAAC;AAErG,qGAAqG;AACrG,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,QAAQ,GAAG,QAAQ;IACjE,MAAM,IAAI,GAAG,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,GAAG,QAAQ,4BAA4B,CAAC;IAC3G,OAAO,WAAW,IAAI,qBAAqB,OAAO,cAAc,QAAQ,eAAe,CAAC;AAC1F,CAAC;
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/llm/gemini.ts"],"names":[],"mappings":"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"}
|
package/dist/llm/provider.d.ts
CHANGED
|
@@ -8,6 +8,18 @@ export interface JsonRequest {
|
|
|
8
8
|
prompt: string;
|
|
9
9
|
/** Schema the answer must follow. Providers without schema support may treat it as guidance. */
|
|
10
10
|
schema: JsonSchema;
|
|
11
|
+
/**
|
|
12
|
+
* A ceiling on the size of the answer in tokens, when the caller can estimate one. It does not
|
|
13
|
+
* count tokens a model spends reasoning. A provider should pass it on as its output limit: a
|
|
14
|
+
* model sometimes runs away inside a text field, and a limit ends that in seconds.
|
|
15
|
+
*/
|
|
16
|
+
maxOutputTokens?: number;
|
|
17
|
+
/**
|
|
18
|
+
* `low` when the answer is short and structural, such as choosing a layout for each slide. A
|
|
19
|
+
* provider whose model has a reasoning setting should use a light one for these: it is several
|
|
20
|
+
* times faster, and long reasoning before a short answer is where models were seen to run away.
|
|
21
|
+
*/
|
|
22
|
+
effort?: 'low';
|
|
11
23
|
/** Pictures to look at alongside the prompt, e.g. a rendered slide. A provider that cannot see may ignore them. */
|
|
12
24
|
images?: Array<{
|
|
13
25
|
mimeType: string;
|
package/dist/node.d.ts
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
1
|
import type { BlobStore } from './store.ts';
|
|
2
|
+
import type { FontFiles, FontkitModule } from './text/fontkit.ts';
|
|
3
|
+
/**
|
|
4
|
+
* Finds the font files of the given typefaces in a folder, such as the system's font folder, by
|
|
5
|
+
* the family name each file states. The result goes to `fontkitMetrics`. A typeface that has no
|
|
6
|
+
* file in the folder is left out; every weight and slant found of the others is included.
|
|
7
|
+
*/
|
|
8
|
+
export declare function fontFiles(fontkit: FontkitModule, directory: string, typefaces: Iterable<string>): FontFiles;
|
|
2
9
|
/** A {@link BlobStore} backed by a folder, e.g. a mounted volume. Keys become file paths under it. */
|
|
3
10
|
export declare function directoryStore(directory: string): BlobStore;
|