@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.
Files changed (298) hide show
  1. package/README.md +14 -7
  2. package/dist/agent/definition.test.js +8 -3
  3. package/dist/agent/definition.test.js.map +1 -1
  4. package/dist/agent/profiles/coding.d.ts +1 -1
  5. package/dist/agent/profiles/coding.d.ts.map +1 -1
  6. package/dist/agent/profiles/coding.js +21 -4
  7. package/dist/agent/profiles/coding.js.map +1 -1
  8. package/dist/agent/profiles/index.js +1 -1
  9. package/dist/agent/profiles/index.js.map +1 -1
  10. package/dist/agent/profiles/research.d.ts.map +1 -1
  11. package/dist/agent/profiles/research.js +2 -2
  12. package/dist/agent/profiles/research.js.map +1 -1
  13. package/dist/agent/turn-history.d.ts.map +1 -1
  14. package/dist/agent/turn-history.js +7 -1
  15. package/dist/agent/turn-history.js.map +1 -1
  16. package/dist/agent/turn-runner.d.ts +8 -0
  17. package/dist/agent/turn-runner.d.ts.map +1 -1
  18. package/dist/agent/turn-runner.js +35 -10
  19. package/dist/agent/turn-runner.js.map +1 -1
  20. package/dist/app/app-host.d.ts +57 -0
  21. package/dist/app/app-host.d.ts.map +1 -0
  22. package/dist/app/app-host.js +252 -0
  23. package/dist/app/app-host.js.map +1 -0
  24. package/dist/app/app-host.test.d.ts +2 -0
  25. package/dist/app/app-host.test.d.ts.map +1 -0
  26. package/dist/app/app-host.test.js +639 -0
  27. package/dist/app/app-host.test.js.map +1 -0
  28. package/dist/app/build-log.d.ts +14 -0
  29. package/dist/app/build-log.d.ts.map +1 -0
  30. package/dist/app/build-log.js +173 -0
  31. package/dist/app/build-log.js.map +1 -0
  32. package/dist/app/build-log.test.d.ts +2 -0
  33. package/dist/app/build-log.test.d.ts.map +1 -0
  34. package/dist/app/build-log.test.js +255 -0
  35. package/dist/app/build-log.test.js.map +1 -0
  36. package/dist/app/config.d.ts +196 -0
  37. package/dist/app/config.d.ts.map +1 -0
  38. package/dist/app/config.js +362 -0
  39. package/dist/app/config.js.map +1 -0
  40. package/dist/app/config.test.d.ts +2 -0
  41. package/dist/app/config.test.d.ts.map +1 -0
  42. package/dist/app/config.test.js +224 -0
  43. package/dist/app/config.test.js.map +1 -0
  44. package/dist/app/detect.d.ts +68 -0
  45. package/dist/app/detect.d.ts.map +1 -0
  46. package/dist/app/detect.js +449 -0
  47. package/dist/app/detect.js.map +1 -0
  48. package/dist/app/detect.test.d.ts +2 -0
  49. package/dist/app/detect.test.d.ts.map +1 -0
  50. package/dist/app/detect.test.js +267 -0
  51. package/dist/app/detect.test.js.map +1 -0
  52. package/dist/app/env.d.ts +5 -0
  53. package/dist/app/env.d.ts.map +1 -0
  54. package/dist/app/env.js +22 -0
  55. package/dist/app/env.js.map +1 -0
  56. package/dist/app/functions-cli.d.ts +3 -0
  57. package/dist/app/functions-cli.d.ts.map +1 -0
  58. package/dist/app/functions-cli.js +27 -0
  59. package/dist/app/functions-cli.js.map +1 -0
  60. package/dist/app/functions-host.d.ts +15 -0
  61. package/dist/app/functions-host.d.ts.map +1 -0
  62. package/dist/app/functions-host.js +276 -0
  63. package/dist/app/functions-host.js.map +1 -0
  64. package/dist/app/functions-host.test.d.ts +2 -0
  65. package/dist/app/functions-host.test.d.ts.map +1 -0
  66. package/dist/app/functions-host.test.js +117 -0
  67. package/dist/app/functions-host.test.js.map +1 -0
  68. package/dist/app/functions-routes.d.ts +23 -0
  69. package/dist/app/functions-routes.d.ts.map +1 -0
  70. package/dist/app/functions-routes.js +85 -0
  71. package/dist/app/functions-routes.js.map +1 -0
  72. package/dist/app/functions-routes.test.d.ts +2 -0
  73. package/dist/app/functions-routes.test.d.ts.map +1 -0
  74. package/dist/app/functions-routes.test.js +40 -0
  75. package/dist/app/functions-routes.test.js.map +1 -0
  76. package/dist/app/manifest.d.ts +17 -0
  77. package/dist/app/manifest.d.ts.map +1 -0
  78. package/dist/app/manifest.js +64 -0
  79. package/dist/app/manifest.js.map +1 -0
  80. package/dist/app/manifest.test.d.ts +2 -0
  81. package/dist/app/manifest.test.d.ts.map +1 -0
  82. package/dist/app/manifest.test.js +173 -0
  83. package/dist/app/manifest.test.js.map +1 -0
  84. package/dist/app/release-artifacts.d.ts +43 -0
  85. package/dist/app/release-artifacts.d.ts.map +1 -0
  86. package/dist/app/release-artifacts.js +239 -0
  87. package/dist/app/release-artifacts.js.map +1 -0
  88. package/dist/app/release-artifacts.test.d.ts +2 -0
  89. package/dist/app/release-artifacts.test.d.ts.map +1 -0
  90. package/dist/app/release-artifacts.test.js +326 -0
  91. package/dist/app/release-artifacts.test.js.map +1 -0
  92. package/dist/app/route-pattern.d.ts +23 -0
  93. package/dist/app/route-pattern.d.ts.map +1 -0
  94. package/dist/app/route-pattern.js +339 -0
  95. package/dist/app/route-pattern.js.map +1 -0
  96. package/dist/app/route-pattern.test.d.ts +2 -0
  97. package/dist/app/route-pattern.test.d.ts.map +1 -0
  98. package/dist/app/route-pattern.test.js +187 -0
  99. package/dist/app/route-pattern.test.js.map +1 -0
  100. package/dist/app/rules.d.ts +61 -0
  101. package/dist/app/rules.d.ts.map +1 -0
  102. package/dist/app/rules.js +90 -0
  103. package/dist/app/rules.js.map +1 -0
  104. package/dist/app/rules.test.d.ts +2 -0
  105. package/dist/app/rules.test.d.ts.map +1 -0
  106. package/dist/app/rules.test.js +69 -0
  107. package/dist/app/rules.test.js.map +1 -0
  108. package/dist/app/runner.d.ts +109 -0
  109. package/dist/app/runner.d.ts.map +1 -0
  110. package/dist/app/runner.js +429 -0
  111. package/dist/app/runner.js.map +1 -0
  112. package/dist/app/site.d.ts +73 -0
  113. package/dist/app/site.d.ts.map +1 -0
  114. package/dist/app/site.js +161 -0
  115. package/dist/app/site.js.map +1 -0
  116. package/dist/app/site.test.d.ts +2 -0
  117. package/dist/app/site.test.d.ts.map +1 -0
  118. package/dist/app/site.test.js +291 -0
  119. package/dist/app/site.test.js.map +1 -0
  120. package/dist/app/static-server.d.ts +20 -0
  121. package/dist/app/static-server.d.ts.map +1 -0
  122. package/dist/app/static-server.js +145 -0
  123. package/dist/app/static-server.js.map +1 -0
  124. package/dist/persistence/conversation-store.d.ts +21 -0
  125. package/dist/persistence/conversation-store.d.ts.map +1 -0
  126. package/dist/persistence/conversation-store.js +59 -0
  127. package/dist/persistence/conversation-store.js.map +1 -0
  128. package/dist/persistence/conversation-store.test.d.ts +2 -0
  129. package/dist/persistence/conversation-store.test.d.ts.map +1 -0
  130. package/dist/persistence/conversation-store.test.js +98 -0
  131. package/dist/persistence/conversation-store.test.js.map +1 -0
  132. package/dist/persistence/git-sync.d.ts +14 -1
  133. package/dist/persistence/git-sync.d.ts.map +1 -1
  134. package/dist/persistence/git-sync.js +73 -17
  135. package/dist/persistence/git-sync.js.map +1 -1
  136. package/dist/persistence/git-sync.test.js +155 -6
  137. package/dist/persistence/git-sync.test.js.map +1 -1
  138. package/dist/persistence/snapshot-sync.d.ts +19 -2
  139. package/dist/persistence/snapshot-sync.d.ts.map +1 -1
  140. package/dist/persistence/snapshot-sync.js +194 -83
  141. package/dist/persistence/snapshot-sync.js.map +1 -1
  142. package/dist/persistence/snapshot-sync.test.js +145 -27
  143. package/dist/persistence/snapshot-sync.test.js.map +1 -1
  144. package/dist/persistence/workspace.d.ts +3 -0
  145. package/dist/persistence/workspace.d.ts.map +1 -1
  146. package/dist/persistence/workspace.js +1 -0
  147. package/dist/persistence/workspace.js.map +1 -1
  148. package/dist/research/extract-texts.d.ts.map +1 -1
  149. package/dist/research/extract-texts.js +6 -13
  150. package/dist/research/extract-texts.js.map +1 -1
  151. package/dist/research/filingramp/attachment-tools.d.ts.map +1 -1
  152. package/dist/research/filingramp/attachment-tools.js +7 -4
  153. package/dist/research/filingramp/attachment-tools.js.map +1 -1
  154. package/dist/research/filingramp/shared.d.ts.map +1 -1
  155. package/dist/research/filingramp/shared.js +5 -5
  156. package/dist/research/filingramp/shared.js.map +1 -1
  157. package/dist/runtime/app-mode.d.ts +10 -0
  158. package/dist/runtime/app-mode.d.ts.map +1 -0
  159. package/dist/runtime/app-mode.js +172 -0
  160. package/dist/runtime/app-mode.js.map +1 -0
  161. package/dist/runtime/app-mode.test.d.ts +2 -0
  162. package/dist/runtime/app-mode.test.d.ts.map +1 -0
  163. package/dist/runtime/app-mode.test.js +130 -0
  164. package/dist/runtime/app-mode.test.js.map +1 -0
  165. package/dist/runtime/app-rehearsal.d.ts +2 -0
  166. package/dist/runtime/app-rehearsal.d.ts.map +1 -0
  167. package/dist/runtime/app-rehearsal.js +56 -0
  168. package/dist/runtime/app-rehearsal.js.map +1 -0
  169. package/dist/runtime/build-mode.d.ts +18 -0
  170. package/dist/runtime/build-mode.d.ts.map +1 -0
  171. package/dist/runtime/build-mode.js +108 -0
  172. package/dist/runtime/build-mode.js.map +1 -0
  173. package/dist/runtime/build-mode.test.d.ts +2 -0
  174. package/dist/runtime/build-mode.test.d.ts.map +1 -0
  175. package/dist/runtime/build-mode.test.js +159 -0
  176. package/dist/runtime/build-mode.test.js.map +1 -0
  177. package/dist/runtime/cli.js +7 -2
  178. package/dist/runtime/cli.js.map +1 -1
  179. package/dist/runtime/config.d.ts +4 -0
  180. package/dist/runtime/config.d.ts.map +1 -1
  181. package/dist/runtime/config.js +13 -2
  182. package/dist/runtime/config.js.map +1 -1
  183. package/dist/runtime/guest-server.d.ts +3 -0
  184. package/dist/runtime/guest-server.d.ts.map +1 -0
  185. package/dist/runtime/{lambda-microvm.js → guest-server.js} +49 -18
  186. package/dist/runtime/guest-server.js.map +1 -0
  187. package/dist/runtime/image-hooks.d.ts +5 -0
  188. package/dist/runtime/image-hooks.d.ts.map +1 -0
  189. package/dist/runtime/image-hooks.js +68 -0
  190. package/dist/runtime/image-hooks.js.map +1 -0
  191. package/dist/runtime/image-hooks.test.d.ts +2 -0
  192. package/dist/runtime/image-hooks.test.d.ts.map +1 -0
  193. package/dist/runtime/image-hooks.test.js +74 -0
  194. package/dist/runtime/image-hooks.test.js.map +1 -0
  195. package/dist/runtime/index.d.ts +8 -3
  196. package/dist/runtime/index.d.ts.map +1 -1
  197. package/dist/runtime/index.js +53 -35
  198. package/dist/runtime/index.js.map +1 -1
  199. package/dist/runtime/listening-ports.d.ts +13 -0
  200. package/dist/runtime/listening-ports.d.ts.map +1 -0
  201. package/dist/runtime/listening-ports.js +78 -0
  202. package/dist/runtime/listening-ports.js.map +1 -0
  203. package/dist/runtime/listening-ports.test.d.ts +2 -0
  204. package/dist/runtime/listening-ports.test.d.ts.map +1 -0
  205. package/dist/runtime/listening-ports.test.js +39 -0
  206. package/dist/runtime/listening-ports.test.js.map +1 -0
  207. package/dist/runtime/preview-proxy.d.ts +56 -0
  208. package/dist/runtime/preview-proxy.d.ts.map +1 -0
  209. package/dist/runtime/preview-proxy.js +302 -0
  210. package/dist/runtime/preview-proxy.js.map +1 -0
  211. package/dist/runtime/preview-proxy.test.d.ts +2 -0
  212. package/dist/runtime/preview-proxy.test.d.ts.map +1 -0
  213. package/dist/runtime/preview-proxy.test.js +122 -0
  214. package/dist/runtime/preview-proxy.test.js.map +1 -0
  215. package/dist/runtime/session-mode.d.ts +3 -0
  216. package/dist/runtime/session-mode.d.ts.map +1 -0
  217. package/dist/runtime/session-mode.js +60 -0
  218. package/dist/runtime/session-mode.js.map +1 -0
  219. package/dist/runtime/workload.d.ts +44 -0
  220. package/dist/runtime/workload.d.ts.map +1 -0
  221. package/dist/runtime/workload.js +222 -0
  222. package/dist/runtime/workload.js.map +1 -0
  223. package/dist/runtime/workload.test.d.ts +2 -0
  224. package/dist/runtime/workload.test.d.ts.map +1 -0
  225. package/dist/runtime/workload.test.js +235 -0
  226. package/dist/runtime/workload.test.js.map +1 -0
  227. package/dist/session/conversation.d.ts +3 -2
  228. package/dist/session/conversation.d.ts.map +1 -1
  229. package/dist/session/conversation.js +11 -7
  230. package/dist/session/conversation.js.map +1 -1
  231. package/dist/session/conversation.test.js +2 -3
  232. package/dist/session/conversation.test.js.map +1 -1
  233. package/dist/session/runtime.d.ts +16 -3
  234. package/dist/session/runtime.d.ts.map +1 -1
  235. package/dist/session/runtime.js +80 -13
  236. package/dist/session/runtime.js.map +1 -1
  237. package/dist/session/runtime.test.js +18 -7
  238. package/dist/session/runtime.test.js.map +1 -1
  239. package/dist/session/tools.d.ts.map +1 -1
  240. package/dist/session/tools.js +3 -3
  241. package/dist/session/tools.js.map +1 -1
  242. package/dist/task/loop.d.ts.map +1 -1
  243. package/dist/task/loop.js +6 -4
  244. package/dist/task/loop.js.map +1 -1
  245. package/dist/tools/exec-tools.d.ts +12 -0
  246. package/dist/tools/exec-tools.d.ts.map +1 -1
  247. package/dist/tools/exec-tools.js +46 -3
  248. package/dist/tools/exec-tools.js.map +1 -1
  249. package/dist/tools/exec-tools.test.d.ts +2 -0
  250. package/dist/tools/exec-tools.test.d.ts.map +1 -0
  251. package/dist/tools/exec-tools.test.js +48 -0
  252. package/dist/tools/exec-tools.test.js.map +1 -0
  253. package/dist/tools/fs-tools.d.ts.map +1 -1
  254. package/dist/tools/fs-tools.js +5 -5
  255. package/dist/tools/fs-tools.js.map +1 -1
  256. package/dist/transport/link.d.ts.map +1 -1
  257. package/dist/transport/link.js +16 -5
  258. package/dist/transport/link.js.map +1 -1
  259. package/dist/transport/link.test.js +24 -0
  260. package/dist/transport/link.test.js.map +1 -1
  261. package/dist/transport/protocol.d.ts +215 -3
  262. package/dist/transport/protocol.d.ts.map +1 -1
  263. package/dist/transport/protocol.js +163 -7
  264. package/dist/transport/protocol.js.map +1 -1
  265. package/dist/transport/protocol.test.js +41 -0
  266. package/dist/transport/protocol.test.js.map +1 -1
  267. package/dist/workspace-sync/eligibility.d.ts +14 -0
  268. package/dist/workspace-sync/eligibility.d.ts.map +1 -0
  269. package/dist/workspace-sync/eligibility.js +53 -0
  270. package/dist/workspace-sync/eligibility.js.map +1 -0
  271. package/dist/workspace-sync/merge.d.ts +15 -0
  272. package/dist/workspace-sync/merge.d.ts.map +1 -0
  273. package/dist/workspace-sync/merge.js +66 -0
  274. package/dist/workspace-sync/merge.js.map +1 -0
  275. package/dist/workspace-sync/merge.test.d.ts +2 -0
  276. package/dist/workspace-sync/merge.test.d.ts.map +1 -0
  277. package/dist/workspace-sync/merge.test.js +28 -0
  278. package/dist/workspace-sync/merge.test.js.map +1 -0
  279. package/dist/workspace-sync/workspace-sync.d.ts +48 -0
  280. package/dist/workspace-sync/workspace-sync.d.ts.map +1 -0
  281. package/dist/workspace-sync/workspace-sync.js +308 -0
  282. package/dist/workspace-sync/workspace-sync.js.map +1 -0
  283. package/dist/workspace-sync/workspace-sync.test.d.ts +2 -0
  284. package/dist/workspace-sync/workspace-sync.test.d.ts.map +1 -0
  285. package/dist/workspace-sync/workspace-sync.test.js +111 -0
  286. package/dist/workspace-sync/workspace-sync.test.js.map +1 -0
  287. package/dist/workspace-sync/write-drafts.d.ts +24 -0
  288. package/dist/workspace-sync/write-drafts.d.ts.map +1 -0
  289. package/dist/workspace-sync/write-drafts.js +87 -0
  290. package/dist/workspace-sync/write-drafts.js.map +1 -0
  291. package/dist/workspace-sync/write-drafts.test.d.ts +2 -0
  292. package/dist/workspace-sync/write-drafts.test.d.ts.map +1 -0
  293. package/dist/workspace-sync/write-drafts.test.js +36 -0
  294. package/dist/workspace-sync/write-drafts.test.js.map +1 -0
  295. package/package.json +12 -2
  296. package/dist/runtime/lambda-microvm.d.ts +0 -3
  297. package/dist/runtime/lambda-microvm.d.ts.map +0 -1
  298. 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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=build-log.test.d.ts.map
@@ -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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"}