volito 0.3.0 → 0.3.1

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 CHANGED
@@ -67,7 +67,7 @@ stills, contact sheets and PNG frames do not. WebM needs an ffmpeg built with li
67
67
 
68
68
  ## The packs
69
69
 
70
- <img src=".github/assets/packs.jpg" alt="96 graphics in 10 packs: a render from each of Essentials, Broadcast, Social, Data, 3D, Transitions, Annotate, Type, Backdrops and Promo" width="100%">
70
+ <img src=".github/assets/packs.jpg" alt="107 graphics in 12 packs: a render from each of Essentials, Broadcast, Social, Data, 3D, Transitions, Annotate, Type, Backdrops, Promo, UI and Effects" width="100%">
71
71
 
72
72
  107 graphics in twelve packs. Every one takes any brand style and any aspect, and every part of it takes any move.
73
73
 
@@ -293,7 +293,7 @@ Cursor, Windsurf and other MCP clients:
293
293
  | `motion_review` | timing, 9:16 platform safe zones and a contact sheet per aspect, measured before rendering |
294
294
  | `motion_api` | the program API and the motion kit, for writing new graphics |
295
295
 
296
- Every tool takes an `item`, your own `code` or a `spec` file, plus `motion`, `mood`, `seed` and `speed`. A ready-made agent skill is in `skills/volito/SKILL.md` — `npx volito init` installs it for Claude Code, `npx skills add monarcpro/volito` for other agents, or copy it
296
+ The preview, still, check, review, render and sound tools take an `item`, your own `code` or a `spec` file, plus `motion`, `mood`, `seed` and `speed`. A ready-made agent skill is in `skills/volito/SKILL.md` — `npx volito init` installs it for Claude Code, `npx skills add monarcpro/volito` for other agents, or copy it
297
297
  to `~/.claude/skills/volito/` for Claude Code.
298
298
 
299
299
  ## Node API
package/dist/browser.js CHANGED
@@ -5060,8 +5060,8 @@ function facesFor(all, wants, cps) {
5060
5060
  }
5061
5061
 
5062
5062
  // src/browser/index.ts
5063
- var VERSION = "0.3.0";
5064
- var CDN_BASE = `https://cdn.jsdelivr.net/npm/${"volito"}@${"0.3.0"}/`;
5063
+ var VERSION = "0.3.1";
5064
+ var CDN_BASE = `https://cdn.jsdelivr.net/npm/${"volito"}@${"0.3.1"}/`;
5065
5065
  var registries = /* @__PURE__ */ new Map();
5066
5066
  function loadRegistry(base = CDN_BASE) {
5067
5067
  const url = new URL("dist/registry.json", base).href;
package/dist/mcp.js CHANGED
@@ -116,9 +116,26 @@ var failure = (err) => ({ isError: true, content: [{ type: "text", text: String(
116
116
  var warnings = (w) => w.length ? `
117
117
  Warnings:
118
118
  ${w.map((x) => `- ${x}`).join("\n")}` : "";
119
+ function mcpInstructions(packs) {
120
+ const total = packs.reduce((n, p) => n + p.entries.length, 0);
121
+ return [
122
+ "Volito renders brand-aware motion graphics to video files with alpha: lower thirds, titles, kinetic type, charts and maps, 3D, transitions, annotations, backgrounds, promos, UI micro-interactions and filter effects.",
123
+ "Find one with motion_list, read its props and parts with motion_info, look at it with motion_preview (a contact sheet image), measure its timing and 9:16 safe zones with motion_review, then motion_render to a file.",
124
+ packs.length ? `${total} graphics in ${packs.length} packs: ${packs.map((p) => `${p.id} (${p.entries.length})`).join(", ")}; motion_list says what each one is.` : "",
125
+ "Motion is open-ended: any part takes any move, ease, idle, emphasis or keyframes (motion_moves lists them) through `motion`, and `mood` + `seed` give a new choreography for every seed.",
126
+ 'The preview, still, check, review, render and sound tools take an `item`, your own `code`, or a Graphic spec (`spec`: a .json file with "volito": 1, or a .volito bundle) that keeps the whole recipe; motion_validate checks a spec before rendering.',
127
+ "To make something no item covers, write a program against motion_api (it includes 3D scenes and world maps) and use the same tools with `code`.",
128
+ "Every render can carry sound Volito synthesises itself (motion_render with sound: true, or motion_sound for the track alone): a program's own sound($) cues, else the right pops, whooshes, ticks and hits read from its motion."
129
+ ].filter(Boolean).join(" ");
130
+ }
119
131
  function createMcpServer(opts = {}) {
120
132
  const lib = () => library(opts.packs ?? []);
121
- const server = new McpServer({ name: "volito", version: packageVersion() }, { instructions: "Volito renders brand-aware motion graphics (lower thirds, titles, CTAs, stats, lists, end cards\u2026) to video files with alpha. Find one with motion_list, read its props and parts with motion_info, look at it with motion_preview (a contact sheet image), then motion_render to a file. Motion is open-ended: any part takes any move, ease, idle, emphasis or keyframes (motion_moves lists them) through `motion`, and `mood` + `seed` give a new choreography for every seed. Packs: essentials, broadcast (lower thirds, tickers, score bugs), social (follow cards, notifications, chat), data (charts, maps, flight routes) and 3d (extruded logos and titles, card flips, globes). To make something no item covers, write a program against motion_api (it includes 3D scenes and world maps) and use the same tools with `code`. Every render can carry sound Volito synthesises itself (motion_render with sound: true, or motion_sound for the track alone): a program's own sound($) cues, else the right pops, whooshes, ticks and hits read from its motion." });
133
+ let packs = [];
134
+ try {
135
+ packs = lib().packs;
136
+ } catch {
137
+ }
138
+ const server = new McpServer({ name: "volito", version: packageVersion() }, { instructions: mcpInstructions(packs) });
122
139
  server.registerTool(
123
140
  "motion_list",
124
141
  { title: "List motion graphics", description: "The graphics in the packs: ref, overlay or full frame, default length, what it is.", inputSchema: { search: z.string().optional().describe("Words to match (e.g. 'name', 'subscribe', 'chart')."), category: z.enum(CATEGORIES).optional() } },
@@ -340,5 +357,6 @@ async function runMcpServer(opts = {}) {
340
357
  }
341
358
  export {
342
359
  createMcpServer,
360
+ mcpInstructions,
343
361
  runMcpServer
344
362
  };
package/dist/player.js CHANGED
@@ -5015,8 +5015,8 @@ function facesFor(all, wants, cps) {
5015
5015
  }
5016
5016
 
5017
5017
  // src/browser/index.ts
5018
- var VERSION = "0.3.0";
5019
- var CDN_BASE = `https://cdn.jsdelivr.net/npm/${"volito"}@${"0.3.0"}/`;
5018
+ var VERSION = "0.3.1";
5019
+ var CDN_BASE = `https://cdn.jsdelivr.net/npm/${"volito"}@${"0.3.1"}/`;
5020
5020
  var registries = /* @__PURE__ */ new Map();
5021
5021
  function loadRegistry(base = CDN_BASE) {
5022
5022
  const url = new URL("dist/registry.json", base).href;