@milenyumai/film-kit 1.0.5 → 1.2.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
@@ -1,6 +1,6 @@
1
1
  # Film-Kit: Hollywood-Standard Cinematic Prompt Engineering
2
2
 
3
- **Film-Kit**, Google Veo 3.1 ve Flow için optimize edilmiş, profesyonel "Prompt Engineering" ajanlarını (Claude Code, Cursor) projenize kuran bir araç setidir.
3
+ **Film-Kit**, model-seçilebilir sinematik prompt mühendisliği ajanlarını (Claude Code, Cursor, VS Code Copilot, Antigravity) projenize kuran bir araç setidir.
4
4
 
5
5
  İki versiyonu vardır:
6
6
  1. **Film-Kit (Core):** Tek ajanlı, manuel kontrollü üretim.
@@ -15,13 +15,49 @@ Yani kaynak kod için tek "source of truth" vardır: `film-kit` reposu.
15
15
 
16
16
  ---
17
17
 
18
+ ## 🎯 Model Desteği
19
+
20
+ | Model ID | Durum | Not |
21
+ |----------|-------|-----|
22
+ | `veo31` | ✅ Destekleniyor | Flow/Veo prompt akışı, Image-to-Video, Re-Take Strategy |
23
+ | `kling-3.0` | ✅ Destekleniyor | Start+End, Multi-Shot (2-6), Element Binding, vCoT, Native Audio |
24
+
25
+ Soft geçiş politikası:
26
+ - `--model` verilmezse geçici olarak `veo31` atanır.
27
+ - CLI bir deprecation warning basar: gelecek major sürümde model zorunlu olacak.
28
+ - Alternatif: `FILM_KIT_MODEL=kling-3.0` environment variable ile default ayarlanabilir.
29
+
30
+ Kling preset:
31
+ - Varsayılan: `ultra-realism`
32
+ - Varsayılan CFG hedefi: `0.45`
33
+
34
+ ### v1.2.0 — Yeni Özellikler
35
+
36
+ **Kling 3.0:**
37
+ - Golden Prompt Skeleton (6-step Start+End)
38
+ - 3 copy-paste template (Minimal Realism, Swap, Loop)
39
+ - Multi-Shot Protocol (2-6 shots, `Shot X,` prefix)
40
+ - Element Binding (karakter/nesne tutarlılığı)
41
+ - Advanced Camera (vCoT triggers: Dolly Zoom, Dutch angle, Bird's-eye)
42
+ - Native Audio (tonlama, lip sync, narrative SFX)
43
+ - Troubleshooting guide + 10-point checklist
44
+
45
+ **Veo 3.1:**
46
+ - Image-to-Video entropy rule (stil tekrarı yok)
47
+ - Re-Take Strategy table (7 hata tipi + seed yönetimi)
48
+
49
+ ---
50
+
18
51
  ## 📦 Paket 1: Film-Kit (Core)
19
52
  **Kullanım:** Bireysel projeler, öğrenme, <10 shot senaryolar.
53
+ **Platformlar:** Claude Code + Cursor + Copilot + Antigravity
20
54
 
21
55
  ### Kurulum (Tek Komut)
22
56
  Boş bir klasörde terminali açın:
23
57
  ```bash
24
58
  npx @milenyumai/film-kit init
59
+ npx @milenyumai/film-kit init --model veo31
60
+ npx @milenyumai/film-kit init --model kling-3.0 --kling-preset ultra-realism
25
61
  ```
26
62
 
27
63
  ### Kullanım
@@ -31,11 +67,18 @@ Claude Code içinde:
31
67
  ```
32
68
  Tek bir ajan ("Prompt Engineer") senaryoyu okur, analiz eder ve shotları sırayla üretir.
33
69
 
70
+ Antigravity içinde:
71
+ - Skill: `.agent/skills/shotforge-generate/SKILL.md`
72
+ - Çalışma şekli: tek ajanlı, yüksek kontrol, shot-by-shot üretim
73
+
34
74
  **Özellikler:**
35
75
  - Veo 3.1 Prompt Flow (Subject > Action > Camera > Light)
76
+ - Kling 3.0 Start+End geçiş kuralları (model-profile üzerinden)
36
77
  - Profesyonel Audio Blocks (Dialogue, SFX, Mix)
37
78
  - Zorunlu Avoid Line
38
79
  - Auto-Safety & Auto-Anonymous
80
+ - Hard Quality Gate: `ILK>=80`, `SON>=80`, `VIDEO>=120`, `Coverage>=70` kelime
81
+ - Specificity Gate: lens + ışık + FG/MG/BG aksiyon detayı zorunlu
39
82
 
40
83
  ---
41
84
 
@@ -47,6 +90,8 @@ Tek bir ajan ("Prompt Engineer") senaryoyu okur, analiz eder ve shotları sıray
47
90
  Boş bir klasörde terminali açın:
48
91
  ```bash
49
92
  npx @milenyumai/film-kit-multi init
93
+ npx @milenyumai/film-kit-multi init --model veo31
94
+ npx @milenyumai/film-kit-multi init --model kling-3.0 --kling-preset ultra-realism
50
95
  ```
51
96
 
52
97
  ### Kullanım
@@ -65,7 +110,7 @@ Antigravity içinde:
65
110
  **Süreç:**
66
111
  1. **Planning:** Lead Director senaryoyu analiz eder, `team-plan.json` oluşturur.
67
112
  2. **Casting:** İhtiyaca göre 5'e kadar **Shot Generator** ajanı spawn eder.
68
- 3. **Execution:** Ajanlar shotları (Min 60 kelime + coverage) paralel üretir.
113
+ 3. **Execution:** Ajanlar shotları hard quality gate ile paralel üretir (`ILK>=80`, `SON>=80`, `VIDEO>=120`, `Coverage>=70`).
69
114
  4. **Validation:** 3 Uzman Ajan devreye girer:
70
115
  - `continuity-editor`: Zincirleme (chain) hatalarını yakalar.
71
116
  - `safety-auditor`: Güvenlik ve anonimlik ihlallerini tarar.
@@ -74,6 +119,34 @@ Antigravity içinde:
74
119
 
75
120
  ---
76
121
 
122
+ ## ⚙️ Config Dosyaları
123
+
124
+ Core (`shotforge-agent.config.json`):
125
+
126
+ ```json
127
+ {
128
+ "outputDir": "./outputs",
129
+ "scenarioHint": "scenario.md",
130
+ "model": "kling-3.0",
131
+ "klingPreset": "ultra-realism"
132
+ }
133
+ ```
134
+
135
+ Multi (`film-kit-multi.config.json`):
136
+
137
+ ```json
138
+ {
139
+ "outputDir": "./outputs",
140
+ "scenarioHint": "scenario.md",
141
+ "model": "kling-3.0",
142
+ "klingPreset": "ultra-realism",
143
+ "maxTeammates": 5,
144
+ "batchSize": 4
145
+ }
146
+ ```
147
+
148
+ ---
149
+
77
150
  ## ⚡ Komut Referansı (Slash Commands)
78
151
 
79
152
  | Komut | Paket | İşlev |
@@ -92,6 +165,7 @@ Antigravity içinde:
92
165
  |---------|-----------------|----------------------|
93
166
  | **Mimari** | Tek Ajan | Lead + Teammates + Specialists |
94
167
  | **Hız (20 Shot)** | ~60 dk | ~20 dk (Paralel) |
168
+ | **Kalite Gate** | Hard prompt gate | Hard prompt gate + specialist gate |
95
169
  | **Tutarlılık** | Manuel Kontrol | `continuity-editor` Denetimi |
96
170
  | **Güvenlik** | Prompt İçi Filtre | `safety-auditor` Taraması |
97
171
  | **Planlama** | Yok | `team-plan.json` Kontratlı |
@@ -102,7 +176,7 @@ Antigravity içinde:
102
176
  ## 🛠 Gereksinimler
103
177
  - **Node.js:** v20+
104
178
  - **Claude Code:** `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` (Sadece Multi için)
105
- - **Editör:** VS Code, Cursor veya Terminal
179
+ - **Editör/Platform:** VS Code, Cursor, Claude Code veya Antigravity
106
180
 
107
181
  ## 📄 Lisans
108
182
  MIT
package/build/cli.js CHANGED
@@ -3,13 +3,51 @@ import { configureAgents } from "./lib/configure.js";
3
3
  const args = process.argv.slice(2);
4
4
  const command = args[0];
5
5
  const overwrite = args.includes("--overwrite") || args.includes("-f");
6
+ const SUPPORTED_MODELS = ["veo31", "kling-3.0"];
7
+ const SUPPORTED_KLING_PRESETS = ["ultra-realism", "balanced", "custom"];
8
+ function parseFlagValue(flag) {
9
+ const exactIndex = args.indexOf(flag);
10
+ if (exactIndex >= 0 && args[exactIndex + 1]) {
11
+ return args[exactIndex + 1];
12
+ }
13
+ const prefixed = args.find(a => a.startsWith(`${flag}=`));
14
+ if (prefixed) {
15
+ return prefixed.slice(flag.length + 1);
16
+ }
17
+ return undefined;
18
+ }
19
+ function parseModel() {
20
+ const modelRaw = parseFlagValue("--model");
21
+ if (!modelRaw)
22
+ return undefined;
23
+ if (SUPPORTED_MODELS.includes(modelRaw)) {
24
+ return modelRaw;
25
+ }
26
+ throw new Error(`Invalid --model value: ${modelRaw}. Supported: ${SUPPORTED_MODELS.join(", ")}`);
27
+ }
28
+ function parseKlingPreset() {
29
+ const presetRaw = parseFlagValue("--kling-preset");
30
+ if (!presetRaw)
31
+ return undefined;
32
+ if (SUPPORTED_KLING_PRESETS.includes(presetRaw)) {
33
+ return presetRaw;
34
+ }
35
+ throw new Error(`Invalid --kling-preset value: ${presetRaw}. Supported: ${SUPPORTED_KLING_PRESETS.join(", ")}`);
36
+ }
6
37
  if (command === "init") {
7
38
  console.log("🎬 Film-Kit: Configuring AI agents...\n");
8
39
  try {
9
- const result = await configureAgents({
40
+ const model = parseModel();
41
+ const klingPreset = parseKlingPreset();
42
+ const configureOptions = {
10
43
  rootDir: process.cwd(),
11
44
  overwrite
12
- });
45
+ };
46
+ if (model)
47
+ configureOptions.model = model;
48
+ if (klingPreset)
49
+ configureOptions.klingPreset = klingPreset;
50
+ const result = await configureAgents(configureOptions);
13
51
  if (result.written.length > 0) {
14
52
  console.log(`✅ Files written: ${result.written.length}`);
15
53
  result.written.forEach(f => console.log(` ${f}`));
@@ -17,6 +55,10 @@ if (command === "init") {
17
55
  if (result.skipped.length > 0) {
18
56
  console.log(`⏭️ Files skipped (already exist): ${result.skipped.length}`);
19
57
  }
58
+ if (result.warnings.length > 0) {
59
+ console.log("\n⚠️ Warnings:");
60
+ result.warnings.forEach(w => console.log(` - ${w}`));
61
+ }
20
62
  console.log("\n🎬 Done! Your AI agents are configured for Hollywood-grade prompt engineering.");
21
63
  console.log(" Use /generate in your AI editor to start creating shots.\n");
22
64
  }
@@ -27,11 +69,13 @@ if (command === "init") {
27
69
  }
28
70
  else {
29
71
  console.log(`
30
- 🎬 @milenyumai/film-kit — Hollywood-grade prompt engineering for Veo 3.1
72
+ 🎬 @milenyumai/film-kit — Hollywood-grade prompt engineering (Veo 3.1 + Kling 3.0)
31
73
 
32
74
  Usage:
33
- npx @milenyumai/film-kit init Configure AI agents in current directory
34
- npx @milenyumai/film-kit init --overwrite Force update existing .agent content files
75
+ npx @milenyumai/film-kit init Configure AI agents in current directory
76
+ npx @milenyumai/film-kit init --model veo31|kling-3.0 Select target model profile
77
+ npx @milenyumai/film-kit init --model kling-3.0 --kling-preset ultra-realism|balanced|custom
78
+ npx @milenyumai/film-kit init --overwrite Force update existing .agent content files
35
79
 
36
80
  Or install as a dependency (auto-configures on install):
37
81
  npm install --save-dev @milenyumai/film-kit
package/build/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  export { configureAgents } from "./lib/configure.js";
2
- export type { AgentConfigOptions, ConfigureResult, SupportedPlatform } from "./lib/types.js";
2
+ export type { AgentConfigOptions, ConfigureResult, KlingPreset, SupportedModel, SupportedPlatform } from "./lib/types.js";
@@ -64,8 +64,14 @@ function renderContentTemplate(content, vars) {
64
64
  return content
65
65
  .replaceAll("$OUTPUT_DIR", vars.outputDir)
66
66
  .replaceAll("$SCENARIO_HINT", vars.scenarioHint)
67
+ .replaceAll("$MODEL_DISPLAY", vars.modelDisplayName)
68
+ .replaceAll("$MODEL", vars.model)
69
+ .replaceAll("$KLING_PRESET", vars.klingPreset)
67
70
  .replaceAll("$ARGUMENTS", "");
68
71
  }
72
+ function getModelDisplayName(model) {
73
+ return model === "kling-3.0" ? "Kling 3.0" : "Google Flow + Veo 3.1";
74
+ }
69
75
  export async function configureAgents(options = {}) {
70
76
  const rootDir = options.rootDir ?? process.cwd();
71
77
  const packageConfigPath = join(rootDir, "shotforge-agent.config.json");
@@ -74,6 +80,8 @@ export async function configureAgents(options = {}) {
74
80
  const outputDir = options.outputDir ?? fromFile?.outputDir;
75
81
  const scenarioHint = options.scenarioHint ?? fromFile?.scenarioHint;
76
82
  const platforms = options.platforms ?? fromFile?.platforms;
83
+ const model = options.model ?? fromFile?.model;
84
+ const klingPreset = options.klingPreset ?? fromFile?.klingPreset;
77
85
  const overwrite = options.overwrite ?? fromFile?.overwrite;
78
86
  const includeAgentsMd = options.includeAgentsMd ?? fromFile?.includeAgentsMd;
79
87
  const copyContent = options.copyContent ?? fromFile?.copyContent;
@@ -83,6 +91,10 @@ export async function configureAgents(options = {}) {
83
91
  merged.scenarioHint = scenarioHint;
84
92
  if (platforms !== undefined)
85
93
  merged.platforms = platforms;
94
+ if (model !== undefined)
95
+ merged.model = model;
96
+ if (klingPreset !== undefined)
97
+ merged.klingPreset = klingPreset;
86
98
  if (overwrite !== undefined)
87
99
  merged.overwrite = overwrite;
88
100
  if (includeAgentsMd !== undefined)
@@ -94,7 +106,10 @@ export async function configureAgents(options = {}) {
94
106
  const contentResult = resolved.copyContent
95
107
  ? await copyContentFiles(resolved.rootDir, resolved.overwrite, {
96
108
  outputDir: resolved.outputDir,
97
- scenarioHint: resolved.scenarioHint
109
+ scenarioHint: resolved.scenarioHint,
110
+ model: resolved.model,
111
+ klingPreset: resolved.klingPreset,
112
+ modelDisplayName: getModelDisplayName(resolved.model)
98
113
  })
99
114
  : { written: [], skipped: [] };
100
115
  // 2. Generate platform-specific config files
@@ -104,7 +119,8 @@ export async function configureAgents(options = {}) {
104
119
  for (const [relativePath, content] of Object.entries(files)) {
105
120
  const absolutePath = join(resolved.rootDir, relativePath);
106
121
  const fileExists = await exists(absolutePath);
107
- if (fileExists && !resolved.overwrite) {
122
+ const isRuntimeModelFile = relativePath === ".agent/model-profile.md";
123
+ if (fileExists && !isRuntimeModelFile && !resolved.overwrite) {
108
124
  skipped.push(relativePath);
109
125
  continue;
110
126
  }
@@ -114,6 +130,7 @@ export async function configureAgents(options = {}) {
114
130
  return {
115
131
  rootDir: resolved.rootDir,
116
132
  written,
117
- skipped
133
+ skipped,
134
+ warnings: resolved.warnings
118
135
  };
119
136
  }
@@ -1,12 +1,23 @@
1
1
  const ALL_PLATFORMS = ["cursor", "claude", "copilot", "antigravity"];
2
+ const DEFAULT_MODEL = "veo31";
3
+ const DEFAULT_KLING_PRESET = "ultra-realism";
2
4
  export function resolveOptions(input) {
5
+ const warnings = [];
6
+ const model = input.model ?? DEFAULT_MODEL;
7
+ const klingPreset = input.klingPreset ?? DEFAULT_KLING_PRESET;
8
+ if (!input.model) {
9
+ warnings.push("Model not specified. Falling back to veo31. In the next major release, --model will be required.");
10
+ }
3
11
  return {
4
12
  rootDir: input.rootDir ?? process.cwd(),
5
13
  outputDir: input.outputDir ?? "./outputs",
6
14
  scenarioHint: input.scenarioHint ?? "scenario.md",
7
15
  platforms: (input.platforms && input.platforms.length > 0 ? input.platforms : ALL_PLATFORMS).slice(),
16
+ model,
17
+ klingPreset,
8
18
  overwrite: input.overwrite ?? false,
9
19
  includeAgentsMd: input.includeAgentsMd ?? true,
10
- copyContent: input.copyContent ?? true
20
+ copyContent: input.copyContent ?? true,
21
+ warnings
11
22
  };
12
23
  }