yam-flow 2.6.0 → 2.8.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/AGENTS.md +1 -0
- package/CHANGELOG.md +51 -0
- package/COMMANDS.md +72 -5
- package/README.md +49 -9
- package/ROADMAP.md +20 -7
- package/dist/bin/yam.js +616 -68
- package/dist/lib/external-updates.d.ts +9 -0
- package/dist/lib/external-updates.js +232 -4
- package/dist/lib/media-provider-receipt.d.ts +79 -0
- package/dist/lib/media-provider-receipt.js +498 -0
- package/dist/lib/next-step.d.ts +61 -0
- package/dist/lib/next-step.js +340 -0
- package/dist/lib/release-auth-readiness.d.ts +81 -0
- package/dist/lib/release-auth-readiness.js +106 -0
- package/dist/lib/release-registry-status.d.ts +18 -0
- package/dist/lib/release-registry-status.js +37 -0
- package/dist/lib/scout-receipt.d.ts +89 -0
- package/dist/lib/scout-receipt.js +542 -0
- package/dist/lib/skill-installation.d.ts +30 -0
- package/dist/lib/skill-installation.js +738 -110
- package/dist/lib/trust-kernel.d.ts +2 -0
- package/dist/lib/trust-kernel.js +21 -2
- package/dist/lib/verification-closure.d.ts +97 -0
- package/dist/lib/verification-closure.js +728 -0
- package/package.json +23 -3
- package/references/final-report.md +15 -1
- package/references/next-step.md +67 -0
- package/references/scout-wide-scan.md +16 -0
- package/references/study-note.md +4 -2
- package/references/tool-trust-layer.md +2 -0
- package/skills/deep/SKILL.md +2 -0
- package/skills/mission/SKILL.md +2 -0
- package/skills/quick/SKILL.md +1 -0
- package/skills/scout/SKILL.md +19 -9
- package/skills/ueye/SKILL.md +1 -0
- package/src/bin/yam.ts +615 -64
- package/src/lib/external-updates.ts +262 -4
- package/src/lib/media-provider-receipt.ts +548 -0
- package/src/lib/next-step.ts +397 -0
- package/src/lib/release-auth-readiness.ts +148 -0
- package/src/lib/release-registry-status.ts +55 -0
- package/src/lib/scout-receipt.ts +593 -0
- package/src/lib/skill-installation.ts +930 -108
- package/src/lib/trust-kernel.ts +25 -2
- package/src/lib/verification-closure.ts +738 -0
- package/yam.manifest.json +4 -3
package/src/lib/trust-kernel.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { verifyStrictGateResult } from './gate-result.js';
|
|
2
|
+
import { buildNextStep } from './next-step.js';
|
|
3
|
+
import type { NextStepInput, NextStepReceipt } from './next-step.js';
|
|
2
4
|
|
|
3
5
|
export const TRUTH_STATUSES = Object.freeze([
|
|
4
6
|
'verified',
|
|
@@ -273,6 +275,7 @@ export interface LoopReport {
|
|
|
273
275
|
side_effects: string[];
|
|
274
276
|
avoidance_note: string;
|
|
275
277
|
study_note: StudyNote;
|
|
278
|
+
next_step: NextStepReceipt | null;
|
|
276
279
|
}
|
|
277
280
|
|
|
278
281
|
export interface UeyeRunReport {
|
|
@@ -784,13 +787,32 @@ export function buildLoopReport(input: Partial<LoopReport> & Record<string, unkn
|
|
|
784
787
|
const uncoveredRequirements = asList(input.uncovered_requirements || input.uncovered_requirement);
|
|
785
788
|
const blockers = asList(input.blockers || input.blocked);
|
|
786
789
|
const blockedBy = asList(input.blocked_by);
|
|
787
|
-
const
|
|
790
|
+
const requestedBlockedKind = shortText(input.blocked_kind);
|
|
788
791
|
const failureCause = shortText(input.failure_cause);
|
|
789
792
|
const recoveryHint = shortText(input.recovery_hint);
|
|
790
793
|
const avoidanceNote = shortText(input.avoidance_note);
|
|
791
794
|
const evidenceStamp = shortText(input.evidence_stamp || input.source_digest, 320);
|
|
792
795
|
const sourceDigest = shortText(input.source_digest || input.evidence_stamp, 320);
|
|
793
796
|
const hasBlockedStage = stages.some((stage) => stage.status === 'blocked' || stage.status === 'failed');
|
|
797
|
+
const nextStepSupplied = input.next_step !== undefined && input.next_step !== null;
|
|
798
|
+
const nextStep = nextStepSupplied ? buildNextStep(input.next_step as unknown as NextStepInput) : null;
|
|
799
|
+
const nextStepRequired = touchedFiles.length > 0;
|
|
800
|
+
const nextStepBlocked = (nextStepRequired && !nextStep)
|
|
801
|
+
|| Boolean(nextStep && (!nextStep.contract_valid || nextStep.truth_status === 'blocked'));
|
|
802
|
+
if (nextStepBlocked) {
|
|
803
|
+
blockers.push(!nextStep
|
|
804
|
+
? 'next_step_missing_for_changed_artifacts'
|
|
805
|
+
: `next_step_contract_blocked: ${nextStep.contract_errors[0] || nextStep.truth_status}`);
|
|
806
|
+
}
|
|
807
|
+
const blockedKind = shortText(requestedBlockedKind || (
|
|
808
|
+
readinessState === 'blocked'
|
|
809
|
+
? 'readiness_blocked'
|
|
810
|
+
: uncoveredRequirements.length
|
|
811
|
+
? 'requirement_uncovered'
|
|
812
|
+
: blockers.length || blockedBy.length
|
|
813
|
+
? 'evidence_missing'
|
|
814
|
+
: ''
|
|
815
|
+
));
|
|
794
816
|
const hasBlockerSignal = Boolean(blockers.length || blockedBy.length || blockedKind || uncoveredRequirements.length || readinessState === 'blocked');
|
|
795
817
|
const requestedTruth = isTruthStatus(input.truth_status) ? input.truth_status : '';
|
|
796
818
|
const derivedTruth: TruthStatus = hasBlockerSignal || hasBlockedStage ? 'blocked'
|
|
@@ -844,7 +866,8 @@ export function buildLoopReport(input: Partial<LoopReport> & Record<string, unkn
|
|
|
844
866
|
scope_owner: normalizeOwnerRoute(input.scope_owner || input.owner),
|
|
845
867
|
side_effects: asList(input.side_effects || input.side_effect),
|
|
846
868
|
avoidance_note: avoidanceNote,
|
|
847
|
-
study_note: studyNote
|
|
869
|
+
study_note: studyNote,
|
|
870
|
+
next_step: nextStep
|
|
848
871
|
};
|
|
849
872
|
}
|
|
850
873
|
|