tuna-agent 0.1.146 → 0.1.147

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.
@@ -280,7 +280,7 @@ Return ONLY a JSON object, no markdown fences:
280
280
 
281
281
  Rules:
282
282
  - characters.name: a stable short uppercase label reused for this subject (e.g. "THE BISHOP", "U-94 SUBMARINE"). Max 4 words.
283
- - Only RECURRING subjects worth a reference sheet. Skip one-off extras. Max 6.
283
+ - RECALL (CRITICAL): list EVERY distinct recurring subject SEPARATELY. If a family or group recurs, include EACH member as its own entry (e.g. adult man, adult woman, older boy, younger girl) — never merge them into one. Skip only true one-off background extras. Be COMPLETE: missing a recurring character is worse than one extra. Up to 8.
284
284
  - characters.description: ENGLISH only, factual, no camera/action words.
285
285
  - DISTINCT FACES (CRITICAL): every character MUST have a HIGHLY UNIQUE facial structure, a distinct hairstyle, a specific body type and a clearly different age. NEVER reuse the same or a similar facial description for two characters — they must look completely different from one another.`,
286
286
  },
@@ -308,7 +308,7 @@ Rules:
308
308
  }
309
309
  const characters = (parsed.characters || [])
310
310
  .filter(c => c && c.name && c.description)
311
- .slice(0, 6)
311
+ .slice(0, 8)
312
312
  .map(c => ({ name: String(c.name).trim(), description: String(c.description).trim() }));
313
313
  const video_summary = (parsed.video_summary || '').trim();
314
314
  const video_style = (parsed.video_style || '').trim();
@@ -518,8 +518,10 @@ export async function analyzeVideo(url, onProgress) {
518
518
  // master cast + characters. Runs before per-scene describe so the cast
519
519
  // context keeps naming consistent across the whole timeline.
520
520
  progress('Đang phân tích tổng thể (summary + style + master cast)...');
521
- // Sample up to 12 frames evenly across the whole video.
522
- const p1SampleCount = Math.min(12, frameBuffers.length);
521
+ // Sample up to 30 frames evenly across the whole video — denser sampling
522
+ // is critical for cast RECALL on sparse-narration (ASMR) videos where
523
+ // Phase-1 relies almost entirely on frames (matches AI_Video_Clone).
524
+ const p1SampleCount = Math.min(30, frameBuffers.length);
523
525
  const p1Step = Math.max(1, Math.floor(frameBuffers.length / p1SampleCount));
524
526
  const p1Samples = frameBuffers
525
527
  .filter((_, i) => i % p1Step === 0)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tuna-agent",
3
- "version": "0.1.146",
3
+ "version": "0.1.147",
4
4
  "description": "Tuna Agent - Run AI coding tasks on your machine",
5
5
  "bin": {
6
6
  "tuna-agent": "dist/cli/index.js"