@farmslot/recipe-runner 0.28.5 → 0.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/adapters/core.d.ts +32 -1
  3. package/dist/adapters/core.d.ts.map +1 -1
  4. package/dist/adapters/core.js +152 -38
  5. package/dist/adapters/core.js.map +1 -1
  6. package/dist/adapters/ui.d.ts +2 -0
  7. package/dist/adapters/ui.d.ts.map +1 -1
  8. package/dist/adapters/ui.js +79 -37
  9. package/dist/adapters/ui.js.map +1 -1
  10. package/dist/cli/support.d.ts.map +1 -1
  11. package/dist/cli/support.js +5 -1
  12. package/dist/cli/support.js.map +1 -1
  13. package/dist/core/execution-signal.d.ts +4 -0
  14. package/dist/core/execution-signal.d.ts.map +1 -0
  15. package/dist/core/execution-signal.js +13 -0
  16. package/dist/core/execution-signal.js.map +1 -0
  17. package/dist/core/execution.d.ts +4 -0
  18. package/dist/core/execution.d.ts.map +1 -1
  19. package/dist/core/execution.js +86 -12
  20. package/dist/core/execution.js.map +1 -1
  21. package/dist/core/failure.d.ts +2 -0
  22. package/dist/core/failure.d.ts.map +1 -1
  23. package/dist/core/failure.js +10 -0
  24. package/dist/core/failure.js.map +1 -1
  25. package/dist/core/graph.d.ts +1 -0
  26. package/dist/core/graph.d.ts.map +1 -1
  27. package/dist/core/graph.js +2 -2
  28. package/dist/core/graph.js.map +1 -1
  29. package/dist/core/hud.d.ts.map +1 -1
  30. package/dist/core/hud.js +3 -3
  31. package/dist/core/hud.js.map +1 -1
  32. package/dist/core/invocation.d.ts +4 -1
  33. package/dist/core/invocation.d.ts.map +1 -1
  34. package/dist/core/invocation.js +3 -1
  35. package/dist/core/invocation.js.map +1 -1
  36. package/dist/core/recording-limits.d.ts +4 -0
  37. package/dist/core/recording-limits.d.ts.map +1 -0
  38. package/dist/core/recording-limits.js +74 -0
  39. package/dist/core/recording-limits.js.map +1 -0
  40. package/dist/core/recording-segments.d.ts +4 -0
  41. package/dist/core/recording-segments.d.ts.map +1 -0
  42. package/dist/core/recording-segments.js +101 -0
  43. package/dist/core/recording-segments.js.map +1 -0
  44. package/dist/core/runner.d.ts.map +1 -1
  45. package/dist/core/runner.js +336 -108
  46. package/dist/core/runner.js.map +1 -1
  47. package/dist/core/trace.d.ts.map +1 -1
  48. package/dist/core/trace.js +2 -0
  49. package/dist/core/trace.js.map +1 -1
  50. package/dist/core/types.d.ts +40 -22
  51. package/dist/core/types.d.ts.map +1 -1
  52. package/dist/evidence/assertions.d.ts +50 -0
  53. package/dist/evidence/assertions.d.ts.map +1 -0
  54. package/dist/evidence/assertions.js +156 -0
  55. package/dist/evidence/assertions.js.map +1 -0
  56. package/dist/evidence/claims.d.ts +15 -0
  57. package/dist/evidence/claims.d.ts.map +1 -0
  58. package/dist/evidence/claims.js +201 -0
  59. package/dist/evidence/claims.js.map +1 -0
  60. package/dist/evidence/index.d.ts +4 -0
  61. package/dist/evidence/index.d.ts.map +1 -0
  62. package/dist/evidence/index.js +3 -0
  63. package/dist/evidence/index.js.map +1 -0
  64. package/dist/evidence/moments.d.ts +8 -0
  65. package/dist/evidence/moments.d.ts.map +1 -0
  66. package/dist/evidence/moments.js +26 -0
  67. package/dist/evidence/moments.js.map +1 -0
  68. package/dist/evidence/package.d.ts +4 -0
  69. package/dist/evidence/package.d.ts.map +1 -0
  70. package/dist/evidence/package.js +140 -0
  71. package/dist/evidence/package.js.map +1 -0
  72. package/dist/evidence/plan.d.ts +9 -0
  73. package/dist/evidence/plan.d.ts.map +1 -0
  74. package/dist/evidence/plan.js +87 -0
  75. package/dist/evidence/plan.js.map +1 -0
  76. package/dist/evidence/read-package.d.ts +14 -0
  77. package/dist/evidence/read-package.d.ts.map +1 -0
  78. package/dist/evidence/read-package.js +153 -0
  79. package/dist/evidence/read-package.js.map +1 -0
  80. package/dist/evidence/stills.d.ts +5 -0
  81. package/dist/evidence/stills.d.ts.map +1 -0
  82. package/dist/evidence/stills.js +58 -0
  83. package/dist/evidence/stills.js.map +1 -0
  84. package/dist/file-digest.d.ts +3 -0
  85. package/dist/file-digest.d.ts.map +1 -0
  86. package/dist/file-digest.js +4 -0
  87. package/dist/file-digest.js.map +1 -0
  88. package/dist/index.d.ts +5 -0
  89. package/dist/index.d.ts.map +1 -1
  90. package/dist/index.js +5 -0
  91. package/dist/index.js.map +1 -1
  92. package/dist/recording/android-mirror.d.ts.map +1 -1
  93. package/dist/recording/android-mirror.js +17 -8
  94. package/dist/recording/android-mirror.js.map +1 -1
  95. package/dist/recording/capture-helper-timing.d.ts +2 -2
  96. package/dist/recording/capture-helper-timing.d.ts.map +1 -1
  97. package/dist/recording/capture-helper.d.ts.map +1 -1
  98. package/dist/recording/capture-helper.js +24 -12
  99. package/dist/recording/capture-helper.js.map +1 -1
  100. package/dist/recording/cdp-video-recorder.d.ts +2 -0
  101. package/dist/recording/cdp-video-recorder.d.ts.map +1 -1
  102. package/dist/recording/cdp-video-recorder.js +160 -50
  103. package/dist/recording/cdp-video-recorder.js.map +1 -1
  104. package/dist/recording/timeline.d.ts +2 -2
  105. package/dist/recording/timeline.d.ts.map +1 -1
  106. package/dist/runtime/cdp.d.ts +1 -0
  107. package/dist/runtime/cdp.d.ts.map +1 -1
  108. package/dist/runtime/cdp.js +71 -16
  109. package/dist/runtime/cdp.js.map +1 -1
  110. package/package.json +8 -3
@@ -0,0 +1,74 @@
1
+ import { readdir, stat } from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { DEFAULT_RECORDED_EVIDENCE_POLICY } from '@farmslot/protocol';
4
+ /** Own exactly one backend stop, retaining usable media when a configured limit ends capture early. */
5
+ export function boundRecording(active, outputPath, policy) {
6
+ const duration = policy.maxDurationMs ?? DEFAULT_RECORDED_EVIDENCE_POLICY.maxDurationMs;
7
+ const bytes = policy.maxBytes ?? DEFAULT_RECORDED_EVIDENCE_POLICY.maxBytes;
8
+ let stopped;
9
+ let limitation;
10
+ let checking = false;
11
+ const stop = () => {
12
+ if (stopped)
13
+ return stopped;
14
+ clearTimeout(deadline);
15
+ clearInterval(poll);
16
+ stopped = active.stop().then((result) => {
17
+ if (!limitation || result.interruption)
18
+ return result;
19
+ return {
20
+ ...result,
21
+ interruption: {
22
+ frames: result.segments.reduce((count, segment) => count + (segment.timing?.framesMs.length ?? 0), 0),
23
+ mediaTimeMs: result.segments.at(-1)?.timing?.framesMs.at(-1) ?? 0,
24
+ cause: limitation,
25
+ },
26
+ };
27
+ });
28
+ // Early stop completion is awaited by the engine's final stop; retain rejection until then.
29
+ void stopped.catch((error) => {
30
+ limitation ??= `Capture finalization failed: ${error instanceof Error ? error.message : String(error)}`;
31
+ });
32
+ return stopped;
33
+ };
34
+ const deadline = setTimeout(() => {
35
+ limitation = `Recording duration limit reached (${duration} ms).`;
36
+ void stop();
37
+ }, duration);
38
+ deadline.unref();
39
+ const poll = setInterval(async () => {
40
+ if (checking || stopped)
41
+ return;
42
+ checking = true;
43
+ try {
44
+ const directory = path.dirname(outputPath);
45
+ const files = (await readdir(directory)).filter((file) => file.endsWith('.mp4'));
46
+ const sizes = await Promise.all(files.map(async (file) => (await stat(path.join(directory, file))).size));
47
+ if (sizes.reduce((total, size) => total + size, 0) >= bytes) {
48
+ limitation = `Recording byte limit reached (${bytes} bytes).`;
49
+ void stop();
50
+ }
51
+ }
52
+ catch (error) {
53
+ limitation = `Recording budget could not be measured: ${error instanceof Error ? error.message : String(error)}`;
54
+ void stop();
55
+ }
56
+ finally {
57
+ checking = false;
58
+ }
59
+ }, 250);
60
+ poll.unref();
61
+ return {
62
+ stop,
63
+ ...(active.snapshot
64
+ ? {
65
+ snapshot: async (file) => {
66
+ if (stopped)
67
+ throw new Error(limitation ?? 'Recording is finalizing.');
68
+ return active.snapshot(file);
69
+ },
70
+ }
71
+ : {}),
72
+ };
73
+ }
74
+ //# sourceMappingURL=recording-limits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recording-limits.js","sourceRoot":"","sources":["../../src/core/recording-limits.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { ActiveVideoRecording, VideoRecorder, VideoRecorderStartRequest } from './types.js';
2
+ /** Backends with continuous segments handle their own boundaries; native restarts retain the gap. */
3
+ export declare function startSegmentedRecording(recorder: VideoRecorder, request: VideoRecorderStartRequest): Promise<ActiveVideoRecording>;
4
+ //# sourceMappingURL=recording-segments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recording-segments.d.ts","sourceRoot":"","sources":["../../src/core/recording-segments.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,yBAAyB,EAG1B,MAAM,YAAY,CAAC;AAEpB,qGAAqG;AACrG,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,oBAAoB,CAAC,CAyF/B"}
@@ -0,0 +1,101 @@
1
+ import { stat } from 'node:fs/promises';
2
+ /** Backends with continuous segments handle their own boundaries; native restarts retain the gap. */
3
+ export async function startSegmentedRecording(recorder, request) {
4
+ if (recorder.continuousSegments)
5
+ return recorder.start(request);
6
+ let active = await recorder.start(request);
7
+ let output = request.outputPath;
8
+ let startedAt = Date.now();
9
+ let ended = false;
10
+ let failure;
11
+ let interruption;
12
+ const segments = [];
13
+ let boundary;
14
+ let stopped;
15
+ const collect = (result) => {
16
+ for (const [index, segment] of result.segments.entries())
17
+ segments.push({ ...segment, ...(segments.length && index === 0 ? { gapBefore: true } : {}) });
18
+ interruption ??= result.interruption;
19
+ };
20
+ const rotate = async () => {
21
+ collect(await active.stop());
22
+ if (interruption) {
23
+ ended = true;
24
+ return;
25
+ }
26
+ output = request.outputPath.replace(/\.mp4$/u, `-segment-${segments.length}.mp4`);
27
+ active = await recorder.start({ ...request, outputPath: output });
28
+ startedAt = Date.now();
29
+ };
30
+ const poll = setInterval(() => {
31
+ if (ended || boundary || failure)
32
+ return;
33
+ boundary = (async () => {
34
+ let size = 0;
35
+ try {
36
+ size = (await stat(output)).size;
37
+ }
38
+ catch (error) {
39
+ if (error.code !== 'ENOENT')
40
+ throw error;
41
+ }
42
+ if (size >= 100 * 1024 * 1024 || Date.now() - startedAt >= 10 * 60 * 1000)
43
+ await rotate();
44
+ })()
45
+ .catch((error) => {
46
+ failure = error;
47
+ ended = true;
48
+ })
49
+ .finally(() => {
50
+ boundary = undefined;
51
+ });
52
+ }, 250);
53
+ poll.unref();
54
+ return {
55
+ ...(active.snapshot
56
+ ? {
57
+ snapshot: async (file) => {
58
+ if (ended || failure)
59
+ throw failure ?? new Error('Recording has stopped.');
60
+ if (boundary)
61
+ await boundary;
62
+ if (ended || failure)
63
+ throw failure ?? new Error('Recording has stopped.');
64
+ const result = await active.snapshot(file);
65
+ return { ...result, segmentIndex: segments.length };
66
+ },
67
+ }
68
+ : {}),
69
+ stop() {
70
+ if (stopped)
71
+ return stopped;
72
+ clearInterval(poll);
73
+ stopped = (async () => {
74
+ if (boundary)
75
+ await boundary;
76
+ if (!ended) {
77
+ ended = true;
78
+ collect(await active.stop());
79
+ }
80
+ if (failure && !segments.length)
81
+ throw failure;
82
+ return {
83
+ segments,
84
+ ...(interruption
85
+ ? { interruption }
86
+ : failure
87
+ ? {
88
+ interruption: {
89
+ frames: segments.reduce((count, segment) => count + (segment.timing?.framesMs.length ?? 0), 0),
90
+ mediaTimeMs: segments.at(-1)?.timing?.framesMs.at(-1) ?? 0,
91
+ cause: failure instanceof Error ? failure.message : String(failure),
92
+ },
93
+ }
94
+ : {}),
95
+ };
96
+ })();
97
+ return stopped;
98
+ },
99
+ };
100
+ }
101
+ //# sourceMappingURL=recording-segments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recording-segments.js","sourceRoot":"","sources":["../../src/core/recording-segments.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/core/runner.ts"],"names":[],"mappings":"AAwEA,OAAO,KAAK,EACV,aAAa,EAEb,yBAAyB,EAMzB,YAAY,EAOb,MAAM,YAAY,CAAC;AA0BpB,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,aAAa,CAGzE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,YAAY,CAiCnF"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/core/runner.ts"],"names":[],"mappings":"AA0FA,OAAO,KAAK,EACV,aAAa,EAEb,yBAAyB,EAMzB,YAAY,EASb,MAAM,YAAY,CAAC;AA6BpB,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,aAAa,CAGzE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,YAAY,CAiCnF"}