@multiplayer-app/agent 0.1.20 → 0.1.22
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 +14 -7
- package/dist/agent/definition.test.js +8 -3
- package/dist/agent/definition.test.js.map +1 -1
- package/dist/agent/profiles/coding.d.ts +1 -1
- package/dist/agent/profiles/coding.d.ts.map +1 -1
- package/dist/agent/profiles/coding.js +21 -4
- package/dist/agent/profiles/coding.js.map +1 -1
- package/dist/agent/profiles/index.js +1 -1
- package/dist/agent/profiles/index.js.map +1 -1
- package/dist/agent/profiles/research.d.ts.map +1 -1
- package/dist/agent/profiles/research.js +2 -2
- package/dist/agent/profiles/research.js.map +1 -1
- package/dist/agent/turn-history.d.ts.map +1 -1
- package/dist/agent/turn-history.js +7 -1
- package/dist/agent/turn-history.js.map +1 -1
- package/dist/agent/turn-runner.d.ts +8 -0
- package/dist/agent/turn-runner.d.ts.map +1 -1
- package/dist/agent/turn-runner.js +35 -10
- package/dist/agent/turn-runner.js.map +1 -1
- package/dist/app/app-host.d.ts +57 -0
- package/dist/app/app-host.d.ts.map +1 -0
- package/dist/app/app-host.js +252 -0
- package/dist/app/app-host.js.map +1 -0
- package/dist/app/app-host.test.d.ts +2 -0
- package/dist/app/app-host.test.d.ts.map +1 -0
- package/dist/app/app-host.test.js +639 -0
- package/dist/app/app-host.test.js.map +1 -0
- package/dist/app/build-log.d.ts +14 -0
- package/dist/app/build-log.d.ts.map +1 -0
- package/dist/app/build-log.js +173 -0
- package/dist/app/build-log.js.map +1 -0
- package/dist/app/build-log.test.d.ts +2 -0
- package/dist/app/build-log.test.d.ts.map +1 -0
- package/dist/app/build-log.test.js +255 -0
- package/dist/app/build-log.test.js.map +1 -0
- package/dist/app/config.d.ts +196 -0
- package/dist/app/config.d.ts.map +1 -0
- package/dist/app/config.js +362 -0
- package/dist/app/config.js.map +1 -0
- package/dist/app/config.test.d.ts +2 -0
- package/dist/app/config.test.d.ts.map +1 -0
- package/dist/app/config.test.js +224 -0
- package/dist/app/config.test.js.map +1 -0
- package/dist/app/detect.d.ts +68 -0
- package/dist/app/detect.d.ts.map +1 -0
- package/dist/app/detect.js +449 -0
- package/dist/app/detect.js.map +1 -0
- package/dist/app/detect.test.d.ts +2 -0
- package/dist/app/detect.test.d.ts.map +1 -0
- package/dist/app/detect.test.js +267 -0
- package/dist/app/detect.test.js.map +1 -0
- package/dist/app/env.d.ts +5 -0
- package/dist/app/env.d.ts.map +1 -0
- package/dist/app/env.js +22 -0
- package/dist/app/env.js.map +1 -0
- package/dist/app/functions-cli.d.ts +3 -0
- package/dist/app/functions-cli.d.ts.map +1 -0
- package/dist/app/functions-cli.js +27 -0
- package/dist/app/functions-cli.js.map +1 -0
- package/dist/app/functions-host.d.ts +15 -0
- package/dist/app/functions-host.d.ts.map +1 -0
- package/dist/app/functions-host.js +276 -0
- package/dist/app/functions-host.js.map +1 -0
- package/dist/app/functions-host.test.d.ts +2 -0
- package/dist/app/functions-host.test.d.ts.map +1 -0
- package/dist/app/functions-host.test.js +117 -0
- package/dist/app/functions-host.test.js.map +1 -0
- package/dist/app/functions-routes.d.ts +23 -0
- package/dist/app/functions-routes.d.ts.map +1 -0
- package/dist/app/functions-routes.js +85 -0
- package/dist/app/functions-routes.js.map +1 -0
- package/dist/app/functions-routes.test.d.ts +2 -0
- package/dist/app/functions-routes.test.d.ts.map +1 -0
- package/dist/app/functions-routes.test.js +40 -0
- package/dist/app/functions-routes.test.js.map +1 -0
- package/dist/app/manifest.d.ts +17 -0
- package/dist/app/manifest.d.ts.map +1 -0
- package/dist/app/manifest.js +64 -0
- package/dist/app/manifest.js.map +1 -0
- package/dist/app/manifest.test.d.ts +2 -0
- package/dist/app/manifest.test.d.ts.map +1 -0
- package/dist/app/manifest.test.js +173 -0
- package/dist/app/manifest.test.js.map +1 -0
- package/dist/app/release-artifacts.d.ts +43 -0
- package/dist/app/release-artifacts.d.ts.map +1 -0
- package/dist/app/release-artifacts.js +239 -0
- package/dist/app/release-artifacts.js.map +1 -0
- package/dist/app/release-artifacts.test.d.ts +2 -0
- package/dist/app/release-artifacts.test.d.ts.map +1 -0
- package/dist/app/release-artifacts.test.js +326 -0
- package/dist/app/release-artifacts.test.js.map +1 -0
- package/dist/app/route-pattern.d.ts +23 -0
- package/dist/app/route-pattern.d.ts.map +1 -0
- package/dist/app/route-pattern.js +339 -0
- package/dist/app/route-pattern.js.map +1 -0
- package/dist/app/route-pattern.test.d.ts +2 -0
- package/dist/app/route-pattern.test.d.ts.map +1 -0
- package/dist/app/route-pattern.test.js +187 -0
- package/dist/app/route-pattern.test.js.map +1 -0
- package/dist/app/rules.d.ts +61 -0
- package/dist/app/rules.d.ts.map +1 -0
- package/dist/app/rules.js +90 -0
- package/dist/app/rules.js.map +1 -0
- package/dist/app/rules.test.d.ts +2 -0
- package/dist/app/rules.test.d.ts.map +1 -0
- package/dist/app/rules.test.js +69 -0
- package/dist/app/rules.test.js.map +1 -0
- package/dist/app/runner.d.ts +109 -0
- package/dist/app/runner.d.ts.map +1 -0
- package/dist/app/runner.js +429 -0
- package/dist/app/runner.js.map +1 -0
- package/dist/app/site.d.ts +73 -0
- package/dist/app/site.d.ts.map +1 -0
- package/dist/app/site.js +161 -0
- package/dist/app/site.js.map +1 -0
- package/dist/app/site.test.d.ts +2 -0
- package/dist/app/site.test.d.ts.map +1 -0
- package/dist/app/site.test.js +291 -0
- package/dist/app/site.test.js.map +1 -0
- package/dist/app/static-server.d.ts +20 -0
- package/dist/app/static-server.d.ts.map +1 -0
- package/dist/app/static-server.js +145 -0
- package/dist/app/static-server.js.map +1 -0
- package/dist/persistence/conversation-store.d.ts +21 -0
- package/dist/persistence/conversation-store.d.ts.map +1 -0
- package/dist/persistence/conversation-store.js +59 -0
- package/dist/persistence/conversation-store.js.map +1 -0
- package/dist/persistence/conversation-store.test.d.ts +2 -0
- package/dist/persistence/conversation-store.test.d.ts.map +1 -0
- package/dist/persistence/conversation-store.test.js +98 -0
- package/dist/persistence/conversation-store.test.js.map +1 -0
- package/dist/persistence/git-sync.d.ts +14 -1
- package/dist/persistence/git-sync.d.ts.map +1 -1
- package/dist/persistence/git-sync.js +73 -17
- package/dist/persistence/git-sync.js.map +1 -1
- package/dist/persistence/git-sync.test.js +155 -6
- package/dist/persistence/git-sync.test.js.map +1 -1
- package/dist/persistence/snapshot-sync.d.ts +19 -2
- package/dist/persistence/snapshot-sync.d.ts.map +1 -1
- package/dist/persistence/snapshot-sync.js +194 -83
- package/dist/persistence/snapshot-sync.js.map +1 -1
- package/dist/persistence/snapshot-sync.test.js +145 -27
- package/dist/persistence/snapshot-sync.test.js.map +1 -1
- package/dist/persistence/workspace.d.ts +3 -0
- package/dist/persistence/workspace.d.ts.map +1 -1
- package/dist/persistence/workspace.js +1 -0
- package/dist/persistence/workspace.js.map +1 -1
- package/dist/research/extract-texts.d.ts.map +1 -1
- package/dist/research/extract-texts.js +6 -13
- package/dist/research/extract-texts.js.map +1 -1
- package/dist/research/filingramp/attachment-tools.d.ts.map +1 -1
- package/dist/research/filingramp/attachment-tools.js +7 -4
- package/dist/research/filingramp/attachment-tools.js.map +1 -1
- package/dist/research/filingramp/shared.d.ts.map +1 -1
- package/dist/research/filingramp/shared.js +5 -5
- package/dist/research/filingramp/shared.js.map +1 -1
- package/dist/runtime/app-mode.d.ts +10 -0
- package/dist/runtime/app-mode.d.ts.map +1 -0
- package/dist/runtime/app-mode.js +172 -0
- package/dist/runtime/app-mode.js.map +1 -0
- package/dist/runtime/app-mode.test.d.ts +2 -0
- package/dist/runtime/app-mode.test.d.ts.map +1 -0
- package/dist/runtime/app-mode.test.js +130 -0
- package/dist/runtime/app-mode.test.js.map +1 -0
- package/dist/runtime/app-rehearsal.d.ts +2 -0
- package/dist/runtime/app-rehearsal.d.ts.map +1 -0
- package/dist/runtime/app-rehearsal.js +56 -0
- package/dist/runtime/app-rehearsal.js.map +1 -0
- package/dist/runtime/build-mode.d.ts +18 -0
- package/dist/runtime/build-mode.d.ts.map +1 -0
- package/dist/runtime/build-mode.js +108 -0
- package/dist/runtime/build-mode.js.map +1 -0
- package/dist/runtime/build-mode.test.d.ts +2 -0
- package/dist/runtime/build-mode.test.d.ts.map +1 -0
- package/dist/runtime/build-mode.test.js +159 -0
- package/dist/runtime/build-mode.test.js.map +1 -0
- package/dist/runtime/cli.js +7 -2
- package/dist/runtime/cli.js.map +1 -1
- package/dist/runtime/config.d.ts +4 -0
- package/dist/runtime/config.d.ts.map +1 -1
- package/dist/runtime/config.js +13 -2
- package/dist/runtime/config.js.map +1 -1
- package/dist/runtime/guest-server.d.ts +3 -0
- package/dist/runtime/guest-server.d.ts.map +1 -0
- package/dist/runtime/{lambda-microvm.js → guest-server.js} +49 -18
- package/dist/runtime/guest-server.js.map +1 -0
- package/dist/runtime/image-hooks.d.ts +5 -0
- package/dist/runtime/image-hooks.d.ts.map +1 -0
- package/dist/runtime/image-hooks.js +68 -0
- package/dist/runtime/image-hooks.js.map +1 -0
- package/dist/runtime/image-hooks.test.d.ts +2 -0
- package/dist/runtime/image-hooks.test.d.ts.map +1 -0
- package/dist/runtime/image-hooks.test.js +74 -0
- package/dist/runtime/image-hooks.test.js.map +1 -0
- package/dist/runtime/index.d.ts +8 -3
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +53 -35
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/listening-ports.d.ts +13 -0
- package/dist/runtime/listening-ports.d.ts.map +1 -0
- package/dist/runtime/listening-ports.js +78 -0
- package/dist/runtime/listening-ports.js.map +1 -0
- package/dist/runtime/listening-ports.test.d.ts +2 -0
- package/dist/runtime/listening-ports.test.d.ts.map +1 -0
- package/dist/runtime/listening-ports.test.js +39 -0
- package/dist/runtime/listening-ports.test.js.map +1 -0
- package/dist/runtime/preview-proxy.d.ts +56 -0
- package/dist/runtime/preview-proxy.d.ts.map +1 -0
- package/dist/runtime/preview-proxy.js +302 -0
- package/dist/runtime/preview-proxy.js.map +1 -0
- package/dist/runtime/preview-proxy.test.d.ts +2 -0
- package/dist/runtime/preview-proxy.test.d.ts.map +1 -0
- package/dist/runtime/preview-proxy.test.js +122 -0
- package/dist/runtime/preview-proxy.test.js.map +1 -0
- package/dist/runtime/session-mode.d.ts +3 -0
- package/dist/runtime/session-mode.d.ts.map +1 -0
- package/dist/runtime/session-mode.js +60 -0
- package/dist/runtime/session-mode.js.map +1 -0
- package/dist/runtime/workload.d.ts +44 -0
- package/dist/runtime/workload.d.ts.map +1 -0
- package/dist/runtime/workload.js +222 -0
- package/dist/runtime/workload.js.map +1 -0
- package/dist/runtime/workload.test.d.ts +2 -0
- package/dist/runtime/workload.test.d.ts.map +1 -0
- package/dist/runtime/workload.test.js +235 -0
- package/dist/runtime/workload.test.js.map +1 -0
- package/dist/session/conversation.d.ts +3 -2
- package/dist/session/conversation.d.ts.map +1 -1
- package/dist/session/conversation.js +11 -7
- package/dist/session/conversation.js.map +1 -1
- package/dist/session/conversation.test.js +2 -3
- package/dist/session/conversation.test.js.map +1 -1
- package/dist/session/runtime.d.ts +16 -3
- package/dist/session/runtime.d.ts.map +1 -1
- package/dist/session/runtime.js +80 -13
- package/dist/session/runtime.js.map +1 -1
- package/dist/session/runtime.test.js +18 -7
- package/dist/session/runtime.test.js.map +1 -1
- package/dist/session/tools.d.ts.map +1 -1
- package/dist/session/tools.js +3 -3
- package/dist/session/tools.js.map +1 -1
- package/dist/task/loop.d.ts.map +1 -1
- package/dist/task/loop.js +6 -4
- package/dist/task/loop.js.map +1 -1
- package/dist/tools/exec-tools.d.ts +12 -0
- package/dist/tools/exec-tools.d.ts.map +1 -1
- package/dist/tools/exec-tools.js +46 -3
- package/dist/tools/exec-tools.js.map +1 -1
- package/dist/tools/exec-tools.test.d.ts +2 -0
- package/dist/tools/exec-tools.test.d.ts.map +1 -0
- package/dist/tools/exec-tools.test.js +48 -0
- package/dist/tools/exec-tools.test.js.map +1 -0
- package/dist/tools/fs-tools.d.ts.map +1 -1
- package/dist/tools/fs-tools.js +5 -5
- package/dist/tools/fs-tools.js.map +1 -1
- package/dist/transport/link.d.ts.map +1 -1
- package/dist/transport/link.js +16 -5
- package/dist/transport/link.js.map +1 -1
- package/dist/transport/link.test.js +24 -0
- package/dist/transport/link.test.js.map +1 -1
- package/dist/transport/protocol.d.ts +215 -3
- package/dist/transport/protocol.d.ts.map +1 -1
- package/dist/transport/protocol.js +163 -7
- package/dist/transport/protocol.js.map +1 -1
- package/dist/transport/protocol.test.js +41 -0
- package/dist/transport/protocol.test.js.map +1 -1
- package/dist/workspace-sync/eligibility.d.ts +14 -0
- package/dist/workspace-sync/eligibility.d.ts.map +1 -0
- package/dist/workspace-sync/eligibility.js +53 -0
- package/dist/workspace-sync/eligibility.js.map +1 -0
- package/dist/workspace-sync/merge.d.ts +15 -0
- package/dist/workspace-sync/merge.d.ts.map +1 -0
- package/dist/workspace-sync/merge.js +66 -0
- package/dist/workspace-sync/merge.js.map +1 -0
- package/dist/workspace-sync/merge.test.d.ts +2 -0
- package/dist/workspace-sync/merge.test.d.ts.map +1 -0
- package/dist/workspace-sync/merge.test.js +28 -0
- package/dist/workspace-sync/merge.test.js.map +1 -0
- package/dist/workspace-sync/workspace-sync.d.ts +48 -0
- package/dist/workspace-sync/workspace-sync.d.ts.map +1 -0
- package/dist/workspace-sync/workspace-sync.js +308 -0
- package/dist/workspace-sync/workspace-sync.js.map +1 -0
- package/dist/workspace-sync/workspace-sync.test.d.ts +2 -0
- package/dist/workspace-sync/workspace-sync.test.d.ts.map +1 -0
- package/dist/workspace-sync/workspace-sync.test.js +111 -0
- package/dist/workspace-sync/workspace-sync.test.js.map +1 -0
- package/dist/workspace-sync/write-drafts.d.ts +24 -0
- package/dist/workspace-sync/write-drafts.d.ts.map +1 -0
- package/dist/workspace-sync/write-drafts.js +87 -0
- package/dist/workspace-sync/write-drafts.js.map +1 -0
- package/dist/workspace-sync/write-drafts.test.d.ts +2 -0
- package/dist/workspace-sync/write-drafts.test.d.ts.map +1 -0
- package/dist/workspace-sync/write-drafts.test.js +36 -0
- package/dist/workspace-sync/write-drafts.test.js.map +1 -0
- package/package.json +12 -2
- package/dist/runtime/lambda-microvm.d.ts +0 -3
- package/dist/runtime/lambda-microvm.d.ts.map +0 -1
- package/dist/runtime/lambda-microvm.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-host.test.js","sourceRoot":"","sources":["../../src/app/app-host.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type AgentBuildLog } from '../transport/protocol';
|
|
2
|
+
/** The most one read returns, so a burst of output can't crowd the path back through the gateway. */
|
|
3
|
+
export declare const MAX_LOG_READ_BYTES: number;
|
|
4
|
+
export declare function logFiles(dir: string): Promise<{
|
|
5
|
+
logDir: string;
|
|
6
|
+
names: string[];
|
|
7
|
+
}>;
|
|
8
|
+
/** What's been logged since `cursor`, step by step in the order they ran. */
|
|
9
|
+
export declare function readBuildLogs(dir: string, cursor?: string): Promise<AgentBuildLog>;
|
|
10
|
+
/** A log's last `maxBytes`, starting on a whole character; undefined when it isn't really a log. */
|
|
11
|
+
export declare function readLogTail(dir: string, file: string, maxBytes: number): Promise<Buffer | undefined>;
|
|
12
|
+
/** The end of whichever log was written last: the step running, or the one that failed. */
|
|
13
|
+
export declare function latestLogTail(dir: string): Promise<string | undefined>;
|
|
14
|
+
//# sourceMappingURL=build-log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-log.d.ts","sourceRoot":"","sources":["../../src/app/build-log.ts"],"names":[],"mappings":"AAOA,OAAO,EAIL,KAAK,aAAa,EAEnB,MAAM,uBAAuB,CAAA;AAG9B,qGAAqG;AACrG,eAAO,MAAM,kBAAkB,QAAY,CAAA;AAiB3C,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAIxF;AA6FD,6EAA6E;AAC7E,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAwBxF;AAED,oGAAoG;AACpG,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAQpG;AAED,2FAA2F;AAC3F,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAU5E"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.MAX_LOG_READ_BYTES = void 0;
|
|
7
|
+
exports.logFiles = logFiles;
|
|
8
|
+
exports.readBuildLogs = readBuildLogs;
|
|
9
|
+
exports.readLogTail = readLogTail;
|
|
10
|
+
exports.latestLogTail = latestLogTail;
|
|
11
|
+
// Reading a build's logs from its VM. While a build runs this only happens when someone has the log
|
|
12
|
+
// open, so a build nobody is watching costs nothing. The build owns these files and runs unchecked
|
|
13
|
+
// code, so every read goes through openInside: a link or FIFO put in a log's place reads as missing.
|
|
14
|
+
const node_fs_1 = require("node:fs");
|
|
15
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
16
|
+
const workload_1 = require("../runtime/workload");
|
|
17
|
+
const protocol_1 = require("../transport/protocol");
|
|
18
|
+
const runner_1 = require("./runner");
|
|
19
|
+
/** The most one read returns, so a burst of output can't crowd the path back through the gateway. */
|
|
20
|
+
exports.MAX_LOG_READ_BYTES = 64 * 1024;
|
|
21
|
+
/**
|
|
22
|
+
* How much a viewer gets of a step they've fallen far behind on. Nobody can read output that fast,
|
|
23
|
+
* so this is enough to see what it's doing, and small enough to keep a noisy build cheap to watch.
|
|
24
|
+
*/
|
|
25
|
+
const JUMP_TAIL_BYTES = 16 * 1024;
|
|
26
|
+
/** A limit on how many files of a build's log folder are looked at, whatever it leaves there. */
|
|
27
|
+
const MAX_LOG_FILES = 1000;
|
|
28
|
+
/**
|
|
29
|
+
* A cursor holds a name and an offset for each log, and must stay under MAX_BUILD_LOG_CURSOR_CHARS.
|
|
30
|
+
* Logs past these limits aren't shown live, but still appear once saved. A test checks the worst case.
|
|
31
|
+
*/
|
|
32
|
+
const MAX_LIVE_LOGS = 64;
|
|
33
|
+
const MAX_LIVE_NAME_BYTES = 66;
|
|
34
|
+
const fitsInCursor = (name) => Buffer.byteLength(JSON.stringify(name)) <= MAX_LIVE_NAME_BYTES;
|
|
35
|
+
async function logFiles(dir) {
|
|
36
|
+
const logDir = await (0, workload_1.realDirInside)(dir, node_path_1.default.join(dir, runner_1.APP_LOG_DIR)).catch(() => undefined);
|
|
37
|
+
const names = logDir ? await node_fs_1.promises.readdir(logDir).catch(() => []) : [];
|
|
38
|
+
return { logDir: logDir !== null && logDir !== void 0 ? logDir : '', names: names.sort(protocol_1.compareBuildLogs).slice(0, MAX_LOG_FILES) };
|
|
39
|
+
}
|
|
40
|
+
async function withLog(dir, file, read) {
|
|
41
|
+
const log = await (0, workload_1.openInside)(dir, file, node_fs_1.constants.O_NONBLOCK).catch(() => undefined);
|
|
42
|
+
if (!log)
|
|
43
|
+
return undefined;
|
|
44
|
+
try {
|
|
45
|
+
const stats = await log.stat();
|
|
46
|
+
return stats.isFile() ? await read(log, stats.size) : undefined;
|
|
47
|
+
}
|
|
48
|
+
finally {
|
|
49
|
+
await log.close();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/** Where the last whole UTF-8 character ends. A character cut in half waits for the next read. */
|
|
53
|
+
function endOfWholeCharacters(bytes, length) {
|
|
54
|
+
let lead = length - 1;
|
|
55
|
+
for (let back = 0; lead >= 0 && back < 3 && (bytes[lead] & 0xc0) === 0x80; back++)
|
|
56
|
+
lead--;
|
|
57
|
+
if (lead < 0)
|
|
58
|
+
return length;
|
|
59
|
+
const needed = bytes[lead] >= 0xf0 ? 4 : bytes[lead] >= 0xe0 ? 3 : bytes[lead] >= 0xc0 ? 2 : 1;
|
|
60
|
+
return lead + needed > length ? lead : length;
|
|
61
|
+
}
|
|
62
|
+
/** Where the first whole character starts, for a read that began partway through a log. */
|
|
63
|
+
function startOfWholeCharacters(bytes, length) {
|
|
64
|
+
let start = 0;
|
|
65
|
+
while (start < Math.min(length, 3) && (bytes[start] & 0xc0) === 0x80)
|
|
66
|
+
start++;
|
|
67
|
+
return start;
|
|
68
|
+
}
|
|
69
|
+
function offsetsFrom(cursor) {
|
|
70
|
+
const offsets = new Map();
|
|
71
|
+
if (!cursor)
|
|
72
|
+
return offsets;
|
|
73
|
+
try {
|
|
74
|
+
const parsed = JSON.parse(Buffer.from(cursor, 'base64url').toString('utf8'));
|
|
75
|
+
if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed))
|
|
76
|
+
return offsets;
|
|
77
|
+
for (const [name, offset] of Object.entries(parsed)) {
|
|
78
|
+
if (Number.isSafeInteger(offset) && offset >= 0)
|
|
79
|
+
offsets.set(name, offset);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
catch (_a) {
|
|
83
|
+
// Cursors come from outside. One that makes no sense just means starting over.
|
|
84
|
+
}
|
|
85
|
+
return offsets;
|
|
86
|
+
}
|
|
87
|
+
const cursorFrom = (offsets) => Buffer.from(JSON.stringify(Object.fromEntries(offsets))).toString('base64url');
|
|
88
|
+
/**
|
|
89
|
+
* Where to read a step from, given how far the viewer has got (`offset`, undefined on their first read).
|
|
90
|
+
* The first read starts at the step's last BUILD_LOG_BYTES, the same as its saved log shows. A viewer
|
|
91
|
+
* further behind than that jumps to the very end, because output printed faster than it can be fetched
|
|
92
|
+
* would otherwise leave them ever further behind. `skippedFrom` is set when they jump.
|
|
93
|
+
*/
|
|
94
|
+
function chooseStart(size, offset) {
|
|
95
|
+
if (offset === undefined)
|
|
96
|
+
return { start: Math.max(0, size - protocol_1.BUILD_LOG_BYTES) };
|
|
97
|
+
if (size - offset > protocol_1.BUILD_LOG_BYTES)
|
|
98
|
+
return { start: size - JUMP_TAIL_BYTES, skippedFrom: offset };
|
|
99
|
+
return { start: Math.min(offset, size) };
|
|
100
|
+
}
|
|
101
|
+
/** Reads the next part of one step's log, using at most `room` bytes. */
|
|
102
|
+
async function readStep(log, size, offset, room) {
|
|
103
|
+
const { start, skippedFrom } = chooseStart(size, offset);
|
|
104
|
+
const length = Math.min(size - start, room);
|
|
105
|
+
if (length === 0)
|
|
106
|
+
return { nextOffset: start, bytesUsed: 0, hasMore: false, text: '' };
|
|
107
|
+
const bytes = Buffer.alloc(length);
|
|
108
|
+
const { bytesRead } = await log.read(bytes, 0, length, start);
|
|
109
|
+
const textEnd = endOfWholeCharacters(bytes, bytesRead);
|
|
110
|
+
// An offset from a cursor is always on a character boundary. A start chosen here may not be.
|
|
111
|
+
const startedMidLog = start > 0 && (offset === undefined || skippedFrom !== undefined);
|
|
112
|
+
const textStart = startedMidLog ? startOfWholeCharacters(bytes, textEnd) : 0;
|
|
113
|
+
const notice = skippedFrom === undefined ? '' : `[... ${start + textStart - skippedFrom} bytes of output skipped ...]\n`;
|
|
114
|
+
return {
|
|
115
|
+
nextOffset: start + textEnd,
|
|
116
|
+
bytesUsed: textEnd,
|
|
117
|
+
hasMore: start + length < size,
|
|
118
|
+
text: `${notice}${bytes.toString('utf8', textStart, textEnd)}`,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
/** What's been logged since `cursor`, step by step in the order they ran. */
|
|
122
|
+
async function readBuildLogs(dir, cursor) {
|
|
123
|
+
const previous = offsetsFrom(cursor);
|
|
124
|
+
const { logDir, names } = await logFiles(dir);
|
|
125
|
+
const next = new Map();
|
|
126
|
+
const logs = [];
|
|
127
|
+
let room = exports.MAX_LOG_READ_BYTES;
|
|
128
|
+
let more = false;
|
|
129
|
+
for (const name of names.filter(fitsInCursor).slice(0, MAX_LIVE_LOGS)) {
|
|
130
|
+
const offset = previous.get(name);
|
|
131
|
+
// Kept up front: a step skipped below must not look new next time, or it would all be sent again.
|
|
132
|
+
if (offset !== undefined)
|
|
133
|
+
next.set(name, offset);
|
|
134
|
+
if (room === 0) {
|
|
135
|
+
more = true;
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
const read = await withLog(dir, node_path_1.default.join(logDir, name), (log, size) => readStep(log, size, offset, room));
|
|
139
|
+
if (!read)
|
|
140
|
+
continue;
|
|
141
|
+
next.set(name, read.nextOffset);
|
|
142
|
+
room -= read.bytesUsed;
|
|
143
|
+
more || (more = read.hasMore);
|
|
144
|
+
if (read.text)
|
|
145
|
+
logs.push({ name, text: read.text });
|
|
146
|
+
}
|
|
147
|
+
return { logs, cursor: cursorFrom(next), more };
|
|
148
|
+
}
|
|
149
|
+
/** A log's last `maxBytes`, starting on a whole character; undefined when it isn't really a log. */
|
|
150
|
+
function readLogTail(dir, file, maxBytes) {
|
|
151
|
+
return withLog(dir, file, async (log, size) => {
|
|
152
|
+
const length = Math.min(size, maxBytes);
|
|
153
|
+
const bytes = Buffer.alloc(length);
|
|
154
|
+
const { bytesRead } = await log.read(bytes, 0, length, size - length);
|
|
155
|
+
const end = endOfWholeCharacters(bytes, bytesRead);
|
|
156
|
+
return bytes.subarray(length < size ? startOfWholeCharacters(bytes, end) : 0, end);
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
/** The end of whichever log was written last: the step running, or the one that failed. */
|
|
160
|
+
async function latestLogTail(dir) {
|
|
161
|
+
var _a;
|
|
162
|
+
const { logDir, names } = await logFiles(dir);
|
|
163
|
+
const dated = await Promise.all(names.map(async (name) => {
|
|
164
|
+
const file = node_path_1.default.join(logDir, name);
|
|
165
|
+
const stats = await node_fs_1.promises.lstat(file).catch(() => undefined);
|
|
166
|
+
return (stats === null || stats === void 0 ? void 0 : stats.isFile()) ? { file, at: stats.mtimeMs } : undefined;
|
|
167
|
+
}));
|
|
168
|
+
const latest = dated.filter((log) => log !== undefined).sort((a, b) => b.at - a.at)[0];
|
|
169
|
+
if (!latest)
|
|
170
|
+
return undefined;
|
|
171
|
+
return ((_a = (await readLogTail(dir, latest.file, protocol_1.BUILD_LOG_TAIL_BYTES))) === null || _a === void 0 ? void 0 : _a.toString('utf8')) || undefined;
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=build-log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-log.js","sourceRoot":"","sources":["../../src/app/build-log.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-log.test.d.ts","sourceRoot":"","sources":["../../src/app/build-log.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
var _a;
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const strict_1 = __importDefault(require("node:assert/strict"));
|
|
8
|
+
const node_child_process_1 = require("node:child_process");
|
|
9
|
+
const node_fs_1 = require("node:fs");
|
|
10
|
+
const node_os_1 = __importDefault(require("node:os"));
|
|
11
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
12
|
+
const node_test_1 = require("node:test");
|
|
13
|
+
const protocol_1 = require("../transport/protocol");
|
|
14
|
+
const workload_1 = require("../runtime/workload");
|
|
15
|
+
const build_log_1 = require("./build-log");
|
|
16
|
+
const isRoot = ((_a = process.getuid) === null || _a === void 0 ? void 0 : _a.call(process)) === 0;
|
|
17
|
+
(0, node_test_1.describe)('a running build\'s logs', () => {
|
|
18
|
+
let dir;
|
|
19
|
+
let logs;
|
|
20
|
+
(0, node_test_1.beforeEach)(async () => {
|
|
21
|
+
dir = await node_fs_1.promises.mkdtemp(node_path_1.default.join(node_os_1.default.tmpdir(), 'build-log-'));
|
|
22
|
+
logs = node_path_1.default.join(dir, '.builder/logs');
|
|
23
|
+
await node_fs_1.promises.mkdir(logs, { recursive: true });
|
|
24
|
+
});
|
|
25
|
+
(0, node_test_1.afterEach)(() => node_fs_1.promises.rm(dir, { recursive: true, force: true }));
|
|
26
|
+
const write = (name, text) => node_fs_1.promises.writeFile(node_path_1.default.join(logs, name), text);
|
|
27
|
+
const append = (name, text) => node_fs_1.promises.appendFile(node_path_1.default.join(logs, name), text);
|
|
28
|
+
const textOf = ({ logs: chunks }, name) => { var _a; return (_a = chunks.find((chunk) => chunk.name === name)) === null || _a === void 0 ? void 0 : _a.text; };
|
|
29
|
+
/** Reads to the end, as someone watching does. */
|
|
30
|
+
async function readAll(from) {
|
|
31
|
+
var _a;
|
|
32
|
+
const text = new Map();
|
|
33
|
+
let cursor = from;
|
|
34
|
+
for (let reads = 1;; reads++) {
|
|
35
|
+
const answer = await (0, build_log_1.readBuildLogs)(dir, cursor);
|
|
36
|
+
for (const chunk of answer.logs)
|
|
37
|
+
text.set(chunk.name, `${(_a = text.get(chunk.name)) !== null && _a !== void 0 ? _a : ''}${chunk.text}`);
|
|
38
|
+
cursor = answer.cursor;
|
|
39
|
+
if (!answer.more)
|
|
40
|
+
return { text, cursor, reads };
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
(0, node_test_1.it)('has nothing yet before a build logs anything, or has a log folder', async () => {
|
|
44
|
+
await node_fs_1.promises.rm(logs, { recursive: true });
|
|
45
|
+
const answer = await (0, build_log_1.readBuildLogs)(dir);
|
|
46
|
+
strict_1.default.deepEqual(answer.logs, []);
|
|
47
|
+
strict_1.default.equal(answer.more, false);
|
|
48
|
+
});
|
|
49
|
+
(0, node_test_1.it)('gives everything so far from the beginning, however late it\'s asked', async () => {
|
|
50
|
+
await write('install.log', 'added 3 packages\n');
|
|
51
|
+
await write('web.build.log', 'compiling\n');
|
|
52
|
+
const answer = await (0, build_log_1.readBuildLogs)(dir);
|
|
53
|
+
strict_1.default.equal(textOf(answer, 'install.log'), 'added 3 packages\n');
|
|
54
|
+
strict_1.default.equal(textOf(answer, 'web.build.log'), 'compiling\n');
|
|
55
|
+
});
|
|
56
|
+
(0, node_test_1.it)('gives only what\'s new when asked with a cursor', async () => {
|
|
57
|
+
await write('install.log', 'one\n');
|
|
58
|
+
const first = await (0, build_log_1.readBuildLogs)(dir);
|
|
59
|
+
strict_1.default.deepEqual((await (0, build_log_1.readBuildLogs)(dir, first.cursor)).logs, []);
|
|
60
|
+
await append('install.log', 'two\n');
|
|
61
|
+
const second = await (0, build_log_1.readBuildLogs)(dir, first.cursor);
|
|
62
|
+
strict_1.default.deepEqual(second.logs, [{ name: 'install.log', text: 'two\n' }]);
|
|
63
|
+
strict_1.default.deepEqual((await (0, build_log_1.readBuildLogs)(dir, second.cursor)).logs, []);
|
|
64
|
+
});
|
|
65
|
+
(0, node_test_1.it)('picks up a step that starts later, keeping its place in the others', async () => {
|
|
66
|
+
await write('install.log', 'one\n');
|
|
67
|
+
const first = await (0, build_log_1.readBuildLogs)(dir);
|
|
68
|
+
await write('web.build.log', 'compiling\n');
|
|
69
|
+
strict_1.default.deepEqual((await (0, build_log_1.readBuildLogs)(dir, first.cursor)).logs, [{ name: 'web.build.log', text: 'compiling\n' }]);
|
|
70
|
+
});
|
|
71
|
+
(0, node_test_1.it)('gives steps in the order they ran, whatever they\'re called', async () => {
|
|
72
|
+
await write('web.build.log', 'c');
|
|
73
|
+
await write('api.build.log', 'b');
|
|
74
|
+
await write('install.log', 'a');
|
|
75
|
+
strict_1.default.deepEqual((await (0, build_log_1.readBuildLogs)(dir)).logs.map(({ name }) => name), ['install.log', 'api.build.log', 'web.build.log']);
|
|
76
|
+
});
|
|
77
|
+
(0, node_test_1.it)('never gives more than one read\'s worth, and says there\'s more, losing nothing', async () => {
|
|
78
|
+
const big = `${'x'.repeat(build_log_1.MAX_LOG_READ_BYTES + 1000)}\n`;
|
|
79
|
+
await write('install.log', big);
|
|
80
|
+
await write('web.build.log', 'after\n');
|
|
81
|
+
const first = await (0, build_log_1.readBuildLogs)(dir);
|
|
82
|
+
strict_1.default.equal(first.more, true);
|
|
83
|
+
strict_1.default.equal(first.logs.reduce((sum, chunk) => sum + chunk.text.length, 0), build_log_1.MAX_LOG_READ_BYTES);
|
|
84
|
+
const { text } = await readAll();
|
|
85
|
+
strict_1.default.equal(text.get('install.log'), big);
|
|
86
|
+
strict_1.default.equal(text.get('web.build.log'), 'after\n');
|
|
87
|
+
});
|
|
88
|
+
(0, node_test_1.it)('doesn\'t ask to be asked again when it has given everything', async () => {
|
|
89
|
+
await write('install.log', 'x'.repeat(build_log_1.MAX_LOG_READ_BYTES));
|
|
90
|
+
strict_1.default.equal((await (0, build_log_1.readBuildLogs)(dir)).more, false);
|
|
91
|
+
});
|
|
92
|
+
(0, node_test_1.it)('never cuts a character in half, wherever a read ends', async () => {
|
|
93
|
+
// Each 4 bytes, so whichever read limit falls within one.
|
|
94
|
+
const text = '😀'.repeat(build_log_1.MAX_LOG_READ_BYTES);
|
|
95
|
+
await write('install.log', text);
|
|
96
|
+
const read = await readAll();
|
|
97
|
+
strict_1.default.equal(read.text.get('install.log'), text.slice(-Math.floor(protocol_1.BUILD_LOG_BYTES / 4) * 2));
|
|
98
|
+
strict_1.default.ok(!read.text.get('install.log').includes('�'));
|
|
99
|
+
});
|
|
100
|
+
(0, node_test_1.it)('holds back half a character that\'s still being written', async () => {
|
|
101
|
+
const smile = Buffer.from('😀');
|
|
102
|
+
await write('install.log', Buffer.concat([Buffer.from('a'), smile.subarray(0, 2)]));
|
|
103
|
+
const first = await (0, build_log_1.readBuildLogs)(dir);
|
|
104
|
+
strict_1.default.equal(textOf(first, 'install.log'), 'a');
|
|
105
|
+
await append('install.log', smile.subarray(2));
|
|
106
|
+
strict_1.default.equal(textOf(await (0, build_log_1.readBuildLogs)(dir, first.cursor), 'install.log'), '😀');
|
|
107
|
+
});
|
|
108
|
+
(0, node_test_1.it)('starts a very long step at its end, as its saved log will', async () => {
|
|
109
|
+
const start = 'the very start\n';
|
|
110
|
+
await write('install.log', `${start}${'y'.repeat(protocol_1.BUILD_LOG_BYTES)}`);
|
|
111
|
+
const { text } = await readAll();
|
|
112
|
+
strict_1.default.equal(text.get('install.log').length, protocol_1.BUILD_LOG_BYTES);
|
|
113
|
+
strict_1.default.ok(!text.get('install.log').includes('the very start'));
|
|
114
|
+
});
|
|
115
|
+
(0, node_test_1.it)('takes any cursor without trouble: one that makes no sense means starting over', async () => {
|
|
116
|
+
await write('install.log', 'one\n');
|
|
117
|
+
for (const cursor of ['not base64!', 'e30', Buffer.from('[1,2]').toString('base64url'), Buffer.from('{"install.log":"x"}').toString('base64url'), Buffer.from('{"install.log":-5}').toString('base64url')]) {
|
|
118
|
+
strict_1.default.equal(textOf(await (0, build_log_1.readBuildLogs)(dir, cursor), 'install.log'), 'one\n', cursor);
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
(0, node_test_1.it)('has nothing to give past a log\'s end', async () => {
|
|
122
|
+
await write('install.log', 'one\n');
|
|
123
|
+
const past = Buffer.from(JSON.stringify({ 'install.log': 1000000 })).toString('base64url');
|
|
124
|
+
strict_1.default.deepEqual((await (0, build_log_1.readBuildLogs)(dir, past)).logs, []);
|
|
125
|
+
});
|
|
126
|
+
(0, node_test_1.it)('reads only what the cursor names on disk: a name in it reaches nothing', async () => {
|
|
127
|
+
await write('install.log', 'one\n');
|
|
128
|
+
const cursor = Buffer.from(JSON.stringify({ '../../secret': 0 })).toString('base64url');
|
|
129
|
+
strict_1.default.deepEqual((await (0, build_log_1.readBuildLogs)(dir, cursor)).logs.map(({ name }) => name), ['install.log']);
|
|
130
|
+
});
|
|
131
|
+
(0, node_test_1.it)('keeps a cursor short enough for a URL, however many files a build leaves and however they\'re named', async () => {
|
|
132
|
+
const atTheEnd = (cursor) => Buffer.from(JSON.stringify(Object.fromEntries(Object.keys(JSON.parse(Buffer.from(cursor, 'base64url').toString('utf8'))).map((name) => [name, Number.MAX_SAFE_INTEGER])))).toString('base64url');
|
|
133
|
+
for (const unit of ['n', '漢', '\u0001', '😀']) {
|
|
134
|
+
await node_fs_1.promises.rm(logs, { recursive: true });
|
|
135
|
+
await node_fs_1.promises.mkdir(logs);
|
|
136
|
+
const length = 200 / Buffer.byteLength(unit);
|
|
137
|
+
for (let index = 0; index < 300; index++)
|
|
138
|
+
await write(`${index}${unit.repeat(index % 2 ? 8 : length)}`, 'x');
|
|
139
|
+
const { cursor } = await (0, build_log_1.readBuildLogs)(dir);
|
|
140
|
+
strict_1.default.ok(atTheEnd(cursor).length < protocol_1.MAX_BUILD_LOG_CURSOR_CHARS, `${JSON.stringify(unit)}: ${atTheEnd(cursor).length}`);
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
(0, node_test_1.it)('still follows a build with many steps of ordinary names', async () => {
|
|
144
|
+
for (let index = 0; index < 64; index++)
|
|
145
|
+
await write(`service-with-a-long-enough-name-${index}.build.log`, 'x');
|
|
146
|
+
const { logs: chunks, cursor } = await (0, build_log_1.readBuildLogs)(dir);
|
|
147
|
+
strict_1.default.equal(chunks.length, 64);
|
|
148
|
+
strict_1.default.ok(cursor.length < protocol_1.MAX_BUILD_LOG_CURSOR_CHARS);
|
|
149
|
+
});
|
|
150
|
+
(0, node_test_1.it)('keeps its place in a log it can\'t open this time, rather than giving it all again', async () => {
|
|
151
|
+
await write('install.log', 'one\n');
|
|
152
|
+
const first = await (0, build_log_1.readBuildLogs)(dir);
|
|
153
|
+
await node_fs_1.promises.rm(node_path_1.default.join(logs, 'install.log'));
|
|
154
|
+
await node_fs_1.promises.symlink('/nowhere', node_path_1.default.join(logs, 'install.log'));
|
|
155
|
+
const during = await (0, build_log_1.readBuildLogs)(dir, first.cursor);
|
|
156
|
+
strict_1.default.deepEqual(during.logs, []);
|
|
157
|
+
await node_fs_1.promises.rm(node_path_1.default.join(logs, 'install.log'));
|
|
158
|
+
await write('install.log', 'one\ntwo\n');
|
|
159
|
+
strict_1.default.deepEqual((await (0, build_log_1.readBuildLogs)(dir, during.cursor)).logs, [{ name: 'install.log', text: 'two\n' }]);
|
|
160
|
+
});
|
|
161
|
+
(0, node_test_1.it)('keeps its place in a step a full read didn\'t reach', async () => {
|
|
162
|
+
await write('install.log', 'a');
|
|
163
|
+
await write('web.build.log', 'b');
|
|
164
|
+
const first = await (0, build_log_1.readBuildLogs)(dir);
|
|
165
|
+
await append('install.log', 'x'.repeat(build_log_1.MAX_LOG_READ_BYTES));
|
|
166
|
+
await append('web.build.log', 'c');
|
|
167
|
+
const second = await (0, build_log_1.readBuildLogs)(dir, first.cursor);
|
|
168
|
+
strict_1.default.equal(second.more, true);
|
|
169
|
+
strict_1.default.deepEqual(second.logs.map(({ name }) => name), ['install.log']);
|
|
170
|
+
strict_1.default.deepEqual((await (0, build_log_1.readBuildLogs)(dir, second.cursor)).logs, [{ name: 'web.build.log', text: 'c' }]);
|
|
171
|
+
});
|
|
172
|
+
(0, node_test_1.it)('jumps someone far behind to a step\'s very end, saying so, with nothing more to fetch right away', async () => {
|
|
173
|
+
await write('install.log', 'start\n');
|
|
174
|
+
const first = await (0, build_log_1.readBuildLogs)(dir);
|
|
175
|
+
await append('install.log', `${'y'.repeat(protocol_1.BUILD_LOG_BYTES * 2)}\nthe end\n`);
|
|
176
|
+
const answer = await (0, build_log_1.readBuildLogs)(dir, first.cursor);
|
|
177
|
+
const log = textOf(answer, 'install.log');
|
|
178
|
+
strict_1.default.match(log, /^\[\.\.\. \d+ bytes of output skipped \.\.\.\]\n/);
|
|
179
|
+
strict_1.default.ok(log.endsWith('the end\n'));
|
|
180
|
+
strict_1.default.ok(log.length < 17 * 1024, 'only what it takes to see what it\'s doing');
|
|
181
|
+
strict_1.default.equal(answer.more, false, 'a noisy build goes back to the usual pace');
|
|
182
|
+
strict_1.default.deepEqual((await (0, build_log_1.readBuildLogs)(dir, answer.cursor)).logs, []);
|
|
183
|
+
});
|
|
184
|
+
(0, node_test_1.it)('says how much it skipped, counting from where someone was', async () => {
|
|
185
|
+
var _a;
|
|
186
|
+
await write('install.log', 'a'.repeat(10));
|
|
187
|
+
const first = await (0, build_log_1.readBuildLogs)(dir);
|
|
188
|
+
await append('install.log', 'b'.repeat(protocol_1.BUILD_LOG_BYTES + 1));
|
|
189
|
+
const log = textOf(await (0, build_log_1.readBuildLogs)(dir, first.cursor), 'install.log');
|
|
190
|
+
strict_1.default.equal((_a = /\[\.\.\. (\d+) bytes/.exec(log)) === null || _a === void 0 ? void 0 : _a[1], String(protocol_1.BUILD_LOG_BYTES + 1 - 16 * 1024));
|
|
191
|
+
});
|
|
192
|
+
(0, node_test_1.it)('doesn\'t count someone reading along within a step\'s end as far behind', async () => {
|
|
193
|
+
await write('install.log', 'start\n');
|
|
194
|
+
const first = await (0, build_log_1.readBuildLogs)(dir);
|
|
195
|
+
const next = 'z'.repeat(protocol_1.BUILD_LOG_BYTES);
|
|
196
|
+
await append('install.log', next);
|
|
197
|
+
strict_1.default.equal((await readAll(first.cursor)).text.get('install.log'), next);
|
|
198
|
+
});
|
|
199
|
+
(0, node_test_1.it)('finds the latest log for the record, however long its name or wherever it sorts', async () => {
|
|
200
|
+
for (let index = 0; index < 100; index++)
|
|
201
|
+
await write(`a-${index}.build.log`, 'older');
|
|
202
|
+
await new Promise((resolve) => setTimeout(resolve, 20));
|
|
203
|
+
await write(`z-${'long-service-name'.repeat(6)}.build.log`, 'the one that failed');
|
|
204
|
+
strict_1.default.equal(await (0, build_log_1.latestLogTail)(dir), 'the one that failed');
|
|
205
|
+
});
|
|
206
|
+
(0, node_test_1.it)('gives the end of the latest log for the release\'s record', async () => {
|
|
207
|
+
await write('install.log', 'old');
|
|
208
|
+
await new Promise((resolve) => setTimeout(resolve, 20));
|
|
209
|
+
await write('web.build.log', `${'z'.repeat(20000)}the end`);
|
|
210
|
+
const tail = await (0, build_log_1.latestLogTail)(dir);
|
|
211
|
+
strict_1.default.equal(tail === null || tail === void 0 ? void 0 : tail.length, protocol_1.BUILD_LOG_TAIL_BYTES);
|
|
212
|
+
strict_1.default.ok(tail === null || tail === void 0 ? void 0 : tail.endsWith('the end'));
|
|
213
|
+
await node_fs_1.promises.rm(logs, { recursive: true });
|
|
214
|
+
strict_1.default.equal(await (0, build_log_1.latestLogTail)(dir), undefined);
|
|
215
|
+
});
|
|
216
|
+
(0, node_test_1.describe)('from a hostile build, whose code owns these files', { skip: !isRoot && 'only root reads as the runtime does' }, () => {
|
|
217
|
+
const SECRET = 'SECRET-only-root-can-read';
|
|
218
|
+
let secret;
|
|
219
|
+
(0, node_test_1.beforeEach)(async () => {
|
|
220
|
+
secret = node_path_1.default.join(node_path_1.default.dirname(dir), `secret-${node_path_1.default.basename(dir)}`);
|
|
221
|
+
await node_fs_1.promises.writeFile(secret, SECRET, { mode: 0o600 });
|
|
222
|
+
(0, node_child_process_1.execFileSync)('chown', ['-R', `${workload_1.WORKLOAD_UID}:${workload_1.WORKLOAD_GID}`, dir]);
|
|
223
|
+
});
|
|
224
|
+
(0, node_test_1.afterEach)(() => node_fs_1.promises.rm(secret, { force: true }));
|
|
225
|
+
(0, node_test_1.it)('reads a link to a secret as nothing', async () => {
|
|
226
|
+
await node_fs_1.promises.symlink(secret, node_path_1.default.join(logs, 'install.log'));
|
|
227
|
+
strict_1.default.deepEqual((await (0, build_log_1.readBuildLogs)(dir)).logs, []);
|
|
228
|
+
strict_1.default.equal(await (0, build_log_1.latestLogTail)(dir), undefined);
|
|
229
|
+
});
|
|
230
|
+
(0, node_test_1.it)('reads nothing when the log folder itself is a link', async () => {
|
|
231
|
+
await node_fs_1.promises.rm(logs, { recursive: true });
|
|
232
|
+
await node_fs_1.promises.symlink(node_path_1.default.dirname(secret), logs);
|
|
233
|
+
const answer = await (0, build_log_1.readBuildLogs)(dir);
|
|
234
|
+
strict_1.default.deepEqual(answer.logs, []);
|
|
235
|
+
strict_1.default.equal(await (0, build_log_1.latestLogTail)(dir), undefined);
|
|
236
|
+
});
|
|
237
|
+
(0, node_test_1.it)('doesn\'t hang on a FIFO left in a log\'s place', { timeout: 5000 }, async () => {
|
|
238
|
+
(0, node_child_process_1.execFileSync)('mkfifo', [node_path_1.default.join(logs, 'install.log')]);
|
|
239
|
+
(0, node_fs_1.chownSync)(node_path_1.default.join(logs, 'install.log'), workload_1.WORKLOAD_UID, workload_1.WORKLOAD_GID);
|
|
240
|
+
strict_1.default.deepEqual((await (0, build_log_1.readBuildLogs)(dir)).logs, []);
|
|
241
|
+
});
|
|
242
|
+
(0, node_test_1.it)('ignores a folder or a device left in a log\'s place', async () => {
|
|
243
|
+
await node_fs_1.promises.mkdir(node_path_1.default.join(logs, 'install.log'));
|
|
244
|
+
await node_fs_1.promises.symlink('/dev/zero', node_path_1.default.join(logs, 'web.build.log'));
|
|
245
|
+
strict_1.default.deepEqual((await (0, build_log_1.readBuildLogs)(dir)).logs, []);
|
|
246
|
+
});
|
|
247
|
+
(0, node_test_1.it)('still reads a real log beside all of that', async () => {
|
|
248
|
+
await node_fs_1.promises.symlink(secret, node_path_1.default.join(logs, 'evil.log'));
|
|
249
|
+
await write('install.log', 'honest\n');
|
|
250
|
+
const answer = await (0, build_log_1.readBuildLogs)(dir);
|
|
251
|
+
strict_1.default.deepEqual(answer.logs, [{ name: 'install.log', text: 'honest\n' }]);
|
|
252
|
+
});
|
|
253
|
+
});
|
|
254
|
+
});
|
|
255
|
+
//# sourceMappingURL=build-log.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-log.test.js","sourceRoot":"","sources":["../../src/app/build-log.test.ts"],"names":[],"mappings":"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"}
|