@graphrefly/graphrefly 0.40.0 → 0.42.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/{cascading-Cxs1eztH.d.cts → cascading-CH-_VwG9.d.cts} +2 -2
- package/dist/{cascading-BNfxffgc.d.ts → cascading-OgKQZjsa.d.ts} +2 -2
- package/dist/{chunk-CKFQS2CJ.js → chunk-2K5RXLAH.js} +1 -1
- package/dist/chunk-3ERTUW2J.js +45 -0
- package/dist/chunk-3K7HA4Y6.js +1 -0
- package/dist/chunk-3ZZX7M25.js +1 -0
- package/dist/chunk-4QH6VJF4.js +1 -0
- package/dist/{chunk-I2DEVPMU.js → chunk-5QRRKBUT.js} +1 -1
- package/dist/chunk-5ST42ESJ.js +1 -0
- package/dist/{chunk-FHRBBHJN.js → chunk-6YFZMUMR.js} +1 -1
- package/dist/{chunk-MNZIKXK4.js → chunk-7ARY3Y3T.js} +1 -1
- package/dist/chunk-7B7ELAT2.js +1 -0
- package/dist/{chunk-Z4F3DOWS.js → chunk-7VKFXLZQ.js} +1 -1
- package/dist/chunk-ACMJ2ZPS.js +3 -0
- package/dist/{chunk-32N3JALT.js → chunk-AGNM6RS6.js} +1 -1
- package/dist/chunk-AS3TV2TV.js +1 -0
- package/dist/{chunk-B7LCDQEV.js → chunk-CISGGAIF.js} +1 -1
- package/dist/{chunk-N43XM7BM.js → chunk-DEJTNNQC.js} +1 -1
- package/dist/{chunk-2QXRYP7Q.js → chunk-FDZAZNRO.js} +1 -1
- package/dist/{chunk-QSK3RRII.js → chunk-FUZ6S2DY.js} +1 -1
- package/dist/{chunk-LYM4PBMV.js → chunk-G5VBJ5K6.js} +1 -1
- package/dist/{chunk-6I726LZU.js → chunk-HZKW2AAB.js} +1 -1
- package/dist/{chunk-LCGAVGGV.js → chunk-IZM3UEH3.js} +3 -3
- package/dist/{chunk-2DMKW2AD.js → chunk-KCACBSJH.js} +1 -1
- package/dist/{chunk-SSCGRYJ2.js → chunk-KT5DTRBP.js} +1 -1
- package/dist/{chunk-WL6LFPJB.js → chunk-KY2LMAXU.js} +1 -1
- package/dist/{chunk-YXDRGKXP.js → chunk-LDQ3IUIP.js} +1 -1
- package/dist/chunk-LPRWATHB.js +61 -0
- package/dist/{chunk-6VWBPSSY.js → chunk-NWXQIOIB.js} +3 -3
- package/dist/{chunk-XW4YDF6G.js → chunk-Q7QQQA3I.js} +1 -1
- package/dist/chunk-VE5SIZEM.js +1 -0
- package/dist/chunk-VRALOYRD.js +1 -0
- package/dist/{chunk-XJLYLLIJ.js → chunk-WHMUB5QB.js} +1 -1
- package/dist/chunk-XLQPNNIC.js +1 -0
- package/dist/{chunk-JKBOIJ22.js → chunk-YGL7FPVQ.js} +1 -1
- package/dist/compat/index.cjs +5 -5
- package/dist/compat/index.d.cts +16 -16
- package/dist/compat/index.d.ts +16 -16
- package/dist/compat/index.js +1 -1
- package/dist/compat/jotai/index.d.cts +2 -2
- package/dist/compat/jotai/index.d.ts +2 -2
- package/dist/compat/nanostores/index.d.cts +2 -2
- package/dist/compat/nanostores/index.d.ts +2 -2
- package/dist/compat/nestjs/index.cjs +5 -5
- package/dist/compat/nestjs/index.d.cts +8 -8
- package/dist/compat/nestjs/index.d.ts +8 -8
- package/dist/compat/nestjs/index.js +1 -1
- package/dist/compat/react/index.d.cts +2 -2
- package/dist/compat/react/index.d.ts +2 -2
- package/dist/compat/solid/index.d.cts +2 -2
- package/dist/compat/solid/index.d.ts +2 -2
- package/dist/compat/svelte/index.d.cts +2 -2
- package/dist/compat/svelte/index.d.ts +2 -2
- package/dist/compat/vue/index.d.cts +2 -2
- package/dist/compat/vue/index.d.ts +2 -2
- package/dist/compat/zustand/index.cjs +3 -3
- package/dist/compat/zustand/index.d.cts +4 -4
- package/dist/compat/zustand/index.d.ts +4 -4
- package/dist/compat/zustand/index.js +1 -1
- package/dist/core/index.d.cts +4 -4
- package/dist/core/index.d.ts +4 -4
- package/dist/{decay-C25AyNAj.d.cts → decay-2ZukgQ4o.d.cts} +2 -2
- package/dist/{decay-BnrlbxSv.d.ts → decay-CdEBmDIs.d.ts} +2 -2
- package/dist/extra/browser.d.cts +1 -1
- package/dist/extra/browser.d.ts +1 -1
- package/dist/extra/index.cjs +14 -14
- package/dist/extra/index.d.cts +10 -11
- package/dist/extra/index.d.ts +10 -11
- package/dist/extra/index.js +1 -1
- package/dist/extra/node.cjs +2 -2
- package/dist/extra/node.d.cts +1 -1
- package/dist/extra/node.d.ts +1 -1
- package/dist/extra/node.js +1 -1
- package/dist/extra/operators.cjs +1 -1
- package/dist/extra/operators.d.cts +1 -1
- package/dist/extra/operators.d.ts +1 -1
- package/dist/extra/operators.js +1 -1
- package/dist/extra/reactive.d.cts +3 -3
- package/dist/extra/reactive.d.ts +3 -3
- package/dist/extra/reactive.js +1 -1
- package/dist/extra/render/index.d.cts +3 -3
- package/dist/extra/render/index.d.ts +3 -3
- package/dist/extra/sources.cjs +3 -1
- package/dist/extra/sources.d.cts +1 -1
- package/dist/extra/sources.d.ts +1 -1
- package/dist/extra/sources.js +1 -1
- package/dist/extra/storage-browser.d.cts +1 -1
- package/dist/extra/storage-browser.d.ts +1 -1
- package/dist/{fallback-CMZl39L5.d.ts → fallback-CqYVLL6X.d.ts} +1 -1
- package/dist/{fallback-8JYU8tlT.d.cts → fallback-Ctlj2tMY.d.cts} +1 -1
- package/dist/graph/index.cjs +7 -7
- package/dist/graph/index.d.cts +5 -5
- package/dist/graph/index.d.ts +5 -5
- package/dist/graph/index.js +1 -1
- package/dist/{graph-BkIkog4h.d.ts → graph-7VguS7a4.d.ts} +3 -3
- package/dist/{graph-E6likq7w.d.cts → graph-C4SHb3Ly.d.cts} +3 -3
- package/dist/{index-DktLSZOc.d.cts → index-2B7u2pVn.d.cts} +4 -4
- package/dist/{index-BTHOTC0Q.d.cts → index-3NmAfcH0.d.cts} +25 -7
- package/dist/{index-D1IEZUsj.d.ts → index-4Uz-e_fL.d.ts} +573 -213
- package/dist/{index-BAQrjuZF.d.ts → index-B-i4_g3k.d.ts} +2 -2
- package/dist/{index-DpiGqtrs.d.cts → index-B11anra4.d.cts} +441 -381
- package/dist/{index-WSlcjhQF.d.ts → index-B3OTH1dV.d.ts} +124 -13
- package/dist/{index-2n8Eai6M.d.ts → index-BG0BN3PB.d.ts} +1 -1
- package/dist/{index-z8WFPVI8.d.cts → index-BJX94aud.d.cts} +1 -1
- package/dist/{index-DhLyOHYZ.d.ts → index-BP8a88zx.d.ts} +11 -4
- package/dist/{index-Cnr1WrlX.d.cts → index-BTQtTb_H.d.cts} +14 -3
- package/dist/{index-BaA-xpSw.d.ts → index-BUYXac2c.d.ts} +3 -3
- package/dist/{index-DOBLxOti.d.cts → index-BVpm6noz.d.cts} +1 -1
- package/dist/{index-DhnsQfa3.d.ts → index-Bbkgpt5t.d.ts} +441 -381
- package/dist/{index-Cczxgd2D.d.ts → index-Bc41FuHp.d.cts} +3 -3
- package/dist/{index-BiHUBEKq.d.cts → index-BdGtBX-X.d.cts} +3 -3
- package/dist/index-BeT2r7sk.d.ts +760 -0
- package/dist/{index-da2V5vPy.d.ts → index-Bf7eqeSF.d.ts} +2 -2
- package/dist/{index-bXXLSvor.d.ts → index-Bn4zHYLj.d.ts} +4 -4
- package/dist/{index-DGTo1yka.d.cts → index-BoLv_OfD.d.cts} +2 -2
- package/dist/{index-B72TQQHd.d.cts → index-BsT7F2et.d.ts} +3 -3
- package/dist/{index-Bd91Nmf4.d.cts → index-BtAsBp8K.d.cts} +4 -4
- package/dist/{index-DgJc8Zgc.d.cts → index-C0-Jv1kP.d.cts} +81 -5
- package/dist/{index-C6ZUaos7.d.ts → index-C7O6r5fV.d.ts} +1 -1
- package/dist/{index-CL7oilfm.d.cts → index-C9kSENB4.d.cts} +1 -1
- package/dist/{index-yLt-aPMp.d.ts → index-CCq87F7t.d.ts} +1 -1
- package/dist/{index-DQQCOIt8.d.cts → index-CEMx8n40.d.cts} +10 -5
- package/dist/{index-BilOa6AE.d.cts → index-CJIuLu2f.d.cts} +124 -13
- package/dist/{index-B2RUoIUz.d.ts → index-CJK1JkYy.d.ts} +1 -1
- package/dist/{index-IUCY0OFN.d.ts → index-CJQm0g38.d.ts} +25 -7
- package/dist/index-CPNSy-U0.d.cts +760 -0
- package/dist/{index-A3U3CSve.d.cts → index-CZjOhcBy.d.cts} +2 -2
- package/dist/{index-CAP3UGsq.d.ts → index-CZmcDtFn.d.ts} +1 -1
- package/dist/{index-DYTBbF8T.d.cts → index-ChOyVLKm.d.cts} +1 -1
- package/dist/{index-eaQuGJnv.d.ts → index-CpyNFqkB.d.ts} +3 -3
- package/dist/{index-BJSZxSFX.d.ts → index-CvrqGfNS.d.ts} +1 -1
- package/dist/{index-DJ_MPOJ5.d.cts → index-D-Xs74HZ.d.cts} +573 -213
- package/dist/{index-C5cQ7Gfx.d.ts → index-D6egPFAL.d.ts} +4 -4
- package/dist/{index-CD2dBMet.d.ts → index-D8l8hNXn.d.ts} +10 -5
- package/dist/{index-40ZT4MHj.d.ts → index-DBHK8O6H.d.ts} +14 -3
- package/dist/{index-DVDapw2k.d.cts → index-DBIqYS43.d.cts} +35 -21
- package/dist/{index-3k4Gg6-n.d.ts → index-DBevwHj_.d.ts} +3 -3
- package/dist/{index-Ctb7_2sG.d.ts → index-DIOoAZUX.d.ts} +1 -1
- package/dist/{index-BQ1fR4li.d.ts → index-DO9XxMzS.d.ts} +35 -21
- package/dist/{index-CQtWm7jS.d.ts → index-DQo8xBgd.d.ts} +9 -9
- package/dist/{index-DH4fm2Ck.d.ts → index-Dgs8zcj7.d.ts} +2 -2
- package/dist/{index-CtFNGe-m.d.cts → index-Dhc7a7Xo.d.cts} +2 -2
- package/dist/{index-MxYuWOrf.d.cts → index-DmAgG5CI.d.cts} +3 -3
- package/dist/{index-CoM4rzyB.d.ts → index-Dmqp7KjD.d.ts} +1 -1
- package/dist/{index-B6iTqKtJ.d.ts → index-Dn-wI9g4.d.ts} +2 -2
- package/dist/{index-C-dkXOpB.d.cts → index-Du7u1lSf.d.cts} +11 -4
- package/dist/{index-DVAlsmEU.d.cts → index-HoU88d5U.d.cts} +3 -3
- package/dist/{index-CRm0YIzC.d.cts → index-LIpQQE9f.d.cts} +9 -9
- package/dist/{index-CgnCFhr2.d.cts → index-f5IivDUX.d.cts} +1 -1
- package/dist/{index-PgwvGWa1.d.cts → index-hHcaFlJX.d.cts} +1 -1
- package/dist/{index-I1cCY3ZI.d.ts → index-pT8sCpOJ.d.ts} +81 -5
- package/dist/{index-D4uimgee.d.cts → index-sl4NyzQx.d.cts} +1 -1
- package/dist/{index-tV3AA9hI.d.cts → index-tJoTcnHh.d.cts} +2 -2
- package/dist/{index-D3ayz3hy.d.cts → index-z96luz5O.d.cts} +1 -1
- package/dist/index.cjs +48 -48
- package/dist/index.d.cts +45 -50
- package/dist/index.d.ts +45 -50
- package/dist/index.js +1 -1
- package/dist/{meta-D8OyedKp.d.ts → meta-BgVAsg9j.d.ts} +1 -1
- package/dist/{meta-Ct9nqQS5.d.cts → meta-vE8bxW1E.d.cts} +1 -1
- package/dist/{node-BYInONRr.d.cts → node-ClS5yC-B.d.cts} +1 -1
- package/dist/{node-BYInONRr.d.ts → node-ClS5yC-B.d.ts} +1 -1
- package/dist/{observable-DO8DDEzv.d.ts → observable-BsBzUrcI.d.ts} +1 -1
- package/dist/{observable-DMIlYJV1.d.cts → observable-DLGPPtb8.d.cts} +1 -1
- package/dist/patterns/ai/browser.d.cts +4 -4
- package/dist/patterns/ai/browser.d.ts +4 -4
- package/dist/patterns/ai/browser.js +1 -1
- package/dist/patterns/ai/index.cjs +17 -17
- package/dist/patterns/ai/index.d.cts +17 -17
- package/dist/patterns/ai/index.d.ts +17 -17
- package/dist/patterns/ai/index.js +1 -1
- package/dist/patterns/ai/node.d.cts +4 -4
- package/dist/patterns/ai/node.d.ts +4 -4
- package/dist/patterns/ai/node.js +1 -1
- package/dist/patterns/cqrs/index.cjs +3 -3
- package/dist/patterns/cqrs/index.d.cts +6 -6
- package/dist/patterns/cqrs/index.d.ts +6 -6
- package/dist/patterns/cqrs/index.js +1 -1
- package/dist/patterns/demo-shell/index.cjs +5 -5
- package/dist/patterns/demo-shell/index.d.cts +5 -5
- package/dist/patterns/demo-shell/index.d.ts +5 -5
- package/dist/patterns/demo-shell/index.js +1 -1
- package/dist/patterns/domain-templates/index.cjs +3 -3
- package/dist/patterns/domain-templates/index.d.cts +4 -4
- package/dist/patterns/domain-templates/index.d.ts +4 -4
- package/dist/patterns/domain-templates/index.js +1 -1
- package/dist/patterns/graphspec/index.cjs +12 -12
- package/dist/patterns/graphspec/index.d.cts +5 -5
- package/dist/patterns/graphspec/index.d.ts +5 -5
- package/dist/patterns/graphspec/index.js +1 -1
- package/dist/patterns/harness/index.cjs +10 -8
- package/dist/patterns/harness/index.d.cts +11 -12
- package/dist/patterns/harness/index.d.ts +11 -12
- package/dist/patterns/harness/index.js +1 -1
- package/dist/patterns/inspect/index.cjs +3 -0
- package/dist/patterns/inspect/index.d.cts +9 -0
- package/dist/patterns/inspect/index.d.ts +9 -0
- package/dist/patterns/inspect/index.js +1 -0
- package/dist/patterns/job-queue/index.cjs +3 -3
- package/dist/patterns/job-queue/index.d.cts +6 -6
- package/dist/patterns/job-queue/index.d.ts +6 -6
- package/dist/patterns/job-queue/index.js +1 -1
- package/dist/patterns/memory/index.cjs +3 -3
- package/dist/patterns/memory/index.d.cts +6 -6
- package/dist/patterns/memory/index.d.ts +6 -6
- package/dist/patterns/memory/index.js +1 -1
- package/dist/patterns/messaging/index.cjs +3 -3
- package/dist/patterns/messaging/index.d.cts +5 -5
- package/dist/patterns/messaging/index.d.ts +5 -5
- package/dist/patterns/messaging/index.js +1 -1
- package/dist/patterns/orchestration/index.cjs +3 -3
- package/dist/patterns/orchestration/index.d.cts +7 -7
- package/dist/patterns/orchestration/index.d.ts +7 -7
- package/dist/patterns/orchestration/index.js +1 -1
- package/dist/patterns/process/index.cjs +1 -1
- package/dist/patterns/process/index.d.cts +7 -7
- package/dist/patterns/process/index.d.ts +7 -7
- package/dist/patterns/process/index.js +1 -1
- package/dist/patterns/reactive-layout/index.cjs +4 -4
- package/dist/patterns/reactive-layout/index.d.cts +5 -5
- package/dist/patterns/reactive-layout/index.d.ts +5 -5
- package/dist/patterns/reactive-layout/index.js +1 -1
- package/dist/patterns/reduction/index.cjs +3 -3
- package/dist/patterns/reduction/index.d.cts +4 -4
- package/dist/patterns/reduction/index.d.ts +4 -4
- package/dist/patterns/reduction/index.js +1 -1
- package/dist/patterns/surface/index.cjs +8 -8
- package/dist/patterns/surface/index.d.cts +6 -6
- package/dist/patterns/surface/index.d.ts +6 -6
- package/dist/patterns/surface/index.js +1 -1
- package/dist/{pipeline-graph-MWrQZXCq.d.cts → pipeline-graph-WBlobVhU.d.cts} +5 -5
- package/dist/{pipeline-graph-CB4La-UW.d.ts → pipeline-graph-v8fMvqNk.d.ts} +5 -5
- package/dist/{reactive-layout-BtZfUKuL.d.cts → reactive-layout-Dsvob4zD.d.cts} +2 -2
- package/dist/{reactive-layout-KJj4E2dT.d.ts → reactive-layout-v7KPvxoc.d.ts} +2 -2
- package/dist/{reactive-log-_zeEnB9H.d.cts → reactive-log-B00laMSQ.d.cts} +1 -1
- package/dist/{reactive-log-BlAsPLl2.d.ts → reactive-log-BezYsbA_.d.ts} +1 -1
- package/dist/{reactive-map-6P_k3AQM.d.cts → reactive-map-48mnZ-nu.d.cts} +1 -1
- package/dist/{reactive-map-CjXByDV-.d.ts → reactive-map-BVVPdvmi.d.ts} +1 -1
- package/dist/resilience-445VFFXQ.js +1 -0
- package/dist/{sugar-BhfjgetH.d.ts → sugar-CH-2ZY90.d.ts} +1 -1
- package/dist/{sugar-DzePN5-g.d.cts → sugar-DStZfUEK.d.cts} +1 -1
- package/dist/{topology-tree-mF7Emqzm.d.ts → topology-tree-BNGvuG82.d.ts} +1 -1
- package/dist/{topology-tree-3LBKFsUo.d.cts → topology-tree-BSdfSwMi.d.cts} +1 -1
- package/dist/{types-1Dhoi7HM.d.cts → types-B1jDWVsM.d.cts} +1 -1
- package/dist/{types-39jk0kaV.d.ts → types-DkzUUs0H.d.ts} +1 -1
- package/package.json +11 -51
- package/dist/budget-gate-CmmVtasH.d.ts +0 -115
- package/dist/budget-gate-DiP_nK0n.d.cts +0 -115
- package/dist/chunk-2BX4NB34.js +0 -3
- package/dist/chunk-6XVD5TZV.js +0 -1
- package/dist/chunk-756D5TFD.js +0 -1
- package/dist/chunk-7Q4ZD3YW.js +0 -1
- package/dist/chunk-ECQRP2UT.js +0 -1
- package/dist/chunk-INQFTVZA.js +0 -61
- package/dist/chunk-J63M5U46.js +0 -1
- package/dist/chunk-K2Z7UENB.js +0 -1
- package/dist/chunk-OSZ22J7O.js +0 -1
- package/dist/chunk-PPUYQ66A.js +0 -1
- package/dist/chunk-RZJDIV2G.js +0 -1
- package/dist/chunk-SGS4OJGS.js +0 -1
- package/dist/chunk-SVFKHUCW.js +0 -1
- package/dist/chunk-UWA6D7UF.js +0 -3
- package/dist/chunk-VMF23LGB.js +0 -1
- package/dist/chunk-WUT362QV.js +0 -1
- package/dist/chunk-YKD7WUYJ.js +0 -43
- package/dist/index-8s-Qm-gz.d.ts +0 -218
- package/dist/index-BgjS2b8N.d.ts +0 -366
- package/dist/index-BmSQLAZo.d.cts +0 -244
- package/dist/index-CGhMJNHb.d.cts +0 -128
- package/dist/index-CUIkE1l9.d.cts +0 -230
- package/dist/index-Ck35nA-T.d.ts +0 -244
- package/dist/index-CuPUehFa.d.cts +0 -218
- package/dist/index-D1Gc7wV5.d.ts +0 -230
- package/dist/index-N2MAxt7_.d.ts +0 -128
- package/dist/index-t6L2qpHh.d.cts +0 -366
- package/dist/patterns/audit/index.cjs +0 -3
- package/dist/patterns/audit/index.d.cts +0 -8
- package/dist/patterns/audit/index.d.ts +0 -8
- package/dist/patterns/audit/index.js +0 -1
- package/dist/patterns/guarded-execution/index.cjs +0 -3
- package/dist/patterns/guarded-execution/index.d.cts +0 -9
- package/dist/patterns/guarded-execution/index.d.ts +0 -9
- package/dist/patterns/guarded-execution/index.js +0 -1
- package/dist/patterns/lens/index.cjs +0 -3
- package/dist/patterns/lens/index.d.cts +0 -7
- package/dist/patterns/lens/index.d.ts +0 -7
- package/dist/patterns/lens/index.js +0 -1
- package/dist/patterns/refine-loop/index.cjs +0 -5
- package/dist/patterns/refine-loop/index.d.cts +0 -9
- package/dist/patterns/refine-loop/index.d.ts +0 -9
- package/dist/patterns/refine-loop/index.js +0 -1
- package/dist/patterns/resilient-pipeline/index.cjs +0 -3
- package/dist/patterns/resilient-pipeline/index.d.cts +0 -8
- package/dist/patterns/resilient-pipeline/index.d.ts +0 -8
- package/dist/patterns/resilient-pipeline/index.js +0 -1
- package/dist/resilience-S33JV6XC.js +0 -1
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { NodeInput } from './extra/sources.js';
|
|
2
|
-
import { N as Node } from './node-
|
|
3
|
-
import { L as LLMAdapter } from './types-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { G as Graph, t as GraphProfileResult, s as GraphProfileOptions } from './graph-
|
|
7
|
-
import { G as GateController } from './pipeline-graph-
|
|
8
|
-
import { J as JobQueueGraph } from './index-IUCY0OFN.js';
|
|
2
|
+
import { N as Node } from './node-ClS5yC-B.js';
|
|
3
|
+
import { L as LLMAdapter } from './types-DkzUUs0H.js';
|
|
4
|
+
import { J as JobEnvelope, a as JobFlowGraph, b as JobQueueGraph } from './index-CJQm0g38.js';
|
|
5
|
+
import { T as TopicGraph, M as MessagingHubGraph } from './index-DBHK8O6H.js';
|
|
6
|
+
import { a as GraphOptions, G as Graph, t as GraphProfileResult, s as GraphProfileOptions } from './graph-7VguS7a4.js';
|
|
7
|
+
import { G as GateController } from './pipeline-graph-v8fMvqNk.js';
|
|
9
8
|
|
|
10
9
|
/**
|
|
11
10
|
* Strategy model and priority scoring (roadmap §9.0).
|
|
@@ -278,37 +277,72 @@ interface QueueConfig {
|
|
|
278
277
|
startOpen?: boolean;
|
|
279
278
|
}
|
|
280
279
|
/**
|
|
281
|
-
*
|
|
282
|
-
*
|
|
283
|
-
*
|
|
284
|
-
*
|
|
285
|
-
*
|
|
286
|
-
*
|
|
287
|
-
*
|
|
288
|
-
*
|
|
289
|
-
*
|
|
290
|
-
*
|
|
291
|
-
*
|
|
292
|
-
*
|
|
293
|
-
*
|
|
294
|
-
*
|
|
295
|
-
* `
|
|
280
|
+
* Accumulating per-job payload threaded through the harness's
|
|
281
|
+
* `executeFlow` ({@link harnessLoop} Tier 6.5 C2 lock). Each stage's work fn
|
|
282
|
+
* receives the prior payload and returns a new one with its own field
|
|
283
|
+
* filled in:
|
|
284
|
+
*
|
|
285
|
+
* - The `enqueueEffect` seeds with `{ item }` only.
|
|
286
|
+
* - The execute work fn fills `execution`.
|
|
287
|
+
* - The verify work fn fills `verify`.
|
|
288
|
+
*
|
|
289
|
+
* The post-completed dispatch effect reads `verify.verified` /
|
|
290
|
+
* `verify.errorClass` to route the item to `verifyResults` /
|
|
291
|
+
* `retryTopic.publish(...)` / `intake.publish(...)` (3-way verdict).
|
|
292
|
+
*
|
|
293
|
+
* Carrying `item` through stage payloads (rather than re-pairing via a
|
|
294
|
+
* separate `withLatestFrom` node) is the C2 deviation from today's
|
|
295
|
+
* `executeContextNode` design: each `JobEnvelope` is self-contained, so the
|
|
296
|
+
* verify pump can run multiple in-flight jobs in parallel without an
|
|
297
|
+
* external pairing node.
|
|
296
298
|
*/
|
|
297
|
-
|
|
299
|
+
interface HarnessJobPayload<A = unknown> {
|
|
300
|
+
/** The triaged item flowing through execute → verify → dispatch. */
|
|
301
|
+
item: TriagedItem;
|
|
302
|
+
/** Filled by the execute work fn. Verify reads this; dispatch routes. */
|
|
303
|
+
execution?: ExecutionResult<A>;
|
|
304
|
+
/** Filled by the verify work fn. Dispatch reads `verified` / `errorClass`. */
|
|
305
|
+
verify?: VerifyOutput;
|
|
306
|
+
}
|
|
298
307
|
/**
|
|
299
|
-
* Pluggable
|
|
300
|
-
*
|
|
301
|
-
*
|
|
302
|
-
*
|
|
303
|
-
*
|
|
304
|
-
*
|
|
305
|
-
*
|
|
306
|
-
*
|
|
307
|
-
*
|
|
308
|
-
*
|
|
309
|
-
*
|
|
308
|
+
* Pluggable EXECUTE work fn — receives a {@link JobEnvelope} carrying a
|
|
309
|
+
* {@link HarnessJobPayload} (with `item` set, `execution` / `verify`
|
|
310
|
+
* unset), returns a {@link NodeInput} that emits the same payload with
|
|
311
|
+
* `execution` filled.
|
|
312
|
+
*
|
|
313
|
+
* **C2 contract (Tier 6.5 lock, 2026-04-28):**
|
|
314
|
+
* 1. Emit DATA exactly once per claimed job. The JobFlow pump subscribes
|
|
315
|
+
* once, takes the first DATA, then unsubscribes. Subsequent emissions
|
|
316
|
+
* are ignored.
|
|
317
|
+
* 2. Errors must be caught and surfaced as a `failure` outcome inside the
|
|
318
|
+
* payload — never throw / return ERROR. A pump nack would drop the
|
|
319
|
+
* item from JobFlow before the dispatch effect could route it.
|
|
320
|
+
* 3. The work fn runs once per claim — no internal `switchMap` needed.
|
|
321
|
+
* Per-item subgraphs (e.g. a fresh `refineLoop` per claim) are
|
|
322
|
+
* instantiated inside the work fn body.
|
|
323
|
+
*
|
|
324
|
+
* `defaultLlmExecutor` (in `defaults.ts`) is a thin `adapter.invoke()`
|
|
325
|
+
* wrapper. `refineExecutor` builds a per-claim `refineLoop`.
|
|
326
|
+
* `actuatorExecutor` runs a side-effecting `apply(item, signal)`.
|
|
310
327
|
*/
|
|
311
|
-
type
|
|
328
|
+
type HarnessExecutor<A = unknown> = (job: JobEnvelope<HarnessJobPayload<A>>) => NodeInput<HarnessJobPayload<A>>;
|
|
329
|
+
/**
|
|
330
|
+
* Pluggable VERIFY work fn — receives a {@link JobEnvelope} whose payload
|
|
331
|
+
* has `item` + `execution` populated, returns a {@link NodeInput} that
|
|
332
|
+
* emits the same payload with `verify` filled.
|
|
333
|
+
*
|
|
334
|
+
* Same C2 contract rules 1–3 as {@link HarnessExecutor}. The dispatch
|
|
335
|
+
* effect downstream reads `verify.verified` (success → ack +
|
|
336
|
+
* verifyResults publish), `verify.errorClass === "self-correctable"`
|
|
337
|
+
* (retry → republish to retry topic with `$retries` bumped), or anything
|
|
338
|
+
* else (structural → reingest to intake if budget remains).
|
|
339
|
+
*
|
|
340
|
+
* Verify-LLM-call failures (parse error, adapter throw, timeout) MUST be
|
|
341
|
+
* caught and surfaced as a structural-failure `verify` payload (`{
|
|
342
|
+
* verified: false, findings: [...], errorClass: "structural" }`) so the
|
|
343
|
+
* dispatch effect can route the item rather than silently drop it.
|
|
344
|
+
*/
|
|
345
|
+
type HarnessVerifier<A = unknown> = (job: JobEnvelope<HarnessJobPayload<A>>) => NodeInput<HarnessJobPayload<A>>;
|
|
312
346
|
/** Triage prompt callable shape — pair of `[intake item, strategy snapshot]`. */
|
|
313
347
|
type TriagePromptFn = (pair: readonly [IntakeItem, StrategySnapshot]) => string;
|
|
314
348
|
/** Execute prompt callable shape. */
|
|
@@ -372,55 +406,63 @@ interface HarnessLoopOptions<A = unknown> {
|
|
|
372
406
|
maxTotalReingestions?: number;
|
|
373
407
|
/** Retained limit for topic logs (default 1000). */
|
|
374
408
|
retainedLimit?: number;
|
|
409
|
+
/**
|
|
410
|
+
* Per-pump-tick claim cap on the internal `executeFlow` JobFlow's `execute`
|
|
411
|
+
* stage (Tier 6.5 C2). Default `Number.MAX_SAFE_INTEGER` — every pending
|
|
412
|
+
* claim is processed in one tick (matches today's unbounded `merge()`
|
|
413
|
+
* parallelism). Lower this to bound LLM cost spikes on bursty intake.
|
|
414
|
+
*
|
|
415
|
+
* **Caveat.** This caps **claims per pump tick**, not total concurrent
|
|
416
|
+
* inflight. Bounded-inflight is a separate primitive concern — see
|
|
417
|
+
* `docs/optimizations.md` "Tier 6.5 follow-up — bounded concurrent inflight
|
|
418
|
+
* on JobFlow stages".
|
|
419
|
+
*/
|
|
420
|
+
executeMaxPerPump?: number;
|
|
421
|
+
/**
|
|
422
|
+
* Per-pump-tick claim cap on the internal `executeFlow` JobFlow's
|
|
423
|
+
* `verify` stage. Default `Number.MAX_SAFE_INTEGER`. Same caveat as
|
|
424
|
+
* {@link HarnessLoopOptions.executeMaxPerPump}. Honored independently
|
|
425
|
+
* of the execute cap via `StageDef.maxPerPump` (Tier 6.5 D1).
|
|
426
|
+
*/
|
|
427
|
+
verifyMaxPerPump?: number;
|
|
375
428
|
}
|
|
376
429
|
|
|
377
430
|
/**
|
|
378
|
-
* actuatorExecutor — bridge a side-effecting actuator into the harness
|
|
431
|
+
* actuatorExecutor — bridge a side-effecting actuator into the harness
|
|
432
|
+
* EXECUTE work fn.
|
|
379
433
|
*
|
|
380
434
|
* `refineExecutor` covers the artifact-typed case (refine a candidate
|
|
381
435
|
* `T` against an evaluator); `actuatorExecutor` covers the side-effecting
|
|
382
436
|
* case (write a catalog entry, mutate a template registry, edit a doc on
|
|
383
437
|
* disk). The user's `apply` callback owns the side effect; the executor
|
|
384
|
-
* wraps it in the per-
|
|
385
|
-
*
|
|
386
|
-
*
|
|
387
|
-
*
|
|
388
|
-
*
|
|
389
|
-
*
|
|
390
|
-
*
|
|
391
|
-
*
|
|
392
|
-
*
|
|
393
|
-
*
|
|
394
|
-
*
|
|
395
|
-
*
|
|
396
|
-
*
|
|
397
|
-
*
|
|
398
|
-
*
|
|
399
|
-
*
|
|
400
|
-
* `apply`'s bridged node settles (or fails). Input-arrival waves
|
|
401
|
-
* never produce an `ExecuteOutput`.
|
|
402
|
-
*
|
|
403
|
-
* **What `apply` may return.** Anything `fromAny` accepts: a
|
|
404
|
-
* `Promise<R>`, a `Node<R>`, an `AsyncIterable<R>`, an `Iterable<R>`,
|
|
405
|
-
* or a synchronous `R`. `Promise<R>` is the typical shape (`writeFile`,
|
|
406
|
-
* `fetch`, `db.execute`); reactive composition through `Node<R>` is the
|
|
407
|
-
* escape hatch when the actuator itself wants to surface intermediate
|
|
408
|
-
* progress before settling.
|
|
438
|
+
* wraps it in the per-claim lifecycle:
|
|
439
|
+
*
|
|
440
|
+
* 1. **One DATA per claim.** The producer captures the first DATA from
|
|
441
|
+
* the bridged `apply` result, emits a {@link HarnessJobPayload} with
|
|
442
|
+
* `execution` filled in, and completes. Subsequent inner DATAs are
|
|
443
|
+
* ignored.
|
|
444
|
+
* 2. **Cancel-on-teardown.** When the JobFlow pump unsubscribes (after
|
|
445
|
+
* capturing first DATA, or on graph teardown), the producer's cleanup
|
|
446
|
+
* fires `ac.abort()` which propagates into `apply`'s `signal`.
|
|
447
|
+
* 3. **Errors surfaced as failure payload.** A thrown / ERROR result is
|
|
448
|
+
* mapped via `onError` into a `failure`-outcome `ExecuteOutput` so the
|
|
449
|
+
* dispatch effect can route the item rather than silently dropping it.
|
|
450
|
+
*
|
|
451
|
+
* **What `apply` may return.** Anything `fromAny` accepts: `Promise<R>`,
|
|
452
|
+
* `Node<R>`, `AsyncIterable<R>`, `Iterable<R>`, or a synchronous `R`.
|
|
453
|
+
* `Promise<R>` is the typical shape (`writeFile`, `fetch`, `db.execute`).
|
|
409
454
|
*
|
|
410
455
|
* **Pairing with `evalVerifier`.** `ExecuteOutput.artifact` is set to
|
|
411
456
|
* the actuation record; an `evalVerifier<R>` whose `extractArtifact`
|
|
412
|
-
* returns the record (or
|
|
413
|
-
*
|
|
414
|
-
* with consistent typing end-to-end.
|
|
457
|
+
* returns the record (or the post-apply world state) closes EXECUTE →
|
|
458
|
+
* VERIFY with consistent typing end-to-end.
|
|
415
459
|
*
|
|
416
460
|
* @module
|
|
417
461
|
*/
|
|
418
462
|
|
|
419
463
|
/**
|
|
420
464
|
* What an actuator's `apply` may return. Mirrors `NodeInput<R>` plus a
|
|
421
|
-
* raw `R` for synchronous side effects
|
|
422
|
-
* direct shape for their case (Promise for async I/O, raw record for
|
|
423
|
-
* pure in-memory mutation).
|
|
465
|
+
* raw `R` for synchronous side effects.
|
|
424
466
|
*/
|
|
425
467
|
type ActuatorResult<R> = NodeInput<R>;
|
|
426
468
|
/** Configuration for {@link actuatorExecutor}. */
|
|
@@ -428,8 +470,8 @@ interface ActuatorExecutorConfig<R> {
|
|
|
428
470
|
/**
|
|
429
471
|
* Apply the side effect for this triaged item. Receives the abort
|
|
430
472
|
* signal — actuators that own real I/O should thread `signal` into
|
|
431
|
-
* `fetch`, `fs.writeFile`, child-process kills, etc. so that
|
|
432
|
-
*
|
|
473
|
+
* `fetch`, `fs.writeFile`, child-process kills, etc. so that the
|
|
474
|
+
* pump's teardown actually cancels in-flight work.
|
|
433
475
|
*
|
|
434
476
|
* The first DATA emitted by the bridged result wins; later DATAs are
|
|
435
477
|
* discarded. ERROR (or a synchronous throw) is mapped via `onError`.
|
|
@@ -440,28 +482,21 @@ interface ActuatorExecutorConfig<R> {
|
|
|
440
482
|
/**
|
|
441
483
|
* Optional gate — when provided and returning `false`, the actuator
|
|
442
484
|
* is skipped and the executor emits an `ExecuteOutput` with
|
|
443
|
-
* `outcome: "failure"
|
|
444
|
-
*
|
|
445
|
-
* route interventions the actuator can't handle (e.g. `intervention:
|
|
446
|
-
* "investigate"` items) into the failure path so the verifier sees
|
|
447
|
-
* them.
|
|
485
|
+
* `outcome: "failure"`. Use to route interventions the actuator can't
|
|
486
|
+
* handle into the failure path.
|
|
448
487
|
*/
|
|
449
488
|
shouldApply?: (item: TriagedItem) => boolean;
|
|
450
489
|
/** Detail string for the skip path. Default: includes intervention name. */
|
|
451
490
|
skipDetail?: (item: TriagedItem) => string;
|
|
452
491
|
/**
|
|
453
492
|
* Map a successfully-applied actuation record into an `ExecuteOutput<R>`.
|
|
454
|
-
* Default: `outcome: "success"`, `detail` references the intervention
|
|
455
|
-
* + summary, `artifact: record`.
|
|
456
493
|
*/
|
|
457
494
|
toOutput?: (record: R, item: TriagedItem) => ExecuteOutput<R>;
|
|
458
495
|
/**
|
|
459
|
-
* Map a thrown / ERROR result into an `ExecuteOutput<R>`.
|
|
460
|
-
* `outcome: "failure"`, `detail` carries the error message,
|
|
461
|
-
* `artifact: undefined`.
|
|
496
|
+
* Map a thrown / ERROR result into an `ExecuteOutput<R>`.
|
|
462
497
|
*/
|
|
463
498
|
onError?: (err: unknown, item: TriagedItem) => ExecuteOutput<R>;
|
|
464
|
-
/** Node name prefix for `describe()` introspection.
|
|
499
|
+
/** Node name prefix for `describe()` introspection. */
|
|
465
500
|
name?: string;
|
|
466
501
|
}
|
|
467
502
|
/**
|
|
@@ -479,11 +514,7 @@ interface ActuatorExecutorConfig<R> {
|
|
|
479
514
|
* },
|
|
480
515
|
* shouldApply: (item) => item.intervention === "catalog-fn",
|
|
481
516
|
* }),
|
|
482
|
-
* verifier: evalVerifier<CatalogPatch>({
|
|
483
|
-
* evaluator,
|
|
484
|
-
* datasetFor,
|
|
485
|
-
* extractArtifact: (exec) => exec.artifact ?? null,
|
|
486
|
-
* }),
|
|
517
|
+
* verifier: evalVerifier<CatalogPatch>({ ... }),
|
|
487
518
|
* });
|
|
488
519
|
* ```
|
|
489
520
|
*/
|
|
@@ -505,7 +536,7 @@ interface DispatchActuatorConfig<R> {
|
|
|
505
536
|
routes: Readonly<Partial<Record<TriagedItem["intervention"], ActuatorApplyFn<R>>>>;
|
|
506
537
|
/** Fallback apply callback for items whose intervention is not in `routes`. */
|
|
507
538
|
default?: ActuatorApplyFn<R>;
|
|
508
|
-
/** Node name prefix for `describe()` introspection.
|
|
539
|
+
/** Node name prefix for `describe()` introspection. */
|
|
509
540
|
name?: string;
|
|
510
541
|
}
|
|
511
542
|
/**
|
|
@@ -516,22 +547,6 @@ interface DispatchActuatorConfig<R> {
|
|
|
516
547
|
* intervention → callback at call-time. Items with no matching route and no
|
|
517
548
|
* `default` emit a skip-failure with detail
|
|
518
549
|
* `"no route for intervention 'X'"`.
|
|
519
|
-
*
|
|
520
|
-
* @example Multi-intervention dogfood loop.
|
|
521
|
-
* ```ts
|
|
522
|
-
* const harness = harnessLoop("repair", {
|
|
523
|
-
* adapter,
|
|
524
|
-
* executor: dispatchActuator<CatalogPatch>({
|
|
525
|
-
* routes: {
|
|
526
|
-
* "catalog-fn": catalogFnActuator,
|
|
527
|
-
* "template": templateActuator,
|
|
528
|
-
* "docs": docEditActuator,
|
|
529
|
-
* },
|
|
530
|
-
* default: investigateActuator,
|
|
531
|
-
* }),
|
|
532
|
-
* verifier: evalVerifier<CatalogPatch>({ ... }),
|
|
533
|
-
* });
|
|
534
|
-
* ```
|
|
535
550
|
*/
|
|
536
551
|
declare function dispatchActuator<R>(config: DispatchActuatorConfig<R>): HarnessExecutor<R>;
|
|
537
552
|
|
|
@@ -679,7 +694,7 @@ declare function createIntakeBridge<T>(source: Node<T>, intakeTopic: TopicGraph<
|
|
|
679
694
|
* TS eval runner uses `EvalRun` from `evals/lib/types.ts` which is a superset
|
|
680
695
|
* of this shape. The bridge only reads what it needs.
|
|
681
696
|
*/
|
|
682
|
-
interface
|
|
697
|
+
interface EvalRunResult {
|
|
683
698
|
run_id: string;
|
|
684
699
|
model: string;
|
|
685
700
|
tasks: EvalTaskResult[];
|
|
@@ -707,12 +722,12 @@ interface EvalIntakeBridgeOptions {
|
|
|
707
722
|
* Each failing judge criterion produces a separate IntakeItem — not one
|
|
708
723
|
* item per task. This gives the triage stage granular findings to classify.
|
|
709
724
|
*
|
|
710
|
-
* @param evalSource - Node emitting
|
|
725
|
+
* @param evalSource - Node emitting EvalRunResult (or EvalRunResult[]).
|
|
711
726
|
* @param intakeTopic - TopicGraph to publish IntakeItem entries to.
|
|
712
727
|
* @param opts - Optional configuration.
|
|
713
728
|
* @returns The effect node (for lifecycle management).
|
|
714
729
|
*/
|
|
715
|
-
declare function evalIntakeBridge(evalSource: Node<
|
|
730
|
+
declare function evalIntakeBridge(evalSource: Node<EvalRunResult | EvalRunResult[]>, intakeTopic: TopicGraph<IntakeItem>, opts?: EvalIntakeBridgeOptions): Node<unknown>;
|
|
716
731
|
/**
|
|
717
732
|
* Wrap any eval runner as a reactive producer node.
|
|
718
733
|
*
|
|
@@ -728,9 +743,9 @@ declare function evalIntakeBridge(evalSource: Node<EvalResult | EvalResult[]>, i
|
|
|
728
743
|
* ```
|
|
729
744
|
*
|
|
730
745
|
* @param trigger - Any node; each new DATA emission fires the runner.
|
|
731
|
-
* @param runner - Returns an
|
|
746
|
+
* @param runner - Returns an EvalRunResult (or promise of one).
|
|
732
747
|
*/
|
|
733
|
-
declare function evalSource<T extends
|
|
748
|
+
declare function evalSource<T extends EvalRunResult>(trigger: Node<unknown>, runner: () => T | Promise<T>): Node<T>;
|
|
734
749
|
/** Per-task delta produced by {@link beforeAfterCompare}. */
|
|
735
750
|
interface EvalTaskDelta {
|
|
736
751
|
taskId: string;
|
|
@@ -754,12 +769,12 @@ interface EvalDelta {
|
|
|
754
769
|
* Derived node that computes before/after eval deltas.
|
|
755
770
|
*
|
|
756
771
|
* Pure computation: no LLM, no async. Compares per-task validity and
|
|
757
|
-
* pass counts between two `
|
|
772
|
+
* pass counts between two `EvalRunResult` snapshots.
|
|
758
773
|
*
|
|
759
774
|
* @param before - Node holding the baseline eval result.
|
|
760
775
|
* @param after - Node holding the new eval result.
|
|
761
776
|
*/
|
|
762
|
-
declare function beforeAfterCompare(before: Node<
|
|
777
|
+
declare function beforeAfterCompare(before: Node<EvalRunResult>, after: Node<EvalRunResult>): Node<EvalDelta>;
|
|
763
778
|
/**
|
|
764
779
|
* Derived node that selects which eval task IDs to re-run.
|
|
765
780
|
*
|
|
@@ -896,6 +911,341 @@ type EffectivenessTrackerOptions = {
|
|
|
896
911
|
*/
|
|
897
912
|
declare function effectivenessTracker(opts?: EffectivenessTrackerOptions): EffectivenessTrackerBundle;
|
|
898
913
|
|
|
914
|
+
/**
|
|
915
|
+
* refineLoop — universal prompt/artifact optimization loop as a reactive Graph.
|
|
916
|
+
*
|
|
917
|
+
* Roadmap §9.8 (Wave 2.5). The loop is a 4-topic reactive pipeline:
|
|
918
|
+
*
|
|
919
|
+
* iterationTrigger ──▶ GENERATE ──▶ EVALUATE ──▶ ANALYZE ──▶ DECIDE
|
|
920
|
+
* │ │
|
|
921
|
+
* └─────── feedback + trigger ◀─────┘
|
|
922
|
+
*
|
|
923
|
+
* Each stage is a `TopicGraph` so dispatches stay O(1) per subscriber (cursor-
|
|
924
|
+
* based) and every iteration is observable, replayable, and checkpointable.
|
|
925
|
+
*
|
|
926
|
+
* Composition invariants (from COMPOSITION-GUIDE):
|
|
927
|
+
* - §7 feedback cycle: only `iterationTrigger` drives re-generation. Strategy
|
|
928
|
+
* + feedback + dataset are read via closure updaters (§28 factory-time seed)
|
|
929
|
+
* so mid-run swaps apply to the NEXT iteration, never retrigger the current.
|
|
930
|
+
* - §28 factory-time seed: strategy, lastFeedback, prevCandidates, dataset
|
|
931
|
+
* closures captured at wiring time + updated via subscribe handlers so the
|
|
932
|
+
* first activation doesn't drop the initial pair.
|
|
933
|
+
* - §32 nested-drain state-mirror: the decide-effect writes `lastFeedback`
|
|
934
|
+
* BEFORE bumping `iterationTrigger` inside its `batch()`, guaranteeing the
|
|
935
|
+
* mirror is current when the next-iteration wave reaches the generate fn.
|
|
936
|
+
* - §19 terminal-emission: history / best emit once per iteration (settled),
|
|
937
|
+
* not on every intermediate wave.
|
|
938
|
+
* - §27 attachSnapshotStorage: the whole graph is checkpointable — pause overnight,
|
|
939
|
+
* resume tomorrow from the exact iteration count, candidate set, strategy.
|
|
940
|
+
*
|
|
941
|
+
* Scope clamp (v1): core factory + `RefineStrategy<T>` + `blindVariation` and
|
|
942
|
+
* `errorCritique` built-ins + budget gating + checkpoint/resume.
|
|
943
|
+
* `mutateAndRefine` / registry / `autoSelectStrategy` / `optimizeCatalog` /
|
|
944
|
+
* `refineExecutor` are deferred.
|
|
945
|
+
*
|
|
946
|
+
* @module
|
|
947
|
+
*/
|
|
948
|
+
|
|
949
|
+
/** A single task row — the unit the evaluator scores one candidate against. */
|
|
950
|
+
interface DatasetItem {
|
|
951
|
+
readonly id: string;
|
|
952
|
+
readonly [k: string]: unknown;
|
|
953
|
+
}
|
|
954
|
+
/**
|
|
955
|
+
* One candidate's score on one task. Higher is better by convention.
|
|
956
|
+
*
|
|
957
|
+
* Set `candidateIndex` when the evaluator fans out scores across multiple
|
|
958
|
+
* candidates (e.g. `candidates × tasks`). `pickBest` aggregates mean scores
|
|
959
|
+
* per `candidateIndex` when present; when absent, falls back to positional
|
|
960
|
+
* alignment (`scores[i]` ↔ `candidates[i]`).
|
|
961
|
+
*/
|
|
962
|
+
interface EvalResult {
|
|
963
|
+
readonly taskId: string;
|
|
964
|
+
readonly score: number;
|
|
965
|
+
readonly error?: string;
|
|
966
|
+
readonly detail?: unknown;
|
|
967
|
+
/** 0-based index into the `candidates` batch this score belongs to. */
|
|
968
|
+
readonly candidateIndex?: number;
|
|
969
|
+
}
|
|
970
|
+
/** Aggregated feedback the strategy produces from a scores batch. */
|
|
971
|
+
interface Feedback {
|
|
972
|
+
readonly summary: string;
|
|
973
|
+
readonly critique?: unknown;
|
|
974
|
+
readonly weakTasks?: readonly string[];
|
|
975
|
+
readonly score: number;
|
|
976
|
+
}
|
|
977
|
+
/**
|
|
978
|
+
* Strategy interface — plain object, no base class. Strategies implement three
|
|
979
|
+
* pure hooks; the loop infrastructure wraps them in reactive nodes so every
|
|
980
|
+
* decision is visible in `describe()`.
|
|
981
|
+
*
|
|
982
|
+
* `generate` may be sync or async. Async generates yield a microtask per
|
|
983
|
+
* iteration — that's what gives `pause()` / `setStrategy()` a window to
|
|
984
|
+
* interleave. **A fully synchronous `generate` will drain the entire loop
|
|
985
|
+
* during factory activation** (all iterations run before `refineLoop()`
|
|
986
|
+
* returns), which is usually not what you want for observable, steerable
|
|
987
|
+
* loops. Real strategies that call LLMs / evals are async and Just Work;
|
|
988
|
+
* custom sync strategies for tests are fine but should be marked `async`
|
|
989
|
+
* to match real cadence.
|
|
990
|
+
*/
|
|
991
|
+
interface RefineStrategy<T> {
|
|
992
|
+
readonly name: string;
|
|
993
|
+
/** Produce initial candidates from the seed. Called at iteration 0. */
|
|
994
|
+
seed(seed: T): readonly T[];
|
|
995
|
+
/** Reduce scores to feedback. Pure function. */
|
|
996
|
+
analyze(scores: readonly EvalResult[], candidates: readonly T[]): Feedback;
|
|
997
|
+
/**
|
|
998
|
+
* Generate next-iteration candidates from feedback + prior candidates.
|
|
999
|
+
* Async allowed — the loop awaits via `fromAny`.
|
|
1000
|
+
*/
|
|
1001
|
+
generate(feedback: Feedback, candidates: readonly T[]): Promise<readonly T[]> | readonly T[];
|
|
1002
|
+
}
|
|
1003
|
+
/**
|
|
1004
|
+
* Evaluator shape — Shape 4 (2026-04-22): both `candidates` and `dataset` are
|
|
1005
|
+
* reactive nodes; the evaluator's returned node IS the EVALUATE topic's source
|
|
1006
|
+
* (no glue). Implementers can batch-eval (e.g. `funnel` with concurrency) or
|
|
1007
|
+
* map per-candidate — user's code.
|
|
1008
|
+
*
|
|
1009
|
+
* **`EvalResult.candidateIndex` semantics.** Optional per-result field.
|
|
1010
|
+
* When present, multi-candidate aggregators ({@link errorCritique}'s
|
|
1011
|
+
* `pickBest`) score per index, picking the candidate with the highest
|
|
1012
|
+
* mean score. When absent across all results, those aggregators fall back
|
|
1013
|
+
* to positional matching against `candidates[0]` — meaning a strategy that
|
|
1014
|
+
* generates >1 candidate but emits unindexed scores effectively only ever
|
|
1015
|
+
* critiques the first candidate. Set `candidateIndex` whenever the
|
|
1016
|
+
* evaluator's score corresponds to a specific candidate in the batch.
|
|
1017
|
+
*/
|
|
1018
|
+
type Evaluator<T> = (candidates: Node<readonly T[]>, dataset: Node<readonly DatasetItem[]>) => Node<readonly EvalResult[]>;
|
|
1019
|
+
/**
|
|
1020
|
+
* Early-stop controls. Each field fans into its own derived node; the four
|
|
1021
|
+
* combine via `||` into `converged: Node<boolean>`. Callers see exactly
|
|
1022
|
+
* which rule tripped via `status` / the DECIDE topic's `reason`.
|
|
1023
|
+
*/
|
|
1024
|
+
interface ConvergenceOptions {
|
|
1025
|
+
/** Stop when aggregate score has not improved for N iterations. */
|
|
1026
|
+
patience?: number;
|
|
1027
|
+
/** Stop when aggregate score reaches or exceeds this. */
|
|
1028
|
+
minScore?: number;
|
|
1029
|
+
/** Stop when absolute delta between consecutive scores falls below this. */
|
|
1030
|
+
minDelta?: number;
|
|
1031
|
+
/** Stop after N total evaluations (iteration count × per-iter candidates). */
|
|
1032
|
+
maxEvaluations?: number;
|
|
1033
|
+
/** Stop after N iterations. Always set a finite bound in production. */
|
|
1034
|
+
maxIterations?: number;
|
|
1035
|
+
}
|
|
1036
|
+
/** Emitted to the GENERATE topic each time the strategy produces a batch. */
|
|
1037
|
+
interface GenerateEvent<T> {
|
|
1038
|
+
readonly iteration: number;
|
|
1039
|
+
readonly candidates: readonly T[];
|
|
1040
|
+
readonly timestamp_ns: number;
|
|
1041
|
+
}
|
|
1042
|
+
/** Emitted to the EVALUATE topic when scores settle for an iteration. */
|
|
1043
|
+
interface EvaluateEvent<T> {
|
|
1044
|
+
readonly iteration: number;
|
|
1045
|
+
readonly candidates: readonly T[];
|
|
1046
|
+
readonly scores: readonly EvalResult[];
|
|
1047
|
+
readonly timestamp_ns: number;
|
|
1048
|
+
}
|
|
1049
|
+
/** Emitted to the ANALYZE topic — strategy's reduction over scores. */
|
|
1050
|
+
interface AnalyzeEvent<T> {
|
|
1051
|
+
readonly iteration: number;
|
|
1052
|
+
readonly candidates: readonly T[];
|
|
1053
|
+
readonly feedback: Feedback;
|
|
1054
|
+
readonly timestamp_ns: number;
|
|
1055
|
+
}
|
|
1056
|
+
/** Emitted to the DECIDE topic — branch taken this iteration. */
|
|
1057
|
+
interface DecideEvent {
|
|
1058
|
+
readonly iteration: number;
|
|
1059
|
+
readonly decision: "continue" | "converged" | "budget" | "paused";
|
|
1060
|
+
readonly reason?: string;
|
|
1061
|
+
readonly timestamp_ns: number;
|
|
1062
|
+
}
|
|
1063
|
+
type RefineStatus = "running" | "converged" | "budget" | "paused" | "errored";
|
|
1064
|
+
interface Iteration<T> {
|
|
1065
|
+
readonly n: number;
|
|
1066
|
+
readonly candidates: readonly T[];
|
|
1067
|
+
readonly scores: readonly EvalResult[];
|
|
1068
|
+
readonly feedback: Feedback;
|
|
1069
|
+
/** `null` iff the candidate batch for this iteration was empty. */
|
|
1070
|
+
readonly best: T | null;
|
|
1071
|
+
readonly bestScore: number;
|
|
1072
|
+
readonly timestamp_ns: number;
|
|
1073
|
+
}
|
|
1074
|
+
interface RefineLoopOptions extends ConvergenceOptions {
|
|
1075
|
+
/** Reactive dataset OR a plain array (auto-wrapped into `state`). */
|
|
1076
|
+
dataset: NodeInput<readonly DatasetItem[]> | readonly DatasetItem[];
|
|
1077
|
+
/** Total teacher calls cap across iterations. Default: unlimited. */
|
|
1078
|
+
budget?: number;
|
|
1079
|
+
/** Graph name. Default: `"refine-loop"`. */
|
|
1080
|
+
name?: string;
|
|
1081
|
+
/** Extra graph options forwarded to the underlying `Graph`. */
|
|
1082
|
+
graph?: GraphOptions;
|
|
1083
|
+
}
|
|
1084
|
+
/**
|
|
1085
|
+
* Return type — extends Graph so all observability tools (`describe`,
|
|
1086
|
+
* `explain`, `observe`, `attachSnapshotStorage`, `snapshot`) Just Work.
|
|
1087
|
+
*/
|
|
1088
|
+
interface RefineLoopGraph<T> extends Graph {
|
|
1089
|
+
readonly best: Node<T | null>;
|
|
1090
|
+
readonly score: Node<number>;
|
|
1091
|
+
readonly status: Node<RefineStatus>;
|
|
1092
|
+
readonly history: Node<readonly Iteration<T>[]>;
|
|
1093
|
+
readonly strategy: Node<RefineStrategy<T>>;
|
|
1094
|
+
readonly iteration: Node<number>;
|
|
1095
|
+
/** Stage topics — subscribe for per-stage streaming / cursor consumers. */
|
|
1096
|
+
readonly generate: TopicGraph<GenerateEvent<T>>;
|
|
1097
|
+
readonly evaluate: TopicGraph<EvaluateEvent<T>>;
|
|
1098
|
+
readonly analyze: TopicGraph<AnalyzeEvent<T>>;
|
|
1099
|
+
readonly decide: TopicGraph<DecideEvent>;
|
|
1100
|
+
/** Swap the active strategy mid-run (human-in-the-loop handoff). */
|
|
1101
|
+
setStrategy(next: RefineStrategy<T>): void;
|
|
1102
|
+
/** Pause after the current iteration completes. */
|
|
1103
|
+
pause(): void;
|
|
1104
|
+
/** Resume a paused loop. */
|
|
1105
|
+
resume(): void;
|
|
1106
|
+
}
|
|
1107
|
+
declare function refineLoop<T>(seed: T, evaluator: Evaluator<T>, initialStrategy: RefineStrategy<T>, opts: RefineLoopOptions): RefineLoopGraph<T>;
|
|
1108
|
+
/**
|
|
1109
|
+
* Context passed to a `blindVariation` teacher per call. `reportCost` is a
|
|
1110
|
+
* per-call hook — see `BlindVariationOptions.tokens`.
|
|
1111
|
+
*/
|
|
1112
|
+
interface BlindVariationContext<T> {
|
|
1113
|
+
readonly prior: T;
|
|
1114
|
+
/**
|
|
1115
|
+
* Report tokens consumed by this teacher call. Aggregated per iteration
|
|
1116
|
+
* and flushed to `opts.tokens` in the strategy's `finally` block so
|
|
1117
|
+
* partial spend is preserved when the teacher throws mid-batch.
|
|
1118
|
+
*/
|
|
1119
|
+
readonly reportCost: (tokens: number) => void;
|
|
1120
|
+
}
|
|
1121
|
+
interface BlindVariationOptions<T> {
|
|
1122
|
+
/** Name — default: `"blindVariation"`. */
|
|
1123
|
+
name?: string;
|
|
1124
|
+
/** Number of candidates generated per iteration. Default: 4. */
|
|
1125
|
+
width?: number;
|
|
1126
|
+
/**
|
|
1127
|
+
* Run teacher calls in parallel via `Promise.all`. Default `true` — the
|
|
1128
|
+
* common case (independent LLM calls). Set `false` to run sequentially
|
|
1129
|
+
* via `for/await` when teachers share stateful resources (rate limiters,
|
|
1130
|
+
* rolling context, serial API ordering) that don't tolerate concurrency.
|
|
1131
|
+
*/
|
|
1132
|
+
parallel?: boolean;
|
|
1133
|
+
/**
|
|
1134
|
+
* Optional cost counter node. Running total tokens reported via
|
|
1135
|
+
* `ctx.reportCost` during each iteration is added to this node in the
|
|
1136
|
+
* strategy's `finally` block — fires on success AND on teacher throw so
|
|
1137
|
+
* partial spend is never lost. User owns the node; wire to `budgetGate`,
|
|
1138
|
+
* `attachSnapshotStorage`, telemetry, etc.
|
|
1139
|
+
*/
|
|
1140
|
+
tokens?: Node<number>;
|
|
1141
|
+
/**
|
|
1142
|
+
* Teacher — given `{prior, reportCost}`, produce one variant. Async
|
|
1143
|
+
* allowed. Called `width` times per iteration. Call `ctx.reportCost(n)`
|
|
1144
|
+
* to track tokens consumed per call (optional, no-op if `opts.tokens`
|
|
1145
|
+
* is not set).
|
|
1146
|
+
*/
|
|
1147
|
+
teacher: (ctx: BlindVariationContext<T>) => Promise<T> | T;
|
|
1148
|
+
}
|
|
1149
|
+
/**
|
|
1150
|
+
* Simplest built-in strategy: generate N variants per iteration via the
|
|
1151
|
+
* supplied `teacher`; no feedback-informed steering (equivalent to Random
|
|
1152
|
+
* Search). Validates the loop infrastructure end-to-end and is the baseline
|
|
1153
|
+
* every other strategy should outperform.
|
|
1154
|
+
*
|
|
1155
|
+
* `analyze` records the mean score and flags the worst task — strategies that
|
|
1156
|
+
* care about per-task critique layer on top.
|
|
1157
|
+
*/
|
|
1158
|
+
declare function blindVariation<T>(opts: BlindVariationOptions<T>): RefineStrategy<T>;
|
|
1159
|
+
/**
|
|
1160
|
+
* Context passed to an `errorCritique` teacher. `critique` is the pre-formatted
|
|
1161
|
+
* summary a prompt template can drop in verbatim; `failures` carries the
|
|
1162
|
+
* structured evidence (per-task error / score / detail) for richer prompts.
|
|
1163
|
+
*/
|
|
1164
|
+
interface ErrorCritiqueContext<T> {
|
|
1165
|
+
readonly prior: T;
|
|
1166
|
+
readonly critique: string;
|
|
1167
|
+
readonly failures: readonly EvalResult[];
|
|
1168
|
+
/**
|
|
1169
|
+
* Report tokens consumed by this teacher call. Aggregated per iteration
|
|
1170
|
+
* and flushed to `opts.tokens` in the strategy's `finally` block so
|
|
1171
|
+
* partial spend is preserved when the teacher throws mid-batch.
|
|
1172
|
+
*/
|
|
1173
|
+
readonly reportCost: (tokens: number) => void;
|
|
1174
|
+
}
|
|
1175
|
+
interface ErrorCritiqueOptions<T> {
|
|
1176
|
+
/** Name — default: `"errorCritique"`. */
|
|
1177
|
+
name?: string;
|
|
1178
|
+
/** Number of candidates generated per iteration. Default: 4. */
|
|
1179
|
+
width?: number;
|
|
1180
|
+
/**
|
|
1181
|
+
* Cut-off below which a task is classified as a failure and fed into the
|
|
1182
|
+
* critique. Default: the batch mean — any task scoring below the batch
|
|
1183
|
+
* mean is a failure. Pass a number for an absolute cut-off, or a function
|
|
1184
|
+
* for per-batch computation (e.g. a percentile). When the default mean
|
|
1185
|
+
* is non-finite (NaN / ±Infinity from a degenerate evaluator), ALL scores
|
|
1186
|
+
* are treated as failures so the critique loop continues to steer.
|
|
1187
|
+
*/
|
|
1188
|
+
failureThreshold?: number | ((scores: readonly EvalResult[]) => number);
|
|
1189
|
+
/** Cap on failure samples packed into the critique. Default: 5. */
|
|
1190
|
+
maxFailureSamples?: number;
|
|
1191
|
+
/**
|
|
1192
|
+
* Format failures into the `critique` string passed to the teacher. Default
|
|
1193
|
+
* joins `- taskId (score=N) | error: …` lines. Override to shape LLM prompts.
|
|
1194
|
+
*
|
|
1195
|
+
* **Note:** the `feedback` argument is a shell with `{score, weakTasks}`
|
|
1196
|
+
* populated; `summary` is empty because `analyze` computes the final summary
|
|
1197
|
+
* AFTER `formatCritique` runs (the summary embeds the formatted count).
|
|
1198
|
+
* Rely on `failures` and `feedback.score` — do not read `feedback.summary`
|
|
1199
|
+
* here.
|
|
1200
|
+
*/
|
|
1201
|
+
formatCritique?: (failures: readonly EvalResult[], feedback: Feedback) => string;
|
|
1202
|
+
/**
|
|
1203
|
+
* Run teacher calls in parallel via `Promise.all`. Default `true` — the
|
|
1204
|
+
* common case (independent LLM calls). Set `false` to run sequentially
|
|
1205
|
+
* via `for/await` when teachers share stateful resources (rate limiters,
|
|
1206
|
+
* rolling context, serial API ordering) that don't tolerate concurrency.
|
|
1207
|
+
*/
|
|
1208
|
+
parallel?: boolean;
|
|
1209
|
+
/**
|
|
1210
|
+
* Optional cost counter node. Running total tokens reported via
|
|
1211
|
+
* `ctx.reportCost` during each iteration is added to this node in the
|
|
1212
|
+
* strategy's `finally` block — fires on success AND on teacher throw so
|
|
1213
|
+
* partial spend is never lost. User owns the node; wire to `budgetGate`,
|
|
1214
|
+
* `attachSnapshotStorage`, telemetry, etc.
|
|
1215
|
+
*/
|
|
1216
|
+
tokens?: Node<number>;
|
|
1217
|
+
/**
|
|
1218
|
+
* Teacher — given `{prior, critique, failures, reportCost}`, produce one
|
|
1219
|
+
* refined variant. Called `width` times per iteration. Async allowed.
|
|
1220
|
+
* Call `ctx.reportCost(n)` to track tokens consumed per call (optional,
|
|
1221
|
+
* no-op if `opts.tokens` is not set).
|
|
1222
|
+
*/
|
|
1223
|
+
teacher: (ctx: ErrorCritiqueContext<T>) => Promise<T> | T;
|
|
1224
|
+
}
|
|
1225
|
+
/**
|
|
1226
|
+
* Critique-driven strategy (ProTeGi-style "textual gradient"). Each iteration:
|
|
1227
|
+
* 1. `analyze` classifies tasks scoring below a threshold as failures, picks
|
|
1228
|
+
* the best candidate from the batch, and packs both plus a formatted
|
|
1229
|
+
* critique string into `feedback.critique` as a private payload.
|
|
1230
|
+
* 2. `generate` unpacks that payload and calls the teacher with
|
|
1231
|
+
* `{prior, critique, failures, reportCost}` `width` times, returning the
|
|
1232
|
+
* refined batch.
|
|
1233
|
+
*
|
|
1234
|
+
* The teacher receives a pre-formatted string (drop into an LLM prompt) AND
|
|
1235
|
+
* the structured failure list (for richer prompts that want per-task detail).
|
|
1236
|
+
* Throws on empty candidate batches — matches `blindVariation`'s contract
|
|
1237
|
+
* (no silent zero-candidate cycles).
|
|
1238
|
+
*
|
|
1239
|
+
* When `setStrategy()` swaps this strategy in mid-run, the first `generate`
|
|
1240
|
+
* may receive a `Feedback` produced by the prior strategy (no private payload);
|
|
1241
|
+
* the fallback path uses `candidates[last]` as the prior and the feedback
|
|
1242
|
+
* summary as the critique, so the loop keeps running without a stall. When a
|
|
1243
|
+
* private payload IS present, `priv.critiqueText` takes precedence over any
|
|
1244
|
+
* edits a caller made to `feedback.summary` — treat `critique` as the
|
|
1245
|
+
* strategy-owned channel.
|
|
1246
|
+
*/
|
|
1247
|
+
declare function errorCritique<T>(opts: ErrorCritiqueOptions<T>): RefineStrategy<T>;
|
|
1248
|
+
|
|
899
1249
|
/**
|
|
900
1250
|
* evalVerifier — re-run the affected eval tasks against the execute-stage
|
|
901
1251
|
* artifact instead of asking an LLM to opine on the fix.
|
|
@@ -906,16 +1256,16 @@ declare function effectivenessTracker(opts?: EffectivenessTrackerOptions): Effec
|
|
|
906
1256
|
* into the same `Evaluator<T>` shape that `refineLoop` used. Consistent
|
|
907
1257
|
* scoring between EXECUTE and VERIFY — no "LLM said it looks fine" gap.
|
|
908
1258
|
*
|
|
909
|
-
*
|
|
910
|
-
*
|
|
911
|
-
*
|
|
1259
|
+
* **C2 lifecycle (Tier 6.5).** The work fn is invoked once per claimed
|
|
1260
|
+
* verify-stage job. A fresh single-candidate eval subgraph is mounted
|
|
1261
|
+
* inside the work fn and tears down when the JobFlow pump ack/unsubs.
|
|
912
1262
|
*
|
|
913
1263
|
* @module
|
|
914
1264
|
*/
|
|
915
1265
|
|
|
916
1266
|
/** Summary of the re-eval wave passed to a custom `toOutput` mapper. */
|
|
917
1267
|
interface EvalVerifierSummary {
|
|
918
|
-
readonly scores: readonly EvalResult
|
|
1268
|
+
readonly scores: readonly EvalResult[];
|
|
919
1269
|
readonly meanScore: number;
|
|
920
1270
|
readonly passCount: number;
|
|
921
1271
|
readonly total: number;
|
|
@@ -924,8 +1274,6 @@ interface EvalVerifierSummary {
|
|
|
924
1274
|
* True when the EXECUTE stage did not produce an artifact (i.e.
|
|
925
1275
|
* `extractArtifact` returned `null` / `undefined`). Downstream mappers
|
|
926
1276
|
* can distinguish this from "evaluator ran but everything scored zero".
|
|
927
|
-
* When `true`, `scores` / `total` / `passCount` are all zero and
|
|
928
|
-
* `meanScore` is `-Infinity`.
|
|
929
1277
|
*/
|
|
930
1278
|
readonly missingArtifact?: boolean;
|
|
931
1279
|
}
|
|
@@ -935,41 +1283,30 @@ interface EvalVerifierConfig<T> {
|
|
|
935
1283
|
* Pull the artifact that should be re-evaluated out of the execute-stage
|
|
936
1284
|
* output. Default: `(exec) => exec.artifact as T` — works out-of-the-box
|
|
937
1285
|
* with `refineExecutor` (which populates `artifact` by default).
|
|
938
|
-
*
|
|
939
|
-
* **Type trust:** the default cast assumes the caller's executor wrote
|
|
940
|
-
* a `T`-shaped value to `ExecuteOutput.artifact`. A wrong-typed artifact
|
|
941
|
-
* surfaces as a runtime error inside `evaluator`, not here — supply a
|
|
942
|
-
* narrowing `extractArtifact` if you need stricter validation.
|
|
943
1286
|
*/
|
|
944
1287
|
extractArtifact?: (exec: ExecuteOutput<T>, item: TriagedItem) => T | null | undefined;
|
|
945
1288
|
/**
|
|
946
1289
|
* Reactive evaluator — same contract as `refineLoop`'s `Evaluator<T>`.
|
|
947
|
-
* Typically this is the SAME evaluator configured inside `refineExecutor`
|
|
948
|
-
* so EXECUTE and VERIFY scoring stay consistent.
|
|
949
1290
|
*/
|
|
950
1291
|
evaluator: Evaluator<T>;
|
|
951
1292
|
/**
|
|
952
|
-
* Resolve which dataset rows to score this verification against.
|
|
953
|
-
* `affectedTaskFilter` or hand-roll per-item subset logic. Default:
|
|
954
|
-
* empty array (verifier emits a findings entry explaining this).
|
|
1293
|
+
* Resolve which dataset rows to score this verification against.
|
|
955
1294
|
*/
|
|
956
1295
|
datasetFor: (item: TriagedItem) => readonly DatasetItem[];
|
|
957
1296
|
/** Mean score required to pass verification. Default `0.5`. */
|
|
958
1297
|
threshold?: number;
|
|
959
1298
|
/** Optional output mapper — override the default findings / errorClass shape. */
|
|
960
1299
|
toOutput?: (summary: EvalVerifierSummary) => VerifyOutput;
|
|
961
|
-
/** Node name prefix for introspection.
|
|
1300
|
+
/** Node name prefix for introspection. */
|
|
962
1301
|
name?: string;
|
|
963
1302
|
}
|
|
964
1303
|
/**
|
|
965
1304
|
* Build a {@link HarnessVerifier} that re-runs the eval suite against the
|
|
966
1305
|
* artifact produced by EXECUTE.
|
|
967
1306
|
*
|
|
968
|
-
*
|
|
969
|
-
*
|
|
970
|
-
*
|
|
971
|
-
* single `executeContextNode` is reused by both the verifier and the
|
|
972
|
-
* fast-retry dispatcher, so exec + item are subscribed once per wave.
|
|
1307
|
+
* Reads `job.payload.execution` (filled by the upstream execute work fn)
|
|
1308
|
+
* and runs the evaluator against `extractArtifact(execution, item)`.
|
|
1309
|
+
* Returns the same payload with `verify` filled in.
|
|
973
1310
|
*
|
|
974
1311
|
* @example Pair with refineExecutor for end-to-end eval consistency.
|
|
975
1312
|
* ```ts
|
|
@@ -1015,18 +1352,6 @@ interface HarnessEvalPairConfig<T> {
|
|
|
1015
1352
|
* configuration is a compile error instead of a silent `as T` in
|
|
1016
1353
|
* `extractArtifact`. Shares the evaluator so EXECUTE and VERIFY score with
|
|
1017
1354
|
* identical semantics (the whole point of `evalVerifier`).
|
|
1018
|
-
*
|
|
1019
|
-
* @example
|
|
1020
|
-
* ```ts
|
|
1021
|
-
* const { executor, verifier } = harnessEvalPair<CatalogEntry>({
|
|
1022
|
-
* seedFrom: (item) => initialCatalogEntry(item),
|
|
1023
|
-
* evaluator: (cands, ds) => runEvalBatch(cands, ds),
|
|
1024
|
-
* strategy: errorCritique({ teacher, width: 3 }),
|
|
1025
|
-
* datasetFor: affectedTasksFor,
|
|
1026
|
-
* threshold: 0.8,
|
|
1027
|
-
* });
|
|
1028
|
-
* const harness = harnessLoop<CatalogEntry>("repair", { adapter, executor, verifier });
|
|
1029
|
-
* ```
|
|
1030
1355
|
*/
|
|
1031
1356
|
declare function harnessEvalPair<T>(config: HarnessEvalPairConfig<T>): {
|
|
1032
1357
|
executor: HarnessExecutor<T>;
|
|
@@ -1049,18 +1374,33 @@ declare function harnessEvalPair<T>(config: HarnessEvalPairConfig<T>): {
|
|
|
1049
1374
|
* (topic name), not code — every routing decision is a visible edge in
|
|
1050
1375
|
* `describe()` / `explain()`.
|
|
1051
1376
|
*
|
|
1377
|
+
* **EXECUTE/VERIFY via JobFlow (Tier 6.5 C2 lock, 2026-04-28).** The
|
|
1378
|
+
* stages 5–6 EXECUTE → VERIFY pair runs through an internal `executeFlow`
|
|
1379
|
+
* JobFlow with two stages (`execute`, `verify`). Each stage's pump owns
|
|
1380
|
+
* `claim → work → ack` for one claim; the verify stage's payload contains
|
|
1381
|
+
* `{ item, execution, verify }` so the post-completed dispatch effect can
|
|
1382
|
+
* route the 3-way verdict (verified / self-correctable retry / structural
|
|
1383
|
+
* + reingest) without any cross-wave `withLatestFrom` pairing. Items
|
|
1384
|
+
* arriving from per-route topics + retry feedback enter via a single
|
|
1385
|
+
* `enqueueEffect` that pushes to `executeFlow.queue("execute")`.
|
|
1386
|
+
*
|
|
1052
1387
|
* @module
|
|
1053
1388
|
*/
|
|
1054
1389
|
|
|
1055
1390
|
/**
|
|
1056
|
-
* Build the default EXECUTE
|
|
1057
|
-
*
|
|
1058
|
-
*
|
|
1391
|
+
* Build the default EXECUTE work fn — calls `adapter.invoke()` once per
|
|
1392
|
+
* claimed job, parses the JSON response into an `ExecuteOutput<A>`, and
|
|
1393
|
+
* returns a {@link HarnessJobPayload} with `execution` filled in.
|
|
1394
|
+
*
|
|
1395
|
+
* Errors (parse failure, adapter throw, malformed JSON) are caught and
|
|
1396
|
+
* surfaced as a `failure`-outcome payload — the dispatch effect routes
|
|
1397
|
+
* the item rather than dropping it via pump nack (see C2 contract on
|
|
1398
|
+
* {@link HarnessExecutor}).
|
|
1059
1399
|
*
|
|
1060
|
-
*
|
|
1061
|
-
*
|
|
1062
|
-
*
|
|
1063
|
-
*
|
|
1400
|
+
* Subsumes the pre-Tier-6.5 `promptNode`-based default: per-claim LLM
|
|
1401
|
+
* calls don't benefit from `promptNode`'s cross-wave switchMap, and a
|
|
1402
|
+
* fresh per-claim subgraph would be wasteful. Direct `adapter.invoke`
|
|
1403
|
+
* is the right shape inside JobFlow pumps.
|
|
1064
1404
|
*
|
|
1065
1405
|
* @param adapter - LLMAdapter for the execute call.
|
|
1066
1406
|
* @param prompt - Prompt template (string or `(item) => string`). Defaults
|
|
@@ -1068,37 +1408,45 @@ declare function harnessEvalPair<T>(config: HarnessEvalPairConfig<T>): {
|
|
|
1068
1408
|
*/
|
|
1069
1409
|
declare function defaultLlmExecutor<A = unknown>(adapter: LLMAdapter, prompt?: string | ExecutePromptFn): HarnessExecutor<A>;
|
|
1070
1410
|
/**
|
|
1071
|
-
* Build the default VERIFY
|
|
1072
|
-
*
|
|
1073
|
-
*
|
|
1074
|
-
*
|
|
1075
|
-
*
|
|
1076
|
-
*
|
|
1077
|
-
*
|
|
1078
|
-
*
|
|
1079
|
-
* @param prompt - Prompt template. Defaults to the harness's built-in
|
|
1080
|
-
* verify prompt (receives the full pair, extracts both).
|
|
1411
|
+
* Build the default VERIFY work fn — calls `adapter.invoke()` once per
|
|
1412
|
+
* claimed job to review the prior-stage execution, parses the JSON
|
|
1413
|
+
* response into a `VerifyOutput`, and returns a {@link HarnessJobPayload}
|
|
1414
|
+
* with `verify` filled in.
|
|
1415
|
+
*
|
|
1416
|
+
* Same C2 error semantics as {@link defaultLlmExecutor}: parse / adapter
|
|
1417
|
+
* failures are surfaced as a structural-failure verify payload so the
|
|
1418
|
+
* dispatch effect routes the item.
|
|
1081
1419
|
*/
|
|
1082
1420
|
declare function defaultLlmVerifier<A = unknown>(adapter: LLMAdapter, prompt?: string | VerifyPromptFn<A>): HarnessVerifier<A>;
|
|
1083
1421
|
/**
|
|
1084
1422
|
* The graph returned by {@link harnessLoop}. Wraps a single
|
|
1085
1423
|
* {@link MessagingHubGraph} that owns all reactive-wire-crossing topics
|
|
1086
1424
|
* (intake, per-route queues, `__unrouted`, retry, verify-results,
|
|
1087
|
-
* triage-output)
|
|
1088
|
-
*
|
|
1425
|
+
* triage-output), plus an `executeFlow` JobFlow that owns the
|
|
1426
|
+
* EXECUTE → VERIFY pipeline (Tier 6.5 C2). Sugar getters expose the
|
|
1427
|
+
* canonical topics so the surface stays ergonomic.
|
|
1089
1428
|
*/
|
|
1090
1429
|
declare class HarnessGraph<A = unknown> extends Graph {
|
|
1091
1430
|
/** Messaging hub — the routing-data plane. Queue topics live here. */
|
|
1092
1431
|
readonly queues: MessagingHubGraph;
|
|
1093
1432
|
/**
|
|
1094
|
-
*
|
|
1095
|
-
*
|
|
1096
|
-
* `pending`
|
|
1097
|
-
*
|
|
1098
|
-
*
|
|
1099
|
-
*
|
|
1100
|
-
*
|
|
1101
|
-
|
|
1433
|
+
* EXECUTE → VERIFY JobFlow (Tier 6.5 C2). Pumps own claim/ack/nack
|
|
1434
|
+
* lifecycle for each stage. Inspect via:
|
|
1435
|
+
* - `harness.executeFlow.queue("execute").pending` — pending depth.
|
|
1436
|
+
* - `harness.executeFlow.queue("verify").pending` — items mid-execute.
|
|
1437
|
+
* - `harness.executeFlow.completed` — verified items waiting for the
|
|
1438
|
+
* dispatch effect's 3-way routing.
|
|
1439
|
+
* - `harness.executeFlow.completedCount` — total terminal completions.
|
|
1440
|
+
*/
|
|
1441
|
+
readonly executeFlow: JobFlowGraph<HarnessJobPayload<A>>;
|
|
1442
|
+
/**
|
|
1443
|
+
* Per-route JobQueueGraph audit mirrors. Each triaged item that reaches
|
|
1444
|
+
* a queue is also enqueued here, giving reactive `depth` + `pending` +
|
|
1445
|
+
* `jobs` observables per route. The dispatch effect ack/removeBy-id's
|
|
1446
|
+
* the matching job on terminal verdict. The executeFlow JobFlow handles
|
|
1447
|
+
* the EXECUTE → VERIFY data flow; this is a parallel audit-side ledger
|
|
1448
|
+
* for per-route depth metrics. Inspect via
|
|
1449
|
+
* `harness.jobs.get(route).depth.cache` for backpressure metrics.
|
|
1102
1450
|
*/
|
|
1103
1451
|
readonly jobs: ReadonlyMap<QueueRoute, JobQueueGraph<TriagedItem>>;
|
|
1104
1452
|
/** Per-route gate controllers (only for gated queues). */
|
|
@@ -1114,13 +1462,6 @@ declare class HarnessGraph<A = unknown> extends Graph {
|
|
|
1114
1462
|
* `intake` (use {@link intake}), `verify-results` (use
|
|
1115
1463
|
* {@link verifyResults}), `retry` (use {@link retry}), `__unrouted`
|
|
1116
1464
|
* (use {@link unrouted}), and the internal `triage-output` fan-in.
|
|
1117
|
-
*
|
|
1118
|
-
* **Why this exists.** `for (const [, topic] of harness.queues)`
|
|
1119
|
-
* appears to iterate via `Graph[Symbol.iterator]`, but that yields
|
|
1120
|
-
* locally-registered nodes only — and `MessagingHubGraph` mounts
|
|
1121
|
-
* topics as child graphs rather than registering them locally, so
|
|
1122
|
-
* the loop yields nothing. This map gives a typed, working
|
|
1123
|
-
* iteration path.
|
|
1124
1465
|
*/
|
|
1125
1466
|
readonly queueTopics: ReadonlyMap<QueueRoute, TopicGraph<TriagedItem>>;
|
|
1126
1467
|
/** Strategy model bundle — record outcomes, lookup effectiveness. */
|
|
@@ -1137,7 +1478,7 @@ declare class HarnessGraph<A = unknown> extends Graph {
|
|
|
1137
1478
|
* in to priority scoring.
|
|
1138
1479
|
*/
|
|
1139
1480
|
readonly priorityScores?: ReadonlyMap<QueueRoute, Node<number>>;
|
|
1140
|
-
constructor(name: string, queues: MessagingHubGraph, queueTopics: Map<QueueRoute, TopicGraph<TriagedItem>>, jobs: Map<QueueRoute, JobQueueGraph<TriagedItem>>, gates: Map<QueueRoute, GateController<TriagedItem>>, strategy: StrategyModelBundle, totalRetries: Node<number>, totalReingestions: Node<number>, priorityScores?: Map<QueueRoute, Node<number>>);
|
|
1481
|
+
constructor(name: string, queues: MessagingHubGraph, executeFlow: JobFlowGraph<HarnessJobPayload<A>>, queueTopics: Map<QueueRoute, TopicGraph<TriagedItem>>, jobs: Map<QueueRoute, JobQueueGraph<TriagedItem>>, gates: Map<QueueRoute, GateController<TriagedItem>>, strategy: StrategyModelBundle, totalRetries: Node<number>, totalReingestions: Node<number>, priorityScores?: Map<QueueRoute, Node<number>>);
|
|
1141
1482
|
/** Intake topic — publish items here to enter the loop. */
|
|
1142
1483
|
get intake(): TopicGraph<IntakeItem>;
|
|
1143
1484
|
/** Verify results topic — subscribe to see verification outcomes. */
|
|
@@ -1147,17 +1488,17 @@ declare class HarnessGraph<A = unknown> extends Graph {
|
|
|
1147
1488
|
/** Dead-letter topic for items whose LLM-chosen route is unknown. */
|
|
1148
1489
|
get unrouted(): TopicGraph<TriagedItem>;
|
|
1149
1490
|
/**
|
|
1150
|
-
* Stage-label → observe-path map for the 7 pipeline stages
|
|
1491
|
+
* Stage-label → observe-path map for the 7 pipeline stages.
|
|
1151
1492
|
*
|
|
1152
1493
|
* Decouples inspection tools (`harnessTrace`, `harnessProfile`, custom
|
|
1153
1494
|
* dashboards) from mount-structure churn: hub migration, future stage
|
|
1154
|
-
* splits,
|
|
1155
|
-
* as this method stays accurate.
|
|
1156
|
-
* `harness.observe(path)` / `harness.resolve(path)`.
|
|
1495
|
+
* splits, gate remounting, or the Tier 6.5 C2 JobFlow rewire shouldn't
|
|
1496
|
+
* require edits to `trace.ts` as long as this method stays accurate.
|
|
1157
1497
|
*
|
|
1158
|
-
* Each stage yields `{ label, paths }
|
|
1159
|
-
*
|
|
1160
|
-
*
|
|
1498
|
+
* Each stage yields `{ label, paths }`; consumers iterate paths per
|
|
1499
|
+
* stage and attach observers. Tier 6.5: EXECUTE / VERIFY paths now
|
|
1500
|
+
* resolve to the `executeFlow` stage queues + the `verify-dispatch`
|
|
1501
|
+
* effect node.
|
|
1161
1502
|
*/
|
|
1162
1503
|
stageNodes(): ReadonlyArray<{
|
|
1163
1504
|
label: string;
|
|
@@ -1172,9 +1513,9 @@ declare class HarnessGraph<A = unknown> extends Graph {
|
|
|
1172
1513
|
* 2. **TRIAGE** — promptNode classifies, routes, and prioritizes
|
|
1173
1514
|
* 3. **QUEUE** — 4 priority-ordered TopicGraphs (auto-fix, needs-decision, investigation, backlog)
|
|
1174
1515
|
* 4. **GATE** — human approval on configurable queues
|
|
1175
|
-
* 5. **EXECUTE** —
|
|
1176
|
-
* 6. **VERIFY** —
|
|
1177
|
-
* 7. **REFLECT** — strategy model records outcomes
|
|
1516
|
+
* 5. **EXECUTE** — JobFlow `execute` stage; user-supplied or default work fn
|
|
1517
|
+
* 6. **VERIFY** — JobFlow `verify` stage; verifies the executed artifact
|
|
1518
|
+
* 7. **REFLECT** — strategy model records outcomes; dispatch effect routes 3-way
|
|
1178
1519
|
*
|
|
1179
1520
|
* @param name - Graph name.
|
|
1180
1521
|
* @param opts - Configuration.
|
|
@@ -1219,28 +1560,24 @@ interface HarnessProfileResult extends GraphProfileResult {
|
|
|
1219
1560
|
declare function harnessProfile(harness: HarnessGraph, opts?: GraphProfileOptions): HarnessProfileResult;
|
|
1220
1561
|
|
|
1221
1562
|
/**
|
|
1222
|
-
* refineExecutor — bridge a `refineLoop` into the harness EXECUTE
|
|
1223
|
-
*
|
|
1224
|
-
*
|
|
1225
|
-
*
|
|
1226
|
-
*
|
|
1227
|
-
*
|
|
1228
|
-
*
|
|
1229
|
-
*
|
|
1230
|
-
*
|
|
1231
|
-
*
|
|
1232
|
-
*
|
|
1233
|
-
*
|
|
1234
|
-
*
|
|
1235
|
-
*
|
|
1236
|
-
*
|
|
1237
|
-
*
|
|
1238
|
-
*
|
|
1239
|
-
*
|
|
1240
|
-
* **Cross-item learning:** Option A creates a fresh refineLoop per item,
|
|
1241
|
-
* so `errorCritique`-style failure sampling does NOT accumulate across
|
|
1242
|
-
* items sharing a `rootCause`. A persistent-loop + re-seed surface is
|
|
1243
|
-
* tracked in `docs/optimizations.md` as the long-term follow-up.
|
|
1563
|
+
* refineExecutor — bridge a `refineLoop` into the harness EXECUTE work fn.
|
|
1564
|
+
*
|
|
1565
|
+
* Each claimed job mounts a fresh `refineLoop`; when the loop reaches a
|
|
1566
|
+
* terminal status (`converged` / `budget` / `errored`), the work fn emits a
|
|
1567
|
+
* single {@link HarnessJobPayload} with `execution` filled in. The JobFlow
|
|
1568
|
+
* pump subscribes once, takes the first DATA, then unsubscribes — so the
|
|
1569
|
+
* inner loop tears down cleanly when the harness acks the job.
|
|
1570
|
+
*
|
|
1571
|
+
* **C2 lifecycle (Tier 6.5).** The work fn is invoked once per claim, so
|
|
1572
|
+
* no internal `switchMap` is needed (the prior pre-C2 shape used switchMap
|
|
1573
|
+
* to handle a stream of items). The pump owns the per-claim lifecycle:
|
|
1574
|
+
* activation when the work fn returns, teardown when the result Node is
|
|
1575
|
+
* unsubscribed.
|
|
1576
|
+
*
|
|
1577
|
+
* **Cross-item learning:** a fresh refineLoop per item means
|
|
1578
|
+
* `errorCritique`-style failure sampling does NOT accumulate across items
|
|
1579
|
+
* sharing a `rootCause`. A persistent-loop + re-seed surface is filed in
|
|
1580
|
+
* `docs/optimizations.md` as a long-term follow-up.
|
|
1244
1581
|
*
|
|
1245
1582
|
* @module
|
|
1246
1583
|
*/
|
|
@@ -1276,7 +1613,8 @@ interface RefineExecutorConfig<T> {
|
|
|
1276
1613
|
name?: string;
|
|
1277
1614
|
}
|
|
1278
1615
|
/**
|
|
1279
|
-
* Build a {@link HarnessExecutor} backed by a `refineLoop` per
|
|
1616
|
+
* Build a {@link HarnessExecutor} backed by a `refineLoop` per claimed
|
|
1617
|
+
* job.
|
|
1280
1618
|
*
|
|
1281
1619
|
* @example Eval-driven repair loop in the harness EXECUTE slot.
|
|
1282
1620
|
* ```ts
|
|
@@ -1378,15 +1716,21 @@ declare function harnessTrace(harness: HarnessGraph, opts?: HarnessTraceOptions)
|
|
|
1378
1716
|
type index_ActuatorApplyFn<R> = ActuatorApplyFn<R>;
|
|
1379
1717
|
type index_ActuatorExecutorConfig<R> = ActuatorExecutorConfig<R>;
|
|
1380
1718
|
type index_ActuatorResult<R> = ActuatorResult<R>;
|
|
1719
|
+
type index_AnalyzeEvent<T> = AnalyzeEvent<T>;
|
|
1381
1720
|
type index_AutoSolidifyConfig<R, T = R> = AutoSolidifyConfig<R, T>;
|
|
1721
|
+
type index_BlindVariationContext<T> = BlindVariationContext<T>;
|
|
1722
|
+
type index_BlindVariationOptions<T> = BlindVariationOptions<T>;
|
|
1382
1723
|
type index_CodeChange = CodeChange;
|
|
1383
1724
|
type index_CodeChangeBridgeOptions = CodeChangeBridgeOptions;
|
|
1725
|
+
type index_ConvergenceOptions = ConvergenceOptions;
|
|
1384
1726
|
declare const index_DEFAULT_DECAY_RATE: typeof DEFAULT_DECAY_RATE;
|
|
1385
1727
|
declare const index_DEFAULT_EXECUTE_PROMPT: typeof DEFAULT_EXECUTE_PROMPT;
|
|
1386
1728
|
declare const index_DEFAULT_QUEUE_CONFIGS: typeof DEFAULT_QUEUE_CONFIGS;
|
|
1387
1729
|
declare const index_DEFAULT_SEVERITY_WEIGHTS: typeof DEFAULT_SEVERITY_WEIGHTS;
|
|
1388
1730
|
declare const index_DEFAULT_TRIAGE_PROMPT: typeof DEFAULT_TRIAGE_PROMPT;
|
|
1389
1731
|
declare const index_DEFAULT_VERIFY_PROMPT: typeof DEFAULT_VERIFY_PROMPT;
|
|
1732
|
+
type index_DatasetItem = DatasetItem;
|
|
1733
|
+
type index_DecideEvent = DecideEvent;
|
|
1390
1734
|
type index_DispatchActuatorConfig<R> = DispatchActuatorConfig<R>;
|
|
1391
1735
|
type index_EffectivenessEntry = EffectivenessEntry;
|
|
1392
1736
|
type index_EffectivenessSnapshot = EffectivenessSnapshot;
|
|
@@ -1394,21 +1738,29 @@ type index_EffectivenessTrackerBundle = EffectivenessTrackerBundle;
|
|
|
1394
1738
|
type index_EffectivenessTrackerOptions = EffectivenessTrackerOptions;
|
|
1395
1739
|
type index_ErrorClass = ErrorClass;
|
|
1396
1740
|
type index_ErrorClassifier = ErrorClassifier;
|
|
1741
|
+
type index_ErrorCritiqueContext<T> = ErrorCritiqueContext<T>;
|
|
1742
|
+
type index_ErrorCritiqueOptions<T> = ErrorCritiqueOptions<T>;
|
|
1397
1743
|
type index_EvalDelta = EvalDelta;
|
|
1398
1744
|
type index_EvalIntakeBridgeOptions = EvalIntakeBridgeOptions;
|
|
1399
1745
|
type index_EvalJudgeScore = EvalJudgeScore;
|
|
1400
1746
|
type index_EvalResult = EvalResult;
|
|
1747
|
+
type index_EvalRunResult = EvalRunResult;
|
|
1401
1748
|
type index_EvalTaskDelta = EvalTaskDelta;
|
|
1402
1749
|
type index_EvalTaskResult = EvalTaskResult;
|
|
1403
1750
|
type index_EvalVerifierConfig<T> = EvalVerifierConfig<T>;
|
|
1404
1751
|
type index_EvalVerifierSummary = EvalVerifierSummary;
|
|
1752
|
+
type index_EvaluateEvent<T> = EvaluateEvent<T>;
|
|
1753
|
+
type index_Evaluator<T> = Evaluator<T>;
|
|
1405
1754
|
type index_ExecuteOutput<A = unknown> = ExecuteOutput<A>;
|
|
1406
1755
|
type index_ExecutePromptFn = ExecutePromptFn;
|
|
1407
1756
|
type index_ExecutionResult<A = unknown> = ExecutionResult<A>;
|
|
1757
|
+
type index_Feedback = Feedback;
|
|
1758
|
+
type index_GenerateEvent<T> = GenerateEvent<T>;
|
|
1408
1759
|
type index_HarnessEvalPairConfig<T> = HarnessEvalPairConfig<T>;
|
|
1409
1760
|
type index_HarnessExecutor<A = unknown> = HarnessExecutor<A>;
|
|
1410
1761
|
type index_HarnessGraph<A = unknown> = HarnessGraph<A>;
|
|
1411
1762
|
declare const index_HarnessGraph: typeof HarnessGraph;
|
|
1763
|
+
type index_HarnessJobPayload<A = unknown> = HarnessJobPayload<A>;
|
|
1412
1764
|
type index_HarnessLoopOptions<A = unknown> = HarnessLoopOptions<A>;
|
|
1413
1765
|
type index_HarnessProfileResult = HarnessProfileResult;
|
|
1414
1766
|
type index_HarnessTraceHandle = HarnessTraceHandle;
|
|
@@ -1418,6 +1770,7 @@ type index_IntakeBridgeOptions = IntakeBridgeOptions;
|
|
|
1418
1770
|
type index_IntakeItem = IntakeItem;
|
|
1419
1771
|
type index_IntakeSource = IntakeSource;
|
|
1420
1772
|
type index_Intervention = Intervention;
|
|
1773
|
+
type index_Iteration<T> = Iteration<T>;
|
|
1421
1774
|
type index_KnownIntakeSource = KnownIntakeSource;
|
|
1422
1775
|
type index_LintError = LintError;
|
|
1423
1776
|
type index_NotifyEffectOptions = NotifyEffectOptions;
|
|
@@ -1428,6 +1781,10 @@ type index_QueueConfig = QueueConfig;
|
|
|
1428
1781
|
type index_QueueRoute = QueueRoute;
|
|
1429
1782
|
type index_RefineExecutorConfig<T> = RefineExecutorConfig<T>;
|
|
1430
1783
|
type index_RefineExecutorResult<T> = RefineExecutorResult<T>;
|
|
1784
|
+
type index_RefineLoopGraph<T> = RefineLoopGraph<T>;
|
|
1785
|
+
type index_RefineLoopOptions = RefineLoopOptions;
|
|
1786
|
+
type index_RefineStatus = RefineStatus;
|
|
1787
|
+
type index_RefineStrategy<T> = RefineStrategy<T>;
|
|
1431
1788
|
type index_RootCause = RootCause;
|
|
1432
1789
|
type index_Severity = Severity;
|
|
1433
1790
|
type index_StrategyEntry = StrategyEntry;
|
|
@@ -1447,6 +1804,7 @@ declare const index_actuatorExecutor: typeof actuatorExecutor;
|
|
|
1447
1804
|
declare const index_affectedTaskFilter: typeof affectedTaskFilter;
|
|
1448
1805
|
declare const index_autoSolidify: typeof autoSolidify;
|
|
1449
1806
|
declare const index_beforeAfterCompare: typeof beforeAfterCompare;
|
|
1807
|
+
declare const index_blindVariation: typeof blindVariation;
|
|
1450
1808
|
declare const index_codeChangeBridge: typeof codeChangeBridge;
|
|
1451
1809
|
declare const index_createIntakeBridge: typeof createIntakeBridge;
|
|
1452
1810
|
declare const index_defaultErrorClassifier: typeof defaultErrorClassifier;
|
|
@@ -1454,6 +1812,7 @@ declare const index_defaultLlmExecutor: typeof defaultLlmExecutor;
|
|
|
1454
1812
|
declare const index_defaultLlmVerifier: typeof defaultLlmVerifier;
|
|
1455
1813
|
declare const index_dispatchActuator: typeof dispatchActuator;
|
|
1456
1814
|
declare const index_effectivenessTracker: typeof effectivenessTracker;
|
|
1815
|
+
declare const index_errorCritique: typeof errorCritique;
|
|
1457
1816
|
declare const index_evalIntakeBridge: typeof evalIntakeBridge;
|
|
1458
1817
|
declare const index_evalSource: typeof evalSource;
|
|
1459
1818
|
declare const index_evalVerifier: typeof evalVerifier;
|
|
@@ -1464,11 +1823,12 @@ declare const index_harnessTrace: typeof harnessTrace;
|
|
|
1464
1823
|
declare const index_notifyEffect: typeof notifyEffect;
|
|
1465
1824
|
declare const index_priorityScore: typeof priorityScore;
|
|
1466
1825
|
declare const index_refineExecutor: typeof refineExecutor;
|
|
1826
|
+
declare const index_refineLoop: typeof refineLoop;
|
|
1467
1827
|
declare const index_resolvePromptFn: typeof resolvePromptFn;
|
|
1468
1828
|
declare const index_strategyKey: typeof strategyKey;
|
|
1469
1829
|
declare const index_strategyModel: typeof strategyModel;
|
|
1470
1830
|
declare namespace index {
|
|
1471
|
-
export { type index_ActuatorApplyFn as ActuatorApplyFn, type index_ActuatorExecutorConfig as ActuatorExecutorConfig, type index_ActuatorResult as ActuatorResult, type index_AutoSolidifyConfig as AutoSolidifyConfig, type index_CodeChange as CodeChange, type index_CodeChangeBridgeOptions as CodeChangeBridgeOptions, index_DEFAULT_DECAY_RATE as DEFAULT_DECAY_RATE, index_DEFAULT_EXECUTE_PROMPT as DEFAULT_EXECUTE_PROMPT, index_DEFAULT_QUEUE_CONFIGS as DEFAULT_QUEUE_CONFIGS, index_DEFAULT_SEVERITY_WEIGHTS as DEFAULT_SEVERITY_WEIGHTS, index_DEFAULT_TRIAGE_PROMPT as DEFAULT_TRIAGE_PROMPT, index_DEFAULT_VERIFY_PROMPT as DEFAULT_VERIFY_PROMPT, type index_DispatchActuatorConfig as DispatchActuatorConfig, type index_EffectivenessEntry as EffectivenessEntry, type index_EffectivenessSnapshot as EffectivenessSnapshot, type index_EffectivenessTrackerBundle as EffectivenessTrackerBundle, type index_EffectivenessTrackerOptions as EffectivenessTrackerOptions, type index_ErrorClass as ErrorClass, type index_ErrorClassifier as ErrorClassifier, type index_EvalDelta as EvalDelta, type index_EvalIntakeBridgeOptions as EvalIntakeBridgeOptions, type index_EvalJudgeScore as EvalJudgeScore, type index_EvalResult as EvalResult, type index_EvalTaskDelta as EvalTaskDelta, type index_EvalTaskResult as EvalTaskResult, type index_EvalVerifierConfig as EvalVerifierConfig, type index_EvalVerifierSummary as EvalVerifierSummary, type index_ExecuteOutput as ExecuteOutput, type index_ExecutePromptFn as ExecutePromptFn, type index_ExecutionResult as ExecutionResult, type index_HarnessEvalPairConfig as HarnessEvalPairConfig, type index_HarnessExecutor as HarnessExecutor, index_HarnessGraph as HarnessGraph, type index_HarnessLoopOptions as HarnessLoopOptions, type index_HarnessProfileResult as HarnessProfileResult, type index_HarnessTraceHandle as HarnessTraceHandle, type index_HarnessTraceOptions as HarnessTraceOptions, type index_HarnessVerifier as HarnessVerifier, type index_IntakeBridgeOptions as IntakeBridgeOptions, type index_IntakeItem as IntakeItem, type index_IntakeSource as IntakeSource, type index_Intervention as Intervention, type index_KnownIntakeSource as KnownIntakeSource, type index_LintError as LintError, type index_NotifyEffectOptions as NotifyEffectOptions, type index_NotifyTransport as NotifyTransport, type index_PrioritySignals as PrioritySignals, index_QUEUE_NAMES as QUEUE_NAMES, type index_QueueConfig as QueueConfig, type index_QueueRoute as QueueRoute, type index_RefineExecutorConfig as RefineExecutorConfig, type index_RefineExecutorResult as RefineExecutorResult, type index_RootCause as RootCause, type index_Severity as Severity, type index_StrategyEntry as StrategyEntry, type index_StrategyKey as StrategyKey, type index_StrategyModelBundle as StrategyModelBundle, type index_StrategySnapshot as StrategySnapshot, type index_TestFailure as TestFailure, type index_TraceDetail as TraceDetail, type index_TraceEvent as TraceEvent, type index_TraceEventType as TraceEventType, type index_TriagePromptFn as TriagePromptFn, type index_TriagedItem as TriagedItem, type index_VerifyOutput as VerifyOutput, type index_VerifyPromptFn as VerifyPromptFn, type index_VerifyResult as VerifyResult, index_actuatorExecutor as actuatorExecutor, index_affectedTaskFilter as affectedTaskFilter, index_autoSolidify as autoSolidify, index_beforeAfterCompare as beforeAfterCompare, index_codeChangeBridge as codeChangeBridge, index_createIntakeBridge as createIntakeBridge, index_defaultErrorClassifier as defaultErrorClassifier, index_defaultLlmExecutor as defaultLlmExecutor, index_defaultLlmVerifier as defaultLlmVerifier, index_dispatchActuator as dispatchActuator, index_effectivenessTracker as effectivenessTracker, index_evalIntakeBridge as evalIntakeBridge, index_evalSource as evalSource, index_evalVerifier as evalVerifier, index_harnessEvalPair as harnessEvalPair, index_harnessLoop as harnessLoop, index_harnessProfile as harnessProfile, index_harnessTrace as harnessTrace, index_notifyEffect as notifyEffect, index_priorityScore as priorityScore, index_refineExecutor as refineExecutor, index_resolvePromptFn as resolvePromptFn, index_strategyKey as strategyKey, index_strategyModel as strategyModel };
|
|
1831
|
+
export { type index_ActuatorApplyFn as ActuatorApplyFn, type index_ActuatorExecutorConfig as ActuatorExecutorConfig, type index_ActuatorResult as ActuatorResult, type index_AnalyzeEvent as AnalyzeEvent, type index_AutoSolidifyConfig as AutoSolidifyConfig, type index_BlindVariationContext as BlindVariationContext, type index_BlindVariationOptions as BlindVariationOptions, type index_CodeChange as CodeChange, type index_CodeChangeBridgeOptions as CodeChangeBridgeOptions, type index_ConvergenceOptions as ConvergenceOptions, index_DEFAULT_DECAY_RATE as DEFAULT_DECAY_RATE, index_DEFAULT_EXECUTE_PROMPT as DEFAULT_EXECUTE_PROMPT, index_DEFAULT_QUEUE_CONFIGS as DEFAULT_QUEUE_CONFIGS, index_DEFAULT_SEVERITY_WEIGHTS as DEFAULT_SEVERITY_WEIGHTS, index_DEFAULT_TRIAGE_PROMPT as DEFAULT_TRIAGE_PROMPT, index_DEFAULT_VERIFY_PROMPT as DEFAULT_VERIFY_PROMPT, type index_DatasetItem as DatasetItem, type index_DecideEvent as DecideEvent, type index_DispatchActuatorConfig as DispatchActuatorConfig, type index_EffectivenessEntry as EffectivenessEntry, type index_EffectivenessSnapshot as EffectivenessSnapshot, type index_EffectivenessTrackerBundle as EffectivenessTrackerBundle, type index_EffectivenessTrackerOptions as EffectivenessTrackerOptions, type index_ErrorClass as ErrorClass, type index_ErrorClassifier as ErrorClassifier, type index_ErrorCritiqueContext as ErrorCritiqueContext, type index_ErrorCritiqueOptions as ErrorCritiqueOptions, type index_EvalDelta as EvalDelta, type index_EvalIntakeBridgeOptions as EvalIntakeBridgeOptions, type index_EvalJudgeScore as EvalJudgeScore, type index_EvalResult as EvalResult, type index_EvalRunResult as EvalRunResult, type index_EvalTaskDelta as EvalTaskDelta, type index_EvalTaskResult as EvalTaskResult, type index_EvalVerifierConfig as EvalVerifierConfig, type index_EvalVerifierSummary as EvalVerifierSummary, type index_EvaluateEvent as EvaluateEvent, type index_Evaluator as Evaluator, type index_ExecuteOutput as ExecuteOutput, type index_ExecutePromptFn as ExecutePromptFn, type index_ExecutionResult as ExecutionResult, type index_Feedback as Feedback, type index_GenerateEvent as GenerateEvent, type index_HarnessEvalPairConfig as HarnessEvalPairConfig, type index_HarnessExecutor as HarnessExecutor, index_HarnessGraph as HarnessGraph, type index_HarnessJobPayload as HarnessJobPayload, type index_HarnessLoopOptions as HarnessLoopOptions, type index_HarnessProfileResult as HarnessProfileResult, type index_HarnessTraceHandle as HarnessTraceHandle, type index_HarnessTraceOptions as HarnessTraceOptions, type index_HarnessVerifier as HarnessVerifier, type index_IntakeBridgeOptions as IntakeBridgeOptions, type index_IntakeItem as IntakeItem, type index_IntakeSource as IntakeSource, type index_Intervention as Intervention, type index_Iteration as Iteration, type index_KnownIntakeSource as KnownIntakeSource, type index_LintError as LintError, type index_NotifyEffectOptions as NotifyEffectOptions, type index_NotifyTransport as NotifyTransport, type index_PrioritySignals as PrioritySignals, index_QUEUE_NAMES as QUEUE_NAMES, type index_QueueConfig as QueueConfig, type index_QueueRoute as QueueRoute, type index_RefineExecutorConfig as RefineExecutorConfig, type index_RefineExecutorResult as RefineExecutorResult, type index_RefineLoopGraph as RefineLoopGraph, type index_RefineLoopOptions as RefineLoopOptions, type index_RefineStatus as RefineStatus, type index_RefineStrategy as RefineStrategy, type index_RootCause as RootCause, type index_Severity as Severity, type index_StrategyEntry as StrategyEntry, type index_StrategyKey as StrategyKey, type index_StrategyModelBundle as StrategyModelBundle, type index_StrategySnapshot as StrategySnapshot, type index_TestFailure as TestFailure, type index_TraceDetail as TraceDetail, type index_TraceEvent as TraceEvent, type index_TraceEventType as TraceEventType, type index_TriagePromptFn as TriagePromptFn, type index_TriagedItem as TriagedItem, type index_VerifyOutput as VerifyOutput, type index_VerifyPromptFn as VerifyPromptFn, type index_VerifyResult as VerifyResult, index_actuatorExecutor as actuatorExecutor, index_affectedTaskFilter as affectedTaskFilter, index_autoSolidify as autoSolidify, index_beforeAfterCompare as beforeAfterCompare, index_blindVariation as blindVariation, index_codeChangeBridge as codeChangeBridge, index_createIntakeBridge as createIntakeBridge, index_defaultErrorClassifier as defaultErrorClassifier, index_defaultLlmExecutor as defaultLlmExecutor, index_defaultLlmVerifier as defaultLlmVerifier, index_dispatchActuator as dispatchActuator, index_effectivenessTracker as effectivenessTracker, index_errorCritique as errorCritique, index_evalIntakeBridge as evalIntakeBridge, index_evalSource as evalSource, index_evalVerifier as evalVerifier, index_harnessEvalPair as harnessEvalPair, index_harnessLoop as harnessLoop, index_harnessProfile as harnessProfile, index_harnessTrace as harnessTrace, index_notifyEffect as notifyEffect, index_priorityScore as priorityScore, index_refineExecutor as refineExecutor, index_refineLoop as refineLoop, index_resolvePromptFn as resolvePromptFn, index_strategyKey as strategyKey, index_strategyModel as strategyModel };
|
|
1472
1832
|
}
|
|
1473
1833
|
|
|
1474
|
-
export { type
|
|
1834
|
+
export { type IntakeBridgeOptions as $, type ActuatorApplyFn as A, type BlindVariationContext as B, type CodeChange as C, DEFAULT_DECAY_RATE as D, type EffectivenessEntry as E, type EvalResult as F, type EvalRunResult as G, type EvalTaskDelta as H, type EvalTaskResult as I, type EvalVerifierConfig as J, type EvalVerifierSummary as K, type EvaluateEvent as L, type Evaluator as M, type ExecuteOutput as N, type ExecutePromptFn as O, type ExecutionResult as P, type Feedback as Q, type GenerateEvent as R, type HarnessEvalPairConfig as S, type HarnessExecutor as T, HarnessGraph as U, type HarnessJobPayload as V, type HarnessLoopOptions as W, type HarnessProfileResult as X, type HarnessTraceHandle as Y, type HarnessTraceOptions as Z, type HarnessVerifier as _, type ActuatorExecutorConfig as a, type IntakeItem as a0, type IntakeSource as a1, type Intervention as a2, type Iteration as a3, type KnownIntakeSource as a4, type LintError as a5, type NotifyEffectOptions as a6, type NotifyTransport as a7, type PrioritySignals as a8, QUEUE_NAMES as a9, beforeAfterCompare as aA, blindVariation as aB, codeChangeBridge as aC, createIntakeBridge as aD, defaultErrorClassifier as aE, defaultLlmExecutor as aF, defaultLlmVerifier as aG, dispatchActuator as aH, effectivenessTracker as aI, errorCritique as aJ, evalIntakeBridge as aK, evalSource as aL, evalVerifier as aM, harnessEvalPair as aN, harnessLoop as aO, harnessProfile as aP, harnessTrace as aQ, notifyEffect as aR, priorityScore as aS, refineExecutor as aT, refineLoop as aU, resolvePromptFn as aV, strategyKey as aW, strategyModel as aX, type QueueConfig as aa, type QueueRoute as ab, type RefineExecutorConfig as ac, type RefineExecutorResult as ad, type RefineLoopGraph as ae, type RefineLoopOptions as af, type RefineStatus as ag, type RefineStrategy as ah, type RootCause as ai, type Severity as aj, type StrategyEntry as ak, type StrategyKey as al, type StrategyModelBundle as am, type StrategySnapshot as an, type TestFailure as ao, type TraceDetail as ap, type TraceEvent as aq, type TraceEventType as ar, type TriagePromptFn as as, type TriagedItem as at, type VerifyOutput as au, type VerifyPromptFn as av, type VerifyResult as aw, actuatorExecutor as ax, affectedTaskFilter as ay, autoSolidify as az, type ActuatorResult as b, type AnalyzeEvent as c, type AutoSolidifyConfig as d, type BlindVariationOptions as e, type CodeChangeBridgeOptions as f, type ConvergenceOptions as g, DEFAULT_EXECUTE_PROMPT as h, index as i, DEFAULT_QUEUE_CONFIGS as j, DEFAULT_SEVERITY_WEIGHTS as k, DEFAULT_TRIAGE_PROMPT as l, DEFAULT_VERIFY_PROMPT as m, type DatasetItem as n, type DecideEvent as o, type DispatchActuatorConfig as p, type EffectivenessSnapshot as q, type EffectivenessTrackerBundle as r, type EffectivenessTrackerOptions as s, type ErrorClass as t, type ErrorClassifier as u, type ErrorCritiqueContext as v, type ErrorCritiqueOptions as w, type EvalDelta as x, type EvalIntakeBridgeOptions as y, type EvalJudgeScore as z };
|