@tangle-network/agent-knowledge 1.11.2 → 1.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +37 -1
- package/dist/index.js +112 -3
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -937,6 +937,42 @@ interface KnowledgeDiscoveryDispatcher {
|
|
|
937
937
|
signal?: AbortSignal;
|
|
938
938
|
}): Promise<DiscoveryResult[]>;
|
|
939
939
|
}
|
|
940
|
+
type DiscoveryLoopStopReason = 'complete' | 'max-rounds' | 'max-tasks' | 'aborted';
|
|
941
|
+
interface DiscoveryLoopRound {
|
|
942
|
+
round: number;
|
|
943
|
+
tasks: DiscoveryTask[];
|
|
944
|
+
results: DiscoveryResult[];
|
|
945
|
+
queuedFollowUps: DiscoveryTask[];
|
|
946
|
+
}
|
|
947
|
+
interface DiscoveryLoopResult {
|
|
948
|
+
stopReason: DiscoveryLoopStopReason;
|
|
949
|
+
tasksDispatched: number;
|
|
950
|
+
results: DiscoveryResult[];
|
|
951
|
+
rounds: DiscoveryLoopRound[];
|
|
952
|
+
/** Tasks retained, not dropped, when a configured limit stops the loop. */
|
|
953
|
+
pendingTasks: DiscoveryTask[];
|
|
954
|
+
/** Structurally identical task identities ignored to prevent cycles. */
|
|
955
|
+
duplicateTaskIds: string[];
|
|
956
|
+
}
|
|
957
|
+
interface RunDiscoveryLoopOptions {
|
|
958
|
+
dispatcher: KnowledgeDiscoveryDispatcher;
|
|
959
|
+
initialTasks: readonly DiscoveryTask[];
|
|
960
|
+
/** Maximum follow-up depth including the initial dispatch. Default 3. */
|
|
961
|
+
maxRounds?: number;
|
|
962
|
+
/** Maximum tasks dispatched across all rounds. Default 24. */
|
|
963
|
+
maxTasks?: number;
|
|
964
|
+
/** Forwarded to the dispatcher. Default 4. */
|
|
965
|
+
concurrency?: number;
|
|
966
|
+
signal?: AbortSignal;
|
|
967
|
+
onRound?: (round: DiscoveryLoopRound) => Promise<void> | void;
|
|
968
|
+
}
|
|
969
|
+
/**
|
|
970
|
+
* Dispatch discovery tasks and recursively pursue worker-proposed follow-ups.
|
|
971
|
+
*
|
|
972
|
+
* The runner owns only bounded scheduling and accounting. Workers own search,
|
|
973
|
+
* source verification, and domain-specific candidate shapes.
|
|
974
|
+
*/
|
|
975
|
+
declare function runDiscoveryLoop(options: RunDiscoveryLoopOptions): Promise<DiscoveryLoopResult>;
|
|
940
976
|
declare function createLocalDiscoveryDispatcher(worker: KnowledgeDiscoveryWorker): KnowledgeDiscoveryDispatcher;
|
|
941
977
|
|
|
942
978
|
interface KnowledgeEventQuery {
|
|
@@ -2480,4 +2516,4 @@ declare function normalizeLinkTarget(target: string): string;
|
|
|
2480
2516
|
declare function isSafeKnowledgePath(path: string, allowedPrefixes?: string[]): boolean;
|
|
2481
2517
|
declare function parseKnowledgeWriteBlocks(text: string, allowedPrefixes?: string[]): KnowledgeWriteParseResult;
|
|
2482
2518
|
|
|
2483
|
-
export { type AdaptiveDecision, type AdaptiveDriverOptions, type AdaptiveResearchDriver, type AdaptiveStats, type AddSourceOptions, type AddSourceTextInput, type ApplyWriteBlocksResult, type BuildEvalKnowledgeBundleOptions, type ChunkingOptions, type ClaimGroundingDriverOptions, type CompanyEvalCase, type D1Adapter, type DedupReason, type DeepQuestion, type DeepQuestionKind, type DefineReadinessSpecInput, type DetectChangesOptions, type DetectChangesResult, type DiscoveryResult, type DiscoveryTask, type DriverResearchContext, type EvalKnowledgeBundleBuildResult, type EvaluateKnowledgeBaseReadinessOptions, type ExpectedGroup, type ExternalRagEvalScore, type FactResult, type FileSystemFreshnessStoreOptions, FileSystemKbStore, type FreshnessKey, type FreshnessMark, type FreshnessRecord, type FreshnessTtl, type GroundClaimOptions, type GroundingResult, type KbStore, KnowledgeBaseCandidateSchema, type KnowledgeBaseQualityOptions, type KnowledgeBaseQualityReport, type KnowledgeBaseReadinessEvaluation, type KnowledgeChange, type KnowledgeChangeKind, type KnowledgeChunk, KnowledgeClaim, type KnowledgeControlLoopAction, type KnowledgeControlLoopActionResult, type KnowledgeControlLoopAdapter, type KnowledgeControlLoopAdapterOptions, type KnowledgeControlLoopState, type KnowledgeDiscoveryDispatcher, type KnowledgeDiscoveryWorker, KnowledgeEvent, type KnowledgeEventQuery, KnowledgeEventSchema, KnowledgeEventType, type KnowledgeExplanation, KnowledgeFragment, type KnowledgeFreshnessStore, type KnowledgeGap, KnowledgeGraph, KnowledgeGraphEdgeSchema, KnowledgeGraphNodeSchema, type KnowledgeImprovementCandidateRecord, type KnowledgeImprovementEvaluationInput, type KnowledgeImprovementEvaluator, type KnowledgeImprovementLifecycleRecord, type KnowledgeImprovementMetric, type KnowledgeImprovementOptions, type KnowledgeImprovementResult, type KnowledgeImprovementRetrievalOptions, type KnowledgeImprovementRunState, type KnowledgeImprovementStatus, type KnowledgeImprovementUpdate, type KnowledgeImprovementUpdateInput, KnowledgeIndex, KnowledgeIndexSchema, type KnowledgeInspection, type KnowledgeLayout, KnowledgeLintFinding, KnowledgePage, KnowledgePageSchema, type KnowledgeProposal, KnowledgeProposalParseError, type KnowledgeReadinessSpec, KnowledgeRelease, type KnowledgeReleaseInput, type KnowledgeReleaseReport, type KnowledgeResearchLoopContext, type KnowledgeResearchLoopDecision, type KnowledgeResearchLoopResult, type KnowledgeResearchLoopStep, KnowledgeSearchResult, KnowledgeWriteBlock, KnowledgeWriteParseResult, type MaterialFact, type MaterialFactLens, type MaterialFactsResult, MemoryKbStore, type ParsedFrontmatter, type ProposeFromFindingsResult, READINESS_SPEC_DEFAULTS, type RagAnswerEvalArtifact, type RagAnswerEvalCase, type RagAnswerEvalScenario, type RagAnswerMetricSummary, type RagAnswerQualityHookOptions, type RagAnswerQualityInput, type RagAnswerQualityJudgeOptions, type RagAnswerQualityResult, type RagCalibrationOptions, type RagCalibrationResult, type RagDiagnosisInput, type RagEvalCitation, type RagEvalClaim, type RagEvalContext, type RagEvalMetricKey, type RagEvalProvider, type RagEvalSlice, type RagGapFinding, type RagGapKind, type RagGapSeverity, type RagKnowledgeAcquisitionInput, type RagKnowledgeImprovementPhase, type RagKnowledgeImprovementPhaseResult, type RagKnowledgeImprovementPhaseStatus, type RagKnowledgeResearchOptions, type RagKnowledgeUpdateInput, type RagKnowledgeUpdateResult, type RagPhaseInputBase, type RagPromotionInput, type RagPromotionResult, type RagRequiredContext, type RejectedSource, type ResearchContribution, type ResearchDriver, type ResearchDrivingDriver, type ResearchDrivingDriverOptions, type ResearchDrivingState, type ResearchDrivingSteer, type ResearchSourceProposal, type ResearchWorker, RetrievalConfig, type RouterClient, RouterError, type RouterUsage, type RunKnowledgeResearchLoopOptions, type RunRagKnowledgeImprovementLoopOptions, type RunRagKnowledgeImprovementLoopResult, RunRetrievalImprovementLoopOptions, RunRetrievalImprovementLoopResult, SCAFFOLD_PAGE_BASENAMES, type SourceAdapter, type SourceAdapterInput, type SourceAdapterOutput, SourceAnchorSchema, type SourceFreshnessInspection, SourceRecord, SourceRecordSchema, SourceRegistry, type SourceVerdict, type SourceVerificationContext, type TangleRouterOptions, type ThesisRunOptions, type ThesisRunResult, type ThesisTaskInput, type TrackedClaim, type TriageClass, type TwoAgentResearchLoopOptions, type TwoAgentResearchLoopResult, type TwoAgentResearchRound, type ValidateKnowledgeOptions, type ValidateKnowledgeResult, type VerifiedResearchLoopOptions, type VerifiedResearchLoopResult, type VerifiedResearchRound, type VerifyingDriverOptions, WIKILINK_REGEX, type WebResearchWorkerOptions, type WebSearchHit, type WorkerClaimDecorationOptions, type WorkerResearchContext, addSourcePath, addSourceText, applyKnowledgeWriteBlocks, applyKnowledgeWriteBlocksFile, buildEvalKnowledgeBundle, buildKnowledgeGraph, buildKnowledgeIndex, calibrateRagAnswerJudge, canonicalizeUrl, chunkMarkdown, citedClaimKey, citedClaimOf, contentKey, createAdaptiveResearchDriver, createClaimDecorator, createClaimGroundingVerifier, createCollectionResearchDriver, createD1FreshnessStoreStub, createFileSystemFreshnessStore, createKnowledgeControlLoopAdapter, createKnowledgeEvent, createLocalDiscoveryDispatcher, createRagAnswerQualityHook, createResearchDrivingDriver, createTangleRouterClient, createVerifyingResearchDriver, createWebResearchWorker, defineReadinessSpec, detectChanges, diagnoseRagAnswerFailure, evaluateKnowledgeBaseReadiness, explainKnowledgeTarget, extractWikilinks, formatFrontmatter, gradeCompanyAgainstText, gradeFactAgainstText, groundClaimInText, hashKnowledgeBase, improveKnowledgeBase, initKnowledgeBase, inspectKnowledgeIndex, investmentThesisSet, isSafeKnowledgePath, isScaffoldPath, kbIndexToText, knowledgeImprovementRunDir, knowledgeImprovementRunId, knowledgeReleaseReport, layoutFor, lensDistribution, lintKnowledgeIndex, loadKnowledgeImprovementState, loadKnowledgePages, loadSourceRegistry, materialFactsSurfaced, materialFactsSurfacedInText, mediaTypeFor, normalizeExternalRagScores, normalizeLinkTarget, parseFrontmatter, parseKnowledgeWriteBlocks, proposeFromFinding, proposeFromFindings, ragAnswerQualityJudge, reciprocalRankFusion, runInvestmentThesisTask, runKnowledgeResearchLoop, runRagKnowledgeImprovementLoop, runTwoAgentResearchLoop, runVerifiedResearchLoop, scoreKnowledgeBaseIndex, scoreRagAnswerArtifact, searchKnowledge, sha256, slugify, sourceMatchesGaps, sourceRegistryPath, stableId, stripFrontmatter, textSourceAdapter, thesisReadinessSpecs, toDeepEvalTestCases, toRagCheckerRecords, toRagasEvaluationRows, toTruLensRecords, tokenizeQuery, totalMaterialFacts, triageSource, validateKnowledgeIndex, withCitedClaim, writeJson, writeKnowledgeIndex, writeSourceRegistry };
|
|
2519
|
+
export { type AdaptiveDecision, type AdaptiveDriverOptions, type AdaptiveResearchDriver, type AdaptiveStats, type AddSourceOptions, type AddSourceTextInput, type ApplyWriteBlocksResult, type BuildEvalKnowledgeBundleOptions, type ChunkingOptions, type ClaimGroundingDriverOptions, type CompanyEvalCase, type D1Adapter, type DedupReason, type DeepQuestion, type DeepQuestionKind, type DefineReadinessSpecInput, type DetectChangesOptions, type DetectChangesResult, type DiscoveryLoopResult, type DiscoveryLoopRound, type DiscoveryLoopStopReason, type DiscoveryResult, type DiscoveryTask, type DriverResearchContext, type EvalKnowledgeBundleBuildResult, type EvaluateKnowledgeBaseReadinessOptions, type ExpectedGroup, type ExternalRagEvalScore, type FactResult, type FileSystemFreshnessStoreOptions, FileSystemKbStore, type FreshnessKey, type FreshnessMark, type FreshnessRecord, type FreshnessTtl, type GroundClaimOptions, type GroundingResult, type KbStore, KnowledgeBaseCandidateSchema, type KnowledgeBaseQualityOptions, type KnowledgeBaseQualityReport, type KnowledgeBaseReadinessEvaluation, type KnowledgeChange, type KnowledgeChangeKind, type KnowledgeChunk, KnowledgeClaim, type KnowledgeControlLoopAction, type KnowledgeControlLoopActionResult, type KnowledgeControlLoopAdapter, type KnowledgeControlLoopAdapterOptions, type KnowledgeControlLoopState, type KnowledgeDiscoveryDispatcher, type KnowledgeDiscoveryWorker, KnowledgeEvent, type KnowledgeEventQuery, KnowledgeEventSchema, KnowledgeEventType, type KnowledgeExplanation, KnowledgeFragment, type KnowledgeFreshnessStore, type KnowledgeGap, KnowledgeGraph, KnowledgeGraphEdgeSchema, KnowledgeGraphNodeSchema, type KnowledgeImprovementCandidateRecord, type KnowledgeImprovementEvaluationInput, type KnowledgeImprovementEvaluator, type KnowledgeImprovementLifecycleRecord, type KnowledgeImprovementMetric, type KnowledgeImprovementOptions, type KnowledgeImprovementResult, type KnowledgeImprovementRetrievalOptions, type KnowledgeImprovementRunState, type KnowledgeImprovementStatus, type KnowledgeImprovementUpdate, type KnowledgeImprovementUpdateInput, KnowledgeIndex, KnowledgeIndexSchema, type KnowledgeInspection, type KnowledgeLayout, KnowledgeLintFinding, KnowledgePage, KnowledgePageSchema, type KnowledgeProposal, KnowledgeProposalParseError, type KnowledgeReadinessSpec, KnowledgeRelease, type KnowledgeReleaseInput, type KnowledgeReleaseReport, type KnowledgeResearchLoopContext, type KnowledgeResearchLoopDecision, type KnowledgeResearchLoopResult, type KnowledgeResearchLoopStep, KnowledgeSearchResult, KnowledgeWriteBlock, KnowledgeWriteParseResult, type MaterialFact, type MaterialFactLens, type MaterialFactsResult, MemoryKbStore, type ParsedFrontmatter, type ProposeFromFindingsResult, READINESS_SPEC_DEFAULTS, type RagAnswerEvalArtifact, type RagAnswerEvalCase, type RagAnswerEvalScenario, type RagAnswerMetricSummary, type RagAnswerQualityHookOptions, type RagAnswerQualityInput, type RagAnswerQualityJudgeOptions, type RagAnswerQualityResult, type RagCalibrationOptions, type RagCalibrationResult, type RagDiagnosisInput, type RagEvalCitation, type RagEvalClaim, type RagEvalContext, type RagEvalMetricKey, type RagEvalProvider, type RagEvalSlice, type RagGapFinding, type RagGapKind, type RagGapSeverity, type RagKnowledgeAcquisitionInput, type RagKnowledgeImprovementPhase, type RagKnowledgeImprovementPhaseResult, type RagKnowledgeImprovementPhaseStatus, type RagKnowledgeResearchOptions, type RagKnowledgeUpdateInput, type RagKnowledgeUpdateResult, type RagPhaseInputBase, type RagPromotionInput, type RagPromotionResult, type RagRequiredContext, type RejectedSource, type ResearchContribution, type ResearchDriver, type ResearchDrivingDriver, type ResearchDrivingDriverOptions, type ResearchDrivingState, type ResearchDrivingSteer, type ResearchSourceProposal, type ResearchWorker, RetrievalConfig, type RouterClient, RouterError, type RouterUsage, type RunDiscoveryLoopOptions, type RunKnowledgeResearchLoopOptions, type RunRagKnowledgeImprovementLoopOptions, type RunRagKnowledgeImprovementLoopResult, RunRetrievalImprovementLoopOptions, RunRetrievalImprovementLoopResult, SCAFFOLD_PAGE_BASENAMES, type SourceAdapter, type SourceAdapterInput, type SourceAdapterOutput, SourceAnchorSchema, type SourceFreshnessInspection, SourceRecord, SourceRecordSchema, SourceRegistry, type SourceVerdict, type SourceVerificationContext, type TangleRouterOptions, type ThesisRunOptions, type ThesisRunResult, type ThesisTaskInput, type TrackedClaim, type TriageClass, type TwoAgentResearchLoopOptions, type TwoAgentResearchLoopResult, type TwoAgentResearchRound, type ValidateKnowledgeOptions, type ValidateKnowledgeResult, type VerifiedResearchLoopOptions, type VerifiedResearchLoopResult, type VerifiedResearchRound, type VerifyingDriverOptions, WIKILINK_REGEX, type WebResearchWorkerOptions, type WebSearchHit, type WorkerClaimDecorationOptions, type WorkerResearchContext, addSourcePath, addSourceText, applyKnowledgeWriteBlocks, applyKnowledgeWriteBlocksFile, buildEvalKnowledgeBundle, buildKnowledgeGraph, buildKnowledgeIndex, calibrateRagAnswerJudge, canonicalizeUrl, chunkMarkdown, citedClaimKey, citedClaimOf, contentKey, createAdaptiveResearchDriver, createClaimDecorator, createClaimGroundingVerifier, createCollectionResearchDriver, createD1FreshnessStoreStub, createFileSystemFreshnessStore, createKnowledgeControlLoopAdapter, createKnowledgeEvent, createLocalDiscoveryDispatcher, createRagAnswerQualityHook, createResearchDrivingDriver, createTangleRouterClient, createVerifyingResearchDriver, createWebResearchWorker, defineReadinessSpec, detectChanges, diagnoseRagAnswerFailure, evaluateKnowledgeBaseReadiness, explainKnowledgeTarget, extractWikilinks, formatFrontmatter, gradeCompanyAgainstText, gradeFactAgainstText, groundClaimInText, hashKnowledgeBase, improveKnowledgeBase, initKnowledgeBase, inspectKnowledgeIndex, investmentThesisSet, isSafeKnowledgePath, isScaffoldPath, kbIndexToText, knowledgeImprovementRunDir, knowledgeImprovementRunId, knowledgeReleaseReport, layoutFor, lensDistribution, lintKnowledgeIndex, loadKnowledgeImprovementState, loadKnowledgePages, loadSourceRegistry, materialFactsSurfaced, materialFactsSurfacedInText, mediaTypeFor, normalizeExternalRagScores, normalizeLinkTarget, parseFrontmatter, parseKnowledgeWriteBlocks, proposeFromFinding, proposeFromFindings, ragAnswerQualityJudge, reciprocalRankFusion, runDiscoveryLoop, runInvestmentThesisTask, runKnowledgeResearchLoop, runRagKnowledgeImprovementLoop, runTwoAgentResearchLoop, runVerifiedResearchLoop, scoreKnowledgeBaseIndex, scoreRagAnswerArtifact, searchKnowledge, sha256, slugify, sourceMatchesGaps, sourceRegistryPath, stableId, stripFrontmatter, textSourceAdapter, thesisReadinessSpecs, toDeepEvalTestCases, toRagCheckerRecords, toRagasEvaluationRows, toTruLensRecords, tokenizeQuery, totalMaterialFacts, triageSource, validateKnowledgeIndex, withCitedClaim, writeJson, writeKnowledgeIndex, writeSourceRegistry };
|
package/dist/index.js
CHANGED
|
@@ -1006,6 +1006,71 @@ function createCollectionResearchDriver() {
|
|
|
1006
1006
|
}
|
|
1007
1007
|
|
|
1008
1008
|
// src/discovery.ts
|
|
1009
|
+
import { isDeepStrictEqual } from "util";
|
|
1010
|
+
async function runDiscoveryLoop(options) {
|
|
1011
|
+
const maxRounds = positiveInteger(options.maxRounds ?? 3, "maxRounds");
|
|
1012
|
+
const maxTasks = positiveInteger(options.maxTasks ?? 24, "maxTasks");
|
|
1013
|
+
const concurrency = positiveInteger(options.concurrency ?? 4, "concurrency");
|
|
1014
|
+
const known = /* @__PURE__ */ new Map();
|
|
1015
|
+
const pending = [];
|
|
1016
|
+
const duplicateTaskIds = /* @__PURE__ */ new Set();
|
|
1017
|
+
enqueueTasks(options.initialTasks, known, pending, duplicateTaskIds);
|
|
1018
|
+
const rounds = [];
|
|
1019
|
+
const results = [];
|
|
1020
|
+
let tasksDispatched = 0;
|
|
1021
|
+
let aborted = false;
|
|
1022
|
+
while (pending.length > 0 && rounds.length < maxRounds && tasksDispatched < maxTasks) {
|
|
1023
|
+
if (options.signal?.aborted) {
|
|
1024
|
+
aborted = true;
|
|
1025
|
+
break;
|
|
1026
|
+
}
|
|
1027
|
+
const capacity = maxTasks - tasksDispatched;
|
|
1028
|
+
const tasks = pending.splice(0, capacity);
|
|
1029
|
+
let dispatched;
|
|
1030
|
+
try {
|
|
1031
|
+
dispatched = orderCompleteDispatch(
|
|
1032
|
+
tasks,
|
|
1033
|
+
await options.dispatcher.dispatch(tasks, {
|
|
1034
|
+
concurrency,
|
|
1035
|
+
signal: options.signal
|
|
1036
|
+
})
|
|
1037
|
+
);
|
|
1038
|
+
} catch (cause) {
|
|
1039
|
+
if (!options.signal?.aborted) throw cause;
|
|
1040
|
+
pending.unshift(...tasks);
|
|
1041
|
+
aborted = true;
|
|
1042
|
+
break;
|
|
1043
|
+
}
|
|
1044
|
+
tasksDispatched += tasks.length;
|
|
1045
|
+
results.push(...dispatched);
|
|
1046
|
+
const queuedFollowUps = [];
|
|
1047
|
+
for (const result of dispatched) {
|
|
1048
|
+
enqueueTasks(result.followUpTasks ?? [], known, queuedFollowUps, duplicateTaskIds);
|
|
1049
|
+
}
|
|
1050
|
+
pending.push(...queuedFollowUps);
|
|
1051
|
+
const round2 = {
|
|
1052
|
+
round: rounds.length + 1,
|
|
1053
|
+
tasks,
|
|
1054
|
+
results: dispatched,
|
|
1055
|
+
queuedFollowUps
|
|
1056
|
+
};
|
|
1057
|
+
rounds.push(round2);
|
|
1058
|
+
await options.onRound?.(round2);
|
|
1059
|
+
if (options.signal?.aborted) {
|
|
1060
|
+
aborted = true;
|
|
1061
|
+
break;
|
|
1062
|
+
}
|
|
1063
|
+
}
|
|
1064
|
+
const stopReason = aborted ? "aborted" : pending.length === 0 ? "complete" : tasksDispatched >= maxTasks ? "max-tasks" : "max-rounds";
|
|
1065
|
+
return {
|
|
1066
|
+
stopReason,
|
|
1067
|
+
tasksDispatched,
|
|
1068
|
+
results,
|
|
1069
|
+
rounds,
|
|
1070
|
+
pendingTasks: pending,
|
|
1071
|
+
duplicateTaskIds: [...duplicateTaskIds]
|
|
1072
|
+
};
|
|
1073
|
+
}
|
|
1009
1074
|
function createLocalDiscoveryDispatcher(worker) {
|
|
1010
1075
|
return {
|
|
1011
1076
|
async dispatch(tasks, options = {}) {
|
|
@@ -1020,12 +1085,55 @@ function createLocalDiscoveryDispatcher(worker) {
|
|
|
1020
1085
|
}
|
|
1021
1086
|
}
|
|
1022
1087
|
await Promise.all(Array.from({ length: Math.min(concurrency, tasks.length) }, runNext));
|
|
1023
|
-
return results
|
|
1024
|
-
(a, b) => tasks.findIndex((task) => task.id === a.taskId) - tasks.findIndex((task) => task.id === b.taskId)
|
|
1025
|
-
);
|
|
1088
|
+
return orderCompleteDispatch(tasks, results);
|
|
1026
1089
|
}
|
|
1027
1090
|
};
|
|
1028
1091
|
}
|
|
1092
|
+
function enqueueTasks(tasks, known, destination, duplicateTaskIds) {
|
|
1093
|
+
for (const task of tasks) {
|
|
1094
|
+
assertTask(task);
|
|
1095
|
+
const prior = known.get(task.id);
|
|
1096
|
+
if (!prior) {
|
|
1097
|
+
known.set(task.id, task);
|
|
1098
|
+
destination.push(task);
|
|
1099
|
+
continue;
|
|
1100
|
+
}
|
|
1101
|
+
if (!isDeepStrictEqual(prior, task)) {
|
|
1102
|
+
throw new Error(`Discovery task id '${task.id}' refers to conflicting tasks`);
|
|
1103
|
+
}
|
|
1104
|
+
duplicateTaskIds.add(task.id);
|
|
1105
|
+
}
|
|
1106
|
+
}
|
|
1107
|
+
function assertTask(task) {
|
|
1108
|
+
if (!task.id.trim()) throw new Error("Discovery task id must not be empty");
|
|
1109
|
+
if (!task.goal.trim()) throw new Error(`Discovery task '${task.id}' goal must not be empty`);
|
|
1110
|
+
}
|
|
1111
|
+
function orderCompleteDispatch(tasks, results) {
|
|
1112
|
+
const order = new Map(tasks.map((task, index) => [task.id, index]));
|
|
1113
|
+
const received = /* @__PURE__ */ new Set();
|
|
1114
|
+
for (const result of results) {
|
|
1115
|
+
if (!order.has(result.taskId)) {
|
|
1116
|
+
throw new Error(`Discovery dispatcher returned unknown task '${result.taskId}'`);
|
|
1117
|
+
}
|
|
1118
|
+
if (received.has(result.taskId)) {
|
|
1119
|
+
throw new Error(`Discovery dispatcher returned task '${result.taskId}' more than once`);
|
|
1120
|
+
}
|
|
1121
|
+
received.add(result.taskId);
|
|
1122
|
+
}
|
|
1123
|
+
const missing = tasks.filter((task) => !received.has(task.id)).map((task) => task.id);
|
|
1124
|
+
if (missing.length > 0) {
|
|
1125
|
+
throw new Error(`Discovery dispatcher omitted tasks: ${missing.join(", ")}`);
|
|
1126
|
+
}
|
|
1127
|
+
return [...results].sort(
|
|
1128
|
+
(a, b) => order.get(a.taskId) - order.get(b.taskId)
|
|
1129
|
+
);
|
|
1130
|
+
}
|
|
1131
|
+
function positiveInteger(value, name) {
|
|
1132
|
+
if (!Number.isInteger(value) || value < 1) {
|
|
1133
|
+
throw new Error(`Discovery loop ${name} must be a positive integer`);
|
|
1134
|
+
}
|
|
1135
|
+
return value;
|
|
1136
|
+
}
|
|
1029
1137
|
|
|
1030
1138
|
// src/eval-readiness.ts
|
|
1031
1139
|
import {
|
|
@@ -4794,6 +4902,7 @@ export {
|
|
|
4794
4902
|
retrievalHoldoutConfigHash,
|
|
4795
4903
|
retrievalParameterSweepProposer,
|
|
4796
4904
|
retrievalRecallJudge,
|
|
4905
|
+
runDiscoveryLoop,
|
|
4797
4906
|
runInvestmentThesisTask,
|
|
4798
4907
|
runKnowledgeBenchmarkSuite,
|
|
4799
4908
|
runKnowledgeResearchLoop,
|