@tangle-network/agent-app 0.11.1 → 0.13.0

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 (61) hide show
  1. package/dist/DesignCanvas-3JEEIT6Y.js +10 -0
  2. package/dist/DesignCanvas-3JEEIT6Y.js.map +1 -0
  3. package/dist/DesignCanvasEditor-37LPJIIR.js +9 -0
  4. package/dist/DesignCanvasEditor-37LPJIIR.js.map +1 -0
  5. package/dist/TimelineEditor-OXPJZDP2.js +12 -0
  6. package/dist/TimelineEditor-OXPJZDP2.js.map +1 -0
  7. package/dist/apply-Cp8c3K9D.d.ts +249 -0
  8. package/dist/chunk-2Q73HGDI.js +1743 -0
  9. package/dist/chunk-2Q73HGDI.js.map +1 -0
  10. package/dist/chunk-6UOE5CTA.js +1647 -0
  11. package/dist/chunk-6UOE5CTA.js.map +1 -0
  12. package/dist/chunk-7QCIYDGC.js +1119 -0
  13. package/dist/chunk-7QCIYDGC.js.map +1 -0
  14. package/dist/chunk-A76ZHWNF.js +194 -0
  15. package/dist/chunk-A76ZHWNF.js.map +1 -0
  16. package/dist/chunk-ABGSFUJQ.js +111 -0
  17. package/dist/chunk-ABGSFUJQ.js.map +1 -0
  18. package/dist/{chunk-4YTWB5MG.js → chunk-ETX4O4BB.js} +98 -1
  19. package/dist/chunk-ETX4O4BB.js.map +1 -0
  20. package/dist/chunk-F5KTWRO7.js +2276 -0
  21. package/dist/chunk-F5KTWRO7.js.map +1 -0
  22. package/dist/chunk-IHR6K3GF.js +2367 -0
  23. package/dist/chunk-IHR6K3GF.js.map +1 -0
  24. package/dist/chunk-JZAJE3JL.js +990 -0
  25. package/dist/chunk-JZAJE3JL.js.map +1 -0
  26. package/dist/chunk-ZYBWGSAZ.js +130 -0
  27. package/dist/chunk-ZYBWGSAZ.js.map +1 -0
  28. package/dist/design-canvas/drizzle.d.ts +569 -0
  29. package/dist/design-canvas/drizzle.js +183 -0
  30. package/dist/design-canvas/drizzle.js.map +1 -0
  31. package/dist/design-canvas/index.d.ts +261 -0
  32. package/dist/design-canvas/index.js +96 -0
  33. package/dist/design-canvas/index.js.map +1 -0
  34. package/dist/design-canvas-react/index.d.ts +916 -0
  35. package/dist/design-canvas-react/index.js +423 -0
  36. package/dist/design-canvas-react/index.js.map +1 -0
  37. package/dist/export-presets-Dl5Aa5xj.d.ts +284 -0
  38. package/dist/index.d.ts +11 -2
  39. package/dist/index.js +224 -6
  40. package/dist/mcp-CIupfjxV.d.ts +112 -0
  41. package/dist/mcp-rpc-DLw_r9PQ.d.ts +55 -0
  42. package/dist/model-BHLN208Z.d.ts +183 -0
  43. package/dist/runtime/index.d.ts +108 -1
  44. package/dist/runtime/index.js +7 -1
  45. package/dist/sequences/drizzle.d.ts +1244 -0
  46. package/dist/sequences/drizzle.js +368 -0
  47. package/dist/sequences/drizzle.js.map +1 -0
  48. package/dist/sequences/index.d.ts +331 -0
  49. package/dist/sequences/index.js +114 -0
  50. package/dist/sequences/index.js.map +1 -0
  51. package/dist/sequences-react/index.d.ts +752 -0
  52. package/dist/sequences-react/index.js +241 -0
  53. package/dist/sequences-react/index.js.map +1 -0
  54. package/dist/store-CUStmtdH.d.ts +64 -0
  55. package/dist/store-gckrNq-g.d.ts +242 -0
  56. package/dist/tools/index.d.ts +25 -108
  57. package/dist/tools/index.js +16 -6
  58. package/package.json +62 -2
  59. package/dist/chunk-4YTWB5MG.js.map +0 -1
  60. package/dist/chunk-OLCVUGGI.js +0 -137
  61. package/dist/chunk-OLCVUGGI.js.map +0 -1
@@ -0,0 +1,331 @@
1
+ import { j as SequenceMediaKind, o as SequenceTimeline, r as TimelineInterval, m as SequenceStore } from '../store-gckrNq-g.js';
2
+ export { M as MIN_SEQUENCE_CLIP_FRAMES, N as NewSequenceClip, a as NewSequenceDecision, b as NewSequenceTrack, S as SequenceClip, c as SequenceClipMedia, d as SequenceClipPatch, e as SequenceDecision, f as SequenceExportFormat, g as SequenceExportRecord, h as SequenceExportStatus, i as SequenceFrameSnapshot, k as SequenceMeta, l as SequenceStatus, n as SequenceStoreScope, p as SequenceTrack, q as SequenceTrackKind, T as TimelineClipBounds, s as assertClipFitsSequence, t as chooseCaptionPlacement, u as clampClipDuration, v as clampClipStart, w as formatSeconds, x as formatTimecode, y as framesToSeconds, z as secondsToFrames, A as snapshotFrame, B as trackIntervals } from '../store-gckrNq-g.js';
3
+ export { A as AddCaptionOperation, C as CaptionTargetResolution, a as CreateTrackOperation, D as DeleteClipOperation, E as ExtendSequenceOperation, M as MoveClipOperation, P as PlaceClipOperation, Q as QueueExportOperation, S as SEQUENCE_OPERATION_TYPES, b as SequenceApplyResult, c as SequenceOperation, d as SequenceOperationContext, e as SequenceOperationType, f as SequencePlan, g as SetClipDisabledOperation, h as SetClipTextOperation, i as SplitClipOperation, T as TrimClipOperation, j as applySequenceOperation, k as applySequenceOperations, l as assertSequenceMediaUrl, m as captionTrackNameForLanguage, n as lastClipEndFrame, p as parseSequenceOperations, r as resolveCaptionPlacement, o as resolveCaptionTarget, q as resolvePlaceClipTrack, v as validateAddCaption, s as validateCreateTrack, t as validateDeleteClip, u as validateExtendSequence, w as validateMoveClip, x as validatePlaceClip, y as validateQueueExport, z as validateSequenceOperation, B as validateSequenceOperations, F as validateSetClipDisabled, G as validateSetClipText, H as validateSplitClip, I as validateTrimClip } from '../apply-Cp8c3K9D.js';
4
+ import { f as ToolHeaderNames, a as AppToolMcpServer } from '../mcp-CIupfjxV.js';
5
+ import { b as AppToolContext } from '../types-By4B3K37.js';
6
+
7
+ /**
8
+ * Pure interchange-format builders over `SequenceTimeline` — SRT, WebVTT,
9
+ * CMX3600 EDL, OpenTimelineIO JSON, and the contact-sheet manifest. mp4
10
+ * rendering needs ffmpeg and stays product-side; everything here is
11
+ * deterministic frame math producing strings or JSON-serializable documents.
12
+ *
13
+ * Builders throw instead of emitting empty documents: an empty subtitle file
14
+ * or zero-event EDL downloads "successfully" and then fails silently inside
15
+ * the user's player or NLE — the worst failure mode for an agent-driven
16
+ * editor. The one exception is OTIO, which meaningfully round-trips sequence
17
+ * settings (fps, dimensions, track structure) even with zero clips.
18
+ *
19
+ * Disabled clips are excluded from every format: an export reflects what
20
+ * renders, and a cue or event for an invisible clip is a lie.
21
+ */
22
+
23
+ interface CaptionExportOptions {
24
+ /** BCP-47 tag; matched case-insensitively against `clip.language`. Clips
25
+ * with no language never match a language-scoped export. */
26
+ language?: string;
27
+ }
28
+ /** Numbered SubRip cues from caption-track clips, in timeline order. Throws
29
+ * when no cue survives filtering — see module doc on empty documents. */
30
+ declare function buildSrt(timeline: SequenceTimeline, opts?: CaptionExportOptions): string;
31
+ /** WebVTT with numbered cue identifiers; same filtering and frame math as
32
+ * `buildSrt`, dot millisecond separator per the VTT grammar. */
33
+ declare function buildVtt(timeline: SequenceTimeline, opts?: CaptionExportOptions): string;
34
+ /** CMX3600-style EDL: one event per enabled video/audio clip in record-start
35
+ * order. Source in/out come from `sourceInFrame` + `durationFrames`; record
36
+ * in/out from `startFrame`. Timecodes are non-drop `HH:MM:SS:FF` at the
37
+ * sequence fps. Throws when the timeline has no video/audio clips. */
38
+ declare function buildEdl(timeline: SequenceTimeline): string;
39
+ interface OtioRationalTime {
40
+ OTIO_SCHEMA: 'RationalTime.1';
41
+ rate: number;
42
+ value: number;
43
+ }
44
+ interface OtioTimeRange {
45
+ OTIO_SCHEMA: 'TimeRange.1';
46
+ start_time: OtioRationalTime;
47
+ duration: OtioRationalTime;
48
+ }
49
+ interface OtioExternalReference {
50
+ OTIO_SCHEMA: 'ExternalReference.1';
51
+ target_url: string;
52
+ /** Natural extent of the source media when known; null when unknown. */
53
+ available_range: OtioTimeRange | null;
54
+ }
55
+ interface OtioMissingReference {
56
+ OTIO_SCHEMA: 'MissingReference.1';
57
+ }
58
+ interface OtioGap {
59
+ OTIO_SCHEMA: 'Gap.1';
60
+ name: string;
61
+ source_range: OtioTimeRange;
62
+ }
63
+ interface OtioClip {
64
+ OTIO_SCHEMA: 'Clip.2';
65
+ name: string;
66
+ source_range: OtioTimeRange;
67
+ media_reference: OtioExternalReference | OtioMissingReference;
68
+ metadata: Record<string, unknown>;
69
+ }
70
+ interface OtioTrack {
71
+ OTIO_SCHEMA: 'Track.1';
72
+ name: string;
73
+ kind: 'Video' | 'Audio';
74
+ metadata: Record<string, unknown>;
75
+ children: Array<OtioClip | OtioGap>;
76
+ }
77
+ interface OtioStack {
78
+ OTIO_SCHEMA: 'Stack.1';
79
+ name: string;
80
+ children: OtioTrack[];
81
+ }
82
+ interface OtioTimeline {
83
+ OTIO_SCHEMA: 'Timeline.1';
84
+ name: string;
85
+ global_start_time: OtioRationalTime;
86
+ metadata: Record<string, unknown>;
87
+ tracks: OtioStack;
88
+ }
89
+ /**
90
+ * OpenTimelineIO `Timeline.1` document. Serialize with `JSON.stringify` at the
91
+ * file-write edge.
92
+ *
93
+ * OTIO track children are SEQUENTIAL — position comes from accumulated child
94
+ * durations, so timeline gaps become explicit `Gap.1` children and two enabled
95
+ * clips overlapping on one track are unrepresentable (throws). Caption and
96
+ * reference tracks export as `Video` tracks (OTIO has no caption kind) with
97
+ * the original kind preserved in `metadata.sequenceTrackKind`; agent tracks
98
+ * carry decision markers, never media, and are excluded.
99
+ */
100
+ declare function buildOtio(timeline: SequenceTimeline): OtioTimeline;
101
+ interface ContactSheetEntry {
102
+ clipId: string;
103
+ trackId: string;
104
+ label: string;
105
+ /** Timeline frame the sample represents — the clip midpoint. */
106
+ frame: number;
107
+ /** `m:ss.ff` timecode of `frame`, for human-readable sheet labels. */
108
+ timecode: string;
109
+ /** Source-media frame to extract: `sourceInFrame` + midpoint offset for
110
+ * video, always 0 for stills (a seek into an image yields nothing). */
111
+ sourceFrame: number;
112
+ sourceSeconds: number;
113
+ url: string;
114
+ mediaKind: SequenceMediaKind;
115
+ }
116
+ interface ContactSheetManifest {
117
+ sequenceId: string;
118
+ title: string;
119
+ fps: number;
120
+ width: number;
121
+ height: number;
122
+ entries: ContactSheetEntry[];
123
+ }
124
+ /**
125
+ * One sample frame per enabled video-track clip with resolved, completed
126
+ * media — the product side renders the actual sheet (needs ffmpeg/canvas).
127
+ * Clips whose media is still rendering upstream (`providerStatus` queued/
128
+ * processing/failed) have no extractable frame and are excluded; audio media
129
+ * on a video track likewise. Throws when nothing is sampleable — see module
130
+ * doc on empty documents.
131
+ */
132
+ declare function buildContactSheetManifest(timeline: SequenceTimeline): ContactSheetManifest;
133
+
134
+ /**
135
+ * Caption planning — pure, server-safe helpers that turn transcripts into
136
+ * frame-typed caption chunks and answer "are captions complete?" per language.
137
+ * No store access, no React, no provider coupling: products feed transcript
138
+ * segments in (from any transcription provider) and get chunk bounds out,
139
+ * ready to become `add_caption` operations.
140
+ *
141
+ * All outputs are integer frames at the sequence fps. Seconds appear only on
142
+ * the transcript-segment inputs, because that is what transcription providers
143
+ * emit; the conversion happens exactly once, here.
144
+ */
145
+
146
+ /** Server twin of `TranscriptionSegment` (../sequences-react/contracts) —
147
+ * structurally identical so react-side transcription output feeds
148
+ * `buildCaptionChunks` without mapping. Keep the shapes in lockstep. */
149
+ interface TranscriptSegment {
150
+ text: string;
151
+ startSeconds: number;
152
+ endSeconds: number;
153
+ }
154
+ /** One caption clip's worth of text with its timeline bounds. */
155
+ interface CaptionChunk {
156
+ text: string;
157
+ startFrame: number;
158
+ durationFrames: number;
159
+ }
160
+ interface BuildCaptionChunksOptions {
161
+ /** Upper bound on words per caption; segments split on word boundaries. */
162
+ maxWordsPerChunk?: number;
163
+ /** Readability floor — chunks shorter than this are extended, never
164
+ * overlapped: the following chunk's start is pushed forward instead. */
165
+ minDurationSeconds?: number;
166
+ fps: number;
167
+ }
168
+ /**
169
+ * Split transcript segments into caption chunks. Within each segment, time is
170
+ * apportioned to chunks by word count (a constant words-per-second estimate).
171
+ * Guarantees, across the WHOLE output regardless of segment boundaries:
172
+ *
173
+ * - starts are strictly increasing and chunks never overlap
174
+ * - every chunk lasts at least the min-duration clamp (and at least
175
+ * `MIN_SEQUENCE_CLIP_FRAMES`)
176
+ * - a chunk may extend past its segment's end by at most the clamp — the cost
177
+ * of the readability floor on short tails
178
+ *
179
+ * Whitespace-only segments produce no chunks. Segments may arrive unsorted
180
+ * (providers emit per-channel batches); they are ordered by start before
181
+ * chunking so the no-overlap guarantee holds.
182
+ */
183
+ declare function buildCaptionChunks(segments: TranscriptSegment[], opts: BuildCaptionChunksOptions): CaptionChunk[];
184
+ /**
185
+ * Normalize a BCP-47 tag to conventional casing: primary subtag lowercase,
186
+ * 4-letter script subtags Title Case, 2-letter region subtags UPPER, all other
187
+ * subtags lowercase. Throws on empty or structurally invalid tags.
188
+ */
189
+ declare function normalizeLanguageTag(tag: string): string;
190
+ interface LanguageFanoutOptions {
191
+ languages: string[];
192
+ /** Excluded from the plan (exact normalized match only — 'en' does not
193
+ * exclude 'en-US'; a regional variant of the source is still a valid
194
+ * fan-out target). */
195
+ sourceLanguage?: string;
196
+ }
197
+ /**
198
+ * Plan which caption languages to generate: normalized, deduped (first
199
+ * occurrence wins), source excluded. Throws on an empty request or any
200
+ * invalid tag — a malformed fan-out request must fail before any generation
201
+ * is queued. Returns [] when every requested language IS the source; the
202
+ * caller reports "nothing to fan out" rather than erroring.
203
+ */
204
+ declare function planLanguageFanout(opts: LanguageFanoutOptions): string[];
205
+ /** Coverage for one caption language across the sequence. `language` is the
206
+ * clip's stored tag verbatim (no normalization — coverage reports what is
207
+ * actually on the timeline); null groups caption clips with no tag. */
208
+ interface CaptionCoverageEntry {
209
+ language: string | null;
210
+ coveredFrames: number;
211
+ totalFrames: number;
212
+ /** Uncovered intervals, ascending; endFrame exclusive. */
213
+ gaps: TimelineInterval[];
214
+ }
215
+ /**
216
+ * Per-language caption coverage over [0, durationFrames). A frame counts as
217
+ * covered when an enabled, non-empty-text clip on a caption-kind track spans
218
+ * it. Overlapping clips merge (no double counting). Returns one entry per
219
+ * distinct language, null first then lexicographic; [] when the timeline has
220
+ * no caption clips at all.
221
+ */
222
+ declare function captionCoverage(timeline: SequenceTimeline): CaptionCoverageEntry[];
223
+
224
+ /**
225
+ * The sequences MCP tool registry — what the in-sandbox agent sees over the
226
+ * live agent→timeline channel. Each entry carries an LLM-facing description,
227
+ * a JSON Schema for the arguments, and the typed dispatch that converts
228
+ * seconds→frames exactly once, validates the resulting operations, applies
229
+ * them through the store, and records ONE decision row per mutating call.
230
+ *
231
+ * Tool arguments speak SECONDS (the unit an LLM reasons in); everything past
232
+ * this edge is integer frames at the sequence fps. Results come back in
233
+ * snake_case with both seconds and `m:ss.ff` timecodes so the model can quote
234
+ * positions back to the user without doing frame math.
235
+ *
236
+ * Every mutation funnels through the ./validate + ./apply kernel: the WHOLE
237
+ * operation batch validates against pre-state before the first write. Errors
238
+ * thrown anywhere in a tool run (argument shape, validation, store) carry the
239
+ * precise reason — the handler surfaces them verbatim as `isError` tool
240
+ * results the model can act on.
241
+ */
242
+
243
+ /** Everything one tool invocation needs. Constructed per request by the
244
+ * handler — the store is already scoped + authorized by the product. The
245
+ * playhead is server-set (never a tool argument) so auto-placed captions
246
+ * anchor to what the user is actually looking at. */
247
+ interface SequenceMcpToolEnv {
248
+ store: SequenceStore;
249
+ playheadFrame: number;
250
+ }
251
+ interface SequenceMcpToolDefinition {
252
+ name: string;
253
+ description: string;
254
+ inputSchema: Record<string, unknown>;
255
+ run(args: Record<string, unknown>, env: SequenceMcpToolEnv): Promise<unknown>;
256
+ }
257
+ declare const SEQUENCE_EXPORT_FORMATS: readonly ["mp4", "otio", "xml", "edl", "vtt", "srt", "contact_sheet"];
258
+ declare const SEQUENCE_TRACK_KINDS: readonly ["video", "audio", "caption", "reference", "agent"];
259
+ declare const SEQUENCE_MEDIA_KINDS: readonly ["video", "image", "audio"];
260
+ /** Largest accepted `add_captions` batch — bounds one decision row / one
261
+ * validation pass to a size the store can absorb in a single request. */
262
+ declare const MAX_CAPTION_BATCH = 500;
263
+ declare const SEQUENCE_MCP_TOOLS: readonly SequenceMcpToolDefinition[];
264
+ declare function findSequenceMcpTool(name: string): SequenceMcpToolDefinition | undefined;
265
+
266
+ /**
267
+ * Streamable-HTTP MCP server for one sequence — the live agent→timeline
268
+ * channel. JSON-RPC 2.0 over POST, stateless per request (Workers-compatible:
269
+ * no session table, no SSE — a tools-only server answers every request with a
270
+ * single `application/json` body, which the streamable-HTTP transport
271
+ * explicitly permits).
272
+ *
273
+ * Trust boundary: the PRODUCT authenticates the request (capability token,
274
+ * workspace RBAC) BEFORE constructing the scoped {@link SequenceStore} and
275
+ * calling this handler — the handler trusts its store completely. Tool
276
+ * execution failures (argument shape, validation, store throws) become
277
+ * `isError` tool results carrying the thrown message verbatim so the model can
278
+ * read WHY and retry; only protocol-level misuse becomes a JSON-RPC error.
279
+ *
280
+ * The envelope (JSON-RPC framing, initialize/ping/tools/list/tools/call,
281
+ * notification 202, -32601) lives in {@link createMcpToolHandler}; this module
282
+ * is a thin adapter wiring the sequences tool list + playhead env.
283
+ */
284
+
285
+ /** Newest first. The handler echoes the client's requested version when
286
+ * supported, else answers with the newest it speaks (per MCP negotiation the
287
+ * client then disconnects if it cannot use it). */
288
+ declare const SEQUENCES_MCP_PROTOCOL_VERSIONS: readonly ["2025-06-18", "2025-03-26", "2024-11-05"];
289
+ interface SequencesMcpServerInfo {
290
+ name: string;
291
+ version: string;
292
+ }
293
+ interface CreateSequencesMcpHandlerOptions {
294
+ /** Already scoped + authorized for one (workspace, sequence, actor). */
295
+ store: SequenceStore;
296
+ /** Editor playhead at request time, in frames; anchors auto-placed captions.
297
+ * Default 0 (sequence start) for headless callers. */
298
+ playheadFrame?: number;
299
+ serverInfo?: SequencesMcpServerInfo;
300
+ }
301
+ declare function createSequencesMcpHandler(opts: CreateSequencesMcpHandlerOptions): (request: Request) => Promise<Response>;
302
+
303
+ /**
304
+ * Profile entry for the sequences MCP server — what a product spreads into its
305
+ * sandbox `AgentProfile.mcp` map so the in-sandbox agent gets the live
306
+ * timeline channel. Same shape and conventions as the app-tool bridges in
307
+ * ../tools/mcp: transport 'http', capability token in the Authorization
308
+ * header (server-set, never a tool argument), identity headers when the
309
+ * product recovers the user via `authenticateToolRequest`.
310
+ */
311
+
312
+ declare const DEFAULT_SEQUENCES_MCP_DESCRIPTION = "Live timeline editor for the current video sequence: read timeline state, place/move/trim/split clips, add captions, manage tracks, and queue exports. All times are seconds.";
313
+ interface BuildSequencesMcpServerEntryOptions {
314
+ /** App base URL the sandbox reaches back to (trailing slash tolerated). */
315
+ baseUrl: string;
316
+ /** Product route serving `createSequencesMcpHandler` for ONE sequence —
317
+ * the sequence id is part of the path, never a tool argument. */
318
+ path: string;
319
+ /** Capability token the product minted for this (user, sequence) scope.
320
+ * With no token there is no entry to build — omit the server instead. */
321
+ token: string;
322
+ description?: string;
323
+ /** Identity headers for products whose route recovers the user via
324
+ * `authenticateToolRequest`. Omit when the bearer token is self-contained. */
325
+ ctx?: AppToolContext;
326
+ headerNames?: ToolHeaderNames;
327
+ }
328
+ /** Build the `AgentProfileMcpServer`-shaped entry for the sequences channel. */
329
+ declare function buildSequencesMcpServerEntry(opts: BuildSequencesMcpServerEntryOptions): AppToolMcpServer;
330
+
331
+ export { type BuildCaptionChunksOptions, type BuildSequencesMcpServerEntryOptions, type CaptionChunk, type CaptionCoverageEntry, type CaptionExportOptions, type ContactSheetEntry, type ContactSheetManifest, type CreateSequencesMcpHandlerOptions, DEFAULT_SEQUENCES_MCP_DESCRIPTION, type LanguageFanoutOptions, MAX_CAPTION_BATCH, type OtioClip, type OtioExternalReference, type OtioGap, type OtioMissingReference, type OtioRationalTime, type OtioStack, type OtioTimeRange, type OtioTimeline, type OtioTrack, SEQUENCES_MCP_PROTOCOL_VERSIONS, SEQUENCE_EXPORT_FORMATS, SEQUENCE_MCP_TOOLS, SEQUENCE_MEDIA_KINDS, SEQUENCE_TRACK_KINDS, type SequenceMcpToolDefinition, type SequenceMcpToolEnv, SequenceMediaKind, SequenceStore, SequenceTimeline, type SequencesMcpServerInfo, TimelineInterval, type TranscriptSegment, buildCaptionChunks, buildContactSheetManifest, buildEdl, buildOtio, buildSequencesMcpServerEntry, buildSrt, buildVtt, captionCoverage, createSequencesMcpHandler, findSequenceMcpTool, normalizeLanguageTag, planLanguageFanout };
@@ -0,0 +1,114 @@
1
+ import {
2
+ DEFAULT_SEQUENCES_MCP_DESCRIPTION,
3
+ MAX_CAPTION_BATCH,
4
+ SEQUENCES_MCP_PROTOCOL_VERSIONS,
5
+ SEQUENCE_EXPORT_FORMATS,
6
+ SEQUENCE_MCP_TOOLS,
7
+ SEQUENCE_MEDIA_KINDS,
8
+ SEQUENCE_OPERATION_TYPES,
9
+ SEQUENCE_TRACK_KINDS,
10
+ applySequenceOperation,
11
+ applySequenceOperations,
12
+ assertSequenceMediaUrl,
13
+ buildCaptionChunks,
14
+ buildContactSheetManifest,
15
+ buildEdl,
16
+ buildOtio,
17
+ buildSequencesMcpServerEntry,
18
+ buildSrt,
19
+ buildVtt,
20
+ captionCoverage,
21
+ captionTrackNameForLanguage,
22
+ createSequencesMcpHandler,
23
+ findSequenceMcpTool,
24
+ lastClipEndFrame,
25
+ normalizeLanguageTag,
26
+ parseSequenceOperations,
27
+ planLanguageFanout,
28
+ resolveCaptionPlacement,
29
+ resolveCaptionTarget,
30
+ resolvePlaceClipTrack,
31
+ validateAddCaption,
32
+ validateCreateTrack,
33
+ validateDeleteClip,
34
+ validateExtendSequence,
35
+ validateMoveClip,
36
+ validatePlaceClip,
37
+ validateQueueExport,
38
+ validateSequenceOperation,
39
+ validateSequenceOperations,
40
+ validateSetClipDisabled,
41
+ validateSetClipText,
42
+ validateSplitClip,
43
+ validateTrimClip
44
+ } from "../chunk-6UOE5CTA.js";
45
+ import {
46
+ MIN_SEQUENCE_CLIP_FRAMES,
47
+ assertClipFitsSequence,
48
+ chooseCaptionPlacement,
49
+ clampClipDuration,
50
+ clampClipStart,
51
+ formatSeconds,
52
+ formatTimecode,
53
+ framesToSeconds,
54
+ secondsToFrames,
55
+ snapshotFrame,
56
+ trackIntervals
57
+ } from "../chunk-ZYBWGSAZ.js";
58
+ import "../chunk-A76ZHWNF.js";
59
+ export {
60
+ DEFAULT_SEQUENCES_MCP_DESCRIPTION,
61
+ MAX_CAPTION_BATCH,
62
+ MIN_SEQUENCE_CLIP_FRAMES,
63
+ SEQUENCES_MCP_PROTOCOL_VERSIONS,
64
+ SEQUENCE_EXPORT_FORMATS,
65
+ SEQUENCE_MCP_TOOLS,
66
+ SEQUENCE_MEDIA_KINDS,
67
+ SEQUENCE_OPERATION_TYPES,
68
+ SEQUENCE_TRACK_KINDS,
69
+ applySequenceOperation,
70
+ applySequenceOperations,
71
+ assertClipFitsSequence,
72
+ assertSequenceMediaUrl,
73
+ buildCaptionChunks,
74
+ buildContactSheetManifest,
75
+ buildEdl,
76
+ buildOtio,
77
+ buildSequencesMcpServerEntry,
78
+ buildSrt,
79
+ buildVtt,
80
+ captionCoverage,
81
+ captionTrackNameForLanguage,
82
+ chooseCaptionPlacement,
83
+ clampClipDuration,
84
+ clampClipStart,
85
+ createSequencesMcpHandler,
86
+ findSequenceMcpTool,
87
+ formatSeconds,
88
+ formatTimecode,
89
+ framesToSeconds,
90
+ lastClipEndFrame,
91
+ normalizeLanguageTag,
92
+ parseSequenceOperations,
93
+ planLanguageFanout,
94
+ resolveCaptionPlacement,
95
+ resolveCaptionTarget,
96
+ resolvePlaceClipTrack,
97
+ secondsToFrames,
98
+ snapshotFrame,
99
+ trackIntervals,
100
+ validateAddCaption,
101
+ validateCreateTrack,
102
+ validateDeleteClip,
103
+ validateExtendSequence,
104
+ validateMoveClip,
105
+ validatePlaceClip,
106
+ validateQueueExport,
107
+ validateSequenceOperation,
108
+ validateSequenceOperations,
109
+ validateSetClipDisabled,
110
+ validateSetClipText,
111
+ validateSplitClip,
112
+ validateTrimClip
113
+ };
114
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}