@pinepaper.studio/mcp-server 1.6.26 → 1.6.28
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 +155 -2
- package/SECURITY.md +4 -3
- package/dist/agent/types.d.ts +3 -3
- package/dist/browser/puppeteer-controller.d.ts +11 -0
- package/dist/browser/puppeteer-controller.d.ts.map +1 -1
- package/dist/browser/puppeteer-controller.js +38 -2
- package/dist/browser/puppeteer-controller.js.map +1 -1
- package/dist/build-info.json +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/ontology/hints.d.ts +3 -1
- package/dist/ontology/hints.d.ts.map +1 -1
- package/dist/ontology/hints.js +4 -2
- package/dist/ontology/hints.js.map +1 -1
- package/dist/ontology/upstream-vocabulary.d.ts +2 -2
- package/dist/ontology/upstream-vocabulary.js +2 -2
- package/dist/ontology/vocabulary.d.ts.map +1 -1
- package/dist/ontology/vocabulary.js +2 -0
- package/dist/ontology/vocabulary.js.map +1 -1
- package/dist/tools/choreograph.d.ts.map +1 -1
- package/dist/tools/choreograph.js +7 -0
- package/dist/tools/choreograph.js.map +1 -1
- package/dist/tools/definitions.d.ts.map +1 -1
- package/dist/tools/definitions.js +58 -28
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/engine-lists.d.ts +20 -3
- package/dist/tools/engine-lists.d.ts.map +1 -1
- package/dist/tools/engine-lists.js +156 -3
- 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 +2 -0
- 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 +19 -4
- package/dist/tools/engine-surface.js.map +1 -1
- package/dist/tools/export-file-receipt.d.ts +64 -0
- package/dist/tools/export-file-receipt.d.ts.map +1 -1
- package/dist/tools/export-file-receipt.js +91 -13
- package/dist/tools/export-file-receipt.js.map +1 -1
- package/dist/tools/expression-grammar.d.ts +10 -0
- package/dist/tools/expression-grammar.d.ts.map +1 -0
- package/dist/tools/expression-grammar.js +33 -0
- package/dist/tools/expression-grammar.js.map +1 -0
- package/dist/tools/handlers/export.d.ts.map +1 -1
- package/dist/tools/handlers/export.js +58 -4
- package/dist/tools/handlers/export.js.map +1 -1
- package/dist/tools/handlers/generate.js +2 -2
- package/dist/tools/handlers/generate.js.map +1 -1
- package/dist/tools/handlers.d.ts +5 -0
- package/dist/tools/handlers.d.ts.map +1 -1
- package/dist/tools/handlers.js +74 -2
- package/dist/tools/handlers.js.map +1 -1
- package/dist/tools/lane.d.ts +10 -5
- package/dist/tools/lane.d.ts.map +1 -1
- package/dist/tools/lane.js +49 -8
- package/dist/tools/lane.js.map +1 -1
- package/dist/tools/scene-cache-export.d.ts +52 -0
- package/dist/tools/scene-cache-export.d.ts.map +1 -0
- package/dist/tools/scene-cache-export.js +231 -0
- package/dist/tools/scene-cache-export.js.map +1 -0
- package/dist/tools/shape-params.d.ts +2 -2
- package/dist/tools/shape-params.js +2 -2
- package/dist/tools/stick-vocabulary.d.ts +1 -1
- package/dist/tools/stick-vocabulary.js +1 -1
- package/dist/tools/toolkits.d.ts +1 -1
- package/dist/tools/toolkits.d.ts.map +1 -1
- package/dist/tools/toolkits.js +8 -2
- package/dist/tools/toolkits.js.map +1 -1
- package/dist/types/code-generator.d.ts +1 -0
- package/dist/types/code-generator.d.ts.map +1 -1
- package/dist/types/code-generator.js +536 -255
- package/dist/types/code-generator.js.map +1 -1
- package/dist/types/schemas.d.ts +238 -201
- package/dist/types/schemas.d.ts.map +1 -1
- package/dist/types/schemas.js +14 -24
- package/dist/types/schemas.js.map +1 -1
- package/dist/utils/asset-paths.d.ts.map +1 -1
- package/dist/utils/asset-paths.js +11 -0
- package/dist/utils/asset-paths.js.map +1 -1
- package/dist/utils/capabilities.d.ts +15 -0
- package/dist/utils/capabilities.d.ts.map +1 -0
- package/dist/utils/capabilities.js +63 -0
- package/dist/utils/capabilities.js.map +1 -0
- package/dist/utils/env.d.ts.map +1 -1
- package/dist/utils/env.js +2 -1
- package/dist/utils/env.js.map +1 -1
- package/manifest.json +18 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset-paths.d.ts","sourceRoot":"","sources":["../../src/utils/asset-paths.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"asset-paths.d.ts","sourceRoot":"","sources":["../../src/utils/asset-paths.ts"],"names":[],"mappings":"AAgCA,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAM3D;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAkBlG"}
|
|
@@ -13,11 +13,18 @@
|
|
|
13
13
|
* The export folder is allowed because the server's own results point into
|
|
14
14
|
* it: brand_kit from_url saves the logo there and says to import it with
|
|
15
15
|
* pinepaper_import_image. Refusing that would break the tool's own advice.
|
|
16
|
+
*
|
|
17
|
+
* OFF BY DEFAULT OUTSIDE THE EXPORT FOLDER (1.6.28): reading the working
|
|
18
|
+
* directory or PINEPAPER_ASSET_DIRS needs PINEPAPER_ALLOW_LOCAL_FILES=1
|
|
19
|
+
* (utils/capabilities.ts). The export folder holds the server's own results
|
|
20
|
+
* (a saved scene, a brand_kit logo), so it is read without the switch, and a
|
|
21
|
+
* save / restore round trip keeps working.
|
|
16
22
|
*/
|
|
17
23
|
import { realpath } from 'node:fs/promises';
|
|
18
24
|
import { basename, delimiter, dirname, join, resolve, sep } from 'node:path';
|
|
19
25
|
import { env } from './env.js';
|
|
20
26
|
import { getExportDir } from './export-dir.js';
|
|
27
|
+
import { capabilityAllowed, capabilityRefusal } from './capabilities.js';
|
|
21
28
|
async function real(p) {
|
|
22
29
|
try {
|
|
23
30
|
return await realpath(p);
|
|
@@ -28,6 +35,8 @@ async function real(p) {
|
|
|
28
35
|
}
|
|
29
36
|
export async function allowedAssetRoots() {
|
|
30
37
|
const exportDir = getExportDir();
|
|
38
|
+
if (!capabilityAllowed('localFiles'))
|
|
39
|
+
return [...new Set([await real(resolve(exportDir))].filter((r) => r !== null))];
|
|
31
40
|
const entries = [process.cwd(), exportDir, ...(env('PINEPAPER_ASSET_DIRS') ?? '').split(delimiter).filter(Boolean)];
|
|
32
41
|
const roots = await Promise.all(entries.map((e) => real(resolve(e))));
|
|
33
42
|
return [...new Set(roots.filter((r) => r !== null))];
|
|
@@ -59,6 +68,8 @@ export async function confineAssetPath(path) {
|
|
|
59
68
|
return outside(path, dirname(target));
|
|
60
69
|
}
|
|
61
70
|
function outside(path, folder) {
|
|
71
|
+
if (!capabilityAllowed('localFiles'))
|
|
72
|
+
return { error: capabilityRefusal('localFiles', `Importing "${path}"`) + ` (Files in the export folder, ${getExportDir()}, are read without it.)` };
|
|
62
73
|
return {
|
|
63
74
|
error: `"${path}" is outside the allowed folders (cwd, the export folder, PINEPAPER_ASSET_DIRS). `
|
|
64
75
|
+ `Add its folder (${folder}) to PINEPAPER_ASSET_DIRS to import it.`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset-paths.js","sourceRoot":"","sources":["../../src/utils/asset-paths.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"asset-paths.js","sourceRoot":"","sources":["../../src/utils/asset-paths.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type Capability = 'code' | 'localFiles';
|
|
2
|
+
export declare const CAPABILITY_SWITCH: Readonly<Record<Capability, string>>;
|
|
3
|
+
/** Turn a capability on or off for this process; undefined goes back to the environment. */
|
|
4
|
+
export declare function setCapability(capability: Capability, on: boolean | undefined): void;
|
|
5
|
+
export declare function capabilityAllowed(capability: Capability): boolean;
|
|
6
|
+
/** The tools behind PINEPAPER_ALLOW_CODE, as the notice and the docs name them. */
|
|
7
|
+
export declare const CODE_GATED_TOOLS: readonly string[];
|
|
8
|
+
/** The refusal for a call that needs a capability that is off: what was refused, and the switch that allows it. */
|
|
9
|
+
export declare function capabilityRefusal(capability: Capability, what: string): string;
|
|
10
|
+
/**
|
|
11
|
+
* What an agent reads on connect (the server's instructions), so it knows before its first call which tools are
|
|
12
|
+
* behind a switch, whether this server has them on, and that turning them on is the user's decision, not a tool's.
|
|
13
|
+
*/
|
|
14
|
+
export declare function securityBoundaryNotice(): string;
|
|
15
|
+
//# sourceMappingURL=capabilities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/utils/capabilities.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,YAAY,CAAC;AAE/C,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAGjE,CAAC;AAIH,4FAA4F;AAC5F,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAGnF;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAKjE;AAED,mFAAmF;AACnF,eAAO,MAAM,gBAAgB,mBAM3B,CAAC;AAIH,mHAAmH;AACnH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAK9E;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAM/C"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The high-impact capabilities, OFF unless the person running the server turns them on.
|
|
3
|
+
*
|
|
4
|
+
* - code: run JavaScript the caller wrote, in the studio page. pinepaper_execute_custom_code, pinepaper_p5_draw,
|
|
5
|
+
* pinepaper_render_hook (register), pinepaper_register_custom_relation (its compute / apply are JS), and
|
|
6
|
+
* pinepaper_import_scene's registerCustomRelations (a file's saved compute / apply). PINEPAPER_ALLOW_CODE=1.
|
|
7
|
+
* - localFiles: read a file from this machine's disk for an import (image, audio / video, a saved scene), inside
|
|
8
|
+
* the allowed folders (cwd, the export folder, PINEPAPER_ASSET_DIRS). PINEPAPER_ALLOW_LOCAL_FILES=1. The server's
|
|
9
|
+
* own exports stay readable without it, and URL imports are not affected (they go through safe-fetch).
|
|
10
|
+
*
|
|
11
|
+
* WHY OFF. An MCP server takes its arguments from a model, and a model takes its instructions from whatever it reads:
|
|
12
|
+
* a web page, a document, a scene file. Each of these turns such text into code running in the studio, or into the
|
|
13
|
+
* contents of a file on disk. The person who starts the server decides whether that is wanted; a refusal names the
|
|
14
|
+
* switch, so it is one step to turn on. An embedder (a Worker with no environment) sets them with setCapability.
|
|
15
|
+
*/
|
|
16
|
+
import { env } from './env.js';
|
|
17
|
+
export const CAPABILITY_SWITCH = Object.freeze({
|
|
18
|
+
code: 'PINEPAPER_ALLOW_CODE',
|
|
19
|
+
localFiles: 'PINEPAPER_ALLOW_LOCAL_FILES',
|
|
20
|
+
});
|
|
21
|
+
const overrides = {};
|
|
22
|
+
/** Turn a capability on or off for this process; undefined goes back to the environment. */
|
|
23
|
+
export function setCapability(capability, on) {
|
|
24
|
+
if (on === undefined)
|
|
25
|
+
delete overrides[capability];
|
|
26
|
+
else
|
|
27
|
+
overrides[capability] = on;
|
|
28
|
+
}
|
|
29
|
+
export function capabilityAllowed(capability) {
|
|
30
|
+
const set = overrides[capability];
|
|
31
|
+
if (set !== undefined)
|
|
32
|
+
return set;
|
|
33
|
+
const v = (env(CAPABILITY_SWITCH[capability]) ?? '').trim().toLowerCase();
|
|
34
|
+
return v === '1' || v === 'true' || v === 'yes' || v === 'on';
|
|
35
|
+
}
|
|
36
|
+
/** The tools behind PINEPAPER_ALLOW_CODE, as the notice and the docs name them. */
|
|
37
|
+
export const CODE_GATED_TOOLS = Object.freeze([
|
|
38
|
+
'pinepaper_execute_custom_code',
|
|
39
|
+
'pinepaper_p5_draw',
|
|
40
|
+
'pinepaper_render_hook (register)',
|
|
41
|
+
'pinepaper_register_custom_relation',
|
|
42
|
+
'pinepaper_import_scene (registerCustomRelations)',
|
|
43
|
+
]);
|
|
44
|
+
const HOW_TO_ENABLE = 'The person running the server enables it: add it to this server\'s "env" in their MCP client config, or tick the setting in the Claude Desktop extension, then restart the server. No tool call can change it.';
|
|
45
|
+
/** The refusal for a call that needs a capability that is off: what was refused, and the switch that allows it. */
|
|
46
|
+
export function capabilityRefusal(capability, what) {
|
|
47
|
+
const name = CAPABILITY_SWITCH[capability];
|
|
48
|
+
return capability === 'code'
|
|
49
|
+
? `SECURITY BOUNDARY: ${what} runs JavaScript in the studio, which is off unless the server is started with ${name}=1. Nothing was run. ${HOW_TO_ENABLE} Until then, use the built-in tools (shapes, keyframes, relations such as time_expression, generators, patterns).`
|
|
50
|
+
: `SECURITY BOUNDARY: ${what} reads a file from this machine's disk, which is off unless the server is started with ${name}=1. ${HOW_TO_ENABLE} Until then, pass an http(s) URL, or a file in the export folder.`;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* What an agent reads on connect (the server's instructions), so it knows before its first call which tools are
|
|
54
|
+
* behind a switch, whether this server has them on, and that turning them on is the user's decision, not a tool's.
|
|
55
|
+
*/
|
|
56
|
+
export function securityBoundaryNotice() {
|
|
57
|
+
const on = (c) => (capabilityAllowed(c) ? 'ON' : 'OFF');
|
|
58
|
+
return `SECURITY BOUNDARY (set by the person running this server; no tool call can change it):
|
|
59
|
+
- Running JavaScript you write is ${on('code')} on this server (${CAPABILITY_SWITCH.code}=1 turns it on): ${CODE_GATED_TOOLS.join(', ')}.
|
|
60
|
+
- Reading files from disk outside the export folder is ${on('localFiles')} (${CAPABILITY_SWITCH.localFiles}=1 turns it on). URLs and the export folder always work.
|
|
61
|
+
When a switch is OFF, build with the other tools. If the user needs one of these, tell them which switch to set in their MCP client config (or the Claude Desktop extension's settings) and to restart the server; do not retry the call.`;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/utils/capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAI/B,MAAM,CAAC,MAAM,iBAAiB,GAAyC,MAAM,CAAC,MAAM,CAAC;IACnF,IAAI,EAAE,sBAAsB;IAC5B,UAAU,EAAE,6BAA6B;CAC1C,CAAC,CAAC;AAEH,MAAM,SAAS,GAAyC,EAAE,CAAC;AAE3D,4FAA4F;AAC5F,MAAM,UAAU,aAAa,CAAC,UAAsB,EAAE,EAAuB;IAC3E,IAAI,EAAE,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC,UAAU,CAAC,CAAC;;QAC9C,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,UAAsB;IACtD,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;IAClC,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC;IAClC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC1E,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC;AAChE,CAAC;AAED,mFAAmF;AACnF,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC5C,+BAA+B;IAC/B,mBAAmB;IACnB,kCAAkC;IAClC,oCAAoC;IACpC,kDAAkD;CACnD,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,gNAAgN,CAAC;AAEvO,mHAAmH;AACnH,MAAM,UAAU,iBAAiB,CAAC,UAAsB,EAAE,IAAY;IACpE,MAAM,IAAI,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC3C,OAAO,UAAU,KAAK,MAAM;QAC1B,CAAC,CAAC,sBAAsB,IAAI,kFAAkF,IAAI,wBAAwB,aAAa,mHAAmH;QAC1Q,CAAC,CAAC,sBAAsB,IAAI,0FAA0F,IAAI,OAAO,aAAa,mEAAmE,CAAC;AACtN,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,EAAE,GAAG,CAAC,CAAa,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACpE,OAAO;oCAC2B,EAAE,CAAC,MAAM,CAAC,oBAAoB,iBAAiB,CAAC,IAAI,oBAAoB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;yDAC9E,EAAE,CAAC,YAAY,CAAC,KAAK,iBAAiB,CAAC,UAAU;0OACgI,CAAC;AAC3O,CAAC"}
|
package/dist/utils/env.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGpD"}
|
package/dist/utils/env.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* reader: it is bundled on its own and takes no relative imports.
|
|
7
7
|
*/
|
|
8
8
|
export function env(name) {
|
|
9
|
-
|
|
9
|
+
// A Worker build (mcp-cloud) may have no process at all.
|
|
10
|
+
return typeof process !== 'undefined' && process.env ? process.env[name] : undefined;
|
|
10
11
|
}
|
|
11
12
|
//# sourceMappingURL=env.js.map
|
package/dist/utils/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,GAAG,CAAC,IAAY;IAC9B,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,GAAG,CAAC,IAAY;IAC9B,yDAAyD;IACzD,OAAO,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACvF,CAAC"}
|
package/manifest.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"manifest_version": "0.3",
|
|
3
3
|
"name": "pinepaper-mcp",
|
|
4
|
-
"version": "1.6.
|
|
4
|
+
"version": "1.6.28",
|
|
5
5
|
"display_name": "PinePaper",
|
|
6
6
|
"icon": "icon.png",
|
|
7
7
|
"description": "Create animated graphics with AI using PinePaper Studio",
|
|
@@ -40,7 +40,9 @@
|
|
|
40
40
|
"env": {
|
|
41
41
|
"PINEPAPER_CHROME_PATH": "${user_config.chrome_path}",
|
|
42
42
|
"PINEPAPER_EXPORT_DIR": "${user_config.export_dir}",
|
|
43
|
-
"PINEPAPER_TOOLKIT": "${user_config.toolkit}"
|
|
43
|
+
"PINEPAPER_TOOLKIT": "${user_config.toolkit}",
|
|
44
|
+
"PINEPAPER_ALLOW_CODE": "${user_config.allow_code}",
|
|
45
|
+
"PINEPAPER_ALLOW_LOCAL_FILES": "${user_config.allow_local_files}"
|
|
44
46
|
}
|
|
45
47
|
}
|
|
46
48
|
},
|
|
@@ -62,6 +64,20 @@
|
|
|
62
64
|
"title": "Tool list",
|
|
63
65
|
"description": "Optional. Empty or \"core\" starts with the core tools and loads more on demand; \"agent\" or \"full\" lists everything up front (much more context).",
|
|
64
66
|
"required": false
|
|
67
|
+
},
|
|
68
|
+
"allow_code": {
|
|
69
|
+
"type": "boolean",
|
|
70
|
+
"title": "Allow custom code",
|
|
71
|
+
"description": "Security switch, off by default. Lets the assistant run JavaScript it writes in the canvas: custom code, p5-style drawing, render hooks, custom relations, and the custom relations saved in a scene file. Turn on only if you trust what the assistant reads.",
|
|
72
|
+
"default": false,
|
|
73
|
+
"required": false
|
|
74
|
+
},
|
|
75
|
+
"allow_local_files": {
|
|
76
|
+
"type": "boolean",
|
|
77
|
+
"title": "Allow local files",
|
|
78
|
+
"description": "Security switch, off by default. Lets the assistant import images, audio, video and scenes from your disk (the working folder and PINEPAPER_ASSET_DIRS). Files in the export folder are always readable.",
|
|
79
|
+
"default": false,
|
|
80
|
+
"required": false
|
|
65
81
|
}
|
|
66
82
|
},
|
|
67
83
|
"compatibility": {
|
package/package.json
CHANGED