@amg555/frameforge-mcp 2.7.7 → 2.7.8

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.
@@ -2,7 +2,7 @@
2
2
  "name": "frameforge",
3
3
  "displayName": "FrameForge — AI Video Production",
4
4
  "description": "Full AI video production engine. Produce short-form reels (1080×1920), YouTube videos (1920×1080), or code-driven animated explainers — directly from your IDE. Playwright + FFmpeg renders every frame. 34 MCP tools. Whisper, yt-dlp, broadcast audio, 24 film styles, ClaudeAnimationBase, onetake 39-move library, HyperFrames motion craft. 62 Motion Graphics Styles.",
5
- "version": "2.7.7",
5
+ "version": "2.7.8",
6
6
  "homepage": "https://github.com/AMG555/FrameForge",
7
7
  "plugins": [
8
8
  {
package/CHANGELOG.md CHANGED
@@ -4,11 +4,11 @@ All notable changes to FrameForge are documented here.
4
4
 
5
5
  ---
6
6
 
7
- ## [2.7.7] — 2026-11-12
7
+ ## [2.7.8] — 2026-11-12
8
8
 
9
9
  ### Changed
10
10
  - Slimmed npm tarball distribution: excluded `.agent/` cache and vendor artifacts via `.npmignore` (size reduced from 48MB to 28MB).
11
- - Upgraded version manifests across core MCP server and sync engine to v2.7.7.
11
+ - Upgraded version manifests across core MCP server and sync engine to v2.7.8.
12
12
 
13
13
  ---
14
14
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amg555/frameforge-mcp",
3
- "version": "2.7.7",
3
+ "version": "2.7.8",
4
4
  "description": "FrameForge — Universal AI video creation & autonomous editing engine for any AI agent, CLI, or IDE. npx @amg555/frameforge-mcp. FFmpeg + TTS on your machine. 34 MCP tools. Whisper transcription, yt-dlp ingestion, broadcast-grade audio, 62 procedural motion styles, 6 viral faceless shorts engines, autonomous video editor with retake/silence cutting, J/L-cuts, timeline export to DaVinci/Premiere.",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "video-pipeline",
3
3
  "displayName": "FrameForge Video Pipeline",
4
- "version": "2.7.7",
4
+ "version": "2.7.8",
5
5
  "description": "End-to-end AI video production. IDE writes scenes → FrameForge renders. Or: scaffold a Playwright+ffmpeg code-driven animation. Or: auto-research and script the video.",
6
6
  "skills": [
7
7
  {
@@ -135,7 +135,7 @@
135
135
  "status": "synced"
136
136
  }
137
137
  },
138
- "version": "2.7.7",
138
+ "version": "2.7.8",
139
139
  "updatedCount": 0,
140
140
  "pendingUpdates": [
141
141
  {
@@ -403,7 +403,7 @@ No network requests — reads the local manifest only. Returns:
403
403
  ```json
404
404
  {
405
405
  "lastSync": "2026-11-11T20:00:00Z",
406
- "manifestVersion": "2.7.7",
406
+ "manifestVersion": "2.7.8",
407
407
  "totalRepos": 11,
408
408
  "syncedCount": 11,
409
409
  "repos": [
@@ -20,7 +20,7 @@ check('batch handling', code.includes('Array.isArray(body)'));
20
20
  check('ping handler', code.includes("method === 'ping'"));
21
21
  check('notifications/init', code.includes("notifications/initialized"));
22
22
  check('body size limit', code.includes('MAX_BODY_BYTES'));
23
- check('SERVER_INFO version 2.7.7', code.includes("version: '2.7.7'"));
23
+ check('SERVER_INFO version 2.7.8', code.includes("version: '2.7.8'"));
24
24
  check('18 tools defined (incl get_job_status)', code.includes('get_job_status'));
25
25
  check('export_to_editor tool defined', code.includes('export_to_editor'));
26
26
  check('edit_video tool defined', code.includes('edit_video'));
@@ -368,7 +368,7 @@ check('cf-worker has checkRateLimit', cfWorker.includes('checkRateLimit'));
368
368
  check('cf-worker hashes token (SHA-256)', cfWorker.includes('SHA-256'));
369
369
  check('cf-worker uses RATE_LIMITS KV', cfWorker.includes('env.RATE_LIMITS'));
370
370
  check('cf-worker returns 429 on limit', cfWorker.includes('429'));
371
- check('cf-worker version 2.7.7', cfWorker.includes("'2.7.7'"));
371
+ check('cf-worker version 2.7.8', cfWorker.includes("'2.7.8'"));
372
372
  check('wrangler.toml has kv_namespaces',fs.readFileSync('./cloudflare-mcp/wrangler.toml','utf8').includes('kv_namespaces'));
373
373
 
374
374
  // ── plugins/skills present ────────────────────────────────────────────────
@@ -2124,7 +2124,7 @@ Professional audio rules applied:
2124
2124
  planMd += `- L-cuts: current audio extends 0.3s into next clip's video\n\n`;
2125
2125
  planMd += `## 🚀 Execution & Approval\n\n`;
2126
2126
  planMd += `Review this plan, then execute with \`edit_video\` using the payload in \`edit.json\`.\n`;
2127
- planMd += `\nGenerated by FrameForge v2.7.7 — plan_video_edit with J/L-cut support (lemo-opuscar DIRECTOR.md)\n`;
2127
+ planMd += `\nGenerated by FrameForge v2.7.8 — plan_video_edit with J/L-cut support (lemo-opuscar DIRECTOR.md)\n`;
2128
2128
 
2129
2129
  // 8. Build TREATMENT.md (lemo-opuscar DIRECTOR.md — 8-section format)
2130
2130
  let treatmentMd = '';
@@ -2165,7 +2165,7 @@ Professional audio rules applied:
2165
2165
  treatmentMd += `## 8. Director Notes\n\n`;
2166
2166
  treatmentMd += `_Add creative direction, mood references, or client notes here._\n\n`;
2167
2167
  treatmentMd += `---\n\n`;
2168
- treatmentMd += `*Generated by FrameForge v2.7.7 — lemo-opuscar DIRECTOR.md format*\n`;
2168
+ treatmentMd += `*Generated by FrameForge v2.7.8 — lemo-opuscar DIRECTOR.md format*\n`;
2169
2169
  }
2170
2170
 
2171
2171
  // 9. Write outputs
@@ -2246,7 +2246,7 @@ Professional audio rules applied:
2246
2246
  handler: async () => {
2247
2247
  const syncFs = require('fs');
2248
2248
  const { MANIFEST_PATH, REPOSITORIES } = require('../skills/sync-upstream');
2249
- let manifest = { lastSync: null, repos: {}, version: '2.7.7', pendingUpdates: [] };
2249
+ let manifest = { lastSync: null, repos: {}, version: '2.7.8', pendingUpdates: [] };
2250
2250
  if (syncFs.existsSync(MANIFEST_PATH)) {
2251
2251
  try { manifest = JSON.parse(syncFs.readFileSync(MANIFEST_PATH, 'utf8')); } catch (_) {}
2252
2252
  }
@@ -2293,7 +2293,7 @@ Professional audio rules applied:
2293
2293
  return {
2294
2294
  success: true,
2295
2295
  lastSync: manifest.lastSync,
2296
- manifestVersion: manifest.version || '2.7.7',
2296
+ manifestVersion: manifest.version || '2.7.8',
2297
2297
  totalRepos: repos.length,
2298
2298
  syncedCount,
2299
2299
  pendingUpdates,
@@ -3536,7 +3536,7 @@ Get a style id from list_motion_styles first. Source: FrameForge Motion Library
3536
3536
 
3537
3537
  const SERVER_INFO = {
3538
3538
  name: 'video-pipeline',
3539
- version: '2.7.7',
3539
+ version: '2.7.8',
3540
3540
  };
3541
3541
 
3542
3542
  const CAPABILITIES = {
@@ -117,7 +117,7 @@ function fetchJson(url) {
117
117
  return new Promise((resolve, reject) => {
118
118
  const opts = {
119
119
  headers: {
120
- 'User-Agent': 'FrameForge-Skill-Sync/2.7.7',
120
+ 'User-Agent': 'FrameForge-Skill-Sync/2.7.8',
121
121
  'Accept': 'application/vnd.github.v3+json',
122
122
  },
123
123
  };
@@ -188,7 +188,7 @@ async function syncSkills(opts = {}) {
188
188
  const updatedResults = results.filter(r => r.updated);
189
189
 
190
190
  manifest.lastSync = new Date().toISOString();
191
- manifest.version = '2.7.7';
191
+ manifest.version = '2.7.8';
192
192
  manifest.updatedCount = updatedCount;
193
193
  if (updatedResults.length > 0) {
194
194
  manifest.pendingUpdates = updatedResults.map(r => {
@@ -278,7 +278,7 @@ function getUpstreamSummary() {
278
278
  return {
279
279
  repoCount,
280
280
  lastSync: manifest.lastSync,
281
- version: manifest.version || '2.7.7',
281
+ version: manifest.version || '2.7.8',
282
282
  pendingUpdates: pending,
283
283
  hasUpdates: pending.length > 0,
284
284
  repos: manifest.repos || {},