@kenkaiiii/gg-editor 0.6.2 → 0.6.4

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.
Files changed (114) hide show
  1. package/README.md +5 -1
  2. package/dist/core/doctor-runner.js +45 -11
  3. package/dist/core/doctor-runner.js.map +1 -1
  4. package/dist/core/hosts/lazy.d.ts +5 -5
  5. package/dist/core/hosts/lazy.d.ts.map +1 -1
  6. package/dist/core/hosts/lazy.js +16 -0
  7. package/dist/core/hosts/lazy.js.map +1 -1
  8. package/dist/core/hosts/premiere/adapter.d.ts +4 -1
  9. package/dist/core/hosts/premiere/adapter.d.ts.map +1 -1
  10. package/dist/core/hosts/premiere/adapter.js +6 -5
  11. package/dist/core/hosts/premiere/adapter.js.map +1 -1
  12. package/dist/core/hosts/premiere/bridge-source.d.ts.map +1 -1
  13. package/dist/core/hosts/premiere/bridge-source.js +45 -0
  14. package/dist/core/hosts/premiere/bridge-source.js.map +1 -1
  15. package/dist/core/hosts/resolve/adapter.d.ts +6 -2
  16. package/dist/core/hosts/resolve/adapter.d.ts.map +1 -1
  17. package/dist/core/hosts/resolve/adapter.js +13 -5
  18. package/dist/core/hosts/resolve/adapter.js.map +1 -1
  19. package/dist/core/hosts/resolve/bridge-source.d.ts.map +1 -1
  20. package/dist/core/hosts/resolve/bridge-source.js +376 -2
  21. package/dist/core/hosts/resolve/bridge-source.js.map +1 -1
  22. package/dist/core/hosts/resolve/bridge.d.ts +22 -4
  23. package/dist/core/hosts/resolve/bridge.d.ts.map +1 -1
  24. package/dist/core/hosts/resolve/bridge.integration.test.js +338 -0
  25. package/dist/core/hosts/resolve/bridge.integration.test.js.map +1 -1
  26. package/dist/core/hosts/resolve/bridge.js +56 -6
  27. package/dist/core/hosts/resolve/bridge.js.map +1 -1
  28. package/dist/core/hosts/resolve/bridge.test.js +61 -1
  29. package/dist/core/hosts/resolve/bridge.test.js.map +1 -1
  30. package/dist/core/hosts/types.d.ts +81 -0
  31. package/dist/core/hosts/types.d.ts.map +1 -1
  32. package/dist/core/hosts/types.js.map +1 -1
  33. package/dist/core/safe-paths.d.ts +47 -0
  34. package/dist/core/safe-paths.d.ts.map +1 -0
  35. package/dist/core/safe-paths.js +102 -0
  36. package/dist/core/safe-paths.js.map +1 -0
  37. package/dist/core/safe-paths.test.d.ts +2 -0
  38. package/dist/core/safe-paths.test.d.ts.map +1 -0
  39. package/dist/core/safe-paths.test.js +76 -0
  40. package/dist/core/safe-paths.test.js.map +1 -0
  41. package/dist/skills.d.ts.map +1 -1
  42. package/dist/skills.js +125 -0
  43. package/dist/skills.js.map +1 -1
  44. package/dist/system-prompt.d.ts.map +1 -1
  45. package/dist/system-prompt.js +33 -1
  46. package/dist/system-prompt.js.map +1 -1
  47. package/dist/tools/compose-layered.d.ts.map +1 -1
  48. package/dist/tools/compose-layered.js +2 -1
  49. package/dist/tools/compose-layered.js.map +1 -1
  50. package/dist/tools/compose-thumbnail.d.ts.map +1 -1
  51. package/dist/tools/compose-thumbnail.js +10 -2
  52. package/dist/tools/compose-thumbnail.js.map +1 -1
  53. package/dist/tools/concat-videos.d.ts.map +1 -1
  54. package/dist/tools/concat-videos.js +2 -1
  55. package/dist/tools/concat-videos.js.map +1 -1
  56. package/dist/tools/cut-filler-words.d.ts.map +1 -1
  57. package/dist/tools/cut-filler-words.js +2 -1
  58. package/dist/tools/cut-filler-words.js.map +1 -1
  59. package/dist/tools/extract-frame.d.ts.map +1 -1
  60. package/dist/tools/extract-frame.js +9 -2
  61. package/dist/tools/extract-frame.js.map +1 -1
  62. package/dist/tools/fusion-comp.d.ts +49 -0
  63. package/dist/tools/fusion-comp.d.ts.map +1 -0
  64. package/dist/tools/fusion-comp.js +129 -0
  65. package/dist/tools/fusion-comp.js.map +1 -0
  66. package/dist/tools/generate-gif.d.ts.map +1 -1
  67. package/dist/tools/generate-gif.js +12 -2
  68. package/dist/tools/generate-gif.js.map +1 -1
  69. package/dist/tools/host-eval.d.ts +35 -0
  70. package/dist/tools/host-eval.d.ts.map +1 -0
  71. package/dist/tools/host-eval.js +70 -0
  72. package/dist/tools/host-eval.js.map +1 -0
  73. package/dist/tools/host-tools.test.js +42 -0
  74. package/dist/tools/host-tools.test.js.map +1 -1
  75. package/dist/tools/index.d.ts +2 -0
  76. package/dist/tools/index.d.ts.map +1 -1
  77. package/dist/tools/index.js +9 -0
  78. package/dist/tools/index.js.map +1 -1
  79. package/dist/tools/index.test.js +4 -0
  80. package/dist/tools/index.test.js.map +1 -1
  81. package/dist/tools/overlay-watermark.d.ts.map +1 -1
  82. package/dist/tools/overlay-watermark.js +2 -1
  83. package/dist/tools/overlay-watermark.js.map +1 -1
  84. package/dist/tools/reformat-timeline.d.ts.map +1 -1
  85. package/dist/tools/reformat-timeline.js +3 -2
  86. package/dist/tools/reformat-timeline.js.map +1 -1
  87. package/dist/tools/reorder-timeline.d.ts.map +1 -1
  88. package/dist/tools/reorder-timeline.js +3 -2
  89. package/dist/tools/reorder-timeline.js.map +1 -1
  90. package/dist/tools/transcribe.d.ts.map +1 -1
  91. package/dist/tools/transcribe.js +2 -1
  92. package/dist/tools/transcribe.js.map +1 -1
  93. package/dist/tools/write-ass.d.ts.map +1 -1
  94. package/dist/tools/write-ass.js +3 -2
  95. package/dist/tools/write-ass.js.map +1 -1
  96. package/dist/tools/write-edl.d.ts.map +1 -1
  97. package/dist/tools/write-edl.js +3 -2
  98. package/dist/tools/write-edl.js.map +1 -1
  99. package/dist/tools/write-fcpxml.d.ts.map +1 -1
  100. package/dist/tools/write-fcpxml.js +3 -2
  101. package/dist/tools/write-fcpxml.js.map +1 -1
  102. package/dist/tools/write-keyword-captions.d.ts.map +1 -1
  103. package/dist/tools/write-keyword-captions.js +2 -1
  104. package/dist/tools/write-keyword-captions.js.map +1 -1
  105. package/dist/tools/write-lower-third.d.ts.map +1 -1
  106. package/dist/tools/write-lower-third.js +3 -2
  107. package/dist/tools/write-lower-third.js.map +1 -1
  108. package/dist/tools/write-srt.d.ts.map +1 -1
  109. package/dist/tools/write-srt.js +3 -2
  110. package/dist/tools/write-srt.js.map +1 -1
  111. package/dist/tools/write-title-card.d.ts.map +1 -1
  112. package/dist/tools/write-title-card.js +3 -2
  113. package/dist/tools/write-title-card.js.map +1 -1
  114. package/package.json +3 -3
@@ -68,7 +68,7 @@ ggeditor is for **long-form** and **short-form** video content.
68
68
  - **Long-form** (podcasts, interviews, vlogs, courses, talking-head): the work is silence cuts, take selection, filler removal, chapter markers, captions.
69
69
  - **Short-form** (TikTok / Reels / Shorts): the work is finding the moment, reformatting to 9:16, burning captions, hooking the first 2 seconds.
70
70
 
71
- NOT in scope: generative video, motion graphics, VFX, animation, complex compositing. If the user asks for those, say so and propose what we CAN do.
71
+ Motion graphics: simple text + lower-thirds via fusion_comp (Resolve only). VFX, generative video, animation, 3D, particles, complex compositing remain out of scope — if the user asks for those, say so and propose what we CAN do.
72
72
 
73
73
  ${HOST_BLOCK_TOKEN}
74
74
 
@@ -79,6 +79,7 @@ cwd=${cwd}
79
79
  1. Live API — host_info, get_timeline, get_markers, add_marker, append_clip, cut_at, ripple_delete, set_clip_speed, create_timeline, import_to_media_pool, import_subtitles, open_page (Resolve), render
80
80
  2. Bulk import — write_edl / write_fcpxml / reformat_timeline / reorder_timeline / compose_layered + import_edl (use when API can't do per-clip ops, e.g. Resolve has no scriptable razor or scriptable clip-move)
81
81
  3. File-only — probe_media, extract_audio, detect_silence, transcribe, read_transcript, cluster_takes, score_shot, write_srt, write_lower_third, write_title_card, mix_audio, speed_ramp, ken_burns, transition_videos (no NLE needed)
82
+ 4. Escape hatch — host_eval (raw Python on Resolve / raw ExtendScript on Premiere). LAST RESORT only — see "Escape hatch" section below.
82
83
 
83
84
  # Capability matrix — what's host-scriptable vs file-only
84
85
 
@@ -98,6 +99,37 @@ cwd=${cwd}
98
99
  | Keyword-highlighted captions | NO | NO | write_keyword_captions |
99
100
  | SFX on cuts (whoosh) | NO | NO | add_sfx_at_cuts |
100
101
 
102
+ # Escape hatch — host_eval
103
+
104
+ host_eval(code) runs raw host-native scripting code. **Resolve = Python, Premiere = ExtendScript (ES3-ish JavaScript).** Different languages — the code you write MUST match the connected host. Check host_info first if unsure.
105
+
106
+ Use it ONLY when no named tool fits. Examples of legitimate use:
107
+ - A Resolve / Premiere API surface we don't wrap yet (e.g. project setting reads, render preset details, marker custom-data, Fairlight track props, Fusion comp inspection)
108
+ - A one-off batch operation that would otherwise be 20+ named-tool calls (e.g. "set every clip on V2 to 80% opacity via the API directly")
109
+ - Recovering when a named tool returns 'not_supported' AND the bulk EDL/FCPXML path also doesn't fit
110
+
111
+ NEVER use it for:
112
+ - Anything a named tool already does. Named tools have validation, summarised output, and EDL fallbacks. host_eval is raw — a typo can take the bridge down.
113
+ - Cross-host "write once, run on either" code. The code is host-specific; route on host_info.host first.
114
+ - File I/O, ffmpeg, transcription. Those are file-only tools — host_eval can't reach them and shouldn't try.
115
+
116
+ Resolve scope (Python, all pre-bound):
117
+ - resolve, project, projectManager, mediaPool, mediaStorage, timeline, fusion, dvr (the DaVinciResolveScript module)
118
+ - set_result(value) to return JSON-serialisable data; or assign result = ... at top level
119
+ - print(...) is captured to stdout
120
+ - Example: set_result(project.GetSetting('timelineFrameRate'))
121
+
122
+ Premiere scope (ExtendScript, all pre-bound):
123
+ - app, project, sequence, qe (Quality Engineering DOM — undocumented; use sparingly)
124
+ - setResult(value) to return data; or assign result = ... at top level
125
+ - print(...) is captured to stdout
126
+ - ExtendScript is ES3-ish: no let/const, no arrow functions, no template literals. Use var and string concatenation.
127
+ - Example: setResult(app.version)
128
+
129
+ If host=none, host_eval returns error: not_supported. Don't bother calling it without an NLE attached — open Resolve or Premiere first.
130
+
131
+ Keep snippets small (one logical op per call). Surface 'result' to the user when it answers their question; don't dump opaque PyRemoteObject reprs at them.
132
+
101
133
  # Tool output contract (READ THIS)
102
134
 
103
135
  Tool results are NOT for humans. They are compact, machine-shaped, designed for you:
@@ -1 +1 @@
1
- {"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../src/system-prompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../src/system-prompt.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"compose-layered.d.ts","sourceRoot":"","sources":["../../src/tools/compose-layered.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AA4CxD,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiBxB,CAAC;AAEH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,SAAS,EACf,GAAG,EAAE,MAAM,GACV,SAAS,CAAC,OAAO,oBAAoB,CAAC,CAyCxC"}
1
+ {"version":3,"file":"compose-layered.d.ts","sourceRoot":"","sources":["../../src/tools/compose-layered.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AA6CxD,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiBxB,CAAC;AAEH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,SAAS,EACf,GAAG,EAAE,MAAM,GACV,SAAS,CAAC,OAAO,oBAAoB,CAAC,CAyCxC"}
@@ -4,6 +4,7 @@ import { dirname, join, resolve as resolvePath } from "node:path";
4
4
  import { z } from "zod";
5
5
  import { buildFcpxml } from "../core/fcpxml.js";
6
6
  import { compact, err } from "../core/format.js";
7
+ import { safeOutputPath } from "../core/safe-paths.js";
7
8
  const LayerSchema = z.object({
8
9
  reel: z.string().describe("Source identifier — same reel = same asset."),
9
10
  sourcePath: z.string().describe("Absolute (or cwd-relative) source media path."),
@@ -83,7 +84,7 @@ export function createComposeLayeredTool(host, cwd) {
83
84
  });
84
85
  const xml = buildFcpxml({ title, frameRate, width, height, events });
85
86
  const outAbs = fcpxmlOutput
86
- ? resolvePath(cwd, fcpxmlOutput)
87
+ ? safeOutputPath(cwd, fcpxmlOutput)
87
88
  : join(mkdtempSync(join(tmpdir(), "gg-compose-")), "composed.fcpxml");
88
89
  if (fcpxmlOutput)
89
90
  mkdirSync(dirname(outAbs), { recursive: true });
@@ -1 +1 @@
1
- {"version":3,"file":"compose-layered.js","sourceRoot":"","sources":["../../src/tools/compose-layered.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compose-layered.js","sourceRoot":"","sources":["../../src/tools/compose-layered.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"compose-thumbnail.d.ts","sourceRoot":"","sources":["../../src/tools/compose-thumbnail.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAIrD,QAAA,MAAM,sBAAsB;;;;;;;;;;;;;;;iBAyB1B,CAAC;AAUH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,OAAO,sBAAsB,CAAC,CAmEhG;AAiBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOxD"}
1
+ {"version":3,"file":"compose-thumbnail.d.ts","sourceRoot":"","sources":["../../src/tools/compose-thumbnail.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAKrD,QAAA,MAAM,sBAAsB;;;;;;;;;;;;;;;iBAyB1B,CAAC;AAUH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,OAAO,sBAAsB,CAAC,CA0EhG;AAiBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOxD"}
@@ -3,6 +3,7 @@ import { dirname, resolve as resolvePath } from "node:path";
3
3
  import { z } from "zod";
4
4
  import { compact, err } from "../core/format.js";
5
5
  import { checkFfmpeg, runFfmpeg } from "../core/media/ffmpeg.js";
6
+ import { safeResolveOutputPath } from "../core/safe-paths.js";
6
7
  const ComposeThumbnailParams = z.object({
7
8
  input: z.string().describe("Source video."),
8
9
  output: z.string().describe("Thumbnail .jpg or .png."),
@@ -47,7 +48,8 @@ export function createComposeThumbnailTool(cwd) {
47
48
  return err("ffmpeg not on PATH", "install ffmpeg");
48
49
  try {
49
50
  const inAbs = resolvePath(cwd, args.input);
50
- const outAbs = resolvePath(cwd, args.output);
51
+ const resolved = safeResolveOutputPath(cwd, args.output);
52
+ const outAbs = resolved.path;
51
53
  const fontFile = args.fontFile ? resolvePath(cwd, args.fontFile) : pickFont();
52
54
  if (!fontFile) {
53
55
  return err("no system font found", "pass fontFile=<path-to-.ttf> (try ~/Library/Fonts on macOS or /usr/share/fonts on Linux)");
@@ -83,7 +85,13 @@ export function createComposeThumbnailTool(cwd) {
83
85
  if (r.code !== 0) {
84
86
  return err(`ffmpeg drawtext exited ${r.code}`, "verify atSec is in range and ffmpeg has --enable-libfreetype");
85
87
  }
86
- return compact({ ok: true, path: outAbs, atSec: args.atSec, fontFile });
88
+ return compact({
89
+ ok: true,
90
+ path: outAbs,
91
+ atSec: args.atSec,
92
+ fontFile,
93
+ ...(resolved.redirected ? { redirected: true, reason: resolved.reason } : {}),
94
+ });
87
95
  }
88
96
  catch (e) {
89
97
  return err(e.message);
@@ -1 +1 @@
1
- {"version":3,"file":"compose-thumbnail.js","sourceRoot":"","sources":["../../src/tools/compose-thumbnail.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compose-thumbnail.js","sourceRoot":"","sources":["../../src/tools/compose-thumbnail.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"concat-videos.d.ts","sourceRoot":"","sources":["../../src/tools/concat-videos.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAE3D;AACD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAIrD,QAAA,MAAM,kBAAkB;;;;;;iBAatB,CAAC;AAEH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,OAAO,kBAAkB,CAAC,CAuExF"}
1
+ {"version":3,"file":"concat-videos.d.ts","sourceRoot":"","sources":["../../src/tools/concat-videos.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAE3D;AACD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAKrD,QAAA,MAAM,kBAAkB;;;;;;iBAatB,CAAC;AAEH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,OAAO,kBAAkB,CAAC,CAuExF"}
@@ -13,6 +13,7 @@ export function buildConcatListBody(paths) {
13
13
  import { z } from "zod";
14
14
  import { compact, err } from "../core/format.js";
15
15
  import { checkFfmpeg, runFfmpeg } from "../core/media/ffmpeg.js";
16
+ import { safeOutputPath } from "../core/safe-paths.js";
16
17
  const ConcatVideosParams = z.object({
17
18
  inputs: z.array(z.string().min(1)).min(2).describe("Videos to join in order."),
18
19
  output: z.string().describe("Concatenated output path."),
@@ -37,7 +38,7 @@ export function createConcatVideosTool(cwd) {
37
38
  return err("ffmpeg not on PATH", "install ffmpeg");
38
39
  try {
39
40
  const absInputs = inputs.map((p) => resolvePath(cwd, p));
40
- const outAbs = resolvePath(cwd, output);
41
+ const outAbs = safeOutputPath(cwd, output);
41
42
  for (const a of absInputs) {
42
43
  if (a === outAbs)
43
44
  return err("output path collides with an input", "pick a different output");
@@ -1 +1 @@
1
- {"version":3,"file":"concat-videos.js","sourceRoot":"","sources":["../../src/tools/concat-videos.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"concat-videos.js","sourceRoot":"","sources":["../../src/tools/concat-videos.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cut-filler-words.d.ts","sourceRoot":"","sources":["../../src/tools/cut-filler-words.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAarD,QAAA,MAAM,oBAAoB;;;;;;;;;;;;iBAyExB,CAAC;AAEH;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,OAAO,oBAAoB,CAAC,CA8G5F"}
1
+ {"version":3,"file":"cut-filler-words.d.ts","sourceRoot":"","sources":["../../src/tools/cut-filler-words.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAcrD,QAAA,MAAM,oBAAoB;;;;;;;;;;;;iBAyExB,CAAC;AAEH;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,OAAO,oBAAoB,CAAC,CA8G5F"}
@@ -6,6 +6,7 @@ import { buildEdl } from "../core/edl.js";
6
6
  import { DEFAULT_FILLERS, detectFillerRanges, keepRangesFromFillers, keepRangesToFrameRanges, summarizeFillers, } from "../core/filler-words.js";
7
7
  import { compact, err } from "../core/format.js";
8
8
  import { probeMedia } from "../core/media/ffmpeg.js";
9
+ import { safeOutputPath } from "../core/safe-paths.js";
9
10
  const CutFillerWordsParams = z.object({
10
11
  transcript: z
11
12
  .string()
@@ -135,7 +136,7 @@ export function createCutFillerWordsTool(cwd) {
135
136
  })),
136
137
  });
137
138
  const outAbs = args.edlOutput
138
- ? resolvePath(cwd, args.edlOutput)
139
+ ? safeOutputPath(cwd, args.edlOutput)
139
140
  : join(mkdtempSync(join(tmpdir(), "gg-fillercut-")), "fillers.edl");
140
141
  if (args.edlOutput)
141
142
  mkdirSync(dirname(outAbs), { recursive: true });
@@ -1 +1 @@
1
- {"version":3,"file":"cut-filler-words.js","sourceRoot":"","sources":["../../src/tools/cut-filler-words.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cut-filler-words.js","sourceRoot":"","sources":["../../src/tools/cut-filler-words.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"extract-frame.d.ts","sourceRoot":"","sources":["../../src/tools/extract-frame.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAIrD,QAAA,MAAM,kBAAkB;;;;;;iBAiBtB,CAAC;AAEH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,OAAO,kBAAkB,CAAC,CAoCxF"}
1
+ {"version":3,"file":"extract-frame.d.ts","sourceRoot":"","sources":["../../src/tools/extract-frame.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAKrD,QAAA,MAAM,kBAAkB;;;;;;iBAiBtB,CAAC;AAEH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,OAAO,kBAAkB,CAAC,CA0CxF"}
@@ -3,6 +3,7 @@ import { dirname, resolve as resolvePath } from "node:path";
3
3
  import { z } from "zod";
4
4
  import { compact, err } from "../core/format.js";
5
5
  import { checkFfmpeg, runFfmpeg } from "../core/media/ffmpeg.js";
6
+ import { safeResolveOutputPath } from "../core/safe-paths.js";
6
7
  const ExtractFrameParams = z.object({
7
8
  input: z.string().describe("Source video file."),
8
9
  output: z.string().describe(".jpg or .png path for the extracted frame."),
@@ -33,7 +34,8 @@ export function createExtractFrameTool(cwd) {
33
34
  return err("ffmpeg not on PATH", "install ffmpeg");
34
35
  try {
35
36
  const inAbs = resolvePath(cwd, input);
36
- const outAbs = resolvePath(cwd, output);
37
+ const resolved = safeResolveOutputPath(cwd, output);
38
+ const outAbs = resolved.path;
37
39
  mkdirSync(dirname(outAbs), { recursive: true });
38
40
  const args = [
39
41
  "-ss",
@@ -52,7 +54,12 @@ export function createExtractFrameTool(cwd) {
52
54
  if (r.code !== 0) {
53
55
  return err(`ffmpeg exited ${r.code}`, "verify atSec is within file duration");
54
56
  }
55
- return compact({ ok: true, path: outAbs, atSec });
57
+ return compact({
58
+ ok: true,
59
+ path: outAbs,
60
+ atSec,
61
+ ...(resolved.redirected ? { redirected: true, reason: resolved.reason } : {}),
62
+ });
56
63
  }
57
64
  catch (e) {
58
65
  return err(e.message);
@@ -1 +1 @@
1
- {"version":3,"file":"extract-frame.js","sourceRoot":"","sources":["../../src/tools/extract-frame.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEjE,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IAChD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;IACzE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,+CAA+C,CAAC;IAClF,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,QAAQ,EAAE;SACV,QAAQ,CAAC,iEAAiE,CAAC;IAC9E,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CAAC,qDAAqD,CAAC;CACnE,CAAC,CAAC;AAEH,MAAM,UAAU,sBAAsB,CAAC,GAAW;IAChD,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,kFAAkF;YAClF,mFAAmF;YACnF,4BAA4B;QAC9B,UAAU,EAAE,kBAAkB;QAC9B,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,GAAG;YAC5D,IAAI,CAAC,WAAW,EAAE;gBAAE,OAAO,GAAG,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC;YACvE,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACtC,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBACxC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAChD,MAAM,IAAI,GAAG;oBACX,KAAK;oBACL,MAAM,CAAC,KAAK,CAAC;oBACb,IAAI;oBACJ,KAAK;oBACL,WAAW;oBACX,GAAG;oBACH,MAAM;oBACN,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;iBACrB,CAAC;gBACF,IAAI,QAAQ;oBAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,QAAQ,KAAK,CAAC,CAAC;gBACvD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAClB,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;gBACxD,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;oBACjB,OAAO,GAAG,CAAC,iBAAiB,CAAC,CAAC,IAAI,EAAE,EAAE,sCAAsC,CAAC,CAAC;gBAChF,CAAC;gBACD,OAAO,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YACpD,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,GAAG,CAAE,CAAW,CAAC,OAAO,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"extract-frame.js","sourceRoot":"","sources":["../../src/tools/extract-frame.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { z } from "zod";
2
+ import type { AgentTool } from "@kenkaiiii/gg-agent";
3
+ import type { VideoHost } from "../core/hosts/types.js";
4
+ declare const FusionCompParams: z.ZodDiscriminatedUnion<[z.ZodObject<{
5
+ action: z.ZodLiteral<"list_nodes">;
6
+ clipId: z.ZodOptional<z.ZodString>;
7
+ }, z.core.$strip>, z.ZodObject<{
8
+ action: z.ZodLiteral<"add_node">;
9
+ toolId: z.ZodString;
10
+ name: z.ZodOptional<z.ZodString>;
11
+ clipId: z.ZodOptional<z.ZodString>;
12
+ }, z.core.$strip>, z.ZodObject<{
13
+ action: z.ZodLiteral<"delete_node">;
14
+ name: z.ZodString;
15
+ clipId: z.ZodOptional<z.ZodString>;
16
+ }, z.core.$strip>, z.ZodObject<{
17
+ action: z.ZodLiteral<"connect">;
18
+ fromNode: z.ZodString;
19
+ toNode: z.ZodString;
20
+ fromOutput: z.ZodOptional<z.ZodString>;
21
+ toInput: z.ZodOptional<z.ZodString>;
22
+ clipId: z.ZodOptional<z.ZodString>;
23
+ }, z.core.$strip>, z.ZodObject<{
24
+ action: z.ZodLiteral<"set_input">;
25
+ node: z.ZodString;
26
+ input: z.ZodString;
27
+ value: z.ZodUnknown;
28
+ clipId: z.ZodOptional<z.ZodString>;
29
+ }, z.core.$strip>, z.ZodObject<{
30
+ action: z.ZodLiteral<"get_input">;
31
+ node: z.ZodString;
32
+ input: z.ZodString;
33
+ clipId: z.ZodOptional<z.ZodString>;
34
+ }, z.core.$strip>, z.ZodObject<{
35
+ action: z.ZodLiteral<"set_keyframe">;
36
+ node: z.ZodString;
37
+ input: z.ZodString;
38
+ frame: z.ZodNumber;
39
+ value: z.ZodUnknown;
40
+ clipId: z.ZodOptional<z.ZodString>;
41
+ }, z.core.$strip>, z.ZodObject<{
42
+ action: z.ZodLiteral<"set_render_range">;
43
+ start: z.ZodNumber;
44
+ end: z.ZodNumber;
45
+ clipId: z.ZodOptional<z.ZodString>;
46
+ }, z.core.$strip>], "action">;
47
+ export declare function createFusionCompTool(host: VideoHost): AgentTool<typeof FusionCompParams>;
48
+ export {};
49
+ //# sourceMappingURL=fusion-comp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fusion-comp.d.ts","sourceRoot":"","sources":["../../src/tools/fusion-comp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,KAAK,EAAkB,SAAS,EAAE,MAAM,wBAAwB,CAAC;AA0GxE,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BASpB,CAAC;AAEH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC,OAAO,gBAAgB,CAAC,CA4BxF"}
@@ -0,0 +1,129 @@
1
+ import { z } from "zod";
2
+ import { compact, err } from "../core/format.js";
3
+ /**
4
+ * fusion_comp — single tool with an `action` discriminator that drives
5
+ * Resolve's Fusion node graph for motion graphics.
6
+ *
7
+ * Why one tool with `action=` instead of one tool per action? Fusion is a
8
+ * graph editor — every action takes the same comp scope (timeline-clip comp
9
+ * or active Fusion-page comp), and the agent will typically chain 5-10 of
10
+ * them per lower-third / title build. Splitting into 8 sibling tools would
11
+ * 8x the per-tool description tokens for a feature that's effectively one
12
+ * compound op.
13
+ *
14
+ * Resolve only. Premiere has no Fusion equivalent — agents that need motion
15
+ * graphics on Premiere should render the graphic separately and replace_clip,
16
+ * or use After Effects via Dynamic Link (out of scope here).
17
+ *
18
+ * Common tool IDs the agent will reach for:
19
+ * Background, TextPlus, Merge, Transform, ColorCorrector, DeltaKeyer,
20
+ * Brightness/Contrast, Glow, Blur.
21
+ *
22
+ * Canonical recipe — lower third:
23
+ * 1. add_node toolId=Background name=BG (the strap)
24
+ * 2. add_node toolId=TextPlus name=TXT (the text)
25
+ * 3. add_node toolId=Merge name=COMP (composite text over strap)
26
+ * 4. connect fromNode=BG toNode=COMP toInput=Background
27
+ * 5. connect fromNode=TXT toNode=COMP toInput=Foreground
28
+ * 6. set_input node=TXT input=StyledText value="Name · Title"
29
+ * 7. set_input node=BG input=TopLeft value=[0.05, 0.10]
30
+ */
31
+ const ListNodes = z.object({
32
+ action: z.literal("list_nodes"),
33
+ clipId: z
34
+ .string()
35
+ .optional()
36
+ .describe("When set, operate on this clip's first Fusion comp instead of the active Fusion-page comp."),
37
+ });
38
+ const AddNode = z.object({
39
+ action: z.literal("add_node"),
40
+ toolId: z
41
+ .string()
42
+ .min(1)
43
+ .describe("Fusion tool ID — e.g. 'TextPlus', 'Background', 'Merge', 'Transform', 'ColorCorrector', 'DeltaKeyer'."),
44
+ name: z.string().optional().describe("Optional human name for the new node."),
45
+ clipId: z.string().optional(),
46
+ });
47
+ const DeleteNode = z.object({
48
+ action: z.literal("delete_node"),
49
+ name: z.string().min(1),
50
+ clipId: z.string().optional(),
51
+ });
52
+ const Connect = z.object({
53
+ action: z.literal("connect"),
54
+ fromNode: z.string().min(1),
55
+ toNode: z.string().min(1),
56
+ fromOutput: z
57
+ .string()
58
+ .optional()
59
+ .describe("Defaults to the main 'Output'. Use for non-default outputs (e.g. 'Mask')."),
60
+ toInput: z
61
+ .string()
62
+ .optional()
63
+ .describe("Defaults to the main input. For Merge, use 'Background' or 'Foreground' explicitly."),
64
+ clipId: z.string().optional(),
65
+ });
66
+ const SetInput = z.object({
67
+ action: z.literal("set_input"),
68
+ node: z.string().min(1),
69
+ input: z.string().min(1),
70
+ value: z.unknown().describe("Number, string, [r,g,b], [x,y], etc. — Fusion input shape."),
71
+ clipId: z.string().optional(),
72
+ });
73
+ const GetInput = z.object({
74
+ action: z.literal("get_input"),
75
+ node: z.string().min(1),
76
+ input: z.string().min(1),
77
+ clipId: z.string().optional(),
78
+ });
79
+ const SetKeyframe = z.object({
80
+ action: z.literal("set_keyframe"),
81
+ node: z.string().min(1),
82
+ input: z.string().min(1),
83
+ frame: z.number().int().min(0),
84
+ value: z.unknown(),
85
+ clipId: z.string().optional(),
86
+ });
87
+ const SetRenderRange = z.object({
88
+ action: z.literal("set_render_range"),
89
+ start: z.number().int().min(0),
90
+ end: z.number().int().min(0),
91
+ clipId: z.string().optional(),
92
+ });
93
+ const FusionCompParams = z.discriminatedUnion("action", [
94
+ ListNodes,
95
+ AddNode,
96
+ DeleteNode,
97
+ Connect,
98
+ SetInput,
99
+ GetInput,
100
+ SetKeyframe,
101
+ SetRenderRange,
102
+ ]);
103
+ export function createFusionCompTool(host) {
104
+ return {
105
+ name: "fusion_comp",
106
+ description: "Drive a Fusion composition for motion graphics — lower-thirds, title cards, simple " +
107
+ "comps. Single tool with an `action` discriminator: list_nodes, add_node, delete_node, " +
108
+ "connect, set_input, get_input, set_keyframe, set_render_range. Operates on the active " +
109
+ "Fusion-page comp by default, or pass clipId to scope to that clip's first Fusion comp " +
110
+ "(auto-created if missing). Resolve only — Premiere has no Fusion equivalent. " +
111
+ "Common tool IDs: Background, TextPlus, Merge, Transform, ColorCorrector, DeltaKeyer. " +
112
+ "Lower-third recipe: Background + TextPlus + Merge, wire Background→Merge.Background " +
113
+ "and TextPlus→Merge.Foreground.",
114
+ parameters: FusionCompParams,
115
+ async execute(args) {
116
+ if (typeof host.executeFusionComp !== "function") {
117
+ return err("not_supported: this host has no Fusion equivalent", "switch to Resolve, or render the graphic separately and use replace_clip");
118
+ }
119
+ try {
120
+ const result = await host.executeFusionComp(args);
121
+ return compact({ ok: true, result });
122
+ }
123
+ catch (e) {
124
+ return err(e.message);
125
+ }
126
+ },
127
+ };
128
+ }
129
+ //# sourceMappingURL=fusion-comp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fusion-comp.js","sourceRoot":"","sources":["../../src/tools/fusion-comp.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generate-gif.d.ts","sourceRoot":"","sources":["../../src/tools/generate-gif.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAIrD,QAAA,MAAM,iBAAiB;;;;;;;iBAsBrB,CAAC;AAEH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,OAAO,iBAAiB,CAAC,CAuEtF"}
1
+ {"version":3,"file":"generate-gif.d.ts","sourceRoot":"","sources":["../../src/tools/generate-gif.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAKrD,QAAA,MAAM,iBAAiB;;;;;;;iBAsBrB,CAAC;AAEH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,OAAO,iBAAiB,CAAC,CAgFtF"}
@@ -4,6 +4,7 @@ import { dirname, join, resolve as resolvePath } from "node:path";
4
4
  import { z } from "zod";
5
5
  import { compact, err } from "../core/format.js";
6
6
  import { checkFfmpeg, runFfmpeg } from "../core/media/ffmpeg.js";
7
+ import { safeResolveOutputPath } from "../core/safe-paths.js";
7
8
  const GenerateGifParams = z.object({
8
9
  input: z.string().describe("Source video file."),
9
10
  output: z.string().describe("Output .gif path."),
@@ -39,7 +40,8 @@ export function createGenerateGifTool(cwd) {
39
40
  return err("ffmpeg not on PATH", "install ffmpeg");
40
41
  try {
41
42
  const inAbs = resolvePath(cwd, args.input);
42
- const outAbs = resolvePath(cwd, args.output);
43
+ const resolved = safeResolveOutputPath(cwd, args.output);
44
+ const outAbs = resolved.path;
43
45
  if (!/\.gif$/i.test(outAbs)) {
44
46
  return err("output must end in .gif", `got: ${outAbs}`);
45
47
  }
@@ -83,7 +85,15 @@ export function createGenerateGifTool(cwd) {
83
85
  ], { signal: ctx.signal });
84
86
  if (p2.code !== 0)
85
87
  return err(`paletteuse exited ${p2.code}`);
86
- return compact({ ok: true, path: outAbs, startSec: start, durationSec: dur, fps, width });
88
+ return compact({
89
+ ok: true,
90
+ path: outAbs,
91
+ startSec: start,
92
+ durationSec: dur,
93
+ fps,
94
+ width,
95
+ ...(resolved.redirected ? { redirected: true, reason: resolved.reason } : {}),
96
+ });
87
97
  }
88
98
  catch (e) {
89
99
  return err(e.message);
@@ -1 +1 @@
1
- {"version":3,"file":"generate-gif.js","sourceRoot":"","sources":["../../src/tools/generate-gif.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-gif.js","sourceRoot":"","sources":["../../src/tools/generate-gif.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { z } from "zod";
2
+ import type { AgentTool } from "@kenkaiiii/gg-agent";
3
+ import type { VideoHost } from "../core/hosts/types.js";
4
+ declare const HostEvalParams: z.ZodObject<{
5
+ code: z.ZodString;
6
+ }, z.core.$strip>;
7
+ /**
8
+ * Escape hatch — runs arbitrary host-native scripting code with the live NLE
9
+ * objects pre-bound. Routes to whichever adapter is connected:
10
+ *
11
+ * - Resolve → Python via the long-lived bridge sidecar
12
+ * - Premiere → ExtendScript via the JSX bridge
13
+ * - none → returns `error: not_supported` (no host attached)
14
+ *
15
+ * **Use this only when no named tool covers what you need.** The named tools
16
+ * have validation, output shaping, capability fallbacks, and EDL/FCPXML
17
+ * bulk-paths this raw eval skips entirely. If a named tool exists for what
18
+ * you're doing, use the named tool.
19
+ *
20
+ * Pre-bound globals on Resolve (Python):
21
+ * - `resolve`, `project`, `projectManager`, `mediaPool`, `mediaStorage`
22
+ * - `timeline`, `fusion`, `dvr` (the DaVinciResolveScript module)
23
+ * - `set_result(value)` — return JSON-serialisable data to the agent
24
+ * - `result` — alternative: assign at top level
25
+ * - `print(...)` — captured to `stdout`
26
+ *
27
+ * Pre-bound globals on Premiere (ExtendScript):
28
+ * - `app`, `project`, `sequence`, `qe` (Quality Engineering DOM, undocumented)
29
+ * - `setResult(value)` — return JSON-serialisable data
30
+ * - `result` — alternative: assign at top level
31
+ * - `print(...)` — captured to `stdout`
32
+ */
33
+ export declare function createHostEvalTool(host: VideoHost): AgentTool<typeof HostEvalParams>;
34
+ export {};
35
+ //# sourceMappingURL=host-eval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-eval.d.ts","sourceRoot":"","sources":["../../src/tools/host-eval.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,QAAA,MAAM,cAAc;;iBAQlB,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC,OAAO,cAAc,CAAC,CAiCpF"}