audit-tools 0.28.8 → 0.28.10
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/audit-code-wrapper-install-hosts.mjs +133 -27
- package/dist/audit/cli/confirmIntentStep.d.ts +1 -0
- package/dist/audit/cli/confirmIntentStep.d.ts.map +1 -1
- package/dist/audit/cli/confirmIntentStep.js +14 -10
- package/dist/audit/cli/confirmIntentStep.js.map +1 -1
- package/dist/audit/cli/dispatch/quotaPool.d.ts.map +1 -1
- package/dist/audit/cli/dispatch/quotaPool.js +47 -39
- package/dist/audit/cli/dispatch/quotaPool.js.map +1 -1
- package/dist/audit/cli/dispatch.d.ts +15 -1
- package/dist/audit/cli/dispatch.d.ts.map +1 -1
- package/dist/audit/cli/dispatch.js +54 -19
- package/dist/audit/cli/dispatch.js.map +1 -1
- package/dist/audit/cli/hybridDispatch.d.ts +46 -0
- package/dist/audit/cli/hybridDispatch.d.ts.map +1 -0
- package/dist/audit/cli/hybridDispatch.js +77 -0
- package/dist/audit/cli/hybridDispatch.js.map +1 -0
- package/dist/audit/cli/nextStepHelpers.d.ts.map +1 -1
- package/dist/audit/cli/nextStepHelpers.js +119 -2
- package/dist/audit/cli/nextStepHelpers.js.map +1 -1
- package/dist/audit/cli/reviewRun.d.ts +19 -0
- package/dist/audit/cli/reviewRun.d.ts.map +1 -1
- package/dist/audit/cli/reviewRun.js +2 -2
- package/dist/audit/cli/reviewRun.js.map +1 -1
- package/dist/audit/cli/rollingAuditDispatch.d.ts +57 -4
- package/dist/audit/cli/rollingAuditDispatch.d.ts.map +1 -1
- package/dist/audit/cli/rollingAuditDispatch.js +137 -10
- package/dist/audit/cli/rollingAuditDispatch.js.map +1 -1
- package/dist/audit/cli/scoreAuditCommand.d.ts +16 -0
- package/dist/audit/cli/scoreAuditCommand.d.ts.map +1 -0
- package/dist/audit/cli/scoreAuditCommand.js +82 -0
- package/dist/audit/cli/scoreAuditCommand.js.map +1 -0
- package/dist/audit/cli.d.ts.map +1 -1
- package/dist/audit/cli.js +5 -1
- package/dist/audit/cli.js.map +1 -1
- package/dist/audit/orchestrator/designReviewProjection.d.ts +9 -1
- package/dist/audit/orchestrator/designReviewProjection.d.ts.map +1 -1
- package/dist/audit/orchestrator/designReviewProjection.js +19 -1
- package/dist/audit/orchestrator/designReviewProjection.js.map +1 -1
- package/dist/audit/orchestrator/designReviewPrompt.d.ts +2 -0
- package/dist/audit/orchestrator/designReviewPrompt.d.ts.map +1 -1
- package/dist/audit/orchestrator/designReviewPrompt.js +11 -1
- package/dist/audit/orchestrator/designReviewPrompt.js.map +1 -1
- package/dist/audit/orchestrator/executorRunners.js +1 -1
- package/dist/audit/orchestrator/executorRunners.js.map +1 -1
- package/dist/audit/orchestrator/intakeExecutors.d.ts +9 -1
- package/dist/audit/orchestrator/intakeExecutors.d.ts.map +1 -1
- package/dist/audit/orchestrator/intakeExecutors.js +16 -3
- package/dist/audit/orchestrator/intakeExecutors.js.map +1 -1
- package/dist/audit/orchestrator/intentCheckpointExecutor.d.ts.map +1 -1
- package/dist/audit/orchestrator/intentCheckpointExecutor.js +3 -0
- package/dist/audit/orchestrator/intentCheckpointExecutor.js.map +1 -1
- package/dist/audit/orchestrator/intentInterpreter.d.ts +21 -7
- package/dist/audit/orchestrator/intentInterpreter.d.ts.map +1 -1
- package/dist/audit/orchestrator/intentInterpreter.js +30 -11
- package/dist/audit/orchestrator/intentInterpreter.js.map +1 -1
- package/dist/audit/orchestrator/intentScopeDisposition.d.ts +49 -0
- package/dist/audit/orchestrator/intentScopeDisposition.d.ts.map +1 -0
- package/dist/audit/orchestrator/intentScopeDisposition.js +57 -0
- package/dist/audit/orchestrator/intentScopeDisposition.js.map +1 -0
- package/dist/audit/orchestrator/rollingDispatch.d.ts +9 -0
- package/dist/audit/orchestrator/rollingDispatch.d.ts.map +1 -1
- package/dist/audit/orchestrator/rollingDispatch.js +10 -0
- package/dist/audit/orchestrator/rollingDispatch.js.map +1 -1
- package/dist/audit/orchestrator/scope.d.ts +1 -0
- package/dist/audit/orchestrator/scope.d.ts.map +1 -1
- package/dist/audit/orchestrator/scope.js +2 -7
- package/dist/audit/orchestrator/scope.js.map +1 -1
- package/dist/audit/quota/index.d.ts +5 -0
- package/dist/audit/quota/index.d.ts.map +1 -1
- package/dist/audit/reporting/scoreAudit.d.ts +161 -0
- package/dist/audit/reporting/scoreAudit.d.ts.map +1 -0
- package/dist/audit/reporting/scoreAudit.js +224 -0
- package/dist/audit/reporting/scoreAudit.js.map +1 -0
- package/dist/audit/types/activeDispatch.d.ts +29 -1
- package/dist/audit/types/activeDispatch.d.ts.map +1 -1
- package/dist/audit/types/activeDispatch.js.map +1 -1
- package/dist/audit/types/analyzerCapability.d.ts +6 -6
- package/dist/remediate/contractPipeline/changeClassification.d.ts +146 -0
- package/dist/remediate/contractPipeline/changeClassification.d.ts.map +1 -0
- package/dist/remediate/contractPipeline/changeClassification.js +398 -0
- package/dist/remediate/contractPipeline/changeClassification.js.map +1 -0
- package/dist/remediate/contractPipeline/derive.d.ts.map +1 -1
- package/dist/remediate/contractPipeline/derive.js +9 -0
- package/dist/remediate/contractPipeline/derive.js.map +1 -1
- package/dist/remediate/intent/intentOrdering.d.ts +51 -0
- package/dist/remediate/intent/intentOrdering.d.ts.map +1 -0
- package/dist/remediate/intent/intentOrdering.js +150 -0
- package/dist/remediate/intent/intentOrdering.js.map +1 -0
- package/dist/remediate/phases/plan.d.ts.map +1 -1
- package/dist/remediate/phases/plan.js +14 -1
- package/dist/remediate/phases/plan.js.map +1 -1
- package/dist/remediate/providers/index.d.ts +32 -0
- package/dist/remediate/providers/index.d.ts.map +1 -1
- package/dist/remediate/providers/index.js +28 -1
- package/dist/remediate/providers/index.js.map +1 -1
- package/dist/remediate/steps/contractPipeline.d.ts +15 -1
- package/dist/remediate/steps/contractPipeline.d.ts.map +1 -1
- package/dist/remediate/steps/contractPipeline.js +282 -14
- package/dist/remediate/steps/contractPipeline.js.map +1 -1
- package/dist/remediate/steps/dispatch.d.ts +75 -1
- package/dist/remediate/steps/dispatch.d.ts.map +1 -1
- package/dist/remediate/steps/dispatch.js +159 -43
- package/dist/remediate/steps/dispatch.js.map +1 -1
- package/dist/remediate/steps/nextStep.d.ts +53 -2
- package/dist/remediate/steps/nextStep.d.ts.map +1 -1
- package/dist/remediate/steps/nextStep.js +255 -81
- package/dist/remediate/steps/nextStep.js.map +1 -1
- package/dist/remediate/steps/providerNodeDispatch.d.ts +8 -1
- package/dist/remediate/steps/providerNodeDispatch.d.ts.map +1 -1
- package/dist/remediate/steps/providerNodeDispatch.js +7 -2
- package/dist/remediate/steps/providerNodeDispatch.js.map +1 -1
- package/dist/remediate/steps/rollingSession.d.ts +55 -1
- package/dist/remediate/steps/rollingSession.d.ts.map +1 -1
- package/dist/remediate/steps/rollingSession.js +132 -21
- package/dist/remediate/steps/rollingSession.js.map +1 -1
- package/dist/remediate/validation/contractPipelineGates.d.ts +23 -8
- package/dist/remediate/validation/contractPipelineGates.d.ts.map +1 -1
- package/dist/remediate/validation/contractPipelineGates.js +43 -38
- package/dist/remediate/validation/contractPipelineGates.js.map +1 -1
- package/dist/shared/dispatch/coordinator.d.ts +170 -0
- package/dist/shared/dispatch/coordinator.d.ts.map +1 -0
- package/dist/shared/dispatch/coordinator.js +177 -0
- package/dist/shared/dispatch/coordinator.js.map +1 -0
- package/dist/shared/dispatch/hybridDispatch.d.ts +74 -0
- package/dist/shared/dispatch/hybridDispatch.d.ts.map +1 -0
- package/dist/shared/dispatch/hybridDispatch.js +54 -0
- package/dist/shared/dispatch/hybridDispatch.js.map +1 -0
- package/dist/shared/dispatch/settledPools.d.ts +21 -0
- package/dist/shared/dispatch/settledPools.d.ts.map +1 -0
- package/dist/shared/dispatch/settledPools.js +34 -0
- package/dist/shared/dispatch/settledPools.js.map +1 -0
- package/dist/shared/index.d.ts +15 -5
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +14 -2
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/intent/clauseInterpreter.d.ts +19 -0
- package/dist/shared/intent/clauseInterpreter.d.ts.map +1 -1
- package/dist/shared/intent/clauseInterpreter.js +19 -0
- package/dist/shared/intent/clauseInterpreter.js.map +1 -1
- package/dist/shared/providers/sharedProviderConfirmation.d.ts +134 -0
- package/dist/shared/providers/sharedProviderConfirmation.d.ts.map +1 -0
- package/dist/shared/providers/sharedProviderConfirmation.js +244 -0
- package/dist/shared/providers/sharedProviderConfirmation.js.map +1 -0
- package/dist/shared/quota/apiPool.d.ts +109 -0
- package/dist/shared/quota/apiPool.d.ts.map +1 -0
- package/dist/shared/quota/apiPool.js +183 -0
- package/dist/shared/quota/apiPool.js.map +1 -0
- package/dist/shared/quota/capacity.d.ts +29 -1
- package/dist/shared/quota/capacity.d.ts.map +1 -1
- package/dist/shared/quota/capacity.js +5 -0
- package/dist/shared/quota/capacity.js.map +1 -1
- package/dist/shared/quota/claimRegistry.d.ts +64 -0
- package/dist/shared/quota/claimRegistry.d.ts.map +1 -0
- package/dist/shared/quota/claimRegistry.js +157 -0
- package/dist/shared/quota/claimRegistry.js.map +1 -0
- package/dist/shared/quota/compositeQuotaSource.d.ts +10 -1
- package/dist/shared/quota/compositeQuotaSource.d.ts.map +1 -1
- package/dist/shared/quota/compositeQuotaSource.js +34 -6
- package/dist/shared/quota/compositeQuotaSource.js.map +1 -1
- package/dist/shared/quota/fileLock.d.ts.map +1 -1
- package/dist/shared/quota/fileLock.js +7 -1
- package/dist/shared/quota/fileLock.js.map +1 -1
- package/dist/shared/quota/httpQuotaSource.d.ts +9 -1
- package/dist/shared/quota/httpQuotaSource.d.ts.map +1 -1
- package/dist/shared/quota/httpQuotaSource.js +33 -8
- package/dist/shared/quota/httpQuotaSource.js.map +1 -1
- package/dist/shared/quota/learnedQuotaSource.d.ts +7 -1
- package/dist/shared/quota/learnedQuotaSource.d.ts.map +1 -1
- package/dist/shared/quota/learnedQuotaSource.js +18 -7
- package/dist/shared/quota/learnedQuotaSource.js.map +1 -1
- package/dist/shared/quota/quotaSource.d.ts +41 -0
- package/dist/shared/quota/quotaSource.d.ts.map +1 -1
- package/dist/shared/quota/quotaSource.js +19 -0
- package/dist/shared/quota/quotaSource.js.map +1 -1
- package/dist/shared/types/contractPipeline/obligations.d.ts +42 -0
- package/dist/shared/types/contractPipeline/obligations.d.ts.map +1 -1
- package/dist/shared/types/contractPipeline.d.ts +1 -1
- package/dist/shared/types/contractPipeline.d.ts.map +1 -1
- package/dist/shared/types/contractPipeline.js.map +1 -1
- package/dist/shared/types/intentCheckpoint.d.ts +14 -0
- package/dist/shared/types/intentCheckpoint.d.ts.map +1 -1
- package/dist/shared/types/intentCheckpoint.js +10 -0
- package/dist/shared/types/intentCheckpoint.js.map +1 -1
- package/dist/shared/types/sessionConfig.d.ts +60 -0
- package/dist/shared/types/sessionConfig.d.ts.map +1 -1
- package/dist/shared/types/sessionConfig.js +13 -0
- package/dist/shared/types/sessionConfig.js.map +1 -1
- package/package.json +3 -2
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { mkdir, readFile, stat, unlink, writeFile } from 'node:fs/promises';
|
|
1
|
+
import { mkdir, mkdtemp, readFile, rm, stat, unlink, writeFile } from 'node:fs/promises';
|
|
2
|
+
import { tmpdir } from 'node:os';
|
|
2
3
|
import { dirname, join, relative, resolve } from 'node:path';
|
|
3
4
|
import { fileURLToPath } from 'node:url';
|
|
4
5
|
import {
|
|
@@ -703,6 +704,127 @@ export async function installBootstrap(argv, options = {}) {
|
|
|
703
704
|
return payload;
|
|
704
705
|
}
|
|
705
706
|
|
|
707
|
+
/**
|
|
708
|
+
* Run a single host's `verify()` handler from INSTALL_HOST_DEFINITIONS against
|
|
709
|
+
* already-deployed assets and collect its check results. Single-sourced so the
|
|
710
|
+
* `verify-install` CLI and the `verify:hosts` release gate exercise the exact
|
|
711
|
+
* same per-host handler — adding a host to the table auto-extends both.
|
|
712
|
+
*
|
|
713
|
+
* @param {string} hostKey
|
|
714
|
+
* @param {{ root: string, assetPaths: object, hostEntry?: object }} context
|
|
715
|
+
* @returns {Promise<{ host: string, status: 'ok' | 'error', checks: object[] }>}
|
|
716
|
+
*/
|
|
717
|
+
export async function runHostVerifyChecks(hostKey, { root, assetPaths, hostEntry }) {
|
|
718
|
+
const checks = [];
|
|
719
|
+
|
|
720
|
+
if (hostEntry) {
|
|
721
|
+
await collectVerifyCheck(checks, 'host_manifest_entry', async () => ({
|
|
722
|
+
summary: `Host guidance exists for ${hostEntry.label}.`,
|
|
723
|
+
primary_path: hostEntry.primary_path,
|
|
724
|
+
}));
|
|
725
|
+
}
|
|
726
|
+
|
|
727
|
+
const hostDefinition = INSTALL_HOST_DEFINITIONS[hostKey];
|
|
728
|
+
if (hostDefinition?.verify) {
|
|
729
|
+
await hostDefinition.verify({ checks, root, assetPaths, collectVerifyCheck });
|
|
730
|
+
} else {
|
|
731
|
+
checks.push({
|
|
732
|
+
id: 'host_handler',
|
|
733
|
+
status: 'error',
|
|
734
|
+
summary: `No verification handler is implemented for host "${hostKey}".`,
|
|
735
|
+
});
|
|
736
|
+
}
|
|
737
|
+
|
|
738
|
+
return {
|
|
739
|
+
host: hostKey,
|
|
740
|
+
status: checks.some((check) => check.status === 'error') ? 'error' : 'ok',
|
|
741
|
+
checks,
|
|
742
|
+
};
|
|
743
|
+
}
|
|
744
|
+
|
|
745
|
+
/**
|
|
746
|
+
* Deploy every host's assets into an ISOLATED throwaway repo root under a
|
|
747
|
+
* redirected `$HOME`/`USERPROFILE` (so the real user config is never touched),
|
|
748
|
+
* then re-run each host's `verify()` handler from the SAME INSTALL_HOST_DEFINITIONS
|
|
749
|
+
* table that drives the deploy. The set of hosts verified is derived from
|
|
750
|
+
* INSTALL_HOST_ORDER, so adding a host to the table auto-extends verification.
|
|
751
|
+
*
|
|
752
|
+
* Returns a structured report; callers (the `verify:hosts` script, tests) decide
|
|
753
|
+
* how to surface it. Never mutates the caller's environment beyond restoring the
|
|
754
|
+
* redirected HOME/USERPROFILE on the way out.
|
|
755
|
+
*
|
|
756
|
+
* @param {{ keepArtifacts?: boolean }} [options]
|
|
757
|
+
* @returns {Promise<{
|
|
758
|
+
* status: 'ok' | 'error',
|
|
759
|
+
* issue_count: number,
|
|
760
|
+
* verified_hosts: string[],
|
|
761
|
+
* home_dir: string,
|
|
762
|
+
* repo_root: string,
|
|
763
|
+
* hosts: { host: string, status: 'ok' | 'error', checks: object[] }[],
|
|
764
|
+
* }>}
|
|
765
|
+
*/
|
|
766
|
+
export async function verifyHostsIsolated(options = {}) {
|
|
767
|
+
// A temp $HOME guarantees a postinstall-style deploy (or any HOME-reading code
|
|
768
|
+
// path) can never write to the operator's real ~/.config — defense in depth on
|
|
769
|
+
// top of the throwaway repo root the bootstrap writes into.
|
|
770
|
+
const homeDir = await mkdtemp(join(tmpdir(), 'audit-code-verify-hosts-home-'));
|
|
771
|
+
const repoRoot = join(homeDir, 'repo');
|
|
772
|
+
const previousHome = process.env.HOME;
|
|
773
|
+
const previousUserProfile = process.env.USERPROFILE;
|
|
774
|
+
process.env.HOME = homeDir;
|
|
775
|
+
process.env.USERPROFILE = homeDir;
|
|
776
|
+
|
|
777
|
+
try {
|
|
778
|
+
await mkdir(repoRoot, { recursive: true });
|
|
779
|
+
// Deploy every host surface into the throwaway root from the canonical assets.
|
|
780
|
+
await installBootstrap(['--host', 'all', '--root', repoRoot], { quiet: true });
|
|
781
|
+
|
|
782
|
+
// Derive expectations from the SAME table the deploy uses: profile → asset
|
|
783
|
+
// paths → per-host verify(). INSTALL_HOST_ORDER is the source of truth for the
|
|
784
|
+
// verified host set.
|
|
785
|
+
const profile = getInstallProfile('all');
|
|
786
|
+
const assetPaths = buildInstallAssetPaths(repoRoot, profile);
|
|
787
|
+
const hostCatalog = new Map(
|
|
788
|
+
buildHostCatalog({ root: repoRoot, host: 'all', assets: assetPaths }).map(
|
|
789
|
+
(entry) => [entry.host, entry],
|
|
790
|
+
),
|
|
791
|
+
);
|
|
792
|
+
|
|
793
|
+
const hosts = [];
|
|
794
|
+
for (const hostKey of INSTALL_HOST_ORDER) {
|
|
795
|
+
hosts.push(
|
|
796
|
+
await runHostVerifyChecks(hostKey, {
|
|
797
|
+
root: repoRoot,
|
|
798
|
+
assetPaths,
|
|
799
|
+
hostEntry: hostCatalog.get(hostKey),
|
|
800
|
+
}),
|
|
801
|
+
);
|
|
802
|
+
}
|
|
803
|
+
|
|
804
|
+
const issueCount = hosts.reduce(
|
|
805
|
+
(sum, host) => sum + host.checks.filter((check) => check.status === 'error').length,
|
|
806
|
+
0,
|
|
807
|
+
);
|
|
808
|
+
|
|
809
|
+
return {
|
|
810
|
+
status: issueCount > 0 ? 'error' : 'ok',
|
|
811
|
+
issue_count: issueCount,
|
|
812
|
+
verified_hosts: [...INSTALL_HOST_ORDER],
|
|
813
|
+
home_dir: homeDir,
|
|
814
|
+
repo_root: repoRoot,
|
|
815
|
+
hosts,
|
|
816
|
+
};
|
|
817
|
+
} finally {
|
|
818
|
+
if (previousHome === undefined) delete process.env.HOME;
|
|
819
|
+
else process.env.HOME = previousHome;
|
|
820
|
+
if (previousUserProfile === undefined) delete process.env.USERPROFILE;
|
|
821
|
+
else process.env.USERPROFILE = previousUserProfile;
|
|
822
|
+
if (!options.keepArtifacts) {
|
|
823
|
+
await rm(homeDir, { recursive: true, force: true }).catch(() => {});
|
|
824
|
+
}
|
|
825
|
+
}
|
|
826
|
+
}
|
|
827
|
+
|
|
706
828
|
export async function verifyInstalledBootstrap(argv) {
|
|
707
829
|
const root = resolve(getFlag(argv, '--root') ?? '.');
|
|
708
830
|
const requestedHost = getFlag(argv, '--host')?.toLowerCase() ?? null;
|
|
@@ -820,40 +942,24 @@ export async function verifyInstalledBootstrap(argv) {
|
|
|
820
942
|
});
|
|
821
943
|
|
|
822
944
|
for (const hostKey of selectedHosts) {
|
|
823
|
-
const checks = [];
|
|
824
945
|
const hostEntry = hostCatalog.get(hostKey);
|
|
825
946
|
|
|
826
947
|
if (!hostEntry) {
|
|
827
|
-
|
|
828
|
-
|
|
948
|
+
hostResults.push({
|
|
949
|
+
host: hostKey,
|
|
829
950
|
status: 'error',
|
|
830
|
-
|
|
951
|
+
checks: [{
|
|
952
|
+
id: 'host_manifest_entry',
|
|
953
|
+
status: 'error',
|
|
954
|
+
summary: `Install manifest does not contain host guidance for "${hostKey}".`,
|
|
955
|
+
}],
|
|
831
956
|
});
|
|
832
|
-
hostResults.push({ host: hostKey, status: 'error', checks });
|
|
833
957
|
continue;
|
|
834
958
|
}
|
|
835
959
|
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
}));
|
|
840
|
-
|
|
841
|
-
const hostDefinition = INSTALL_HOST_DEFINITIONS[hostKey];
|
|
842
|
-
if (hostDefinition?.verify) {
|
|
843
|
-
await hostDefinition.verify({ checks, root, assetPaths, collectVerifyCheck });
|
|
844
|
-
} else {
|
|
845
|
-
checks.push({
|
|
846
|
-
id: 'host_handler',
|
|
847
|
-
status: 'error',
|
|
848
|
-
summary: `No verification handler is implemented for host "${hostKey}".`,
|
|
849
|
-
});
|
|
850
|
-
}
|
|
851
|
-
|
|
852
|
-
hostResults.push({
|
|
853
|
-
host: hostKey,
|
|
854
|
-
status: checks.some((check) => check.status === 'error') ? 'error' : 'ok',
|
|
855
|
-
checks,
|
|
856
|
-
});
|
|
960
|
+
hostResults.push(
|
|
961
|
+
await runHostVerifyChecks(hostKey, { root, assetPaths, hostEntry }),
|
|
962
|
+
);
|
|
857
963
|
}
|
|
858
964
|
|
|
859
965
|
const issueCount =
|
|
@@ -18,6 +18,7 @@ export declare function renderConfirmIntentPrompt(preDigest: ScopePreDigest, opt
|
|
|
18
18
|
* deterministically from the single shared intent interpreter.
|
|
19
19
|
*/
|
|
20
20
|
unresolvedConstraintClauses?: Array<{
|
|
21
|
+
clause_id: string;
|
|
21
22
|
text: string;
|
|
22
23
|
checkpoint_question: string;
|
|
23
24
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confirmIntentStep.d.ts","sourceRoot":"","sources":["../../../src/audit/cli/confirmIntentStep.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAyB,MAAM,6CAA6C,CAAC;AAsBzG;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,cAAc,EACzB,IAAI,EAAE;IACJ,oBAAoB,EAAE,MAAM,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB;;;;;;OAMG;IACH,2BAA2B,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"confirmIntentStep.d.ts","sourceRoot":"","sources":["../../../src/audit/cli/confirmIntentStep.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAyB,MAAM,6CAA6C,CAAC;AAsBzG;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,cAAc,EACzB,IAAI,EAAE;IACJ,oBAAoB,EAAE,MAAM,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB;;;;;;OAMG;IACH,2BAA2B,CAAC,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACvG,GACA,MAAM,CAoNR"}
|
|
@@ -73,12 +73,14 @@ export function renderConfirmIntentPrompt(preDigest, opts) {
|
|
|
73
73
|
"Your `free_form_intent` contains directive(s) that could NOT be encoded",
|
|
74
74
|
"as a lens weight, priority signal, or scope emphasis. They will be",
|
|
75
75
|
"**silently lost** unless you resolve them here — the audit will not",
|
|
76
|
-
"proceed past planning until each is answered. For every
|
|
77
|
-
"add a `constraint_clauses` entry (with the exact `
|
|
78
|
-
"text and a concrete `host_answer`) to
|
|
79
|
-
"the clause from `free_form_intent
|
|
76
|
+
"proceed past planning until each is answered. For every clause below,",
|
|
77
|
+
"add a `constraint_clauses` entry (with the exact `clause_id` shown, the",
|
|
78
|
+
"`checkpoint_question` text, and a concrete `host_answer`) to",
|
|
79
|
+
"`intent_checkpoint.json`, or remove the clause from `free_form_intent`.",
|
|
80
|
+
"Each clause is keyed by its `clause_id`, so answer **every** one — two",
|
|
81
|
+
"clauses that read alike still need separate entries:",
|
|
80
82
|
"",
|
|
81
|
-
...unresolvedClauses.map((c, i) => `${i + 1}. Clause: \`${c.text}\`\n Question: ${c.checkpoint_question}`),
|
|
83
|
+
...unresolvedClauses.map((c, i) => `${i + 1}. Clause: \`${c.text}\`\n clause_id: \`${c.clause_id}\`\n Question: ${c.checkpoint_question}`),
|
|
82
84
|
"",
|
|
83
85
|
]
|
|
84
86
|
: []),
|
|
@@ -189,7 +191,7 @@ export function renderConfirmIntentPrompt(preDigest, opts) {
|
|
|
189
191
|
' "scope_summary": "<what is in scope>",',
|
|
190
192
|
' "intent_summary": "<the goal, e.g. full-audit / security-focused>",',
|
|
191
193
|
' "free_form_intent": "<optional: what to focus on; interpreted into lens/priority signals at planning, never threaded verbatim into worker prompts>",',
|
|
192
|
-
' "constraint_clauses": [{ "text": "<unencodable clause>", "checkpoint_question": "<the question above>", "host_answer": "<how to apply it>" }],',
|
|
194
|
+
' "constraint_clauses": [{ "clause_id": "<the clause_id above>", "text": "<unencodable clause>", "checkpoint_question": "<the question above>", "host_answer": "<how to apply it>" }],',
|
|
193
195
|
' "excluded_scope": [{ "path": "<path or prefix>", "reason": "<why>" }],',
|
|
194
196
|
' "must_not_touch": ["<glob>"],',
|
|
195
197
|
' "disposition_overrides": [{ "path": "<path>", "status": "<generated|vendor|excluded|...>", "reason": "<why>" }],',
|
|
@@ -198,10 +200,12 @@ export function renderConfirmIntentPrompt(preDigest, opts) {
|
|
|
198
200
|
"}",
|
|
199
201
|
"```",
|
|
200
202
|
"",
|
|
201
|
-
"- `constraint_clauses` resolves the blocking
|
|
202
|
-
" `free_form_intent` clause needs one entry
|
|
203
|
-
"
|
|
204
|
-
"
|
|
203
|
+
"- `constraint_clauses` resolves the blocking clauses above: each unencodable",
|
|
204
|
+
" `free_form_intent` clause needs one entry carrying its `clause_id` and a",
|
|
205
|
+
" concrete `host_answer`. Resolution is keyed on `clause_id`, so each distinct",
|
|
206
|
+
" clause must be answered individually. Until every blocking clause is answered",
|
|
207
|
+
" (or its clause removed from `free_form_intent`), this confirm-intent step",
|
|
208
|
+
" re-fires and planning is held.",
|
|
205
209
|
"- `excluded_scope` entries are pruned from planning so excluded files never",
|
|
206
210
|
" become audit tasks, and they are listed in the final report under",
|
|
207
211
|
' "Excluded / Out-of-Scope".',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confirmIntentStep.js","sourceRoot":"","sources":["../../../src/audit/cli/confirmIntentStep.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"confirmIntentStep.js","sourceRoot":"","sources":["../../../src/audit/cli/confirmIntentStep.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quotaPool.d.ts","sourceRoot":"","sources":["../../../../src/audit/cli/dispatch/quotaPool.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EACL,uBAAuB,EAQxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACV,YAAY,EAEZ,aAAa,EACd,MAAM,sBAAsB,CAAC;AAO9B,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;;;;OAKG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;CACvD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE;IAC9C,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrC,WAAW,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IACxF,uBAAuB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACnD,0EAA0E;IAC1E,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,0EAA0E;IAC1E,eAAe,CAAC,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAAC;IAChD,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,GAAG,OAAO,CAAC,oBAAoB,CAAC,
|
|
1
|
+
{"version":3,"file":"quotaPool.d.ts","sourceRoot":"","sources":["../../../../src/audit/cli/dispatch/quotaPool.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EACL,uBAAuB,EAQxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACV,YAAY,EAEZ,aAAa,EACd,MAAM,sBAAsB,CAAC;AAO9B,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;;;;OAKG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;CACvD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE;IAC9C,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrC,WAAW,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IACxF,uBAAuB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACnD,0EAA0E;IAC1E,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,0EAA0E;IAC1E,eAAe,CAAC,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAAC;IAChD,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA6GhC;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,aAAa,CAAC;IAC7B,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,8DAA8D;IAC9D,eAAe,CAAC,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAAC;IAChD,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;CACxD,GAAG,OAAO,CAAC;IACV,aAAa,EAAE,aAAa,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC;IAChF,gBAAgB,EAAE,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;CAC9D,CAAC,CAyCD"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { join } from "node:path";
|
|
2
|
-
import { writeJsonFile } from "audit-tools/shared";
|
|
2
|
+
import { writeJsonFile, buildHostModelPools } from "audit-tools/shared";
|
|
3
3
|
import { DEFAULT_EMPIRICAL_HALF_LIFE_HOURS } from "audit-tools/shared";
|
|
4
4
|
import { buildQuotaSource } from "audit-tools/shared/quota/compositeQuotaSource";
|
|
5
5
|
import { resolveFreshSessionProviderName } from "../../providers/index.js";
|
|
@@ -50,23 +50,6 @@ export async function buildDispatchPool(params) {
|
|
|
50
50
|
// queried and cached limits for context/output (the discovered-capability
|
|
51
51
|
// rung then sizes the partition to the real window). RPM/TPM stay null in
|
|
52
52
|
// the capability entry and fill from the queried/cached sources.
|
|
53
|
-
const buildPool = async (capability, rank, modelId) => {
|
|
54
|
-
const poolKey = modelId
|
|
55
|
-
? buildProviderModelKey(quotaProviderName, modelId)
|
|
56
|
-
: quotaProviderKey;
|
|
57
|
-
const dispatchCachedLimits = await lookupDiscoveredLimits(poolKey).catch(() => null);
|
|
58
|
-
const quotaSourceSnapshot = await quotaSource.queryCurrentUsage(poolKey).catch(() => null);
|
|
59
|
-
return {
|
|
60
|
-
id: poolKey,
|
|
61
|
-
providerName: quotaProviderName,
|
|
62
|
-
hostModel,
|
|
63
|
-
...(rank ? { rank } : {}),
|
|
64
|
-
hostConcurrencyLimit,
|
|
65
|
-
quotaStateEntry: quotaState.entries[poolKey] ?? null,
|
|
66
|
-
discoveredLimits: mergeDiscoveredLimits(capability, providerLimits, dispatchCachedLimits),
|
|
67
|
-
quotaSourceSnapshot,
|
|
68
|
-
};
|
|
69
|
-
};
|
|
70
53
|
const probeBudget = (pool) => {
|
|
71
54
|
const probe = computeDispatchCapacity({
|
|
72
55
|
pools: [pool],
|
|
@@ -76,18 +59,53 @@ export async function buildDispatchPool(params) {
|
|
|
76
59
|
const limits = probe.primary.schedule.resolved_limits;
|
|
77
60
|
return Math.max(1, limits.context_tokens - limits.output_tokens);
|
|
78
61
|
};
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
62
|
+
// Single-window capability limits (scalar handshake / nothing reported) — defined
|
|
63
|
+
// before `resolve` so the single-pool path can fall back to it.
|
|
64
|
+
const hostCapabilityLimits = params.hostContextTokens != null || params.hostOutputTokens != null
|
|
65
|
+
? {
|
|
66
|
+
context_tokens: params.hostContextTokens ?? null,
|
|
67
|
+
output_tokens: params.hostOutputTokens ?? null,
|
|
68
|
+
source: "host_capability",
|
|
69
|
+
}
|
|
70
|
+
: null;
|
|
71
|
+
// The per-tool resolve for the SHARED host-pool-from-roster core: audit's pool key
|
|
72
|
+
// (quotaProviderKey for the single pool; per-rank model_id for a roster) and its
|
|
73
|
+
// richer discovered-limits — the capability handshake merged FIRST (so it outranks
|
|
74
|
+
// context/output) with the queried + learned-cache limits.
|
|
75
|
+
const resolve = async (entry) => {
|
|
76
|
+
const poolKey = entry?.model_id
|
|
77
|
+
? buildProviderModelKey(quotaProviderName, entry.model_id)
|
|
78
|
+
: quotaProviderKey;
|
|
79
|
+
const dispatchCachedLimits = await lookupDiscoveredLimits(poolKey).catch(() => null);
|
|
80
|
+
const capability = entry
|
|
81
|
+
? {
|
|
85
82
|
context_tokens: entry.context_tokens,
|
|
86
83
|
output_tokens: entry.output_tokens,
|
|
87
84
|
source: "host_capability",
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
|
|
85
|
+
}
|
|
86
|
+
: hostCapabilityLimits;
|
|
87
|
+
return {
|
|
88
|
+
poolKey,
|
|
89
|
+
discoveredLimits: mergeDiscoveredLimits(capability, providerLimits, dispatchCachedLimits),
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
const roster = params.hostModelRoster ?? null;
|
|
93
|
+
const pools = await buildHostModelPools({
|
|
94
|
+
providerName: quotaProviderName,
|
|
95
|
+
hostModel,
|
|
96
|
+
hostConcurrencyLimit,
|
|
97
|
+
quotaSource,
|
|
98
|
+
quotaEntries: quotaState.entries,
|
|
99
|
+
roster,
|
|
100
|
+
resolve,
|
|
101
|
+
});
|
|
102
|
+
// Audit-specific budget layer on the shared pools: per-tier budgets from a roster,
|
|
103
|
+
// else the single pool's budget shared across every tier.
|
|
104
|
+
if (roster && roster.length > 0) {
|
|
105
|
+
const perRank = new Map();
|
|
106
|
+
for (const pool of pools) {
|
|
107
|
+
if (pool.rank)
|
|
108
|
+
perRank.set(pool.rank, probeBudget(pool));
|
|
91
109
|
}
|
|
92
110
|
const tierBudgets = resolveTierBudgets(perRank);
|
|
93
111
|
return {
|
|
@@ -97,20 +115,10 @@ export async function buildDispatchPool(params) {
|
|
|
97
115
|
tierBudgets,
|
|
98
116
|
};
|
|
99
117
|
}
|
|
100
|
-
// Single-window handshake (scalar shorthand) or no handshake at all: one
|
|
101
|
-
// pool, conservative floor when nothing was reported — unchanged behavior.
|
|
102
|
-
const hostCapabilityLimits = params.hostContextTokens != null || params.hostOutputTokens != null
|
|
103
|
-
? {
|
|
104
|
-
context_tokens: params.hostContextTokens ?? null,
|
|
105
|
-
output_tokens: params.hostOutputTokens ?? null,
|
|
106
|
-
source: "host_capability",
|
|
107
|
-
}
|
|
108
|
-
: null;
|
|
109
|
-
const hostPool = await buildPool(hostCapabilityLimits);
|
|
110
118
|
return {
|
|
111
|
-
pools
|
|
119
|
+
pools,
|
|
112
120
|
hostModel,
|
|
113
|
-
contextBudgetTokens: probeBudget(
|
|
121
|
+
contextBudgetTokens: probeBudget(pools[0]),
|
|
114
122
|
tierBudgets: null,
|
|
115
123
|
};
|
|
116
124
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quotaPool.js","sourceRoot":"","sources":["../../../../src/audit/cli/dispatch/quotaPool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"quotaPool.js","sourceRoot":"","sources":["../../../../src/audit/cli/dispatch/quotaPool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type { SessionConfig } from "audit-tools/shared";
|
|
1
|
+
import type { SessionConfig, CapacityPool } from "audit-tools/shared";
|
|
2
2
|
import type { HostModelRosterEntry, ProviderRateLimits } from "audit-tools/shared";
|
|
3
|
+
import type { AuditTask } from "../types.js";
|
|
3
4
|
import { type ActiveDispatchState, type DispatchResultMapEntry, type DispatchResultMap, DISPATCH_RESULT_MAP_FILENAME, ACTIVE_DISPATCH_FILENAME } from "./dispatch/types.js";
|
|
4
5
|
import { LARGE_FILE_PACKET_TARGET_LINES, type DispatchComplexity, type DispatchFanout, type PrepareDispatchResult, type DispatchPlanEntry, DEFAULT_DEEP_ROUTING_RISK, DEFAULT_STANDARD_ROUTING_RISK, DEFAULT_DISPATCH_CONFIRM_THRESHOLD, DEEP_MODEL_HINT_MIN_ESTIMATED_TOKENS } from "./dispatch/types.js";
|
|
5
6
|
import { resolveDispatchTier, resolveTierBudgets, computeDispatchFanout, TIER_RANK } from "./dispatch/tierRouting.js";
|
|
@@ -25,5 +26,18 @@ export declare function prepareDispatchArtifacts(params: {
|
|
|
25
26
|
hostModelRoster?: HostModelRosterEntry[] | null;
|
|
26
27
|
/** Opaque model identity for the quota key when no model name resolves. */
|
|
27
28
|
hostModelId?: string | null;
|
|
29
|
+
/**
|
|
30
|
+
* Restrict packetization to an explicit task subset (A-8 hybrid): the in-process
|
|
31
|
+
* driver reviews ONLY its coordinator-assigned partition WITHOUT reading or
|
|
32
|
+
* rewriting the shared `pending-audit-tasks.json` the host-review path owns for
|
|
33
|
+
* its own (complementary) subset. Absent → the usual file-or-bundle task source.
|
|
34
|
+
*/
|
|
35
|
+
tasksOverride?: AuditTask[];
|
|
36
|
+
/**
|
|
37
|
+
* Override the confirmed capacity pools (A-8 hybrid): the in-process driver sizes
|
|
38
|
+
* + dispatches against the backend (NIM) pool(s) only, not the host pool it is
|
|
39
|
+
* spilling off of. Absent → the host-model pools from `buildDispatchPool`.
|
|
40
|
+
*/
|
|
41
|
+
poolsOverride?: CapacityPool[];
|
|
28
42
|
}): Promise<PrepareDispatchResult>;
|
|
29
43
|
//# sourceMappingURL=dispatch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../../src/audit/cli/dispatch.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../../src/audit/cli/dispatch.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAKnF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,4BAA4B,EAC5B,wBAAwB,EACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,8BAA8B,EAC9B,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,yBAAyB,EACzB,6BAA6B,EAC7B,kCAAkC,EAClC,oCAAoC,EACrC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,SAAS,EACV,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,sBAAsB,EACtB,aAAa,EAEb,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAEL,iBAAiB,EACjB,iBAAiB,EAElB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,UAAU,EACV,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACpB,MAAM,qBAAqB,CAAC;AAO7B,YAAY,EACV,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,qBAAqB,EACrB,iBAAiB,GAClB,CAAC;AACF,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,8BAA8B,EAC9B,yBAAyB,EACzB,6BAA6B,EAC7B,kCAAkC,EAClC,oCAAoC,EACpC,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,SAAS,EACT,yBAAyB,EACzB,uBAAuB,EACvB,sBAAsB,EACtB,aAAa,EACb,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,mBAAmB,GACpB,CAAC;AAIF,wBAAsB,wBAAwB,CAAC,MAAM,EAAE;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IAC3E,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,0EAA0E;IAC1E,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,0EAA0E;IAC1E,eAAe,CAAC,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAAC;IAChD,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,SAAS,EAAE,CAAC;IAC5B;;;;OAIG;IACH,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;CAChC,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAwVjC"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
import { existsSync } from "node:fs";
|
|
11
11
|
import { mkdir, writeFile } from "node:fs/promises";
|
|
12
12
|
import { join } from "node:path";
|
|
13
|
-
import { readJsonFile, writeJsonFile } from "audit-tools/shared";
|
|
13
|
+
import { readJsonFile, writeJsonFile, computeDispatchCapacity } from "audit-tools/shared";
|
|
14
14
|
import { isFileMissingError } from "audit-tools/shared";
|
|
15
15
|
import { loadArtifactBundle } from "../io/artifacts.js";
|
|
16
16
|
import { writePacketSchemaFiles } from "../io/runArtifacts.js";
|
|
@@ -43,14 +43,18 @@ export async function prepareDispatchArtifacts(params) {
|
|
|
43
43
|
}
|
|
44
44
|
const bundle = await loadArtifactBundle(artifactsDir);
|
|
45
45
|
const tasksPath = join(runDir, "pending-audit-tasks.json");
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
46
|
+
// A-8 hybrid: an explicit task subset (the in-process driver's coordinator-assigned
|
|
47
|
+
// partition) bypasses the shared pending-audit-tasks.json the host-review path owns
|
|
48
|
+
// for its complementary subset — so the two drivers never review the same task.
|
|
49
|
+
const tasks = params.tasksOverride ??
|
|
50
|
+
(await readJsonFile(tasksPath).catch(async (error) => {
|
|
51
|
+
if (isFileMissingError(error)) {
|
|
52
|
+
const generated = buildPendingAuditTasks(bundle);
|
|
53
|
+
await writeJsonFile(tasksPath, generated);
|
|
54
|
+
return generated;
|
|
55
|
+
}
|
|
56
|
+
throw error;
|
|
57
|
+
}));
|
|
54
58
|
const sessionConfig = params.sessionConfig ?? (await loadSessionConfig(artifactsDir).catch(() => ({})));
|
|
55
59
|
const lensDefsPath = join(params.packageRoot, "dispatch", "lens-definitions.json");
|
|
56
60
|
const lensDefs = await readJsonFile(lensDefsPath);
|
|
@@ -79,16 +83,37 @@ export async function prepareDispatchArtifacts(params) {
|
|
|
79
83
|
// first, then partition the provider-neutral task-affinity graph into packets
|
|
80
84
|
// sized to that budget (JIT). This replaces the frozen plan-time packet cap —
|
|
81
85
|
// a run started under one model re-partitions cleanly under another's window.
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
86
|
+
// A-8 hybrid: when the caller pins the backend (NIM) pool(s), size packetization to
|
|
87
|
+
// THAT pool's window (through the shared capacity fold) and dispatch against it — so
|
|
88
|
+
// the in-process driver reviews its partition on the backend it spilled onto, not the
|
|
89
|
+
// host pool. Otherwise resolve the host-model pools from the handshake as usual.
|
|
90
|
+
let dispatchPool;
|
|
91
|
+
if (params.poolsOverride && params.poolsOverride.length > 0) {
|
|
92
|
+
const probe = computeDispatchCapacity({
|
|
93
|
+
pools: params.poolsOverride,
|
|
94
|
+
sessionConfig,
|
|
95
|
+
pendingItemTokens: [],
|
|
96
|
+
});
|
|
97
|
+
const limits = probe.primary.schedule.resolved_limits;
|
|
98
|
+
dispatchPool = {
|
|
99
|
+
pools: params.poolsOverride,
|
|
100
|
+
hostModel: params.hostModel ?? null,
|
|
101
|
+
contextBudgetTokens: Math.max(1, limits.context_tokens - limits.output_tokens),
|
|
102
|
+
tierBudgets: null,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
dispatchPool = await buildDispatchPool({
|
|
107
|
+
sessionConfig,
|
|
108
|
+
hostModel: params.hostModel,
|
|
109
|
+
queryLimits: params.queryLimits,
|
|
110
|
+
hostActiveSubagentLimit: params.hostActiveSubagentLimit,
|
|
111
|
+
hostContextTokens: params.hostContextTokens,
|
|
112
|
+
hostOutputTokens: params.hostOutputTokens,
|
|
113
|
+
hostModelRoster: params.hostModelRoster,
|
|
114
|
+
hostModelId: params.hostModelId,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
92
117
|
const taskGraph = resolveDispatchTaskGraph(bundle, orderedTasks);
|
|
93
118
|
let packets = buildReviewPacketsFromPartition(orderedTasks, {
|
|
94
119
|
graph: taskGraph,
|
|
@@ -253,6 +278,15 @@ export async function prepareDispatchArtifacts(params) {
|
|
|
253
278
|
// exclude them under a budget cap (present only when actually capped).
|
|
254
279
|
const deferredPacketIds = deferredPackets.map((packet) => packet.packet_id);
|
|
255
280
|
const deferredTaskIds = deferredPackets.flatMap((packet) => packet.task_ids);
|
|
281
|
+
// Carry forward the resumable DC-4 pause across re-preparation: a paused rolling
|
|
282
|
+
// run re-prepares its dispatch plan each pass, so a fresh artifact would clobber
|
|
283
|
+
// the persisted `paused_state` (settled exclusions + pause_count) and reset the
|
|
284
|
+
// run to pause-0 forever. Preserve it for the SAME run id so `advanceRollingPause`
|
|
285
|
+
// reads the prior pause and advances it toward resume-or-livelock.
|
|
286
|
+
const priorActiveDispatch = await readJsonFile(join(artifactsDir, ACTIVE_DISPATCH_FILENAME)).catch(() => null);
|
|
287
|
+
const carriedPausedState = priorActiveDispatch?.run_id === runId
|
|
288
|
+
? priorActiveDispatch.paused_state
|
|
289
|
+
: undefined;
|
|
256
290
|
const activeDispatch = {
|
|
257
291
|
run_id: runId,
|
|
258
292
|
created_at: new Date().toISOString(),
|
|
@@ -266,6 +300,7 @@ export async function prepareDispatchArtifacts(params) {
|
|
|
266
300
|
deferred_task_ids: deferredTaskIds,
|
|
267
301
|
}
|
|
268
302
|
: {}),
|
|
303
|
+
...(carriedPausedState ? { paused_state: carriedPausedState } : {}),
|
|
269
304
|
};
|
|
270
305
|
await writeJsonFile(join(artifactsDir, ACTIVE_DISPATCH_FILENAME), activeDispatch);
|
|
271
306
|
// FINDING-012: pure-arithmetic fan-out summary the loader can gate on.
|