@shapeshift-labs/frontier-swarm-codex 0.5.117 → 0.5.119
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/README.md +59 -3
- package/dist/apply.js +1 -1
- package/dist/apply.js.map +1 -1
- package/dist/calibration-feedback.d.ts.map +1 -1
- package/dist/calibration-feedback.js +57 -2
- package/dist/calibration-feedback.js.map +1 -1
- package/dist/cleanup.js +1 -0
- package/dist/cleanup.js.map +1 -1
- package/dist/cli-args.d.ts +72 -0
- package/dist/cli-args.d.ts.map +1 -0
- package/dist/cli-args.js +296 -0
- package/dist/cli-args.js.map +1 -0
- package/dist/cli-help.d.ts.map +1 -1
- package/dist/cli-help.js +14 -0
- package/dist/cli-help.js.map +1 -1
- package/dist/cli.js +58 -183
- package/dist/cli.js.map +1 -1
- package/dist/codex-adaptive-feedback.d.ts.map +1 -1
- package/dist/codex-adaptive-feedback.js +98 -3
- package/dist/codex-adaptive-feedback.js.map +1 -1
- package/dist/codex-executor.d.ts.map +1 -1
- package/dist/codex-executor.js +30 -3
- package/dist/codex-executor.js.map +1 -1
- package/dist/codex-prompt.d.ts.map +1 -1
- package/dist/codex-prompt.js +58 -0
- package/dist/codex-prompt.js.map +1 -1
- package/dist/codex-run-metadata.d.ts +34 -0
- package/dist/codex-run-metadata.d.ts.map +1 -0
- package/dist/codex-run-metadata.js +29 -0
- package/dist/codex-run-metadata.js.map +1 -0
- package/dist/codex-run-swarm.d.ts +4 -0
- package/dist/codex-run-swarm.d.ts.map +1 -0
- package/dist/codex-run-swarm.js +69 -0
- package/dist/codex-run-swarm.js.map +1 -0
- package/dist/codex-run.d.ts +3 -3
- package/dist/codex-run.d.ts.map +1 -1
- package/dist/codex-run.js +146 -133
- package/dist/codex-run.js.map +1 -1
- package/dist/codex-tournament-strategy.d.ts +10 -0
- package/dist/codex-tournament-strategy.d.ts.map +1 -1
- package/dist/codex-tournament-strategy.js +39 -0
- package/dist/codex-tournament-strategy.js.map +1 -1
- package/dist/codex-workspace-change-paths.d.ts +20 -0
- package/dist/codex-workspace-change-paths.d.ts.map +1 -0
- package/dist/codex-workspace-change-paths.js +215 -0
- package/dist/codex-workspace-change-paths.js.map +1 -0
- package/dist/codex-workspace-changes.d.ts +12 -12
- package/dist/codex-workspace-changes.d.ts.map +1 -1
- package/dist/codex-workspace-changes.js +19 -122
- package/dist/codex-workspace-changes.js.map +1 -1
- package/dist/codex-workspace-restore.d.ts +15 -0
- package/dist/codex-workspace-restore.d.ts.map +1 -0
- package/dist/codex-workspace-restore.js +66 -0
- package/dist/codex-workspace-restore.js.map +1 -0
- package/dist/codex-workspace-write-fence.d.ts +21 -0
- package/dist/codex-workspace-write-fence.d.ts.map +1 -0
- package/dist/codex-workspace-write-fence.js +155 -0
- package/dist/codex-workspace-write-fence.js.map +1 -0
- package/dist/codex-workspace.d.ts +5 -1
- package/dist/codex-workspace.d.ts.map +1 -1
- package/dist/codex-workspace.js +46 -2
- package/dist/codex-workspace.js.map +1 -1
- package/dist/collect-artifact-store.d.ts +14 -0
- package/dist/collect-artifact-store.d.ts.map +1 -0
- package/dist/collect-artifact-store.js +207 -0
- package/dist/collect-artifact-store.js.map +1 -0
- package/dist/collect-bundle-reasons.d.ts +18 -0
- package/dist/collect-bundle-reasons.d.ts.map +1 -0
- package/dist/collect-bundle-reasons.js +222 -0
- package/dist/collect-bundle-reasons.js.map +1 -0
- package/dist/collect-bundle-staleness.d.ts +10 -0
- package/dist/collect-bundle-staleness.d.ts.map +1 -0
- package/dist/collect-bundle-staleness.js +98 -0
- package/dist/collect-bundle-staleness.js.map +1 -0
- package/dist/collect-bundles.d.ts +8 -10
- package/dist/collect-bundles.d.ts.map +1 -1
- package/dist/collect-bundles.js +28 -115
- package/dist/collect-bundles.js.map +1 -1
- package/dist/collect-dashboard-quality.d.ts +5 -0
- package/dist/collect-dashboard-quality.d.ts.map +1 -0
- package/dist/collect-dashboard-quality.js +256 -0
- package/dist/collect-dashboard-quality.js.map +1 -0
- package/dist/collect-dashboard.d.ts +4 -3
- package/dist/collect-dashboard.d.ts.map +1 -1
- package/dist/collect-dashboard.js +37 -3
- package/dist/collect-dashboard.js.map +1 -1
- package/dist/collect-evidence.d.ts.map +1 -1
- package/dist/collect-evidence.js +13 -2
- package/dist/collect-evidence.js.map +1 -1
- package/dist/collect-finalize.d.ts +15 -0
- package/dist/collect-finalize.d.ts.map +1 -0
- package/dist/collect-finalize.js +75 -0
- package/dist/collect-finalize.js.map +1 -0
- package/dist/collect-landed.d.ts +7 -0
- package/dist/collect-landed.d.ts.map +1 -0
- package/dist/collect-landed.js +171 -0
- package/dist/collect-landed.js.map +1 -0
- package/dist/collect-noise.d.ts +6 -0
- package/dist/collect-noise.d.ts.map +1 -0
- package/dist/collect-noise.js +131 -0
- package/dist/collect-noise.js.map +1 -0
- package/dist/collect-overlaps.d.ts +3 -0
- package/dist/collect-overlaps.d.ts.map +1 -0
- package/dist/collect-overlaps.js +8 -0
- package/dist/collect-overlaps.js.map +1 -0
- package/dist/collect-pids.d.ts +4 -0
- package/dist/collect-pids.d.ts.map +1 -0
- package/dist/collect-pids.js +33 -0
- package/dist/collect-pids.js.map +1 -0
- package/dist/collect-setup.d.ts +4 -0
- package/dist/collect-setup.d.ts.map +1 -0
- package/dist/collect-setup.js +20 -0
- package/dist/collect-setup.js.map +1 -0
- package/dist/collect-terminal-state.d.ts +14 -0
- package/dist/collect-terminal-state.d.ts.map +1 -0
- package/dist/collect-terminal-state.js +113 -0
- package/dist/collect-terminal-state.js.map +1 -0
- package/dist/collect-workspace-only.d.ts +10 -0
- package/dist/collect-workspace-only.d.ts.map +1 -0
- package/dist/collect-workspace-only.js +289 -0
- package/dist/collect-workspace-only.js.map +1 -0
- package/dist/collect-workspace-proof.d.ts +3 -0
- package/dist/collect-workspace-proof.d.ts.map +1 -0
- package/dist/collect-workspace-proof.js +24 -0
- package/dist/collect-workspace-proof.js.map +1 -0
- package/dist/collect-workspace-recovery.d.ts +22 -0
- package/dist/collect-workspace-recovery.d.ts.map +1 -0
- package/dist/collect-workspace-recovery.js +94 -0
- package/dist/collect-workspace-recovery.js.map +1 -0
- package/dist/collect.d.ts +1 -2
- package/dist/collect.d.ts.map +1 -1
- package/dist/collect.js +125 -116
- package/dist/collect.js.map +1 -1
- package/dist/common.d.ts +5 -0
- package/dist/common.d.ts.map +1 -1
- package/dist/common.js +54 -1
- package/dist/common.js.map +1 -1
- package/dist/constants.d.ts +6 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +6 -0
- package/dist/constants.js.map +1 -1
- package/dist/context-budget.d.ts.map +1 -1
- package/dist/context-budget.js +49 -6
- package/dist/context-budget.js.map +1 -1
- package/dist/continuation-adaptive-routing.d.ts +7 -0
- package/dist/continuation-adaptive-routing.d.ts.map +1 -0
- package/dist/continuation-adaptive-routing.js +129 -0
- package/dist/continuation-adaptive-routing.js.map +1 -0
- package/dist/continuation-child-backlogs.d.ts +11 -0
- package/dist/continuation-child-backlogs.d.ts.map +1 -0
- package/dist/continuation-child-backlogs.js +48 -0
- package/dist/continuation-child-backlogs.js.map +1 -0
- package/dist/continuation-feedback.d.ts +41 -0
- package/dist/continuation-feedback.d.ts.map +1 -0
- package/dist/continuation-feedback.js +294 -0
- package/dist/continuation-feedback.js.map +1 -0
- package/dist/continuation-human-actions.d.ts +15 -0
- package/dist/continuation-human-actions.d.ts.map +1 -0
- package/dist/continuation-human-actions.js +23 -0
- package/dist/continuation-human-actions.js.map +1 -0
- package/dist/continuation-job-routing-summary.d.ts +4 -0
- package/dist/continuation-job-routing-summary.d.ts.map +1 -0
- package/dist/continuation-job-routing-summary.js +47 -0
- package/dist/continuation-job-routing-summary.js.map +1 -0
- package/dist/continuation-task-source.d.ts +10 -0
- package/dist/continuation-task-source.d.ts.map +1 -0
- package/dist/continuation-task-source.js +11 -0
- package/dist/continuation-task-source.js.map +1 -0
- package/dist/continuation-terminal-outcomes.d.ts +27 -0
- package/dist/continuation-terminal-outcomes.d.ts.map +1 -0
- package/dist/continuation-terminal-outcomes.js +215 -0
- package/dist/continuation-terminal-outcomes.js.map +1 -0
- package/dist/continuation.d.ts +3 -0
- package/dist/continuation.d.ts.map +1 -0
- package/dist/continuation.js +266 -0
- package/dist/continuation.js.map +1 -0
- package/dist/dashboard-ui-constants.d.ts +6 -0
- package/dist/dashboard-ui-constants.d.ts.map +1 -0
- package/dist/dashboard-ui-constants.js +6 -0
- package/dist/dashboard-ui-constants.js.map +1 -0
- package/dist/dashboard-ui-health.d.ts +24 -0
- package/dist/dashboard-ui-health.d.ts.map +1 -0
- package/dist/dashboard-ui-health.js +175 -0
- package/dist/dashboard-ui-health.js.map +1 -0
- package/dist/dashboard-ui-human-actions.d.ts +3 -0
- package/dist/dashboard-ui-human-actions.d.ts.map +1 -0
- package/dist/dashboard-ui-human-actions.js +218 -0
- package/dist/dashboard-ui-human-actions.js.map +1 -0
- package/dist/dashboard-ui-jobs.d.ts +7 -0
- package/dist/dashboard-ui-jobs.d.ts.map +1 -0
- package/dist/dashboard-ui-jobs.js +232 -0
- package/dist/dashboard-ui-jobs.js.map +1 -0
- package/dist/dashboard-ui-lanes.d.ts +3 -0
- package/dist/dashboard-ui-lanes.d.ts.map +1 -0
- package/dist/dashboard-ui-lanes.js +17 -0
- package/dist/dashboard-ui-lanes.js.map +1 -0
- package/dist/dashboard-ui-metric-utils.d.ts +13 -0
- package/dist/dashboard-ui-metric-utils.d.ts.map +1 -0
- package/dist/dashboard-ui-metric-utils.js +52 -0
- package/dist/dashboard-ui-metric-utils.js.map +1 -0
- package/dist/dashboard-ui-quality.d.ts +4 -0
- package/dist/dashboard-ui-quality.d.ts.map +1 -0
- package/dist/dashboard-ui-quality.js +106 -0
- package/dist/dashboard-ui-quality.js.map +1 -0
- package/dist/dashboard-ui-semantic.d.ts +6 -0
- package/dist/dashboard-ui-semantic.d.ts.map +1 -0
- package/dist/dashboard-ui-semantic.js +84 -0
- package/dist/dashboard-ui-semantic.js.map +1 -0
- package/dist/dashboard-ui-sources.d.ts +9 -0
- package/dist/dashboard-ui-sources.d.ts.map +1 -0
- package/dist/dashboard-ui-sources.js +39 -0
- package/dist/dashboard-ui-sources.js.map +1 -0
- package/dist/dashboard-ui-steering.d.ts +4 -0
- package/dist/dashboard-ui-steering.d.ts.map +1 -0
- package/dist/dashboard-ui-steering.js +41 -0
- package/dist/dashboard-ui-steering.js.map +1 -0
- package/dist/dashboard-ui-summary.d.ts +6 -0
- package/dist/dashboard-ui-summary.d.ts.map +1 -0
- package/dist/dashboard-ui-summary.js +64 -0
- package/dist/dashboard-ui-summary.js.map +1 -0
- package/dist/dashboard-ui-time-series.d.ts +6 -0
- package/dist/dashboard-ui-time-series.d.ts.map +1 -0
- package/dist/dashboard-ui-time-series.js +191 -0
- package/dist/dashboard-ui-time-series.js.map +1 -0
- package/dist/dashboard-ui-types.d.ts +21 -0
- package/dist/dashboard-ui-types.d.ts.map +1 -0
- package/dist/dashboard-ui-types.js +2 -0
- package/dist/dashboard-ui-types.js.map +1 -0
- package/dist/dashboard-ui-values.d.ts +13 -0
- package/dist/dashboard-ui-values.d.ts.map +1 -0
- package/dist/dashboard-ui-values.js +57 -0
- package/dist/dashboard-ui-values.js.map +1 -0
- package/dist/dashboard-ui-workspace.d.ts +7 -0
- package/dist/dashboard-ui-workspace.d.ts.map +1 -0
- package/dist/dashboard-ui-workspace.js +131 -0
- package/dist/dashboard-ui-workspace.js.map +1 -0
- package/dist/dashboard-ui.d.ts +4 -0
- package/dist/dashboard-ui.d.ts.map +1 -0
- package/dist/dashboard-ui.js +139 -0
- package/dist/dashboard-ui.js.map +1 -0
- package/dist/dashboard.js +59 -3
- package/dist/dashboard.js.map +1 -1
- package/dist/human-actions.d.ts +46 -0
- package/dist/human-actions.d.ts.map +1 -0
- package/dist/human-actions.js +251 -0
- package/dist/human-actions.js.map +1 -0
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -92
- package/dist/index.js.map +1 -1
- package/dist/model-pricing.d.ts +49 -0
- package/dist/model-pricing.d.ts.map +1 -0
- package/dist/model-pricing.js +159 -0
- package/dist/model-pricing.js.map +1 -0
- package/dist/patch-score-semantic.d.ts.map +1 -1
- package/dist/patch-score-semantic.js +34 -30
- package/dist/patch-score-semantic.js.map +1 -1
- package/dist/plan.d.ts +6 -0
- package/dist/plan.d.ts.map +1 -0
- package/dist/plan.js +191 -0
- package/dist/plan.js.map +1 -0
- package/dist/query-io.d.ts +8 -0
- package/dist/query-io.d.ts.map +1 -0
- package/dist/query-io.js +46 -0
- package/dist/query-io.js.map +1 -0
- package/dist/query-landed.d.ts +20 -0
- package/dist/query-landed.d.ts.map +1 -0
- package/dist/query-landed.js +64 -0
- package/dist/query-landed.js.map +1 -0
- package/dist/query-matchers.d.ts +6 -0
- package/dist/query-matchers.d.ts.map +1 -0
- package/dist/query-matchers.js +160 -0
- package/dist/query-matchers.js.map +1 -0
- package/dist/query-signal-types.d.ts +32 -0
- package/dist/query-signal-types.d.ts.map +1 -0
- package/dist/query-signal-types.js +2 -0
- package/dist/query-signal-types.js.map +1 -0
- package/dist/query-signals.d.ts +12 -0
- package/dist/query-signals.d.ts.map +1 -0
- package/dist/query-signals.js +207 -0
- package/dist/query-signals.js.map +1 -0
- package/dist/query-status.d.ts +10 -0
- package/dist/query-status.d.ts.map +1 -0
- package/dist/query-status.js +115 -0
- package/dist/query-status.js.map +1 -0
- package/dist/query-summaries.d.ts +283 -0
- package/dist/query-summaries.d.ts.map +1 -0
- package/dist/query-summaries.js +195 -0
- package/dist/query-summaries.js.map +1 -0
- package/dist/query-types.d.ts +45 -0
- package/dist/query-types.d.ts.map +1 -0
- package/dist/query-types.js +2 -0
- package/dist/query-types.js.map +1 -0
- package/dist/query-values.d.ts +15 -0
- package/dist/query-values.d.ts.map +1 -0
- package/dist/query-values.js +73 -0
- package/dist/query-values.js.map +1 -0
- package/dist/query.d.ts +344 -41
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +38 -157
- package/dist/query.js.map +1 -1
- package/dist/score-calibration.d.ts.map +1 -1
- package/dist/score-calibration.js +52 -3
- package/dist/score-calibration.js.map +1 -1
- package/dist/score.js +1 -1
- package/dist/score.js.map +1 -1
- package/dist/semantic-edit-admission.d.ts +3 -0
- package/dist/semantic-edit-admission.d.ts.map +1 -1
- package/dist/semantic-edit-admission.js +90 -11
- package/dist/semantic-edit-admission.js.map +1 -1
- package/dist/semantic-edit-clean-eligibility.d.ts.map +1 -1
- package/dist/semantic-edit-clean-eligibility.js +22 -4
- package/dist/semantic-edit-clean-eligibility.js.map +1 -1
- package/dist/semantic-edit-script.d.ts.map +1 -1
- package/dist/semantic-edit-script.js +26 -5
- package/dist/semantic-edit-script.js.map +1 -1
- package/dist/semantic-import-layers.d.ts +1 -1
- package/dist/semantic-import-layers.d.ts.map +1 -1
- package/dist/semantic-import-layers.js +22 -6
- package/dist/semantic-import-layers.js.map +1 -1
- package/dist/semantic-import-lineage-signals.d.ts +12 -0
- package/dist/semantic-import-lineage-signals.d.ts.map +1 -0
- package/dist/semantic-import-lineage-signals.js +126 -0
- package/dist/semantic-import-lineage-signals.js.map +1 -0
- package/dist/semantic-import-lineage.d.ts.map +1 -1
- package/dist/semantic-import-lineage.js +120 -18
- package/dist/semantic-import-lineage.js.map +1 -1
- package/dist/semantic-import-proof.d.ts.map +1 -1
- package/dist/semantic-import-proof.js +16 -0
- package/dist/semantic-import-proof.js.map +1 -1
- package/dist/semantic-import-quality.d.ts.map +1 -1
- package/dist/semantic-import-quality.js +8 -0
- package/dist/semantic-import-quality.js.map +1 -1
- package/dist/semantic-import-readiness.d.ts +15 -0
- package/dist/semantic-import-readiness.d.ts.map +1 -0
- package/dist/semantic-import-readiness.js +214 -0
- package/dist/semantic-import-readiness.js.map +1 -0
- package/dist/semantic-import-sidecar.d.ts.map +1 -1
- package/dist/semantic-import-sidecar.js +6 -37
- package/dist/semantic-import-sidecar.js.map +1 -1
- package/dist/semantic-import.d.ts +4 -2
- package/dist/semantic-import.d.ts.map +1 -1
- package/dist/semantic-import.js +27 -10
- package/dist/semantic-import.js.map +1 -1
- package/dist/tournament-bandit-view.d.ts +16 -13
- package/dist/tournament-bandit-view.d.ts.map +1 -1
- package/dist/tournament-bandit-view.js +23 -3
- package/dist/tournament-bandit-view.js.map +1 -1
- package/dist/tournament-query.d.ts +35 -39
- package/dist/tournament-query.d.ts.map +1 -1
- package/dist/tournament-query.js +32 -6
- package/dist/tournament-query.js.map +1 -1
- package/dist/types-collection-quality.d.ts +112 -0
- package/dist/types-collection-quality.d.ts.map +1 -0
- package/dist/types-collection-quality.js +2 -0
- package/dist/types-collection-quality.js.map +1 -0
- package/dist/types-collection-score.d.ts +112 -0
- package/dist/types-collection-score.d.ts.map +1 -0
- package/dist/types-collection-score.js +2 -0
- package/dist/types-collection-score.js.map +1 -0
- package/dist/types-collection.d.ts +107 -112
- package/dist/types-collection.d.ts.map +1 -1
- package/dist/types-continuation.d.ts +151 -0
- package/dist/types-continuation.d.ts.map +1 -0
- package/dist/types-continuation.js +2 -0
- package/dist/types-continuation.js.map +1 -0
- package/dist/types-dashboard-metrics.d.ts +241 -0
- package/dist/types-dashboard-metrics.d.ts.map +1 -0
- package/dist/types-dashboard-metrics.js +2 -0
- package/dist/types-dashboard-metrics.js.map +1 -0
- package/dist/types-dashboard.d.ts +277 -0
- package/dist/types-dashboard.d.ts.map +1 -0
- package/dist/types-dashboard.js +2 -0
- package/dist/types-dashboard.js.map +1 -0
- package/dist/types-evidence.d.ts +3 -0
- package/dist/types-evidence.d.ts.map +1 -1
- package/dist/types-run.d.ts +54 -1
- package/dist/types-run.d.ts.map +1 -1
- package/dist/types-score-calibration.d.ts +15 -0
- package/dist/types-score-calibration.d.ts.map +1 -1
- package/dist/types-semantic.d.ts +21 -12
- package/dist/types-semantic.d.ts.map +1 -1
- package/dist/types-workspace.d.ts +31 -1
- package/dist/types-workspace.d.ts.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import fs from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { FRONTIER_SWARM_CODEX_COLLECTION_KIND, FRONTIER_SWARM_CODEX_COLLECTION_VERSION } from './constants.js';
|
|
4
|
+
import { isObject } from './common.js';
|
|
5
|
+
import { createBoundedCodexArtifactStore } from './collect-artifact-store.js';
|
|
6
|
+
export function createCodexCollectSummary(input) {
|
|
7
|
+
const summary = {
|
|
8
|
+
total: input.mergeRecordCount,
|
|
9
|
+
'ready-to-apply': input.buckets['ready-to-apply'].length,
|
|
10
|
+
'needs-human-port': input.buckets['needs-human-port'].length,
|
|
11
|
+
'rerun-work': input.buckets['rerun-work'].length,
|
|
12
|
+
'failed-evidence': input.buckets['failed-evidence'].length,
|
|
13
|
+
'stale-against-head': input.buckets['stale-against-head'].length,
|
|
14
|
+
collectorGeneratedPatchCount: input.collectorGeneratedPatchCount
|
|
15
|
+
};
|
|
16
|
+
if (input.applyLedgerSummary) {
|
|
17
|
+
summary.landed = input.applyLedgerSummary.landed;
|
|
18
|
+
summary.landedJobIds = input.applyLedgerSummary.landedJobIds;
|
|
19
|
+
summary.applyLedger = input.applyLedgerSummary;
|
|
20
|
+
if (input.landedHealth)
|
|
21
|
+
summary.landedHealth = input.landedHealth;
|
|
22
|
+
}
|
|
23
|
+
return summary;
|
|
24
|
+
}
|
|
25
|
+
export function createCodexCollectResult(input) {
|
|
26
|
+
const landedHealth = input.landedHealth;
|
|
27
|
+
const summary = input.summary;
|
|
28
|
+
return {
|
|
29
|
+
kind: FRONTIER_SWARM_CODEX_COLLECTION_KIND,
|
|
30
|
+
version: FRONTIER_SWARM_CODEX_COLLECTION_VERSION,
|
|
31
|
+
ok: landedHealth
|
|
32
|
+
? landedHealth.remainingFailedEvidenceCount === 0 && landedHealth.remainingStaleCount === 0
|
|
33
|
+
: summary['failed-evidence'] === 0 && summary['stale-against-head'] === 0 && summary['rerun-work'] === 0,
|
|
34
|
+
...input
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export async function persistCodexCollectResult(input) {
|
|
38
|
+
const { result } = input;
|
|
39
|
+
await fs.mkdir(result.outDir, { recursive: true });
|
|
40
|
+
const collectionPath = path.join(result.outDir, 'collection.json');
|
|
41
|
+
await fs.writeFile(collectionPath, JSON.stringify(result, null, 2) + '\n');
|
|
42
|
+
await writeResultArtifactFiles(result);
|
|
43
|
+
const artifactStorePostProcessing = await createBoundedCodexArtifactStore({
|
|
44
|
+
collection: result,
|
|
45
|
+
collectionPath,
|
|
46
|
+
mode: input.artifactStoreMode ?? 'full',
|
|
47
|
+
timeoutMs: input.artifactStoreTimeoutMs
|
|
48
|
+
});
|
|
49
|
+
if (artifactStorePostProcessing.artifactStore)
|
|
50
|
+
result.artifactStore = artifactStorePostProcessing.artifactStore;
|
|
51
|
+
result.artifactStoreStatus = artifactStorePostProcessing.status;
|
|
52
|
+
result.metadata = {
|
|
53
|
+
...(isObject(result.metadata) ? result.metadata : {}),
|
|
54
|
+
collectExitGuard: artifactStorePostProcessing.status.guard
|
|
55
|
+
};
|
|
56
|
+
await fs.writeFile(collectionPath, JSON.stringify(result, null, 2) + '\n');
|
|
57
|
+
return result;
|
|
58
|
+
}
|
|
59
|
+
async function writeResultArtifactFiles(result) {
|
|
60
|
+
const writes = [
|
|
61
|
+
['merge-index.json', result.mergeIndex],
|
|
62
|
+
['queue-overlay.json', result.queueOverlay],
|
|
63
|
+
['strategy-tournament.json', result.strategyTournament],
|
|
64
|
+
['strategy-history.json', result.strategyHistory],
|
|
65
|
+
['tournament-adaptive-feedback.json', result.tournamentAdaptiveFeedback],
|
|
66
|
+
['evidence-index.json', result.evidenceIndex],
|
|
67
|
+
['merge-admission.json', result.admission],
|
|
68
|
+
['coordinator-query.json', result.dashboard],
|
|
69
|
+
['compact-dashboard.json', result.compactDashboard],
|
|
70
|
+
['queue-outcome-model.json', result.queueOutcomeModel],
|
|
71
|
+
['terminal-state.json', result.terminalState]
|
|
72
|
+
];
|
|
73
|
+
await Promise.all(writes.map(([file, value]) => fs.writeFile(path.join(result.outDir, file), JSON.stringify(value, null, 2) + '\n')));
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=collect-finalize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collect-finalize.js","sourceRoot":"","sources":["../src/collect-finalize.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { FrontierSwarmCoordinatorDashboard } from '@shapeshift-labs/frontier-swarm';
|
|
2
|
+
import type { FrontierCodexApplyLedgerSummary, FrontierCodexCollectBucket, FrontierCodexCollectedBundle, FrontierCodexCollectQualitySignals, FrontierCodexLandedHealthSummary } from './index.js';
|
|
3
|
+
export declare function readApplyLedgerSummary(collectionDir: string): Promise<FrontierCodexApplyLedgerSummary | undefined>;
|
|
4
|
+
export declare function attachApplyLedgerSummary(dashboard: FrontierSwarmCoordinatorDashboard, compactDashboard: unknown, applyLedger: FrontierCodexApplyLedgerSummary): void;
|
|
5
|
+
export declare function createLandedHealthSummary(applyLedger: FrontierCodexApplyLedgerSummary, buckets: Record<FrontierCodexCollectBucket, FrontierCodexCollectedBundle[]>): FrontierCodexLandedHealthSummary;
|
|
6
|
+
export declare function attachLandedHealthSummary(dashboard: FrontierSwarmCoordinatorDashboard, compactDashboard: unknown, qualitySignals: FrontierCodexCollectQualitySignals, landedHealth: FrontierCodexLandedHealthSummary): void;
|
|
7
|
+
//# sourceMappingURL=collect-landed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collect-landed.d.ts","sourceRoot":"","sources":["../src/collect-landed.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,iCAAiC,CAAC;AAEzF,OAAO,KAAK,EACV,+BAA+B,EAE/B,0BAA0B,EAC1B,4BAA4B,EAC5B,kCAAkC,EAClC,gCAAgC,EACjC,MAAM,YAAY,CAAC;AAUpB,wBAAsB,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,+BAA+B,GAAG,SAAS,CAAC,CAWxH;AAED,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,iCAAiC,EAC5C,gBAAgB,EAAE,OAAO,EACzB,WAAW,EAAE,+BAA+B,GAC3C,IAAI,CAWN;AAED,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,+BAA+B,EAC5C,OAAO,EAAE,MAAM,CAAC,0BAA0B,EAAE,4BAA4B,EAAE,CAAC,GAC1E,gCAAgC,CAsClC;AAED,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,iCAAiC,EAC5C,gBAAgB,EAAE,OAAO,EACzB,cAAc,EAAE,kCAAkC,EAClD,YAAY,EAAE,gCAAgC,GAC7C,IAAI,CAgCN"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import fs from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { isObject, pathExists, uniqueStrings } from './common.js';
|
|
4
|
+
const COLLECT_BUCKETS = [
|
|
5
|
+
'ready-to-apply',
|
|
6
|
+
'needs-human-port',
|
|
7
|
+
'rerun-work',
|
|
8
|
+
'failed-evidence',
|
|
9
|
+
'stale-against-head'
|
|
10
|
+
];
|
|
11
|
+
export async function readApplyLedgerSummary(collectionDir) {
|
|
12
|
+
const candidates = [
|
|
13
|
+
path.join(collectionDir, 'apply-ledger', 'apply-ledger.json'),
|
|
14
|
+
path.join(collectionDir, 'apply-ledger.json')
|
|
15
|
+
];
|
|
16
|
+
for (const candidate of candidates) {
|
|
17
|
+
if (!await pathExists(candidate))
|
|
18
|
+
continue;
|
|
19
|
+
const ledger = JSON.parse(await fs.readFile(candidate, 'utf8'));
|
|
20
|
+
return summarizeApplyLedger(ledger, candidate);
|
|
21
|
+
}
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
export function attachApplyLedgerSummary(dashboard, compactDashboard, applyLedger) {
|
|
25
|
+
const mutableDashboard = dashboard;
|
|
26
|
+
const dashboardMetadata = mutableDashboard;
|
|
27
|
+
mutableDashboard.summary.applyLedger = applyLedger;
|
|
28
|
+
mutableDashboard.summary.applyLedgerLandedCount = applyLedger.landed;
|
|
29
|
+
mutableDashboard.summary.landedJobIds = applyLedger.landedJobIds;
|
|
30
|
+
dashboardMetadata.metadata = { ...(dashboardMetadata.metadata ?? {}), applyLedger };
|
|
31
|
+
const compact = compactDashboard;
|
|
32
|
+
compact.applyLedger = applyLedger;
|
|
33
|
+
compact.landedJobIds = applyLedger.landedJobIds;
|
|
34
|
+
compact.landedCount = applyLedger.landed;
|
|
35
|
+
}
|
|
36
|
+
export function createLandedHealthSummary(applyLedger, buckets) {
|
|
37
|
+
const landedJobSet = new Set(applyLedger.landedJobIds);
|
|
38
|
+
const bucketJobIds = collectBucketJobIds(buckets);
|
|
39
|
+
const landedBucketJobIds = mapBucketJobIds(bucketJobIds, (jobId) => landedJobSet.has(jobId));
|
|
40
|
+
const remainingBucketJobIds = mapBucketJobIds(bucketJobIds, (jobId) => !landedJobSet.has(jobId));
|
|
41
|
+
const reviewPressureJobIds = uniqueStrings([
|
|
42
|
+
...remainingBucketJobIds['needs-human-port'],
|
|
43
|
+
...remainingBucketJobIds['rerun-work'],
|
|
44
|
+
...remainingBucketJobIds['failed-evidence'],
|
|
45
|
+
...remainingBucketJobIds['stale-against-head']
|
|
46
|
+
]);
|
|
47
|
+
return {
|
|
48
|
+
successfulOutputCount: applyLedger.landed,
|
|
49
|
+
appliedJobCount: applyLedger.appliedJobIds.length,
|
|
50
|
+
committedJobCount: applyLedger.committedJobIds.length,
|
|
51
|
+
failedApplyJobCount: applyLedger.failedJobIds.length,
|
|
52
|
+
landedJobIds: applyLedger.landedJobIds,
|
|
53
|
+
appliedJobIds: applyLedger.appliedJobIds,
|
|
54
|
+
committedJobIds: applyLedger.committedJobIds,
|
|
55
|
+
failedApplyJobIds: applyLedger.failedJobIds,
|
|
56
|
+
bucketCounts: countBucketJobIds(bucketJobIds),
|
|
57
|
+
landedBucketCounts: countBucketJobIds(landedBucketJobIds),
|
|
58
|
+
landedBucketJobIds,
|
|
59
|
+
remainingBucketCounts: countBucketJobIds(remainingBucketJobIds),
|
|
60
|
+
remainingBucketJobIds,
|
|
61
|
+
landedNeedsHumanReviewCount: landedBucketJobIds['needs-human-port'].length,
|
|
62
|
+
landedNeedsHumanReviewJobIds: landedBucketJobIds['needs-human-port'],
|
|
63
|
+
remainingNeedsHumanReviewCount: remainingBucketJobIds['needs-human-port'].length,
|
|
64
|
+
remainingNeedsHumanReviewJobIds: remainingBucketJobIds['needs-human-port'],
|
|
65
|
+
remainingFailedEvidenceCount: remainingBucketJobIds['failed-evidence'].length,
|
|
66
|
+
remainingFailedEvidenceJobIds: remainingBucketJobIds['failed-evidence'],
|
|
67
|
+
remainingStaleCount: remainingBucketJobIds['stale-against-head'].length,
|
|
68
|
+
remainingStaleJobIds: remainingBucketJobIds['stale-against-head'],
|
|
69
|
+
remainingReadyToApplyCount: remainingBucketJobIds['ready-to-apply'].length,
|
|
70
|
+
remainingReadyToApplyJobIds: remainingBucketJobIds['ready-to-apply'],
|
|
71
|
+
reviewPressureCount: reviewPressureJobIds.length,
|
|
72
|
+
reviewPressureJobIds
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
export function attachLandedHealthSummary(dashboard, compactDashboard, qualitySignals, landedHealth) {
|
|
76
|
+
const mutableDashboard = dashboard;
|
|
77
|
+
const dashboardMetadata = mutableDashboard;
|
|
78
|
+
qualitySignals.landed = landedHealth;
|
|
79
|
+
qualitySignals.needsPort = { ...qualitySignals.needsPort, landedJobCount: landedHealth.landedNeedsHumanReviewCount, landedJobIds: landedHealth.landedNeedsHumanReviewJobIds, remainingJobCount: landedHealth.remainingNeedsHumanReviewCount, remainingJobIds: landedHealth.remainingNeedsHumanReviewJobIds };
|
|
80
|
+
qualitySignals.failure = { ...qualitySignals.failure, landedJobCount: landedHealth.landedBucketCounts['failed-evidence'], landedJobIds: landedHealth.landedBucketJobIds['failed-evidence'], remainingJobCount: landedHealth.remainingFailedEvidenceCount, remainingJobIds: landedHealth.remainingFailedEvidenceJobIds };
|
|
81
|
+
qualitySignals.stale = { ...qualitySignals.stale, landedJobCount: landedHealth.landedBucketCounts['stale-against-head'], landedJobIds: landedHealth.landedBucketJobIds['stale-against-head'], remainingJobCount: landedHealth.remainingStaleCount, remainingJobIds: landedHealth.remainingStaleJobIds };
|
|
82
|
+
const summary = mutableDashboard.summary;
|
|
83
|
+
summary.collectionQualitySignals = qualitySignals;
|
|
84
|
+
summary.collectionLandedSuccessCount = landedHealth.successfulOutputCount;
|
|
85
|
+
summary.collectionLandedAppliedCount = landedHealth.appliedJobCount;
|
|
86
|
+
summary.collectionLandedCommittedCount = landedHealth.committedJobCount;
|
|
87
|
+
summary.collectionFailedApplyCount = landedHealth.failedApplyJobCount;
|
|
88
|
+
summary.collectionLandedNeedsHumanReviewCount = landedHealth.landedNeedsHumanReviewCount;
|
|
89
|
+
summary.collectionRemainingNeedsHumanReviewCount = landedHealth.remainingNeedsHumanReviewCount;
|
|
90
|
+
summary.collectionRemainingFailedEvidenceCount = landedHealth.remainingFailedEvidenceCount;
|
|
91
|
+
summary.collectionRemainingStaleCount = landedHealth.remainingStaleCount;
|
|
92
|
+
summary.collectionRemainingReadyToApplyCount = landedHealth.remainingReadyToApplyCount;
|
|
93
|
+
summary.collectionReviewPressureCount = landedHealth.reviewPressureCount;
|
|
94
|
+
summary.collectionReviewPressureJobIds = landedHealth.reviewPressureJobIds;
|
|
95
|
+
dashboardMetadata.metadata = { ...(dashboardMetadata.metadata ?? {}), landedHealth };
|
|
96
|
+
Object.assign(compactDashboard, {
|
|
97
|
+
landedHealth,
|
|
98
|
+
successfulOutputCount: landedHealth.successfulOutputCount,
|
|
99
|
+
landedNeedsHumanReviewCount: landedHealth.landedNeedsHumanReviewCount,
|
|
100
|
+
remainingNeedsHumanReviewCount: landedHealth.remainingNeedsHumanReviewCount,
|
|
101
|
+
remainingFailedEvidenceCount: landedHealth.remainingFailedEvidenceCount,
|
|
102
|
+
remainingStaleCount: landedHealth.remainingStaleCount,
|
|
103
|
+
remainingReadyToApplyCount: landedHealth.remainingReadyToApplyCount,
|
|
104
|
+
reviewPressureCount: landedHealth.reviewPressureCount,
|
|
105
|
+
reviewPressureJobIds: landedHealth.reviewPressureJobIds
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
function summarizeApplyLedger(ledger, ledgerPath) {
|
|
109
|
+
const entries = Array.isArray(ledger.entries) ? ledger.entries : [];
|
|
110
|
+
const summary = isObject(ledger.summary) ? ledger.summary : {};
|
|
111
|
+
const appliedJobIds = uniqueStrings(entries.filter((entry) => entry.status === 'applied').map((entry) => entry.jobId));
|
|
112
|
+
const committedJobIds = uniqueStrings(entries.filter((entry) => entry.status === 'committed').map((entry) => entry.jobId));
|
|
113
|
+
const landedJobIds = uniqueStrings([...appliedJobIds, ...committedJobIds]);
|
|
114
|
+
const failedJobIds = uniqueStrings(entries.filter((entry) => entry.status === 'failed').map((entry) => entry.jobId));
|
|
115
|
+
const statusCount = (status) => entries.filter((entry) => entry.status === status).length;
|
|
116
|
+
return {
|
|
117
|
+
path: ledgerPath,
|
|
118
|
+
...(typeof ledger.generatedAt === 'number' ? { generatedAt: ledger.generatedAt } : {}),
|
|
119
|
+
...(typeof ledger.dryRun === 'boolean' ? { dryRun: ledger.dryRun } : {}),
|
|
120
|
+
total: ledgerSummaryCount(summary, 'total', entries.length),
|
|
121
|
+
checked: ledgerSummaryCount(summary, 'checked', statusCount('checked')),
|
|
122
|
+
applied: ledgerSummaryCount(summary, 'applied', statusCount('applied')),
|
|
123
|
+
committed: ledgerSummaryCount(summary, 'committed', statusCount('committed')),
|
|
124
|
+
skipped: ledgerSummaryCount(summary, 'skipped', statusCount('skipped')),
|
|
125
|
+
failed: ledgerSummaryCount(summary, 'failed', statusCount('failed')),
|
|
126
|
+
landed: landedJobIds.length,
|
|
127
|
+
appliedJobIds,
|
|
128
|
+
committedJobIds,
|
|
129
|
+
landedJobIds,
|
|
130
|
+
failedJobIds,
|
|
131
|
+
landedEntries: entries.filter((entry) => entry.status === 'applied' || entry.status === 'committed').map((entry) => ({
|
|
132
|
+
jobId: entry.jobId,
|
|
133
|
+
status: entry.status,
|
|
134
|
+
bundlePath: entry.bundlePath,
|
|
135
|
+
...(entry.patchPath ? { patchPath: entry.patchPath } : {}),
|
|
136
|
+
...(entry.branchName ? { branchName: entry.branchName } : {}),
|
|
137
|
+
...(entry.commit ? { commit: entry.commit } : {})
|
|
138
|
+
}))
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
function collectBucketJobIds(buckets) {
|
|
142
|
+
return {
|
|
143
|
+
'ready-to-apply': buckets['ready-to-apply'].map((entry) => entry.jobId),
|
|
144
|
+
'needs-human-port': buckets['needs-human-port'].map((entry) => entry.jobId),
|
|
145
|
+
'rerun-work': buckets['rerun-work'].map((entry) => entry.jobId),
|
|
146
|
+
'failed-evidence': buckets['failed-evidence'].map((entry) => entry.jobId),
|
|
147
|
+
'stale-against-head': buckets['stale-against-head'].map((entry) => entry.jobId)
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
function mapBucketJobIds(jobIds, include) {
|
|
151
|
+
const out = { 'ready-to-apply': [], 'needs-human-port': [], 'rerun-work': [], 'failed-evidence': [], 'stale-against-head': [] };
|
|
152
|
+
for (const bucket of COLLECT_BUCKETS)
|
|
153
|
+
out[bucket] = jobIds[bucket].filter((jobId) => include(jobId, bucket));
|
|
154
|
+
return out;
|
|
155
|
+
}
|
|
156
|
+
function countBucketJobIds(jobIds) {
|
|
157
|
+
return {
|
|
158
|
+
'ready-to-apply': jobIds['ready-to-apply'].length,
|
|
159
|
+
'needs-human-port': jobIds['needs-human-port'].length,
|
|
160
|
+
'rerun-work': jobIds['rerun-work'].length,
|
|
161
|
+
'failed-evidence': jobIds['failed-evidence'].length,
|
|
162
|
+
'stale-against-head': jobIds['stale-against-head'].length
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
function ledgerSummaryCount(summary, key, fallback) {
|
|
166
|
+
const value = Number(summary[key]);
|
|
167
|
+
if (Number.isFinite(value) && value >= 0)
|
|
168
|
+
return Math.floor(value);
|
|
169
|
+
return fallback;
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=collect-landed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collect-landed.js","sourceRoot":"","sources":["../src/collect-landed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAUlE,MAAM,eAAe,GAA0C;IAC7D,gBAAgB;IAChB,kBAAkB;IAClB,YAAY;IACZ,iBAAiB;IACjB,oBAAoB;CACrB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,aAAqB;IAChE,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,mBAAmB,CAAC;QAC7D,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,mBAAmB,CAAC;KAC9C,CAAC;IACF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,MAAM,UAAU,CAAC,SAAS,CAAC;YAAE,SAAS;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAA6B,CAAC;QAC5F,OAAO,oBAAoB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,SAA4C,EAC5C,gBAAyB,EACzB,WAA4C;IAE5C,MAAM,gBAAgB,GAAG,SAAuF,CAAC;IACjH,MAAM,iBAAiB,GAAG,gBAAqE,CAAC;IAC/F,gBAAgB,CAAC,OAAmC,CAAC,WAAW,GAAG,WAAW,CAAC;IAC/E,gBAAgB,CAAC,OAAmC,CAAC,sBAAsB,GAAG,WAAW,CAAC,MAAM,CAAC;IACjG,gBAAgB,CAAC,OAAmC,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC;IAC9F,iBAAiB,CAAC,QAAQ,GAAG,EAAE,GAAG,CAAC,iBAAiB,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC;IACpF,MAAM,OAAO,GAAG,gBAA2C,CAAC;IAC5D,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;IAClC,OAAO,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC;IAChD,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,WAA4C,EAC5C,OAA2E;IAE3E,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IACvD,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,kBAAkB,GAAG,eAAe,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7F,MAAM,qBAAqB,GAAG,eAAe,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACjG,MAAM,oBAAoB,GAAG,aAAa,CAAC;QACzC,GAAG,qBAAqB,CAAC,kBAAkB,CAAC;QAC5C,GAAG,qBAAqB,CAAC,YAAY,CAAC;QACtC,GAAG,qBAAqB,CAAC,iBAAiB,CAAC;QAC3C,GAAG,qBAAqB,CAAC,oBAAoB,CAAC;KAC/C,CAAC,CAAC;IACH,OAAO;QACL,qBAAqB,EAAE,WAAW,CAAC,MAAM;QACzC,eAAe,EAAE,WAAW,CAAC,aAAa,CAAC,MAAM;QACjD,iBAAiB,EAAE,WAAW,CAAC,eAAe,CAAC,MAAM;QACrD,mBAAmB,EAAE,WAAW,CAAC,YAAY,CAAC,MAAM;QACpD,YAAY,EAAE,WAAW,CAAC,YAAY;QACtC,aAAa,EAAE,WAAW,CAAC,aAAa;QACxC,eAAe,EAAE,WAAW,CAAC,eAAe;QAC5C,iBAAiB,EAAE,WAAW,CAAC,YAAY;QAC3C,YAAY,EAAE,iBAAiB,CAAC,YAAY,CAAC;QAC7C,kBAAkB,EAAE,iBAAiB,CAAC,kBAAkB,CAAC;QACzD,kBAAkB;QAClB,qBAAqB,EAAE,iBAAiB,CAAC,qBAAqB,CAAC;QAC/D,qBAAqB;QACrB,2BAA2B,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,MAAM;QAC1E,4BAA4B,EAAE,kBAAkB,CAAC,kBAAkB,CAAC;QACpE,8BAA8B,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,CAAC,MAAM;QAChF,+BAA+B,EAAE,qBAAqB,CAAC,kBAAkB,CAAC;QAC1E,4BAA4B,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,CAAC,MAAM;QAC7E,6BAA6B,EAAE,qBAAqB,CAAC,iBAAiB,CAAC;QACvE,mBAAmB,EAAE,qBAAqB,CAAC,oBAAoB,CAAC,CAAC,MAAM;QACvE,oBAAoB,EAAE,qBAAqB,CAAC,oBAAoB,CAAC;QACjE,0BAA0B,EAAE,qBAAqB,CAAC,gBAAgB,CAAC,CAAC,MAAM;QAC1E,2BAA2B,EAAE,qBAAqB,CAAC,gBAAgB,CAAC;QACpE,mBAAmB,EAAE,oBAAoB,CAAC,MAAM;QAChD,oBAAoB;KACrB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,SAA4C,EAC5C,gBAAyB,EACzB,cAAkD,EAClD,YAA8C;IAE9C,MAAM,gBAAgB,GAAG,SAAuF,CAAC;IACjH,MAAM,iBAAiB,GAAG,gBAAqE,CAAC;IAChG,cAAc,CAAC,MAAM,GAAG,YAAY,CAAC;IACrC,cAAc,CAAC,SAAS,GAAG,EAAE,GAAG,cAAc,CAAC,SAAS,EAAE,cAAc,EAAE,YAAY,CAAC,2BAA2B,EAAE,YAAY,EAAE,YAAY,CAAC,4BAA4B,EAAE,iBAAiB,EAAE,YAAY,CAAC,8BAA8B,EAAE,eAAe,EAAE,YAAY,CAAC,+BAA+B,EAAE,CAAC;IAC7S,cAAc,CAAC,OAAO,GAAG,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,YAAY,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,EAAE,YAAY,EAAE,YAAY,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,EAAE,YAAY,CAAC,4BAA4B,EAAE,eAAe,EAAE,YAAY,CAAC,6BAA6B,EAAE,CAAC;IACxT,cAAc,CAAC,KAAK,GAAG,EAAE,GAAG,cAAc,CAAC,KAAK,EAAE,cAAc,EAAE,YAAY,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,EAAE,YAAY,EAAE,YAAY,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,EAAE,iBAAiB,EAAE,YAAY,CAAC,mBAAmB,EAAE,eAAe,EAAE,YAAY,CAAC,oBAAoB,EAAE,CAAC;IACxS,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAkC,CAAC;IACpE,OAAO,CAAC,wBAAwB,GAAG,cAAc,CAAC;IAClD,OAAO,CAAC,4BAA4B,GAAG,YAAY,CAAC,qBAAqB,CAAC;IAC1E,OAAO,CAAC,4BAA4B,GAAG,YAAY,CAAC,eAAe,CAAC;IACpE,OAAO,CAAC,8BAA8B,GAAG,YAAY,CAAC,iBAAiB,CAAC;IACxE,OAAO,CAAC,0BAA0B,GAAG,YAAY,CAAC,mBAAmB,CAAC;IACtE,OAAO,CAAC,qCAAqC,GAAG,YAAY,CAAC,2BAA2B,CAAC;IACzF,OAAO,CAAC,wCAAwC,GAAG,YAAY,CAAC,8BAA8B,CAAC;IAC/F,OAAO,CAAC,sCAAsC,GAAG,YAAY,CAAC,4BAA4B,CAAC;IAC3F,OAAO,CAAC,6BAA6B,GAAG,YAAY,CAAC,mBAAmB,CAAC;IACzE,OAAO,CAAC,oCAAoC,GAAG,YAAY,CAAC,0BAA0B,CAAC;IACvF,OAAO,CAAC,6BAA6B,GAAG,YAAY,CAAC,mBAAmB,CAAC;IACzE,OAAO,CAAC,8BAA8B,GAAG,YAAY,CAAC,oBAAoB,CAAC;IAC3E,iBAAiB,CAAC,QAAQ,GAAG,EAAE,GAAG,CAAC,iBAAiB,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC;IACrF,MAAM,CAAC,MAAM,CAAC,gBAA2C,EAAE;QACzD,YAAY;QACZ,qBAAqB,EAAE,YAAY,CAAC,qBAAqB;QACzD,2BAA2B,EAAE,YAAY,CAAC,2BAA2B;QACrE,8BAA8B,EAAE,YAAY,CAAC,8BAA8B;QAC3E,4BAA4B,EAAE,YAAY,CAAC,4BAA4B;QACvE,mBAAmB,EAAE,YAAY,CAAC,mBAAmB;QACrD,0BAA0B,EAAE,YAAY,CAAC,0BAA0B;QACnE,mBAAmB,EAAE,YAAY,CAAC,mBAAmB;QACrD,oBAAoB,EAAE,YAAY,CAAC,oBAAoB;KACxD,CAAC,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAgC,EAAE,UAAkB;IAChF,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,MAAM,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACvH,MAAM,eAAe,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3H,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,GAAG,aAAa,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC;IAC3E,MAAM,YAAY,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACrH,MAAM,WAAW,GAAG,CAAC,MAA6G,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IACjM,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,GAAG,CAAC,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtF,GAAG,CAAC,OAAO,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,KAAK,EAAE,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC;QAC3D,OAAO,EAAE,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;QACvE,OAAO,EAAE,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;QACvE,SAAS,EAAE,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;QAC7E,OAAO,EAAE,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;QACvE,MAAM,EAAE,kBAAkB,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;QACpE,MAAM,EAAE,YAAY,CAAC,MAAM;QAC3B,aAAa;QACb,eAAe;QACf,YAAY;QACZ,YAAY;QACZ,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACnH,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,MAAM,EAAE,KAAK,CAAC,MAAiC;YAC/C,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClD,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,OAA2E;IACtG,OAAO;QACL,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;QACvE,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;QAC3E,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/D,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;QACzE,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;KAChF,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,MAAoD,EAAE,OAAuE;IACpJ,MAAM,GAAG,GAAG,EAAE,gBAAgB,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,oBAAoB,EAAE,EAAE,EAAkD,CAAC;IAChL,KAAK,MAAM,MAAM,IAAI,eAAe;QAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7G,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAoD;IAC7E,OAAO;QACL,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM;QACjD,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC,MAAM;QACrD,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM;QACzC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC,MAAM;QACnD,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC,MAAM;KAC1D,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAgC,EAAE,GAAW,EAAE,QAAgB;IACzF,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACnE,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { FrontierSwarmCoordinatorDashboard, FrontierSwarmMergeBundle, FrontierSwarmPatchStatus } from '@shapeshift-labs/frontier-swarm';
|
|
2
|
+
import type { FrontierCodexCollectionNoiseBreakdown, FrontierCodexCollectQualitySignals } from './index.js';
|
|
3
|
+
export declare function attachCollectionNoiseBreakdown(dashboard: FrontierSwarmCoordinatorDashboard, compactDashboard: unknown, qualitySignals: FrontierCodexCollectQualitySignals, noiseBreakdown: FrontierCodexCollectionNoiseBreakdown): void;
|
|
4
|
+
export declare function createCollectionNoiseBreakdown(bundles: readonly FrontierSwarmMergeBundle[]): FrontierCodexCollectionNoiseBreakdown;
|
|
5
|
+
export declare function normalizeCollectedReasons(bundleReasons: readonly string[], staleReasons: readonly string[], patchStatus: FrontierSwarmPatchStatus, staleAgainstHead: boolean, bundle: FrontierSwarmMergeBundle): string[];
|
|
6
|
+
//# sourceMappingURL=collect-noise.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collect-noise.d.ts","sourceRoot":"","sources":["../src/collect-noise.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iCAAiC,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAG7I,OAAO,KAAK,EAAE,qCAAqC,EAAE,kCAAkC,EAAE,MAAM,YAAY,CAAC;AAI5G,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,iCAAiC,EAC5C,gBAAgB,EAAE,OAAO,EACzB,cAAc,EAAE,kCAAkC,EAClD,cAAc,EAAE,qCAAqC,GACpD,IAAI,CA2BN;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,SAAS,wBAAwB,EAAE,GAAG,qCAAqC,CA6BlI;AAED,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,SAAS,MAAM,EAAE,EAChC,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,WAAW,EAAE,wBAAwB,EACrC,gBAAgB,EAAE,OAAO,EACzB,MAAM,EAAE,wBAAwB,GAC/B,MAAM,EAAE,CAOV"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { isObject, pathHasIgnoredSegment, uniqueStrings } from './common.js';
|
|
2
|
+
import { collectFailureReasonClasses, ignoredWorkspaceNoisePath, sourceOwnershipViolationsForReasons } from './collect-bundles.js';
|
|
3
|
+
const COLLECTION_NOISE_SAMPLE_LIMIT = 12;
|
|
4
|
+
export function attachCollectionNoiseBreakdown(dashboard, compactDashboard, qualitySignals, noiseBreakdown) {
|
|
5
|
+
const mutableDashboard = dashboard;
|
|
6
|
+
const dashboardMetadata = mutableDashboard;
|
|
7
|
+
qualitySignals.noiseBreakdown = noiseBreakdown;
|
|
8
|
+
const summary = mutableDashboard.summary;
|
|
9
|
+
summary.collectionNoiseBreakdown = noiseBreakdown;
|
|
10
|
+
summary.collectionQualitySignals = qualitySignals;
|
|
11
|
+
summary.collectionRestoredChangedPathSignalCount = noiseBreakdown.restored.pathCount;
|
|
12
|
+
summary.collectionRestoredChangedPathJobCount = noiseBreakdown.restored.jobCount;
|
|
13
|
+
summary.collectionGeneratedNoiseSignalCount = noiseBreakdown.generatedNoise.pathCount;
|
|
14
|
+
summary.collectionGeneratedNoiseJobCount = noiseBreakdown.generatedNoise.jobCount;
|
|
15
|
+
summary.collectionIgnoredWorkspaceNoiseSignalCount = noiseBreakdown.ignoredWorkspaceNoise.pathCount;
|
|
16
|
+
summary.collectionIgnoredWorkspaceNoiseJobCount = noiseBreakdown.ignoredWorkspaceNoise.jobCount;
|
|
17
|
+
summary.collectionSourceOwnershipViolationCount = noiseBreakdown.sourceOwnershipViolations.pathCount;
|
|
18
|
+
summary.collectionSourceOwnershipViolationJobCount = noiseBreakdown.sourceOwnershipViolations.jobCount;
|
|
19
|
+
dashboardMetadata.metadata = { ...(dashboardMetadata.metadata ?? {}), collectionNoiseBreakdown: noiseBreakdown };
|
|
20
|
+
Object.assign(compactDashboard, {
|
|
21
|
+
collectionNoiseBreakdown: noiseBreakdown,
|
|
22
|
+
restoredChangedPathCount: noiseBreakdown.restored.pathCount,
|
|
23
|
+
restoredChangedPathJobCount: noiseBreakdown.restored.jobCount,
|
|
24
|
+
generatedNoisePathCount: noiseBreakdown.generatedNoise.pathCount,
|
|
25
|
+
generatedNoiseJobCount: noiseBreakdown.generatedNoise.jobCount,
|
|
26
|
+
ignoredWorkspaceNoisePathCount: noiseBreakdown.ignoredWorkspaceNoise.pathCount,
|
|
27
|
+
ignoredWorkspaceNoiseJobCount: noiseBreakdown.ignoredWorkspaceNoise.jobCount,
|
|
28
|
+
sourceOwnershipViolationCount: noiseBreakdown.sourceOwnershipViolations.pathCount,
|
|
29
|
+
sourceOwnershipViolationJobCount: noiseBreakdown.sourceOwnershipViolations.jobCount
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
export function createCollectionNoiseBreakdown(bundles) {
|
|
33
|
+
const restored = [];
|
|
34
|
+
const quarantined = [];
|
|
35
|
+
const generatedNoise = [];
|
|
36
|
+
const ignoredWorkspaceNoise = [];
|
|
37
|
+
const sourceOwnershipViolations = [];
|
|
38
|
+
for (const bundle of bundles) {
|
|
39
|
+
const reasonClasses = bundleCollectReasonClasses(bundle);
|
|
40
|
+
const restoredPaths = bundleRestoredSourcePaths(bundle);
|
|
41
|
+
const quarantinedPaths = bundleQuarantinedChangedPaths(bundle);
|
|
42
|
+
const ownershipPaths = uniqueStrings(bundle.ownershipViolations);
|
|
43
|
+
const reasonGeneratedPaths = bundle.reasons.map((reason) => missingHeadBlobReasonPath(reason)).filter((entry) => Boolean(entry));
|
|
44
|
+
const candidatePaths = uniqueStrings([...restoredPaths, ...quarantinedPaths, ...ownershipPaths, ...reasonGeneratedPaths]);
|
|
45
|
+
const generatedPaths = candidatePaths.filter((entry) => generatedNoisePath(entry, bundle.reasons));
|
|
46
|
+
const ignoredPaths = candidatePaths.filter((entry) => ignoredWorkspaceNoisePath(entry) && !generatedNoisePath(entry, bundle.reasons));
|
|
47
|
+
const generatedReasonClasses = reasonClasses.filter(generatedNoiseReasonClass);
|
|
48
|
+
restored.push({ jobId: bundle.jobId, paths: restoredPaths, reasonClasses: reasonClasses.filter((entry) => entry === 'workspace.restore-disallowed-changes') });
|
|
49
|
+
quarantined.push({ jobId: bundle.jobId, paths: quarantinedPaths, reasonClasses: reasonClasses.filter((entry) => entry === 'workspace.quarantine') });
|
|
50
|
+
generatedNoise.push({ jobId: bundle.jobId, paths: generatedPaths, reasonClasses: generatedReasonClasses });
|
|
51
|
+
ignoredWorkspaceNoise.push({ jobId: bundle.jobId, paths: ignoredPaths, reasonClasses: ignoredPaths.length > 0 || generatedPaths.length === 0 && generatedReasonClasses.length === 0 ? reasonClasses.filter(ignoredWorkspaceNoiseReasonClass) : [] });
|
|
52
|
+
sourceOwnershipViolations.push({ jobId: bundle.jobId, paths: sourceOwnershipViolationsForReasons(ownershipPaths, bundle.reasons), reasonClasses: reasonClasses.filter((entry) => entry === 'ownership.source-violation') });
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
restored: collectionNoiseSignal(restored),
|
|
56
|
+
quarantined: collectionNoiseSignal(quarantined),
|
|
57
|
+
generatedNoise: collectionNoiseSignal(generatedNoise),
|
|
58
|
+
ignoredWorkspaceNoise: collectionNoiseSignal(ignoredWorkspaceNoise),
|
|
59
|
+
sourceOwnershipViolations: collectionNoiseSignal(sourceOwnershipViolations)
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
export function normalizeCollectedReasons(bundleReasons, staleReasons, patchStatus, staleAgainstHead, bundle) {
|
|
63
|
+
const reasons = patchStatus === 'applies' ? [...bundleReasons] : uniqueStrings([...bundleReasons, ...staleReasons]);
|
|
64
|
+
const filtered = staleAgainstHead ? reasons : reasons.filter((reason) => reason !== 'stale-against-head');
|
|
65
|
+
if (!staleAgainstHead && (bundle.staleAgainstHead || bundle.disposition === 'stale-against-head') && patchStatus !== 'missing') {
|
|
66
|
+
filtered.push('stale-against-head cleared by patch freshness check');
|
|
67
|
+
}
|
|
68
|
+
return uniqueStrings(filtered);
|
|
69
|
+
}
|
|
70
|
+
function collectionNoiseSignal(entries) {
|
|
71
|
+
const activeEntries = entries.filter((entry) => entry.paths.length > 0 || entry.reasonClasses.length > 0);
|
|
72
|
+
const paths = uniqueStrings(activeEntries.flatMap((entry) => [...entry.paths]));
|
|
73
|
+
const reasonClasses = activeEntries.flatMap((entry) => [...entry.reasonClasses]);
|
|
74
|
+
const jobIds = uniqueStrings(activeEntries.map((entry) => entry.jobId));
|
|
75
|
+
return { jobCount: jobIds.length, pathCount: paths.length, paths: paths.slice(0, COLLECTION_NOISE_SAMPLE_LIMIT), jobIds: jobIds.slice(0, COLLECTION_NOISE_SAMPLE_LIMIT), reasonClasses: uniqueStrings(reasonClasses).slice(0, COLLECTION_NOISE_SAMPLE_LIMIT), reasonClassCounts: countCollectionNoiseStrings(reasonClasses) };
|
|
76
|
+
}
|
|
77
|
+
function countCollectionNoiseStrings(values) {
|
|
78
|
+
const counts = {};
|
|
79
|
+
for (const value of values)
|
|
80
|
+
counts[value] = (counts[value] ?? 0) + 1;
|
|
81
|
+
return counts;
|
|
82
|
+
}
|
|
83
|
+
function bundleCollectReasonClasses(bundle) {
|
|
84
|
+
const metadata = isObject(bundle.metadata) ? bundle.metadata : {};
|
|
85
|
+
const collect = isObject(metadata.collect) ? metadata.collect : {};
|
|
86
|
+
return uniqueStrings([...stringArray(collect.reasonClasses), ...collectFailureReasonClasses(bundle.reasons)]);
|
|
87
|
+
}
|
|
88
|
+
function bundleRestoredSourcePaths(bundle) {
|
|
89
|
+
const metadata = isObject(bundle.metadata) ? bundle.metadata : {};
|
|
90
|
+
return uniqueStrings(pathRecordArray(metadata.ownershipRestore));
|
|
91
|
+
}
|
|
92
|
+
function bundleQuarantinedChangedPaths(bundle) {
|
|
93
|
+
const metadata = isObject(bundle.metadata) ? bundle.metadata : {};
|
|
94
|
+
const quarantine = isObject(metadata.workspacePatchQuarantine) ? metadata.workspacePatchQuarantine : {};
|
|
95
|
+
const paths = stringArray(quarantine.quarantinedChangedPaths);
|
|
96
|
+
if (paths.length > 0)
|
|
97
|
+
return uniqueStrings(paths);
|
|
98
|
+
return bundle.reasons.includes('quarantined-disallowed-changes') ? uniqueStrings(bundle.ownershipViolations) : [];
|
|
99
|
+
}
|
|
100
|
+
function pathRecordArray(value) {
|
|
101
|
+
if (!Array.isArray(value))
|
|
102
|
+
return [];
|
|
103
|
+
return value.flatMap((entry) => typeof entry === 'string' ? [entry] : isObject(entry) && typeof entry.path === 'string' ? [entry.path] : []);
|
|
104
|
+
}
|
|
105
|
+
function stringArray(value) {
|
|
106
|
+
return Array.isArray(value) ? value.filter((entry) => typeof entry === 'string') : [];
|
|
107
|
+
}
|
|
108
|
+
function generatedNoiseReasonClass(reasonClass) {
|
|
109
|
+
return reasonClass.startsWith('generated.') || reasonClass.endsWith('.generated');
|
|
110
|
+
}
|
|
111
|
+
function ignoredWorkspaceNoiseReasonClass(reasonClass) {
|
|
112
|
+
return reasonClass === 'workspace.ignored-noise' || reasonClass.startsWith('workspace.ignored-noise.');
|
|
113
|
+
}
|
|
114
|
+
function generatedNoisePath(file, reasons) {
|
|
115
|
+
const normalized = file.replace(/\\/g, '/').toLowerCase();
|
|
116
|
+
return normalized.endsWith('.tsbuildinfo') || generatedWorkspaceSetupOwnershipPath(normalized, reasons) || pathHasIgnoredSegment(normalized, ['.next', '.nuxt', '.svelte-kit', '.turbo', '.vite', '.parcel-cache', 'coverage', 'dist', 'build', 'generated', 'target']);
|
|
117
|
+
}
|
|
118
|
+
function generatedWorkspaceSetupOwnershipPath(file, reasons) {
|
|
119
|
+
if (!reasons.some((reason) => generatedWorkspaceSetupReason(reason.toLowerCase())))
|
|
120
|
+
return false;
|
|
121
|
+
const normalized = file.replace(/\\/g, '/').toLowerCase();
|
|
122
|
+
return normalized === '.gitignore' || normalized === '.loomignore' || normalized === 'loom.json';
|
|
123
|
+
}
|
|
124
|
+
function generatedWorkspaceSetupReason(reason) {
|
|
125
|
+
return reason === 'generated_setup' || reason.includes('generated setup') || reason.includes('generated workspace setup');
|
|
126
|
+
}
|
|
127
|
+
function missingHeadBlobReasonPath(reason) {
|
|
128
|
+
const match = /^missing HEAD blob for (.+)$/i.exec(reason.trim());
|
|
129
|
+
return match?.[1]?.trim();
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=collect-noise.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collect-noise.js","sourceRoot":"","sources":["../src/collect-noise.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { FrontierSwarmCoordinatorDashboard } from '@shapeshift-labs/frontier-swarm';
|
|
2
|
+
export declare function attachSemanticPatchBundleOverlaps(dashboard: FrontierSwarmCoordinatorDashboard, compactDashboard: unknown, semanticPatchBundleOverlaps: unknown): void;
|
|
3
|
+
//# sourceMappingURL=collect-overlaps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collect-overlaps.d.ts","sourceRoot":"","sources":["../src/collect-overlaps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,iCAAiC,CAAC;AAEzF,wBAAgB,iCAAiC,CAC/C,SAAS,EAAE,iCAAiC,EAC5C,gBAAgB,EAAE,OAAO,EACzB,2BAA2B,EAAE,OAAO,GACnC,IAAI,CAMN"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export function attachSemanticPatchBundleOverlaps(dashboard, compactDashboard, semanticPatchBundleOverlaps) {
|
|
2
|
+
const mutableDashboard = dashboard;
|
|
3
|
+
const dashboardMetadata = mutableDashboard;
|
|
4
|
+
mutableDashboard.summary.semanticPatchBundleOverlaps = semanticPatchBundleOverlaps;
|
|
5
|
+
dashboardMetadata.metadata = { ...(dashboardMetadata.metadata ?? {}), semanticPatchBundleOverlaps };
|
|
6
|
+
compactDashboard.semanticPatchBundleOverlaps = semanticPatchBundleOverlaps;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=collect-overlaps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collect-overlaps.js","sourceRoot":"","sources":["../src/collect-overlaps.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iCAAiC,CAC/C,SAA4C,EAC5C,gBAAyB,EACzB,2BAAoC;IAEpC,MAAM,gBAAgB,GAAG,SAAuF,CAAC;IACjH,MAAM,iBAAiB,GAAG,gBAAqE,CAAC;IAC/F,gBAAgB,CAAC,OAAmC,CAAC,2BAA2B,GAAG,2BAA2B,CAAC;IAChH,iBAAiB,CAAC,QAAQ,GAAG,EAAE,GAAG,CAAC,iBAAiB,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,2BAA2B,EAAE,CAAC;IACnG,gBAA4C,CAAC,2BAA2B,GAAG,2BAA2B,CAAC;AAC1G,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { FrontierSwarmCoordinatorProcessInput } from '@shapeshift-labs/frontier-swarm';
|
|
2
|
+
export declare function readCodexPidProcesses(file: string): Promise<FrontierSwarmCoordinatorProcessInput[]>;
|
|
3
|
+
export declare function resolveRunDirectory(runPath: string): Promise<string>;
|
|
4
|
+
//# sourceMappingURL=collect-pids.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collect-pids.d.ts","sourceRoot":"","sources":["../src/collect-pids.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,iCAAiC,CAAC;AAE5F,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oCAAoC,EAAE,CAAC,CAWzG;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAM1E"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import fs from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
export async function readCodexPidProcesses(file) {
|
|
4
|
+
const parsed = JSON.parse(await fs.readFile(file, 'utf8'));
|
|
5
|
+
return Promise.all((parsed.entries ?? []).map(async (entry) => ({
|
|
6
|
+
pid: entry.pid,
|
|
7
|
+
role: entry.role,
|
|
8
|
+
...(entry.jobId ? { jobId: entry.jobId } : {}),
|
|
9
|
+
...(entry.runId ? { runId: entry.runId } : {}),
|
|
10
|
+
status: await pidIsAlive(entry.pid) ? 'running' : 'missing',
|
|
11
|
+
startedAt: entry.startedAt,
|
|
12
|
+
...(entry.command ? { command: entry.command } : {})
|
|
13
|
+
})));
|
|
14
|
+
}
|
|
15
|
+
export async function resolveRunDirectory(runPath) {
|
|
16
|
+
const absolute = path.resolve(runPath);
|
|
17
|
+
const stat = await fs.lstat(absolute).catch(() => undefined);
|
|
18
|
+
if (stat?.isDirectory())
|
|
19
|
+
return absolute;
|
|
20
|
+
if (path.basename(absolute) === 'swarm-results.json' || path.basename(absolute) === 'pids.json')
|
|
21
|
+
return path.dirname(absolute);
|
|
22
|
+
return path.dirname(absolute);
|
|
23
|
+
}
|
|
24
|
+
async function pidIsAlive(pid) {
|
|
25
|
+
try {
|
|
26
|
+
process.kill(pid, 0);
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=collect-pids.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collect-pids.js","sourceRoot":"","sources":["../src/collect-pids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAAY;IACtD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAA8H,CAAC;IACxL,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC9D,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,MAAM,EAAE,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QAC3D,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACrD,CAAC,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAe;IACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC7D,IAAI,IAAI,EAAE,WAAW,EAAE;QAAE,OAAO,QAAQ,CAAC;IACzC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,oBAAoB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/H,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,GAAW;IACnC,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { FrontierCodexCollectBucket, FrontierCodexCollectedBundle } from './index.js';
|
|
2
|
+
export declare const COLLECTED_OUTPUT_SEGMENTS: string[];
|
|
3
|
+
export declare function createEmptyCollectBuckets(): Record<FrontierCodexCollectBucket, FrontierCodexCollectedBundle[]>;
|
|
4
|
+
//# sourceMappingURL=collect-setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collect-setup.d.ts","sourceRoot":"","sources":["../src/collect-setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAE3F,eAAO,MAAM,yBAAyB,UASrC,CAAC;AAEF,wBAAgB,yBAAyB,IAAI,MAAM,CAAC,0BAA0B,EAAE,4BAA4B,EAAE,CAAC,CAQ9G"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export const COLLECTED_OUTPUT_SEGMENTS = [
|
|
2
|
+
'collected',
|
|
3
|
+
'patch-scores',
|
|
4
|
+
'ready-to-apply',
|
|
5
|
+
'needs-human-port',
|
|
6
|
+
'rerun-work',
|
|
7
|
+
'failed-evidence',
|
|
8
|
+
'stale-against-head',
|
|
9
|
+
'generated-by-collector'
|
|
10
|
+
];
|
|
11
|
+
export function createEmptyCollectBuckets() {
|
|
12
|
+
return {
|
|
13
|
+
'ready-to-apply': [],
|
|
14
|
+
'needs-human-port': [],
|
|
15
|
+
'rerun-work': [],
|
|
16
|
+
'failed-evidence': [],
|
|
17
|
+
'stale-against-head': []
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=collect-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collect-setup.js","sourceRoot":"","sources":["../src/collect-setup.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,WAAW;IACX,cAAc;IACd,gBAAgB;IAChB,kBAAkB;IAClB,YAAY;IACZ,iBAAiB;IACjB,oBAAoB;IACpB,wBAAwB;CACzB,CAAC;AAEF,MAAM,UAAU,yBAAyB;IACvC,OAAO;QACL,gBAAgB,EAAE,EAAE;QACpB,kBAAkB,EAAE,EAAE;QACtB,YAAY,EAAE,EAAE;QAChB,iBAAiB,EAAE,EAAE;QACrB,oBAAoB,EAAE,EAAE;KACzB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type FrontierSwarmQueueOutcomeModel, type FrontierSwarmTerminalStateReconciliation } from '@shapeshift-labs/frontier-swarm';
|
|
2
|
+
import type { FrontierCodexCollectBucket, FrontierCodexCollectedBundle, FrontierCodexLandedHealthSummary } from './types-collection.js';
|
|
3
|
+
export declare function createCodexCollectionQueueOutcomeModel(input: {
|
|
4
|
+
runId: string;
|
|
5
|
+
buckets: Record<FrontierCodexCollectBucket, FrontierCodexCollectedBundle[]>;
|
|
6
|
+
landedHealth?: FrontierCodexLandedHealthSummary;
|
|
7
|
+
generatedAt: number;
|
|
8
|
+
}): FrontierSwarmQueueOutcomeModel;
|
|
9
|
+
export declare function createCodexCollectionTerminalState(input: {
|
|
10
|
+
buckets: Record<FrontierCodexCollectBucket, FrontierCodexCollectedBundle[]>;
|
|
11
|
+
queueOutcomeModel: FrontierSwarmQueueOutcomeModel;
|
|
12
|
+
generatedAt: number;
|
|
13
|
+
}): FrontierSwarmTerminalStateReconciliation;
|
|
14
|
+
//# sourceMappingURL=collect-terminal-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collect-terminal-state.d.ts","sourceRoot":"","sources":["../src/collect-terminal-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,8BAA8B,EAEnC,KAAK,wCAAwC,EAC9C,MAAM,iCAAiC,CAAC;AAGzC,OAAO,KAAK,EACV,0BAA0B,EAC1B,4BAA4B,EAC5B,gCAAgC,EACjC,MAAM,uBAAuB,CAAC;AAE/B,wBAAgB,sCAAsC,CAAC,KAAK,EAAE;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,0BAA0B,EAAE,4BAA4B,EAAE,CAAC,CAAC;IAC5E,YAAY,CAAC,EAAE,gCAAgC,CAAC;IAChD,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,8BAA8B,CASjC;AAED,wBAAgB,kCAAkC,CAAC,KAAK,EAAE;IACxD,OAAO,EAAE,MAAM,CAAC,0BAA0B,EAAE,4BAA4B,EAAE,CAAC,CAAC;IAC5E,iBAAiB,EAAE,8BAA8B,CAAC;IAClD,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,wCAAwC,CAU3C"}
|