@farmslot/protocol 0.37.0 → 0.39.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 (193) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/agents/reviewer-context.d.ts +4 -4
  3. package/dist/agents/reviewer-context.d.ts.map +1 -1
  4. package/dist/agents/reviewer-context.js +10 -10
  5. package/dist/agents/reviewer-context.js.map +1 -1
  6. package/dist/agents/roles.d.ts +2 -2
  7. package/dist/agents/roles.d.ts.map +1 -1
  8. package/dist/agents/roles.js +5 -9
  9. package/dist/agents/roles.js.map +1 -1
  10. package/dist/checklist-target.d.ts +6 -6
  11. package/dist/checklist-target.d.ts.map +1 -1
  12. package/dist/checklist-target.js +11 -11
  13. package/dist/checklist-target.js.map +1 -1
  14. package/dist/contracts/acceptance.d.ts +19 -34
  15. package/dist/contracts/acceptance.d.ts.map +1 -1
  16. package/dist/contracts/acceptance.js +11 -156
  17. package/dist/contracts/acceptance.js.map +1 -1
  18. package/dist/contracts/agents.d.ts +4 -2
  19. package/dist/contracts/agents.d.ts.map +1 -1
  20. package/dist/contracts/agents.js +1 -2
  21. package/dist/contracts/agents.js.map +1 -1
  22. package/dist/contracts/analytics.d.ts +2 -2
  23. package/dist/contracts/analytics.d.ts.map +1 -1
  24. package/dist/contracts/backlog.d.ts +16 -7
  25. package/dist/contracts/backlog.d.ts.map +1 -1
  26. package/dist/contracts/backlog.js.map +1 -1
  27. package/dist/contracts/config.d.ts +12 -3
  28. package/dist/contracts/config.d.ts.map +1 -1
  29. package/dist/contracts/config.js +32 -0
  30. package/dist/contracts/config.js.map +1 -1
  31. package/dist/contracts/dispatch.d.ts +7 -4
  32. package/dist/contracts/dispatch.d.ts.map +1 -1
  33. package/dist/contracts/family.d.ts +2 -2
  34. package/dist/contracts/family.d.ts.map +1 -1
  35. package/dist/contracts/gate-park.d.ts +4 -1
  36. package/dist/contracts/gate-park.d.ts.map +1 -1
  37. package/dist/contracts/gate-park.js +3 -0
  38. package/dist/contracts/gate-park.js.map +1 -1
  39. package/dist/contracts/index.d.ts +1 -0
  40. package/dist/contracts/index.d.ts.map +1 -1
  41. package/dist/contracts/index.js +1 -0
  42. package/dist/contracts/index.js.map +1 -1
  43. package/dist/contracts/pr-monitoring.d.ts +9 -9
  44. package/dist/contracts/pr-monitoring.d.ts.map +1 -1
  45. package/dist/contracts/pr-rules.d.ts +5 -7
  46. package/dist/contracts/pr-rules.d.ts.map +1 -1
  47. package/dist/contracts/pr-rules.js +4 -6
  48. package/dist/contracts/pr-rules.js.map +1 -1
  49. package/dist/contracts/qa.d.ts +2 -2
  50. package/dist/contracts/qa.d.ts.map +1 -1
  51. package/dist/contracts/qa.js +5 -9
  52. package/dist/contracts/qa.js.map +1 -1
  53. package/dist/contracts/recipe-conformance.d.ts +51 -0
  54. package/dist/contracts/recipe-conformance.d.ts.map +1 -1
  55. package/dist/contracts/recipe-conformance.js +134 -1
  56. package/dist/contracts/recipe-conformance.js.map +1 -1
  57. package/dist/contracts/resources.d.ts +1 -1
  58. package/dist/contracts/resources.d.ts.map +1 -1
  59. package/dist/contracts/resources.js.map +1 -1
  60. package/dist/contracts/reviews.d.ts +19 -3
  61. package/dist/contracts/reviews.d.ts.map +1 -1
  62. package/dist/contracts/reviews.js +2 -2
  63. package/dist/contracts/reviews.js.map +1 -1
  64. package/dist/contracts/runner-mobile-keys.d.ts +217 -0
  65. package/dist/contracts/runner-mobile-keys.d.ts.map +1 -0
  66. package/dist/contracts/runner-mobile-keys.js +189 -0
  67. package/dist/contracts/runner-mobile-keys.js.map +1 -0
  68. package/dist/contracts/runs.d.ts +105 -91
  69. package/dist/contracts/runs.d.ts.map +1 -1
  70. package/dist/contracts/runs.js +10 -14
  71. package/dist/contracts/runs.js.map +1 -1
  72. package/dist/contracts/runtime-capabilities.d.ts +2 -0
  73. package/dist/contracts/runtime-capabilities.d.ts.map +1 -1
  74. package/dist/contracts/runtime-capabilities.js.map +1 -1
  75. package/dist/contracts/template-placeholders.d.ts +0 -6
  76. package/dist/contracts/template-placeholders.d.ts.map +1 -1
  77. package/dist/contracts/template-placeholders.js +22 -4
  78. package/dist/contracts/template-placeholders.js.map +1 -1
  79. package/dist/contracts/worker-terminal.d.ts +19 -0
  80. package/dist/contracts/worker-terminal.d.ts.map +1 -1
  81. package/dist/contracts/worker-terminal.js.map +1 -1
  82. package/dist/index.d.ts +3 -0
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +3 -0
  85. package/dist/index.js.map +1 -1
  86. package/dist/integrations/pr-monitoring.d.ts +5 -0
  87. package/dist/integrations/pr-monitoring.d.ts.map +1 -1
  88. package/dist/integrations/pr-monitoring.js +54 -9
  89. package/dist/integrations/pr-monitoring.js.map +1 -1
  90. package/dist/integrations/pr-rule-config.d.ts.map +1 -1
  91. package/dist/integrations/pr-rule-config.js +21 -25
  92. package/dist/integrations/pr-rule-config.js.map +1 -1
  93. package/dist/integrations/pr-workflow-defaults.d.ts.map +1 -1
  94. package/dist/integrations/pr-workflow-defaults.js +2 -5
  95. package/dist/integrations/pr-workflow-defaults.js.map +1 -1
  96. package/dist/node/pack-portability.d.ts +19 -0
  97. package/dist/node/pack-portability.d.ts.map +1 -0
  98. package/dist/node/pack-portability.js +192 -0
  99. package/dist/node/pack-portability.js.map +1 -0
  100. package/dist/node/slot-by-repo.d.ts +6 -0
  101. package/dist/node/slot-by-repo.d.ts.map +1 -1
  102. package/dist/node/slot-by-repo.js +27 -15
  103. package/dist/node/slot-by-repo.js.map +1 -1
  104. package/dist/recipe/artifact.d.ts.map +1 -1
  105. package/dist/recipe/artifact.js +20 -4
  106. package/dist/recipe/artifact.js.map +1 -1
  107. package/dist/recipe/document.d.ts +2 -0
  108. package/dist/recipe/document.d.ts.map +1 -1
  109. package/dist/recipe/document.js +38 -35
  110. package/dist/recipe/document.js.map +1 -1
  111. package/dist/recipe/evidence.d.ts +128 -0
  112. package/dist/recipe/evidence.d.ts.map +1 -0
  113. package/dist/recipe/evidence.js +141 -0
  114. package/dist/recipe/evidence.js.map +1 -0
  115. package/dist/recipe/hud-intent.d.ts +56 -0
  116. package/dist/recipe/hud-intent.d.ts.map +1 -0
  117. package/dist/recipe/hud-intent.js +46 -0
  118. package/dist/recipe/hud-intent.js.map +1 -0
  119. package/dist/recipe/index.d.ts +4 -2
  120. package/dist/recipe/index.d.ts.map +1 -1
  121. package/dist/recipe/index.js +4 -2
  122. package/dist/recipe/index.js.map +1 -1
  123. package/dist/recipe/recording.d.ts +7 -0
  124. package/dist/recipe/recording.d.ts.map +1 -1
  125. package/dist/recipe/recording.js +48 -0
  126. package/dist/recipe/recording.js.map +1 -1
  127. package/dist/recipe/workflow.d.ts.map +1 -1
  128. package/dist/recipe/workflow.js +23 -1
  129. package/dist/recipe/workflow.js.map +1 -1
  130. package/dist/recipes/step-io.d.ts +8 -4
  131. package/dist/recipes/step-io.d.ts.map +1 -1
  132. package/dist/recipes/step-io.js.map +1 -1
  133. package/dist/rpc/copilot-runtime.d.ts +1 -1
  134. package/dist/rpc/copilot-runtime.d.ts.map +1 -1
  135. package/dist/rpc/dispatch.d.ts +10 -6
  136. package/dist/rpc/dispatch.d.ts.map +1 -1
  137. package/dist/rpc/native-session.d.ts +1 -0
  138. package/dist/rpc/native-session.d.ts.map +1 -1
  139. package/dist/rpc/native-session.js.map +1 -1
  140. package/dist/rpc/nodes.d.ts +15 -0
  141. package/dist/rpc/nodes.d.ts.map +1 -1
  142. package/dist/rpc/nodes.js +32 -1
  143. package/dist/rpc/nodes.js.map +1 -1
  144. package/dist/rpc/registry.d.ts +1 -0
  145. package/dist/rpc/registry.d.ts.map +1 -1
  146. package/dist/rpc/registry.js +1 -0
  147. package/dist/rpc/registry.js.map +1 -1
  148. package/dist/rpc/roadmap.d.ts +2 -0
  149. package/dist/rpc/roadmap.d.ts.map +1 -1
  150. package/dist/rpc/run.d.ts +20 -3
  151. package/dist/rpc/run.d.ts.map +1 -1
  152. package/dist/rpc/run.js +1 -0
  153. package/dist/rpc/run.js.map +1 -1
  154. package/dist/rpc/slot.d.ts +1 -0
  155. package/dist/rpc/slot.d.ts.map +1 -1
  156. package/dist/rpc/tmux.d.ts +10 -0
  157. package/dist/rpc/tmux.d.ts.map +1 -1
  158. package/dist/runs/ci-decision-context.d.ts +40 -0
  159. package/dist/runs/ci-decision-context.d.ts.map +1 -0
  160. package/dist/runs/ci-decision-context.js +129 -0
  161. package/dist/runs/ci-decision-context.js.map +1 -0
  162. package/dist/runs/decision-resolution.d.ts +37 -1
  163. package/dist/runs/decision-resolution.d.ts.map +1 -1
  164. package/dist/runs/decision-resolution.js +36 -0
  165. package/dist/runs/decision-resolution.js.map +1 -1
  166. package/dist/runs/family-iteration-ledger.js +1 -1
  167. package/dist/runs/family-iteration-ledger.js.map +1 -1
  168. package/dist/runs/publish-approval.d.ts +20 -0
  169. package/dist/runs/publish-approval.d.ts.map +1 -0
  170. package/dist/runs/publish-approval.js +29 -0
  171. package/dist/runs/publish-approval.js.map +1 -0
  172. package/dist/runs/review-chain.d.ts +2 -2
  173. package/dist/runs/review-chain.d.ts.map +1 -1
  174. package/dist/runs/review-chain.js +4 -4
  175. package/dist/runs/review-chain.js.map +1 -1
  176. package/dist/runs/review-policy.d.ts +9 -0
  177. package/dist/runs/review-policy.d.ts.map +1 -0
  178. package/dist/runs/review-policy.js +34 -0
  179. package/dist/runs/review-policy.js.map +1 -0
  180. package/dist/runs/review-retries.d.ts +10 -10
  181. package/dist/runs/review-retries.d.ts.map +1 -1
  182. package/dist/runs/review-retries.js +17 -22
  183. package/dist/runs/review-retries.js.map +1 -1
  184. package/dist/runs/slot-resolution.js +1 -1
  185. package/dist/runs/slot-resolution.js.map +1 -1
  186. package/dist/transport/signal.d.ts +3 -3
  187. package/dist/transport/signal.d.ts.map +1 -1
  188. package/dist/version.d.ts +1 -1
  189. package/dist/version.js +1 -1
  190. package/package.json +14 -2
  191. package/schemas/recipe-v1.schema.json +113 -22
  192. package/scripts/acceptance.d.mts +16 -0
  193. package/scripts/acceptance.mjs +233 -0
@@ -1,4 +1,6 @@
1
1
  import { addFinding, createContext, finishResult, hasOwn, isNonEmptyString, isRecord, RECIPE_PROTOCOL_SCHEMA_URL, validateOptionalStringField, } from './common.js';
2
+ import { normalizeRecipeClaimId, validateRecipeClaimDeclarations } from './evidence.js';
3
+ import { RECIPE_INTENT_MAX_LENGTH, RECIPE_INTENT_WARN_LENGTH } from './hud-intent.js';
2
4
  import { getRecipeActionManifestActionNames, validateRecipeActionManifestDocument, } from './manifest.js';
3
5
  import { validateRecipeParams, validateRecipeParamsSchema } from './params.js';
4
6
  import { extractWorkflow, getRecipeActionParams, getRecipeWorkflowActionEntries, validateRecipeActionCases, validateRecipeCalls, validateWorkflowGraph, } from './workflow.js';
@@ -123,62 +125,63 @@ export function validateRecipeDocument(recipe, options) {
123
125
  const workflow = extractWorkflow(ctx, recipe);
124
126
  if (workflow) {
125
127
  validateWorkflowGraph(ctx, workflow);
128
+ if (options?.lintIntent) {
129
+ for (const [id, node] of Object.entries(workflow.nodes)) {
130
+ if (typeof node.intent !== 'string')
131
+ continue;
132
+ const length = Array.from(node.intent.trim()).length;
133
+ if (length > RECIPE_INTENT_WARN_LENGTH) {
134
+ addFinding(ctx, length > RECIPE_INTENT_MAX_LENGTH ? 'error' : 'warning', 'workflow.intent_too_long', `workflow.nodes.${id}.intent`, `Intent has ${length} characters. Use one plain sentence, preferably at most ${RECIPE_INTENT_WARN_LENGTH} characters, never more than ${RECIPE_INTENT_MAX_LENGTH}.`);
135
+ }
136
+ }
137
+ }
126
138
  validateRecipeCalls(ctx, workflow, {
127
139
  ...(options?.externalRecipeIds ? { externalRecipeIds: options.externalRecipeIds } : {}),
128
140
  skipResolution: options?.skipRecipeCallResolution === true,
129
141
  });
130
- validateProofLinks(ctx, workflow.nodes, proofTargetIds);
142
+ const parentIds = new Set(Array.isArray(recipe.proofTargets)
143
+ ? recipe.proofTargets
144
+ .filter(isRecord)
145
+ .filter((target) => isNonEmptyString(target.parentId))
146
+ .map((target) => normalizeRecipeClaimId(String(target.parentId)))
147
+ : []);
148
+ validateProofLinks(ctx, workflow.nodes, proofTargetIds, parentIds);
131
149
  }
132
150
  return finishResult(ctx);
133
151
  }
134
152
  function validateProofTargets(ctx, value) {
135
- const ids = new Set();
136
- if (!Array.isArray(value)) {
137
- addFinding(ctx, 'error', 'recipe.invalid_proof_targets', 'proofTargets', 'proofTargets must be an array.');
138
- return ids;
139
- }
140
- value.forEach((target, index) => {
141
- const path = `proofTargets[${index}]`;
142
- if (!isRecord(target)) {
143
- addFinding(ctx, 'error', 'recipe.invalid_proof_target', path, `${path} must be an object.`);
144
- return;
145
- }
146
- for (const field of Object.keys(target)) {
147
- if (field !== 'id' && field !== 'claim') {
148
- addFinding(ctx, 'error', 'recipe.unsupported_proof_target_field', `${path}.${field}`, `Proof targets do not support ${field}.`);
149
- }
150
- }
151
- if (!isNonEmptyString(target.id)) {
152
- addFinding(ctx, 'error', 'recipe.invalid_proof_target_id', `${path}.id`, 'Proof target id must be a non-empty string.');
153
- }
154
- else if (ids.has(target.id)) {
155
- addFinding(ctx, 'error', 'recipe.duplicate_proof_target', `${path}.id`, `Proof target ${target.id} is duplicated.`);
156
- }
157
- else {
158
- ids.add(target.id);
159
- }
160
- if (!isNonEmptyString(target.claim)) {
161
- addFinding(ctx, 'error', 'recipe.invalid_proof_target_claim', `${path}.claim`, 'Proof target claim must be a non-empty string.');
162
- }
163
- });
164
- return ids;
153
+ ctx.findings.push(...validateRecipeClaimDeclarations(value).findings);
154
+ return new Set(Array.isArray(value)
155
+ ? value
156
+ .filter(isRecord)
157
+ .filter((target) => isNonEmptyString(target.id))
158
+ .map((target) => normalizeRecipeClaimId(String(target.id)))
159
+ : []);
165
160
  }
166
- function validateProofLinks(ctx, nodes, declared) {
161
+ function validateProofLinks(ctx, nodes, declared, parents) {
167
162
  const covered = new Set();
168
163
  for (const [nodeId, node] of Object.entries(nodes)) {
164
+ if (node.action === 'call' && isRecord(node.claimBindings)) {
165
+ for (const target of Object.values(node.claimBindings)) {
166
+ if (isNonEmptyString(target) && declared.has(normalizeRecipeClaimId(target)))
167
+ covered.add(normalizeRecipeClaimId(target));
168
+ else
169
+ addFinding(ctx, 'error', 'recipe.undeclared_proof_target', `workflow.nodes.${nodeId}.claimBindings`, 'Claim binding must name a registered parent claim.');
170
+ }
171
+ }
169
172
  if (!Array.isArray(node.proves))
170
173
  continue;
171
174
  node.proves.forEach((target, index) => {
172
175
  if (!isNonEmptyString(target))
173
176
  return;
174
- if (!declared.has(target)) {
177
+ if (!declared.has(normalizeRecipeClaimId(target))) {
175
178
  addFinding(ctx, 'error', 'recipe.undeclared_proof_target', `workflow.nodes.${nodeId}.proves[${index}]`, `Proof target ${target} is not declared by recipe.proofTargets.`);
176
179
  }
177
- covered.add(target);
180
+ covered.add(normalizeRecipeClaimId(target));
178
181
  });
179
182
  }
180
183
  for (const target of declared) {
181
- if (!covered.has(target)) {
184
+ if (!covered.has(target) && !parents.has(target)) {
182
185
  addFinding(ctx, 'error', 'recipe.uncovered_proof_target', 'proofTargets', `Proof target ${target} is not covered by any workflow node.`);
183
186
  }
184
187
  }
@@ -1 +1 @@
1
- {"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/recipe/document.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/recipe/document.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,128 @@
1
+ import { type RecipeArtifactPackageInput, type RecipeValidationResult } from './common.js';
2
+ import type { RecipeRecordingTimelineDocument } from './recording.js';
3
+ /** Serialized target identity; resolution remains the provider's responsibility. */
4
+ export type RecipeRecordingTarget = {
5
+ kind: 'cdp-page';
6
+ host: string;
7
+ port: number;
8
+ targetId: string;
9
+ } | {
10
+ kind: 'android-device';
11
+ serial: string;
12
+ } | {
13
+ kind: 'window-id';
14
+ windowId: string;
15
+ } | {
16
+ kind: 'pid';
17
+ pid: number;
18
+ } | {
19
+ kind: 'app-window';
20
+ appName: string;
21
+ windowName: string;
22
+ } | {
23
+ kind: 'simulator';
24
+ device: string;
25
+ };
26
+ /** Canonical serialized identity validation for providers and lease acquisition. */
27
+ export declare function validateRecipeRecordingTarget(value: unknown): RecipeValidationResult;
28
+ /** Shared by SDK admission and the existing lease registry's declared recording binding. */
29
+ export declare function recordingTargetClaimKey(context: {
30
+ backend: string;
31
+ target: RecipeRecordingTarget;
32
+ }): string;
33
+ /** One policy for every recorded-evidence consumer (ADR-062). */
34
+ export declare const EVIDENCE_PADDING_MS = 1000;
35
+ export declare const RECIPE_CLAIM_KINDS: readonly ["acceptance", "qa-case", "qa-check"];
36
+ export declare const RECIPE_ASSERTION_ACTIONS: ReadonlySet<string>;
37
+ /** Declared retries retain failed attempts without turning a later successful occurrence into failure. */
38
+ export declare function hasUnresolvedRecipeFailure(entries: readonly unknown[]): boolean;
39
+ export type RecipeClaimKind = (typeof RECIPE_CLAIM_KINDS)[number];
40
+ export declare const RECIPE_CLAIM_VERDICTS: readonly ["proven", "weak", "missing", "untestable", "failed", "awaiting-review"];
41
+ export type RecipeClaimVerdict = (typeof RECIPE_CLAIM_VERDICTS)[number];
42
+ export type RecipeClaimProofMode = 'state' | 'visual' | 'mixed';
43
+ /** Extends the existing proofTargets declaration; it is not a second registry. */
44
+ export interface RecipeClaimDeclaration {
45
+ id: string;
46
+ claim: string;
47
+ kind?: RecipeClaimKind;
48
+ parentId?: string;
49
+ proofMode?: RecipeClaimProofMode;
50
+ }
51
+ /** Foreign keys only. Labels, intent and playback ranges come from the trace/timeline. */
52
+ export interface EvidenceMomentRef {
53
+ recipeRunId: string;
54
+ videoDigest: string;
55
+ traceIndex: number;
56
+ }
57
+ /** Verdict and checked references, derived once from the executed proof. */
58
+ export interface RecipeClaimEvidence {
59
+ id: string;
60
+ text: string;
61
+ kind: RecipeClaimKind;
62
+ parentId?: string;
63
+ proofMode: RecipeClaimProofMode;
64
+ verdict: RecipeClaimVerdict;
65
+ recipeNodes: string[];
66
+ assertionIndices: number[];
67
+ evidence: string[];
68
+ moments: EvidenceMomentRef[];
69
+ /** Honest timing limitations, independent of the semantic verdict. */
70
+ timing?: 'measured' | 'untimed' | 'outside-recording';
71
+ note?: string;
72
+ }
73
+ export interface RecipeClaimLedger {
74
+ schemaVersion: 2;
75
+ recipeRunId: string;
76
+ criteria: RecipeClaimEvidence[];
77
+ recording: RecordedEvidenceState;
78
+ judgments?: RecipeVisualJudgment[];
79
+ }
80
+ /** A gate reviewer confirms visual meaning against the exact retained moments. */
81
+ export interface RecipeVisualJudgment {
82
+ claimId: string;
83
+ recipeRunId: string;
84
+ verdict: 'confirmed' | 'rejected';
85
+ moments: EvidenceMomentRef[];
86
+ actor: string;
87
+ reason: string;
88
+ judgedAt: string;
89
+ }
90
+ /** Original media in capture order. A restart gap must never be hidden with held frames. */
91
+ export interface RecordingSegmentRef {
92
+ videoPath: string;
93
+ videoDigest: string;
94
+ timelinePath?: string;
95
+ gapBefore?: boolean;
96
+ }
97
+ export interface RecordedEvidencePolicy {
98
+ mode?: 'auto' | 'full-run' | 'off';
99
+ reason?: string;
100
+ maxFps?: number;
101
+ maxSize?: number;
102
+ maxDurationMs?: number;
103
+ maxBytes?: number;
104
+ }
105
+ export declare const DEFAULT_RECORDED_EVIDENCE_POLICY: {
106
+ readonly mode: "auto";
107
+ readonly maxFps: 15;
108
+ readonly maxSize: 1080;
109
+ readonly maxDurationMs: number;
110
+ readonly maxBytes: number;
111
+ };
112
+ export interface RecordedEvidenceState {
113
+ status: 'not-required' | 'explicit-off' | 'recording' | 'finalizing' | 'complete' | 'incomplete' | 'failed';
114
+ reason?: string;
115
+ segments: RecordingSegmentRef[];
116
+ }
117
+ /** Readers supply identities computed from actual bytes, not hashes copied from a manifest. */
118
+ export interface RecordedEvidencePackageInput extends RecipeArtifactPackageInput {
119
+ recipeRunId?: string;
120
+ artifactDigests: Readonly<Record<string, string>>;
121
+ timelines: Readonly<Record<string, RecipeRecordingTimelineDocument>>;
122
+ claims?: RecipeClaimLedger;
123
+ /** Retained execution-input snapshot; task registration comes from this, never the verdict file. */
124
+ invocation?: unknown;
125
+ }
126
+ export declare function normalizeRecipeClaimId(id: string): string;
127
+ export declare function validateRecipeClaimDeclarations(value: unknown): RecipeValidationResult;
128
+ //# sourceMappingURL=evidence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../src/recipe/evidence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,141 @@
1
+ import { ACCEPTANCE_VERDICTS } from '../contracts/acceptance.js';
2
+ import { addFinding, createContext, finishResult, isNonEmptyString, isRecord, } from './common.js';
3
+ import { digestRecipeDocument } from './digest.js';
4
+ /** Canonical serialized identity validation for providers and lease acquisition. */
5
+ export function validateRecipeRecordingTarget(value) {
6
+ const context = createContext();
7
+ const issue = (path, message) => addFinding(context, 'error', 'recording_target.invalid', path, message);
8
+ if (!isRecord(value)) {
9
+ issue('$', 'Recording target must be an object.');
10
+ return finishResult(context);
11
+ }
12
+ const fields = {
13
+ 'cdp-page': ['host', 'port', 'targetId'],
14
+ 'android-device': ['serial'],
15
+ 'window-id': ['windowId'],
16
+ pid: ['pid'],
17
+ 'app-window': ['appName', 'windowName'],
18
+ simulator: ['device'],
19
+ };
20
+ const required = typeof value.kind === 'string' && Object.hasOwn(fields, value.kind)
21
+ ? fields[value.kind]
22
+ : undefined;
23
+ if (!required) {
24
+ issue('kind', 'Unknown recording target kind.');
25
+ return finishResult(context);
26
+ }
27
+ for (const field of Object.keys(value)) {
28
+ if (field !== 'kind' && !required.includes(field))
29
+ issue(field, 'Unknown recording target field.');
30
+ }
31
+ for (const field of required) {
32
+ if (field === 'pid' || field === 'port') {
33
+ const number = value[field];
34
+ if (typeof number !== 'number' ||
35
+ !Number.isSafeInteger(number) ||
36
+ number < 1 ||
37
+ (field === 'port' && number > 65_535))
38
+ issue(field, `Recording ${field} must be a positive integer${field === 'port' ? ' at most 65535' : ''}.`);
39
+ }
40
+ else if (!isNonEmptyString(value[field])) {
41
+ issue(field, `Recording ${field} must be non-empty.`);
42
+ }
43
+ }
44
+ return finishResult(context);
45
+ }
46
+ /** Shared by SDK admission and the existing lease registry's declared recording binding. */
47
+ export function recordingTargetClaimKey(context) {
48
+ const validation = validateRecipeRecordingTarget(context.target);
49
+ if (!isNonEmptyString(context.backend) || validation.status !== 'valid')
50
+ throw new TypeError(`Invalid recording identity: ${validation.findings.map((finding) => finding.message).join('; ') || 'Backend must be non-empty.'}`);
51
+ return `recording/${context.backend}/${digestRecipeDocument(context.target)}`;
52
+ }
53
+ /** One policy for every recorded-evidence consumer (ADR-062). */
54
+ export const EVIDENCE_PADDING_MS = 1_000;
55
+ export const RECIPE_CLAIM_KINDS = ['acceptance', 'qa-case', 'qa-check'];
56
+ export const RECIPE_ASSERTION_ACTIONS = new Set([
57
+ 'assert_output',
58
+ 'assert_json',
59
+ 'ui.wait_for',
60
+ ]);
61
+ /** Declared retries retain failed attempts without turning a later successful occurrence into failure. */
62
+ export function hasUnresolvedRecipeFailure(entries) {
63
+ return entries.some((entry, index) => {
64
+ if (!isRecord(entry) || entry.ok !== false)
65
+ return false;
66
+ if (!isNonEmptyString(entry.retryGroup) || !RECIPE_ASSERTION_ACTIONS.has(String(entry.action)))
67
+ return true;
68
+ const later = entries
69
+ .slice(index + 1)
70
+ .filter(isRecord)
71
+ .filter((candidate) => candidate.nodeId === entry.nodeId && candidate.retryGroup === entry.retryGroup);
72
+ return later.at(-1)?.ok !== true;
73
+ });
74
+ }
75
+ export const RECIPE_CLAIM_VERDICTS = ACCEPTANCE_VERDICTS;
76
+ export const DEFAULT_RECORDED_EVIDENCE_POLICY = {
77
+ mode: 'auto',
78
+ maxFps: 15,
79
+ maxSize: 1_080,
80
+ maxDurationMs: 120 * 60 * 1_000,
81
+ maxBytes: 1_024 * 1_024 * 1_024,
82
+ };
83
+ export function normalizeRecipeClaimId(id) {
84
+ const match = /^AC-?([1-9][0-9]*)$/iu.exec(id);
85
+ return match ? `AC-${match[1]}` : id;
86
+ }
87
+ export function validateRecipeClaimDeclarations(value) {
88
+ const context = createContext();
89
+ const issue = (path, message) => addFinding(context, 'error', 'recipe.invalid_claim', path, message);
90
+ if (!Array.isArray(value)) {
91
+ issue('proofTargets', 'proofTargets must be an array.');
92
+ return finishResult(context);
93
+ }
94
+ const declarations = new Map();
95
+ for (const [index, target] of value.entries()) {
96
+ const path = `proofTargets[${index}]`;
97
+ if (!isRecord(target)) {
98
+ issue(path, 'A claim must be an object.');
99
+ continue;
100
+ }
101
+ for (const field of Object.keys(target)) {
102
+ if (!['id', 'claim', 'kind', 'parentId', 'proofMode'].includes(field))
103
+ issue(`${path}.${field}`, 'Unknown claim declaration field.');
104
+ }
105
+ if (!isNonEmptyString(target.id) || !isNonEmptyString(target.claim)) {
106
+ issue(path, 'A claim requires a non-empty id and expectation text.');
107
+ continue;
108
+ }
109
+ const id = normalizeRecipeClaimId(target.id);
110
+ if (declarations.has(id))
111
+ issue(`${path}.id`, `Duplicate registered claim ${id}.`);
112
+ else
113
+ declarations.set(id, typeof target.parentId === 'string' ? target.parentId : undefined);
114
+ if (target.kind !== undefined && !RECIPE_CLAIM_KINDS.some((kind) => kind === target.kind))
115
+ issue(`${path}.kind`, 'Unknown claim kind.');
116
+ if (target.parentId !== undefined && !isNonEmptyString(target.parentId))
117
+ issue(`${path}.parentId`, 'Parent claim id must be non-empty.');
118
+ if (target.proofMode !== undefined &&
119
+ !['state', 'visual', 'mixed'].includes(String(target.proofMode)))
120
+ issue(`${path}.proofMode`, 'Unknown claim proof mode.');
121
+ }
122
+ for (const [id, declaredParent] of declarations) {
123
+ const ancestors = new Set([id]);
124
+ let parent = declaredParent ? normalizeRecipeClaimId(declaredParent) : undefined;
125
+ while (parent) {
126
+ if (!declarations.has(parent)) {
127
+ issue(`proofTargets.${id}.parentId`, `Unknown parent claim ${parent}.`);
128
+ break;
129
+ }
130
+ if (ancestors.has(parent)) {
131
+ issue(`proofTargets.${id}.parentId`, 'Claim parent relationship is cyclic.');
132
+ break;
133
+ }
134
+ ancestors.add(parent);
135
+ const nextParent = declarations.get(parent);
136
+ parent = nextParent ? normalizeRecipeClaimId(nextParent) : undefined;
137
+ }
138
+ }
139
+ return finishResult(context);
140
+ }
141
+ //# sourceMappingURL=evidence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/recipe/evidence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /** Display limits apply after font layout, never by cutting authored copy. */
2
+ export declare const HUD_INTENT_MAX_LINES = 2;
3
+ export declare const HUD_INTENT_LINE_HEIGHT = 16;
4
+ export declare const RECIPE_INTENT_WARN_LENGTH = 80;
5
+ export declare const RECIPE_INTENT_MAX_LENGTH = 120;
6
+ export declare const HUD_PANEL_BOUNDS: {
7
+ readonly native: {
8
+ readonly maxWidth: 360;
9
+ readonly maxHeight: 88;
10
+ };
11
+ readonly card: {
12
+ readonly maxWidth: 360;
13
+ readonly maxHeight: 144;
14
+ };
15
+ readonly bar: {
16
+ readonly maxWidth: 960;
17
+ readonly maxHeight: 144;
18
+ };
19
+ };
20
+ export declare function hudIntentDisplay(value: string | number | null | undefined, platform?: keyof typeof HUD_PANEL_BOUNDS): {
21
+ text: string;
22
+ panel: {
23
+ readonly maxWidth: 360;
24
+ readonly maxHeight: 88;
25
+ } | {
26
+ readonly maxWidth: 360;
27
+ readonly maxHeight: 144;
28
+ } | {
29
+ readonly maxWidth: 960;
30
+ readonly maxHeight: 144;
31
+ };
32
+ nativeProps: {
33
+ numberOfLines: number;
34
+ ellipsizeMode: "tail";
35
+ allowFontScaling: boolean;
36
+ };
37
+ nativeStyle: {
38
+ lineHeight: number;
39
+ maxHeight: number;
40
+ fontSize: number;
41
+ };
42
+ webStyle: {
43
+ display: string;
44
+ WebkitBoxOrient: string;
45
+ WebkitLineClamp: string;
46
+ whiteSpace: string;
47
+ overflowWrap: string;
48
+ overflow: string;
49
+ textOverflow: string;
50
+ lineHeight: string;
51
+ maxHeight: string;
52
+ };
53
+ };
54
+ /** Existing metadata/error cap; intent always uses the uncut display model. */
55
+ export declare function hudSecondaryText(value: string | number | null | undefined, max?: number): string;
56
+ //# sourceMappingURL=hud-intent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hud-intent.d.ts","sourceRoot":"","sources":["../../src/recipe/hud-intent.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAC5C,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAC5C,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;CAInB,CAAC;AAEX,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EACzC,QAAQ,GAAE,MAAM,OAAO,gBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6BjD;AAED,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,GAAG,SAAM,GAAG,MAAM,CAI7F"}
@@ -0,0 +1,46 @@
1
+ /** Display limits apply after font layout, never by cutting authored copy. */
2
+ export const HUD_INTENT_MAX_LINES = 2;
3
+ export const HUD_INTENT_LINE_HEIGHT = 16;
4
+ export const RECIPE_INTENT_WARN_LENGTH = 80;
5
+ export const RECIPE_INTENT_MAX_LENGTH = 120;
6
+ export const HUD_PANEL_BOUNDS = {
7
+ native: { maxWidth: 360, maxHeight: 88 },
8
+ card: { maxWidth: 360, maxHeight: 144 },
9
+ bar: { maxWidth: 960, maxHeight: 144 },
10
+ };
11
+ export function hudIntentDisplay(value, platform = 'card') {
12
+ return {
13
+ text: String(value ?? '')
14
+ .replace(/\s+/gu, ' ')
15
+ .trim(),
16
+ panel: HUD_PANEL_BOUNDS[platform],
17
+ nativeProps: {
18
+ numberOfLines: HUD_INTENT_MAX_LINES,
19
+ ellipsizeMode: 'tail',
20
+ allowFontScaling: false,
21
+ },
22
+ nativeStyle: {
23
+ lineHeight: HUD_INTENT_LINE_HEIGHT,
24
+ maxHeight: HUD_INTENT_LINE_HEIGHT * HUD_INTENT_MAX_LINES,
25
+ fontSize: 12,
26
+ },
27
+ webStyle: {
28
+ display: '-webkit-box',
29
+ WebkitBoxOrient: 'vertical',
30
+ WebkitLineClamp: String(HUD_INTENT_MAX_LINES),
31
+ whiteSpace: 'normal',
32
+ overflowWrap: 'anywhere',
33
+ overflow: 'hidden',
34
+ textOverflow: 'ellipsis',
35
+ lineHeight: `${HUD_INTENT_LINE_HEIGHT}px`,
36
+ maxHeight: `${HUD_INTENT_LINE_HEIGHT * HUD_INTENT_MAX_LINES}px`,
37
+ },
38
+ };
39
+ }
40
+ /** Existing metadata/error cap; intent always uses the uncut display model. */
41
+ export function hudSecondaryText(value, max = 180) {
42
+ const text = hudIntentDisplay(value).text;
43
+ const characters = Array.from(text);
44
+ return characters.length > max ? `${characters.slice(0, max - 1).join('')}…` : text;
45
+ }
46
+ //# sourceMappingURL=hud-intent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hud-intent.js","sourceRoot":"","sources":["../../src/recipe/hud-intent.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AACtC,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AACzC,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAC5C,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAC5C,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE;IACxC,IAAI,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE;IACvC,GAAG,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE;CAC9B,CAAC;AAEX,MAAM,UAAU,gBAAgB,CAC9B,KAAyC,EACzC,WAA0C,MAAM;IAEhD,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;aACtB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;aACrB,IAAI,EAAE;QACT,KAAK,EAAE,gBAAgB,CAAC,QAAQ,CAAC;QACjC,WAAW,EAAE;YACX,aAAa,EAAE,oBAAoB;YACnC,aAAa,EAAE,MAAe;YAC9B,gBAAgB,EAAE,KAAK;SACxB;QACD,WAAW,EAAE;YACX,UAAU,EAAE,sBAAsB;YAClC,SAAS,EAAE,sBAAsB,GAAG,oBAAoB;YACxD,QAAQ,EAAE,EAAE;SACb;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,aAAa;YACtB,eAAe,EAAE,UAAU;YAC3B,eAAe,EAAE,MAAM,CAAC,oBAAoB,CAAC;YAC7C,UAAU,EAAE,QAAQ;YACpB,YAAY,EAAE,UAAU;YACxB,QAAQ,EAAE,QAAQ;YAClB,YAAY,EAAE,UAAU;YACxB,UAAU,EAAE,GAAG,sBAAsB,IAAI;YACzC,SAAS,EAAE,GAAG,sBAAsB,GAAG,oBAAoB,IAAI;SAChE;KACF,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,gBAAgB,CAAC,KAAyC,EAAE,GAAG,GAAG,GAAG;IACnF,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;IAC1C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACtF,CAAC"}
@@ -3,11 +3,13 @@ export { BUILT_IN_UI_OBSERVERS, type BuiltInUiObserverRef, isRecord, OFFICIAL_RE
3
3
  export { recipeProtocolSchemaUrlForVersion } from './common.js';
4
4
  export { canonicalRecipeJson, digestRecipeDocument, resolvedRecipeArtifactPath } from './digest.js';
5
5
  export { type RecipeDocumentValidationOptions, validateRecipeDocument, validateRecipeWithManifest, validateResolvedRecipeActionNode, } from './document.js';
6
+ export { DEFAULT_RECORDED_EVIDENCE_POLICY, EVIDENCE_PADDING_MS, type EvidenceMomentRef, hasUnresolvedRecipeFailure, normalizeRecipeClaimId, RECIPE_ASSERTION_ACTIONS, RECIPE_CLAIM_KINDS, RECIPE_CLAIM_VERDICTS, type RecipeClaimDeclaration, type RecipeClaimEvidence, type RecipeClaimKind, type RecipeClaimLedger, type RecipeClaimProofMode, type RecipeClaimVerdict, type RecipeRecordingTarget, type RecipeVisualJudgment, type RecordedEvidencePackageInput, type RecordedEvidencePolicy, type RecordedEvidenceState, type RecordingSegmentRef, recordingTargetClaimKey, validateRecipeClaimDeclarations, validateRecipeRecordingTarget, } from './evidence.js';
7
+ export { HUD_INTENT_LINE_HEIGHT, HUD_INTENT_MAX_LINES, HUD_PANEL_BOUNDS, hudIntentDisplay, hudSecondaryText, RECIPE_INTENT_MAX_LENGTH, RECIPE_INTENT_WARN_LENGTH, } from './hud-intent.js';
6
8
  export { getRecipeActionManifestActionNames, validateRecipeActionManifestDocument, } from './manifest.js';
7
9
  export { applyRecipeParamDefaults, validateRecipeParams, validateRecipeParamsSchema, } from './params.js';
8
- export { type RecipeRecordingMarker, type RecipeRecordingTimelineDocument, type RecipeVideoTiming, validateRecipeRecordingTimelineDocument, } from './recording.js';
10
+ export { type RecipeRecordingMarker, type RecipeRecordingTimelineBinding, type RecipeRecordingTimelineDocument, type RecipeVideoTiming, validateRecipeRecordingTimelineBinding, validateRecipeRecordingTimelineDocument, } from './recording.js';
9
11
  export { CAPTURE_EVIDENCE_INCOMPLETE, CAPTURE_INTERRUPTED_REASON, digestRecipeSuiteScope, RECIPE_SUITE_EVIDENCE_INCOMPLETE_REASONS, RECIPE_SUITE_NON_EXECUTION_REASONS, RECIPE_SUITE_RESULT_SCHEMA_URL, RECIPE_SUITE_SCOPE_SCHEMA_URL, type RecipeSuiteEvidenceIncomplete, type RecipeSuiteEvidenceIncompleteReason, type RecipeSuiteNonExecutionReason, type RecipeSuiteNonExecutionResolution, type RecipeSuitePackageInput, type RecipeSuiteResolution, type RecipeSuiteResultDocument, type RecipeSuiteScopeCase, type RecipeSuiteScopeDocument, type RecipeSuiteVerdictResolution, type RecipeSuiteVerdictStatus, validateRecipeSuitePackage, validateRecipeSuiteResultDocument, validateRecipeSuiteScopeDocument, } from './suite.js';
10
12
  export { findUnsupportedRecipeTemplates, parseRecipeTemplate, type RecipeTemplateReference, type RecipeTemplateSource, replaceRecipeTemplates, } from './template.js';
11
13
  export { DEFAULT_UNTRUSTED_RECIPE_BLOCKED_CAPABILITIES, officialRecipeActionCapabilities, RECIPE_EXECUTION_CAPABILITIES, type RecipeExecutionApproval, type RecipeExecutionCapability, type RecipeExecutionPlan, type RecipePlanNode, type RecipeSourceKind, type RecipeSourceProvenance, type RecipeSourceTrust, type RecipeTrustFailure, } from './trust.js';
12
- export { getRecipeCallRefs, getRecipeWorkflowActions, getRecipeWorkflowNodeIds, isDynamicRecipeRef, normalizeRecipeRef, } from './workflow.js';
14
+ export { getRecipeCallRefs, getRecipeWorkflowActionEntries, getRecipeWorkflowActions, getRecipeWorkflowNodeIds, isDynamicRecipeRef, normalizeRecipeRef, } from './workflow.js';
13
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/recipe/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,kBAAkB,EAClB,gCAAgC,EAChC,6BAA6B,GAC9B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,qBAAqB,EACrB,KAAK,oBAAoB,EACzB,QAAQ,EACR,uBAAuB,EACvB,KAAK,kBAAkB,EACvB,iCAAiC,EACjC,qBAAqB,EACrB,0BAA0B,EAC1B,2BAA2B,EAC3B,8BAA8B,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,4BAA4B,EACjC,KAAK,gBAAgB,EACrB,KAAK,0BAA0B,EAC/B,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,kCAAkC,EACvC,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,0BAA0B,EAC1B,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iCAAiC,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACpG,OAAO,EACL,KAAK,+BAA+B,EACpC,sBAAsB,EACtB,0BAA0B,EAC1B,gCAAgC,GACjC,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,kCAAkC,EAClC,oCAAoC,GACrC,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,+BAA+B,EACpC,KAAK,iBAAiB,EACtB,uCAAuC,GACxC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,EAC1B,sBAAsB,EACtB,wCAAwC,EACxC,kCAAkC,EAClC,8BAA8B,EAC9B,6BAA6B,EAC7B,KAAK,6BAA6B,EAClC,KAAK,mCAAmC,EACxC,KAAK,6BAA6B,EAClC,KAAK,iCAAiC,EACtC,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,4BAA4B,EACjC,KAAK,wBAAwB,EAC7B,0BAA0B,EAC1B,iCAAiC,EACjC,gCAAgC,GACjC,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,8BAA8B,EAC9B,mBAAmB,EACnB,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,sBAAsB,GACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,6CAA6C,EAC7C,gCAAgC,EAChC,6BAA6B,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,GACxB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/recipe/index.ts"],"names":[],"mappings":"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"}
@@ -3,11 +3,13 @@ export { BUILT_IN_UI_OBSERVERS, isRecord, OFFICIAL_RECIPE_ACTIONS, RECIPE_ACTION
3
3
  export { recipeProtocolSchemaUrlForVersion } from './common.js';
4
4
  export { canonicalRecipeJson, digestRecipeDocument, resolvedRecipeArtifactPath } from './digest.js';
5
5
  export { validateRecipeDocument, validateRecipeWithManifest, validateResolvedRecipeActionNode, } from './document.js';
6
+ export { DEFAULT_RECORDED_EVIDENCE_POLICY, EVIDENCE_PADDING_MS, hasUnresolvedRecipeFailure, normalizeRecipeClaimId, RECIPE_ASSERTION_ACTIONS, RECIPE_CLAIM_KINDS, RECIPE_CLAIM_VERDICTS, recordingTargetClaimKey, validateRecipeClaimDeclarations, validateRecipeRecordingTarget, } from './evidence.js';
7
+ export { HUD_INTENT_LINE_HEIGHT, HUD_INTENT_MAX_LINES, HUD_PANEL_BOUNDS, hudIntentDisplay, hudSecondaryText, RECIPE_INTENT_MAX_LENGTH, RECIPE_INTENT_WARN_LENGTH, } from './hud-intent.js';
6
8
  export { getRecipeActionManifestActionNames, validateRecipeActionManifestDocument, } from './manifest.js';
7
9
  export { applyRecipeParamDefaults, validateRecipeParams, validateRecipeParamsSchema, } from './params.js';
8
- export { validateRecipeRecordingTimelineDocument, } from './recording.js';
10
+ export { validateRecipeRecordingTimelineBinding, validateRecipeRecordingTimelineDocument, } from './recording.js';
9
11
  export { CAPTURE_EVIDENCE_INCOMPLETE, CAPTURE_INTERRUPTED_REASON, digestRecipeSuiteScope, RECIPE_SUITE_EVIDENCE_INCOMPLETE_REASONS, RECIPE_SUITE_NON_EXECUTION_REASONS, RECIPE_SUITE_RESULT_SCHEMA_URL, RECIPE_SUITE_SCOPE_SCHEMA_URL, validateRecipeSuitePackage, validateRecipeSuiteResultDocument, validateRecipeSuiteScopeDocument, } from './suite.js';
10
12
  export { findUnsupportedRecipeTemplates, parseRecipeTemplate, replaceRecipeTemplates, } from './template.js';
11
13
  export { DEFAULT_UNTRUSTED_RECIPE_BLOCKED_CAPABILITIES, officialRecipeActionCapabilities, RECIPE_EXECUTION_CAPABILITIES, } from './trust.js';
12
- export { getRecipeCallRefs, getRecipeWorkflowActions, getRecipeWorkflowNodeIds, isDynamicRecipeRef, normalizeRecipeRef, } from './workflow.js';
14
+ export { getRecipeCallRefs, getRecipeWorkflowActionEntries, getRecipeWorkflowActions, getRecipeWorkflowNodeIds, isDynamicRecipeRef, normalizeRecipeRef, } from './workflow.js';
13
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/recipe/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,kBAAkB,EAClB,gCAAgC,EAChC,6BAA6B,GAC9B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,qBAAqB,EAErB,QAAQ,EACR,uBAAuB,EAEvB,iCAAiC,EACjC,qBAAqB,EACrB,0BAA0B,EAC1B,2BAA2B,EAC3B,8BAA8B,EAe9B,0BAA0B,GAE3B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iCAAiC,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACpG,OAAO,EAEL,sBAAsB,EACtB,0BAA0B,EAC1B,gCAAgC,GACjC,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,kCAAkC,EAClC,oCAAoC,GACrC,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AACrB,OAAO,EAIL,uCAAuC,GACxC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,EAC1B,sBAAsB,EACtB,wCAAwC,EACxC,kCAAkC,EAClC,8BAA8B,EAC9B,6BAA6B,EAY7B,0BAA0B,EAC1B,iCAAiC,EACjC,gCAAgC,GACjC,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,8BAA8B,EAC9B,mBAAmB,EAGnB,sBAAsB,GACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,6CAA6C,EAC7C,gCAAgC,EAChC,6BAA6B,GAS9B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/recipe/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,kBAAkB,EAClB,gCAAgC,EAChC,6BAA6B,GAC9B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,qBAAqB,EAErB,QAAQ,EACR,uBAAuB,EAEvB,iCAAiC,EACjC,qBAAqB,EACrB,0BAA0B,EAC1B,2BAA2B,EAC3B,8BAA8B,EAe9B,0BAA0B,GAE3B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iCAAiC,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACpG,OAAO,EAEL,sBAAsB,EACtB,0BAA0B,EAC1B,gCAAgC,GACjC,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,gCAAgC,EAChC,mBAAmB,EAEnB,0BAA0B,EAC1B,sBAAsB,EACtB,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,EAarB,uBAAuB,EACvB,+BAA+B,EAC/B,6BAA6B,GAC9B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,kCAAkC,EAClC,oCAAoC,GACrC,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AACrB,OAAO,EAKL,sCAAsC,EACtC,uCAAuC,GACxC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,EAC1B,sBAAsB,EACtB,wCAAwC,EACxC,kCAAkC,EAClC,8BAA8B,EAC9B,6BAA6B,EAY7B,0BAA0B,EAC1B,iCAAiC,EACjC,gCAAgC,GACjC,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,8BAA8B,EAC9B,mBAAmB,EAGnB,sBAAsB,GACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,6CAA6C,EAC7C,gCAAgC,EAChC,6BAA6B,GAS9B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,iBAAiB,EACjB,8BAA8B,EAC9B,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,eAAe,CAAC"}
@@ -31,5 +31,12 @@ export interface RecipeRecordingTimelineDocument extends RecipeVideoTiming {
31
31
  traceDigest: string;
32
32
  markers: RecipeRecordingMarker[];
33
33
  }
34
+ export interface RecipeRecordingTimelineBinding {
35
+ videoPath: string;
36
+ videoDigest: string;
37
+ trace: unknown;
38
+ }
39
+ /** Shared identity check previously owned by the desktop player. No clock precision policy. */
40
+ export declare function validateRecipeRecordingTimelineBinding(value: unknown, binding: RecipeRecordingTimelineBinding): RecipeValidationResult;
34
41
  export declare function validateRecipeRecordingTimelineDocument(value: unknown): RecipeValidationResult;
35
42
  //# sourceMappingURL=recording.d.ts.map