gooseworks 0.5.0-dev.9.d3e7757f → 0.5.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 (220) hide show
  1. package/README.md +17 -26
  2. package/dist/auth/device-flow.d.ts +10 -0
  3. package/dist/auth/device-flow.d.ts.map +1 -1
  4. package/dist/auth/device-flow.js +39 -1
  5. package/dist/auth/device-flow.js.map +1 -1
  6. package/dist/commands/doctor.d.ts.map +1 -1
  7. package/dist/commands/doctor.js +3 -1
  8. package/dist/commands/doctor.js.map +1 -1
  9. package/dist/commands/video.d.ts +5 -0
  10. package/dist/commands/video.d.ts.map +1 -0
  11. package/dist/commands/video.js +117 -0
  12. package/dist/commands/video.js.map +1 -0
  13. package/dist/config.d.ts.map +1 -1
  14. package/dist/config.js +5 -2
  15. package/dist/config.js.map +1 -1
  16. package/dist/environment.d.ts.map +1 -1
  17. package/dist/environment.js +4 -2
  18. package/dist/environment.js.map +1 -1
  19. package/dist/kit/core/bind.d.ts +12 -0
  20. package/dist/kit/core/bind.d.ts.map +1 -0
  21. package/dist/kit/core/bind.js +77 -0
  22. package/dist/kit/core/bind.js.map +1 -0
  23. package/dist/kit/core/canonical.d.ts +30 -0
  24. package/dist/kit/core/canonical.d.ts.map +1 -0
  25. package/dist/kit/core/canonical.js +67 -0
  26. package/dist/kit/core/canonical.js.map +1 -0
  27. package/dist/kit/core/check.d.ts +22 -0
  28. package/dist/kit/core/check.d.ts.map +1 -0
  29. package/dist/kit/core/check.js +53 -0
  30. package/dist/kit/core/check.js.map +1 -0
  31. package/dist/kit/core/device.d.ts +17 -0
  32. package/dist/kit/core/device.d.ts.map +1 -0
  33. package/dist/kit/core/device.js +153 -0
  34. package/dist/kit/core/device.js.map +1 -0
  35. package/dist/kit/core/errors.d.ts +22 -0
  36. package/dist/kit/core/errors.d.ts.map +1 -0
  37. package/dist/kit/core/errors.js +49 -0
  38. package/dist/kit/core/errors.js.map +1 -0
  39. package/dist/kit/core/files.d.ts +49 -0
  40. package/dist/kit/core/files.d.ts.map +1 -0
  41. package/dist/kit/core/files.js +213 -0
  42. package/dist/kit/core/files.js.map +1 -0
  43. package/dist/kit/core/host.d.ts +26 -0
  44. package/dist/kit/core/host.d.ts.map +1 -0
  45. package/dist/kit/core/host.js +10 -0
  46. package/dist/kit/core/host.js.map +1 -0
  47. package/dist/kit/core/log.d.ts +17 -0
  48. package/dist/kit/core/log.d.ts.map +1 -0
  49. package/dist/kit/core/log.js +82 -0
  50. package/dist/kit/core/log.js.map +1 -0
  51. package/dist/kit/core/paths.d.ts +27 -0
  52. package/dist/kit/core/paths.d.ts.map +1 -0
  53. package/dist/kit/core/paths.js +103 -0
  54. package/dist/kit/core/paths.js.map +1 -0
  55. package/dist/kit/core/pieces.d.ts +84 -0
  56. package/dist/kit/core/pieces.d.ts.map +1 -0
  57. package/dist/kit/core/pieces.js +374 -0
  58. package/dist/kit/core/pieces.js.map +1 -0
  59. package/dist/kit/core/progress-reporter.d.ts +30 -0
  60. package/dist/kit/core/progress-reporter.d.ts.map +1 -0
  61. package/dist/kit/core/progress-reporter.js +106 -0
  62. package/dist/kit/core/progress-reporter.js.map +1 -0
  63. package/dist/kit/core/progress.d.ts +22 -0
  64. package/dist/kit/core/progress.d.ts.map +1 -0
  65. package/dist/kit/core/progress.js +90 -0
  66. package/dist/kit/core/progress.js.map +1 -0
  67. package/dist/kit/core/run.d.ts +35 -0
  68. package/dist/kit/core/run.d.ts.map +1 -0
  69. package/dist/kit/core/run.js +850 -0
  70. package/dist/kit/core/run.js.map +1 -0
  71. package/dist/kit/core/save.d.ts +43 -0
  72. package/dist/kit/core/save.d.ts.map +1 -0
  73. package/dist/kit/core/save.js +265 -0
  74. package/dist/kit/core/save.js.map +1 -0
  75. package/dist/kit/core/schema.d.ts +5 -0
  76. package/dist/kit/core/schema.d.ts.map +1 -0
  77. package/dist/kit/core/schema.js +183 -0
  78. package/dist/kit/core/schema.js.map +1 -0
  79. package/dist/kit/core/secrets.d.ts +9 -0
  80. package/dist/kit/core/secrets.d.ts.map +1 -0
  81. package/dist/kit/core/secrets.js +60 -0
  82. package/dist/kit/core/secrets.js.map +1 -0
  83. package/dist/kit/core/style.d.ts +59 -0
  84. package/dist/kit/core/style.d.ts.map +1 -0
  85. package/dist/kit/core/style.js +179 -0
  86. package/dist/kit/core/style.js.map +1 -0
  87. package/dist/kit/core/toolchain.d.ts +52 -0
  88. package/dist/kit/core/toolchain.d.ts.map +1 -0
  89. package/dist/kit/core/toolchain.js +321 -0
  90. package/dist/kit/core/toolchain.js.map +1 -0
  91. package/dist/kit/core/version.d.ts +18 -0
  92. package/dist/kit/core/version.d.ts.map +1 -0
  93. package/dist/kit/core/version.js +33 -0
  94. package/dist/kit/core/version.js.map +1 -0
  95. package/dist/kit/env.d.ts +42 -0
  96. package/dist/kit/env.d.ts.map +1 -0
  97. package/dist/kit/env.js +76 -0
  98. package/dist/kit/env.js.map +1 -0
  99. package/dist/kit/line/client.d.ts +82 -0
  100. package/dist/kit/line/client.d.ts.map +1 -0
  101. package/dist/kit/line/client.js +325 -0
  102. package/dist/kit/line/client.js.map +1 -0
  103. package/dist/kit/line/types.d.ts +178 -0
  104. package/dist/kit/line/types.d.ts.map +1 -0
  105. package/dist/kit/line/types.js +18 -0
  106. package/dist/kit/line/types.js.map +1 -0
  107. package/dist/kit/maker/browser.d.ts +114 -0
  108. package/dist/kit/maker/browser.d.ts.map +1 -0
  109. package/dist/kit/maker/browser.js +547 -0
  110. package/dist/kit/maker/browser.js.map +1 -0
  111. package/dist/kit/maker/encode.d.ts +27 -0
  112. package/dist/kit/maker/encode.d.ts.map +1 -0
  113. package/dist/kit/maker/encode.js +58 -0
  114. package/dist/kit/maker/encode.js.map +1 -0
  115. package/dist/kit/maker/images.d.ts +14 -0
  116. package/dist/kit/maker/images.d.ts.map +1 -0
  117. package/dist/kit/maker/images.js +174 -0
  118. package/dist/kit/maker/images.js.map +1 -0
  119. package/dist/kit/maker/inputs.d.ts +81 -0
  120. package/dist/kit/maker/inputs.d.ts.map +1 -0
  121. package/dist/kit/maker/inputs.js +235 -0
  122. package/dist/kit/maker/inputs.js.map +1 -0
  123. package/dist/kit/maker/make.d.ts +19 -0
  124. package/dist/kit/maker/make.d.ts.map +1 -0
  125. package/dist/kit/maker/make.js +272 -0
  126. package/dist/kit/maker/make.js.map +1 -0
  127. package/dist/kit/maker/page.d.ts +19 -0
  128. package/dist/kit/maker/page.d.ts.map +1 -0
  129. package/dist/kit/maker/page.js +276 -0
  130. package/dist/kit/maker/page.js.map +1 -0
  131. package/dist/kit/maker/parts/html-frames/1.0.0/part.json +183 -0
  132. package/dist/kit/maker/parts/html-frames/src/part.d.ts +3 -0
  133. package/dist/kit/maker/parts/html-frames/src/part.d.ts.map +1 -0
  134. package/dist/kit/maker/parts/html-frames/src/part.js +10 -0
  135. package/dist/kit/maker/parts/html-frames/src/part.js.map +1 -0
  136. package/dist/kit/maker/runtime.d.ts +7 -0
  137. package/dist/kit/maker/runtime.d.ts.map +1 -0
  138. package/dist/kit/maker/runtime.js +571 -0
  139. package/dist/kit/maker/runtime.js.map +1 -0
  140. package/dist/kit/maker/unzip.d.ts +3 -0
  141. package/dist/kit/maker/unzip.d.ts.map +1 -0
  142. package/dist/kit/maker/unzip.js +133 -0
  143. package/dist/kit/maker/unzip.js.map +1 -0
  144. package/dist/kit/parts/catalog.d.ts +47 -0
  145. package/dist/kit/parts/catalog.d.ts.map +1 -0
  146. package/dist/kit/parts/catalog.js +198 -0
  147. package/dist/kit/parts/catalog.js.map +1 -0
  148. package/dist/kit/parts/fs-safe.d.ts +32 -0
  149. package/dist/kit/parts/fs-safe.d.ts.map +1 -0
  150. package/dist/kit/parts/fs-safe.js +185 -0
  151. package/dist/kit/parts/fs-safe.js.map +1 -0
  152. package/dist/kit/parts/loader.d.ts +50 -0
  153. package/dist/kit/parts/loader.d.ts.map +1 -0
  154. package/dist/kit/parts/loader.js +395 -0
  155. package/dist/kit/parts/loader.js.map +1 -0
  156. package/dist/kit/parts/semver.d.ts +6 -0
  157. package/dist/kit/parts/semver.d.ts.map +1 -0
  158. package/dist/kit/parts/semver.js +44 -0
  159. package/dist/kit/parts/semver.js.map +1 -0
  160. package/dist/program.d.ts.map +1 -1
  161. package/dist/program.js +6 -6
  162. package/dist/program.js.map +1 -1
  163. package/dist/skills/installer.d.ts +22 -0
  164. package/dist/skills/installer.d.ts.map +1 -1
  165. package/dist/skills/installer.js +56 -8
  166. package/dist/skills/installer.js.map +1 -1
  167. package/dist/skills/master-skill.d.ts +11 -70
  168. package/dist/skills/master-skill.d.ts.map +1 -1
  169. package/dist/skills/master-skill.js +120 -2900
  170. package/dist/skills/master-skill.js.map +1 -1
  171. package/dist/skills/package-freshness.d.ts +19 -0
  172. package/dist/skills/package-freshness.d.ts.map +1 -1
  173. package/dist/skills/package-freshness.js +37 -2
  174. package/dist/skills/package-freshness.js.map +1 -1
  175. package/dist/skills/routes.d.ts +7 -2
  176. package/dist/skills/routes.d.ts.map +1 -1
  177. package/dist/skills/routes.js +21 -25
  178. package/dist/skills/routes.js.map +1 -1
  179. package/dist/skills/server-entry-skills.d.ts +14 -0
  180. package/dist/skills/server-entry-skills.d.ts.map +1 -0
  181. package/dist/skills/server-entry-skills.js +119 -0
  182. package/dist/skills/server-entry-skills.js.map +1 -0
  183. package/dist/skills/staging-content.js +1 -1
  184. package/package.json +10 -6
  185. package/skills/goose-ads/SKILL.md +27 -605
  186. package/skills/goose-product-photos/SKILL.md +24 -217
  187. package/skills/goose-video/SKILL.md +23 -610
  188. package/skills/goose-video-local/SKILL.md +3 -1609
  189. package/skills/gooseworks/SKILL.md +58 -529
  190. package/skills/make-custom-video/SKILL.md +23 -725
  191. package/skills/manifest.json +7 -7
  192. package/skills/routes.json +10 -24
  193. package/dist/commands/video-local.d.ts +0 -9
  194. package/dist/commands/video-local.d.ts.map +0 -1
  195. package/dist/commands/video-local.js +0 -83
  196. package/dist/commands/video-local.js.map +0 -1
  197. package/dist/commands/video-save.d.ts +0 -3
  198. package/dist/commands/video-save.d.ts.map +0 -1
  199. package/dist/commands/video-save.js +0 -83
  200. package/dist/commands/video-save.js.map +0 -1
  201. package/dist/lib/video-local-captions.d.ts +0 -83
  202. package/dist/lib/video-local-captions.d.ts.map +0 -1
  203. package/dist/lib/video-local-captions.js +0 -261
  204. package/dist/lib/video-local-captions.js.map +0 -1
  205. package/dist/lib/video-local-runtime.d.ts +0 -8
  206. package/dist/lib/video-local-runtime.d.ts.map +0 -1
  207. package/dist/lib/video-local-runtime.js +0 -201
  208. package/dist/lib/video-local-runtime.js.map +0 -1
  209. package/dist/lib/video-save-mcp.d.ts +0 -9
  210. package/dist/lib/video-save-mcp.d.ts.map +0 -1
  211. package/dist/lib/video-save-mcp.js +0 -162
  212. package/dist/lib/video-save-mcp.js.map +0 -1
  213. package/dist/lib/video-save.d.ts +0 -77
  214. package/dist/lib/video-save.d.ts.map +0 -1
  215. package/dist/lib/video-save.js +0 -440
  216. package/dist/lib/video-save.js.map +0 -1
  217. package/dist/skills/custom-video-skill.d.ts +0 -3
  218. package/dist/skills/custom-video-skill.d.ts.map +0 -1
  219. package/dist/skills/custom-video-skill.js +0 -6
  220. package/dist/skills/custom-video-skill.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/kit/core/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /** Text with every known secret, and anything shaped like one, replaced. */
2
+ export declare function redact(text: string, secrets?: Array<string | null | undefined>): string;
3
+ /** Whether a text holds a secret or a signed link (the run folder must never). */
4
+ export declare function holdsSecret(text: string, secrets?: Array<string | null | undefined>): boolean;
5
+ /** A link with its query and fragment removed, so a signed link is never kept. */
6
+ export declare function unsignedLink(value: string): string;
7
+ /** A JSON value with every http(s) link's query removed. */
8
+ export declare function withoutSignedLinks(value: unknown): unknown;
9
+ //# sourceMappingURL=secrets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../../src/kit/core/secrets.ts"],"names":[],"mappings":"AAUA,4EAA4E;AAC5E,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAM,GAAG,MAAM,CAO3F;AAED,kFAAkF;AAClF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAM,GAAG,OAAO,CAEjG;AAED,kFAAkF;AAClF,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAYlD;AAED,4DAA4D;AAC5D,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAS1D"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ // Nothing secret leaves memory: the line token, the CLI login and signed links
3
+ // are never printed, logged or written to the run folder.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.redact = redact;
6
+ exports.holdsSecret = holdsSecret;
7
+ exports.unsignedLink = unsignedLink;
8
+ exports.withoutSignedLinks = withoutSignedLinks;
9
+ const PATTERNS = [
10
+ /vl1_[A-Za-z0-9_.-]+/g, // a private-line token
11
+ /\bcal_[A-Za-z0-9_-]{8,}/g, // a CLI login
12
+ /\bBearer\s+[^\s"']+/gi,
13
+ /([?&](?:X-Amz-[A-Za-z-]+|Signature|Expires|Key-Pair-Id|Policy|sig|se|sp|token|access_token|api_key)=)[^&\s"']*/gi,
14
+ ];
15
+ /** Text with every known secret, and anything shaped like one, replaced. */
16
+ function redact(text, secrets = []) {
17
+ let out = text;
18
+ for (const secret of secrets)
19
+ if (secret && secret.length >= 8)
20
+ out = out.split(secret).join('[redacted]');
21
+ for (const pattern of PATTERNS) {
22
+ out = out.replace(pattern, (match, prefix) => (typeof prefix === 'string' && match.startsWith(prefix) ? `${prefix}[redacted]` : '[redacted]'));
23
+ }
24
+ return out;
25
+ }
26
+ /** Whether a text holds a secret or a signed link (the run folder must never). */
27
+ function holdsSecret(text, secrets = []) {
28
+ return redact(text, secrets) !== text;
29
+ }
30
+ /** A link with its query and fragment removed, so a signed link is never kept. */
31
+ function unsignedLink(value) {
32
+ try {
33
+ const url = new URL(value);
34
+ if (url.protocol !== 'http:' && url.protocol !== 'https:')
35
+ return value;
36
+ url.search = '';
37
+ url.hash = '';
38
+ url.username = '';
39
+ url.password = '';
40
+ return url.toString();
41
+ }
42
+ catch {
43
+ return value;
44
+ }
45
+ }
46
+ /** A JSON value with every http(s) link's query removed. */
47
+ function withoutSignedLinks(value) {
48
+ if (typeof value === 'string')
49
+ return /^https?:\/\//i.test(value) ? unsignedLink(value) : value;
50
+ if (Array.isArray(value))
51
+ return value.map(withoutSignedLinks);
52
+ if (value && typeof value === 'object') {
53
+ const out = {};
54
+ for (const [k, v] of Object.entries(value))
55
+ out[k] = withoutSignedLinks(v);
56
+ return out;
57
+ }
58
+ return value;
59
+ }
60
+ //# sourceMappingURL=secrets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../../src/kit/core/secrets.ts"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,0DAA0D;;AAU1D,wBAOC;AAGD,kCAEC;AAGD,oCAYC;AAGD,gDASC;AA/CD,MAAM,QAAQ,GAAa;IACzB,sBAAsB,EAAE,uBAAuB;IAC/C,0BAA0B,EAAE,cAAc;IAC1C,uBAAuB;IACvB,kHAAkH;CACnH,CAAC;AAEF,4EAA4E;AAC5E,SAAgB,MAAM,CAAC,IAAY,EAAE,UAA4C,EAAE;IACjF,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,KAAK,MAAM,MAAM,IAAI,OAAO;QAAE,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC;YAAE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3G,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAe,EAAE,EAAE,CAAC,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;IAC1J,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,kFAAkF;AAClF,SAAgB,WAAW,CAAC,IAAY,EAAE,UAA4C,EAAE;IACtF,OAAO,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;AACxC,CAAC;AAED,kFAAkF;AAClF,SAAgB,YAAY,CAAC,KAAa;IACxC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QACxE,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC;QAChB,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;QACd,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC;QAClB,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC;QAClB,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,4DAA4D;AAC5D,SAAgB,kBAAkB,CAAC,KAAc;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAChG,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC/D,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;QACtG,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,59 @@
1
+ import type { FileRef, StyleLayers, StyleStep } from '../part-interface';
2
+ import type { StylePackageRef } from '../line/types';
3
+ export interface StyleFile {
4
+ id: string;
5
+ version: string;
6
+ traits: {
7
+ needs_browser?: boolean;
8
+ speech?: string;
9
+ captions?: boolean;
10
+ end_card?: boolean;
11
+ qc_flags?: string[];
12
+ };
13
+ duration: {
14
+ min_seconds: number;
15
+ max_seconds: number;
16
+ };
17
+ aspects: string[];
18
+ timeline: StyleStep[];
19
+ layers: StyleLayers;
20
+ assets: {
21
+ fonts?: string[];
22
+ frames?: string[];
23
+ };
24
+ [field: string]: unknown;
25
+ }
26
+ export interface LoadedStyle {
27
+ style: StyleFile;
28
+ /** Every packaged asset by its path in the style, as a FileRef. */
29
+ assets: Map<string, FileRef>;
30
+ }
31
+ /**
32
+ * The style's fingerprint, exactly as our server makes it (gooseworks-app
33
+ * hashStyleFile in services/video-styles/style-versions.service.ts): sha256 of
34
+ * the style as canonical JSON, without its top-level cost block. The cost may
35
+ * change at the same version, so it never changes what a video pinned.
36
+ */
37
+ export declare function styleHash(style: unknown): string;
38
+ /** The style file's grammar, as the core relies on it. */
39
+ export declare function checkStyle(raw: unknown, pin: {
40
+ id: string;
41
+ version: string;
42
+ hash: string;
43
+ }): StyleFile;
44
+ export interface FetchStyle {
45
+ ref: StylePackageRef;
46
+ projectId: string;
47
+ dir: string;
48
+ /** Downloads on our API origin are signed in; others are not. */
49
+ download: (url: string, maxBytes: number) => Promise<Buffer>;
50
+ }
51
+ /** Downloads the pinned package, checking the manifest and every file before anything runs. */
52
+ export declare function fetchStyle(opts: FetchStyle): Promise<LoadedStyle>;
53
+ /** Off production only: the style from a local styles folder, still checked against the pinned hash. */
54
+ export declare function readLocalStyle(stylesDir: string, pin: {
55
+ id: string;
56
+ version: string;
57
+ hash: string;
58
+ }): Promise<LoadedStyle>;
59
+ //# sourceMappingURL=style.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../../src/kit/core/style.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAOrD,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAClH,QAAQ,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAChD,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,SAAS,CAAC;IACjB,mEAAmE;IACnE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9B;AAcD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAMhD;AAED,0DAA0D;AAC1D,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAgBtG;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,eAAe,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,iEAAiE;IACjE,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9D;AAkCD,+FAA+F;AAC/F,wBAAsB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAkCvE;AAED,wGAAwG;AACxG,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAMhI"}
@@ -0,0 +1,179 @@
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.styleHash = styleHash;
37
+ exports.checkStyle = checkStyle;
38
+ exports.fetchStyle = fetchStyle;
39
+ exports.readLocalStyle = readLocalStyle;
40
+ // The style the video pinned: downloaded from its package (A8, GV-20) and
41
+ // checked file by file, or, off production, read from a local styles folder
42
+ // (GOOSE_KIT_STYLES_DIR) and still checked against the pinned style hash.
43
+ // The core reads only the style file's grammar: timeline, layers, traits,
44
+ // duration, aspects and assets. Nothing here knows any one style.
45
+ const fs_1 = require("fs");
46
+ const promises_1 = require("fs/promises");
47
+ const path = __importStar(require("path"));
48
+ const canonical_1 = require("./canonical");
49
+ const errors_1 = require("./errors");
50
+ const files_1 = require("./files");
51
+ const paths_1 = require("./paths");
52
+ const save_1 = require("./save");
53
+ const STEP_ID = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
54
+ const MAX_STYLE_FILE = 10 * 1024 * 1024;
55
+ function refuse(message) {
56
+ throw new errors_1.KitStop(message, 'refused');
57
+ }
58
+ function safeRelative(p) {
59
+ if (typeof p !== 'string' || !p || path.isAbsolute(p) || p.split(/[\\/]/).some((part) => part === '..' || part === ''))
60
+ refuse('The style package names a file outside its folder.');
61
+ return p;
62
+ }
63
+ /**
64
+ * The style's fingerprint, exactly as our server makes it (gooseworks-app
65
+ * hashStyleFile in services/video-styles/style-versions.service.ts): sha256 of
66
+ * the style as canonical JSON, without its top-level cost block. The cost may
67
+ * change at the same version, so it never changes what a video pinned.
68
+ */
69
+ function styleHash(style) {
70
+ if (style && typeof style === 'object' && !Array.isArray(style)) {
71
+ const { cost: _cost, ...made } = style;
72
+ return (0, canonical_1.canonicalHash)(made);
73
+ }
74
+ return (0, canonical_1.canonicalHash)(style);
75
+ }
76
+ /** The style file's grammar, as the core relies on it. */
77
+ function checkStyle(raw, pin) {
78
+ if (!raw || typeof raw !== 'object')
79
+ refuse('The style file could not be read.');
80
+ const style = raw;
81
+ if (style.id !== pin.id || style.version !== pin.version)
82
+ refuse('The style file is not the version this video pinned.');
83
+ if (styleHash(style) !== pin.hash)
84
+ refuse('The style file does not match the one approved for this video.');
85
+ if (!Array.isArray(style.timeline) || style.timeline.length === 0)
86
+ refuse('The style has no steps to make.');
87
+ const seen = new Set();
88
+ for (const step of style.timeline) {
89
+ if (!step || typeof step.id !== 'string' || !STEP_ID.test(step.id) || step.id.startsWith('layer-') || seen.has(step.id))
90
+ refuse('The style lists a step the kit can’t run.');
91
+ if (!step.part || typeof step.part.id !== 'string' || typeof step.part.version !== 'string')
92
+ refuse(`The style’s step ${step.id} names no part.`);
93
+ seen.add(step.id);
94
+ }
95
+ const layers = style.layers;
96
+ if (!layers || ['brand', 'captions', 'sound', 'check'].some((slot) => typeof layers[slot] !== 'boolean'))
97
+ refuse('The style’s layers can’t be read.');
98
+ if (!style.duration || typeof style.duration.min_seconds !== 'number' || typeof style.duration.max_seconds !== 'number')
99
+ refuse('The style’s length can’t be read.');
100
+ return style;
101
+ }
102
+ /**
103
+ * Every asset the style lists, as a FileRef. With a verified manifest, each
104
+ * one must be in it and match its hash: a file that only happens to be in the
105
+ * folder is never used.
106
+ */
107
+ async function assetRefs(style, dir, manifest) {
108
+ const assets = new Map();
109
+ for (const p of [...(style.assets?.fonts ?? []), ...(style.assets?.frames ?? [])]) {
110
+ const file = path.join(dir, safeRelative(p));
111
+ if (!(0, paths_1.isInside)(dir, file) || !(0, fs_1.existsSync)(file))
112
+ refuse(`The style package is missing ${p}.`);
113
+ const listed = manifest?.get(p);
114
+ if (manifest && !listed)
115
+ refuse(`The style lists ${p}, which its package does not carry.`);
116
+ const mime = (0, files_1.mimeOf)(file);
117
+ const ref = await (0, files_1.fileRef)(file, (0, files_1.mediaOfMime)(mime), undefined, mime);
118
+ if (listed && (ref.sha256 !== listed.sha256 || ref.bytes !== listed.bytes))
119
+ refuse(`The style file ${p} does not match its checksum.`);
120
+ assets.set(p, ref);
121
+ }
122
+ return assets;
123
+ }
124
+ /** Downloads the pinned package, checking the manifest and every file before anything runs. */
125
+ async function fetchStyle(opts) {
126
+ const link = new URL(opts.ref.url);
127
+ if (!link.searchParams.has('project_id'))
128
+ link.searchParams.set('project_id', opts.projectId);
129
+ let view;
130
+ try {
131
+ // GET /api/video-styles/<id>/<version>/package answers { package: {...} }.
132
+ view = JSON.parse((await opts.download(link.toString(), 1024 * 1024)).toString('utf8')).package;
133
+ }
134
+ catch (error) {
135
+ if (error instanceof errors_1.KitStop)
136
+ throw error;
137
+ refuse('The style for this video could not be downloaded. Run the same command again in a minute.');
138
+ }
139
+ if (!view || !opts.ref.sha256 || view.sha256 !== opts.ref.sha256 || !view.url || !Array.isArray(view.files))
140
+ refuse('The style package is not the one this video pinned.');
141
+ const manifestBytes = await opts.download(view.url, 1024 * 1024);
142
+ if ((0, canonical_1.sha256Hex)(manifestBytes) !== opts.ref.sha256)
143
+ refuse('The style package does not match its checksum.');
144
+ const manifest = JSON.parse(manifestBytes.toString('utf8'));
145
+ if (manifest.style_id !== opts.ref.style_id || manifest.version !== opts.ref.version || !Array.isArray(manifest.files))
146
+ refuse('The style package is not the one this video pinned.');
147
+ for (const entry of manifest.files) {
148
+ const rel = safeRelative(entry.path);
149
+ const target = path.join(opts.dir, rel);
150
+ if (!(0, paths_1.isInside)(opts.dir, target))
151
+ refuse('The style package names a file outside its folder.');
152
+ if ((0, fs_1.existsSync)(target) && (await (0, files_1.hashFile)(target)).sha256 === entry.sha256)
153
+ continue;
154
+ const listed = view.files.find((f) => f.path === entry.path && f.sha256 === entry.sha256);
155
+ if (!listed?.url)
156
+ refuse(`The style package has no link for ${entry.path}.`);
157
+ const data = await opts.download(listed.url, MAX_STYLE_FILE);
158
+ if (data.length !== entry.bytes || (0, canonical_1.sha256Hex)(data) !== entry.sha256)
159
+ refuse(`The style file ${entry.path} does not match its checksum.`);
160
+ await (0, save_1.atomicWrite)(target, data);
161
+ }
162
+ const style = checkStyle(JSON.parse(await (0, promises_1.readFile)(path.join(opts.dir, 'style.json'), 'utf8')), {
163
+ id: opts.ref.style_id,
164
+ version: opts.ref.version,
165
+ hash: opts.ref.style_hash,
166
+ });
167
+ const verified = new Map(manifest.files.map((f) => [f.path, { sha256: f.sha256, bytes: f.bytes }]));
168
+ return { style, assets: await assetRefs(style, opts.dir, verified) };
169
+ }
170
+ /** Off production only: the style from a local styles folder, still checked against the pinned hash. */
171
+ async function readLocalStyle(stylesDir, pin) {
172
+ const dir = path.join(path.resolve(stylesDir), safeRelative(pin.id));
173
+ const file = path.join(dir, 'style.json');
174
+ if (!(0, fs_1.existsSync)(file))
175
+ refuse(`There is no ${pin.id} style in the local styles folder.`);
176
+ const style = checkStyle(JSON.parse(await (0, promises_1.readFile)(file, 'utf8')), pin);
177
+ return { style, assets: await assetRefs(style, dir, null) };
178
+ }
179
+ //# sourceMappingURL=style.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.js","sourceRoot":"","sources":["../../../src/kit/core/style.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import type { KitTools, MediaInfo } from '../part-interface';
2
+ import type { ToolReport } from '../line/types';
3
+ /** What every video needs from ffmpeg: libass to draw captions, libx264 to encode. */
4
+ export declare const REQUIRED_FILTERS: string[];
5
+ export declare const REQUIRED_ENCODERS: string[];
6
+ export interface ToolInfo {
7
+ path: string | null;
8
+ report: ToolReport;
9
+ /** ffmpeg's filters and encoders, for parts that name the ones they need. */
10
+ filters?: string[];
11
+ encoders?: string[];
12
+ /** Plain words for `video check` when the tool can't be used. */
13
+ problem?: string;
14
+ }
15
+ export interface Toolchain {
16
+ ffmpeg: ToolInfo;
17
+ ffprobe: ToolInfo;
18
+ }
19
+ /** The environment ffmpeg and ffprobe run with: nothing secret, nothing from the person's shell. */
20
+ export declare function childEnv(env?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
21
+ /** Names from `ffmpeg -filters` or `-encoders`: the word after the flags column. */
22
+ export declare function listedNames(output: string): string[];
23
+ /** Checks one ffmpeg build: it runs, and it has libass and libx264. */
24
+ export declare function probeFfmpeg(bin: string, bundled: boolean): ToolInfo;
25
+ export declare function probeFfprobe(bin: string, bundled: boolean): ToolInfo;
26
+ export interface InspectOptions {
27
+ home: string;
28
+ env?: NodeJS.ProcessEnv;
29
+ /** Download what is missing. */
30
+ setup: boolean;
31
+ download: (url: string, maxBytes: number) => Promise<Buffer>;
32
+ say?: (line: string) => void;
33
+ }
34
+ /**
35
+ * Finds ffmpeg and ffprobe in this order: the image's copies (FFMPEG_PATH,
36
+ * FFPROBE_PATH), the kit's own, a fresh download of the pinned build, then
37
+ * the computer's own copies when they have what videos need.
38
+ */
39
+ export declare function inspectFfmpeg(opts: InspectOptions): Promise<Toolchain>;
40
+ /** "ffmpeg-<version>/chromium-<version>": part of every step hash. */
41
+ export declare function toolchainId(tools: Toolchain, browserVersion: string | null): string;
42
+ /** ffprobe's answer for one file. */
43
+ export declare function parseProbe(json: string): MediaInfo;
44
+ /** Encoder flags that pin every setting that changes the output bytes, threads included. */
45
+ export declare function encodeArgs(preset: 'h264-master' | 'h264-intermediate' | 'aac'): string[];
46
+ /** The tools a part gets: the two binaries only, no shell, killed on abort. */
47
+ export declare function kitTools(chain: {
48
+ ffmpeg: string;
49
+ ffprobe: string;
50
+ toolchain: string;
51
+ }, signal: AbortSignal): KitTools;
52
+ //# sourceMappingURL=toolchain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolchain.d.ts","sourceRoot":"","sources":["../../../src/kit/core/toolchain.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAKhD,sFAAsF;AACtF,eAAO,MAAM,gBAAgB,UAAuB,CAAC;AACrD,eAAO,MAAM,iBAAiB,UAAc,CAAC;AAiC7C,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,UAAU,CAAC;IACnB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,QAAQ,CAAC;IACjB,OAAO,EAAE,QAAQ,CAAC;CACnB;AAED,oGAAoG;AACpG,wBAAgB,QAAQ,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAAC,UAAU,CAIhF;AAWD,oFAAoF;AACpF,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAOpD;AAOD,uEAAuE;AACvE,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,QAAQ,CAiBnE;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,QAAQ,CAIpE;AA0BD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,gCAAgC;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7D,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,CAiC5E;AAED,sEAAsE;AACtE,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAEnF;AAaD,qCAAqC;AACrC,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAmBlD;AAED,4FAA4F;AAC5F,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,mBAAmB,GAAG,KAAK,GAAG,MAAM,EAAE,CAUxF;AAED,+EAA+E;AAC/E,wBAAgB,QAAQ,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,EAAE,WAAW,GAAG,QAAQ,CAuDrH"}