gooseworks 0.5.9-dev.53.c1bd6be2 → 0.5.9-dev.57.78646da5

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 (150) hide show
  1. package/dist/agents/claude-mcp.d.ts +7 -1
  2. package/dist/agents/claude-mcp.d.ts.map +1 -1
  3. package/dist/agents/claude-mcp.js +43 -10
  4. package/dist/agents/claude-mcp.js.map +1 -1
  5. package/dist/auth/credentials.d.ts +8 -0
  6. package/dist/auth/credentials.d.ts.map +1 -1
  7. package/dist/auth/credentials.js +35 -1
  8. package/dist/auth/credentials.js.map +1 -1
  9. package/dist/auth/device-flow.d.ts +4 -1
  10. package/dist/auth/device-flow.d.ts.map +1 -1
  11. package/dist/auth/device-flow.js +8 -3
  12. package/dist/auth/device-flow.js.map +1 -1
  13. package/dist/auth/oauth-server.d.ts +9 -1
  14. package/dist/auth/oauth-server.d.ts.map +1 -1
  15. package/dist/auth/oauth-server.js +19 -11
  16. package/dist/auth/oauth-server.js.map +1 -1
  17. package/dist/auth/revoke.d.ts +10 -0
  18. package/dist/auth/revoke.d.ts.map +1 -0
  19. package/dist/auth/revoke.js +31 -0
  20. package/dist/auth/revoke.js.map +1 -0
  21. package/dist/commands/login.d.ts +15 -1
  22. package/dist/commands/login.d.ts.map +1 -1
  23. package/dist/commands/login.js +34 -10
  24. package/dist/commands/login.js.map +1 -1
  25. package/dist/commands/logout.d.ts.map +1 -1
  26. package/dist/commands/logout.js +29 -11
  27. package/dist/commands/logout.js.map +1 -1
  28. package/dist/commands/video.d.ts +35 -0
  29. package/dist/commands/video.d.ts.map +1 -1
  30. package/dist/commands/video.js +475 -39
  31. package/dist/commands/video.js.map +1 -1
  32. package/dist/index.js +2 -0
  33. package/dist/index.js.map +1 -1
  34. package/dist/kit/core/canonical.d.ts +3 -1
  35. package/dist/kit/core/canonical.d.ts.map +1 -1
  36. package/dist/kit/core/canonical.js +1 -1
  37. package/dist/kit/core/canonical.js.map +1 -1
  38. package/dist/kit/core/check.d.ts +2 -0
  39. package/dist/kit/core/check.d.ts.map +1 -1
  40. package/dist/kit/core/check.js +12 -2
  41. package/dist/kit/core/check.js.map +1 -1
  42. package/dist/kit/core/detach.d.ts +11 -0
  43. package/dist/kit/core/detach.d.ts.map +1 -0
  44. package/dist/kit/core/detach.js +72 -0
  45. package/dist/kit/core/detach.js.map +1 -0
  46. package/dist/kit/core/diff.d.ts +5 -0
  47. package/dist/kit/core/diff.d.ts.map +1 -0
  48. package/dist/kit/core/diff.js +132 -0
  49. package/dist/kit/core/diff.js.map +1 -0
  50. package/dist/kit/core/errors.d.ts +13 -1
  51. package/dist/kit/core/errors.d.ts.map +1 -1
  52. package/dist/kit/core/errors.js +14 -1
  53. package/dist/kit/core/errors.js.map +1 -1
  54. package/dist/kit/core/eyes.d.ts +80 -0
  55. package/dist/kit/core/eyes.d.ts.map +1 -0
  56. package/dist/kit/core/eyes.js +366 -0
  57. package/dist/kit/core/eyes.js.map +1 -0
  58. package/dist/kit/core/files.js +2 -2
  59. package/dist/kit/core/files.js.map +1 -1
  60. package/dist/kit/core/lock.d.ts +4 -0
  61. package/dist/kit/core/lock.d.ts.map +1 -0
  62. package/dist/kit/core/lock.js +13 -0
  63. package/dist/kit/core/lock.js.map +1 -0
  64. package/dist/kit/core/log.d.ts +38 -2
  65. package/dist/kit/core/log.d.ts.map +1 -1
  66. package/dist/kit/core/log.js +38 -5
  67. package/dist/kit/core/log.js.map +1 -1
  68. package/dist/kit/core/outcome.d.ts +114 -0
  69. package/dist/kit/core/outcome.d.ts.map +1 -0
  70. package/dist/kit/core/outcome.js +246 -0
  71. package/dist/kit/core/outcome.js.map +1 -0
  72. package/dist/kit/core/patch.d.ts +64 -0
  73. package/dist/kit/core/patch.d.ts.map +1 -0
  74. package/dist/kit/core/patch.js +289 -0
  75. package/dist/kit/core/patch.js.map +1 -0
  76. package/dist/kit/core/paths.d.ts +17 -0
  77. package/dist/kit/core/paths.d.ts.map +1 -1
  78. package/dist/kit/core/paths.js +21 -0
  79. package/dist/kit/core/paths.js.map +1 -1
  80. package/dist/kit/core/pieces.d.ts +16 -4
  81. package/dist/kit/core/pieces.d.ts.map +1 -1
  82. package/dist/kit/core/pieces.js +84 -27
  83. package/dist/kit/core/pieces.js.map +1 -1
  84. package/dist/kit/core/progress-reporter.d.ts +21 -4
  85. package/dist/kit/core/progress-reporter.d.ts.map +1 -1
  86. package/dist/kit/core/progress-reporter.js +74 -12
  87. package/dist/kit/core/progress-reporter.js.map +1 -1
  88. package/dist/kit/core/progress.d.ts +18 -1
  89. package/dist/kit/core/progress.d.ts.map +1 -1
  90. package/dist/kit/core/progress.js +44 -1
  91. package/dist/kit/core/progress.js.map +1 -1
  92. package/dist/kit/core/refusal-log.d.ts +7 -0
  93. package/dist/kit/core/refusal-log.d.ts.map +1 -0
  94. package/dist/kit/core/refusal-log.js +54 -0
  95. package/dist/kit/core/refusal-log.js.map +1 -0
  96. package/dist/kit/core/run.d.ts +43 -5
  97. package/dist/kit/core/run.d.ts.map +1 -1
  98. package/dist/kit/core/run.js +520 -84
  99. package/dist/kit/core/run.js.map +1 -1
  100. package/dist/kit/core/save.d.ts +7 -3
  101. package/dist/kit/core/save.d.ts.map +1 -1
  102. package/dist/kit/core/save.js +57 -20
  103. package/dist/kit/core/save.js.map +1 -1
  104. package/dist/kit/core/style.js +1 -1
  105. package/dist/kit/core/style.js.map +1 -1
  106. package/dist/kit/line/client.d.ts +14 -2
  107. package/dist/kit/line/client.d.ts.map +1 -1
  108. package/dist/kit/line/client.js +40 -20
  109. package/dist/kit/line/client.js.map +1 -1
  110. package/dist/kit/line/types.d.ts +33 -1
  111. package/dist/kit/line/types.d.ts.map +1 -1
  112. package/dist/kit/maker/inputs.js +1 -1
  113. package/dist/kit/maker/make.d.ts.map +1 -1
  114. package/dist/kit/maker/make.js +4 -2
  115. package/dist/kit/maker/make.js.map +1 -1
  116. package/dist/kit/maker/parts/html-frames/{1.2.0 → 1.2.1}/part.json +1 -1
  117. package/dist/kit/parts/catalog.d.ts +3 -20
  118. package/dist/kit/parts/catalog.d.ts.map +1 -1
  119. package/dist/kit/parts/catalog.js +6 -41
  120. package/dist/kit/parts/catalog.js.map +1 -1
  121. package/dist/kit/parts/loader.d.ts +7 -2
  122. package/dist/kit/parts/loader.d.ts.map +1 -1
  123. package/dist/kit/parts/loader.js +88 -23
  124. package/dist/kit/parts/loader.js.map +1 -1
  125. package/dist/skills/master-skill.d.ts +1 -3
  126. package/dist/skills/master-skill.d.ts.map +1 -1
  127. package/dist/skills/master-skill.js +12 -14
  128. package/dist/skills/master-skill.js.map +1 -1
  129. package/dist/skills/routes.js +4 -4
  130. package/dist/skills/routes.js.map +1 -1
  131. package/dist/skills/server-entry-skills.d.ts +6 -6
  132. package/dist/skills/server-entry-skills.js +15 -15
  133. package/dist/skills/server-entry-skills.js.map +1 -1
  134. package/dist/utils/browser-preflight.d.ts +3 -0
  135. package/dist/utils/browser-preflight.d.ts.map +1 -1
  136. package/dist/utils/browser-preflight.js +27 -6
  137. package/dist/utils/browser-preflight.js.map +1 -1
  138. package/dist/utils/exit.d.ts +6 -0
  139. package/dist/utils/exit.d.ts.map +1 -0
  140. package/dist/utils/exit.js +37 -0
  141. package/dist/utils/exit.js.map +1 -0
  142. package/package.json +13 -2
  143. package/skills/goose-ads/SKILL.md +3 -3
  144. package/skills/goose-product-photos/SKILL.md +3 -3
  145. package/skills/goose-video/SKILL.md +5 -5
  146. package/skills/goose-video-local/SKILL.md +3 -3
  147. package/skills/gooseworks/SKILL.md +6 -8
  148. package/skills/make-custom-video/SKILL.md +2 -2
  149. package/skills/manifest.json +7 -7
  150. package/skills/routes.json +3 -3
@@ -0,0 +1,366 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.LOOK_FOR = exports.PRESENCE_MIN = exports.SHEET_FRAMES = void 0;
37
+ exports.tileSize = tileSize;
38
+ exports.sheetTimes = sheetTimes;
39
+ exports.tileLabel = tileLabel;
40
+ exports.composeSheet = composeSheet;
41
+ exports.encodePng = encodePng;
42
+ exports.productColours = productColours;
43
+ exports.bestCover = bestCover;
44
+ exports.presenceWarning = presenceWarning;
45
+ exports.lookAtFinal = lookAtFinal;
46
+ // What an agent with eyes looks at before it says a video is ready, and the one content warning a
47
+ // machine can give without a vision model:
48
+ // final/contact-sheet.png about 12 frames across the video and its end card, each labelled by scene
49
+ // final/eyes.json which scene and second each tile is, the sheet's path and the warnings
50
+ // The product-presence warning compares the frozen product photos with the sampled frames by colour
51
+ // alone, so it only ever warns: a product whose colours are nowhere in the video may not show.
52
+ const child_process_1 = require("child_process");
53
+ const promises_1 = require("fs/promises");
54
+ const path = __importStar(require("path"));
55
+ const zlib_1 = require("zlib");
56
+ const toolchain_1 = require("./toolchain");
57
+ /** Frames across the video, before the end card. */
58
+ exports.SHEET_FRAMES = 12;
59
+ const COLUMNS = 4;
60
+ /** Each tile's long side, in pixels. */
61
+ const TILE_LONG = 320;
62
+ /** The label strip under each tile. */
63
+ const LABEL_H = 20;
64
+ const GAP = 4;
65
+ /** One frame grab may take this long. */
66
+ const GRAB_MS = 20_000;
67
+ /** At most this many product photos are compared. */
68
+ const MAX_PHOTOS = 4;
69
+ /** A product photo's colours must cover this much of some patch of a frame for the product to count as seen. */
70
+ exports.PRESENCE_MIN = 0.5;
71
+ /** What an agent looks for on the sheet before it says the video is ready. */
72
+ exports.LOOK_FOR = [
73
+ 'The product shows, facing the camera, where the plan puts it.',
74
+ 'Every word on screen is readable on a phone.',
75
+ 'No other brand’s name or logo shows.',
76
+ 'No spoken or written word is cut off.',
77
+ ];
78
+ /** One raw picture from ffmpeg's stdout, exactly `bytes` long. */
79
+ const grabWith = (ffmpeg) => (file, args, bytes, signal) => new Promise((resolve, reject) => {
80
+ const child = (0, child_process_1.spawn)(ffmpeg, ['-v', 'error', ...args.slice(0, args.indexOf('-i')), '-i', file, ...args.slice(args.indexOf('-i') + 1), '-frames:v', '1', '-f', 'rawvideo', 'pipe:1'], {
81
+ stdio: ['ignore', 'pipe', 'ignore'],
82
+ env: (0, toolchain_1.childEnv)(),
83
+ signal,
84
+ });
85
+ const chunks = [];
86
+ let got = 0;
87
+ const timer = setTimeout(() => child.kill('SIGKILL'), GRAB_MS);
88
+ child.stdout.on('data', (chunk) => {
89
+ got += chunk.length;
90
+ if (got <= bytes)
91
+ chunks.push(chunk);
92
+ });
93
+ child.on('error', (error) => {
94
+ clearTimeout(timer);
95
+ reject(error);
96
+ });
97
+ child.on('close', (code) => {
98
+ clearTimeout(timer);
99
+ const data = Buffer.concat(chunks);
100
+ if (code === 0 && data.length === bytes)
101
+ resolve(data);
102
+ else
103
+ reject(new Error(`no frame from ${path.basename(file)}`));
104
+ });
105
+ });
106
+ /** The tile size for a picture of this shape: the long side TILE_LONG, both sides even. */
107
+ function tileSize(width, height) {
108
+ const scale = TILE_LONG / Math.max(width, height, 1);
109
+ const even = (n) => Math.max(2, Math.round((n * scale) / 2) * 2);
110
+ return { width: even(width), height: even(height) };
111
+ }
112
+ /** Where the frames are taken: evenly across the video before its end card, then the end card's middle. */
113
+ function sheetTimes(timeline) {
114
+ const card = timeline.end_card && timeline.end_card.end_s > timeline.end_card.start_s ? timeline.end_card : null;
115
+ const bodyEnd = Math.max(card ? card.start_s : timeline.duration_s, 0.1);
116
+ const scenes = [...(timeline.scenes ?? [])].sort((a, b) => a.start_s - b.start_s);
117
+ const tiles = [];
118
+ for (let i = 0; i < exports.SHEET_FRAMES; i++) {
119
+ const at = +((bodyEnd * (i + 0.5)) / exports.SHEET_FRAMES).toFixed(2);
120
+ const index = scenes.findIndex((scene) => at >= scene.start_s && at < scene.end_s);
121
+ tiles.push({ tile: i + 1, at_s: at, ...(index >= 0 ? { scene_id: scenes[index].id, scene: index + 1 } : {}) });
122
+ }
123
+ if (card)
124
+ tiles.push({ tile: exports.SHEET_FRAMES + 1, at_s: +((card.start_s + card.end_s) / 2).toFixed(2), end_card: true });
125
+ return tiles;
126
+ }
127
+ /** A tile's label: its scene and second, or END for the end card. */
128
+ function tileLabel(tile) {
129
+ if (tile.end_card)
130
+ return 'END';
131
+ return `${tile.scene ? `S${tile.scene} ` : ''}${tile.at_s.toFixed(1)}`;
132
+ }
133
+ // A 5 by 7 font for the labels: each row of a glyph is 5 bits, the left pixel first.
134
+ const FONT = {
135
+ '0': [14, 17, 19, 21, 25, 17, 14],
136
+ '1': [4, 12, 4, 4, 4, 4, 14],
137
+ '2': [14, 17, 1, 2, 4, 8, 31],
138
+ '3': [30, 1, 1, 14, 1, 1, 30],
139
+ '4': [2, 6, 10, 18, 31, 2, 2],
140
+ '5': [31, 16, 30, 1, 1, 17, 14],
141
+ '6': [6, 8, 16, 30, 17, 17, 14],
142
+ '7': [31, 1, 2, 4, 8, 8, 8],
143
+ '8': [14, 17, 17, 14, 17, 17, 14],
144
+ '9': [14, 17, 17, 15, 1, 2, 12],
145
+ S: [15, 16, 16, 14, 1, 1, 30],
146
+ E: [31, 16, 16, 30, 16, 16, 31],
147
+ N: [17, 25, 21, 19, 17, 17, 17],
148
+ D: [30, 17, 17, 17, 17, 17, 30],
149
+ '.': [0, 0, 0, 0, 0, 12, 12],
150
+ ' ': [0, 0, 0, 0, 0, 0, 0],
151
+ };
152
+ function drawText(sheet, text, x0, y0, scale = 2) {
153
+ let x = x0;
154
+ for (const char of text) {
155
+ const rows = FONT[char] ?? FONT[' '];
156
+ for (let row = 0; row < 7; row++)
157
+ for (let col = 0; col < 5; col++) {
158
+ if (!(rows[row] & (16 >> col)))
159
+ continue;
160
+ for (let dy = 0; dy < scale; dy++)
161
+ for (let dx = 0; dx < scale; dx++) {
162
+ const px = x + col * scale + dx;
163
+ const py = y0 + row * scale + dy;
164
+ if (px < sheet.width && py < sheet.height)
165
+ sheet.data.fill(255, (py * sheet.width + px) * 3, (py * sheet.width + px) * 3 + 3);
166
+ }
167
+ }
168
+ x += 6 * scale;
169
+ }
170
+ }
171
+ /** The tiles in a grid on a dark sheet, each with its label underneath. */
172
+ function composeSheet(frames, tile) {
173
+ const rows = Math.ceil(frames.length / COLUMNS);
174
+ const cols = Math.min(frames.length, COLUMNS);
175
+ const width = cols * tile.width + (cols + 1) * GAP;
176
+ const height = rows * (tile.height + LABEL_H) + (rows + 1) * GAP;
177
+ const sheet = { width, height, data: Buffer.alloc(width * height * 3, 24) };
178
+ frames.forEach(({ tile: info, frame }, i) => {
179
+ const x0 = GAP + (i % COLUMNS) * (tile.width + GAP);
180
+ const y0 = GAP + Math.floor(i / COLUMNS) * (tile.height + LABEL_H + GAP);
181
+ if (frame)
182
+ for (let y = 0; y < tile.height; y++)
183
+ frame.data.copy(sheet.data, ((y0 + y) * width + x0) * 3, y * tile.width * 3, (y + 1) * tile.width * 3);
184
+ drawText(sheet, frame ? tileLabel(info) : `${tileLabel(info)} .`, x0 + 4, y0 + tile.height + 3);
185
+ });
186
+ return sheet;
187
+ }
188
+ const CRC_TABLE = Array.from({ length: 256 }, (_, n) => {
189
+ let c = n;
190
+ for (let k = 0; k < 8; k++)
191
+ c = c & 1 ? 0xedb88320 ^ (c >>> 1) : c >>> 1;
192
+ return c >>> 0;
193
+ });
194
+ function crc32(data) {
195
+ let c = 0xffffffff;
196
+ for (const byte of data)
197
+ c = CRC_TABLE[(c ^ byte) & 0xff] ^ (c >>> 8);
198
+ return (c ^ 0xffffffff) >>> 0;
199
+ }
200
+ function chunk(type, body) {
201
+ const head = Buffer.alloc(8);
202
+ head.writeUInt32BE(body.length, 0);
203
+ head.write(type, 4, 'ascii');
204
+ const crc = Buffer.alloc(4);
205
+ crc.writeUInt32BE(crc32(Buffer.concat([head.subarray(4), body])), 0);
206
+ return Buffer.concat([head, body, crc]);
207
+ }
208
+ /** An RGB picture as a PNG file's bytes. */
209
+ function encodePng(picture) {
210
+ const header = Buffer.alloc(13);
211
+ header.writeUInt32BE(picture.width, 0);
212
+ header.writeUInt32BE(picture.height, 4);
213
+ header.set([8, 2, 0, 0, 0], 8);
214
+ const stride = picture.width * 3;
215
+ const raw = Buffer.alloc((stride + 1) * picture.height);
216
+ for (let y = 0; y < picture.height; y++)
217
+ picture.data.copy(raw, y * (stride + 1) + 1, y * stride, (y + 1) * stride);
218
+ return Buffer.concat([Buffer.from([137, 80, 78, 71, 13, 10, 26, 10]), chunk('IHDR', header), chunk('IDAT', (0, zlib_1.deflateSync)(raw)), chunk('IEND', Buffer.alloc(0))]);
219
+ }
220
+ // Colour bins: 4 for greys (by brightness), then 12 hues by 2 saturations by 2 brightnesses.
221
+ const BINS = 4 + 12 * 2 * 2;
222
+ function binOf(r, g, b) {
223
+ const max = Math.max(r, g, b);
224
+ const min = Math.min(r, g, b);
225
+ const v = max / 255;
226
+ const s = max === 0 ? 0 : (max - min) / max;
227
+ if (s < 0.2 || v < 0.15)
228
+ return Math.min(Math.floor(v * 4), 3);
229
+ let h = 0;
230
+ if (max === r)
231
+ h = ((g - b) / (max - min) + 6) % 6;
232
+ else if (max === g)
233
+ h = (b - r) / (max - min) + 2;
234
+ else
235
+ h = (r - g) / (max - min) + 4;
236
+ return 4 + Math.min(Math.floor(h * 2), 11) * 4 + (s < 0.55 ? 0 : 2) + (v < 0.6 ? 0 : 1);
237
+ }
238
+ /** The product's colour mix: its opaque pixels, or those unlike its border when the photo has no transparency. */
239
+ function productColours(photo) {
240
+ const { width, height, data } = photo;
241
+ const count = width * height;
242
+ let clear = 0;
243
+ for (let i = 0; i < count; i++)
244
+ if (data[i * 4 + 3] < 128)
245
+ clear++;
246
+ const cutout = clear >= count * 0.05;
247
+ // Without transparency, the background is the border's typical colour.
248
+ const border = [];
249
+ for (let x = 0; x < width; x++)
250
+ border.push([0, x], [height - 1, x]);
251
+ for (let y = 0; y < height; y++)
252
+ border.push([y, 0], [y, width - 1]);
253
+ const median = (channel) => {
254
+ const values = border.map(([y, x]) => data[(y * width + x) * 4 + channel]).sort((a, b) => a - b);
255
+ return values[Math.floor(values.length / 2)];
256
+ };
257
+ const bg = [median(0), median(1), median(2)];
258
+ const keep = (i) => {
259
+ if (cutout)
260
+ return data[i * 4 + 3] >= 128;
261
+ const d = Math.abs(data[i * 4] - bg[0]) + Math.abs(data[i * 4 + 1] - bg[1]) + Math.abs(data[i * 4 + 2] - bg[2]);
262
+ return d > 60;
263
+ };
264
+ const hist = new Float64Array(BINS);
265
+ let kept = 0;
266
+ for (let i = 0; i < count; i++)
267
+ if (keep(i)) {
268
+ hist[binOf(data[i * 4], data[i * 4 + 1], data[i * 4 + 2])]++;
269
+ kept++;
270
+ }
271
+ if (kept < count * 0.05)
272
+ return null;
273
+ for (let b = 0; b < BINS; b++)
274
+ hist[b] /= kept;
275
+ return hist;
276
+ }
277
+ /**
278
+ * How much of the best-matching patch of any frame the product's colours cover (0 to 1): square patches of
279
+ * a quarter, two fifths and seven tenths of the frame's short side, moved half a patch at a time.
280
+ */
281
+ function bestCover(product, frames) {
282
+ let best = 0;
283
+ for (const frame of frames) {
284
+ const { width, height, data } = frame;
285
+ const bins = new Uint8Array(width * height);
286
+ for (let i = 0; i < bins.length; i++)
287
+ bins[i] = binOf(data[i * 3], data[i * 3 + 1], data[i * 3 + 2]);
288
+ for (const share of [0.25, 0.4, 0.7]) {
289
+ const side = Math.max(Math.round(Math.min(width, height) * share), 4);
290
+ const step = Math.max(Math.floor(side / 2), 1);
291
+ const counts = new Float64Array(BINS);
292
+ for (let y0 = 0; y0 + side <= height; y0 += step)
293
+ for (let x0 = 0; x0 + side <= width; x0 += step) {
294
+ counts.fill(0);
295
+ for (let y = y0; y < y0 + side; y++)
296
+ for (let x = x0; x < x0 + side; x++)
297
+ counts[bins[y * width + x]]++;
298
+ let cover = 0;
299
+ for (let b = 0; b < BINS; b++)
300
+ cover += Math.min(product[b], counts[b] / (side * side));
301
+ if (cover > best)
302
+ best = cover;
303
+ }
304
+ }
305
+ }
306
+ return best;
307
+ }
308
+ /** The warning for a product none of whose photos' colours show in the video; null when one does or none can be read. */
309
+ function presenceWarning(name, photos, frames) {
310
+ if (!photos.length || !frames.length)
311
+ return null;
312
+ const cover = Math.max(...photos.map((photo) => bestCover(photo, frames)));
313
+ if (cover >= exports.PRESENCE_MIN)
314
+ return null;
315
+ const who = name?.trim() ? `“${name.trim().slice(0, 60)}”` : 'The product';
316
+ return {
317
+ check: 'product_visible',
318
+ message: `${who} may not show clearly in the video: none of the frames we looked at matches its photos.`,
319
+ expected: `a frame patch matching the photos at ${exports.PRESENCE_MIN}`,
320
+ found: cover.toFixed(2),
321
+ };
322
+ }
323
+ /**
324
+ * Writes the contact sheet and eyes.json next to the final, and gives back the product-presence warnings.
325
+ * A frame or photo that can't be read is left out; nothing here stops the video.
326
+ */
327
+ async function lookAtFinal(opts) {
328
+ const grab = opts.grab ?? grabWith(opts.ffmpeg);
329
+ const dir = path.dirname(opts.final);
330
+ const size = tileSize(opts.timeline.width, opts.timeline.height);
331
+ const tiles = sheetTimes(opts.timeline);
332
+ const frames = [];
333
+ for (const tile of tiles) {
334
+ const data = await grab(opts.final, ['-ss', String(tile.at_s), '-i', '-vf', `scale=${size.width}:${size.height}:flags=area,format=rgb24`], size.width * size.height * 3, opts.signal).catch(() => null);
335
+ frames.push({ tile, frame: data ? { ...size, data } : null });
336
+ }
337
+ const seen = frames.filter((f) => f.frame && !f.tile.end_card).map((f) => f.frame);
338
+ let sheet = null;
339
+ if (frames.some((f) => f.frame)) {
340
+ sheet = path.join(dir, 'contact-sheet.png');
341
+ await (0, promises_1.writeFile)(sheet, encodePng(composeSheet(frames, size)), { mode: 0o600 });
342
+ }
343
+ const warnings = [];
344
+ // Every product gets its fair share of the photo budget, at least one readable photo each when it has one.
345
+ const share = Math.max(1, Math.floor(MAX_PHOTOS / Math.max(opts.products.length, 1)));
346
+ for (const product of opts.products) {
347
+ const colours = [];
348
+ let tries = 0;
349
+ for (const photo of product.photos) {
350
+ if (colours.length >= share || tries >= share + 2)
351
+ break;
352
+ tries++;
353
+ const data = await grab(photo, ['-i', '-vf', 'scale=64:64:flags=area,format=rgba'], 64 * 64 * 4, opts.signal).catch(() => null);
354
+ const hist = data ? productColours({ width: 64, height: 64, data }) : null;
355
+ if (hist)
356
+ colours.push(hist);
357
+ }
358
+ const warning = presenceWarning(product.name, colours, seen);
359
+ if (warning)
360
+ warnings.push(warning);
361
+ }
362
+ const eyes = { contact_sheet: sheet, tiles, warnings, look_for: exports.LOOK_FOR };
363
+ await (0, promises_1.writeFile)(path.join(dir, 'eyes.json'), JSON.stringify(eyes, null, 2) + '\n', { mode: 0o600 });
364
+ return eyes;
365
+ }
366
+ //# sourceMappingURL=eyes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eyes.js","sourceRoot":"","sources":["../../../src/kit/core/eyes.ts"],"names":[],"mappings":"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"}
@@ -157,7 +157,7 @@ function isLineFile(value) {
157
157
  typeof v.mime === 'string');
158
158
  }
159
159
  const MAX_INPUT_BYTES = 200 * 1024 * 1024;
160
- const mismatch = () => new errors_1.KitStop('A file in the plan does not match the one approved, so nothing was made and nothing was spent.', 'refused');
160
+ const mismatch = () => new errors_1.KitStop('A file in the plan does not match the one approved, so the video stopped before using it.', 'refused');
161
161
  /** The bytes of one plan file, checked against its size and hash; fetched once per sha256. */
162
162
  async function checkedFile(files, file, fetch) {
163
163
  await (0, promises_1.mkdir)(files.dir, { recursive: true, mode: 0o700 });
@@ -165,7 +165,7 @@ async function checkedFile(files, file, fetch) {
165
165
  const have = (0, fs_1.existsSync)(target) ? await hashFile(target) : null;
166
166
  if (!have || have.sha256 !== file.sha256 || have.bytes !== file.bytes) {
167
167
  if (file.bytes > MAX_INPUT_BYTES)
168
- throw new errors_1.KitStop('A file in the plan is larger than the kit allows. Nothing was spent.', 'refused');
168
+ throw new errors_1.KitStop('A file in the plan is larger than the kit allows.', 'refused');
169
169
  const data = await fetch();
170
170
  if (data.length !== file.bytes || (0, crypto_1.createHash)('sha256').update(data).digest('hex') !== file.sha256)
171
171
  throw mismatch();
@@ -1 +1 @@
1
- {"version":3,"file":"files.js","sourceRoot":"","sources":["../../../src/kit/core/files.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../../../src/kit/core/files.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { PartRef, PartsLock } from '../part-interface';
2
+ /** The pinned part, or the newer version of its major the lock moved it to. */
3
+ export declare function lockedRef(pin: PartRef, lock: PartsLock | null): PartRef;
4
+ //# sourceMappingURL=lock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../../src/kit/core/lock.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG5D,+EAA+E;AAC/E,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,GAAG,OAAO,CAKvE"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.lockedRef = lockedRef;
4
+ const semver_1 = require("../parts/semver");
5
+ /** The pinned part, or the newer version of its major the lock moved it to. */
6
+ function lockedRef(pin, lock) {
7
+ const entry = lock?.parts?.[pin.id];
8
+ if (!entry || entry.version === pin.version || entry.moved_from !== pin.version)
9
+ return pin;
10
+ const moved = (0, semver_1.isExactVersion)(entry.version) && (0, semver_1.isExactVersion)(pin.version) && entry.version.split('.')[0] === pin.version.split('.')[0] && (0, semver_1.compareVersions)(entry.version, pin.version) > 0;
11
+ return moved ? { id: pin.id, version: entry.version } : pin;
12
+ }
13
+ //# sourceMappingURL=lock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../../src/kit/core/lock.ts"],"names":[],"mappings":";;AAOA,8BAKC;AARD,4CAAkE;AAElE,+EAA+E;AAC/E,SAAgB,SAAS,CAAC,GAAY,EAAE,IAAsB;IAC5D,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,IAAI,KAAK,CAAC,UAAU,KAAK,GAAG,CAAC,OAAO;QAAE,OAAO,GAAG,CAAC;IAC5F,MAAM,KAAK,GAAG,IAAA,uBAAc,EAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAA,uBAAc,EAAC,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAA,wBAAe,EAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3L,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AAC9D,CAAC"}
@@ -1,15 +1,51 @@
1
1
  import type { PartLogger } from '../part-interface';
2
2
  export type Redactor = (text: string) => string;
3
+ /** One event for a program reading the kit's output (`--json`): a line for the person, or a row of the card. */
4
+ export type KitEvent = {
5
+ event: 'say';
6
+ text: string;
7
+ } | {
8
+ event: 'step';
9
+ label: string;
10
+ state: string;
11
+ detail?: string;
12
+ };
3
13
  export declare class KitLog {
4
14
  private readonly print;
5
15
  private readonly redactor;
16
+ /** With `--json`: every line goes out as an event here instead of being printed. */
17
+ private readonly emit?;
6
18
  private file;
7
- constructor(print: (line: string) => void, redactor?: Redactor);
8
- /** Start writing log.ndjson in the run folder. */
19
+ /** On every entry: which run wrote it, and which GooseWorks package ran. */
20
+ private tags;
21
+ constructor(print: (line: string) => void, redactor?: Redactor,
22
+ /** With `--json`: every line goes out as an event here instead of being printed. */
23
+ emit?: ((event: KitEvent) => void) | undefined);
24
+ /** Writes to this file, such as the video's log.ndjson for a refusal before any run starts. */
9
25
  attach(file: string): void;
26
+ /**
27
+ * Starts this run's own log, `<dir>/<name>.ndjson` (a new name if that one is taken), and
28
+ * notes it with one line in `index`. Returns the run's name and its file.
29
+ */
30
+ attachRun(opts: {
31
+ index: string;
32
+ dir: string;
33
+ name: string;
34
+ packageVersion: string;
35
+ fields?: Record<string, unknown>;
36
+ }): {
37
+ run: string;
38
+ file: string;
39
+ };
10
40
  clean(text: string): string;
11
41
  /** A line for the person running the kit (and the worker's output tail). */
12
42
  say(line: string): void;
43
+ /** A row of the card that changed: its line for the person, or a step event with `--json`. */
44
+ step(row: {
45
+ label: string;
46
+ state: string;
47
+ detail?: string;
48
+ }, line: string): void;
13
49
  write(level: 'debug' | 'info' | 'warn' | 'error', message: string, fields?: Record<string, unknown>): void;
14
50
  /** The logger a part gets: file only, tagged with its step. */
15
51
  forStep(step: string): PartLogger;
@@ -1 +1 @@
1
- {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../../src/kit/core/log.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAc,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGhE,MAAM,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;AAEhD,qBAAa,MAAM;IAIf,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAJ3B,OAAO,CAAC,IAAI,CAAuB;gBAGhB,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAC7B,QAAQ,GAAE,QAAiC;IAG9D,kDAAkD;IAClD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK1B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI3B,4EAA4E;IAC5E,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAMvB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAU1G,+DAA+D;IAC/D,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;CAKlC"}
1
+ {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../../src/kit/core/log.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAc,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGhE,MAAM,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;AAEhD,gHAAgH;AAChH,MAAM,MAAM,QAAQ,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzH,qBAAa,MAAM;IAMf,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,oFAAoF;IACpF,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IARxB,OAAO,CAAC,IAAI,CAAuB;IACnC,4EAA4E;IAC5E,OAAO,CAAC,IAAI,CAAyD;gBAGlD,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAC7B,QAAQ,GAAE,QAAiC;IAC5D,oFAAoF;IACnE,IAAI,CAAC,GAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,aAAA;IAGnD,+FAA+F;IAC/F,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK1B;;;OAGG;IACH,SAAS,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IAYtJ,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI3B,4EAA4E;IAC5E,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOvB,8FAA8F;IAC9F,IAAI,CAAC,GAAG,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAMhF,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAU1G,+DAA+D;IAC/D,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;CAKlC"}
@@ -34,7 +34,8 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.KitLog = void 0;
37
- // The kit's structured log: log.ndjson in the run folder, secrets redacted.
37
+ // The kit's structured log, secrets redacted: one file per run of `video make`
38
+ // under the run folder's runs/, and one index line per run in log.ndjson.
38
39
  // Lines meant for the person go through `say`; part logs stay in the file.
39
40
  const fs_1 = require("fs");
40
41
  const path = __importStar(require("path"));
@@ -42,29 +43,61 @@ const secrets_1 = require("./secrets");
42
43
  class KitLog {
43
44
  print;
44
45
  redactor;
46
+ emit;
45
47
  file = null;
46
- constructor(print, redactor = (text) => (0, secrets_1.redact)(text)) {
48
+ /** On every entry: which run wrote it, and which GooseWorks package ran. */
49
+ tags = null;
50
+ constructor(print, redactor = (text) => (0, secrets_1.redact)(text),
51
+ /** With `--json`: every line goes out as an event here instead of being printed. */
52
+ emit) {
47
53
  this.print = print;
48
54
  this.redactor = redactor;
55
+ this.emit = emit;
49
56
  }
50
- /** Start writing log.ndjson in the run folder. */
57
+ /** Writes to this file, such as the video's log.ndjson for a refusal before any run starts. */
51
58
  attach(file) {
52
59
  (0, fs_1.mkdirSync)(path.dirname(file), { recursive: true, mode: 0o700 });
53
60
  this.file = file;
54
61
  }
62
+ /**
63
+ * Starts this run's own log, `<dir>/<name>.ndjson` (a new name if that one is taken), and
64
+ * notes it with one line in `index`. Returns the run's name and its file.
65
+ */
66
+ attachRun(opts) {
67
+ (0, fs_1.mkdirSync)(opts.dir, { recursive: true, mode: 0o700 });
68
+ let run = opts.name;
69
+ for (let n = 2; (0, fs_1.existsSync)(path.join(opts.dir, `${run}.ndjson`)); n++)
70
+ run = `${opts.name}-${n}`;
71
+ const file = path.join(opts.dir, `${run}.ndjson`);
72
+ this.tags = { run, package_version: opts.packageVersion };
73
+ this.file = opts.index;
74
+ this.write('info', 'run started', { file: path.relative(path.dirname(opts.index), file), ...(opts.fields ?? {}) });
75
+ this.file = file;
76
+ return { run, file };
77
+ }
55
78
  clean(text) {
56
79
  return (0, secrets_1.redact)(this.redactor(text));
57
80
  }
58
81
  /** A line for the person running the kit (and the worker's output tail). */
59
82
  say(line) {
60
83
  const text = this.clean(line);
61
- this.print(text);
84
+ if (this.emit)
85
+ this.emit({ event: 'say', text });
86
+ else
87
+ this.print(text);
62
88
  this.write('info', text);
63
89
  }
90
+ /** A row of the card that changed: its line for the person, or a step event with `--json`. */
91
+ step(row, line) {
92
+ if (!this.emit)
93
+ return this.say(line);
94
+ this.emit({ event: 'step', label: row.label, state: row.state, ...(row.detail ? { detail: row.detail } : {}) });
95
+ this.write('info', this.clean(line));
96
+ }
64
97
  write(level, message, fields) {
65
98
  if (!this.file)
66
99
  return;
67
- const entry = { at: new Date().toISOString(), level, message, ...(fields ? { fields } : {}) };
100
+ const entry = { at: new Date().toISOString(), level, ...(this.tags ?? {}), message, ...(fields ? { fields } : {}) };
68
101
  try {
69
102
  (0, fs_1.appendFileSync)(this.file, this.clean(JSON.stringify(entry)) + '\n', { mode: 0o600 });
70
103
  }
@@ -1 +1 @@
1
- {"version":3,"file":"log.js","sourceRoot":"","sources":["../../../src/kit/core/log.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4EAA4E;AAC5E,2EAA2E;AAC3E,2BAA+C;AAC/C,2CAA6B;AAE7B,uCAAmC;AAInC,MAAa,MAAM;IAIE;IACA;IAJX,IAAI,GAAkB,IAAI,CAAC;IAEnC,YACmB,KAA6B,EAC7B,WAAqB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,gBAAM,EAAC,IAAI,CAAC;QAD3C,UAAK,GAAL,KAAK,CAAwB;QAC7B,aAAQ,GAAR,QAAQ,CAAmC;IAC3D,CAAC;IAEJ,kDAAkD;IAClD,MAAM,CAAC,IAAY;QACjB,IAAA,cAAS,EAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,IAAY;QAChB,OAAO,IAAA,gBAAM,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,4EAA4E;IAC5E,GAAG,CAAC,IAAY;QACd,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,KAA0C,EAAE,OAAe,EAAE,MAAgC;QACjG,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO;QACvB,MAAM,KAAK,GAAG,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9F,IAAI,CAAC;YACH,IAAA,mBAAc,EAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACvF,CAAC;QAAC,MAAM,CAAC;YACP,4CAA4C;QAC9C,CAAC;IACH,CAAC;IAED,+DAA+D;IAC/D,OAAO,CAAC,IAAY;QAClB,MAAM,EAAE,GAAG,CAAC,KAA0C,EAAE,EAAE,CAAC,CAAC,OAAe,EAAE,MAAmB,EAAE,EAAE,CAClG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACjF,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACxF,CAAC;CACF;AAzCD,wBAyCC"}
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../../../src/kit/core/log.ts"],"names":[],"mappings":"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"}