Skip to content

@workglow/eval ships a bin and no importable entry point, so its scorer is duplicated downstream #861

Description

@sroussey

examples/eval/package.json@0.4.0 has main: null, module: null, types: null, exports: null and only bin: { "workglow-eval": "./dist/workglow-eval.js" }. import { scoreExtraction } from "@workglow/eval" cannot resolve for anyone.

The eleven-cycle observation that "sec imports @workglow/eval zero times" has been read as discipline. It is packaging: there is nothing to import.

The consequence is two independent implementations of one function with two independent result interfaces:

  • examples/eval/src/score/extraction.ts:67 (ExtractionScore at :31, 140 LOC)
  • @workglow/sec's src/eval/scoreExtraction.ts:354 (ExtractionScore at :46, 505 LOC)

The same non-sharing shows up in the model rate card, and it is now measurably wrong. Of the 10 model ids priced in both examples/eval/src/models.ts and sec/src/config/listPricing.ts, 5 disagree:

id libs sec
gpt-5.5 output 15 30
gpt-5.4-mini output 1.6 4.5
deepseek-v4-pro 0.56 / 1.68 0.435 / 0.87
gpt-5.6-terra 2 / 12 2.5 / 15
grok-4.5 cached 0.5 0.3

Last cycle only one disagreed, so this is diverging rather than static.

Asks:

  1. add an exports/types map to examples/eval/package.json (~3 lines);
  2. retire one of the two scoreExtraction implementations;
  3. hoist the pricing data into @workglow/ai and re-export the provider discriminator constants that sec/src/config/registerModels.ts:20-26 says outright are "duplicated here".

Found during the 2026-08-24 review. Snapshot: workglow-dev/prdanalysis/grades/2026-08-24/cross-repo-integration.md.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions