@farmslot/recipe-runner 0.29.0 → 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 (95) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/adapters/ui.d.ts +2 -0
  3. package/dist/adapters/ui.d.ts.map +1 -1
  4. package/dist/adapters/ui.js +79 -37
  5. package/dist/adapters/ui.js.map +1 -1
  6. package/dist/cli/support.d.ts.map +1 -1
  7. package/dist/cli/support.js +5 -1
  8. package/dist/cli/support.js.map +1 -1
  9. package/dist/core/execution.d.ts +3 -0
  10. package/dist/core/execution.d.ts.map +1 -1
  11. package/dist/core/execution.js +60 -3
  12. package/dist/core/execution.js.map +1 -1
  13. package/dist/core/graph.d.ts +1 -0
  14. package/dist/core/graph.d.ts.map +1 -1
  15. package/dist/core/graph.js +2 -2
  16. package/dist/core/graph.js.map +1 -1
  17. package/dist/core/hud.d.ts.map +1 -1
  18. package/dist/core/hud.js +3 -3
  19. package/dist/core/hud.js.map +1 -1
  20. package/dist/core/invocation.d.ts +4 -1
  21. package/dist/core/invocation.d.ts.map +1 -1
  22. package/dist/core/invocation.js +3 -1
  23. package/dist/core/invocation.js.map +1 -1
  24. package/dist/core/recording-limits.d.ts +4 -0
  25. package/dist/core/recording-limits.d.ts.map +1 -0
  26. package/dist/core/recording-limits.js +74 -0
  27. package/dist/core/recording-limits.js.map +1 -0
  28. package/dist/core/recording-segments.d.ts +4 -0
  29. package/dist/core/recording-segments.d.ts.map +1 -0
  30. package/dist/core/recording-segments.js +101 -0
  31. package/dist/core/recording-segments.js.map +1 -0
  32. package/dist/core/runner.d.ts.map +1 -1
  33. package/dist/core/runner.js +335 -108
  34. package/dist/core/runner.js.map +1 -1
  35. package/dist/core/types.d.ts +37 -22
  36. package/dist/core/types.d.ts.map +1 -1
  37. package/dist/evidence/assertions.d.ts +50 -0
  38. package/dist/evidence/assertions.d.ts.map +1 -0
  39. package/dist/evidence/assertions.js +156 -0
  40. package/dist/evidence/assertions.js.map +1 -0
  41. package/dist/evidence/claims.d.ts +15 -0
  42. package/dist/evidence/claims.d.ts.map +1 -0
  43. package/dist/evidence/claims.js +201 -0
  44. package/dist/evidence/claims.js.map +1 -0
  45. package/dist/evidence/index.d.ts +4 -0
  46. package/dist/evidence/index.d.ts.map +1 -0
  47. package/dist/evidence/index.js +3 -0
  48. package/dist/evidence/index.js.map +1 -0
  49. package/dist/evidence/moments.d.ts +8 -0
  50. package/dist/evidence/moments.d.ts.map +1 -0
  51. package/dist/evidence/moments.js +26 -0
  52. package/dist/evidence/moments.js.map +1 -0
  53. package/dist/evidence/package.d.ts +4 -0
  54. package/dist/evidence/package.d.ts.map +1 -0
  55. package/dist/evidence/package.js +140 -0
  56. package/dist/evidence/package.js.map +1 -0
  57. package/dist/evidence/plan.d.ts +9 -0
  58. package/dist/evidence/plan.d.ts.map +1 -0
  59. package/dist/evidence/plan.js +87 -0
  60. package/dist/evidence/plan.js.map +1 -0
  61. package/dist/evidence/read-package.d.ts +14 -0
  62. package/dist/evidence/read-package.d.ts.map +1 -0
  63. package/dist/evidence/read-package.js +153 -0
  64. package/dist/evidence/read-package.js.map +1 -0
  65. package/dist/evidence/stills.d.ts +5 -0
  66. package/dist/evidence/stills.d.ts.map +1 -0
  67. package/dist/evidence/stills.js +58 -0
  68. package/dist/evidence/stills.js.map +1 -0
  69. package/dist/file-digest.d.ts +3 -0
  70. package/dist/file-digest.d.ts.map +1 -0
  71. package/dist/file-digest.js +4 -0
  72. package/dist/file-digest.js.map +1 -0
  73. package/dist/index.d.ts +5 -0
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +5 -0
  76. package/dist/index.js.map +1 -1
  77. package/dist/recording/android-mirror.d.ts.map +1 -1
  78. package/dist/recording/android-mirror.js +17 -8
  79. package/dist/recording/android-mirror.js.map +1 -1
  80. package/dist/recording/capture-helper-timing.d.ts +2 -2
  81. package/dist/recording/capture-helper-timing.d.ts.map +1 -1
  82. package/dist/recording/capture-helper.d.ts.map +1 -1
  83. package/dist/recording/capture-helper.js +24 -12
  84. package/dist/recording/capture-helper.js.map +1 -1
  85. package/dist/recording/cdp-video-recorder.d.ts +2 -0
  86. package/dist/recording/cdp-video-recorder.d.ts.map +1 -1
  87. package/dist/recording/cdp-video-recorder.js +160 -50
  88. package/dist/recording/cdp-video-recorder.js.map +1 -1
  89. package/dist/recording/timeline.d.ts +2 -2
  90. package/dist/recording/timeline.d.ts.map +1 -1
  91. package/dist/runtime/cdp.d.ts +1 -0
  92. package/dist/runtime/cdp.d.ts.map +1 -1
  93. package/dist/runtime/cdp.js +71 -16
  94. package/dist/runtime/cdp.js.map +1 -1
  95. package/package.json +8 -3
@@ -1,13 +1,16 @@
1
+ import { type RecipeClaimDeclaration } from '@farmslot/protocol';
1
2
  export interface RecipeInvocationDocument {
2
3
  version: 1;
3
4
  recipeDigest: string;
4
5
  startedAt: string;
5
6
  params: Record<string, unknown>;
6
7
  redactedPaths: string[];
8
+ claims?: readonly RecipeClaimDeclaration[];
9
+ recipeRunId?: string;
7
10
  }
8
11
  /** Retain typed public inputs without recording credential-bearing fields. */
9
12
  export declare function redactRecipeParams(params: Record<string, unknown>, schema: unknown): Pick<RecipeInvocationDocument, 'params' | 'redactedPaths'>;
10
- export declare function createRecipeInvocation(recipe: unknown, params: Record<string, unknown>, startedAt: string): RecipeInvocationDocument;
13
+ export declare function createRecipeInvocation(recipe: unknown, params: Record<string, unknown>, startedAt: string, claims?: readonly RecipeClaimDeclaration[], recipeRunId?: string): RecipeInvocationDocument;
11
14
  /** Reject mismatched or redacted inputs instead of validating a different execution. */
12
15
  export declare function recordedRecipeParams(recipe: unknown, invocation: unknown, summary: unknown): Record<string, unknown>;
13
16
  //# sourceMappingURL=invocation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"invocation.d.ts","sourceRoot":"","sources":["../../src/core/invocation.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,CAAC,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,EAAE,OAAO,GACd,IAAI,CAAC,wBAAwB,EAAE,QAAQ,GAAG,eAAe,CAAC,CA0C5D;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,SAAS,EAAE,MAAM,GAChB,wBAAwB,CAO1B;AAED,wFAAwF;AACxF,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,OAAO,EACf,UAAU,EAAE,OAAO,EACnB,OAAO,EAAE,OAAO,GACf,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAyBzB"}
1
+ {"version":3,"file":"invocation.d.ts","sourceRoot":"","sources":["../../src/core/invocation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAMjG,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,CAAC,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,EAAE,OAAO,GACd,IAAI,CAAC,wBAAwB,EAAE,QAAQ,GAAG,eAAe,CAAC,CA0C5D;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,SAAS,sBAAsB,EAAE,EAC1C,WAAW,CAAC,EAAE,MAAM,GACnB,wBAAwB,CAS1B;AAED,wFAAwF;AACxF,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,OAAO,EACf,UAAU,EAAE,OAAO,EACnB,OAAO,EAAE,OAAO,GACf,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAyBzB"}
@@ -37,12 +37,14 @@ export function redactRecipeParams(params, schema) {
37
37
  }
38
38
  return { params: visit(params, schema, ''), redactedPaths };
39
39
  }
40
- export function createRecipeInvocation(recipe, params, startedAt) {
40
+ export function createRecipeInvocation(recipe, params, startedAt, claims, recipeRunId) {
41
41
  return {
42
42
  version: 1,
43
+ ...(recipeRunId ? { recipeRunId } : {}),
43
44
  recipeDigest: digestRecipeDocument(recipe),
44
45
  startedAt,
45
46
  ...redactRecipeParams(params, isRecord(recipe) ? recipe.paramsSchema : undefined),
47
+ ...(claims ? { claims } : {}),
46
48
  };
47
49
  }
48
50
  /** Reject mismatched or redacted inputs instead of validating a different execution. */
@@ -1 +1 @@
1
- {"version":3,"file":"invocation.js","sourceRoot":"","sources":["../../src/core/invocation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"invocation.js","sourceRoot":"","sources":["../../src/core/invocation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAA+B,MAAM,oBAAoB,CAAC;AAEjG,MAAM,aAAa,GACjB,sGAAsG,CAAC;AACzG,MAAM,gBAAgB,GAAG,kCAAkC,CAAC;AAY5D,8EAA8E;AAC9E,MAAM,UAAU,kBAAkB,CAChC,MAA+B,EAC/B,MAAe;IAEf,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,SAAS,KAAK,CAAC,KAAc,EAAE,UAAmB,EAAE,OAAe;QACjE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAChC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,OAAO,IAAI,KAAK,EAAE,CAAC,CACzF,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACpB,MAAM,UAAU,GACd,QAAQ,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YACvF,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;gBAC9B,MAAM,SAAS,GAAG,GAAG,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;gBACjF,MAAM,WAAW,GACf,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC;oBAC1B,QAAQ,CAAC,KAAK,CAAC;oBACf,KAAK,CAAC,IAAI,KAAK,SAAS;oBACxB,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC;oBAC3B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACrB,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;oBAC5C,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC9B,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;gBAC7B,CAAC;gBACD,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;YAC/C,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,KAAK;iBACnB,OAAO,CAAC,iCAAiC,EAAE,eAAe,CAAC;iBAC3D,OAAO,CACN,gHAAgH,EAChH,cAAc,CACf,CAAC;YACJ,IAAI,QAAQ,KAAK,KAAK;gBAAE,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpD,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAA4B,EAAE,aAAa,EAAE,CAAC;AACzF,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,MAAe,EACf,MAA+B,EAC/B,SAAiB,EACjB,MAA0C,EAC1C,WAAoB;IAEpB,OAAO;QACL,OAAO,EAAE,CAAC;QACV,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,YAAY,EAAE,oBAAoB,CAAC,MAAM,CAAC;QAC1C,SAAS;QACT,GAAG,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;QACjF,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9B,CAAC;AACJ,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,oBAAoB,CAClC,MAAe,EACf,UAAmB,EACnB,OAAgB;IAEhB,IACE,CAAC,QAAQ,CAAC,UAAU,CAAC;QACrB,UAAU,CAAC,OAAO,KAAK,CAAC;QACxB,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC;QAC5B,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC;QACxC,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC;QACrE,CAAC,QAAQ,CAAC,OAAO,CAAC;QAClB,OAAO,UAAU,CAAC,SAAS,KAAK,QAAQ;QACxC,UAAU,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS;QAC1C,UAAU,CAAC,YAAY,KAAK,oBAAoB,CAAC,MAAM,CAAC;QACxD,OAAO,CAAC,gBAAgB,KAAK,oBAAoB,CAAC,UAAU,CAAC,EAC7D,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;IACjG,CAAC;IACD,MAAM,IAAI,GAAG,kBAAkB,CAC7B,UAAU,CAAC,MAAM,EACjB,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CACnD,CAAC;IACF,IAAI,UAAU,CAAC,aAAa,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CACb,iHAAiH,CAClH,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC,MAAM,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ActiveVideoRecording, RecipeVideoRecordingOptions } from './types.js';
2
+ /** Own exactly one backend stop, retaining usable media when a configured limit ends capture early. */
3
+ export declare function boundRecording(active: ActiveVideoRecording, outputPath: string, policy: RecipeVideoRecordingOptions): ActiveVideoRecording;
4
+ //# sourceMappingURL=recording-limits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recording-limits.d.ts","sourceRoot":"","sources":["../../src/core/recording-limits.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,oBAAoB,EACpB,2BAA2B,EAE5B,MAAM,YAAY,CAAC;AAEpB,uGAAuG;AACvG,wBAAgB,cAAc,CAC5B,MAAM,EAAE,oBAAoB,EAC5B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,2BAA2B,GAClC,oBAAoB,CAmEtB"}
@@ -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"}