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.
- package/README.md +17 -26
- package/dist/auth/device-flow.d.ts +10 -0
- package/dist/auth/device-flow.d.ts.map +1 -1
- package/dist/auth/device-flow.js +39 -1
- package/dist/auth/device-flow.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +3 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/video.d.ts +5 -0
- package/dist/commands/video.d.ts.map +1 -0
- package/dist/commands/video.js +117 -0
- package/dist/commands/video.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +5 -2
- package/dist/config.js.map +1 -1
- package/dist/environment.d.ts.map +1 -1
- package/dist/environment.js +4 -2
- package/dist/environment.js.map +1 -1
- package/dist/kit/core/bind.d.ts +12 -0
- package/dist/kit/core/bind.d.ts.map +1 -0
- package/dist/kit/core/bind.js +77 -0
- package/dist/kit/core/bind.js.map +1 -0
- package/dist/kit/core/canonical.d.ts +30 -0
- package/dist/kit/core/canonical.d.ts.map +1 -0
- package/dist/kit/core/canonical.js +67 -0
- package/dist/kit/core/canonical.js.map +1 -0
- package/dist/kit/core/check.d.ts +22 -0
- package/dist/kit/core/check.d.ts.map +1 -0
- package/dist/kit/core/check.js +53 -0
- package/dist/kit/core/check.js.map +1 -0
- package/dist/kit/core/device.d.ts +17 -0
- package/dist/kit/core/device.d.ts.map +1 -0
- package/dist/kit/core/device.js +153 -0
- package/dist/kit/core/device.js.map +1 -0
- package/dist/kit/core/errors.d.ts +22 -0
- package/dist/kit/core/errors.d.ts.map +1 -0
- package/dist/kit/core/errors.js +49 -0
- package/dist/kit/core/errors.js.map +1 -0
- package/dist/kit/core/files.d.ts +49 -0
- package/dist/kit/core/files.d.ts.map +1 -0
- package/dist/kit/core/files.js +213 -0
- package/dist/kit/core/files.js.map +1 -0
- package/dist/kit/core/host.d.ts +26 -0
- package/dist/kit/core/host.d.ts.map +1 -0
- package/dist/kit/core/host.js +10 -0
- package/dist/kit/core/host.js.map +1 -0
- package/dist/kit/core/log.d.ts +17 -0
- package/dist/kit/core/log.d.ts.map +1 -0
- package/dist/kit/core/log.js +82 -0
- package/dist/kit/core/log.js.map +1 -0
- package/dist/kit/core/paths.d.ts +27 -0
- package/dist/kit/core/paths.d.ts.map +1 -0
- package/dist/kit/core/paths.js +103 -0
- package/dist/kit/core/paths.js.map +1 -0
- package/dist/kit/core/pieces.d.ts +84 -0
- package/dist/kit/core/pieces.d.ts.map +1 -0
- package/dist/kit/core/pieces.js +374 -0
- package/dist/kit/core/pieces.js.map +1 -0
- package/dist/kit/core/progress-reporter.d.ts +30 -0
- package/dist/kit/core/progress-reporter.d.ts.map +1 -0
- package/dist/kit/core/progress-reporter.js +106 -0
- package/dist/kit/core/progress-reporter.js.map +1 -0
- package/dist/kit/core/progress.d.ts +22 -0
- package/dist/kit/core/progress.d.ts.map +1 -0
- package/dist/kit/core/progress.js +90 -0
- package/dist/kit/core/progress.js.map +1 -0
- package/dist/kit/core/run.d.ts +35 -0
- package/dist/kit/core/run.d.ts.map +1 -0
- package/dist/kit/core/run.js +850 -0
- package/dist/kit/core/run.js.map +1 -0
- package/dist/kit/core/save.d.ts +43 -0
- package/dist/kit/core/save.d.ts.map +1 -0
- package/dist/kit/core/save.js +265 -0
- package/dist/kit/core/save.js.map +1 -0
- package/dist/kit/core/schema.d.ts +5 -0
- package/dist/kit/core/schema.d.ts.map +1 -0
- package/dist/kit/core/schema.js +183 -0
- package/dist/kit/core/schema.js.map +1 -0
- package/dist/kit/core/secrets.d.ts +9 -0
- package/dist/kit/core/secrets.d.ts.map +1 -0
- package/dist/kit/core/secrets.js +60 -0
- package/dist/kit/core/secrets.js.map +1 -0
- package/dist/kit/core/style.d.ts +59 -0
- package/dist/kit/core/style.d.ts.map +1 -0
- package/dist/kit/core/style.js +179 -0
- package/dist/kit/core/style.js.map +1 -0
- package/dist/kit/core/toolchain.d.ts +52 -0
- package/dist/kit/core/toolchain.d.ts.map +1 -0
- package/dist/kit/core/toolchain.js +321 -0
- package/dist/kit/core/toolchain.js.map +1 -0
- package/dist/kit/core/version.d.ts +18 -0
- package/dist/kit/core/version.d.ts.map +1 -0
- package/dist/kit/core/version.js +33 -0
- package/dist/kit/core/version.js.map +1 -0
- package/dist/kit/env.d.ts +42 -0
- package/dist/kit/env.d.ts.map +1 -0
- package/dist/kit/env.js +76 -0
- package/dist/kit/env.js.map +1 -0
- package/dist/kit/line/client.d.ts +82 -0
- package/dist/kit/line/client.d.ts.map +1 -0
- package/dist/kit/line/client.js +325 -0
- package/dist/kit/line/client.js.map +1 -0
- package/dist/kit/line/types.d.ts +178 -0
- package/dist/kit/line/types.d.ts.map +1 -0
- package/dist/kit/line/types.js +18 -0
- package/dist/kit/line/types.js.map +1 -0
- package/dist/kit/maker/browser.d.ts +114 -0
- package/dist/kit/maker/browser.d.ts.map +1 -0
- package/dist/kit/maker/browser.js +547 -0
- package/dist/kit/maker/browser.js.map +1 -0
- package/dist/kit/maker/encode.d.ts +27 -0
- package/dist/kit/maker/encode.d.ts.map +1 -0
- package/dist/kit/maker/encode.js +58 -0
- package/dist/kit/maker/encode.js.map +1 -0
- package/dist/kit/maker/images.d.ts +14 -0
- package/dist/kit/maker/images.d.ts.map +1 -0
- package/dist/kit/maker/images.js +174 -0
- package/dist/kit/maker/images.js.map +1 -0
- package/dist/kit/maker/inputs.d.ts +81 -0
- package/dist/kit/maker/inputs.d.ts.map +1 -0
- package/dist/kit/maker/inputs.js +235 -0
- package/dist/kit/maker/inputs.js.map +1 -0
- package/dist/kit/maker/make.d.ts +19 -0
- package/dist/kit/maker/make.d.ts.map +1 -0
- package/dist/kit/maker/make.js +272 -0
- package/dist/kit/maker/make.js.map +1 -0
- package/dist/kit/maker/page.d.ts +19 -0
- package/dist/kit/maker/page.d.ts.map +1 -0
- package/dist/kit/maker/page.js +276 -0
- package/dist/kit/maker/page.js.map +1 -0
- package/dist/kit/maker/parts/html-frames/1.0.0/part.json +183 -0
- package/dist/kit/maker/parts/html-frames/src/part.d.ts +3 -0
- package/dist/kit/maker/parts/html-frames/src/part.d.ts.map +1 -0
- package/dist/kit/maker/parts/html-frames/src/part.js +10 -0
- package/dist/kit/maker/parts/html-frames/src/part.js.map +1 -0
- package/dist/kit/maker/runtime.d.ts +7 -0
- package/dist/kit/maker/runtime.d.ts.map +1 -0
- package/dist/kit/maker/runtime.js +571 -0
- package/dist/kit/maker/runtime.js.map +1 -0
- package/dist/kit/maker/unzip.d.ts +3 -0
- package/dist/kit/maker/unzip.d.ts.map +1 -0
- package/dist/kit/maker/unzip.js +133 -0
- package/dist/kit/maker/unzip.js.map +1 -0
- package/dist/kit/parts/catalog.d.ts +47 -0
- package/dist/kit/parts/catalog.d.ts.map +1 -0
- package/dist/kit/parts/catalog.js +198 -0
- package/dist/kit/parts/catalog.js.map +1 -0
- package/dist/kit/parts/fs-safe.d.ts +32 -0
- package/dist/kit/parts/fs-safe.d.ts.map +1 -0
- package/dist/kit/parts/fs-safe.js +185 -0
- package/dist/kit/parts/fs-safe.js.map +1 -0
- package/dist/kit/parts/loader.d.ts +50 -0
- package/dist/kit/parts/loader.d.ts.map +1 -0
- package/dist/kit/parts/loader.js +395 -0
- package/dist/kit/parts/loader.js.map +1 -0
- package/dist/kit/parts/semver.d.ts +6 -0
- package/dist/kit/parts/semver.d.ts.map +1 -0
- package/dist/kit/parts/semver.js +44 -0
- package/dist/kit/parts/semver.js.map +1 -0
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +6 -6
- package/dist/program.js.map +1 -1
- package/dist/skills/installer.d.ts +22 -0
- package/dist/skills/installer.d.ts.map +1 -1
- package/dist/skills/installer.js +56 -8
- package/dist/skills/installer.js.map +1 -1
- package/dist/skills/master-skill.d.ts +11 -70
- package/dist/skills/master-skill.d.ts.map +1 -1
- package/dist/skills/master-skill.js +120 -2900
- package/dist/skills/master-skill.js.map +1 -1
- package/dist/skills/package-freshness.d.ts +19 -0
- package/dist/skills/package-freshness.d.ts.map +1 -1
- package/dist/skills/package-freshness.js +37 -2
- package/dist/skills/package-freshness.js.map +1 -1
- package/dist/skills/routes.d.ts +7 -2
- package/dist/skills/routes.d.ts.map +1 -1
- package/dist/skills/routes.js +21 -25
- package/dist/skills/routes.js.map +1 -1
- package/dist/skills/server-entry-skills.d.ts +14 -0
- package/dist/skills/server-entry-skills.d.ts.map +1 -0
- package/dist/skills/server-entry-skills.js +119 -0
- package/dist/skills/server-entry-skills.js.map +1 -0
- package/dist/skills/staging-content.js +1 -1
- package/package.json +10 -6
- package/skills/goose-ads/SKILL.md +27 -605
- package/skills/goose-product-photos/SKILL.md +24 -217
- package/skills/goose-video/SKILL.md +23 -610
- package/skills/goose-video-local/SKILL.md +3 -1609
- package/skills/gooseworks/SKILL.md +58 -529
- package/skills/make-custom-video/SKILL.md +23 -725
- package/skills/manifest.json +7 -7
- package/skills/routes.json +10 -24
- package/dist/commands/video-local.d.ts +0 -9
- package/dist/commands/video-local.d.ts.map +0 -1
- package/dist/commands/video-local.js +0 -83
- package/dist/commands/video-local.js.map +0 -1
- package/dist/commands/video-save.d.ts +0 -3
- package/dist/commands/video-save.d.ts.map +0 -1
- package/dist/commands/video-save.js +0 -83
- package/dist/commands/video-save.js.map +0 -1
- package/dist/lib/video-local-captions.d.ts +0 -83
- package/dist/lib/video-local-captions.d.ts.map +0 -1
- package/dist/lib/video-local-captions.js +0 -261
- package/dist/lib/video-local-captions.js.map +0 -1
- package/dist/lib/video-local-runtime.d.ts +0 -8
- package/dist/lib/video-local-runtime.d.ts.map +0 -1
- package/dist/lib/video-local-runtime.js +0 -201
- package/dist/lib/video-local-runtime.js.map +0 -1
- package/dist/lib/video-save-mcp.d.ts +0 -9
- package/dist/lib/video-save-mcp.d.ts.map +0 -1
- package/dist/lib/video-save-mcp.js +0 -162
- package/dist/lib/video-save-mcp.js.map +0 -1
- package/dist/lib/video-save.d.ts +0 -77
- package/dist/lib/video-save.d.ts.map +0 -1
- package/dist/lib/video-save.js +0 -440
- package/dist/lib/video-save.js.map +0 -1
- package/dist/skills/custom-video-skill.d.ts +0 -3
- package/dist/skills/custom-video-skill.d.ts.map +0 -1
- package/dist/skills/custom-video-skill.js +0 -6
- package/dist/skills/custom-video-skill.js.map +0 -1
|
@@ -0,0 +1,213 @@
|
|
|
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.mimeOf = mimeOf;
|
|
37
|
+
exports.mediaOfMime = mediaOfMime;
|
|
38
|
+
exports.hashFile = hashFile;
|
|
39
|
+
exports.fileRef = fileRef;
|
|
40
|
+
exports.intact = intact;
|
|
41
|
+
exports.isFrozenFile = isFrozenFile;
|
|
42
|
+
exports.isLineFile = isLineFile;
|
|
43
|
+
exports.materialize = materialize;
|
|
44
|
+
// Files as the core moves them: FileRefs (path, sha256, bytes, media, mime,
|
|
45
|
+
// and the probe's numbers), and the plan's frozen files downloaded and checked.
|
|
46
|
+
const crypto_1 = require("crypto");
|
|
47
|
+
const fs_1 = require("fs");
|
|
48
|
+
const promises_1 = require("fs/promises");
|
|
49
|
+
const path = __importStar(require("path"));
|
|
50
|
+
const errors_1 = require("./errors");
|
|
51
|
+
const save_1 = require("./save");
|
|
52
|
+
const MIME_BY_EXT = {
|
|
53
|
+
mp4: 'video/mp4', mov: 'video/quicktime', webm: 'video/webm', m4v: 'video/mp4',
|
|
54
|
+
mp3: 'audio/mpeg', wav: 'audio/wav', m4a: 'audio/mp4', aac: 'audio/aac', ogg: 'audio/ogg', flac: 'audio/flac',
|
|
55
|
+
png: 'image/png', jpg: 'image/jpeg', jpeg: 'image/jpeg', webp: 'image/webp', gif: 'image/gif', svg: 'image/svg+xml',
|
|
56
|
+
json: 'application/json', txt: 'text/plain', vtt: 'text/vtt', srt: 'application/x-subrip', ass: 'text/x-ssa',
|
|
57
|
+
ttf: 'font/ttf', otf: 'font/otf', woff: 'font/woff', woff2: 'font/woff2',
|
|
58
|
+
html: 'text/html', htm: 'text/html', css: 'text/css', js: 'text/javascript', mjs: 'text/javascript',
|
|
59
|
+
};
|
|
60
|
+
const EXT_BY_MIME = {
|
|
61
|
+
'video/mp4': 'mp4', 'audio/mpeg': 'mp3', 'audio/wav': 'wav', 'audio/x-wav': 'wav', 'image/png': 'png', 'image/jpeg': 'jpg',
|
|
62
|
+
'image/webp': 'webp', 'image/svg+xml': 'svg', 'font/ttf': 'ttf', 'font/otf': 'otf', 'font/woff': 'woff', 'font/woff2': 'woff2',
|
|
63
|
+
'application/json': 'json', 'text/vtt': 'vtt', 'text/html': 'html',
|
|
64
|
+
};
|
|
65
|
+
function mimeOf(file) {
|
|
66
|
+
return MIME_BY_EXT[path.extname(file).slice(1).toLowerCase()] ?? 'application/octet-stream';
|
|
67
|
+
}
|
|
68
|
+
function mediaOfMime(mime) {
|
|
69
|
+
if (mime.startsWith('video/'))
|
|
70
|
+
return 'video';
|
|
71
|
+
if (mime.startsWith('audio/'))
|
|
72
|
+
return 'audio';
|
|
73
|
+
if (mime.startsWith('image/'))
|
|
74
|
+
return 'image';
|
|
75
|
+
if (mime.startsWith('font/'))
|
|
76
|
+
return 'font';
|
|
77
|
+
if (mime === 'text/html')
|
|
78
|
+
return 'html';
|
|
79
|
+
if (mime === 'application/json')
|
|
80
|
+
return 'json';
|
|
81
|
+
if (mime === 'text/vtt' || mime === 'application/x-subrip' || mime === 'text/x-ssa')
|
|
82
|
+
return 'subtitles';
|
|
83
|
+
return 'text';
|
|
84
|
+
}
|
|
85
|
+
async function hashFile(file) {
|
|
86
|
+
const hash = (0, crypto_1.createHash)('sha256');
|
|
87
|
+
let bytes = 0;
|
|
88
|
+
await new Promise((resolve, reject) => {
|
|
89
|
+
(0, fs_1.createReadStream)(file)
|
|
90
|
+
.on('data', (chunk) => {
|
|
91
|
+
hash.update(chunk);
|
|
92
|
+
bytes += chunk.length;
|
|
93
|
+
})
|
|
94
|
+
.on('end', () => resolve())
|
|
95
|
+
.on('error', reject);
|
|
96
|
+
});
|
|
97
|
+
return { sha256: hash.digest('hex'), bytes };
|
|
98
|
+
}
|
|
99
|
+
/** A FileRef for a file on disk: hashed, and probed when it is audio, video or an image. */
|
|
100
|
+
async function fileRef(file, media, probe, mime) {
|
|
101
|
+
const info = await (0, promises_1.stat)(file);
|
|
102
|
+
if (!info.isFile())
|
|
103
|
+
throw new Error(`${path.basename(file)} is not a file`);
|
|
104
|
+
const { sha256, bytes } = await hashFile(file);
|
|
105
|
+
if (bytes < 1)
|
|
106
|
+
throw new Error(`${path.basename(file)} is empty`);
|
|
107
|
+
const ref = { kind: 'file', path: path.resolve(file), sha256, bytes, media, mime: mime ?? mimeOf(file) };
|
|
108
|
+
if (probe && (media === 'video' || media === 'audio' || media === 'image')) {
|
|
109
|
+
try {
|
|
110
|
+
const probed = await probe(ref.path);
|
|
111
|
+
if (probed.duration_s !== undefined && media !== 'image')
|
|
112
|
+
ref.duration_s = probed.duration_s;
|
|
113
|
+
if (probed.width !== undefined)
|
|
114
|
+
ref.width = probed.width;
|
|
115
|
+
if (probed.height !== undefined)
|
|
116
|
+
ref.height = probed.height;
|
|
117
|
+
if (probed.fps !== undefined && media === 'video')
|
|
118
|
+
ref.fps = probed.fps;
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
// A file the probe can't read keeps its hash; the part that needs the numbers fails on its own.
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return ref;
|
|
125
|
+
}
|
|
126
|
+
/** Whether a FileRef's file is still there with the same bytes. */
|
|
127
|
+
async function intact(ref) {
|
|
128
|
+
if (!(0, fs_1.existsSync)(ref.path))
|
|
129
|
+
return false;
|
|
130
|
+
try {
|
|
131
|
+
const { sha256, bytes } = await hashFile(ref.path);
|
|
132
|
+
return sha256 === ref.sha256 && bytes === ref.bytes;
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
function isFrozenFile(value) {
|
|
139
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
140
|
+
return false;
|
|
141
|
+
const v = value;
|
|
142
|
+
const keys = Object.keys(v).sort().join(',');
|
|
143
|
+
return keys === 'bytes,mime,sha256,url' && typeof v.url === 'string' && typeof v.sha256 === 'string' && /^[a-f0-9]{64}$/.test(v.sha256) && typeof v.bytes === 'number' && typeof v.mime === 'string';
|
|
144
|
+
}
|
|
145
|
+
function isLineFile(value) {
|
|
146
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
147
|
+
return false;
|
|
148
|
+
const v = value;
|
|
149
|
+
const keys = Object.keys(v).sort().join(',');
|
|
150
|
+
return (keys === 'bytes,file_id,mime,ref,sha256' &&
|
|
151
|
+
typeof v.file_id === 'string' &&
|
|
152
|
+
/^[A-Za-z0-9_-]{1,64}$/.test(v.file_id) &&
|
|
153
|
+
v.ref === `gooseworks-file:${v.file_id}` &&
|
|
154
|
+
typeof v.sha256 === 'string' &&
|
|
155
|
+
/^[a-f0-9]{64}$/.test(v.sha256) &&
|
|
156
|
+
typeof v.bytes === 'number' &&
|
|
157
|
+
typeof v.mime === 'string');
|
|
158
|
+
}
|
|
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');
|
|
161
|
+
/** The bytes of one plan file, checked against its size and hash; fetched once per sha256. */
|
|
162
|
+
async function checkedFile(files, file, fetch) {
|
|
163
|
+
await (0, promises_1.mkdir)(files.dir, { recursive: true, mode: 0o700 });
|
|
164
|
+
const target = path.join(files.dir, `${file.sha256}.${EXT_BY_MIME[file.mime] ?? 'bin'}`);
|
|
165
|
+
const have = (0, fs_1.existsSync)(target) ? await hashFile(target) : null;
|
|
166
|
+
if (!have || have.sha256 !== file.sha256 || have.bytes !== file.bytes) {
|
|
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');
|
|
169
|
+
const data = await fetch();
|
|
170
|
+
if (data.length !== file.bytes || (0, crypto_1.createHash)('sha256').update(data).digest('hex') !== file.sha256)
|
|
171
|
+
throw mismatch();
|
|
172
|
+
await (0, save_1.atomicWrite)(target, data);
|
|
173
|
+
}
|
|
174
|
+
return fileRef(target, mediaOfMime(file.mime), files.probe, file.mime);
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* The value with every plan file (a frozen link, or a file the line hosts)
|
|
178
|
+
* downloaded into the run folder, checked against its hash and size, and
|
|
179
|
+
* swapped for its FileRef. One file that fails its check stops the run.
|
|
180
|
+
*/
|
|
181
|
+
async function materialize(value, files) {
|
|
182
|
+
if (isFrozenFile(value))
|
|
183
|
+
return checkedFile(files, value, () => files.download(value.url, MAX_INPUT_BYTES));
|
|
184
|
+
if (isLineFile(value)) {
|
|
185
|
+
const ref = await checkedFile(files, value, async () => {
|
|
186
|
+
// A hosted file's link lives a few minutes: a failed download asks for a fresh one once.
|
|
187
|
+
try {
|
|
188
|
+
return await files.download(await files.hostedLink(value.file_id), MAX_INPUT_BYTES);
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
if (error instanceof errors_1.KitStop)
|
|
192
|
+
throw error;
|
|
193
|
+
return files.download(await files.hostedLink(value.file_id), MAX_INPUT_BYTES);
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
files.onHosted?.(value.sha256, value.ref);
|
|
197
|
+
return ref;
|
|
198
|
+
}
|
|
199
|
+
if (Array.isArray(value)) {
|
|
200
|
+
const out = [];
|
|
201
|
+
for (const item of value)
|
|
202
|
+
out.push(await materialize(item, files));
|
|
203
|
+
return out;
|
|
204
|
+
}
|
|
205
|
+
if (value && typeof value === 'object') {
|
|
206
|
+
const out = {};
|
|
207
|
+
for (const [k, v] of Object.entries(value))
|
|
208
|
+
out[k] = await materialize(v, files);
|
|
209
|
+
return out;
|
|
210
|
+
}
|
|
211
|
+
return value;
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../../src/kit/core/files.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { KitBrowserProvider } from '../part-interface';
|
|
2
|
+
import { type PartLoader } from '../parts/loader';
|
|
3
|
+
import type { ToolReport } from '../line/types';
|
|
4
|
+
export interface BrowserSupport {
|
|
5
|
+
/** The bundled browser for the device report; sets it up first when `setup` is true. */
|
|
6
|
+
check(opts: {
|
|
7
|
+
home: string;
|
|
8
|
+
setup: boolean;
|
|
9
|
+
env: NodeJS.ProcessEnv;
|
|
10
|
+
say: (line: string) => void;
|
|
11
|
+
}): Promise<ToolReport & {
|
|
12
|
+
problem?: string;
|
|
13
|
+
}>;
|
|
14
|
+
/** The Playwright-shaped browser a render_html part gets. Pages may load only file:// under `allowDirs`. */
|
|
15
|
+
provider(opts: {
|
|
16
|
+
allowDirs: string[];
|
|
17
|
+
signal: AbortSignal;
|
|
18
|
+
}): KitBrowserProvider;
|
|
19
|
+
}
|
|
20
|
+
export type { LoadedPart, PartLoader } from '../parts/loader';
|
|
21
|
+
export interface KitHost {
|
|
22
|
+
browser: BrowserSupport;
|
|
23
|
+
loader: PartLoader;
|
|
24
|
+
}
|
|
25
|
+
export declare function defaultHost(): KitHost;
|
|
26
|
+
//# sourceMappingURL=host.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../../src/kit/core/host.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,WAAW,cAAc;IAC7B,wFAAwF;IACxF,KAAK,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;QAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/I,4GAA4G;IAC5G,QAAQ,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,WAAW,CAAA;KAAE,GAAG,kBAAkB,CAAC;CAClF;AAED,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE9D,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,wBAAgB,WAAW,IAAI,OAAO,CAErC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defaultHost = defaultHost;
|
|
4
|
+
const browser_1 = require("../maker/browser");
|
|
5
|
+
const loader_1 = require("../parts/loader");
|
|
6
|
+
const version_1 = require("./version");
|
|
7
|
+
function defaultHost() {
|
|
8
|
+
return { browser: (0, browser_1.createKitBrowserSupport)(), loader: (0, loader_1.createPartLoader)({ kitVersion: version_1.KIT_VERSION }) };
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=host.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host.js","sourceRoot":"","sources":["../../../src/kit/core/host.ts"],"names":[],"mappings":";;AAwBA,kCAEC;AArBD,8CAA2D;AAC3D,4CAAoE;AACpE,uCAAwC;AAiBxC,SAAgB,WAAW;IACzB,OAAO,EAAE,OAAO,EAAE,IAAA,iCAAuB,GAAE,EAAE,MAAM,EAAE,IAAA,yBAAgB,EAAC,EAAE,UAAU,EAAE,qBAAW,EAAE,CAAC,EAAE,CAAC;AACvG,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { PartLogger } from '../part-interface';
|
|
2
|
+
export type Redactor = (text: string) => string;
|
|
3
|
+
export declare class KitLog {
|
|
4
|
+
private readonly print;
|
|
5
|
+
private readonly redactor;
|
|
6
|
+
private file;
|
|
7
|
+
constructor(print: (line: string) => void, redactor?: Redactor);
|
|
8
|
+
/** Start writing log.ndjson in the run folder. */
|
|
9
|
+
attach(file: string): void;
|
|
10
|
+
clean(text: string): string;
|
|
11
|
+
/** A line for the person running the kit (and the worker's output tail). */
|
|
12
|
+
say(line: string): void;
|
|
13
|
+
write(level: 'debug' | 'info' | 'warn' | 'error', message: string, fields?: Record<string, unknown>): void;
|
|
14
|
+
/** The logger a part gets: file only, tagged with its step. */
|
|
15
|
+
forStep(step: string): PartLogger;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=log.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
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.KitLog = void 0;
|
|
37
|
+
// The kit's structured log: log.ndjson in the run folder, secrets redacted.
|
|
38
|
+
// Lines meant for the person go through `say`; part logs stay in the file.
|
|
39
|
+
const fs_1 = require("fs");
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
const secrets_1 = require("./secrets");
|
|
42
|
+
class KitLog {
|
|
43
|
+
print;
|
|
44
|
+
redactor;
|
|
45
|
+
file = null;
|
|
46
|
+
constructor(print, redactor = (text) => (0, secrets_1.redact)(text)) {
|
|
47
|
+
this.print = print;
|
|
48
|
+
this.redactor = redactor;
|
|
49
|
+
}
|
|
50
|
+
/** Start writing log.ndjson in the run folder. */
|
|
51
|
+
attach(file) {
|
|
52
|
+
(0, fs_1.mkdirSync)(path.dirname(file), { recursive: true, mode: 0o700 });
|
|
53
|
+
this.file = file;
|
|
54
|
+
}
|
|
55
|
+
clean(text) {
|
|
56
|
+
return (0, secrets_1.redact)(this.redactor(text));
|
|
57
|
+
}
|
|
58
|
+
/** A line for the person running the kit (and the worker's output tail). */
|
|
59
|
+
say(line) {
|
|
60
|
+
const text = this.clean(line);
|
|
61
|
+
this.print(text);
|
|
62
|
+
this.write('info', text);
|
|
63
|
+
}
|
|
64
|
+
write(level, message, fields) {
|
|
65
|
+
if (!this.file)
|
|
66
|
+
return;
|
|
67
|
+
const entry = { at: new Date().toISOString(), level, message, ...(fields ? { fields } : {}) };
|
|
68
|
+
try {
|
|
69
|
+
(0, fs_1.appendFileSync)(this.file, this.clean(JSON.stringify(entry)) + '\n', { mode: 0o600 });
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
// A full disk must not hide the real error.
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/** The logger a part gets: file only, tagged with its step. */
|
|
76
|
+
forStep(step) {
|
|
77
|
+
const at = (level) => (message, fields) => this.write(level, String(message).slice(0, 4000), { step, ...(fields ?? {}) });
|
|
78
|
+
return { debug: at('debug'), info: at('info'), warn: at('warn'), error: at('error') };
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
exports.KitLog = KitLog;
|
|
82
|
+
//# sourceMappingURL=log.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export declare function kitHome(env?: NodeJS.ProcessEnv): string;
|
|
2
|
+
export declare function kitDir(home: string): string;
|
|
3
|
+
export declare function devicePath(home: string): string;
|
|
4
|
+
export declare function partsCacheDir(home: string): string;
|
|
5
|
+
export declare function kitBinDir(home: string): string;
|
|
6
|
+
/** Every path inside one video's run folder. */
|
|
7
|
+
export interface RunLayout {
|
|
8
|
+
root: string;
|
|
9
|
+
lock: string;
|
|
10
|
+
run: string;
|
|
11
|
+
plan: string;
|
|
12
|
+
partsLock: string;
|
|
13
|
+
style: string;
|
|
14
|
+
inputs: string;
|
|
15
|
+
steps: string;
|
|
16
|
+
layers: string;
|
|
17
|
+
pieces: string;
|
|
18
|
+
final: string;
|
|
19
|
+
upload: string;
|
|
20
|
+
log: string;
|
|
21
|
+
}
|
|
22
|
+
export declare function runLayout(home: string, videoId: string): RunLayout;
|
|
23
|
+
/** A timeline step's folder, or a layer's ("layer-<slot>" lives under layers/<slot>). */
|
|
24
|
+
export declare function stepFolder(layout: RunLayout, stepId: string): string;
|
|
25
|
+
/** True when `child` is `parent` or inside it. */
|
|
26
|
+
export declare function isInside(parent: string, child: string): boolean;
|
|
27
|
+
//# sourceMappingURL=paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../src/kit/core/paths.ts"],"names":[],"mappings":"AAcA,wBAAgB,OAAO,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAIpE;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3C;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,gDAAgD;AAChD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAkBlE;AAED,yFAAyF;AACzF,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,kDAAkD;AAClD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAG/D"}
|
|
@@ -0,0 +1,103 @@
|
|
|
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.kitHome = kitHome;
|
|
37
|
+
exports.kitDir = kitDir;
|
|
38
|
+
exports.devicePath = devicePath;
|
|
39
|
+
exports.partsCacheDir = partsCacheDir;
|
|
40
|
+
exports.kitBinDir = kitBinDir;
|
|
41
|
+
exports.runLayout = runLayout;
|
|
42
|
+
exports.stepFolder = stepFolder;
|
|
43
|
+
exports.isInside = isInside;
|
|
44
|
+
// The kit's save folder layout (part-interface.md section 8).
|
|
45
|
+
//
|
|
46
|
+
// ~/.gooseworks/kit/device.json device_id, a UUID made once
|
|
47
|
+
// ~/.gooseworks/kit/parts/<id>/<ver>/ part cache, hash-checked on every load
|
|
48
|
+
// ~/.gooseworks/kit/bin/ the kit's own ffmpeg and ffprobe
|
|
49
|
+
// ~/.gooseworks/videos/<video_id>/ one run folder per video
|
|
50
|
+
//
|
|
51
|
+
// GOOSE_KIT_HOME replaces ~/.gooseworks.
|
|
52
|
+
const os = __importStar(require("os"));
|
|
53
|
+
const path = __importStar(require("path"));
|
|
54
|
+
const env_1 = require("../env");
|
|
55
|
+
const SAFE_ID = /^[A-Za-z0-9_-]{1,64}$/;
|
|
56
|
+
function kitHome(env = process.env) {
|
|
57
|
+
const home = env[env_1.KIT_DEV_ENV.home];
|
|
58
|
+
if (home)
|
|
59
|
+
return path.resolve(home);
|
|
60
|
+
return path.join(env.GOOSEWORKS_USER_HOME || os.homedir(), '.gooseworks');
|
|
61
|
+
}
|
|
62
|
+
function kitDir(home) {
|
|
63
|
+
return path.join(home, 'kit');
|
|
64
|
+
}
|
|
65
|
+
function devicePath(home) {
|
|
66
|
+
return path.join(kitDir(home), 'device.json');
|
|
67
|
+
}
|
|
68
|
+
function partsCacheDir(home) {
|
|
69
|
+
return path.join(kitDir(home), 'parts');
|
|
70
|
+
}
|
|
71
|
+
function kitBinDir(home) {
|
|
72
|
+
return path.join(kitDir(home), 'bin');
|
|
73
|
+
}
|
|
74
|
+
function runLayout(home, videoId) {
|
|
75
|
+
if (!SAFE_ID.test(videoId))
|
|
76
|
+
throw new Error('That video id is not valid.');
|
|
77
|
+
const root = path.join(home, 'videos', videoId);
|
|
78
|
+
return {
|
|
79
|
+
root,
|
|
80
|
+
lock: path.join(root, 'run.lock'),
|
|
81
|
+
run: path.join(root, 'run.json'),
|
|
82
|
+
plan: path.join(root, 'plan.json'),
|
|
83
|
+
partsLock: path.join(root, 'parts.lock.json'),
|
|
84
|
+
style: path.join(root, 'style'),
|
|
85
|
+
inputs: path.join(root, 'inputs'),
|
|
86
|
+
steps: path.join(root, 'steps'),
|
|
87
|
+
layers: path.join(root, 'layers'),
|
|
88
|
+
pieces: path.join(root, 'pieces'),
|
|
89
|
+
final: path.join(root, 'final'),
|
|
90
|
+
upload: path.join(root, 'upload.json'),
|
|
91
|
+
log: path.join(root, 'log.ndjson'),
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
/** A timeline step's folder, or a layer's ("layer-<slot>" lives under layers/<slot>). */
|
|
95
|
+
function stepFolder(layout, stepId) {
|
|
96
|
+
return stepId.startsWith('layer-') ? path.join(layout.layers, stepId.slice('layer-'.length)) : path.join(layout.steps, stepId);
|
|
97
|
+
}
|
|
98
|
+
/** True when `child` is `parent` or inside it. */
|
|
99
|
+
function isInside(parent, child) {
|
|
100
|
+
const rel = path.relative(path.resolve(parent), path.resolve(child));
|
|
101
|
+
return rel === '' || (!rel.startsWith('..') && !path.isAbsolute(rel));
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/kit/core/paths.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import type { MediaKind, ModelNeed, PartRef, PieceOrder, PieceResult } from '../part-interface';
|
|
2
|
+
import { type Sleep, type VideoLine } from '../line/client';
|
|
3
|
+
import { type LineErrorBody } from '../line/types';
|
|
4
|
+
import { PartError } from './errors';
|
|
5
|
+
import { type Probe } from './files';
|
|
6
|
+
/** A piece the line refused or failed: final, or worth one new attempt. The line's words travel with it. */
|
|
7
|
+
export declare class PieceFailure extends PartError {
|
|
8
|
+
readonly line: LineErrorBody;
|
|
9
|
+
constructor(code: 'provider_rejected' | 'provider_failed', line: LineErrorBody);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Every key this video sent for one piece, and how it ended, saved before the
|
|
13
|
+
* call goes out. A key whose piece is running or done is asked again, never
|
|
14
|
+
* replaced, so a finished paid piece is never ordered under a new key; only a
|
|
15
|
+
* provider failure earns the one new attempt.
|
|
16
|
+
*/
|
|
17
|
+
interface OrderState {
|
|
18
|
+
inputs_hash: string;
|
|
19
|
+
piece_key: string;
|
|
20
|
+
attempts: Array<{
|
|
21
|
+
attempt: number;
|
|
22
|
+
key: string;
|
|
23
|
+
outcome: 'sent' | 'done' | 'failed';
|
|
24
|
+
failure?: LineErrorBody;
|
|
25
|
+
}>;
|
|
26
|
+
}
|
|
27
|
+
interface CachedPiece {
|
|
28
|
+
inputs_hash: string;
|
|
29
|
+
json: unknown;
|
|
30
|
+
files: Record<string, {
|
|
31
|
+
sha256: string;
|
|
32
|
+
bytes: number;
|
|
33
|
+
mime: string;
|
|
34
|
+
media: MediaKind;
|
|
35
|
+
}>;
|
|
36
|
+
}
|
|
37
|
+
/** pieces/<inputs_hash>/: downloaded paid results, reused by any re-run. */
|
|
38
|
+
export declare class PieceCache {
|
|
39
|
+
private readonly root;
|
|
40
|
+
constructor(root: string);
|
|
41
|
+
private dir;
|
|
42
|
+
/** The saved piece when it holds every result asked for, intact. */
|
|
43
|
+
lookup(hash: string, results: PieceOrder['results']): Promise<CachedPiece | null>;
|
|
44
|
+
fileOf(hash: string, sha256: string): string;
|
|
45
|
+
saveFile(hash: string, data: Buffer): Promise<string>;
|
|
46
|
+
saveRecord(record: CachedPiece): Promise<void>;
|
|
47
|
+
readOrder(hash: string): Promise<OrderState | null>;
|
|
48
|
+
saveOrder(state: OrderState): Promise<void>;
|
|
49
|
+
}
|
|
50
|
+
/** What one step's ctx.line needs from the core. */
|
|
51
|
+
export interface PieceLine {
|
|
52
|
+
line: VideoLine;
|
|
53
|
+
videoId: string;
|
|
54
|
+
stepId: string;
|
|
55
|
+
part: PartRef;
|
|
56
|
+
/** The models this part may order: the lock's entry (or the manifest's, for dev parts). */
|
|
57
|
+
models: ModelNeed[];
|
|
58
|
+
workDir: string;
|
|
59
|
+
runRoot: string;
|
|
60
|
+
cache: PieceCache;
|
|
61
|
+
signal: AbortSignal;
|
|
62
|
+
sleep: Sleep;
|
|
63
|
+
probe?: Probe;
|
|
64
|
+
/** Hosted files by sha256, shared by the whole run. */
|
|
65
|
+
hosted: Map<string, string>;
|
|
66
|
+
/** One order at a time per piece hash, shared by the whole run. */
|
|
67
|
+
locks: Map<string, Promise<void>>;
|
|
68
|
+
/** Called after every piece, with the piece's record, once its files are saved. */
|
|
69
|
+
onPiece: (record: {
|
|
70
|
+
piece: string;
|
|
71
|
+
piece_key: string;
|
|
72
|
+
inputs_hash: string;
|
|
73
|
+
idempotency_key: string;
|
|
74
|
+
attempt: 1 | 2;
|
|
75
|
+
reused: boolean;
|
|
76
|
+
credits?: number;
|
|
77
|
+
}) => Promise<void>;
|
|
78
|
+
/** Called while a piece is still running at the provider. */
|
|
79
|
+
onWait: () => void;
|
|
80
|
+
}
|
|
81
|
+
/** ctx.line.order for one step run. */
|
|
82
|
+
export declare function pieceOrderer(ctx: PieceLine): (order: PieceOrder) => Promise<PieceResult>;
|
|
83
|
+
export {};
|
|
84
|
+
//# sourceMappingURL=pieces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pieces.d.ts","sourceRoot":"","sources":["../../../src/kit/core/pieces.ts"],"names":[],"mappings":"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"}
|