@tangle-network/agent-knowledge 1.3.0 → 1.5.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/LICENSE +43 -0
- package/README.md +60 -0
- package/dist/index.d.ts +26 -21
- package/dist/index.js +16 -52
- package/dist/index.js.map +1 -1
- package/dist/profiles/index.d.ts +194 -0
- package/dist/profiles/index.js +368 -0
- package/dist/profiles/index.js.map +1 -0
- package/dist/{types-CAeh7Lwb.d.ts → types-BEDGlXB-.d.ts} +1 -1
- package/dist/viz/index.d.ts +1 -1
- package/package.json +25 -12
package/LICENSE
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Tangle Network
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
*** Add File: /home/drew/worktrees/publish-open-source/modal-inference-blueprint/LICENSE-MIT
|
|
23
|
+
MIT License
|
|
24
|
+
|
|
25
|
+
Copyright (c) 2026 Tangle Network
|
|
26
|
+
|
|
27
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
28
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
29
|
+
in the Software without restriction, including without limitation the rights
|
|
30
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
31
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
32
|
+
furnished to do so, subject to the following conditions:
|
|
33
|
+
|
|
34
|
+
The above copyright notice and this permission notice shall be included in all
|
|
35
|
+
copies or substantial portions of the Software.
|
|
36
|
+
|
|
37
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
38
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
39
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
40
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
41
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
42
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
43
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -199,6 +199,66 @@ await runAgentControlLoop({
|
|
|
199
199
|
})
|
|
200
200
|
```
|
|
201
201
|
|
|
202
|
+
## Researcher profile
|
|
203
|
+
|
|
204
|
+
`@tangle-network/agent-knowledge/profiles` ships a sandbox-SDK
|
|
205
|
+
`AgentProfile` preset for source-grounded research agents. Pairs with
|
|
206
|
+
`runLoop` from `@tangle-network/agent-runtime/loops` — the profile owns
|
|
207
|
+
the prompt + output adapter + validator; the kernel owns iteration,
|
|
208
|
+
concurrency, cost, and trace emission.
|
|
209
|
+
|
|
210
|
+
```ts
|
|
211
|
+
import { runLoop } from '@tangle-network/agent-runtime/loops'
|
|
212
|
+
import { multiHarnessResearcherFanout } from '@tangle-network/agent-knowledge/profiles'
|
|
213
|
+
|
|
214
|
+
const research = multiHarnessResearcherFanout({
|
|
215
|
+
harnesses: ['opencode/zai-coding-plan/glm-5.1', 'claude-code', 'codex'],
|
|
216
|
+
})
|
|
217
|
+
|
|
218
|
+
const result = await runLoop({
|
|
219
|
+
driver: research.driver,
|
|
220
|
+
agentRuns: research.agentRuns,
|
|
221
|
+
output: research.output,
|
|
222
|
+
validator: research.validator,
|
|
223
|
+
task: {
|
|
224
|
+
question: 'What content does cpg-founder ICP engage with on Twitter?',
|
|
225
|
+
knowledgeNamespace: 'cust_42',
|
|
226
|
+
sources: ['twitter', 'web'],
|
|
227
|
+
maxItems: 20,
|
|
228
|
+
minConfidence: 0.6,
|
|
229
|
+
},
|
|
230
|
+
ctx: { sandboxClient },
|
|
231
|
+
})
|
|
232
|
+
|
|
233
|
+
if (result.winner?.verdict?.valid) {
|
|
234
|
+
// result.winner.output.proposedWrites: KnowledgeUpdate[]
|
|
235
|
+
// The profile does NOT materialize. Decide whether to apply.
|
|
236
|
+
for (const write of result.winner.output.proposedWrites) {
|
|
237
|
+
// route through applyKnowledgeWriteBlocks / a KbStore put when ready
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
Three invariants are enforced by the validator:
|
|
243
|
+
|
|
244
|
+
- **Namespace isolation** — every `KnowledgeItem` + `KnowledgeUpdate`
|
|
245
|
+
must carry `task.knowledgeNamespace`. Cross-tenant writes hard-fail.
|
|
246
|
+
- **Provenance** — every item carries at least one evidence entry.
|
|
247
|
+
- **Citation density** — quotes-with-source / items >= 0.7 by default.
|
|
248
|
+
|
|
249
|
+
Validator scoring (default; overridable):
|
|
250
|
+
|
|
251
|
+
```
|
|
252
|
+
score = 0.4 · citation_density
|
|
253
|
+
+ 0.2 · source_diversity
|
|
254
|
+
+ 0.2 · recency_match
|
|
255
|
+
+ 0.2 · gap_coverage
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
The output preserves agent intelligence — `items`, `citations`,
|
|
259
|
+
`proposedWrites` are typed; `gaps`, `notes`, and any extras the agent
|
|
260
|
+
emitted land in `raw` rather than getting dropped.
|
|
261
|
+
|
|
202
262
|
## Pluggable Knowledge Sources
|
|
203
263
|
|
|
204
264
|
Static knowledge rots. Authorities like Cornell LII, the IRS, and state
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { S as SourceRecord, c as KnowledgeIndex, d as KnowledgeSearchResult, e as KnowledgeEventType, f as KnowledgeEvent, g as KnowledgePage, b as KnowledgeGraph, h as KnowledgeLintFinding, i as
|
|
2
|
-
export { C as ClaimRef, K as KnowledgeGraphEdge, a as KnowledgeGraphNode, o as KnowledgeId, p as KnowledgePolicy, q as KnowledgeRelation, r as KnowledgeUnit, s as SourceAnchor } from './types-
|
|
1
|
+
import { S as SourceRecord, c as KnowledgeIndex, d as KnowledgeSearchResult, e as KnowledgeEventType, f as KnowledgeEvent, g as KnowledgePage, b as KnowledgeGraph, h as KnowledgeLintFinding, i as KnowledgeWriteBlock, j as KnowledgeClaim, k as KnowledgeRelease, l as SourceRegistry, m as KnowledgeWriteParseResult } from './types-BEDGlXB-.js';
|
|
2
|
+
export { C as ClaimRef, n as KnowledgeBaseCandidate, K as KnowledgeGraphEdge, a as KnowledgeGraphNode, o as KnowledgeId, p as KnowledgePolicy, q as KnowledgeRelation, r as KnowledgeUnit, s as SourceAnchor } from './types-BEDGlXB-.js';
|
|
3
3
|
import { KnowledgeFragment } from './sources/index.js';
|
|
4
4
|
export { CornellLiiSelector, CornellLiiSourceOptions, FetchOpts, FragmentProvenance, IRS_DIMENSION_HINTS, IrsPublicationsSourceOptions, KnowledgeSource, MAX_RESPONSE_BYTES, MIN_REQUEST_GAP_MS, POLITE_USER_AGENT, PoliteFetchOptions, PoliteFetchResult, StateSosEntity, StateSosSourceConfig, __resetHttpThrottle, createCornellLiiSource, createIrsPublicationsSource, createStateSosSource, extractLinks, firstMatch, htmlToText, innerHtmlById, looksLikeBlockPage, politeFetch } from './sources/index.js';
|
|
5
|
-
import { KnowledgeRequirementCategory, KnowledgeAcquisitionMode, KnowledgeImportance, KnowledgeFreshness, KnowledgeSensitivity, KnowledgeRequirement, KnowledgeBundle, KnowledgeReadinessReport, UserQuestion, DataAcquisitionPlan,
|
|
5
|
+
import { KnowledgeRequirementCategory, KnowledgeAcquisitionMode, KnowledgeImportance, KnowledgeFreshness, KnowledgeSensitivity, KnowledgeRequirement, KnowledgeBundle, KnowledgeReadinessReport, UserQuestion, DataAcquisitionPlan, AnalystSeverity, AnalystFinding, RunRecord, ReleaseTraceEvidence, GateDecision, ReleaseConfidenceScorecard, ControlRuntimeConfig, ControlEvalResult } from '@tangle-network/agent-eval';
|
|
6
6
|
import { z } from 'zod';
|
|
7
7
|
|
|
8
8
|
interface SourceAdapterInput {
|
|
@@ -471,20 +471,6 @@ declare class FileSystemKbStore extends MemoryKbStore {
|
|
|
471
471
|
|
|
472
472
|
declare function lintKnowledgeIndex(index: KnowledgeIndex): KnowledgeLintFinding[];
|
|
473
473
|
|
|
474
|
-
type KnowledgeBaseVariant = MultiShotVariant<KnowledgeBaseCandidate>;
|
|
475
|
-
interface KnowledgeOptimizationConfig extends Omit<MultiShotOptimizationConfig<KnowledgeBaseCandidate>, 'runner' | 'scorer' | 'mutateAdapter' | 'target'> {
|
|
476
|
-
target?: string;
|
|
477
|
-
runner: MultiShotRunner<KnowledgeBaseCandidate>;
|
|
478
|
-
scorer: MultiShotScorer<KnowledgeBaseCandidate>;
|
|
479
|
-
mutateAdapter: MultiShotMutateAdapter<KnowledgeBaseCandidate>;
|
|
480
|
-
}
|
|
481
|
-
declare function runKnowledgeBaseOptimization(config: KnowledgeOptimizationConfig): Promise<MultiShotOptimizationResult<KnowledgeBaseCandidate>>;
|
|
482
|
-
declare function knowledgeVariantFromCandidate(candidate: KnowledgeBaseCandidate, options?: {
|
|
483
|
-
id?: string;
|
|
484
|
-
label?: string;
|
|
485
|
-
generation?: number;
|
|
486
|
-
}): KnowledgeBaseVariant;
|
|
487
|
-
|
|
488
474
|
interface ApplyWriteBlocksResult {
|
|
489
475
|
written: string[];
|
|
490
476
|
warnings: string[];
|
|
@@ -584,11 +570,30 @@ interface KnowledgeReleaseReport {
|
|
|
584
570
|
candidateRuns: RunRecord[];
|
|
585
571
|
baselineRuns: RunRecord[];
|
|
586
572
|
}
|
|
587
|
-
|
|
588
|
-
|
|
573
|
+
/**
|
|
574
|
+
* Campaign-native release report. The caller (a consumer's KB self-improvement
|
|
575
|
+
* loop) supplies the candidate/baseline `RunRecord[]` (e.g. via
|
|
576
|
+
* `campaignToRunRecords`) + optional per-instance `ReleaseTraceEvidence` + the
|
|
577
|
+
* gate decision; this folds them into a `ReleaseConfidenceScorecard` + a
|
|
578
|
+
* `KnowledgeRelease`. Decoupled from any optimizer result shape — agent-eval's
|
|
579
|
+
* legacy multi-shot orchestration (and its `MultiShotOptimizationResult`) was
|
|
580
|
+
* removed in 0.42; release confidence is computed from records + traces.
|
|
581
|
+
*/
|
|
582
|
+
interface KnowledgeReleaseInput {
|
|
583
|
+
candidateId: string;
|
|
584
|
+
baselineId?: string;
|
|
585
|
+
candidateRuns: RunRecord[];
|
|
586
|
+
baselineRuns?: RunRecord[];
|
|
587
|
+
traces?: ReleaseTraceEvidence[];
|
|
588
|
+
gateDecision?: GateDecision | null;
|
|
589
|
+
/** True when a held-out split was evaluated (drives the holdout threshold). */
|
|
590
|
+
hasHoldout?: boolean;
|
|
591
|
+
/** Candidate is the search-best variant — a promotion precondition. Default true. */
|
|
592
|
+
promotedIsBest?: boolean;
|
|
589
593
|
createdAt?: string;
|
|
590
594
|
minScore?: number;
|
|
591
|
-
}
|
|
595
|
+
}
|
|
596
|
+
declare function knowledgeReleaseReport(input: KnowledgeReleaseInput): KnowledgeReleaseReport;
|
|
592
597
|
|
|
593
598
|
interface AddSourceOptions {
|
|
594
599
|
copyIntoRaw?: boolean;
|
|
@@ -928,4 +933,4 @@ declare function normalizeLinkTarget(target: string): string;
|
|
|
928
933
|
declare function isSafeKnowledgePath(path: string, allowedPrefixes?: string[]): boolean;
|
|
929
934
|
declare function parseKnowledgeWriteBlocks(text: string, allowedPrefixes?: string[]): KnowledgeWriteParseResult;
|
|
930
935
|
|
|
931
|
-
export { type AddSourceOptions, type AddSourceTextInput, type ApplyWriteBlocksResult, type BuildEvalKnowledgeBundleOptions, type ChunkingOptions, type D1Adapter, type DefineReadinessSpecInput, type DetectChangesOptions, type DetectChangesResult, type DiscoveryResult, type DiscoveryTask, type EvalKnowledgeBundleBuildResult, type FileSystemFreshnessStoreOptions, FileSystemKbStore, type FreshnessKey, type FreshnessMark, type FreshnessRecord, type FreshnessTtl, type KbStore,
|
|
936
|
+
export { type AddSourceOptions, type AddSourceTextInput, type ApplyWriteBlocksResult, type BuildEvalKnowledgeBundleOptions, type ChunkingOptions, type D1Adapter, type DefineReadinessSpecInput, type DetectChangesOptions, type DetectChangesResult, type DiscoveryResult, type DiscoveryTask, type EvalKnowledgeBundleBuildResult, type FileSystemFreshnessStoreOptions, FileSystemKbStore, type FreshnessKey, type FreshnessMark, type FreshnessRecord, type FreshnessTtl, type KbStore, KnowledgeBaseCandidateSchema, 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, KnowledgeGraph, KnowledgeGraphEdgeSchema, KnowledgeGraphNodeSchema, 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, MemoryKbStore, type ParsedFrontmatter, type ProposeFromFindingsResult, READINESS_SPEC_DEFAULTS, type RunKnowledgeResearchLoopOptions, SCAFFOLD_PAGE_BASENAMES, type SourceAdapter, type SourceAdapterInput, type SourceAdapterOutput, SourceAnchorSchema, type SourceFreshnessInspection, SourceRecord, SourceRecordSchema, SourceRegistry, type ValidateKnowledgeOptions, type ValidateKnowledgeResult, WIKILINK_REGEX, addSourcePath, addSourceText, applyKnowledgeWriteBlocks, applyKnowledgeWriteBlocksFile, buildEvalKnowledgeBundle, buildKnowledgeGraph, buildKnowledgeIndex, chunkMarkdown, createD1FreshnessStoreStub, createFileSystemFreshnessStore, createKnowledgeControlLoopAdapter, createKnowledgeEvent, createLocalDiscoveryDispatcher, defineReadinessSpec, detectChanges, explainKnowledgeTarget, extractWikilinks, formatFrontmatter, initKnowledgeBase, inspectKnowledgeIndex, isSafeKnowledgePath, isScaffoldPath, knowledgeReleaseReport, layoutFor, lintKnowledgeIndex, loadKnowledgePages, loadSourceRegistry, mediaTypeFor, normalizeLinkTarget, parseFrontmatter, parseKnowledgeWriteBlocks, proposeFromFinding, proposeFromFindings, reciprocalRankFusion, runKnowledgeResearchLoop, searchKnowledge, sha256, slugify, sourceRegistryPath, stableId, stripFrontmatter, textSourceAdapter, tokenizeQuery, validateKnowledgeIndex, writeJson, writeKnowledgeIndex, writeSourceRegistry };
|
package/dist/index.js
CHANGED
|
@@ -615,25 +615,6 @@ function clone(value) {
|
|
|
615
615
|
return value == null ? value : JSON.parse(JSON.stringify(value));
|
|
616
616
|
}
|
|
617
617
|
|
|
618
|
-
// src/optimization.ts
|
|
619
|
-
import {
|
|
620
|
-
runMultiShotOptimization
|
|
621
|
-
} from "@tangle-network/agent-eval";
|
|
622
|
-
async function runKnowledgeBaseOptimization(config) {
|
|
623
|
-
return runMultiShotOptimization({
|
|
624
|
-
...config,
|
|
625
|
-
target: config.target ?? "agent-knowledge-base"
|
|
626
|
-
});
|
|
627
|
-
}
|
|
628
|
-
function knowledgeVariantFromCandidate(candidate, options = {}) {
|
|
629
|
-
return {
|
|
630
|
-
id: options.id ?? candidate.id,
|
|
631
|
-
label: options.label ?? candidate.id,
|
|
632
|
-
generation: options.generation ?? 0,
|
|
633
|
-
payload: candidate
|
|
634
|
-
};
|
|
635
|
-
}
|
|
636
|
-
|
|
637
618
|
// src/propose-from-finding.ts
|
|
638
619
|
var KnowledgeProposalParseError = class extends Error {
|
|
639
620
|
constructor(findingId, subject, message) {
|
|
@@ -831,50 +812,35 @@ function humanize(slug) {
|
|
|
831
812
|
// src/release.ts
|
|
832
813
|
import {
|
|
833
814
|
evaluateReleaseConfidence,
|
|
834
|
-
releaseTraceEvidenceFromMultiShotTrials,
|
|
835
815
|
validateRunRecord
|
|
836
816
|
} from "@tangle-network/agent-eval";
|
|
837
|
-
function
|
|
838
|
-
const
|
|
839
|
-
|
|
840
|
-
);
|
|
841
|
-
const traceEvidence = releaseTraceEvidenceFromMultiShotTrials(trials);
|
|
842
|
-
const runRecords = (options.runRecords ?? [
|
|
843
|
-
...result.gate?.candidateRuns ?? [],
|
|
844
|
-
...result.gate?.baselineRuns ?? []
|
|
845
|
-
]).map(validateRunRecord);
|
|
817
|
+
function knowledgeReleaseReport(input) {
|
|
818
|
+
const baselineRuns = input.baselineRuns ?? [];
|
|
819
|
+
const runRecords = [...input.candidateRuns, ...baselineRuns].map(validateRunRecord);
|
|
846
820
|
const scorecard = evaluateReleaseConfidence({
|
|
847
821
|
target: "agent-knowledge-base",
|
|
848
|
-
candidateId:
|
|
849
|
-
baselineId: "baseline",
|
|
850
|
-
traces:
|
|
822
|
+
candidateId: input.candidateId,
|
|
823
|
+
baselineId: input.baselineId ?? "baseline",
|
|
824
|
+
traces: input.traces ?? [],
|
|
851
825
|
runs: runRecords,
|
|
852
|
-
gateDecision:
|
|
826
|
+
gateDecision: input.gateDecision ?? null,
|
|
853
827
|
thresholds: {
|
|
854
828
|
requireCorpus: false,
|
|
855
|
-
requireHoldout:
|
|
856
|
-
minHoldoutRuns:
|
|
829
|
+
requireHoldout: input.hasHoldout ?? false,
|
|
830
|
+
minHoldoutRuns: input.hasHoldout ? 1 : 0,
|
|
857
831
|
minSearchRuns: 1,
|
|
858
|
-
minMeanScore:
|
|
832
|
+
minMeanScore: input.minScore ?? 0.7
|
|
859
833
|
}
|
|
860
834
|
});
|
|
861
835
|
const release = {
|
|
862
|
-
id: stableId(
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
),
|
|
866
|
-
candidateId: result.promotedVariant.id,
|
|
867
|
-
createdAt: options.createdAt ?? (/* @__PURE__ */ new Date()).toISOString(),
|
|
868
|
-
promoted: scorecard.status !== "fail" && result.promotedVariant.id === result.searchBestVariant.id,
|
|
836
|
+
id: stableId("krel", `${input.candidateId}:${input.createdAt ?? (/* @__PURE__ */ new Date()).toISOString()}`),
|
|
837
|
+
candidateId: input.candidateId,
|
|
838
|
+
createdAt: input.createdAt ?? (/* @__PURE__ */ new Date()).toISOString(),
|
|
839
|
+
promoted: scorecard.status !== "fail" && (input.promotedIsBest ?? true),
|
|
869
840
|
scorecard,
|
|
870
841
|
runRecordIds: runRecords.map((record) => record.runId)
|
|
871
842
|
};
|
|
872
|
-
return {
|
|
873
|
-
release,
|
|
874
|
-
scorecard,
|
|
875
|
-
candidateRuns: result.gate?.candidateRuns ?? [],
|
|
876
|
-
baselineRuns: result.gate?.baselineRuns ?? []
|
|
877
|
-
};
|
|
843
|
+
return { release, scorecard, candidateRuns: input.candidateRuns, baselineRuns };
|
|
878
844
|
}
|
|
879
845
|
|
|
880
846
|
// src/research-loop.ts
|
|
@@ -1086,8 +1052,7 @@ export {
|
|
|
1086
1052
|
inspectKnowledgeIndex,
|
|
1087
1053
|
isSafeKnowledgePath,
|
|
1088
1054
|
isScaffoldPath,
|
|
1089
|
-
|
|
1090
|
-
knowledgeVariantFromCandidate,
|
|
1055
|
+
knowledgeReleaseReport,
|
|
1091
1056
|
layoutFor,
|
|
1092
1057
|
lintKnowledgeIndex,
|
|
1093
1058
|
loadKnowledgePages,
|
|
@@ -1101,7 +1066,6 @@ export {
|
|
|
1101
1066
|
proposeFromFinding,
|
|
1102
1067
|
proposeFromFindings,
|
|
1103
1068
|
reciprocalRankFusion,
|
|
1104
|
-
runKnowledgeBaseOptimization,
|
|
1105
1069
|
runKnowledgeResearchLoop,
|
|
1106
1070
|
searchKnowledge,
|
|
1107
1071
|
sha256,
|