@hugpy/video-intelligence-ui 0.1.1 → 0.3.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.
Files changed (107) hide show
  1. package/README.md +43 -0
  2. package/index.html +2 -0
  3. package/package.json +1 -4
  4. package/src/config.ts +44 -0
  5. package/src/demo/demoFetch.ts +126 -3
  6. package/src/demo/fixtures.ts +97 -27
  7. package/src/demo/mediaBase.ts +62 -0
  8. package/src/demo/promptAssist.ts +25 -0
  9. package/src/demo/sampleData.ts +961 -0
  10. package/src/demo/sampleSets.ts +173 -0
  11. package/src/stations/ActiveProcessesStation.tsx +18 -3
  12. package/src/stations/GenerateStation.tsx +901 -366
  13. package/src/stations/GoalComposer.tsx +9 -1
  14. package/src/stations/ScriptFirstStation.tsx +1081 -0
  15. package/src/stations/ToksPanel.tsx +188 -0
  16. package/src/stations/WorkbenchDrawer.tsx +4 -3
  17. package/src/stations/WorkbenchSidebar.tsx +6 -3
  18. package/src/stations/oracle/DagPanel.tsx +391 -0
  19. package/src/stations/oracle/OracleStation.tsx +304 -0
  20. package/src/stations/oracle/SpatialTab.tsx +185 -0
  21. package/src/stations/oracle/StewardPanel.tsx +165 -0
  22. package/src/stations/oracle/oracle.css +467 -0
  23. package/src/stations/oracle/oracleShared.tsx +160 -0
  24. package/src/stations/oracle/oracleTypes.ts +304 -0
  25. package/src/stations/oracle/useOracle.ts +560 -0
  26. package/src/stations/registry.ts +37 -0
  27. package/src/stations/scriptFirst.css +350 -0
  28. package/src/stations/studio/IdentitiesStation.tsx +219 -292
  29. package/src/stations/studio/IdentityCreatePanel.tsx +390 -0
  30. package/src/stations/studio/StudioGenerateTab.tsx +10 -17
  31. package/src/stations/studio/StudioMovieComposer.tsx +296 -59
  32. package/src/stations/studio/StudioPlane.tsx +35 -3
  33. package/src/stations/studio/StudioViewer.tsx +116 -14
  34. package/src/stations/studio/coordinationBadge.tsx +206 -0
  35. package/src/stations/studio/identityUpload.ts +66 -0
  36. package/src/stations/studio/promptCard.tsx +362 -59
  37. package/src/stations/studio/useIdentityCreateJob.ts +184 -0
  38. package/src/stations/studio/useIdentityProfiles.ts +66 -0
  39. package/src/stations/useScriptFirstRun.ts +596 -0
  40. package/src/style/app.css +157 -0
  41. package/src/video/LengthRow.tsx +189 -0
  42. package/src/video/coordinationReport.ts +266 -0
  43. package/src/video/jobClock.ts +104 -0
  44. package/src/video/spreadAssist.ts +26 -0
  45. package/src/video/useMediaJobs.ts +26 -0
  46. package/src/video/useOperatorHistory.ts +5 -0
  47. package/src/video/useToks.ts +193 -0
  48. package/assets/sampels/images/bycycle/bd8603bad35d4f179f4d1134d8faf2ee.mp4 +0 -0
  49. package/assets/sampels/images/bycycle/frame_00000.png +0 -0
  50. package/assets/sampels/images/bycycle/frame_00001.png +0 -0
  51. package/assets/sampels/images/bycycle/frame_00002.png +0 -0
  52. package/assets/sampels/images/bycycle/frame_00003.png +0 -0
  53. package/assets/sampels/images/bycycle/frame_00004.png +0 -0
  54. package/assets/sampels/images/bycycle/frame_00005.png +0 -0
  55. package/assets/sampels/images/forrest/ff23090611b844a6b85c224f388bd542.mp4 +0 -0
  56. package/assets/sampels/images/forrest/frame_00000.png +0 -0
  57. package/assets/sampels/images/forrest/frame_00001.png +0 -0
  58. package/assets/sampels/images/forrest/frame_00002.png +0 -0
  59. package/assets/sampels/images/forrest/frame_00003.png +0 -0
  60. package/assets/sampels/images/forrest/frame_00004.png +0 -0
  61. package/assets/sampels/images/forrest/frame_00005.png +0 -0
  62. package/assets/sampels/images/shenzo/e1a4fcd623084ab4a986d11c8cd00db8.mp4 +0 -0
  63. package/assets/sampels/images/shenzo/frame_00000.png +0 -0
  64. package/assets/sampels/images/shenzo/frame_00001.png +0 -0
  65. package/assets/sampels/images/shenzo/frame_00002.png +0 -0
  66. package/assets/sampels/images/shenzo/frame_00003.png +0 -0
  67. package/assets/sampels/images/shenzo/frame_00004.png +0 -0
  68. package/assets/sampels/images/shenzo/frame_00005.png +0 -0
  69. package/assets/sampels/scenes/man.mp4 +0 -0
  70. package/assets/sampels/scenes/woman.mp4 +0 -0
  71. package/assets/sampels/studio_movies/caverns/_assembly/contrib_00.mp4 +0 -0
  72. package/assets/sampels/studio_movies/caverns/movie.json +0 -67
  73. package/assets/sampels/studio_movies/caverns/movie.mp4 +0 -0
  74. package/assets/sampels/studio_movies/caverns/segment_00/5eea7770a554fef0c3bdc38f8f38b925dcf75f13c015d423e8eadec47d41bf6b/clip.mp4 +0 -0
  75. package/assets/sampels/studio_movies/caverns/segment_00/5eea7770a554fef0c3bdc38f8f38b925dcf75f13c015d423e8eadec47d41bf6b/manifest.json +0 -87
  76. package/assets/sampels/studio_movies/caverns/segment_00/5eea7770a554fef0c3bdc38f8f38b925dcf75f13c015d423e8eadec47d41bf6b/provenance.json +0 -7
  77. package/assets/sampels/studio_movies/caverns/segment_01/branch.png +0 -0
  78. package/assets/sampels/studio_movies/keeper-matrix/_assembly/concat_list.txt +0 -2
  79. package/assets/sampels/studio_movies/keeper-matrix/_assembly/contrib_00.mp4 +0 -0
  80. package/assets/sampels/studio_movies/keeper-matrix/_assembly/contrib_01.mp4 +0 -0
  81. package/assets/sampels/studio_movies/keeper-matrix/movie.json +0 -81
  82. package/assets/sampels/studio_movies/keeper-matrix/movie.mp4 +0 -0
  83. package/assets/sampels/studio_movies/keeper-matrix/segment_00/64854c6a21d47ce10b23e884e12de448b25bfb0a375d33238dd0bec8056c076d/clip.mp4 +0 -0
  84. package/assets/sampels/studio_movies/keeper-matrix/segment_00/64854c6a21d47ce10b23e884e12de448b25bfb0a375d33238dd0bec8056c076d/manifest.json +0 -87
  85. package/assets/sampels/studio_movies/keeper-matrix/segment_00/64854c6a21d47ce10b23e884e12de448b25bfb0a375d33238dd0bec8056c076d/provenance.json +0 -7
  86. package/assets/sampels/studio_movies/keeper-matrix/segment_01/branch.png +0 -0
  87. package/assets/sampels/studio_movies/keeper-matrix/segment_01/cc926b44a42b90d7d291a4e50e3859458306c207a17c718086a3466e4049d6c6/clip.mp4 +0 -0
  88. package/assets/sampels/studio_movies/keeper-matrix/segment_01/cc926b44a42b90d7d291a4e50e3859458306c207a17c718086a3466e4049d6c6/manifest.json +0 -87
  89. package/assets/sampels/studio_movies/keeper-matrix/segment_01/cc926b44a42b90d7d291a4e50e3859458306c207a17c718086a3466e4049d6c6/provenance.json +0 -7
  90. package/assets/sampels/videos/a_red_paper_boat_drifting_on_a_calm_pond__gentle_ripples__mo_a62d6c28.mp4 +0 -0
  91. package/assets/sampels/videos/aurora.mp4 +0 -0
  92. package/assets/sampels/videos/dark_night.mp4 +0 -0
  93. package/assets/sampels/videos/fire_and_soul.mp4 +0 -0
  94. package/assets/sampels/videos/harsh_seas.mp4 +0 -0
  95. package/src/demo/assets/demo-audio.mp3 +0 -0
  96. package/src/demo/assets/demo-clip.mp4 +0 -0
  97. package/src/demo/assets/demo-crop.mp4 +0 -0
  98. package/src/demo/assets/demo-poster.jpg +0 -0
  99. package/src/demo/assets/frame-1.jpg +0 -0
  100. package/src/demo/assets/frame-2.jpg +0 -0
  101. package/src/demo/assets/frame-3.jpg +0 -0
  102. package/src/demo/assets/frame-4.jpg +0 -0
  103. package/src/demo/assets/frame-5.jpg +0 -0
  104. package/src/demo/assets/frame-6.jpg +0 -0
  105. package/src/demo/assets/gen-1.jpg +0 -0
  106. package/src/demo/assets/gen-2.jpg +0 -0
  107. package/src/demo/assets.d.ts +0 -14
@@ -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
+ }