@hugpy/video-intelligence-ui 0.1.1 → 0.3.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 (102) hide show
  1. package/package.json +1 -3
  2. package/src/config.ts +36 -0
  3. package/src/demo/assets/generate/cinema-cavern/movie.mp4 +0 -0
  4. package/src/demo/assets/generate/cinema-cavern/seg_00.mp4 +0 -0
  5. package/src/demo/assets/generate/clips/cat-lounge.mp4 +0 -0
  6. package/src/demo/assets/generate/clips/drone-city.mp4 +0 -0
  7. package/src/demo/assets/generate/clips/paper-sails.mp4 +0 -0
  8. package/src/demo/assets/generate/movie-galaxy/movie.mp4 +0 -0
  9. package/src/demo/assets/generate/movie-galaxy/seg_00.mp4 +0 -0
  10. package/src/demo/assets/generate/movie-galaxy/seg_01.mp4 +0 -0
  11. package/src/demo/assets/generate/movie-galaxy/seg_02.mp4 +0 -0
  12. package/src/demo/assets/generate/movie-galaxy/seg_03.mp4 +0 -0
  13. package/src/demo/assets/generate/movie-medow/movie.mp4 +0 -0
  14. package/src/demo/assets/generate/movie-medow/seg_00.mp4 +0 -0
  15. package/src/demo/assets/generate/movie-medow/seg_01.mp4 +0 -0
  16. package/src/demo/assets/generate/scene-desert/frame_00000.png +0 -0
  17. package/src/demo/assets/generate/scene-desert/frame_00001.png +0 -0
  18. package/src/demo/assets/generate/scene-desert/frame_00002.png +0 -0
  19. package/src/demo/assets/generate/scene-desert/frame_00003.png +0 -0
  20. package/src/demo/assets/generate/scene-desert/frame_00004.png +0 -0
  21. package/src/demo/assets/generate/scene-desert/frame_00005.png +0 -0
  22. package/src/demo/assets/generate/scene-desert/scene.mp4 +0 -0
  23. package/src/demo/assets/generate/scene-vintage/frame_00000.png +0 -0
  24. package/src/demo/assets/generate/scene-vintage/frame_00001.png +0 -0
  25. package/src/demo/assets/generate/scene-vintage/frame_00002.png +0 -0
  26. package/src/demo/assets/generate/scene-vintage/frame_00003.png +0 -0
  27. package/src/demo/assets/generate/scene-vintage/frame_00004.png +0 -0
  28. package/src/demo/assets/generate/scene-vintage/frame_00005.png +0 -0
  29. package/src/demo/assets/generate/scene-vintage/scene.mp4 +0 -0
  30. package/src/demo/assets/generate2/s0.png +0 -0
  31. package/src/demo/assets/generate2/s1.png +0 -0
  32. package/src/demo/assets/generate2/s10.png +0 -0
  33. package/src/demo/assets/generate2/s11.png +0 -0
  34. package/src/demo/assets/generate2/s12.png +0 -0
  35. package/src/demo/assets/generate2/s13.png +0 -0
  36. package/src/demo/assets/generate2/s14.png +0 -0
  37. package/src/demo/assets/generate2/s15.png +0 -0
  38. package/src/demo/assets/generate2/s16.png +0 -0
  39. package/src/demo/assets/generate2/s17.png +0 -0
  40. package/src/demo/assets/generate2/s18.png +0 -0
  41. package/src/demo/assets/generate2/s19.png +0 -0
  42. package/src/demo/assets/generate2/s2.png +0 -0
  43. package/src/demo/assets/generate2/s20.png +0 -0
  44. package/src/demo/assets/generate2/s21.mp4 +0 -0
  45. package/src/demo/assets/generate2/s22.mp4 +0 -0
  46. package/src/demo/assets/generate2/s23.mp4 +0 -0
  47. package/src/demo/assets/generate2/s24.mp4 +0 -0
  48. package/src/demo/assets/generate2/s25.mp4 +0 -0
  49. package/src/demo/assets/generate2/s26.mp4 +0 -0
  50. package/src/demo/assets/generate2/s27.mp4 +0 -0
  51. package/src/demo/assets/generate2/s28.mp4 +0 -0
  52. package/src/demo/assets/generate2/s29.mp4 +0 -0
  53. package/src/demo/assets/generate2/s3.png +0 -0
  54. package/src/demo/assets/generate2/s30.mp4 +0 -0
  55. package/src/demo/assets/generate2/s4.png +0 -0
  56. package/src/demo/assets/generate2/s5.png +0 -0
  57. package/src/demo/assets/generate2/s6.png +0 -0
  58. package/src/demo/assets/generate2/s7.png +0 -0
  59. package/src/demo/assets/generate2/s8.png +0 -0
  60. package/src/demo/assets/generate2/s9.png +0 -0
  61. package/src/demo/demoFetch.ts +126 -3
  62. package/src/demo/fixtures.ts +72 -4
  63. package/src/demo/promptAssist.ts +25 -0
  64. package/src/demo/sampleData.ts +960 -0
  65. package/src/demo/sampleSets.ts +172 -0
  66. package/src/stations/ActiveProcessesStation.tsx +18 -3
  67. package/src/stations/GenerateStation.tsx +901 -366
  68. package/src/stations/GoalComposer.tsx +9 -1
  69. package/src/stations/ScriptFirstStation.tsx +1081 -0
  70. package/src/stations/ToksPanel.tsx +188 -0
  71. package/src/stations/WorkbenchDrawer.tsx +4 -3
  72. package/src/stations/WorkbenchSidebar.tsx +6 -3
  73. package/src/stations/oracle/DagPanel.tsx +391 -0
  74. package/src/stations/oracle/OracleStation.tsx +304 -0
  75. package/src/stations/oracle/SpatialTab.tsx +185 -0
  76. package/src/stations/oracle/StewardPanel.tsx +165 -0
  77. package/src/stations/oracle/oracle.css +467 -0
  78. package/src/stations/oracle/oracleShared.tsx +160 -0
  79. package/src/stations/oracle/oracleTypes.ts +304 -0
  80. package/src/stations/oracle/useOracle.ts +560 -0
  81. package/src/stations/registry.ts +37 -0
  82. package/src/stations/scriptFirst.css +350 -0
  83. package/src/stations/studio/IdentitiesStation.tsx +219 -292
  84. package/src/stations/studio/IdentityCreatePanel.tsx +390 -0
  85. package/src/stations/studio/StudioGenerateTab.tsx +10 -17
  86. package/src/stations/studio/StudioMovieComposer.tsx +296 -59
  87. package/src/stations/studio/StudioPlane.tsx +35 -3
  88. package/src/stations/studio/StudioViewer.tsx +116 -14
  89. package/src/stations/studio/coordinationBadge.tsx +206 -0
  90. package/src/stations/studio/identityUpload.ts +66 -0
  91. package/src/stations/studio/promptCard.tsx +362 -59
  92. package/src/stations/studio/useIdentityCreateJob.ts +184 -0
  93. package/src/stations/studio/useIdentityProfiles.ts +66 -0
  94. package/src/stations/useScriptFirstRun.ts +596 -0
  95. package/src/style/app.css +157 -0
  96. package/src/video/LengthRow.tsx +189 -0
  97. package/src/video/coordinationReport.ts +266 -0
  98. package/src/video/jobClock.ts +104 -0
  99. package/src/video/spreadAssist.ts +26 -0
  100. package/src/video/useMediaJobs.ts +26 -0
  101. package/src/video/useOperatorHistory.ts +5 -0
  102. package/src/video/useToks.ts +193 -0
@@ -0,0 +1,350 @@
1
+ /*
2
+ * k114 — the Script station.
3
+ *
4
+ * Its own file, colocated with the component that imports it (the pattern
5
+ * BrandMark.tsx and DemoBanner.tsx already use), because app.css belongs to
6
+ * another task today. Everything here is prefixed `vi-script-`; the shared
7
+ * primitives (`station-card`, `vi-btn`, `vi-error`, `vi-status`) come from
8
+ * app.css and are NOT redefined — a second definition of a shared button is
9
+ * how two stations end up looking almost the same.
10
+ *
11
+ * The one visual idea worth naming: `.vi-script-fanout` is a PARENT BOX above a
12
+ * ROW OF CHILDREN with one connector each. It is deliberately not a chain, and
13
+ * it is not a chain in CSS either — there is no rule that could draw an edge
14
+ * between two `.vi-script-seg` cards, so the layout cannot drift into implying
15
+ * the dependency the pipeline forbids.
16
+ */
17
+
18
+ .vi-script {
19
+ display: flex;
20
+ flex-direction: column;
21
+ gap: 1.25rem;
22
+ }
23
+
24
+ .vi-script-panel {
25
+ border: 1px solid var(--vi-border);
26
+ border-radius: 8px;
27
+ background: var(--vi-surface-raised);
28
+ padding: 0.85rem 1rem 1rem;
29
+ }
30
+
31
+ .vi-script-panel > h3 {
32
+ margin: 0 0 0.6rem;
33
+ font-family: var(--vi-mono);
34
+ font-size: 0.82rem;
35
+ letter-spacing: 0.04em;
36
+ text-transform: uppercase;
37
+ color: var(--vi-text-dim);
38
+ display: flex;
39
+ align-items: baseline;
40
+ gap: 0.6rem;
41
+ flex-wrap: wrap;
42
+ }
43
+
44
+ .vi-script-panel > h3 .vi-script-sub {
45
+ text-transform: none;
46
+ letter-spacing: 0;
47
+ font-size: 0.75rem;
48
+ color: var(--vi-text-dim);
49
+ opacity: 0.85;
50
+ }
51
+
52
+ .vi-script-row {
53
+ display: flex;
54
+ gap: 0.6rem;
55
+ flex-wrap: wrap;
56
+ align-items: center;
57
+ }
58
+
59
+ .vi-script-row + .vi-script-row {
60
+ margin-top: 0.5rem;
61
+ }
62
+
63
+ .vi-script-grow {
64
+ flex: 1 1 14rem;
65
+ min-width: 8rem;
66
+ }
67
+
68
+ .vi-script-kv {
69
+ display: grid;
70
+ grid-template-columns: minmax(7rem, max-content) 1fr;
71
+ gap: 0.25rem 0.9rem;
72
+ font-size: 0.8rem;
73
+ }
74
+
75
+ .vi-script-kv dt {
76
+ font-family: var(--vi-mono);
77
+ color: var(--vi-text-dim);
78
+ }
79
+
80
+ .vi-script-kv dd {
81
+ margin: 0;
82
+ word-break: break-word;
83
+ }
84
+
85
+ .vi-script-digest {
86
+ font-family: var(--vi-mono);
87
+ font-size: 0.72rem;
88
+ color: var(--vi-text-dim);
89
+ word-break: break-all;
90
+ }
91
+
92
+ .vi-script-table {
93
+ width: 100%;
94
+ border-collapse: collapse;
95
+ font-size: 0.78rem;
96
+ }
97
+
98
+ .vi-script-table th,
99
+ .vi-script-table td {
100
+ border-bottom: 1px solid var(--vi-border);
101
+ padding: 0.35rem 0.5rem;
102
+ text-align: left;
103
+ vertical-align: top;
104
+ }
105
+
106
+ .vi-script-table th {
107
+ font-family: var(--vi-mono);
108
+ font-weight: 500;
109
+ color: var(--vi-text-dim);
110
+ font-size: 0.72rem;
111
+ text-transform: uppercase;
112
+ letter-spacing: 0.03em;
113
+ }
114
+
115
+ .vi-script-table tr.vi-script-excluded td {
116
+ opacity: 0.55;
117
+ text-decoration-color: var(--vi-text-dim);
118
+ }
119
+
120
+ .vi-script-tag {
121
+ display: inline-block;
122
+ font-family: var(--vi-mono);
123
+ font-size: 0.68rem;
124
+ border: 1px solid var(--vi-border);
125
+ border-radius: 999px;
126
+ padding: 0.05rem 0.5rem;
127
+ color: var(--vi-text-dim);
128
+ white-space: nowrap;
129
+ }
130
+
131
+ .vi-script-tag-on {
132
+ border-color: var(--vi-accent);
133
+ color: var(--vi-accent);
134
+ }
135
+
136
+ .vi-script-tag-off {
137
+ border-color: #6b4a4a;
138
+ color: #ff8a8a;
139
+ }
140
+
141
+ .vi-script-json {
142
+ width: 100%;
143
+ min-height: 12rem;
144
+ font-family: var(--vi-mono);
145
+ font-size: 0.75rem;
146
+ line-height: 1.45;
147
+ background: var(--vi-surface);
148
+ color: var(--vi-text);
149
+ border: 1px solid var(--vi-border);
150
+ border-radius: 6px;
151
+ padding: 0.6rem;
152
+ resize: vertical;
153
+ }
154
+
155
+ .vi-script-json:disabled {
156
+ opacity: 0.7;
157
+ }
158
+
159
+ .vi-script-pre {
160
+ font-family: var(--vi-mono);
161
+ font-size: 0.72rem;
162
+ white-space: pre-wrap;
163
+ word-break: break-word;
164
+ margin: 0.4rem 0 0;
165
+ color: #ff8a8a;
166
+ }
167
+
168
+ .vi-script-raw {
169
+ font-family: var(--vi-mono);
170
+ font-size: 0.7rem;
171
+ white-space: pre-wrap;
172
+ word-break: break-word;
173
+ max-height: 14rem;
174
+ overflow: auto;
175
+ background: var(--vi-surface);
176
+ border: 1px solid var(--vi-border);
177
+ border-radius: 6px;
178
+ padding: 0.5rem;
179
+ color: var(--vi-text-dim);
180
+ }
181
+
182
+ .vi-script-note {
183
+ font-size: 0.76rem;
184
+ color: var(--vi-text-dim);
185
+ margin: 0.4rem 0 0;
186
+ }
187
+
188
+ .vi-script-limits {
189
+ margin: 0.4rem 0 0;
190
+ padding-left: 1.1rem;
191
+ font-size: 0.76rem;
192
+ color: var(--vi-text-dim);
193
+ }
194
+
195
+ /* --- the fan-out: ONE parent, N children, never a chain ------------------ */
196
+
197
+ .vi-script-fanout {
198
+ display: flex;
199
+ flex-direction: column;
200
+ align-items: stretch;
201
+ }
202
+
203
+ .vi-script-parent {
204
+ border: 1px solid var(--vi-accent);
205
+ border-radius: 8px;
206
+ padding: 0.6rem 0.8rem;
207
+ background: var(--vi-surface);
208
+ align-self: center;
209
+ max-width: 46rem;
210
+ text-align: center;
211
+ }
212
+
213
+ .vi-script-parent h4 {
214
+ margin: 0 0 0.3rem;
215
+ font-family: var(--vi-mono);
216
+ font-size: 0.8rem;
217
+ color: var(--vi-accent);
218
+ }
219
+
220
+ .vi-script-stem {
221
+ width: 1px;
222
+ height: 1.1rem;
223
+ background: var(--vi-border);
224
+ align-self: center;
225
+ }
226
+
227
+ .vi-script-children {
228
+ display: grid;
229
+ grid-template-columns: repeat(auto-fill, minmax(19rem, 1fr));
230
+ gap: 0.9rem;
231
+ border-top: 1px solid var(--vi-border);
232
+ padding-top: 1.1rem;
233
+ position: relative;
234
+ }
235
+
236
+ .vi-script-seg {
237
+ border: 1px solid var(--vi-border);
238
+ border-radius: 8px;
239
+ background: var(--vi-surface);
240
+ padding: 0.7rem 0.8rem 0.8rem;
241
+ position: relative;
242
+ display: flex;
243
+ flex-direction: column;
244
+ gap: 0.45rem;
245
+ }
246
+
247
+ /* the ONE connector each child gets, straight up to the shared top border */
248
+ .vi-script-seg::before {
249
+ content: "";
250
+ position: absolute;
251
+ top: -1.1rem;
252
+ left: 50%;
253
+ width: 1px;
254
+ height: 1.1rem;
255
+ background: var(--vi-border);
256
+ }
257
+
258
+ .vi-script-seg-busy {
259
+ border-color: var(--vi-accent);
260
+ }
261
+
262
+ .vi-script-seg-head {
263
+ display: flex;
264
+ justify-content: space-between;
265
+ align-items: baseline;
266
+ gap: 0.5rem;
267
+ font-family: var(--vi-mono);
268
+ font-size: 0.8rem;
269
+ }
270
+
271
+ .vi-script-seg-prompt {
272
+ font-size: 0.76rem;
273
+ line-height: 1.45;
274
+ max-height: 9rem;
275
+ overflow: auto;
276
+ white-space: pre-wrap;
277
+ color: var(--vi-text);
278
+ margin: 0;
279
+ }
280
+
281
+ .vi-script-attempts {
282
+ list-style: none;
283
+ margin: 0;
284
+ padding: 0;
285
+ display: flex;
286
+ flex-direction: column;
287
+ gap: 0.3rem;
288
+ font-family: var(--vi-mono);
289
+ font-size: 0.7rem;
290
+ }
291
+
292
+ .vi-script-attempts li {
293
+ border-left: 2px solid var(--vi-border);
294
+ padding-left: 0.5rem;
295
+ color: var(--vi-text-dim);
296
+ }
297
+
298
+ .vi-script-attempts li.vi-script-attempt-ok {
299
+ border-left-color: #7fd88f;
300
+ }
301
+
302
+ .vi-script-attempts li.vi-script-attempt-gap {
303
+ border-left-color: #d8a04a;
304
+ }
305
+
306
+ .vi-script-gap {
307
+ border: 1px solid #6b5a3a;
308
+ border-radius: 6px;
309
+ padding: 0.45rem 0.6rem;
310
+ font-size: 0.72rem;
311
+ color: #e8c98a;
312
+ background: rgba(216, 160, 74, 0.06);
313
+ }
314
+
315
+ .vi-script-gap strong {
316
+ font-family: var(--vi-mono);
317
+ display: block;
318
+ margin-bottom: 0.2rem;
319
+ }
320
+
321
+ .vi-script-runs {
322
+ display: flex;
323
+ gap: 0.4rem;
324
+ flex-wrap: wrap;
325
+ }
326
+
327
+ .vi-script-runbtn {
328
+ text-align: left;
329
+ max-width: 22rem;
330
+ }
331
+
332
+ .vi-script-confirm {
333
+ border: 1px solid var(--vi-accent);
334
+ border-radius: 8px;
335
+ padding: 0.7rem 0.9rem;
336
+ background: var(--vi-surface);
337
+ font-size: 0.8rem;
338
+ display: flex;
339
+ flex-direction: column;
340
+ gap: 0.5rem;
341
+ }
342
+
343
+ @media (max-width: 720px) {
344
+ .vi-script-children {
345
+ grid-template-columns: 1fr;
346
+ }
347
+ .vi-script-kv {
348
+ grid-template-columns: 1fr;
349
+ }
350
+ }