@pinepaper.studio/mcp-server 1.6.18 → 1.6.20
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.de.md +1 -1
- package/README.es.md +1 -1
- package/README.fr.md +1 -1
- package/README.hi.md +1 -1
- package/README.ja.md +1 -1
- package/README.ko.md +1 -1
- package/README.md +179 -10
- package/README.pt-BR.md +1 -1
- package/README.zh-CN.md +1 -1
- package/dist/agent/export-manager.js +2 -2
- package/dist/agent/session-manager.d.ts +8 -0
- package/dist/agent/session-manager.d.ts.map +1 -1
- package/dist/agent/session-manager.js +17 -2
- package/dist/agent/session-manager.js.map +1 -1
- package/dist/assets/asset-manager.d.ts +28 -1
- package/dist/assets/asset-manager.d.ts.map +1 -1
- package/dist/assets/asset-manager.js +65 -25
- package/dist/assets/asset-manager.js.map +1 -1
- package/dist/assets/index.d.ts +1 -3
- package/dist/assets/index.d.ts.map +1 -1
- package/dist/assets/index.js +1 -3
- package/dist/assets/index.js.map +1 -1
- package/dist/assets/repositories/iconify.js +1 -1
- package/dist/assets/repositories/iconify.js.map +1 -1
- package/dist/assets/repositories/openclipart.js +1 -1
- package/dist/assets/repositories/openclipart.js.map +1 -1
- package/dist/assets/repositories/svgrepo.js +2 -2
- package/dist/assets/repositories/svgrepo.js.map +1 -1
- package/dist/assets/types.d.ts +2 -2
- package/dist/assets/types.d.ts.map +1 -1
- package/dist/browser/puppeteer-controller.d.ts +25 -0
- package/dist/browser/puppeteer-controller.d.ts.map +1 -1
- package/dist/browser/puppeteer-controller.js +107 -1
- package/dist/browser/puppeteer-controller.js.map +1 -1
- package/dist/build-info.json +3 -3
- package/dist/cli.js +4 -2
- package/dist/cli.js.map +1 -1
- package/dist/design/design-systems.d.ts +2 -0
- package/dist/design/design-systems.d.ts.map +1 -1
- package/dist/design/design-systems.js +2 -0
- package/dist/design/design-systems.js.map +1 -1
- package/dist/execution/canvas-state.d.ts.map +1 -1
- package/dist/execution/canvas-state.js +19 -43
- package/dist/execution/canvas-state.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -11
- package/dist/index.js.map +1 -1
- package/dist/ontology/design-graph.js +2 -2
- package/dist/ontology/design-graph.js.map +1 -1
- package/dist/ontology/upstream-vocabulary.d.ts +2 -2
- package/dist/ontology/upstream-vocabulary.js +2 -2
- package/dist/ontology/validator.js +1 -1
- package/dist/ontology/validator.js.map +1 -1
- package/dist/ontology/vocabulary.d.ts.map +1 -1
- package/dist/ontology/vocabulary.js +8 -0
- package/dist/ontology/vocabulary.js.map +1 -1
- package/dist/tools/choreograph.d.ts +64 -0
- package/dist/tools/choreograph.d.ts.map +1 -0
- package/dist/tools/choreograph.js +336 -0
- package/dist/tools/choreograph.js.map +1 -0
- package/dist/tools/compact-descriptions.d.ts.map +1 -1
- package/dist/tools/compact-descriptions.js +16 -15
- package/dist/tools/compact-descriptions.js.map +1 -1
- package/dist/tools/definitions.d.ts +10 -1
- package/dist/tools/definitions.d.ts.map +1 -1
- package/dist/tools/definitions.js +705 -150
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/effect-check.d.ts +26 -0
- package/dist/tools/effect-check.d.ts.map +1 -0
- package/dist/tools/effect-check.js +129 -0
- package/dist/tools/effect-check.js.map +1 -0
- package/dist/tools/effect-class.d.ts +31 -0
- package/dist/tools/effect-class.d.ts.map +1 -0
- package/dist/tools/effect-class.js +170 -0
- package/dist/tools/effect-class.js.map +1 -0
- package/dist/tools/engine-lists.d.ts +20 -5
- package/dist/tools/engine-lists.d.ts.map +1 -1
- package/dist/tools/engine-lists.js +106 -4
- package/dist/tools/engine-lists.js.map +1 -1
- package/dist/tools/engine-methods.d.ts.map +1 -1
- package/dist/tools/engine-methods.js +22 -1
- package/dist/tools/engine-methods.js.map +1 -1
- package/dist/tools/engine-surface.d.ts +1 -1
- package/dist/tools/engine-surface.d.ts.map +1 -1
- package/dist/tools/engine-surface.js +232 -13
- package/dist/tools/engine-surface.js.map +1 -1
- package/dist/tools/handlers/camera.js +8 -8
- package/dist/tools/handlers/camera.js.map +1 -1
- package/dist/tools/handlers/export.d.ts.map +1 -1
- package/dist/tools/handlers/export.js +84 -5
- package/dist/tools/handlers/export.js.map +1 -1
- package/dist/tools/handlers/font.js +10 -10
- package/dist/tools/handlers/font.js.map +1 -1
- package/dist/tools/handlers/generate.d.ts +12 -12
- package/dist/tools/handlers/maps.d.ts.map +1 -1
- package/dist/tools/handlers/maps.js +23 -3
- package/dist/tools/handlers/maps.js.map +1 -1
- package/dist/tools/handlers.d.ts +44 -0
- package/dist/tools/handlers.d.ts.map +1 -1
- package/dist/tools/handlers.js +413 -39
- package/dist/tools/handlers.js.map +1 -1
- package/dist/tools/index.d.ts +2 -2
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -2
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/minimal-descriptions.d.ts.map +1 -1
- package/dist/tools/minimal-descriptions.js +39 -26
- package/dist/tools/minimal-descriptions.js.map +1 -1
- package/dist/tools/shape-params.d.ts +2 -2
- package/dist/tools/shape-params.d.ts.map +1 -1
- package/dist/tools/shape-params.js +27 -2
- package/dist/tools/shape-params.js.map +1 -1
- package/dist/tools/stick-vocabulary.d.ts +1 -1
- package/dist/tools/stick-vocabulary.js +1 -1
- package/dist/tools/toolkits.d.ts.map +1 -1
- package/dist/tools/toolkits.js +11 -0
- package/dist/tools/toolkits.js.map +1 -1
- package/dist/types/code-generator.d.ts +91 -3
- package/dist/types/code-generator.d.ts.map +1 -1
- package/dist/types/code-generator.js +1544 -276
- package/dist/types/code-generator.js.map +1 -1
- package/dist/types/schemas.d.ts +3203 -907
- package/dist/types/schemas.d.ts.map +1 -1
- package/dist/types/schemas.js +393 -53
- package/dist/types/schemas.js.map +1 -1
- package/manifest.json +46 -2
- package/package.json +4 -3
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NO SILENT SUCCESS, the runtime half. A call classed 'mutates'
|
|
3
|
+
* (effect-class.ts) is fingerprinted before and after; a success that changed
|
|
4
|
+
* nothing measurable is FLAGGED in the result text the model reads, and a
|
|
5
|
+
* result that names an item not on the canvas FAILS.
|
|
6
|
+
*
|
|
7
|
+
* Flag, not fail: an idempotent call (a background set to the colour it
|
|
8
|
+
* already is) rightly changes nothing, and refusing it would be the mirror of
|
|
9
|
+
* the bug this hunts. A named item that does not exist is no such case — it
|
|
10
|
+
* is a contradiction (add_marker's invented 'marker_added').
|
|
11
|
+
*
|
|
12
|
+
* The fingerprint is the AUTHORED scene — items' data, un-animated style and
|
|
13
|
+
* placement, relations, background, canvas, map colours, placed sounds — kept
|
|
14
|
+
* IN THE PAGE between the two probes; only the verdict crosses the wire. It
|
|
15
|
+
* was the engine's full snapshot until the first live sweep: that carries the
|
|
16
|
+
* playhead and live transforms, so during playback every no-op looked changed.
|
|
17
|
+
*/
|
|
18
|
+
export declare const EFFECT_BEFORE_JS = "(function () {\n function __ppFingerprint() {\n // AUTHORED state, not the live frame. The engine's full snapshot carries the\n // playhead and every item's CURRENT transform, so while the timeline plays\n // every call looked changed \u2014 the three misses of the first live sweep\n // (re-applied colour, same canvas size, a repeated highlight). Animated\n // values are left out; what a call can author is kept.\n const o = {};\n const playing = !!app.isPlayingKeyframes;\n const plain = function (k, v) {\n if (typeof k === 'string' && (k.charAt(0) === '_' || /^(selected|hovered|isHovered|cached|lastRender|renderTick|frame|playbackTime|time)$/.test(k))) return undefined;\n if (typeof v === 'function') return undefined;\n if (v && typeof v === 'object' && (v.data instanceof Uint8ClampedArray || (typeof ImageData !== 'undefined' && v instanceof ImageData))) return undefined;\n if (v && typeof v === 'object' && typeof v.toCSS === 'function') return v.toCSS(true);\n return v;\n };\n const S = function (v) { try { return JSON.stringify(v, plain); } catch (e) { return ''; } };\n try {\n const reg = app.itemRegistry && app.itemRegistry.getAll ? app.itemRegistry.getAll() : null;\n if (reg) {\n o.items = reg.map(function (e) {\n const it = e.item || {};\n const d = it.data || {};\n const keys = Array.isArray(d.keyframes) ? d.keyframes : [];\n const animated = {};\n keys.forEach(function (k) { Object.keys((k && k.properties) || {}).forEach(function (p) { animated[p] = 1; }); });\n const moves = keys.length || (d.animationType && d.animationType !== 'none');\n const style = {};\n ['fillColor', 'strokeColor', 'strokeWidth', 'opacity', 'fontSize', 'fontFamily', 'content', 'visible', 'blendMode'].forEach(function (p) {\n if (!animated[p] && !(p === 'fillColor' && animated.color) && it[p] !== undefined) style[p] = plain(p, it[p]);\n });\n if (!moves && it.position) style.at = [Math.round(it.position.x), Math.round(it.position.y)];\n if (!moves && it.scaling) style.scale = [Math.round(it.scaling.x * 1000), Math.round(it.scaling.y * 1000)];\n if (!moves && typeof it.rotation === 'number') style.rot = Math.round(it.rotation * 100);\n return (e.id || e.itemId) + '|' + (e.type || '') + '|' + S(d) + '|' + S(style);\n }).join('\\n');\n }\n } catch (e) {}\n try { const rr = app.relationRegistry; if (rr && rr.exportForSave) o.relations = S(rr.exportForSave()); } catch (e) {}\n try { if (app.listRenderHooks) o.renderHooks = S(app.listRenderHooks()); } catch (e) {}\n // SCENE-LEVEL STATE OUTSIDE ITEMS (sweep v2: add_filter and camera_animate\n // were real changes read as none). The camera's track is a relation on the\n // pseudo-source 'camera', which no registry item carries.\n try { if (app.filterSystem && app.filterSystem.exportForSave) o.filters = S(app.filterSystem.exportForSave()); } catch (e) {}\n try {\n // Camera keyframes live in relationRegistry._cameraAnimation.params (a\n // virtual item, no registry entry), read through getCameraAnimationParams.\n // getRelations('camera') looks in the associations and is always empty\n // for them (sweep v3: camera_animate still read as no change).\n const rr = app.relationRegistry;\n const cam = rr && rr.getCameraAnimationParams ? rr.getCameraAnimationParams() : null;\n const tilt = rr && rr.cameraTilt;\n o.camera = S([cam, tilt && tilt.serialize ? tilt.serialize() : null]);\n } catch (e) {}\n try { const c = app.config || {}; o.background = S([c.currentBackgroundMode, c.currentBackgroundGenerator, c.generatorParams, app.canvasEl && app.canvasEl.style && app.canvasEl.style.backgroundColor]); } catch (e) {}\n try { const cs = app.getCanvasSize && app.getCanvasSize(); if (cs) o.canvas = cs.width + 'x' + cs.height + (cs.unbounded ? ':unbounded' : ''); } catch (e) {}\n try {\n // The view moves on its own while a camera animation plays.\n const v = app.view || (typeof paper !== 'undefined' && paper.view);\n if (!playing && v && v.center) o.view = Math.round(v.zoom * 1000) + '@' + Math.round(v.center.x) + ',' + Math.round(v.center.y);\n } catch (e) {}\n try { if (app.mapSystem && app.mapSystem.getRegionOverrideCount) o.mapColours = app.mapSystem.getRegionOverrideCount() + ':' + S(app.mapSystem._regionColorOverrides ? Array.from(app.mapSystem._regionColorOverrides.entries()) : null); } catch (e) {}\n try { if (app._initialized && app._initialized.has('synthSounds')) o.sounds = S(app.synthSounds.list().map(function (x) { return [x.id, x.startTime, x.duration]; })); } catch (e) {}\n return o;\n}\n window.__ppEffectBefore = __ppFingerprint();\n return { ok: true };\n})();";
|
|
19
|
+
/** After-probe: compares against the before fingerprint; checks the named ids exist. */
|
|
20
|
+
export declare function effectAfterJs(ids: string[]): string;
|
|
21
|
+
/** The item ids a result names as made or touched (itemId, itemIds, ids). */
|
|
22
|
+
export declare function namedItemIds(result: unknown): string[];
|
|
23
|
+
/** Calls whose returned id is legitimately gone afterwards. */
|
|
24
|
+
export declare function idMayBeGone(tool: string, action: string | undefined): boolean;
|
|
25
|
+
export declare const NO_CHANGE_NOTE: (checked: string[]) => string;
|
|
26
|
+
//# sourceMappingURL=effect-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effect-check.d.ts","sourceRoot":"","sources":["../../src/tools/effect-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAoEH,eAAO,MAAM,gBAAgB,qqJAIvB,CAAC;AAEP,wFAAwF;AACxF,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,CAkBnD;AAED,6EAA6E;AAC7E,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,CAQtD;AAED,+DAA+D;AAC/D,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAE7E;AAED,eAAO,MAAM,cAAc,GAAI,SAAS,MAAM,EAAE,WAGuC,CAAC"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NO SILENT SUCCESS, the runtime half. A call classed 'mutates'
|
|
3
|
+
* (effect-class.ts) is fingerprinted before and after; a success that changed
|
|
4
|
+
* nothing measurable is FLAGGED in the result text the model reads, and a
|
|
5
|
+
* result that names an item not on the canvas FAILS.
|
|
6
|
+
*
|
|
7
|
+
* Flag, not fail: an idempotent call (a background set to the colour it
|
|
8
|
+
* already is) rightly changes nothing, and refusing it would be the mirror of
|
|
9
|
+
* the bug this hunts. A named item that does not exist is no such case — it
|
|
10
|
+
* is a contradiction (add_marker's invented 'marker_added').
|
|
11
|
+
*
|
|
12
|
+
* The fingerprint is the AUTHORED scene — items' data, un-animated style and
|
|
13
|
+
* placement, relations, background, canvas, map colours, placed sounds — kept
|
|
14
|
+
* IN THE PAGE between the two probes; only the verdict crosses the wire. It
|
|
15
|
+
* was the engine's full snapshot until the first live sweep: that carries the
|
|
16
|
+
* playhead and live transforms, so during playback every no-op looked changed.
|
|
17
|
+
*/
|
|
18
|
+
/** In-page fingerprint, shared by both probes. */
|
|
19
|
+
const FINGERPRINT_JS = `function __ppFingerprint() {
|
|
20
|
+
// AUTHORED state, not the live frame. The engine's full snapshot carries the
|
|
21
|
+
// playhead and every item's CURRENT transform, so while the timeline plays
|
|
22
|
+
// every call looked changed — the three misses of the first live sweep
|
|
23
|
+
// (re-applied colour, same canvas size, a repeated highlight). Animated
|
|
24
|
+
// values are left out; what a call can author is kept.
|
|
25
|
+
const o = {};
|
|
26
|
+
const playing = !!app.isPlayingKeyframes;
|
|
27
|
+
const plain = function (k, v) {
|
|
28
|
+
if (typeof k === 'string' && (k.charAt(0) === '_' || /^(selected|hovered|isHovered|cached|lastRender|renderTick|frame|playbackTime|time)$/.test(k))) return undefined;
|
|
29
|
+
if (typeof v === 'function') return undefined;
|
|
30
|
+
if (v && typeof v === 'object' && (v.data instanceof Uint8ClampedArray || (typeof ImageData !== 'undefined' && v instanceof ImageData))) return undefined;
|
|
31
|
+
if (v && typeof v === 'object' && typeof v.toCSS === 'function') return v.toCSS(true);
|
|
32
|
+
return v;
|
|
33
|
+
};
|
|
34
|
+
const S = function (v) { try { return JSON.stringify(v, plain); } catch (e) { return ''; } };
|
|
35
|
+
try {
|
|
36
|
+
const reg = app.itemRegistry && app.itemRegistry.getAll ? app.itemRegistry.getAll() : null;
|
|
37
|
+
if (reg) {
|
|
38
|
+
o.items = reg.map(function (e) {
|
|
39
|
+
const it = e.item || {};
|
|
40
|
+
const d = it.data || {};
|
|
41
|
+
const keys = Array.isArray(d.keyframes) ? d.keyframes : [];
|
|
42
|
+
const animated = {};
|
|
43
|
+
keys.forEach(function (k) { Object.keys((k && k.properties) || {}).forEach(function (p) { animated[p] = 1; }); });
|
|
44
|
+
const moves = keys.length || (d.animationType && d.animationType !== 'none');
|
|
45
|
+
const style = {};
|
|
46
|
+
['fillColor', 'strokeColor', 'strokeWidth', 'opacity', 'fontSize', 'fontFamily', 'content', 'visible', 'blendMode'].forEach(function (p) {
|
|
47
|
+
if (!animated[p] && !(p === 'fillColor' && animated.color) && it[p] !== undefined) style[p] = plain(p, it[p]);
|
|
48
|
+
});
|
|
49
|
+
if (!moves && it.position) style.at = [Math.round(it.position.x), Math.round(it.position.y)];
|
|
50
|
+
if (!moves && it.scaling) style.scale = [Math.round(it.scaling.x * 1000), Math.round(it.scaling.y * 1000)];
|
|
51
|
+
if (!moves && typeof it.rotation === 'number') style.rot = Math.round(it.rotation * 100);
|
|
52
|
+
return (e.id || e.itemId) + '|' + (e.type || '') + '|' + S(d) + '|' + S(style);
|
|
53
|
+
}).join('\\n');
|
|
54
|
+
}
|
|
55
|
+
} catch (e) {}
|
|
56
|
+
try { const rr = app.relationRegistry; if (rr && rr.exportForSave) o.relations = S(rr.exportForSave()); } catch (e) {}
|
|
57
|
+
try { if (app.listRenderHooks) o.renderHooks = S(app.listRenderHooks()); } catch (e) {}
|
|
58
|
+
// SCENE-LEVEL STATE OUTSIDE ITEMS (sweep v2: add_filter and camera_animate
|
|
59
|
+
// were real changes read as none). The camera's track is a relation on the
|
|
60
|
+
// pseudo-source 'camera', which no registry item carries.
|
|
61
|
+
try { if (app.filterSystem && app.filterSystem.exportForSave) o.filters = S(app.filterSystem.exportForSave()); } catch (e) {}
|
|
62
|
+
try {
|
|
63
|
+
// Camera keyframes live in relationRegistry._cameraAnimation.params (a
|
|
64
|
+
// virtual item, no registry entry), read through getCameraAnimationParams.
|
|
65
|
+
// getRelations('camera') looks in the associations and is always empty
|
|
66
|
+
// for them (sweep v3: camera_animate still read as no change).
|
|
67
|
+
const rr = app.relationRegistry;
|
|
68
|
+
const cam = rr && rr.getCameraAnimationParams ? rr.getCameraAnimationParams() : null;
|
|
69
|
+
const tilt = rr && rr.cameraTilt;
|
|
70
|
+
o.camera = S([cam, tilt && tilt.serialize ? tilt.serialize() : null]);
|
|
71
|
+
} catch (e) {}
|
|
72
|
+
try { const c = app.config || {}; o.background = S([c.currentBackgroundMode, c.currentBackgroundGenerator, c.generatorParams, app.canvasEl && app.canvasEl.style && app.canvasEl.style.backgroundColor]); } catch (e) {}
|
|
73
|
+
try { const cs = app.getCanvasSize && app.getCanvasSize(); if (cs) o.canvas = cs.width + 'x' + cs.height + (cs.unbounded ? ':unbounded' : ''); } catch (e) {}
|
|
74
|
+
try {
|
|
75
|
+
// The view moves on its own while a camera animation plays.
|
|
76
|
+
const v = app.view || (typeof paper !== 'undefined' && paper.view);
|
|
77
|
+
if (!playing && v && v.center) o.view = Math.round(v.zoom * 1000) + '@' + Math.round(v.center.x) + ',' + Math.round(v.center.y);
|
|
78
|
+
} catch (e) {}
|
|
79
|
+
try { if (app.mapSystem && app.mapSystem.getRegionOverrideCount) o.mapColours = app.mapSystem.getRegionOverrideCount() + ':' + S(app.mapSystem._regionColorOverrides ? Array.from(app.mapSystem._regionColorOverrides.entries()) : null); } catch (e) {}
|
|
80
|
+
try { if (app._initialized && app._initialized.has('synthSounds')) o.sounds = S(app.synthSounds.list().map(function (x) { return [x.id, x.startTime, x.duration]; })); } catch (e) {}
|
|
81
|
+
return o;
|
|
82
|
+
}`;
|
|
83
|
+
export const EFFECT_BEFORE_JS = `(function () {
|
|
84
|
+
${FINGERPRINT_JS}
|
|
85
|
+
window.__ppEffectBefore = __ppFingerprint();
|
|
86
|
+
return { ok: true };
|
|
87
|
+
})();`;
|
|
88
|
+
/** After-probe: compares against the before fingerprint; checks the named ids exist. */
|
|
89
|
+
export function effectAfterJs(ids) {
|
|
90
|
+
return `(function () {
|
|
91
|
+
${FINGERPRINT_JS}
|
|
92
|
+
const a = window.__ppEffectBefore || null;
|
|
93
|
+
const b = __ppFingerprint();
|
|
94
|
+
window.__ppEffectBefore = null;
|
|
95
|
+
const checked = Object.keys(b);
|
|
96
|
+
const changed = a ? checked.filter(function (k) { return a[k] !== b[k]; }) : null;
|
|
97
|
+
const ids = ${JSON.stringify(ids)};
|
|
98
|
+
const missing = ids.filter(function (id) {
|
|
99
|
+
try {
|
|
100
|
+
if (app.getItemById && app.getItemById(id)) return false;
|
|
101
|
+
if (app.itemRegistry && app.itemRegistry.get && app.itemRegistry.get(id)) return false;
|
|
102
|
+
} catch (e) {}
|
|
103
|
+
return true;
|
|
104
|
+
});
|
|
105
|
+
return { ok: !!a, checked: checked, changed: changed, missing: missing };
|
|
106
|
+
})();`;
|
|
107
|
+
}
|
|
108
|
+
/** The item ids a result names as made or touched (itemId, itemIds, ids). */
|
|
109
|
+
export function namedItemIds(result) {
|
|
110
|
+
if (!result || typeof result !== 'object')
|
|
111
|
+
return [];
|
|
112
|
+
const r = result;
|
|
113
|
+
const out = [];
|
|
114
|
+
const add = (v) => { if (typeof v === 'string' && /^item_\d+$/.test(v))
|
|
115
|
+
out.push(v); };
|
|
116
|
+
add(r.itemId);
|
|
117
|
+
for (const k of ['itemIds', 'ids'])
|
|
118
|
+
if (Array.isArray(r[k]))
|
|
119
|
+
r[k].forEach(add);
|
|
120
|
+
return [...new Set(out)].slice(0, 50);
|
|
121
|
+
}
|
|
122
|
+
/** Calls whose returned id is legitimately gone afterwards. */
|
|
123
|
+
export function idMayBeGone(tool, action) {
|
|
124
|
+
return /delete|remove|clear|ungroup|break_apart|unhighlight/.test(`${tool}:${action ?? ''}`);
|
|
125
|
+
}
|
|
126
|
+
export const NO_CHANGE_NOTE = (checked) => `⚠️ NO CHANGE: this call reported success, but nothing it could have changed did (checked: ${checked.join(', ')}). `
|
|
127
|
+
+ 'If you expected a change, it did not happen — check the ids and arguments before building on it. '
|
|
128
|
+
+ '(Re-applying a value an item already has is the one case where this is expected.)';
|
|
129
|
+
//# sourceMappingURL=effect-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effect-check.js","sourceRoot":"","sources":["../../src/tools/effect-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,kDAAkD;AAClD,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+DrB,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,cAAc;;;MAGZ,CAAC;AAEP,wFAAwF;AACxF,MAAM,UAAU,aAAa,CAAC,GAAa;IACzC,OAAO;IACL,cAAc;;;;;;gBAMF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;;;;;;;;;MAS7B,CAAC;AACP,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,YAAY,CAAC,MAAe;IAC1C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACrD,MAAM,CAAC,GAAG,MAAiC,CAAC;IAC5C,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,GAAG,GAAG,CAAC,CAAU,EAAE,EAAE,GAAG,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAAG,CAAC,CAAC,CAAC,CAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9F,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,MAA0B;IAClE,OAAO,qDAAqD,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC;AAC/F,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAiB,EAAE,EAAE,CAClD,6FAA6F,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;MAClH,mGAAmG;MACnG,mFAAmF,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NO SILENT SUCCESS, the classification half (tracker: handler-layer sweep).
|
|
3
|
+
*
|
|
4
|
+
* Every tool, and every action of an action-dispatched tool, is one of:
|
|
5
|
+
* - 'mutates' it exists to change the scene. A success that changed
|
|
6
|
+
* nothing measurable is flagged (the runtime half).
|
|
7
|
+
* - 'read-only' it reads; it must not change the scene.
|
|
8
|
+
* - 'side-effect' its effect is outside the scene: a file, playback, a sound
|
|
9
|
+
* heard now, UI state (selection, rulers, modes), the server.
|
|
10
|
+
* - 'unchecked' it changes state the scene fingerprint cannot see (the 3D
|
|
11
|
+
* world, physics bodies, the font studio, rig internals,
|
|
12
|
+
* registries of definitions), or it only sometimes changes the
|
|
13
|
+
* scene. Named here as a blind spot rather than guessed at,
|
|
14
|
+
* because a false "nothing changed" teaches a model to ignore
|
|
15
|
+
* the flag.
|
|
16
|
+
*
|
|
17
|
+
* The class behind D59, D37, D62 and the audioTracks drop: a handler that
|
|
18
|
+
* reported success for work the engine did not do.
|
|
19
|
+
*/
|
|
20
|
+
export type EffectClass = 'mutates' | 'read-only' | 'side-effect' | 'unchecked';
|
|
21
|
+
/** Tools with no action enum and no readOnlyHint: each is named, so a new one fails the test until it is. */
|
|
22
|
+
export declare const TOOL_CLASS: Readonly<Record<string, EffectClass>>;
|
|
23
|
+
/** Whole action-dispatched tools whose state the fingerprint cannot see. */
|
|
24
|
+
export declare const UNCHECKED_TOOLS: ReadonlySet<string>;
|
|
25
|
+
/** Whole action-dispatched tools that only touch UI or session state. */
|
|
26
|
+
export declare const SIDE_EFFECT_TOOLS: ReadonlySet<string>;
|
|
27
|
+
/** Per-action exceptions to the prefix rules, `tool:action`. */
|
|
28
|
+
export declare const ACTION_CLASS: Readonly<Record<string, EffectClass>>;
|
|
29
|
+
/** The class of one call. `readOnlyHint` comes from the tool's annotations. */
|
|
30
|
+
export declare function effectClass(tool: string, action: string | undefined, readOnlyHint: boolean | undefined): EffectClass;
|
|
31
|
+
//# sourceMappingURL=effect-class.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effect-class.d.ts","sourceRoot":"","sources":["../../src/tools/effect-class.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,aAAa,GAAG,WAAW,CAAC;AAEhF,6GAA6G;AAC7G,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAuE3D,CAAC;AAEH,4EAA4E;AAC5E,eAAO,MAAM,eAAe,EAAE,WAAW,CAAC,MAAM,CAK9C,CAAC;AAEH,yEAAyE;AACzE,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAGhD,CAAC;AAEH,gEAAgE;AAChE,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAsC7D,CAAC;AAKH,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,YAAY,EAAE,OAAO,GAAG,SAAS,GAAG,WAAW,CAapH"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NO SILENT SUCCESS, the classification half (tracker: handler-layer sweep).
|
|
3
|
+
*
|
|
4
|
+
* Every tool, and every action of an action-dispatched tool, is one of:
|
|
5
|
+
* - 'mutates' it exists to change the scene. A success that changed
|
|
6
|
+
* nothing measurable is flagged (the runtime half).
|
|
7
|
+
* - 'read-only' it reads; it must not change the scene.
|
|
8
|
+
* - 'side-effect' its effect is outside the scene: a file, playback, a sound
|
|
9
|
+
* heard now, UI state (selection, rulers, modes), the server.
|
|
10
|
+
* - 'unchecked' it changes state the scene fingerprint cannot see (the 3D
|
|
11
|
+
* world, physics bodies, the font studio, rig internals,
|
|
12
|
+
* registries of definitions), or it only sometimes changes the
|
|
13
|
+
* scene. Named here as a blind spot rather than guessed at,
|
|
14
|
+
* because a false "nothing changed" teaches a model to ignore
|
|
15
|
+
* the flag.
|
|
16
|
+
*
|
|
17
|
+
* The class behind D59, D37, D62 and the audioTracks drop: a handler that
|
|
18
|
+
* reported success for work the engine did not do.
|
|
19
|
+
*/
|
|
20
|
+
/** Tools with no action enum and no readOnlyHint: each is named, so a new one fails the test until it is. */
|
|
21
|
+
export const TOOL_CLASS = Object.freeze({
|
|
22
|
+
pinepaper_set_background_color: 'mutates',
|
|
23
|
+
pinepaper_set_canvas_size: 'mutates',
|
|
24
|
+
pinepaper_clear_canvas: 'mutates',
|
|
25
|
+
pinepaper_refresh_page: 'side-effect',
|
|
26
|
+
pinepaper_create_item: 'mutates',
|
|
27
|
+
pinepaper_modify_item: 'mutates',
|
|
28
|
+
pinepaper_delete_item: 'mutates',
|
|
29
|
+
pinepaper_create_glossy_sphere: 'mutates',
|
|
30
|
+
pinepaper_create_diagonal_stripes: 'mutates',
|
|
31
|
+
pinepaper_import_motion_capture: 'unchecked', // rig internals
|
|
32
|
+
pinepaper_import_svg: 'mutates',
|
|
33
|
+
pinepaper_import_mermaid: 'mutates',
|
|
34
|
+
pinepaper_import_image: 'mutates',
|
|
35
|
+
pinepaper_import_asset: 'mutates',
|
|
36
|
+
pinepaper_batch_create: 'mutates',
|
|
37
|
+
pinepaper_batch_modify: 'mutates',
|
|
38
|
+
pinepaper_create_grid: 'mutates',
|
|
39
|
+
pinepaper_geometry: 'unchecked', // creates an item only when asked
|
|
40
|
+
pinepaper_equation_path: 'mutates',
|
|
41
|
+
pinepaper_beat_cuts: 'unchecked', // splits a clip only when asked
|
|
42
|
+
pinepaper_generate: 'unchecked', // cloud job; places when it finishes
|
|
43
|
+
pinepaper_generate_status: 'unchecked',
|
|
44
|
+
pinepaper_render_batch: 'side-effect', // exports per row
|
|
45
|
+
pinepaper_detect_objects: 'unchecked', // nodes only with asNodes
|
|
46
|
+
pinepaper_extract_object: 'mutates',
|
|
47
|
+
pinepaper_capture_frames: 'side-effect',
|
|
48
|
+
pinepaper_crop_image: 'mutates',
|
|
49
|
+
pinepaper_chroma_key: 'mutates',
|
|
50
|
+
pinepaper_shatter_image: 'mutates',
|
|
51
|
+
pinepaper_import_layered_character: 'mutates',
|
|
52
|
+
pinepaper_character: 'mutates',
|
|
53
|
+
pinepaper_instantiate_ontology: 'mutates',
|
|
54
|
+
pinepaper_add_relation: 'mutates',
|
|
55
|
+
pinepaper_remove_relation: 'mutates',
|
|
56
|
+
pinepaper_register_custom_relation: 'unchecked', // a definition, not the scene
|
|
57
|
+
pinepaper_execute_custom_code: 'unchecked', // may only read; has its own rollback
|
|
58
|
+
pinepaper_animate: 'mutates',
|
|
59
|
+
pinepaper_keyframe_animate: 'mutates',
|
|
60
|
+
pinepaper_apply_animated_mask: 'mutates',
|
|
61
|
+
pinepaper_apply_custom_mask: 'mutates',
|
|
62
|
+
pinepaper_remove_mask: 'mutates',
|
|
63
|
+
pinepaper_camera_animate: 'mutates',
|
|
64
|
+
pinepaper_create_scene: 'mutates',
|
|
65
|
+
pinepaper_apply_template: 'mutates',
|
|
66
|
+
pinepaper_create_diagram_shape: 'mutates',
|
|
67
|
+
pinepaper_connect: 'mutates',
|
|
68
|
+
pinepaper_connect_ports: 'mutates',
|
|
69
|
+
pinepaper_add_ports: 'mutates',
|
|
70
|
+
pinepaper_auto_layout: 'mutates',
|
|
71
|
+
pinepaper_update_connector: 'mutates',
|
|
72
|
+
pinepaper_remove_connector: 'mutates',
|
|
73
|
+
pinepaper_create_letter_collage: 'mutates',
|
|
74
|
+
pinepaper_animate_letter_collage: 'mutates',
|
|
75
|
+
pinepaper_execute_generator: 'mutates',
|
|
76
|
+
pinepaper_apply_effect: 'mutates',
|
|
77
|
+
pinepaper_add_filter: 'mutates',
|
|
78
|
+
pinepaper_styled_scene: 'mutates',
|
|
79
|
+
pinepaper_choreograph: 'mutates',
|
|
80
|
+
pinepaper_morph_sequence: 'mutates',
|
|
81
|
+
pinepaper_place_on_surface: 'mutates',
|
|
82
|
+
pinepaper_import_scene: 'mutates',
|
|
83
|
+
pinepaper_browser_connect: 'side-effect',
|
|
84
|
+
pinepaper_browser_disconnect: 'side-effect',
|
|
85
|
+
pinepaper_agent_start_job: 'side-effect', // clearing an empty canvas changes nothing, rightly
|
|
86
|
+
pinepaper_agent_end_job: 'side-effect',
|
|
87
|
+
pinepaper_agent_reset: 'side-effect',
|
|
88
|
+
pinepaper_agent_batch_execute: 'mutates',
|
|
89
|
+
pinepaper_p5_draw: 'mutates',
|
|
90
|
+
pinepaper_register_item: 'mutates',
|
|
91
|
+
pinepaper_set_toolkit: 'side-effect',
|
|
92
|
+
});
|
|
93
|
+
/** Whole action-dispatched tools whose state the fingerprint cannot see. */
|
|
94
|
+
export const UNCHECKED_TOOLS = new Set([
|
|
95
|
+
'pinepaper_world3d', 'pinepaper_rigging', 'pinepaper_globe', 'pinepaper_physics',
|
|
96
|
+
'pinepaper_font', 'pinepaper_interaction', 'pinepaper_sprite_sheet', 'pinepaper_game',
|
|
97
|
+
'pinepaper_relight', 'pinepaper_shader_graph', 'pinepaper_component', 'pinepaper_comment',
|
|
98
|
+
'pinepaper_template_params', 'pinepaper_design_system', 'pinepaper_motion', 'pinepaper_magic',
|
|
99
|
+
]);
|
|
100
|
+
/** Whole action-dispatched tools that only touch UI or session state. */
|
|
101
|
+
export const SIDE_EFFECT_TOOLS = new Set([
|
|
102
|
+
'pinepaper_selection', 'pinepaper_measurement', 'pinepaper_diagram_mode', 'pinepaper_play_timeline',
|
|
103
|
+
'pinepaper_scene_playback', 'pinepaper_export_store',
|
|
104
|
+
]);
|
|
105
|
+
/** Per-action exceptions to the prefix rules, `tool:action`. */
|
|
106
|
+
export const ACTION_CLASS = Object.freeze({
|
|
107
|
+
'pinepaper_provenance:record': 'unchecked',
|
|
108
|
+
'pinepaper_event:pulse': 'side-effect',
|
|
109
|
+
'pinepaper_lasso:activate': 'side-effect',
|
|
110
|
+
'pinepaper_sound:define_instrument': 'unchecked',
|
|
111
|
+
'pinepaper_sound:define_percussion': 'unchecked',
|
|
112
|
+
'pinepaper_sound:define_sfx': 'unchecked',
|
|
113
|
+
'pinepaper_story:distill': 'read-only',
|
|
114
|
+
'pinepaper_story:plan_book': 'read-only',
|
|
115
|
+
'pinepaper_brand_kit:plan': 'read-only',
|
|
116
|
+
'pinepaper_brand_kit:from_url': 'read-only',
|
|
117
|
+
'pinepaper_brand_kit:clear': 'side-effect', // page state; the canvas keeps its colours
|
|
118
|
+
'pinepaper_audio_beats:analyze': 'read-only',
|
|
119
|
+
'pinepaper_compose:apply': 'mutates',
|
|
120
|
+
'pinepaper_camera:state': 'read-only',
|
|
121
|
+
'pinepaper_camera:fit_view': 'side-effect',
|
|
122
|
+
'pinepaper_camera:stop': 'side-effect',
|
|
123
|
+
'pinepaper_media:upload_video': 'mutates',
|
|
124
|
+
'pinepaper_manage_scenes:save': 'side-effect',
|
|
125
|
+
'pinepaper_manage_scenes:rename': 'side-effect',
|
|
126
|
+
'pinepaper_manage_scenes:duplicate': 'side-effect',
|
|
127
|
+
'pinepaper_manage_scenes:reorder': 'side-effect',
|
|
128
|
+
'pinepaper_manage_scenes:delete': 'side-effect',
|
|
129
|
+
'pinepaper_manage_scenes:import': 'side-effect',
|
|
130
|
+
'pinepaper_history:get_state': 'read-only',
|
|
131
|
+
'pinepaper_artboard:list_presets': 'read-only',
|
|
132
|
+
'pinepaper_image_filter:analyze_palette': 'read-only',
|
|
133
|
+
'pinepaper_map_regions:get_at_point': 'read-only',
|
|
134
|
+
'pinepaper_map_regions:get_highlighted': 'read-only',
|
|
135
|
+
'pinepaper_map_regions:select': 'side-effect',
|
|
136
|
+
'pinepaper_map_regions:deselect': 'side-effect',
|
|
137
|
+
'pinepaper_construction_sequence:clear': 'mutates',
|
|
138
|
+
'pinepaper_original_character:bases': 'read-only',
|
|
139
|
+
'pinepaper_look:grid': 'side-effect', // renders a contact sheet; the scene is left as it was
|
|
140
|
+
'pinepaper_original_character:random': 'read-only', // computes a variant; draws nothing
|
|
141
|
+
'pinepaper_flip:record': 'side-effect', // snapshots the before-state only
|
|
142
|
+
'pinepaper_path:set_locked': 'unchecked', // a lock flag the fingerprint does not read
|
|
143
|
+
'pinepaper_path:unlock_all': 'unchecked',
|
|
144
|
+
});
|
|
145
|
+
const READ_ONLY_ACTION = /^(list|get|describe|query|analyze|validate|check|resolve|catalogue|status|state|info|preview|estimate|lint|coverage|find|choose|node_types|from_text|chord_frequencies|timbre_from_path|lineage|dependents|history|version|hit_test|is_empty|source_info)(_|$)/;
|
|
146
|
+
const SIDE_EFFECT_ACTION = /^(play|stop|pause|resume|seek|export|render|download|show_studio|toggle_loop|jump|set_time_scale|set_progress|bind_scroll|unbind_scroll)(_|$)/;
|
|
147
|
+
/** The class of one call. `readOnlyHint` comes from the tool's annotations. */
|
|
148
|
+
export function effectClass(tool, action, readOnlyHint) {
|
|
149
|
+
if (action !== undefined) {
|
|
150
|
+
const exact = ACTION_CLASS[`${tool}:${action}`];
|
|
151
|
+
if (exact)
|
|
152
|
+
return exact;
|
|
153
|
+
}
|
|
154
|
+
if (readOnlyHint)
|
|
155
|
+
return 'read-only';
|
|
156
|
+
if (TOOL_CLASS[tool])
|
|
157
|
+
return TOOL_CLASS[tool];
|
|
158
|
+
if (UNCHECKED_TOOLS.has(tool))
|
|
159
|
+
return 'unchecked';
|
|
160
|
+
if (SIDE_EFFECT_TOOLS.has(tool))
|
|
161
|
+
return 'side-effect';
|
|
162
|
+
if (action === undefined)
|
|
163
|
+
return 'unchecked';
|
|
164
|
+
if (READ_ONLY_ACTION.test(action))
|
|
165
|
+
return 'read-only';
|
|
166
|
+
if (SIDE_EFFECT_ACTION.test(action))
|
|
167
|
+
return 'side-effect';
|
|
168
|
+
return 'mutates';
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=effect-class.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effect-class.js","sourceRoot":"","sources":["../../src/tools/effect-class.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,17 +4,32 @@
|
|
|
4
4
|
* Name lists the engine owns and the tool surface must offer exactly. See
|
|
5
5
|
* scripts/sync-engine-lists.mjs for why each is generated.
|
|
6
6
|
*
|
|
7
|
-
* Source: FxTool origin/main
|
|
8
|
-
* js/core/KeyframeInterpolator.js sha256:
|
|
7
|
+
* Source: FxTool origin/main c2d922787576249eeb37b1fa8c4cb0cfec943204
|
|
8
|
+
* js/core/KeyframeInterpolator.js sha256: 1134ba0e2ce5d1f5
|
|
9
9
|
* js/world3d/worlds.js sha256: 0e0973f7587c06e1
|
|
10
|
-
* js/core/DesignMedia.js sha256:
|
|
10
|
+
* js/core/DesignMedia.js sha256: ab07f330e4060cb7
|
|
11
|
+
* js/FilterSystem.js sha256: 3cfb0f9e54eb50ab
|
|
12
|
+
* js/core/Provenance.js sha256: 27e4d8becfa382c8
|
|
13
|
+
* js/core/StyledScene.js sha256: ea647c014de59faf
|
|
11
14
|
*/
|
|
12
|
-
/**
|
|
13
|
-
export declare const ENGINE_EASING_NAMES: readonly ["linear", "easeIn", "easeOut", "easeInOut", "easeInCubic", "easeOutCubic", "easeInOutCubic", "bounce", "easeOutBounce", "easeInBounce", "elastic", "easeOutElastic", "easeInElastic", "easeOutBack", "easeInBack", "easeInOutBack", "spring", "springSnappy", "springPlayful", "easeInQuad", "easeOutQuad", "easeInOutQuad", "easeInSine", "easeOutSine", "easeInOutSine", "easeInQuart", "easeOutQuart", "easeInOutQuart", "easeInQuint", "easeOutQuint", "easeInOutQuint", "easeInExpo", "easeOutExpo", "easeInOutExpo", "easeInCirc", "easeOutCirc", "easeInOutCirc"];
|
|
15
|
+
/** 39 names: EASING_NAMES, the keys of the engine's easing table. Keyframes, masks, relations and the camera all resolve through it. */
|
|
16
|
+
export declare const ENGINE_EASING_NAMES: readonly ["linear", "easeIn", "easeOut", "easeInOut", "easeInCubic", "easeOutCubic", "easeInOutCubic", "bounce", "easeOutBounce", "easeInBounce", "elastic", "easeOutElastic", "easeInElastic", "easeOutBack", "easeInBack", "easeInOutBack", "spring", "springSnappy", "springPlayful", "easeInQuad", "easeOutQuad", "easeInOutQuad", "easeInSine", "easeOutSine", "easeInOutSine", "easeInQuart", "easeOutQuart", "easeInOutQuart", "easeInQuint", "easeOutQuint", "easeInOutQuint", "easeInExpo", "easeOutExpo", "easeInOutExpo", "easeInCirc", "easeOutCirc", "easeInOutCirc", "hold", "step"];
|
|
14
17
|
/** 11 paths: WORLD_SCHEMA entries of kind 'color' — the world spec's colour fields. */
|
|
15
18
|
export declare const WORLD3D_COLOR_PATHS: readonly ["env.zenith", "env.horizon", "env.fogColor", "env.sunColor", "env.ambient", "env.lowColor", "env.midColor", "env.highColor", "env.rockColor", "env.propColorA", "env.propColorB"];
|
|
16
19
|
/** 9 media: the keys of DesignMedia MEDIA. */
|
|
17
20
|
export declare const DESIGN_MEDIA: readonly ["vector", "thread", "ink", "watercolor", "hatch", "cutPaper", "charcoal", "oil", "encaustic"];
|
|
18
21
|
/** The engine method that applies each medium that has one (MEDIA[key].apply). The others are refused by the engine, by name. */
|
|
19
22
|
export declare const DESIGN_MEDIA_APPLY: Readonly<Record<string, string>>;
|
|
23
|
+
/** 20 filters: everything FilterSystem.js registers. */
|
|
24
|
+
export declare const FILTER_TYPES: readonly ["grayscale", "sepia", "brightness", "contrast", "saturation", "invert", "blur", "noise", "vignette", "vintage", "colorOverlay", "sharpen", "emboss", "posterize", "hsl", "colorTint", "edgeDetect", "halftoneDots", "halftoneCMYK", "dither"];
|
|
25
|
+
/** Numeric parameter ranges per filter, [min, max], as the engine registers them. */
|
|
26
|
+
export declare const FILTER_PARAM_RANGES: Readonly<Record<string, Readonly<Record<string, readonly [number, number]>>>>;
|
|
27
|
+
/** 5 kinds: LINEAGE_KINDS, what provenance record accepts. */
|
|
28
|
+
export declare const LINEAGE_KINDS: readonly ["derivedFrom", "instanceOf", "placedFrom", "importedFrom", "copyOf"];
|
|
29
|
+
/** 6 styles: STYLES, the looks a styled scene is drawn in. */
|
|
30
|
+
export declare const STYLED_SCENE_STYLES: readonly ["cut", "ink", "watercolor", "dither", "flow", "ascii"];
|
|
31
|
+
/** One line per styled-scene style: the engine's STYLE_INFO. */
|
|
32
|
+
export declare const STYLED_SCENE_STYLE_INFO: Readonly<Record<string, string>>;
|
|
33
|
+
/** One line per filter: the engine's own description and parameter ranges. */
|
|
34
|
+
export declare const FILTER_DOCS: Readonly<Record<string, string>>;
|
|
20
35
|
//# sourceMappingURL=engine-lists.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine-lists.d.ts","sourceRoot":"","sources":["../../src/tools/engine-lists.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"engine-lists.d.ts","sourceRoot":"","sources":["../../src/tools/engine-lists.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,wIAAwI;AACxI,eAAO,MAAM,mBAAmB,okBAwCtB,CAAC;AAEX,uFAAuF;AACvF,eAAO,MAAM,mBAAmB,6LAYtB,CAAC;AAEX,8CAA8C;AAC9C,eAAO,MAAM,YAAY,yGAUf,CAAC;AAEX,iIAAiI;AACjI,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQ9D,CAAC;AAEH,wDAAwD;AACxD,eAAO,MAAM,YAAY,yPAqBf,CAAC;AAEX,qFAAqF;AACrF,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAqB5G,CAAC;AAEH,8DAA8D;AAC9D,eAAO,MAAM,aAAa,gFAMhB,CAAC;AAEX,8DAA8D;AAC9D,eAAO,MAAM,mBAAmB,kEAOtB,CAAC;AAEX,gEAAgE;AAChE,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOnE,CAAC;AAEH,8EAA8E;AAC9E,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAqBvD,CAAC"}
|
|
@@ -4,12 +4,15 @@
|
|
|
4
4
|
* Name lists the engine owns and the tool surface must offer exactly. See
|
|
5
5
|
* scripts/sync-engine-lists.mjs for why each is generated.
|
|
6
6
|
*
|
|
7
|
-
* Source: FxTool origin/main
|
|
8
|
-
* js/core/KeyframeInterpolator.js sha256:
|
|
7
|
+
* Source: FxTool origin/main c2d922787576249eeb37b1fa8c4cb0cfec943204
|
|
8
|
+
* js/core/KeyframeInterpolator.js sha256: 1134ba0e2ce5d1f5
|
|
9
9
|
* js/world3d/worlds.js sha256: 0e0973f7587c06e1
|
|
10
|
-
* js/core/DesignMedia.js sha256:
|
|
10
|
+
* js/core/DesignMedia.js sha256: ab07f330e4060cb7
|
|
11
|
+
* js/FilterSystem.js sha256: 3cfb0f9e54eb50ab
|
|
12
|
+
* js/core/Provenance.js sha256: 27e4d8becfa382c8
|
|
13
|
+
* js/core/StyledScene.js sha256: ea647c014de59faf
|
|
11
14
|
*/
|
|
12
|
-
/**
|
|
15
|
+
/** 39 names: EASING_NAMES, the keys of the engine's easing table. Keyframes, masks, relations and the camera all resolve through it. */
|
|
13
16
|
export const ENGINE_EASING_NAMES = [
|
|
14
17
|
'linear',
|
|
15
18
|
'easeIn',
|
|
@@ -48,6 +51,8 @@ export const ENGINE_EASING_NAMES = [
|
|
|
48
51
|
'easeInCirc',
|
|
49
52
|
'easeOutCirc',
|
|
50
53
|
'easeInOutCirc',
|
|
54
|
+
'hold',
|
|
55
|
+
'step',
|
|
51
56
|
];
|
|
52
57
|
/** 11 paths: WORLD_SCHEMA entries of kind 'color' — the world spec's colour fields. */
|
|
53
58
|
export const WORLD3D_COLOR_PATHS = [
|
|
@@ -78,9 +83,106 @@ export const DESIGN_MEDIA = [
|
|
|
78
83
|
/** The engine method that applies each medium that has one (MEDIA[key].apply). The others are refused by the engine, by name. */
|
|
79
84
|
export const DESIGN_MEDIA_APPLY = Object.freeze({
|
|
80
85
|
thread: 'applyThreadPainting',
|
|
86
|
+
ink: 'applyInkBrush',
|
|
81
87
|
watercolor: 'applyWatercolorWash',
|
|
82
88
|
hatch: 'applyHatching',
|
|
83
89
|
cutPaper: 'applyCutPaper',
|
|
90
|
+
charcoal: 'applyCharcoalBrush',
|
|
84
91
|
oil: 'applyOilWash',
|
|
85
92
|
});
|
|
93
|
+
/** 20 filters: everything FilterSystem.js registers. */
|
|
94
|
+
export const FILTER_TYPES = [
|
|
95
|
+
'grayscale',
|
|
96
|
+
'sepia',
|
|
97
|
+
'brightness',
|
|
98
|
+
'contrast',
|
|
99
|
+
'saturation',
|
|
100
|
+
'invert',
|
|
101
|
+
'blur',
|
|
102
|
+
'noise',
|
|
103
|
+
'vignette',
|
|
104
|
+
'vintage',
|
|
105
|
+
'colorOverlay',
|
|
106
|
+
'sharpen',
|
|
107
|
+
'emboss',
|
|
108
|
+
'posterize',
|
|
109
|
+
'hsl',
|
|
110
|
+
'colorTint',
|
|
111
|
+
'edgeDetect',
|
|
112
|
+
'halftoneDots',
|
|
113
|
+
'halftoneCMYK',
|
|
114
|
+
'dither',
|
|
115
|
+
];
|
|
116
|
+
/** Numeric parameter ranges per filter, [min, max], as the engine registers them. */
|
|
117
|
+
export const FILTER_PARAM_RANGES = Object.freeze({
|
|
118
|
+
grayscale: { intensity: [0, 1] },
|
|
119
|
+
sepia: { intensity: [0, 1] },
|
|
120
|
+
brightness: { value: [-100, 100] },
|
|
121
|
+
contrast: { value: [-100, 100] },
|
|
122
|
+
saturation: { value: [-100, 100] },
|
|
123
|
+
invert: { intensity: [0, 1] },
|
|
124
|
+
blur: { radius: [0, 20] },
|
|
125
|
+
noise: { intensity: [0, 100], grainSize: [1, 4], refresh: [0, 8], seed: [0, 99999] },
|
|
126
|
+
vignette: { intensity: [0, 1], radius: [0, 1], falloff: [0.5, 4] },
|
|
127
|
+
vintage: { intensity: [0, 1] },
|
|
128
|
+
colorOverlay: { intensity: [0, 1] },
|
|
129
|
+
sharpen: { intensity: [0, 100] },
|
|
130
|
+
emboss: { intensity: [0, 1] },
|
|
131
|
+
posterize: { levels: [2, 32] },
|
|
132
|
+
hsl: { hue: [-180, 180], saturation: [-100, 100], lightness: [-100, 100] },
|
|
133
|
+
colorTint: { intensity: [0, 1] },
|
|
134
|
+
edgeDetect: { strength: [0, 4] },
|
|
135
|
+
halftoneDots: { size: [2, 32], angle: [0, 3.14] },
|
|
136
|
+
halftoneCMYK: { size: [2, 32] },
|
|
137
|
+
dither: { levels: [2, 16] },
|
|
138
|
+
});
|
|
139
|
+
/** 5 kinds: LINEAGE_KINDS, what provenance record accepts. */
|
|
140
|
+
export const LINEAGE_KINDS = [
|
|
141
|
+
'derivedFrom',
|
|
142
|
+
'instanceOf',
|
|
143
|
+
'placedFrom',
|
|
144
|
+
'importedFrom',
|
|
145
|
+
'copyOf',
|
|
146
|
+
];
|
|
147
|
+
/** 6 styles: STYLES, the looks a styled scene is drawn in. */
|
|
148
|
+
export const STYLED_SCENE_STYLES = [
|
|
149
|
+
'cut',
|
|
150
|
+
'ink',
|
|
151
|
+
'watercolor',
|
|
152
|
+
'dither',
|
|
153
|
+
'flow',
|
|
154
|
+
'ascii',
|
|
155
|
+
];
|
|
156
|
+
/** One line per styled-scene style: the engine's STYLE_INFO. */
|
|
157
|
+
export const STYLED_SCENE_STYLE_INFO = Object.freeze({
|
|
158
|
+
cut: "paper cut-out with soft drop shadows and paper grain",
|
|
159
|
+
ink: "ink line and hatching, boiling on twos (12 fps)",
|
|
160
|
+
watercolor: "translucent watercolour glazes on cold-press paper",
|
|
161
|
+
dither: "1-bit ordered (Bayer) dither in two inks",
|
|
162
|
+
flow: "contour streamlines on dark ground, animated along their length",
|
|
163
|
+
ascii: "ASCII broadcast with scanlines and a timecode",
|
|
164
|
+
});
|
|
165
|
+
/** One line per filter: the engine's own description and parameter ranges. */
|
|
166
|
+
export const FILTER_DOCS = Object.freeze({
|
|
167
|
+
grayscale: "Convert to black and white — intensity 0..1, default 1",
|
|
168
|
+
sepia: "Apply warm sepia tone — intensity 0..1, default 1",
|
|
169
|
+
brightness: "Adjust image brightness — value -100..100, default 0",
|
|
170
|
+
contrast: "Adjust image contrast — value -100..100, default 0",
|
|
171
|
+
saturation: "Adjust color saturation — value -100..100, default 0",
|
|
172
|
+
invert: "Invert colors — intensity 0..1, default 1",
|
|
173
|
+
blur: "Apply gaussian blur — radius 0..20, default 5",
|
|
174
|
+
noise: "Add film grain effect — intensity 0..100, default 20; monochrome (boolean), default true; grainSize 1..4; refresh 0..8; seed 0..99999, default 0; blend add|multiply, default add",
|
|
175
|
+
vignette: "Add vignette darkening — intensity 0..1, default 0.5; radius 0..1, default 0.5; color (color); falloff 0.5..4, default 2",
|
|
176
|
+
vintage: "Retro vintage look — intensity 0..1, default 1",
|
|
177
|
+
colorOverlay: "Add color tint — color (color), default #ff0000; intensity 0..1, default 0.3; blendMode multiply|overlay|screen, default overlay",
|
|
178
|
+
sharpen: "Increase image sharpness — intensity 0..100, default 50",
|
|
179
|
+
emboss: "3D emboss effect — intensity 0..1, default 1",
|
|
180
|
+
posterize: "Reduce color levels — levels 2..32, default 4",
|
|
181
|
+
hsl: "Shift hue, saturation, lightness — hue -180..180, default 0; saturation -100..100, default 0; lightness -100..100, default 0",
|
|
182
|
+
colorTint: "Tint image toward a color — intensity 0..1, default 0.3; color (color), default #ff0000; blendMode multiply|screen|overlay, default overlay",
|
|
183
|
+
edgeDetect: "Sobel edge detection — strength 0..4, default 1.0",
|
|
184
|
+
halftoneDots: "Black-and-white halftone dot pattern — size 2..32, default 6; angle 0..3.14, default 0.4",
|
|
185
|
+
halftoneCMYK: "CMYK halftone separations (newspaper rosette) — size 2..32, default 6",
|
|
186
|
+
dither: "Ordered Bayer 4x4 dithering — levels 2..16, default 2",
|
|
187
|
+
});
|
|
86
188
|
//# sourceMappingURL=engine-lists.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine-lists.js","sourceRoot":"","sources":["../../src/tools/engine-lists.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"engine-lists.js","sourceRoot":"","sources":["../../src/tools/engine-lists.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine-methods.d.ts","sourceRoot":"","sources":["../../src/tools/engine-methods.ts"],"names":[],"mappings":"AAUA;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,
|
|
1
|
+
{"version":3,"file":"engine-methods.d.ts","sourceRoot":"","sources":["../../src/tools/engine-methods.ts"],"names":[],"mappings":"AAUA;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,EAsOpD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,EA+CpD,CAAC"}
|