@pixerate/editor 0.139.1 → 0.140.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 +25 -4
- package/dist/agent/formatTools.d.cts +15 -0
- package/dist/agent/formatTools.d.ts +15 -0
- package/dist/agent/index.cjs +397 -46
- package/dist/agent/index.js +365 -14
- package/dist/agent/providers.d.cts +5 -3
- package/dist/agent/providers.d.ts +5 -3
- package/dist/animation-editor/effect-tools.d.cts +1 -1
- package/dist/animation-editor/effect-tools.d.ts +1 -1
- package/dist/animation-editor/index.cjs +250 -116
- package/dist/animation-editor/index.js +228 -94
- package/dist/animation-editor/instructions.d.cts +1 -1
- package/dist/animation-editor/instructions.d.ts +1 -1
- package/dist/animation-editor/parse.d.cts +3 -1
- package/dist/animation-editor/parse.d.ts +3 -1
- package/dist/animation-editor/tools.d.cts +8 -3
- package/dist/animation-editor/tools.d.ts +8 -3
- package/dist/bridge/cli.cjs +3 -3
- package/dist/bridge/cli.js +2 -2
- package/dist/bridge/index.cjs +7 -3
- package/dist/bridge/index.d.cts +7 -0
- package/dist/bridge/index.d.ts +7 -0
- package/dist/bridge/index.js +8 -4
- package/dist/bridge/skills.d.cts +9 -0
- package/dist/bridge/skills.d.ts +9 -0
- package/dist/canvas/effect-tools.d.cts +1 -1
- package/dist/canvas/effect-tools.d.ts +1 -1
- package/dist/canvas/index.cjs +22 -17
- package/dist/canvas/index.js +8 -3
- package/dist/chart/file-tools.d.cts +1 -1
- package/dist/chart/file-tools.d.ts +1 -1
- package/dist/chart/index.cjs +7 -1
- package/dist/chart/index.js +7 -1
- package/dist/chart/tools.d.cts +1 -1
- package/dist/chart/tools.d.ts +1 -1
- package/dist/{chunk-BKMU3V6K.js → chunk-5ED73EC6.js} +8 -1
- package/dist/{chunk-VRIR53SW.js → chunk-5G3KYRER.js} +2 -1
- package/dist/{chunk-KHMVB3SJ.js → chunk-7KWJEYIK.js} +4 -1
- package/dist/{chunk-R47NQICB.cjs → chunk-HDCH35UM.cjs} +47 -10
- package/dist/{chunk-6NCBFBXA.js → chunk-IQ6KKXOU.js} +1 -1
- package/dist/{chunk-PCNCT4ZY.js → chunk-KIBEEN5K.js} +40 -3
- package/dist/{chunk-CZRWP6IW.cjs → chunk-N2FGYZ4Q.cjs} +8 -1
- package/dist/{chunk-T6Y5FV7G.cjs → chunk-RPW7YL3D.cjs} +2 -1
- package/dist/{chunk-3V746PF4.cjs → chunk-RUZQMYXH.cjs} +4 -1
- package/dist/{chunk-GUPQ5BNA.cjs → chunk-RWML7TWG.cjs} +44 -44
- package/dist/{chunk-HGHXGCKG.cjs → chunk-SVFEVKLF.cjs} +1 -1
- package/dist/{chunk-PQMADRCI.js → chunk-UOJS6PUP.js} +1 -1
- package/dist/{chunk-BWT4IWLK.cjs → chunk-VKF3PWKR.cjs} +7 -7
- package/dist/chunk-WBKLYLZE.js +1156 -0
- package/dist/{chunk-TBSPPVTT.js → chunk-XCK7QK5D.js} +1 -1
- package/dist/chunk-ZAOOIJ6I.cjs +1156 -0
- package/dist/commands/agentTools.d.cts +1 -1
- package/dist/commands/agentTools.d.ts +1 -1
- package/dist/commands/index.cjs +3 -0
- package/dist/commands/index.js +3 -0
- package/dist/diagram/index.cjs +3 -0
- package/dist/diagram/index.js +3 -0
- package/dist/diagram/tools.d.cts +1 -1
- package/dist/diagram/tools.d.ts +1 -1
- package/dist/effects/index.cjs +32 -32
- package/dist/effects/index.js +1 -1
- package/dist/effects/tools.d.cts +5 -1
- package/dist/effects/tools.d.ts +5 -1
- package/dist/extensions/index.cjs +3 -3
- package/dist/extensions/index.js +2 -2
- package/dist/generation/index.cjs +7 -1
- package/dist/generation/index.js +7 -1
- package/dist/image-editor/index.cjs +21 -15
- package/dist/image-editor/index.js +8 -2
- package/dist/image-editor/provider-effect-tools.d.cts +1 -1
- package/dist/image-editor/provider-effect-tools.d.ts +1 -1
- package/dist/image-editor/tools.d.cts +1 -1
- package/dist/image-editor/tools.d.ts +1 -1
- package/dist/index.cjs +8 -8
- package/dist/index.js +2 -2
- package/dist/paint-editor/effect-tools.d.cts +1 -1
- package/dist/paint-editor/effect-tools.d.ts +1 -1
- package/dist/paint-editor/index.cjs +18 -8
- package/dist/paint-editor/index.js +13 -3
- package/dist/paint-editor/tools.d.cts +1 -1
- package/dist/paint-editor/tools.d.ts +1 -1
- package/dist/tools/bridge-client.d.cts +3 -3
- package/dist/tools/bridge-client.d.ts +3 -3
- package/dist/tools/capture.d.cts +5 -1
- package/dist/tools/capture.d.ts +5 -1
- package/dist/tools/definitions.d.cts +2 -2
- package/dist/tools/definitions.d.ts +2 -2
- package/dist/tools/index.cjs +31 -5
- package/dist/tools/index.d.cts +3 -0
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.js +31 -5
- package/dist/tools/mcp-server.d.cts +24 -6
- package/dist/tools/mcp-server.d.ts +24 -6
- package/dist/tools/registry.d.cts +81 -6
- package/dist/tools/registry.d.ts +81 -6
- package/dist/tools/search.d.cts +30 -0
- package/dist/tools/search.d.ts +30 -0
- package/dist/tools/skills.d.cts +26 -0
- package/dist/tools/skills.d.ts +26 -0
- package/dist/tools/view.d.cts +95 -0
- package/dist/tools/view.d.ts +95 -0
- package/dist/vector/effect-tools.d.cts +1 -1
- package/dist/vector/effect-tools.d.ts +1 -1
- package/dist/vector/index.cjs +13 -7
- package/dist/vector/index.js +8 -2
- package/dist/video-editor/effect-tools.d.cts +1 -1
- package/dist/video-editor/effect-tools.d.ts +1 -1
- package/dist/video-editor/index.cjs +275 -269
- package/dist/video-editor/index.js +8 -2
- package/dist/video-editor/tools.d.cts +1 -1
- package/dist/video-editor/tools.d.ts +1 -1
- package/package.json +4 -2
- package/skills/README.md +8 -3
- package/skills/pixerate-agent-tools/SKILL.md +33 -7
- package/skills/pixerate-animation-editor/SKILL.md +7 -0
- package/skills/pixerate-rich-text/SKILL.md +18 -4
- package/dist/chunk-5RRYDFU2.js +0 -466
- package/dist/chunk-SPVIXXIB.cjs +0 -466
- /package/dist/{chunk-SMJK5HBJ.js → chunk-MCTQXUXR.js} +0 -0
- /package/dist/{chunk-DDF6WQ62.cjs → chunk-R6DFK5OX.cjs} +0 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent skill files (`skills/<name>/SKILL.md` plus its `references/*.md`), keyed by
|
|
3
|
+
* path relative to the skills directory: `pixerate-chart/SKILL.md`,
|
|
4
|
+
* `pixerate-vector/references/commands.md`. In Node, `loadSkillFiles()` from
|
|
5
|
+
* `@pixerate/editor/bridge` reads the ones shipped with the package; in a browser,
|
|
6
|
+
* import them as text (with Vite, `import.meta.glob('…/skills/**\/*.md', { query: '?raw', import: 'default', eager: true })`).
|
|
7
|
+
*/
|
|
8
|
+
export type SkillFiles = Readonly<Record<string, string>>;
|
|
9
|
+
export interface SkillInfo {
|
|
10
|
+
/** Skill name (its directory), e.g. `pixerate-chart`. */
|
|
11
|
+
name: string;
|
|
12
|
+
/** The frontmatter `description`: what the skill covers and when to use it. */
|
|
13
|
+
description: string;
|
|
14
|
+
/** Other files of the skill relative to its directory, e.g. `references/commands.md`. */
|
|
15
|
+
references: string[];
|
|
16
|
+
}
|
|
17
|
+
/** Reads `name` and `description` from a SKILL.md's YAML frontmatter. */
|
|
18
|
+
export declare function parseSkillFrontmatter(markdown: string): {
|
|
19
|
+
name?: string;
|
|
20
|
+
description?: string;
|
|
21
|
+
body: string;
|
|
22
|
+
};
|
|
23
|
+
/** The skills in a set of skill files, sorted by name. */
|
|
24
|
+
export declare function listSkills(files: SkillFiles): SkillInfo[];
|
|
25
|
+
/** One file of a skill (`SKILL.md` by default), or `undefined` if there is none. */
|
|
26
|
+
export declare function readSkillFile(files: SkillFiles, skill: string, file?: string): string | undefined;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import type { McpListToolsResult, McpToolDefinition, McpToolResult, ToolSource, ToolsetInfo } from './registry.cjs';
|
|
2
|
+
import { type SkillFiles } from './skills.cjs';
|
|
3
|
+
export interface ToolDiscoveryOptions {
|
|
4
|
+
/** Toolsets listed from the start (default none: the agent enables what it needs). */
|
|
5
|
+
enabled?: readonly string[];
|
|
6
|
+
/** Skill files `get_skill` serves (see {@link SkillFiles}). Without them there is no `get_skill`. */
|
|
7
|
+
skills?: SkillFiles;
|
|
8
|
+
/** Default and maximum number of `search_tools` results (default 10, at most 50). */
|
|
9
|
+
searchLimit?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface ToolViewOptions {
|
|
12
|
+
/**
|
|
13
|
+
* Toolsets the agent may see and call (names from `registry.toolsets()`), or a
|
|
14
|
+
* predicate. Default: all. Change it later with `setToolsets`, e.g. to follow
|
|
15
|
+
* the focused editor.
|
|
16
|
+
*/
|
|
17
|
+
toolsets?: readonly string[] | ((toolset: ToolsetInfo) => boolean);
|
|
18
|
+
/** Only expose tools annotated `readOnlyHint: true`; write tools are refused with the reason. */
|
|
19
|
+
readOnly?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Serve discovery tools (`list_toolsets`, `search_tools`, `enable_tools`,
|
|
22
|
+
* `disable_tools` and, with skills, `get_skill`) and list only the toolsets
|
|
23
|
+
* and tools that are enabled, so a large catalogue costs the agent a handful
|
|
24
|
+
* of tool definitions until it asks for more. Tools that are allowed but not
|
|
25
|
+
* enabled can still be called by name.
|
|
26
|
+
*/
|
|
27
|
+
discovery?: boolean | ToolDiscoveryOptions;
|
|
28
|
+
}
|
|
29
|
+
/** Names of the tools a discovery view adds. */
|
|
30
|
+
export declare const TOOL_DISCOVERY_TOOLS: readonly ["list_toolsets", "search_tools", "enable_tools", "disable_tools", "get_skill"];
|
|
31
|
+
/**
|
|
32
|
+
* A filtered view of a {@link ToolSource} (usually a `ToolRegistry`, from
|
|
33
|
+
* `registry.view()`) that is itself a `ToolSource`, so `createMcpServer`,
|
|
34
|
+
* `connectToolBridge` and further views accept it.
|
|
35
|
+
*
|
|
36
|
+
* - **Scope** an agent to some toolsets (`toolsets`) or to read tools
|
|
37
|
+
* (`readOnly`). Tools outside the scope are neither listed nor callable.
|
|
38
|
+
* - **Discover** (`discovery`): list only what the agent enabled, plus tools to
|
|
39
|
+
* browse and search the rest and to enable it. `listChanged` fires whenever
|
|
40
|
+
* the listing changes.
|
|
41
|
+
*/
|
|
42
|
+
export declare class ToolRegistryView implements ToolSource {
|
|
43
|
+
private readonly source;
|
|
44
|
+
readonly capabilities: {
|
|
45
|
+
readonly tools: {
|
|
46
|
+
readonly listChanged: true;
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
private allow;
|
|
50
|
+
private readonly readOnly;
|
|
51
|
+
private readonly discovery;
|
|
52
|
+
private readonly enabledSets;
|
|
53
|
+
private readonly enabledTools;
|
|
54
|
+
private readonly listeners;
|
|
55
|
+
private readonly meta;
|
|
56
|
+
private unsubscribe;
|
|
57
|
+
private lastSignature;
|
|
58
|
+
constructor(source: ToolSource, options?: ToolViewOptions);
|
|
59
|
+
/** Changes which toolsets the agent may use (`undefined`: all). Fires `listChanged` if the listing changes. */
|
|
60
|
+
setToolsets(toolsets: ToolViewOptions['toolsets']): void;
|
|
61
|
+
/**
|
|
62
|
+
* Lists more tools in a discovery view, as the `enable_tools` tool does.
|
|
63
|
+
* Throws for names the view does not allow. Returns the tool names newly listed.
|
|
64
|
+
*/
|
|
65
|
+
enableTools(selection: {
|
|
66
|
+
tools?: readonly string[];
|
|
67
|
+
toolsets?: readonly string[];
|
|
68
|
+
}): string[];
|
|
69
|
+
/** Stops listing tools in a discovery view, as `disable_tools` does. Returns the tool names no longer listed. */
|
|
70
|
+
disableTools(selection: {
|
|
71
|
+
tools?: readonly string[];
|
|
72
|
+
toolsets?: readonly string[];
|
|
73
|
+
}): string[];
|
|
74
|
+
/** Allowed toolsets, each with only its allowed tools. */
|
|
75
|
+
toolsets(): ToolsetInfo[];
|
|
76
|
+
listTools(): McpListToolsResult;
|
|
77
|
+
hasTool(name: string): boolean;
|
|
78
|
+
getTool(name: string): McpToolDefinition | undefined;
|
|
79
|
+
callTool(name: string, args?: Record<string, unknown>, options?: {
|
|
80
|
+
signal?: AbortSignal;
|
|
81
|
+
}): Promise<McpToolResult>;
|
|
82
|
+
onListChanged(listener: (tools: McpToolDefinition[]) => void): () => void;
|
|
83
|
+
/** Stops following the source and drops every listener. */
|
|
84
|
+
dispose(): void;
|
|
85
|
+
private changed;
|
|
86
|
+
private signature;
|
|
87
|
+
private allowsSet;
|
|
88
|
+
private catalogue;
|
|
89
|
+
private listed;
|
|
90
|
+
/** Resolves an exposed or unique bare name among the allowed tools, or explains why it isn't one. */
|
|
91
|
+
private find;
|
|
92
|
+
/** Normalizes names to exposed tool and toolset names, or throws naming every unknown one. */
|
|
93
|
+
private checkSelection;
|
|
94
|
+
private createDiscoveryTools;
|
|
95
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import type { McpListToolsResult, McpToolDefinition, McpToolResult, ToolSource, ToolsetInfo } from './registry.js';
|
|
2
|
+
import { type SkillFiles } from './skills.js';
|
|
3
|
+
export interface ToolDiscoveryOptions {
|
|
4
|
+
/** Toolsets listed from the start (default none: the agent enables what it needs). */
|
|
5
|
+
enabled?: readonly string[];
|
|
6
|
+
/** Skill files `get_skill` serves (see {@link SkillFiles}). Without them there is no `get_skill`. */
|
|
7
|
+
skills?: SkillFiles;
|
|
8
|
+
/** Default and maximum number of `search_tools` results (default 10, at most 50). */
|
|
9
|
+
searchLimit?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface ToolViewOptions {
|
|
12
|
+
/**
|
|
13
|
+
* Toolsets the agent may see and call (names from `registry.toolsets()`), or a
|
|
14
|
+
* predicate. Default: all. Change it later with `setToolsets`, e.g. to follow
|
|
15
|
+
* the focused editor.
|
|
16
|
+
*/
|
|
17
|
+
toolsets?: readonly string[] | ((toolset: ToolsetInfo) => boolean);
|
|
18
|
+
/** Only expose tools annotated `readOnlyHint: true`; write tools are refused with the reason. */
|
|
19
|
+
readOnly?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Serve discovery tools (`list_toolsets`, `search_tools`, `enable_tools`,
|
|
22
|
+
* `disable_tools` and, with skills, `get_skill`) and list only the toolsets
|
|
23
|
+
* and tools that are enabled, so a large catalogue costs the agent a handful
|
|
24
|
+
* of tool definitions until it asks for more. Tools that are allowed but not
|
|
25
|
+
* enabled can still be called by name.
|
|
26
|
+
*/
|
|
27
|
+
discovery?: boolean | ToolDiscoveryOptions;
|
|
28
|
+
}
|
|
29
|
+
/** Names of the tools a discovery view adds. */
|
|
30
|
+
export declare const TOOL_DISCOVERY_TOOLS: readonly ["list_toolsets", "search_tools", "enable_tools", "disable_tools", "get_skill"];
|
|
31
|
+
/**
|
|
32
|
+
* A filtered view of a {@link ToolSource} (usually a `ToolRegistry`, from
|
|
33
|
+
* `registry.view()`) that is itself a `ToolSource`, so `createMcpServer`,
|
|
34
|
+
* `connectToolBridge` and further views accept it.
|
|
35
|
+
*
|
|
36
|
+
* - **Scope** an agent to some toolsets (`toolsets`) or to read tools
|
|
37
|
+
* (`readOnly`). Tools outside the scope are neither listed nor callable.
|
|
38
|
+
* - **Discover** (`discovery`): list only what the agent enabled, plus tools to
|
|
39
|
+
* browse and search the rest and to enable it. `listChanged` fires whenever
|
|
40
|
+
* the listing changes.
|
|
41
|
+
*/
|
|
42
|
+
export declare class ToolRegistryView implements ToolSource {
|
|
43
|
+
private readonly source;
|
|
44
|
+
readonly capabilities: {
|
|
45
|
+
readonly tools: {
|
|
46
|
+
readonly listChanged: true;
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
private allow;
|
|
50
|
+
private readonly readOnly;
|
|
51
|
+
private readonly discovery;
|
|
52
|
+
private readonly enabledSets;
|
|
53
|
+
private readonly enabledTools;
|
|
54
|
+
private readonly listeners;
|
|
55
|
+
private readonly meta;
|
|
56
|
+
private unsubscribe;
|
|
57
|
+
private lastSignature;
|
|
58
|
+
constructor(source: ToolSource, options?: ToolViewOptions);
|
|
59
|
+
/** Changes which toolsets the agent may use (`undefined`: all). Fires `listChanged` if the listing changes. */
|
|
60
|
+
setToolsets(toolsets: ToolViewOptions['toolsets']): void;
|
|
61
|
+
/**
|
|
62
|
+
* Lists more tools in a discovery view, as the `enable_tools` tool does.
|
|
63
|
+
* Throws for names the view does not allow. Returns the tool names newly listed.
|
|
64
|
+
*/
|
|
65
|
+
enableTools(selection: {
|
|
66
|
+
tools?: readonly string[];
|
|
67
|
+
toolsets?: readonly string[];
|
|
68
|
+
}): string[];
|
|
69
|
+
/** Stops listing tools in a discovery view, as `disable_tools` does. Returns the tool names no longer listed. */
|
|
70
|
+
disableTools(selection: {
|
|
71
|
+
tools?: readonly string[];
|
|
72
|
+
toolsets?: readonly string[];
|
|
73
|
+
}): string[];
|
|
74
|
+
/** Allowed toolsets, each with only its allowed tools. */
|
|
75
|
+
toolsets(): ToolsetInfo[];
|
|
76
|
+
listTools(): McpListToolsResult;
|
|
77
|
+
hasTool(name: string): boolean;
|
|
78
|
+
getTool(name: string): McpToolDefinition | undefined;
|
|
79
|
+
callTool(name: string, args?: Record<string, unknown>, options?: {
|
|
80
|
+
signal?: AbortSignal;
|
|
81
|
+
}): Promise<McpToolResult>;
|
|
82
|
+
onListChanged(listener: (tools: McpToolDefinition[]) => void): () => void;
|
|
83
|
+
/** Stops following the source and drops every listener. */
|
|
84
|
+
dispose(): void;
|
|
85
|
+
private changed;
|
|
86
|
+
private signature;
|
|
87
|
+
private allowsSet;
|
|
88
|
+
private catalogue;
|
|
89
|
+
private listed;
|
|
90
|
+
/** Resolves an exposed or unique bare name among the allowed tools, or explains why it isn't one. */
|
|
91
|
+
private find;
|
|
92
|
+
/** Normalizes names to exposed tool and toolset names, or throws naming every unknown one. */
|
|
93
|
+
private checkSelection;
|
|
94
|
+
private createDiscoveryTools;
|
|
95
|
+
}
|
|
@@ -9,7 +9,7 @@ import type { VectorEditorController } from './controller.cjs';
|
|
|
9
9
|
export interface VectorEffectsToolProviderOptions {
|
|
10
10
|
/** Provider id (unique per registry). Default `vector-effects`. */
|
|
11
11
|
id?: string;
|
|
12
|
-
/**
|
|
12
|
+
/** Tool-name prefix (`<namespace>__<name>`); defaults to the provider id, `''` for bare names. */
|
|
13
13
|
namespace?: string;
|
|
14
14
|
/** The document cannot be edited: write tools are hidden. A string is the reason. */
|
|
15
15
|
readOnly?: boolean | string | (() => boolean | string);
|
|
@@ -9,7 +9,7 @@ import type { VectorEditorController } from './controller.js';
|
|
|
9
9
|
export interface VectorEffectsToolProviderOptions {
|
|
10
10
|
/** Provider id (unique per registry). Default `vector-effects`. */
|
|
11
11
|
id?: string;
|
|
12
|
-
/**
|
|
12
|
+
/** Tool-name prefix (`<namespace>__<name>`); defaults to the provider id, `''` for bare names. */
|
|
13
13
|
namespace?: string;
|
|
14
14
|
/** The document cannot be edited: write tools are hidden. A string is the reason. */
|
|
15
15
|
readOnly?: boolean | string | (() => boolean | string);
|
package/dist/vector/index.cjs
CHANGED
|
@@ -541,7 +541,7 @@ var _chunkNM3G4VQTcjs = require('../chunk-NM3G4VQT.cjs');
|
|
|
541
541
|
|
|
542
542
|
|
|
543
543
|
|
|
544
|
-
var
|
|
544
|
+
var _chunkRUZQMYXHcjs = require('../chunk-RUZQMYXH.cjs');
|
|
545
545
|
require('../chunk-WOFXZ3XU.cjs');
|
|
546
546
|
|
|
547
547
|
|
|
@@ -7968,7 +7968,7 @@ var VectorEditorController = (_class7 = class _VectorEditorController {
|
|
|
7968
7968
|
}
|
|
7969
7969
|
// --- Provider effects ---
|
|
7970
7970
|
/** The effects provider slot (see `setEffectsProvider`). */
|
|
7971
|
-
__init59() {this.effects = new (0,
|
|
7971
|
+
__init59() {this.effects = new (0, _chunkRUZQMYXHcjs.EffectsSlot)()}
|
|
7972
7972
|
/** The registered effects provider, or `null`. */
|
|
7973
7973
|
get effectsProvider() {
|
|
7974
7974
|
return this.effects.provider;
|
|
@@ -7992,10 +7992,10 @@ var VectorEditorController = (_class7 = class _VectorEditorController {
|
|
|
7992
7992
|
/** The effect's picture as group children, scaled into `box` (an affine fit). */
|
|
7993
7993
|
async vectorEffectPicture(effect, values) {
|
|
7994
7994
|
const provider = this.effects.require();
|
|
7995
|
-
if (!provider.applyVectorEffect) throw new (0,
|
|
7995
|
+
if (!provider.applyVectorEffect) throw new (0, _chunkRUZQMYXHcjs.EffectUnsupportedError)(`${provider.name} has no vector effects.`);
|
|
7996
7996
|
const d = await provider.describe(effect);
|
|
7997
|
-
if (d.kind !== "vector") throw new (0,
|
|
7998
|
-
const resolved =
|
|
7997
|
+
if (d.kind !== "vector") throw new (0, _chunkRUZQMYXHcjs.EffectUnsupportedError)(`"${d.id}" (${d.name}) is a ${d.kind} effect; the vector editor adds vector effects, which bring their own picture${d.kind === "motion" ? " (apply motion in the animation editor)" : ""}.`, d.id);
|
|
7998
|
+
const resolved = _chunkRUZQMYXHcjs.resolveEffectValues.call(void 0, d, values);
|
|
7999
7999
|
const motion = await provider.applyVectorEffect(d.id, this.toSvg(), resolved);
|
|
8000
8000
|
const parsed = _chunkRCUX6CT2cjs.parseVectorSvg.call(void 0, motion.svg);
|
|
8001
8001
|
if (!parsed.nodes.length) throw new Error(`"${d.name}" drew no shapes the editor can read.`);
|
|
@@ -18396,7 +18396,10 @@ function createVectorGenerationToolProvider(controller, options) {
|
|
|
18396
18396
|
};
|
|
18397
18397
|
return {
|
|
18398
18398
|
id: _nullishCoalesce(options.id, () => ( "vector-generation")),
|
|
18399
|
-
...options.namespace ? { namespace: options.namespace } : {},
|
|
18399
|
+
...options.namespace !== void 0 ? { namespace: options.namespace } : {},
|
|
18400
|
+
title: "Vector generation",
|
|
18401
|
+
description: "Generate vector art from a prompt with a configured model, and regenerate it.",
|
|
18402
|
+
skill: "pixerate-vector",
|
|
18400
18403
|
tools: () => readOnly() ? [list] : [list, generate, regenerate],
|
|
18401
18404
|
// The write tools come and go with a read-only state that can change.
|
|
18402
18405
|
...typeof options.readOnly === "function" ? { subscribe: (notify) => controller.subscribe(() => notify()) } : {}
|
|
@@ -18551,9 +18554,12 @@ function createVectorEffectsToolProvider(controller, options = {}) {
|
|
|
18551
18554
|
const effects = _optionalChain([g, 'optionalAccess', _753 => _753.providerEffect]) ? [info(g)] : [];
|
|
18552
18555
|
return { target: id, effect: _nullishCoalesce(removed, () => ( effects[0])), effects };
|
|
18553
18556
|
};
|
|
18554
|
-
return
|
|
18557
|
+
return _chunkRUZQMYXHcjs.createEffectToolProvider.call(void 0, {
|
|
18555
18558
|
id: _nullishCoalesce(options.id, () => ( "vector-effects")),
|
|
18556
18559
|
namespace: options.namespace,
|
|
18560
|
+
title: "Vector effects",
|
|
18561
|
+
description: "Provider effects placed in the vector document as effect groups.",
|
|
18562
|
+
skill: "pixerate-vector",
|
|
18557
18563
|
target: { noun: "group", id: `For apply_effect: "document" for the top level, or a group id to put the picture in. For update_effect and remove_effect: the effect group's id from list_applied_effects.` },
|
|
18558
18564
|
applyUses: ["title", "overlay", "generator", "interactive"],
|
|
18559
18565
|
applyDetails: `Only vector effects (kind vector: lower thirds, stickers, loaders, badges) can be added: the effect's SVG at rest becomes a group of editable shapes, fitted into the middle half of the document and selected; move or scale it like any group. Its motion plays in the animation editor (add_vector_effect there). update_effect with effect "picture" draws it again with new values; remove_effect keeps the shapes as a plain group. index, enabled and opacity do not apply.`,
|
package/dist/vector/index.js
CHANGED
|
@@ -541,7 +541,7 @@ import {
|
|
|
541
541
|
EffectsSlot,
|
|
542
542
|
createEffectToolProvider,
|
|
543
543
|
resolveEffectValues
|
|
544
|
-
} from "../chunk-
|
|
544
|
+
} from "../chunk-7KWJEYIK.js";
|
|
545
545
|
import "../chunk-V2ZCJRDM.js";
|
|
546
546
|
import {
|
|
547
547
|
GRAIN_PATTERNS
|
|
@@ -18396,7 +18396,10 @@ function createVectorGenerationToolProvider(controller, options) {
|
|
|
18396
18396
|
};
|
|
18397
18397
|
return {
|
|
18398
18398
|
id: options.id ?? "vector-generation",
|
|
18399
|
-
...options.namespace ? { namespace: options.namespace } : {},
|
|
18399
|
+
...options.namespace !== void 0 ? { namespace: options.namespace } : {},
|
|
18400
|
+
title: "Vector generation",
|
|
18401
|
+
description: "Generate vector art from a prompt with a configured model, and regenerate it.",
|
|
18402
|
+
skill: "pixerate-vector",
|
|
18400
18403
|
tools: () => readOnly() ? [list] : [list, generate, regenerate],
|
|
18401
18404
|
// The write tools come and go with a read-only state that can change.
|
|
18402
18405
|
...typeof options.readOnly === "function" ? { subscribe: (notify) => controller.subscribe(() => notify()) } : {}
|
|
@@ -18554,6 +18557,9 @@ function createVectorEffectsToolProvider(controller, options = {}) {
|
|
|
18554
18557
|
return createEffectToolProvider({
|
|
18555
18558
|
id: options.id ?? "vector-effects",
|
|
18556
18559
|
namespace: options.namespace,
|
|
18560
|
+
title: "Vector effects",
|
|
18561
|
+
description: "Provider effects placed in the vector document as effect groups.",
|
|
18562
|
+
skill: "pixerate-vector",
|
|
18557
18563
|
target: { noun: "group", id: `For apply_effect: "document" for the top level, or a group id to put the picture in. For update_effect and remove_effect: the effect group's id from list_applied_effects.` },
|
|
18558
18564
|
applyUses: ["title", "overlay", "generator", "interactive"],
|
|
18559
18565
|
applyDetails: `Only vector effects (kind vector: lower thirds, stickers, loaders, badges) can be added: the effect's SVG at rest becomes a group of editable shapes, fitted into the middle half of the document and selected; move or scale it like any group. Its motion plays in the animation editor (add_vector_effect there). update_effect with effect "picture" draws it again with new values; remove_effect keeps the shapes as a plain group. index, enabled and opacity do not apply.`,
|
|
@@ -11,7 +11,7 @@ import { type VideoClip } from './types.cjs';
|
|
|
11
11
|
export interface VideoEffectsToolProviderOptions {
|
|
12
12
|
/** Provider id (unique per registry). Default `video-effects`. */
|
|
13
13
|
id?: string;
|
|
14
|
-
/**
|
|
14
|
+
/** Tool-name prefix (`<namespace>__<name>`); defaults to the provider id, `''` for bare names. */
|
|
15
15
|
namespace?: string;
|
|
16
16
|
/** The project cannot be edited: write tools are hidden. A string is the reason. */
|
|
17
17
|
readOnly?: boolean | string | (() => boolean | string);
|
|
@@ -11,7 +11,7 @@ import { type VideoClip } from './types.js';
|
|
|
11
11
|
export interface VideoEffectsToolProviderOptions {
|
|
12
12
|
/** Provider id (unique per registry). Default `video-effects`. */
|
|
13
13
|
id?: string;
|
|
14
|
-
/**
|
|
14
|
+
/** Tool-name prefix (`<namespace>__<name>`); defaults to the provider id, `''` for bare names. */
|
|
15
15
|
namespace?: string;
|
|
16
16
|
/** The project cannot be edited: write tools are hidden. A string is the reason. */
|
|
17
17
|
readOnly?: boolean | string | (() => boolean | string);
|