@tangle-network/agent-eval 0.110.0 → 0.111.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.
Files changed (52) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/belief-state/index.js +1 -1
  3. package/dist/benchmarks/index.js +6 -6
  4. package/dist/builder-eval/index.js +1 -1
  5. package/dist/campaign/index.d.ts +50 -5
  6. package/dist/campaign/index.js +7 -5
  7. package/dist/{chunk-X6NIXVOD.js → chunk-3LDPUYAC.js} +2 -2
  8. package/dist/{chunk-N22ZO7FV.js → chunk-7QPK6W7R.js} +2 -2
  9. package/dist/{chunk-QFGTU7MT.js → chunk-BOLYPSAE.js} +4 -4
  10. package/dist/{chunk-RNB2NICW.js → chunk-D2XDWRFX.js} +74 -4
  11. package/dist/chunk-D2XDWRFX.js.map +1 -0
  12. package/dist/{chunk-6MFFKPZ4.js → chunk-EMKORATZ.js} +2 -2
  13. package/dist/{chunk-GTERJI6Q.js → chunk-RCXMWGRY.js} +16 -5
  14. package/dist/{chunk-GTERJI6Q.js.map → chunk-RCXMWGRY.js.map} +1 -1
  15. package/dist/{chunk-6HFYGEZ3.js → chunk-RT2AFUXM.js} +2 -2
  16. package/dist/{chunk-XMSYF4A7.js → chunk-VC43KQCK.js} +24 -1
  17. package/dist/chunk-VC43KQCK.js.map +1 -0
  18. package/dist/{chunk-T6W5ADLG.js → chunk-VLNGPUJJ.js} +2 -2
  19. package/dist/{chunk-6PL5MGDL.js → chunk-WZOIFFG2.js} +2 -2
  20. package/dist/{chunk-3PFZBGMR.js → chunk-XNCF3JU3.js} +2 -2
  21. package/dist/{chunk-PLOMR3HP.js → chunk-YWGKQARF.js} +2 -2
  22. package/dist/contract/index.d.ts +11 -10
  23. package/dist/contract/index.js +6 -6
  24. package/dist/contract/index.js.map +1 -1
  25. package/dist/{gepa-BUNP3606.d.ts → gepa-T8T215nw.d.ts} +6 -4
  26. package/dist/index.d.ts +122 -5
  27. package/dist/index.js +470 -210
  28. package/dist/index.js.map +1 -1
  29. package/dist/meta-eval/index.d.ts +1 -1
  30. package/dist/meta-eval/index.js +2 -2
  31. package/dist/openapi.json +1 -1
  32. package/dist/pipelines/index.js +2 -2
  33. package/dist/{provenance-DMvsfknv.d.ts → provenance-KhY8ESVM.d.ts} +2 -2
  34. package/dist/reporting.d.ts +1 -1
  35. package/dist/reporting.js +4 -4
  36. package/dist/rl.js +5 -5
  37. package/dist/{run-campaign-PNHAJIT2.js → run-campaign-HJQEDCJQ.js} +3 -3
  38. package/dist/{statistics-D88peojY.d.ts → statistics-CDfpwIdX.d.ts} +13 -1
  39. package/docs/improvement-glossary.md +14 -13
  40. package/package.json +1 -1
  41. package/dist/chunk-RNB2NICW.js.map +0 -1
  42. package/dist/chunk-XMSYF4A7.js.map +0 -1
  43. /package/dist/{chunk-X6NIXVOD.js.map → chunk-3LDPUYAC.js.map} +0 -0
  44. /package/dist/{chunk-N22ZO7FV.js.map → chunk-7QPK6W7R.js.map} +0 -0
  45. /package/dist/{chunk-QFGTU7MT.js.map → chunk-BOLYPSAE.js.map} +0 -0
  46. /package/dist/{chunk-6MFFKPZ4.js.map → chunk-EMKORATZ.js.map} +0 -0
  47. /package/dist/{chunk-6HFYGEZ3.js.map → chunk-RT2AFUXM.js.map} +0 -0
  48. /package/dist/{chunk-T6W5ADLG.js.map → chunk-VLNGPUJJ.js.map} +0 -0
  49. /package/dist/{chunk-6PL5MGDL.js.map → chunk-WZOIFFG2.js.map} +0 -0
  50. /package/dist/{chunk-3PFZBGMR.js.map → chunk-XNCF3JU3.js.map} +0 -0
  51. /package/dist/{chunk-PLOMR3HP.js.map → chunk-YWGKQARF.js.map} +0 -0
  52. /package/dist/{run-campaign-PNHAJIT2.js.map → run-campaign-HJQEDCJQ.js.map} +0 -0
@@ -3,7 +3,7 @@ export { D as DeploymentOutcome, F as FileSystemOutcomeStore, a as FileSystemOut
3
3
  export { R as RubricOutcomePair, a as RubricPredictiveValidityInput, b as RubricPredictiveValidityReport, c as RubricRanking, r as rubricPredictiveValidity } from '../rubric-predictive-validity-C-fMteAW.js';
4
4
  import { C as ContinuousAgreement, a as CalibrationResult, b as ContinuousCalibrationResult, c as CandidateScore, G as GoldenItem } from '../judge-calibration-7C-IDmKr.js';
5
5
  import { S as SeriesConvergenceOptions, a as SeriesConvergenceResult } from '../series-convergence-D5OWMBg6.js';
6
- import { C as CorpusAgreementReport } from '../statistics-D88peojY.js';
6
+ import { C as CorpusAgreementReport } from '../statistics-CDfpwIdX.js';
7
7
  import '../store-BsVi7ncX.js';
8
8
  import '../schema-SGWcK9wa.js';
9
9
  import '../run-record-DksGsfgv.js';
@@ -11,11 +11,11 @@ import {
11
11
  } from "../chunk-3RF76KTD.js";
12
12
  import {
13
13
  rubricPredictiveValidity
14
- } from "../chunk-X6NIXVOD.js";
14
+ } from "../chunk-3LDPUYAC.js";
15
15
  import {
16
16
  pearsonR,
17
17
  spearmanR
18
- } from "../chunk-XMSYF4A7.js";
18
+ } from "../chunk-VC43KQCK.js";
19
19
  import {
20
20
  aggregateLlm,
21
21
  llmSpans
package/dist/openapi.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "openapi": "3.1.0",
3
3
  "info": {
4
4
  "title": "@tangle-network/agent-eval — wire protocol",
5
- "version": "0.110.0",
5
+ "version": "0.111.0",
6
6
  "description": "HTTP and stdio RPC interface to agent-eval. The TypeScript runtime is the source of truth; this spec is the contract that cross-language clients (Python, Rust, Go) generate from.\n\nWire-protocol version: 1.0.0. Bumps on breaking changes to request/response schemas.",
7
7
  "contact": {
8
8
  "name": "Tangle Network",
@@ -4,11 +4,11 @@ import {
4
4
  classifyFailure,
5
5
  compareToBaseline,
6
6
  computeToolUseMetrics
7
- } from "../chunk-PLOMR3HP.js";
7
+ } from "../chunk-YWGKQARF.js";
8
8
  import {
9
9
  interRaterReliability,
10
10
  pearsonR
11
- } from "../chunk-XMSYF4A7.js";
11
+ } from "../chunk-VC43KQCK.js";
12
12
  import {
13
13
  aggregateLlm,
14
14
  argHash,
@@ -1,7 +1,7 @@
1
1
  import { S as Scenario, g as Gate, G as GateResult, n as GateContext, C as CampaignResult, p as Mutator, f as SurfaceProposer, M as MutableSurface, h as GateDecision } from './types-v--ctu-b.js';
2
- import { e as RedTeamCase, D as Direction, b as RunCampaignOptions } from './gepa-BUNP3606.js';
2
+ import { e as RedTeamCase, D as Direction, b as RunCampaignOptions } from './gepa-T8T215nw.js';
3
3
  import { R as RunRecord } from './run-record-DksGsfgv.js';
4
- import { a as PairedBootstrapResult } from './statistics-D88peojY.js';
4
+ import { a as PairedBootstrapResult } from './statistics-CDfpwIdX.js';
5
5
  import { HostedClient, TraceSpanEvent } from './hosted/index.js';
6
6
  import { C as CampaignStorage } from './storage-Dw_f7WMt.js';
7
7
 
@@ -1,7 +1,7 @@
1
1
  export { R as RubricOutcomePair, a as RubricPredictiveValidityInput, b as RubricPredictiveValidityReport, c as RubricRanking, r as rubricPredictiveValidity } from './rubric-predictive-validity-C-fMteAW.js';
2
2
  export { B as BootstrapOptions, a as BootstrapResult, J as JudgeReplayGateArgs, R as ReleaseConfidenceAxis, b as ReleaseConfidenceAxisName, c as ReleaseConfidenceInput, d as ReleaseConfidenceIssue, e as ReleaseConfidenceMetrics, f as ReleaseConfidenceScorecard, g as ReleaseConfidenceStatus, h as ReleaseConfidenceThresholds, i as ReleaseTraceEvidence, j as RenderReleaseReportOptions, V as Verdict, k as assertReleaseConfidence, l as bootstrapCi, m as evaluateReleaseConfidence, n as judgeReplayGate, r as renderReleaseReport } from './release-report-oBfOz8ku.js';
3
3
  export { I as InterimReleaseConfidence, a as InterimReleaseConfidenceInput, P as PairedEvalueOptions, b as PairedEvalueSequence, c as PairedEvalueStep, S as SequentialDecision, e as evaluateInterimReleaseConfidence, p as pairedEvalueSequence } from './sequential-5iSVfzl2.js';
4
- export { P as PairedBootstrapOptions, a as PairedBootstrapResult, b as benjaminiHochberg, p as pairedBootstrap, w as wilcoxonSignedRank } from './statistics-D88peojY.js';
4
+ export { P as PairedBootstrapOptions, a as PairedBootstrapResult, b as benjaminiHochberg, p as pairedBootstrap, w as wilcoxonSignedRank } from './statistics-CDfpwIdX.js';
5
5
  export { G as GainDistributionBin, a as GainDistributionFigureSpec, b as GainDistributionOptions, P as ParetoFigureSpec, c as ParetoPoint, R as RESEARCH_REPORT_HARD_PAIR_FLOOR, d as ResearchReport, e as ResearchReportCandidate, f as ResearchReportDecision, g as ResearchReportMethodology, h as ResearchReportOptions, i as ResearchReportRecommendation, S as SummaryTable, j as SummaryTableOptions, k as SummaryTableRow, l as gainHistogram, p as paretoChart, r as researchReport, s as summaryTable } from './summary-report-Bz-0-t8v.js';
6
6
  import './run-record-DksGsfgv.js';
7
7
  import '@tangle-network/agent-interface';
package/dist/reporting.js CHANGED
@@ -4,10 +4,10 @@ import {
4
4
  evaluateReleaseConfidence,
5
5
  judgeReplayGate,
6
6
  renderReleaseReport
7
- } from "./chunk-6HFYGEZ3.js";
7
+ } from "./chunk-RT2AFUXM.js";
8
8
  import {
9
9
  rubricPredictiveValidity
10
- } from "./chunk-X6NIXVOD.js";
10
+ } from "./chunk-3LDPUYAC.js";
11
11
  import {
12
12
  evaluateInterimReleaseConfidence,
13
13
  pairedEvalueSequence
@@ -18,12 +18,12 @@ import {
18
18
  paretoChart,
19
19
  researchReport,
20
20
  summaryTable
21
- } from "./chunk-6MFFKPZ4.js";
21
+ } from "./chunk-EMKORATZ.js";
22
22
  import {
23
23
  benjaminiHochberg,
24
24
  pairedBootstrap,
25
25
  wilcoxonSignedRank
26
- } from "./chunk-XMSYF4A7.js";
26
+ } from "./chunk-VC43KQCK.js";
27
27
  import "./chunk-VSMTAMNK.js";
28
28
  import "./chunk-ONWEPEDO.js";
29
29
  import "./chunk-PZ5AY32C.js";
package/dist/rl.js CHANGED
@@ -10,24 +10,24 @@ import {
10
10
  } from "./chunk-3RF76KTD.js";
11
11
  import {
12
12
  runEvalCampaign
13
- } from "./chunk-6PL5MGDL.js";
13
+ } from "./chunk-WZOIFFG2.js";
14
14
  import {
15
15
  detectRewardHacking,
16
16
  extractVerifiableReward,
17
17
  extractVerifiableRewardsFromRecords,
18
18
  filterDeterministicallyRewarded
19
- } from "./chunk-N22ZO7FV.js";
19
+ } from "./chunk-7QPK6W7R.js";
20
20
  import {
21
21
  rubricPredictiveValidity
22
- } from "./chunk-X6NIXVOD.js";
22
+ } from "./chunk-3LDPUYAC.js";
23
23
  import {
24
24
  evaluateInterimReleaseConfidence
25
25
  } from "./chunk-MAZ26DC7.js";
26
- import "./chunk-6MFFKPZ4.js";
26
+ import "./chunk-EMKORATZ.js";
27
27
  import {
28
28
  benjaminiHochberg,
29
29
  wilcoxonSignedRank
30
- } from "./chunk-XMSYF4A7.js";
30
+ } from "./chunk-VC43KQCK.js";
31
31
  import {
32
32
  observationsFromRunRecords,
33
33
  thompsonCurriculum,
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  planCampaignRun,
3
3
  runCampaign
4
- } from "./chunk-3PFZBGMR.js";
5
- import "./chunk-XMSYF4A7.js";
4
+ } from "./chunk-XNCF3JU3.js";
5
+ import "./chunk-VC43KQCK.js";
6
6
  import "./chunk-ONWEPEDO.js";
7
7
  import "./chunk-PZ5AY32C.js";
8
8
  export {
9
9
  planCampaignRun,
10
10
  runCampaign
11
11
  };
12
- //# sourceMappingURL=run-campaign-PNHAJIT2.js.map
12
+ //# sourceMappingURL=run-campaign-HJQEDCJQ.js.map
@@ -253,6 +253,18 @@ declare function bonferroni(pValues: number[], alpha?: number): {
253
253
  adjusted: number[];
254
254
  significant: boolean[];
255
255
  };
256
+ /**
257
+ * Holm step-down family-wise error adjustment.
258
+ *
259
+ * P-values are sorted from smallest to largest, multiplied by their remaining
260
+ * hypothesis count, and made monotonically non-decreasing before being mapped
261
+ * back to input order. This uniformly dominates plain Bonferroni while keeping
262
+ * strong family-wise error control under arbitrary dependence.
263
+ */
264
+ declare function holm(pValues: readonly number[], alpha?: number): {
265
+ adjusted: number[];
266
+ significant: boolean[];
267
+ };
256
268
  /**
257
269
  * Benjamini–Hochberg false discovery rate. Returns adjusted q-values and
258
270
  * significance at the target FDR; handles ties and preserves q monotonicity.
@@ -446,4 +458,4 @@ declare function eProcess(opts?: EProcessOptions): EProcess;
446
458
  * gate verdicts is non-reproducible by construction). */
447
459
  declare function mulberry32(seed: number): () => number;
448
460
 
449
- export { mulberry32 as A, normalizeScores as B, type CorpusAgreementReport as C, pairedMde as D, type EProcessState as E, pairedRiskDifference as F, pairedTTest as G, partialCredit as H, passAtK as I, pearsonR as J, ranks as K, requiredSampleSize as L, type McNemarResult as M, spearmanR as N, weightedComposite as O, type PairedBootstrapOptions as P, weightedMean as Q, type RiskDifferenceResult as R, wilson as S, type WeightedCompositeInput as W, type PairedBootstrapResult as a, benjaminiHochberg as b, type CliffsMagnitude as c, type CorpusAgreementOptions as d, type CorpusAgreementPerDimension as e, type CorpusScoreRecord as f, type EProcess as g, type EProcessOptions as h, type EProcessStep as i, type ProportionInterval as j, type WeightedCompositeResult as k, bonferroni as l, cliffsDelta as m, cohensD as n, confidenceInterval as o, pairedBootstrap as p, corpusInterRaterAgreement as q, corpusInterRaterAgreementFromJudgeScores as r, eProcess as s, interRaterReliability as t, interpretCliffs as u, mannWhitneyU as v, wilcoxonSignedRank as w, mcnemar as x, mcnemarPower as y, mcnemarRequiredN as z };
461
+ export { mcnemarRequiredN as A, mulberry32 as B, type CorpusAgreementReport as C, normalizeScores as D, type EProcessState as E, pairedMde as F, pairedRiskDifference as G, pairedTTest as H, partialCredit as I, passAtK as J, pearsonR as K, ranks as L, type McNemarResult as M, requiredSampleSize as N, spearmanR as O, type PairedBootstrapOptions as P, weightedComposite as Q, type RiskDifferenceResult as R, weightedMean as S, wilson as T, type WeightedCompositeInput as W, type PairedBootstrapResult as a, benjaminiHochberg as b, type CliffsMagnitude as c, type CorpusAgreementOptions as d, type CorpusAgreementPerDimension as e, type CorpusScoreRecord as f, type EProcess as g, type EProcessOptions as h, type EProcessStep as i, type ProportionInterval as j, type WeightedCompositeResult as k, bonferroni as l, cliffsDelta as m, cohensD as n, confidenceInterval as o, pairedBootstrap as p, corpusInterRaterAgreement as q, corpusInterRaterAgreementFromJudgeScores as r, eProcess as s, holm as t, interRaterReliability as u, interpretCliffs as v, wilcoxonSignedRank as w, mannWhitneyU as x, mcnemar as y, mcnemarPower as z };
@@ -61,25 +61,26 @@ Start at the top row and only move down when the row's *"reach for it when"* mat
61
61
  | `gepaProposer` | You want the strong default: reflective full-surface prompt rewrites, grounded in findings, keeping a Pareto frontier of complementary winners. | prompt string | **Yes — `improve({ surface: 'prompt' })` default.** Proven live. |
62
62
  | `skillOptProposer` | You are editing a structured `SKILL.md`/runbook and want small anchored add/delete/replace patches that preserve earlier rules. | skill/prompt string | **Yes — `improve({ surface: 'skills' })` default.** Not yet proven live. |
63
63
  | `parameterSweepProposer` | The likely fix is a config knob, not words — `retrieval.k`, `temperature`, `max_tokens`. You give it candidate patches; it applies them to a JSON surface. | JSON config string | Yes, but you supply the candidate list. |
64
- | `fapoProposer` | You want *evidence to decide when to escalate*: try prompt edits first, move to parameters, then to structural code — one scoped change per cycle, only escalating when the cheaper level is exhausted. **This is the composite/orchestration proposer** (there is no separate `compositeProposer`). | whatever its level proposers return | Exported; you wire the level proposers. |
64
+ | `fapoProposer` | You want *evidence to decide when to escalate*: try prompt edits first, move to parameters, then to structural code — one scoped change per cycle, only escalating when the cheaper level is exhausted. | whatever its level proposers return | Exported; you wire the level proposers. |
65
+ | `compositeProposer` | You want several proposers to share one candidate-generation budget in the same round. It allocates the population by declared weights, preserves member provenance, deduplicates surfaces, and isolates a member failure unless every member fails. | whatever its member proposers return | Exported; you wire the member proposers. |
65
66
  | `aceProposer` | You are accumulating hard-won lessons into a playbook and must **never** summarize an old lesson away (append-only, provenance-tagged). | playbook string | Exported. |
66
67
  | `memoryCurationProposer` | Same as ACE but you want a compact, deduped, re-ranked memory instead of append-only growth. | memory string | Exported. |
67
68
  | `evolutionaryProposer` | You want blind population search (mutate → measure → select) with no reflection over findings — a cheap control or a baseline to beat. | any string | Exported. |
68
69
  | `traceAnalystProposer` | Bench-only: race our trace-analysis evidence engine head-to-head inside `compareProposers`. | prompt string | Bench-only. |
69
70
  | `haloProposer` | Bench-only: race the external `halo-engine` analysis against ours. | prompt string | Bench-only, external. |
70
71
 
71
- Default path: `gepaProposer` for prompts; add `parameterSweepProposer` when a config knob is the suspect; wrap both in `fapoProposer` when you want the loop to decide *when* to escalate from words to knobs to code.
72
+ Default path: `gepaProposer` for prompts; add `parameterSweepProposer` when a config knob is the suspect; wrap levels in `fapoProposer` when the loop should decide *when* to escalate, or use `compositeProposer` when multiple proposer families must split one fixed population budget.
72
73
 
73
- ## Composing proposers — the only three ways, with runnable code
74
+ ## Composing proposers — four distinct shapes
74
75
 
75
- There is deliberately **no** `chainProposer`/`compositeProposer` primitive.
76
- Composition happens in exactly three shapes:
76
+ Choose the shape that matches the experiment:
77
77
 
78
- 1. **Escalate** — `fapoProposer` wraps a prompt + parameter + structural proposer into one, spending the cheapest level first.
79
- 2. **Race** — `compareProposers` runs N proposers on one holdout and returns a per-proposer lift CI + pairwise "who won".
80
- 3. **Plug in** — hand any composed proposer to the gated loop via `runImprovementLoop({ proposer })`, or the one-liner `improve({ surface, generator })` in `@tangle-network/agent-runtime`.
78
+ 1. **Portfolio** — `compositeProposer` splits one generation's population across member proposers by fixed weights and returns one provenance-labelled pool.
79
+ 2. **Escalate** — `fapoProposer` wraps prompt + parameter + structural levels into one proposer and spends on the cheapest level until evidence says to escalate.
80
+ 3. **Race** — `compareProposers` gives proposers separate loops, then re-scores their winners on one holdout and returns per-proposer lift intervals plus pairwise results.
81
+ 4. **Plug in** — hand any proposer to `runImprovementLoop({ proposer })`, or use `improve({ surface, generator })` in `@tangle-network/agent-runtime`.
81
82
 
82
- ### 1 + 3 — compose by escalation, then run the gated loop
83
+ ### 2 + 4 — compose by escalation, then run the improvement loop
83
84
 
84
85
  ```ts
85
86
  import {
@@ -93,8 +94,8 @@ import {
93
94
  const llm = { baseUrl: process.env.TANGLE_BASE_URL, apiKey: process.env.TANGLE_API_KEY }
94
95
  const model = 'deepseek-v4-flash'
95
96
 
96
- // Compose: prompt edits first (GEPA), escalate to a config knob only when
97
- // prompt-level search plateaus. `fapoProposer` IS the composite proposer.
97
+ // Compose by escalation: prompt edits first (GEPA), then a config knob only
98
+ // when prompt-level search plateaus. This is distinct from a peer portfolio.
98
99
  const proposer = fapoProposer({
99
100
  scope: { allowedLevels: ['prompt', 'parameter'] }, // no structural/code tier here
100
101
  promptProposer: gepaProposer({ llm, model, target: 'agent system prompt' }),
@@ -147,7 +148,7 @@ const out = await improve(profile, findings, {
147
148
  if (out.shipped) deploy(out.profile) // out.lift is the held-out winner − baseline
148
149
  ```
149
150
 
150
- ### 2 — race proposers head-to-head for a lift CI
151
+ ### 3 — race proposers head-to-head for a lift CI
151
152
 
152
153
  ```ts
153
154
  import {
@@ -196,7 +197,7 @@ Every entrant is re-scored on the **same** holdout with the **same** judges, so
196
197
  - Do not put eval logic inside a proposer — scoring lives in `dispatch` + `judges`, proposing lives in the proposer.
197
198
  - Do not let a proposer read held-out judge scores — `ProposeContext` makes that a compile error on purpose; a proposer that games the acceptance axis is an oracle, not an optimizer.
198
199
  - Do not read `lift` without `result.power`/MDE — a "+4" on a valset too small to detect +4 is noise wearing a number.
199
- - Do not look for a `compositeProposer` `fapoProposer` is the composite; `compareProposers` is the race; `runImprovementLoop`/`improve` is the plug.
200
+ - Do not confuse `compositeProposer` with `fapoProposer`: the former allocates one fixed population across peers, while the latter escalates through ordered levels from cheaper to more structural changes.
200
201
 
201
202
  ### neutralizationGate — the placebo / content-causality control
202
203
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tangle-network/agent-eval",
3
- "version": "0.110.0",
3
+ "version": "0.111.0",
4
4
  "description": "Evaluate and improve AI agents from runs, traces, judges, and feedback. Compare candidates, cluster failures, measure lift, and gate releases.",
5
5
  "homepage": "https://github.com/tangle-network/agent-eval#readme",
6
6
  "repository": {