@farmslot/protocol 0.38.0 → 0.40.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.
- package/CHANGELOG.md +26 -0
- package/dist/agents/reviewer-context.d.ts +4 -4
- package/dist/agents/reviewer-context.d.ts.map +1 -1
- package/dist/agents/reviewer-context.js +10 -10
- package/dist/agents/reviewer-context.js.map +1 -1
- package/dist/agents/roles.d.ts +2 -2
- package/dist/agents/roles.d.ts.map +1 -1
- package/dist/agents/roles.js +5 -9
- package/dist/agents/roles.js.map +1 -1
- package/dist/checklist-target.d.ts +6 -6
- package/dist/checklist-target.d.ts.map +1 -1
- package/dist/checklist-target.js +11 -11
- package/dist/checklist-target.js.map +1 -1
- package/dist/contracts/acceptance.d.ts +19 -34
- package/dist/contracts/acceptance.d.ts.map +1 -1
- package/dist/contracts/acceptance.js +11 -156
- package/dist/contracts/acceptance.js.map +1 -1
- package/dist/contracts/agents.d.ts +7 -2
- package/dist/contracts/agents.d.ts.map +1 -1
- package/dist/contracts/agents.js +13 -2
- package/dist/contracts/agents.js.map +1 -1
- package/dist/contracts/analytics.d.ts +2 -2
- package/dist/contracts/analytics.d.ts.map +1 -1
- package/dist/contracts/backlog.d.ts +16 -7
- package/dist/contracts/backlog.d.ts.map +1 -1
- package/dist/contracts/backlog.js.map +1 -1
- package/dist/contracts/config.d.ts +12 -3
- package/dist/contracts/config.d.ts.map +1 -1
- package/dist/contracts/config.js +32 -0
- package/dist/contracts/config.js.map +1 -1
- package/dist/contracts/dispatch.d.ts +7 -4
- package/dist/contracts/dispatch.d.ts.map +1 -1
- package/dist/contracts/family.d.ts +2 -2
- package/dist/contracts/family.d.ts.map +1 -1
- package/dist/contracts/index.d.ts +3 -0
- package/dist/contracts/index.d.ts.map +1 -1
- package/dist/contracts/index.js +3 -0
- package/dist/contracts/index.js.map +1 -1
- package/dist/contracts/pr-monitoring.d.ts +8 -8
- package/dist/contracts/pr-monitoring.d.ts.map +1 -1
- package/dist/contracts/pr-rules.d.ts +5 -7
- package/dist/contracts/pr-rules.d.ts.map +1 -1
- package/dist/contracts/pr-rules.js +4 -6
- package/dist/contracts/pr-rules.js.map +1 -1
- package/dist/contracts/qa.d.ts +2 -2
- package/dist/contracts/qa.d.ts.map +1 -1
- package/dist/contracts/qa.js +5 -9
- package/dist/contracts/qa.js.map +1 -1
- package/dist/contracts/recipe-conformance.d.ts +51 -0
- package/dist/contracts/recipe-conformance.d.ts.map +1 -1
- package/dist/contracts/recipe-conformance.js +134 -1
- package/dist/contracts/recipe-conformance.js.map +1 -1
- package/dist/contracts/resources.d.ts +1 -1
- package/dist/contracts/resources.d.ts.map +1 -1
- package/dist/contracts/resources.js.map +1 -1
- package/dist/contracts/reviews.d.ts +19 -3
- package/dist/contracts/reviews.d.ts.map +1 -1
- package/dist/contracts/reviews.js +2 -2
- package/dist/contracts/reviews.js.map +1 -1
- package/dist/contracts/run-gate-readiness.d.ts +26 -0
- package/dist/contracts/run-gate-readiness.d.ts.map +1 -0
- package/dist/contracts/run-gate-readiness.js +5 -0
- package/dist/contracts/run-gate-readiness.js.map +1 -0
- package/dist/contracts/run-lifecycle-view.d.ts +17 -0
- package/dist/contracts/run-lifecycle-view.d.ts.map +1 -0
- package/dist/contracts/run-lifecycle-view.js +70 -0
- package/dist/contracts/run-lifecycle-view.js.map +1 -0
- package/dist/contracts/runner-mobile-keys.d.ts +217 -0
- package/dist/contracts/runner-mobile-keys.d.ts.map +1 -0
- package/dist/contracts/runner-mobile-keys.js +189 -0
- package/dist/contracts/runner-mobile-keys.js.map +1 -0
- package/dist/contracts/runs.d.ts +109 -91
- package/dist/contracts/runs.d.ts.map +1 -1
- package/dist/contracts/runs.js +12 -14
- package/dist/contracts/runs.js.map +1 -1
- package/dist/contracts/runtime-capabilities.d.ts +2 -0
- package/dist/contracts/runtime-capabilities.d.ts.map +1 -1
- package/dist/contracts/runtime-capabilities.js.map +1 -1
- package/dist/contracts/template-placeholders.d.ts +0 -6
- package/dist/contracts/template-placeholders.d.ts.map +1 -1
- package/dist/contracts/template-placeholders.js +22 -4
- package/dist/contracts/template-placeholders.js.map +1 -1
- package/dist/contracts/worker-terminal.d.ts +19 -0
- package/dist/contracts/worker-terminal.d.ts.map +1 -1
- package/dist/contracts/worker-terminal.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/integrations/pr-monitoring.d.ts.map +1 -1
- package/dist/integrations/pr-monitoring.js +9 -3
- package/dist/integrations/pr-monitoring.js.map +1 -1
- package/dist/integrations/pr-rule-config.d.ts.map +1 -1
- package/dist/integrations/pr-rule-config.js +21 -25
- package/dist/integrations/pr-rule-config.js.map +1 -1
- package/dist/integrations/pr-workflow-defaults.d.ts.map +1 -1
- package/dist/integrations/pr-workflow-defaults.js +2 -5
- package/dist/integrations/pr-workflow-defaults.js.map +1 -1
- package/dist/recipe/artifact.d.ts.map +1 -1
- package/dist/recipe/artifact.js +20 -4
- package/dist/recipe/artifact.js.map +1 -1
- package/dist/recipe/document.d.ts +5 -1
- package/dist/recipe/document.d.ts.map +1 -1
- package/dist/recipe/document.js +66 -37
- package/dist/recipe/document.js.map +1 -1
- package/dist/recipe/evidence.d.ts +128 -0
- package/dist/recipe/evidence.d.ts.map +1 -0
- package/dist/recipe/evidence.js +141 -0
- package/dist/recipe/evidence.js.map +1 -0
- package/dist/recipe/hud-intent.d.ts +56 -0
- package/dist/recipe/hud-intent.d.ts.map +1 -0
- package/dist/recipe/hud-intent.js +46 -0
- package/dist/recipe/hud-intent.js.map +1 -0
- package/dist/recipe/index.d.ts +4 -2
- package/dist/recipe/index.d.ts.map +1 -1
- package/dist/recipe/index.js +4 -2
- package/dist/recipe/index.js.map +1 -1
- package/dist/recipe/recording.d.ts +7 -0
- package/dist/recipe/recording.d.ts.map +1 -1
- package/dist/recipe/recording.js +48 -0
- package/dist/recipe/recording.js.map +1 -1
- package/dist/recipe/workflow.d.ts.map +1 -1
- package/dist/recipe/workflow.js +23 -1
- package/dist/recipe/workflow.js.map +1 -1
- package/dist/recipes/step-io.d.ts +8 -4
- package/dist/recipes/step-io.d.ts.map +1 -1
- package/dist/recipes/step-io.js.map +1 -1
- package/dist/rpc/copilot-runtime.d.ts +1 -1
- package/dist/rpc/copilot-runtime.d.ts.map +1 -1
- package/dist/rpc/dispatch.d.ts +10 -6
- package/dist/rpc/dispatch.d.ts.map +1 -1
- package/dist/rpc/native-session.d.ts +1 -0
- package/dist/rpc/native-session.d.ts.map +1 -1
- package/dist/rpc/native-session.js.map +1 -1
- package/dist/rpc/roadmap.d.ts +2 -0
- package/dist/rpc/roadmap.d.ts.map +1 -1
- package/dist/rpc/run.d.ts +5 -3
- package/dist/rpc/run.d.ts.map +1 -1
- package/dist/rpc/run.js.map +1 -1
- package/dist/rpc/slot.d.ts +1 -0
- package/dist/rpc/slot.d.ts.map +1 -1
- package/dist/rpc/tmux.d.ts +10 -0
- package/dist/rpc/tmux.d.ts.map +1 -1
- package/dist/runs/ci-decision-context.d.ts +40 -0
- package/dist/runs/ci-decision-context.d.ts.map +1 -0
- package/dist/runs/ci-decision-context.js +129 -0
- package/dist/runs/ci-decision-context.js.map +1 -0
- package/dist/runs/decision-resolution.d.ts +37 -1
- package/dist/runs/decision-resolution.d.ts.map +1 -1
- package/dist/runs/decision-resolution.js +44 -1
- package/dist/runs/decision-resolution.js.map +1 -1
- package/dist/runs/family-iteration-ledger.js +1 -1
- package/dist/runs/family-iteration-ledger.js.map +1 -1
- package/dist/runs/publish-approval.d.ts +20 -0
- package/dist/runs/publish-approval.d.ts.map +1 -0
- package/dist/runs/publish-approval.js +29 -0
- package/dist/runs/publish-approval.js.map +1 -0
- package/dist/runs/review-chain.d.ts +2 -2
- package/dist/runs/review-chain.d.ts.map +1 -1
- package/dist/runs/review-chain.js +4 -4
- package/dist/runs/review-chain.js.map +1 -1
- package/dist/runs/review-curation.d.ts +51 -0
- package/dist/runs/review-curation.d.ts.map +1 -0
- package/dist/runs/review-curation.js +138 -0
- package/dist/runs/review-curation.js.map +1 -0
- package/dist/runs/review-policy.d.ts +9 -0
- package/dist/runs/review-policy.d.ts.map +1 -0
- package/dist/runs/review-policy.js +34 -0
- package/dist/runs/review-policy.js.map +1 -0
- package/dist/runs/review-retries.d.ts +10 -10
- package/dist/runs/review-retries.d.ts.map +1 -1
- package/dist/runs/review-retries.js +17 -22
- package/dist/runs/review-retries.js.map +1 -1
- package/dist/runs/slot-resolution.js +1 -1
- package/dist/runs/slot-resolution.js.map +1 -1
- package/dist/transport/signal.d.ts +3 -3
- package/dist/transport/signal.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +9 -2
- package/schemas/recipe-v1.schema.json +113 -22
- package/scripts/acceptance.d.mts +16 -0
- package/scripts/acceptance.mjs +233 -0
package/dist/recipe/document.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
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';
|
|
6
|
+
import { hasRecipeTemplate, replaceRecipeTemplates } from './template.js';
|
|
4
7
|
import { extractWorkflow, getRecipeActionParams, getRecipeWorkflowActionEntries, validateRecipeActionCases, validateRecipeCalls, validateWorkflowGraph, } from './workflow.js';
|
|
5
8
|
const RECIPE_FIELDS = new Set([
|
|
6
9
|
'$schema',
|
|
@@ -23,11 +26,11 @@ export function validateResolvedRecipeActionNode(node, manifest, options) {
|
|
|
23
26
|
addFinding(ctx, 'error', 'recipe.action_schema_missing', 'node.action', `Action ${node.action} must declare a parameter schema in the runner manifest.`);
|
|
24
27
|
return finishResult(ctx);
|
|
25
28
|
}
|
|
26
|
-
ctx.findings.push(...validateRecipeParams(getRecipeActionParams(node), contract.schema).findings);
|
|
29
|
+
ctx.findings.push(...validateRecipeParams(getRecipeActionParams(node), contract.schema, options).findings);
|
|
27
30
|
const adapter = options?.adapter;
|
|
28
31
|
const adapterSchema = adapter ? contract.adapterSchemas?.[adapter] : undefined;
|
|
29
32
|
if (adapterSchema) {
|
|
30
|
-
const paramsResult = validateRecipeParams(getRecipeActionParams(node), adapterSchema);
|
|
33
|
+
const paramsResult = validateRecipeParams(getRecipeActionParams(node), adapterSchema, options);
|
|
31
34
|
ctx.findings.push(...paramsResult.findings.map((finding) => ({
|
|
32
35
|
...rebaseFinding(finding, 'node'),
|
|
33
36
|
code: 'recipe.action_params_not_supported_by_adapter',
|
|
@@ -87,6 +90,31 @@ export function validateRecipeWithManifest(recipe, manifest, options) {
|
|
|
87
90
|
return finishResult(ctx);
|
|
88
91
|
}
|
|
89
92
|
function validateOfficialActionRelationships(ctx, action, node, path) {
|
|
93
|
+
if (action === 'watch_logs') {
|
|
94
|
+
const timeout = node.timeout_ms;
|
|
95
|
+
if (timeout !== undefined &&
|
|
96
|
+
!(typeof timeout === 'string' && hasRecipeTemplate(timeout)) &&
|
|
97
|
+
(typeof timeout !== 'number' || !Number.isInteger(timeout) || timeout < 0 || timeout > 60_000)) {
|
|
98
|
+
addFinding(ctx, 'error', 'recipe.invalid_log_window', `${path}.timeout_ms`, 'watch_logs.timeout_ms must be an integer from 0 through 60000.');
|
|
99
|
+
}
|
|
100
|
+
if (typeof timeout === 'number' &&
|
|
101
|
+
timeout > 0 &&
|
|
102
|
+
(typeof node.contains !== 'string' || node.contains.length === 0)) {
|
|
103
|
+
addFinding(ctx, 'error', 'recipe.missing_log_condition', `${path}.contains`, 'A positive watch_logs.timeout_ms requires nonempty contains.');
|
|
104
|
+
}
|
|
105
|
+
if (node.scope !== 'file' && typeof node.path === 'string') {
|
|
106
|
+
let outputDependent = false;
|
|
107
|
+
replaceRecipeTemplates(node.path, (reference, template) => {
|
|
108
|
+
if (reference.source === 'outputs')
|
|
109
|
+
outputDependent = true;
|
|
110
|
+
return template;
|
|
111
|
+
});
|
|
112
|
+
if (outputDependent) {
|
|
113
|
+
addFinding(ctx, 'error', 'recipe.unbound_run_log_path', `${path}.path`, 'Output-derived watch_logs paths require explicit scope=file; run paths must resolve before producers execute.');
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
90
118
|
if (action !== 'ui.pan' && action !== 'ui.drag')
|
|
91
119
|
return;
|
|
92
120
|
const hasPath = hasOwn(node, 'path');
|
|
@@ -123,62 +151,63 @@ export function validateRecipeDocument(recipe, options) {
|
|
|
123
151
|
const workflow = extractWorkflow(ctx, recipe);
|
|
124
152
|
if (workflow) {
|
|
125
153
|
validateWorkflowGraph(ctx, workflow);
|
|
154
|
+
if (options?.lintIntent) {
|
|
155
|
+
for (const [id, node] of Object.entries(workflow.nodes)) {
|
|
156
|
+
if (typeof node.intent !== 'string')
|
|
157
|
+
continue;
|
|
158
|
+
const length = Array.from(node.intent.trim()).length;
|
|
159
|
+
if (length > RECIPE_INTENT_WARN_LENGTH) {
|
|
160
|
+
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}.`);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
126
164
|
validateRecipeCalls(ctx, workflow, {
|
|
127
165
|
...(options?.externalRecipeIds ? { externalRecipeIds: options.externalRecipeIds } : {}),
|
|
128
166
|
skipResolution: options?.skipRecipeCallResolution === true,
|
|
129
167
|
});
|
|
130
|
-
|
|
168
|
+
const parentIds = new Set(Array.isArray(recipe.proofTargets)
|
|
169
|
+
? recipe.proofTargets
|
|
170
|
+
.filter(isRecord)
|
|
171
|
+
.filter((target) => isNonEmptyString(target.parentId))
|
|
172
|
+
.map((target) => normalizeRecipeClaimId(String(target.parentId)))
|
|
173
|
+
: []);
|
|
174
|
+
validateProofLinks(ctx, workflow.nodes, proofTargetIds, parentIds);
|
|
131
175
|
}
|
|
132
176
|
return finishResult(ctx);
|
|
133
177
|
}
|
|
134
178
|
function validateProofTargets(ctx, value) {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
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;
|
|
179
|
+
ctx.findings.push(...validateRecipeClaimDeclarations(value).findings);
|
|
180
|
+
return new Set(Array.isArray(value)
|
|
181
|
+
? value
|
|
182
|
+
.filter(isRecord)
|
|
183
|
+
.filter((target) => isNonEmptyString(target.id))
|
|
184
|
+
.map((target) => normalizeRecipeClaimId(String(target.id)))
|
|
185
|
+
: []);
|
|
165
186
|
}
|
|
166
|
-
function validateProofLinks(ctx, nodes, declared) {
|
|
187
|
+
function validateProofLinks(ctx, nodes, declared, parents) {
|
|
167
188
|
const covered = new Set();
|
|
168
189
|
for (const [nodeId, node] of Object.entries(nodes)) {
|
|
190
|
+
if (node.action === 'call' && isRecord(node.claimBindings)) {
|
|
191
|
+
for (const target of Object.values(node.claimBindings)) {
|
|
192
|
+
if (isNonEmptyString(target) && declared.has(normalizeRecipeClaimId(target)))
|
|
193
|
+
covered.add(normalizeRecipeClaimId(target));
|
|
194
|
+
else
|
|
195
|
+
addFinding(ctx, 'error', 'recipe.undeclared_proof_target', `workflow.nodes.${nodeId}.claimBindings`, 'Claim binding must name a registered parent claim.');
|
|
196
|
+
}
|
|
197
|
+
}
|
|
169
198
|
if (!Array.isArray(node.proves))
|
|
170
199
|
continue;
|
|
171
200
|
node.proves.forEach((target, index) => {
|
|
172
201
|
if (!isNonEmptyString(target))
|
|
173
202
|
return;
|
|
174
|
-
if (!declared.has(target)) {
|
|
203
|
+
if (!declared.has(normalizeRecipeClaimId(target))) {
|
|
175
204
|
addFinding(ctx, 'error', 'recipe.undeclared_proof_target', `workflow.nodes.${nodeId}.proves[${index}]`, `Proof target ${target} is not declared by recipe.proofTargets.`);
|
|
176
205
|
}
|
|
177
|
-
covered.add(target);
|
|
206
|
+
covered.add(normalizeRecipeClaimId(target));
|
|
178
207
|
});
|
|
179
208
|
}
|
|
180
209
|
for (const target of declared) {
|
|
181
|
-
if (!covered.has(target)) {
|
|
210
|
+
if (!covered.has(target) && !parents.has(target)) {
|
|
182
211
|
addFinding(ctx, 'error', 'recipe.uncovered_proof_target', 'proofTargets', `Proof target ${target} is not covered by any workflow node.`);
|
|
183
212
|
}
|
|
184
213
|
}
|
|
@@ -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"}
|
package/dist/recipe/index.d.ts
CHANGED
|
@@ -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
|