openpond 0.2.61 → 0.2.62
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/app-server.d.ts +3264 -18
- package/dist/app-server.js +1 -1
- package/dist/chunks/{acp-FUAWCKBH.js → acp-DYRBDJRU.js} +1 -1
- package/dist/chunks/{acp-agent-XBSJ27KI.js → acp-agent-UTLP7C3I.js} +1 -1
- package/dist/chunks/{actions-command-LOHNQUWP.js → actions-command-6LF4Z4WK.js} +1 -1
- package/dist/chunks/{app-layer-4BFMOMKM.js → app-layer-N2H3RBEN.js} +1 -1
- package/dist/chunks/{app-server-connected-apps-Q2VWWJNX.js → app-server-connected-apps-3T546FE7.js} +1 -1
- package/dist/chunks/app-server-evaluations-TXD747QA.js +2 -0
- package/dist/chunks/{app-server-harness-services-2PSZBT7U.js → app-server-harness-services-BBCDV5P3.js} +1 -1
- package/dist/chunks/app-server-runtime-VEJPDAFP.js +2 -0
- package/dist/chunks/{apps-7PIBF32Q.js → apps-CTT2XYRR.js} +1 -1
- package/dist/chunks/{chunk-KK626T3Z.js → chunk-2EPR4HLF.js} +1 -1
- package/dist/chunks/{chunk-5VPU7OS7.js → chunk-2IIBCCOK.js} +1 -1
- package/dist/chunks/{chunk-ZISYLRH6.js → chunk-2UDAKLJ4.js} +1 -1
- package/dist/chunks/{chunk-BDCTN4PU.js → chunk-2V4LPUBH.js} +1 -1
- package/dist/chunks/{chunk-I3X6M6ZO.js → chunk-3R4MSE2S.js} +1 -1
- package/dist/chunks/{chunk-OFVUN4KI.js → chunk-47AXSBPV.js} +1 -1
- package/dist/chunks/{chunk-BFKYRQMA.js → chunk-4N4EH3RJ.js} +1 -1
- package/dist/chunks/chunk-4PZWGNX4.js +86 -0
- package/dist/chunks/{chunk-VFLSBDNZ.js → chunk-4RZBGKT7.js} +1 -1
- package/dist/chunks/{chunk-VBW2X42G.js → chunk-4TM75R7V.js} +1 -1
- package/dist/chunks/chunk-4U2FNXQW.js +2 -0
- package/dist/chunks/{chunk-SCCYSPQ5.js → chunk-4ZBOYWQ3.js} +1 -1
- package/dist/chunks/{chunk-VWJ5IYQP.js → chunk-547AUVKN.js} +1 -1
- package/dist/chunks/{chunk-FJ3HMHT6.js → chunk-557XSPVS.js} +1 -1
- package/dist/chunks/{chunk-ZHFH2TZN.js → chunk-557YG77L.js} +1 -1
- package/dist/chunks/{chunk-MF35MALN.js → chunk-5A6ER3M2.js} +1 -1
- package/dist/chunks/{chunk-U4HZD2GM.js → chunk-5OSM75X5.js} +1 -1
- package/dist/chunks/{chunk-TH6Y4K5Z.js → chunk-6SH4B7DV.js} +1 -1
- package/dist/chunks/chunk-6XSSM4WT.js +3 -0
- package/dist/chunks/{chunk-HN2ZK6EV.js → chunk-7JBB4PXS.js} +1 -1
- package/dist/chunks/{chunk-SID4X3YN.js → chunk-7JXZNCBC.js} +1 -1
- package/dist/chunks/chunk-7KTARW23.js +2 -0
- package/dist/chunks/{chunk-M6JRS5PA.js → chunk-ABF3W2MO.js} +1 -1
- package/dist/chunks/{chunk-CGAL7IHZ.js → chunk-AKZPMKWP.js} +1 -1
- package/dist/chunks/{chunk-SIV5P6JO.js → chunk-AMO5DVKM.js} +2 -2
- package/dist/chunks/chunk-AZ7BL5FL.js +2 -0
- package/dist/chunks/{chunk-4RHM4WN2.js → chunk-B42QQUZY.js} +1 -1
- package/dist/chunks/{chunk-3DVWJCOA.js → chunk-B4RKHHF7.js} +1 -1
- package/dist/chunks/{chunk-CQF6QZEL.js → chunk-BEI4YULC.js} +1 -1
- package/dist/chunks/chunk-BKEDG3A4.js +22 -0
- package/dist/chunks/{chunk-GEXKTGLY.js → chunk-C7M2WBWZ.js} +14 -14
- package/dist/chunks/{chunk-ELYRVTTG.js → chunk-CJUVHE4U.js} +1 -1
- package/dist/chunks/{chunk-ZUNG6YDO.js → chunk-EIX2V2KU.js} +1 -1
- package/dist/chunks/{chunk-AWPYTDH4.js → chunk-EWOTDVDJ.js} +1 -1
- package/dist/chunks/{chunk-B47JMAVW.js → chunk-F4TJ7WQV.js} +1 -1
- package/dist/chunks/{chunk-TXBIZDXG.js → chunk-F7D4BMTO.js} +1 -1
- package/dist/chunks/{chunk-BWY4D3BN.js → chunk-FFWOTZQM.js} +1 -1
- package/dist/chunks/{chunk-6RVF2J47.js → chunk-FUSCTBJI.js} +1 -1
- package/dist/chunks/{chunk-BN5AVRUG.js → chunk-GAQLXFOT.js} +1 -1
- package/dist/chunks/{chunk-LHENAWLH.js → chunk-GEKORCMN.js} +1 -1
- package/dist/chunks/{chunk-ORLJJGZZ.js → chunk-GNCEZ3UP.js} +1 -1
- package/dist/chunks/{chunk-WRQEYW3V.js → chunk-GOIKLFXK.js} +1 -1
- package/dist/chunks/{chunk-65SM7Y2G.js → chunk-GQGLPKU4.js} +1 -1
- package/dist/chunks/{chunk-LBBXVOVR.js → chunk-GSWBNJGZ.js} +1 -1
- package/dist/chunks/{chunk-7EAWLYYB.js → chunk-GV3LFSMI.js} +1 -1
- package/dist/chunks/{chunk-GQUS7MCH.js → chunk-GW5SE3FM.js} +1 -1
- package/dist/chunks/{chunk-I3W27VK4.js → chunk-HBLN4OLY.js} +1 -1
- package/dist/chunks/{chunk-SGK4GR44.js → chunk-HFJUXKT5.js} +1 -1
- package/dist/chunks/{chunk-4P3X2RXA.js → chunk-HKV7RX5E.js} +1 -1
- package/dist/chunks/{chunk-QDBYLJGH.js → chunk-HXZXDDKW.js} +1 -1
- package/dist/chunks/{chunk-LNRFRAV5.js → chunk-INO67SEN.js} +1 -1
- package/dist/chunks/{chunk-E67M5WGY.js → chunk-IWK3RTLR.js} +1 -1
- package/dist/chunks/{chunk-U447MS3Y.js → chunk-J3B2GM4A.js} +1 -1
- package/dist/chunks/chunk-JCLTFDVW.js +2 -0
- package/dist/chunks/{chunk-25RDE7DV.js → chunk-JEISPWWM.js} +1 -1
- package/dist/chunks/{chunk-D4JZALZ4.js → chunk-JIFUGA3U.js} +1 -1
- package/dist/chunks/{chunk-H2AUR7OT.js → chunk-JQRMDFF3.js} +1 -1
- package/dist/chunks/{chunk-FWIPHEVA.js → chunk-JX6OX6XE.js} +1 -1
- package/dist/chunks/{chunk-D5ADDBS5.js → chunk-JY3YSI54.js} +1 -1
- package/dist/chunks/{chunk-CM5USMXN.js → chunk-KOKX7PBS.js} +1 -1
- package/dist/chunks/{chunk-3ZWLRBYZ.js → chunk-KUPJNBWG.js} +1 -1
- package/dist/chunks/chunk-LILXHGIA.js +2 -0
- package/dist/chunks/{chunk-MCIIGQT7.js → chunk-LJDBR3RN.js} +1 -1
- package/dist/chunks/{chunk-3TYCIYW6.js → chunk-LJPO3TEL.js} +1 -1
- package/dist/chunks/{chunk-MHYI7ATG.js → chunk-LRRBYIGH.js} +2 -2
- package/dist/chunks/{chunk-P4XM7LUT.js → chunk-M5IX6VUA.js} +1 -1
- package/dist/chunks/chunk-MEK7DLX3.js +2 -0
- package/dist/chunks/{chunk-TYHCBVQT.js → chunk-MILEWROZ.js} +1 -1
- package/dist/chunks/{chunk-ZBBVRYU3.js → chunk-MNFW5WLD.js} +1 -1
- package/dist/chunks/{chunk-2VXL6AU3.js → chunk-MNXNZDDW.js} +1 -1
- package/dist/chunks/chunk-N5GPINVP.js +2 -0
- package/dist/chunks/{chunk-TSAW2QVU.js → chunk-NBE74GLF.js} +1 -1
- package/dist/chunks/{chunk-VZXZ6CHS.js → chunk-NE4ESZPT.js} +1 -1
- package/dist/chunks/{chunk-CO3OJFPU.js → chunk-NKZNPTLA.js} +1 -1
- package/dist/chunks/{chunk-WFVOG5PU.js → chunk-NLQ2UPN2.js} +1 -1
- package/dist/chunks/chunk-NOSBNHGC.js +18 -0
- package/dist/chunks/{chunk-TTN63EAM.js → chunk-NWOK6NLE.js} +1 -1
- package/dist/chunks/{chunk-6MWT6BVU.js → chunk-NWQL6FNF.js} +1 -1
- package/dist/chunks/chunk-O3MHHGC5.js +151 -0
- package/dist/chunks/{chunk-IUGK6BBY.js → chunk-OCC43RSJ.js} +1 -1
- package/dist/chunks/{chunk-BQUWZRWU.js → chunk-P74RR2GB.js} +1 -1
- package/dist/chunks/{chunk-PAZDQRYU.js → chunk-PAE3PQEC.js} +1 -1
- package/dist/chunks/{chunk-M4ZRCRJM.js → chunk-PGO4FRHU.js} +2 -2
- package/dist/chunks/chunk-Q34IF4PW.js +2 -0
- package/dist/chunks/{chunk-Q324ZA5M.js → chunk-QAVQJZCM.js} +1 -1
- package/dist/chunks/{chunk-EIIGTADO.js → chunk-RBDUMASL.js} +1 -1
- package/dist/chunks/{chunk-TMMFF6DO.js → chunk-RH43WLBX.js} +1 -1
- package/dist/chunks/{chunk-RPOD6I64.js → chunk-RTJCELRR.js} +1 -1
- package/dist/chunks/{chunk-L3GA2CQI.js → chunk-SD64CLJX.js} +1 -1
- package/dist/chunks/{chunk-TNHDD3LO.js → chunk-SXMR6E2W.js} +1 -1
- package/dist/chunks/{chunk-MLTKB5G3.js → chunk-SZKFNKWO.js} +1 -1
- package/dist/chunks/chunk-T4QXKU5Y.js +1 -0
- package/dist/chunks/{chunk-PE7UKJXK.js → chunk-T6C5BNXK.js} +1 -1
- package/dist/chunks/{chunk-OMICIPPY.js → chunk-T6JN4PND.js} +1 -1
- package/dist/chunks/{chunk-OQUKSRU3.js → chunk-TGEGXTPR.js} +1 -1
- package/dist/chunks/chunk-TM4VEMNN.js +2 -0
- package/dist/chunks/chunk-TUCKED4T.js +4 -0
- package/dist/chunks/chunk-TVTFEGTU.js +2 -0
- package/dist/chunks/{chunk-HZLV773Y.js → chunk-TW3SRBLU.js} +1 -1
- package/dist/chunks/{chunk-BNZTJPK7.js → chunk-U456UP3N.js} +1 -1
- package/dist/chunks/chunk-UC3FXTDL.js +9 -0
- package/dist/chunks/{chunk-XLULTQLZ.js → chunk-UT6F6AIB.js} +1 -1
- package/dist/chunks/{chunk-OJFDI7VM.js → chunk-UTNGEMW5.js} +1 -1
- package/dist/chunks/{chunk-DW3GJRY3.js → chunk-VAJSRUAB.js} +1 -1
- package/dist/chunks/chunk-VE6ZIGUQ.js +2 -0
- package/dist/chunks/{chunk-GLVR74PX.js → chunk-VI32G77S.js} +1 -1
- package/dist/chunks/{chunk-ROE24PN5.js → chunk-VK4TPZTA.js} +1 -1
- package/dist/chunks/{chunk-Q66LWQGF.js → chunk-VSQXDS6H.js} +1 -1
- package/dist/chunks/{chunk-4GZ2FPB5.js → chunk-VWRTE64Y.js} +1 -1
- package/dist/chunks/{chunk-QRJPLZF7.js → chunk-W5W4IODW.js} +1 -1
- package/dist/chunks/{chunk-57RY3LSR.js → chunk-WGLVSGFA.js} +1 -1
- package/dist/chunks/{chunk-I7JCARVH.js → chunk-WQMXEZVE.js} +3 -3
- package/dist/chunks/chunk-X4ZT22SG.js +2 -0
- package/dist/chunks/{chunk-DGPGOBYZ.js → chunk-XSB3T4JZ.js} +1 -1
- package/dist/chunks/{chunk-ZZWAQBA2.js → chunk-XWDFXM3S.js} +1 -1
- package/dist/chunks/{chunk-4LZLO4OW.js → chunk-Y2KPHVZK.js} +1 -1
- package/dist/chunks/chunk-ZQHPGEYT.js +2 -0
- package/dist/chunks/{chunk-T4LLJC5N.js → chunk-ZXT7V64X.js} +1 -1
- package/dist/chunks/cli-GCSO2OAI.js +2 -0
- package/dist/chunks/{configuration-command-ONGI2BJD.js → configuration-command-BU2RPG33.js} +1 -1
- package/dist/chunks/connected-app-executor-UDE7U4KG.js +2 -0
- package/dist/chunks/{connected-evidence-4J3YXU4O.js → connected-evidence-GXIY2L7C.js} +1 -1
- package/dist/chunks/{connected-starting-assets-OXLT7S4O.js → connected-starting-assets-V5QXRK5Q.js} +1 -1
- package/dist/chunks/{connection-HJWE6SEW.js → connection-XMAAGMXJ.js} +1 -1
- package/dist/chunks/{continual-CJUZM5ZQ.js → continual-FLW6DAJK.js} +1 -1
- package/dist/chunks/{core-commands-JGXU6B4C.js → core-commands-NJ6TGND4.js} +1 -1
- package/dist/chunks/{dataset-preparation-authoring-DFGJBMVF.js → dataset-preparation-authoring-IUXUQK3L.js} +1 -1
- package/dist/chunks/{datasets-MNHZAZIB.js → datasets-AH56DKLZ.js} +1 -1
- package/dist/chunks/{desktop-test-P23MHAIG.js → desktop-test-PYUTEOWO.js} +1 -1
- package/dist/chunks/{dist-IIFTZWNR.js → dist-5267UT3V.js} +1 -1
- package/dist/chunks/{dist-X64FC6NA.js → dist-HSC43RG4.js} +1 -1
- package/dist/chunks/{evaluation-coordination-6NQEH5WU.js → evaluation-coordination-3AUICOC5.js} +1 -1
- package/dist/chunks/{experiment-improvements-M27Z5OF4.js → experiment-improvements-YS7GGPDW.js} +1 -1
- package/dist/chunks/experiments-EJZK7FPT.js +2 -0
- package/dist/chunks/{experiments-signal-R3NNH7WR.js → experiments-signal-NKUIJCIY.js} +1 -1
- package/dist/chunks/{extension-C33NUFDL.js → extension-ZM6NI5O5.js} +1 -1
- package/dist/chunks/{help-M2VQGPVC.js → help-PXUUREHZ.js} +1 -1
- package/dist/chunks/host-profile-evaluation-tools-CTC5JQPD.js +2 -0
- package/dist/chunks/host-profile-external-dataset-GJWDY3YT.js +2 -0
- package/dist/chunks/hosted-app-server-composition-TLJSKMJT.js +2 -0
- package/dist/chunks/hosted-experiment-improvement-TIVXXRPG.js +3 -0
- package/dist/chunks/hosted-harness-runtime-SFLJEZFI.js +2 -0
- package/dist/chunks/{hosted-profile-candidate-37ZFY2LH.js → hosted-profile-candidate-DKEMVIYG.js} +1 -1
- package/dist/chunks/hosted-profile-compiler-V6YR6EHO.js +2 -0
- package/dist/chunks/{hosted-profile-evaluation-control-UQBMML6K.js → hosted-profile-evaluation-control-ERCXAPZD.js} +1 -1
- package/dist/chunks/{hosted-profile-evaluation-inspection-YASS4T6L.js → hosted-profile-evaluation-inspection-Q3AIIIB6.js} +1 -1
- package/dist/chunks/hosted-profile-evaluation-preparation-ELLGH44Z.js +3 -0
- package/dist/chunks/{hosted-tasksets-CVUP7MS6.js → hosted-tasksets-X2YCFYEJ.js} +1 -1
- package/dist/chunks/{human-review-IJETDOWB.js → human-review-5WM6MSON.js} +1 -1
- package/dist/chunks/{import-WLLUIDS6.js → import-JWZSZCE4.js} +1 -1
- package/dist/chunks/local-harness-improvement-runtime-IGIKM6GJ.js +2 -0
- package/dist/chunks/local-harness-taskset-review-DR2ZIDOH.js +2 -0
- package/dist/chunks/{model-projects-AVBQDNYG.js → model-projects-H22KENI4.js} +1 -1
- package/dist/chunks/opchat-3S6TSDZO.js +3 -0
- package/dist/chunks/opchat-bounded-chat-B7LPCD4U.js +2 -0
- package/dist/chunks/{organizations-DJRJWC5I.js → organizations-62YNTZTO.js} +1 -1
- package/dist/chunks/{profile-JRS3JNRC.js → profile-ELE2D7HU.js} +1 -1
- package/dist/chunks/project-action-payload-32F4X2BB.js +2 -0
- package/dist/chunks/{project-agent-2KNJFNZI.js → project-agent-O4REKO6T.js} +1 -1
- package/dist/chunks/{published-experiment-source-LFYHKFAO.js → published-experiment-source-DAOTJLIN.js} +1 -1
- package/dist/chunks/refiner-profile-service-DYMZ7J3X.js +2 -0
- package/dist/chunks/{runtime-CBJF5GMB.js → runtime-776NUSE7.js} +2 -2
- package/dist/chunks/{sandbox-command-IIGTPYN3.js → sandbox-command-UQ26NDIX.js} +1 -1
- package/dist/chunks/{sandbox-template-FTANKQIA.js → sandbox-template-WP6YCGBK.js} +1 -1
- package/dist/chunks/saved-work-PG52WCRQ.js +2 -0
- package/dist/chunks/{send-turn-5UB7ZBJV.js → send-turn-RPB65PME.js} +1 -1
- package/dist/chunks/{src-4YZF6L6H.js → src-2R4CMCJ5.js} +1 -1
- package/dist/chunks/src-AU6LG7E6.js +421 -0
- package/dist/chunks/standalone-experiment-turn-owner-SD3SUTKX.js +2 -0
- package/dist/chunks/{store-chat-resources-CGW7PDCG.js → store-chat-resources-T4LR7K25.js} +1 -1
- package/dist/chunks/{store-continual-support-reviews-GWI2FRII.js → store-continual-support-reviews-R62D2HD6.js} +1 -1
- package/dist/chunks/{store-conversation-serving-637AHKBP.js → store-conversation-serving-25O7BAR2.js} +1 -1
- package/dist/chunks/{store-create-improve-ZG653Z63.js → store-create-improve-T5E2GUKK.js} +1 -1
- package/dist/chunks/{store-datasets-IW6F2QZM.js → store-datasets-5Y4U5L3R.js} +1 -1
- package/dist/chunks/{store-evaluation-results-V5J6L4NV.js → store-evaluation-results-WUVJWCFU.js} +1 -1
- package/dist/chunks/{store-harness-workspaces-HHMM6GNK.js → store-harness-workspaces-IFEFY5CK.js} +1 -1
- package/dist/chunks/{store-human-review-V5H4QDHR.js → store-human-review-ZQNLZRGG.js} +1 -1
- package/dist/chunks/store-learned-preference-migration-validation-UH6MJQSH.js +2 -0
- package/dist/chunks/{store-local-experiments-A2UWYPVQ.js → store-local-experiments-LOH4F4TF.js} +1 -1
- package/dist/chunks/{store-model-batch-review-KMYPYWJR.js → store-model-batch-review-QO4VVKWC.js} +1 -1
- package/dist/chunks/{store-model-configuration-UXNC4PGY.js → store-model-configuration-C3HSOFD5.js} +1 -1
- package/dist/chunks/store-model-project-preparation-RQ2YTC2Y.js +2 -0
- package/dist/chunks/{store-preference-comparison-HTOXLWKF.js → store-preference-comparison-RNIFLJRW.js} +1 -1
- package/dist/chunks/{store-schedules-QVWT7AEB.js → store-schedules-DVQ2PP4F.js} +1 -1
- package/dist/chunks/{store-sidebar-file-bookmarks-G5Z6NZWL.js → store-sidebar-file-bookmarks-LXWFFYCZ.js} +1 -1
- package/dist/chunks/{store-sidebar-preferences-27FFMUWU.js → store-sidebar-preferences-4HH7LX6N.js} +1 -1
- package/dist/chunks/{store-subagents-PK7ZWLPR.js → store-subagents-JLW4GD4Q.js} +1 -1
- package/dist/chunks/{store-task-inbox-LNDCZOYE.js → store-task-inbox-DL5RYFPO.js} +1 -1
- package/dist/chunks/{store-task-inventory-IG6HGWSQ.js → store-task-inventory-NJXRXFLC.js} +1 -1
- package/dist/chunks/store-taskset-drafts-UFGN4SGF.js +9 -0
- package/dist/chunks/{store-training-NQRRPKEZ.js → store-training-VRLU6NFX.js} +1 -1
- package/dist/chunks/{store-training-jobs-F6Y2ZTXP.js → store-training-jobs-3ZHG4LGI.js} +1 -1
- package/dist/chunks/{store-training-models-NRSLSBEW.js → store-training-models-KWQD5PRP.js} +1 -1
- package/dist/chunks/{store-usage-GFHQYT34.js → store-usage-ZRS3ILF2.js} +1 -1
- package/dist/chunks/{taskset-NYLUYX6K.js → taskset-QDMCQQDJ.js} +1 -1
- package/dist/chunks/{taskset-packages-I7I5KBFP.js → taskset-packages-CBLJFWDQ.js} +1 -1
- package/dist/chunks/{teams-bot-FMAEDGSD.js → teams-bot-GF272RGC.js} +1 -1
- package/dist/chunks/{training-UBX6E7SK.js → training-DF5UEPY3.js} +1 -1
- package/dist/chunks/{training-error-AYOGHHL2.js → training-error-L5V5IBX3.js} +1 -1
- package/dist/chunks/training-hosted-I2NDBYGS.js +2 -0
- package/dist/chunks/training-hosted-report-4F25RZZ4.js +2 -0
- package/dist/chunks/training-hosted-serving-QAV7ZGGV.js +2 -0
- package/dist/chunks/training-project-preparation-XWGRY5ME.js +3 -0
- package/dist/chunks/{web-search-Q4OQVUNH.js → web-search-5RUXYIOF.js} +1 -1
- package/dist/chunks/{workspaces-XREEVSTS.js → workspaces-JRY2IE7H.js} +1 -1
- package/dist/cli.js +2 -2
- package/dist/hosted-chat.d.ts +28 -0
- package/dist/index.js +1 -1
- package/dist/skills/openpond-cli/SKILL.md +15 -2
- package/dist/skills/openpond-cli/references/compact-resource-tables.md +3 -3
- package/dist/skills/openpond-cli/references/diagnose-and-improve.md +4 -2
- package/dist/skills/openpond-cli/references/experiments-and-training.md +155 -10
- package/dist/skills/openpond-taskset-authoring/SKILL.md +5 -4
- package/dist/skills/openpond-taskset-authoring/artifact.json +7 -7
- package/dist/skills/openpond-taskset-authoring/references/failure-diagnosis.md +52 -1
- package/dist/web/assets/App-DHJVXTI2.js +54 -0
- package/dist/web/assets/App-DpFKLxuA.css +1 -0
- package/dist/web/assets/AppDialog-BurL61qE.js +1 -0
- package/dist/web/assets/AppTerminalPanel-RjFlF-a4.js +2 -0
- package/dist/web/assets/{AppToastContext-BB_2hRfw.js → AppToastContext-DZLErwj0.js} +1 -1
- package/dist/web/assets/AppsView-ttlr9ckQ.js +1 -0
- package/dist/web/assets/{AttachmentTypeIcon-DOAsVQjt.js → AttachmentTypeIcon-CpMSfHCK.js} +1 -1
- package/dist/web/assets/BrowserSidebar-Cp2l0kg0.js +1 -0
- package/dist/web/assets/{CartesianChart-DO76yfJb.js → CartesianChart-CEbM980A.js} +1 -1
- package/dist/web/assets/{ChatTimelineEntry-IKzZsHoI.js → ChatTimelineEntry-BITv20Ze.js} +1 -1
- package/dist/web/assets/{CollaborationTabs-DNoknVMD.js → CollaborationTabs-DrKJmJZK.js} +1 -1
- package/dist/web/assets/{CommandMenu-CBY2AJxV.js → CommandMenu-6oj8FUr6.js} +1 -1
- package/dist/web/assets/CommunityView-BzpIq1lD.js +1 -0
- package/dist/web/assets/ComposerAttachments-6en7m_ov.js +2 -0
- package/dist/web/assets/ComposerCreateImproveStrip-ChplO9YP.js +1 -0
- package/dist/web/assets/ConversationImportsSettings-DRHgc7j_.js +1 -0
- package/dist/web/assets/FilePagePreview-CW4J_1u7.js +2 -0
- package/dist/web/assets/GetStartedView-CaBk_mX6.js +1 -0
- package/dist/web/assets/GettingStartedDialog-EsH-8Diz.css +1 -0
- package/dist/web/assets/GettingStartedDialog-JtFLyU3F.js +1 -0
- package/dist/web/assets/{HostedModelLearningReview-B0rbIVvn.js → HostedModelLearningReview-hhcjDifK.js} +1 -1
- package/dist/web/assets/HostedModelLearningSettings-CY8198Y1.js +1 -0
- package/dist/web/assets/LabModelVersionDetailPage-f0tHT-Sn.js +1 -0
- package/dist/web/assets/LabSkillSidebar-HibUEEko.js +1 -0
- package/dist/web/assets/{LabsRoute-DOnw39du.js → LabsRoute-B61l1b8P.js} +8 -8
- package/dist/web/assets/MainChatThread-egKi0gLk.js +2 -0
- package/dist/web/assets/MainPane-2dj6Dg4l.js +95 -0
- package/dist/web/assets/{MainPane-CuBUBA9F.css → MainPane-BwHw3UYp.css} +1 -1
- package/dist/web/assets/NativeSetupTerminal-3eR9D_R3.css +1 -0
- package/dist/web/assets/NativeSetupTerminal-CNHTByLo.js +2 -0
- package/dist/web/assets/NativeSkillSidebar-DCdMbSfe.js +1 -0
- package/dist/web/assets/NewProjectDialog-t9Imnb__.js +1 -0
- package/dist/web/assets/OutputsPage-CeGq_F1S.js +1 -0
- package/dist/web/assets/{PageChrome-BBnWAENV.js → PageChrome-VHME5V8j.js} +1 -1
- package/dist/web/assets/ProjectsPage-2TMZoEPB.js +1 -0
- package/dist/web/assets/RightChatPanelStack-B3mBViGC.js +1 -0
- package/dist/web/assets/RightSidebarHomePanel-CxDYSyyx.js +1 -0
- package/dist/web/assets/ScheduledWorkPage-Dh47iH11.js +1 -0
- package/dist/web/assets/SettingsView-D2bu3tK_.js +5 -0
- package/dist/web/assets/TeamChatView-CN17AsgA.js +1 -0
- package/dist/web/assets/TerminalOverlay-DlhRpi-X.js +16 -0
- package/dist/web/assets/TrainingCreationPanel-DJKzaNFj.js +1 -0
- package/dist/web/assets/{TrainingDraftPanel-HznyNCJ4.js → TrainingDraftPanel-BhhZPPuY.js} +1 -1
- package/dist/web/assets/{TrainingMetricWorkbench-BmzHLwIP.js → TrainingMetricWorkbench-DBy8F1xp.js} +1 -1
- package/dist/web/assets/{UsageSettingsSection-C3oZ1UEP.js → UsageSettingsSection-DTZslBeW.js} +2 -2
- package/dist/web/assets/WorkSidebarPanel-Ds-eTQLs.js +1 -0
- package/dist/web/assets/WorkspaceDiffPanel-D_iyg2D4.js +11 -0
- package/dist/web/assets/WorkspaceEnvironmentMenu-Fn-NlfMQ.js +35 -0
- package/dist/web/assets/WorkspaceFileLocation-ChEeZffU.js +1 -0
- package/dist/web/assets/WorkspaceGitDialogs-D_RUXhTi.js +1 -0
- package/dist/web/assets/{WorkspaceMonacoEditor-DfsL1WIi.js → WorkspaceMonacoEditor-BJxaiDrj.js} +3 -3
- package/dist/web/assets/{WorkspacePresentationPreview-WuS_B45u.js → WorkspacePresentationPreview-A28Poeca.js} +1 -1
- package/dist/web/assets/{chat-resources-CItQ4mZD.js → chat-resources-3SvnVeKv.js} +1 -1
- package/dist/web/assets/{chevron-down-Bnma8EMP.js → chevron-down-dYn0pd4Q.js} +1 -1
- package/dist/web/assets/chevron-right-sFx2xRvT.js +1 -0
- package/dist/web/assets/{chunk-24N6A6SF-BUjzKvRC.js → chunk-BYNVSWIQ-DWh9SmdB.js} +1 -1
- package/dist/web/assets/{chunk-GAIDBPFY-BLuHpurI.js → chunk-ZFYI4P6C-BmsNtSkR.js} +1 -1
- package/dist/web/assets/{client-choice-storage-BuNdhYSV.js → client-choice-storage-DTTLbrYt.js} +1 -1
- package/dist/web/assets/{cloud-upload-DOftANif.js → cloud-upload-CRMPCFnq.js} +1 -1
- package/dist/web/assets/connected-app-mentions-D3wRZLwI.js +1 -0
- package/dist/web/assets/copy-DR4ielPn.js +1 -0
- package/dist/web/assets/{createLucideIcon-C4b2afqG.js → createLucideIcon-DmttVQ_a.js} +1 -1
- package/dist/web/assets/{cssMode-0Hn7tCrE.js → cssMode-d-2GuNvW.js} +1 -1
- package/dist/web/assets/external-link-B4rPiZEp.js +1 -0
- package/dist/web/assets/{folder-open-wJwCoIDs.js → folder-open-BrIUcUk_.js} +1 -1
- package/dist/web/assets/{folder-plus-DnTN6mcP.js → folder-plus-DwImGEt-.js} +1 -1
- package/dist/web/assets/{git-commit-horizontal-98y7PP6G.js → git-commit-horizontal-Ds1mkrlW.js} +1 -1
- package/dist/web/assets/{htmlMode-JO_QluNH.js → htmlMode-s15GR0Fn.js} +1 -1
- package/dist/web/assets/icons-CK5-nxVC.js +1 -0
- package/dist/web/assets/{image-C7HVlg3X.js → image-CY-sHbfQ.js} +1 -1
- package/dist/web/assets/{index-BsPUniZy.js → index-DYrLeSyY.js} +2 -2
- package/dist/web/assets/index-Dezj4Z2p.css +1 -0
- package/dist/web/assets/{info-BLWDShaz.js → info-aSvM8YlJ.js} +1 -1
- package/dist/web/assets/{jsonMode-BfTXJted.js → jsonMode-vos9H2hz.js} +1 -1
- package/dist/web/assets/loader-circle-cyf35w3i.js +1 -0
- package/dist/web/assets/{lspLanguageFeatures-68cAgnuv.js → lspLanguageFeatures-pQmEaoMt.js} +1 -1
- package/dist/web/assets/{maximize-2-DUWvLap6.js → maximize-2-DgF6ZVOM.js} +1 -1
- package/dist/web/assets/{monaco.contribution-_3aU1TTb.js → monaco.contribution-BPwsKvRB.js} +2 -2
- package/dist/web/assets/{monaco.contribution-h8U8HXFT.js → monaco.contribution-BbMpa0_-.js} +2 -2
- package/dist/web/assets/{monaco.contribution-CWeY6ia1.js → monaco.contribution-CJlccVX3.js} +2 -2
- package/dist/web/assets/{monaco.contribution-DOiiDDen.js → monaco.contribution-pWurLXbm.js} +2 -2
- package/dist/web/assets/{monitor-B6OuAu13.js → monitor-DlEV241C.js} +1 -1
- package/dist/web/assets/{paperclip-DSHxP9CY.js → paperclip-fnRZSIRc.js} +1 -1
- package/dist/web/assets/{pdf-RXlFwNte.js → pdf-CT3zVKCE.js} +1 -1
- package/dist/web/assets/play-wI_3FLr4.js +1 -0
- package/dist/web/assets/plus-DoJe4fLj.js +1 -0
- package/dist/web/assets/{presentation-C9WnPDVr.js → presentation-Bb8ecExR.js} +1 -1
- package/dist/web/assets/profile-agent-labels-Duh96b8x.js +1 -0
- package/dist/web/assets/{python-BQXo7wMt.js → python-DXA1xp0A.js} +1 -1
- package/dist/web/assets/{refresh-cw-NXOER_CD.js → refresh-cw-B53QjxMO.js} +1 -1
- package/dist/web/assets/{save-BxXc21N6.js → save-V1Q4Fcqa.js} +1 -1
- package/dist/web/assets/settings-lists-CtH1A57b.js +5 -0
- package/dist/web/assets/square-BqSK-hv9.js +1 -0
- package/dist/web/assets/square-terminal-Dmgkm5zY.js +1 -0
- package/dist/web/assets/submit-issue-command-DRgUboVW.js +3 -0
- package/dist/web/assets/{toggleHighContrast-Di1cRuQ4.js → toggleHighContrast-B-BD2K2Q.js} +1 -1
- package/dist/web/assets/{training-managed-adapter-81RrdT1k.js → training-managed-adapter-BXNwgd3P.js} +1 -1
- package/dist/web/assets/{training-model-data-CmVo80ZR.js → training-model-data-14942K_Z.js} +5 -5
- package/dist/web/assets/{tsMode-PxisJRYB.js → tsMode-DdgIcxK3.js} +1 -1
- package/dist/web/assets/ui-theme.generated-D-mc26qt.js +144 -0
- package/dist/web/assets/{upload-NXasN1wU.js → upload-82Y6RjLi.js} +1 -1
- package/dist/web/assets/{useAccountSettings-Dqqt1vUY.js → useAccountSettings-BgHXNpq_.js} +1 -1
- package/dist/web/assets/{useAgentInventory-BV4CUWzJ.js → useAgentInventory-B-LNn3up.js} +1 -1
- package/dist/web/assets/{useLocalAgentSchedules-Cc0M_qax.js → useLocalAgentSchedules-CsKv22Hs.js} +1 -1
- package/dist/web/assets/{useQuery-ByaRC9SK.js → useQuery-CPC2wsWm.js} +1 -1
- package/dist/web/assets/{wifi-off-aVJ3AvT_.js → wifi-off-DXOoDN9l.js} +1 -1
- package/dist/web/assets/{workers-u92Boudu.js → workers-Clf4hKt5.js} +1 -1
- package/dist/web/assets/x-IPhrr4ju.js +1 -0
- package/dist/web/assets/{yaml-BxQUS0ew.js → yaml-I1tf8Uxx.js} +1 -1
- package/dist/web/index.html +12 -3
- package/docs/command-reference.md +28 -2
- package/package.json +2 -1
- package/dist/chunks/app-server-evaluations-HAAYVEXB.js +0 -2
- package/dist/chunks/app-server-runtime-B6BAJA6L.js +0 -2
- package/dist/chunks/chunk-4N3UF3U5.js +0 -2
- package/dist/chunks/chunk-6DCXAXVD.js +0 -22
- package/dist/chunks/chunk-BLKTUFGB.js +0 -2
- package/dist/chunks/chunk-E3EKBPCB.js +0 -2
- package/dist/chunks/chunk-F5JDBDYL.js +0 -2
- package/dist/chunks/chunk-JEVA7YQL.js +0 -3
- package/dist/chunks/chunk-KC7I6E6W.js +0 -2
- package/dist/chunks/chunk-OJSK4NSW.js +0 -151
- package/dist/chunks/chunk-UBCLPZSQ.js +0 -4
- package/dist/chunks/chunk-UJBEWIR3.js +0 -8
- package/dist/chunks/chunk-V67IFV26.js +0 -86
- package/dist/chunks/chunk-VSUHJ46L.js +0 -18
- package/dist/chunks/chunk-X3WEQL3O.js +0 -2
- package/dist/chunks/chunk-XK7SPL63.js +0 -2
- package/dist/chunks/chunk-YR5ID2SS.js +0 -2
- package/dist/chunks/cli-WC45SI7E.js +0 -2
- package/dist/chunks/connected-app-executor-TZJB25UZ.js +0 -2
- package/dist/chunks/experiments-IWSCFDBB.js +0 -2
- package/dist/chunks/host-profile-evaluation-tools-EFB2YIK2.js +0 -2
- package/dist/chunks/host-profile-external-dataset-KSNREH3Q.js +0 -2
- package/dist/chunks/hosted-app-server-composition-VV545TYL.js +0 -2
- package/dist/chunks/hosted-experiment-improvement-NYLADI7S.js +0 -3
- package/dist/chunks/hosted-harness-runtime-Z54E5MD7.js +0 -2
- package/dist/chunks/hosted-profile-compiler-SW2RWTDZ.js +0 -2
- package/dist/chunks/hosted-profile-evaluation-preparation-ZAOGDQXO.js +0 -3
- package/dist/chunks/local-harness-improvement-runtime-KB4OP3SM.js +0 -2
- package/dist/chunks/local-harness-taskset-review-SUDEUGUU.js +0 -2
- package/dist/chunks/opchat-KSOJEL4W.js +0 -3
- package/dist/chunks/project-action-payload-SQ5BSQHY.js +0 -2
- package/dist/chunks/refiner-profile-service-UWI4NAZ3.js +0 -2
- package/dist/chunks/saved-work-QA46KCME.js +0 -2
- package/dist/chunks/src-E7NWAN5B.js +0 -420
- package/dist/chunks/standalone-experiment-turn-owner-SQJ5HXDZ.js +0 -2
- package/dist/chunks/store-learned-preference-migration-validation-KOCW5NOZ.js +0 -2
- package/dist/chunks/store-taskset-drafts-TA6X245D.js +0 -9
- package/dist/chunks/training-hosted-4R4QTSAN.js +0 -2
- package/dist/chunks/training-hosted-report-UQVK6FTG.js +0 -2
- package/dist/web/assets/App-Df7uYQGj.css +0 -1
- package/dist/web/assets/App-Yy3l2sdD.js +0 -56
- package/dist/web/assets/AppTerminalPanel-Dqr6VS3I.js +0 -2
- package/dist/web/assets/AppsView-27Fl_-49.js +0 -1
- package/dist/web/assets/BrowserSidebar-bnI3sSZO.js +0 -1
- package/dist/web/assets/CommunityView-CFKM7FTY.js +0 -1
- package/dist/web/assets/ComposerAttachments-BdjBddKf.js +0 -2
- package/dist/web/assets/ComposerCreateImproveStrip-ViJ5E0We.js +0 -1
- package/dist/web/assets/ConversationImportsSettings-xLl-7G9R.js +0 -1
- package/dist/web/assets/FilePagePreview-CTHuPzJt.js +0 -2
- package/dist/web/assets/GetStartedView-DvV_RMgM.js +0 -1
- package/dist/web/assets/GettingStartedDialog-B1jFmfgd.js +0 -1
- package/dist/web/assets/GettingStartedDialog-C73Bdcz2.css +0 -1
- package/dist/web/assets/HostedModelLearningSettings-DzAiutjq.js +0 -1
- package/dist/web/assets/LabModelVersionDetailPage-CF8FkRUY.js +0 -1
- package/dist/web/assets/LabSkillSidebar-gjbl9Nlv.js +0 -1
- package/dist/web/assets/MainChatThread-BUKup-JB.js +0 -2
- package/dist/web/assets/MainPane-BpE7AKXu.js +0 -92
- package/dist/web/assets/NativeSkillSidebar-Br5Lk6iU.js +0 -1
- package/dist/web/assets/NewProjectDialog-DyuKPOvF.js +0 -1
- package/dist/web/assets/OutputsPage-Dl63CVrw.js +0 -1
- package/dist/web/assets/ProjectsPage-BNF1TiyR.js +0 -1
- package/dist/web/assets/RightChatPanelStack-CxVAAbp-.js +0 -1
- package/dist/web/assets/RightSidebarHomePanel-D46ktZg-.js +0 -1
- package/dist/web/assets/ScheduledWorkPage-Cp0Hf-hs.js +0 -1
- package/dist/web/assets/SettingsView-BT57Q5Wx.js +0 -5
- package/dist/web/assets/TeamChatView-BmxTJ9E5.js +0 -1
- package/dist/web/assets/TerminalOverlay-D-Yq8av_.js +0 -16
- package/dist/web/assets/TrainingCreationPanel-CwfNPj_G.js +0 -1
- package/dist/web/assets/WorkSidebarPanel-myTA9tsh.js +0 -1
- package/dist/web/assets/WorkspaceDiffPanel-D0dzFgzW.js +0 -11
- package/dist/web/assets/WorkspaceEnvironmentMenu-AUzME1eX.js +0 -35
- package/dist/web/assets/WorkspaceFileLocation-Ai8Tz2Mz.js +0 -1
- package/dist/web/assets/WorkspaceGitDialogs-D-UCCckC.js +0 -1
- package/dist/web/assets/chevron-right-Cxv_xBz5.js +0 -1
- package/dist/web/assets/git-dialogs-C631EFyO.css +0 -1
- package/dist/web/assets/icons-kaq6k88m.js +0 -1
- package/dist/web/assets/index-DUMDOdB2.css +0 -1
- package/dist/web/assets/play-BPPQoqMl.js +0 -1
- package/dist/web/assets/plus-D18vYzHF.js +0 -1
- package/dist/web/assets/settings-lists-DMNPkGYk.js +0 -5
- package/dist/web/assets/square-Da8RuqW4.js +0 -1
- package/dist/web/assets/ui-theme.generated-R0MY_Jy0.js +0 -136
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
+
import{k as Y}from"./chunk-IWK3RTLR.js";import{g as W,h as U}from"./chunk-N5GPINVP.js";import{Jb as K,Lb as V,Mb as N,W as v,Y as w,ia as q}from"./chunk-PGO4FRHU.js";import{V as z,W as B,Xb as j,f as _,k as M,l as $,la as G,ma as D,ta as F,ua as L}from"./chunk-ABF3W2MO.js";import{d as P}from"./chunk-4M3YW3EQ.js";import{e as E,i as I}from"./chunk-NJLULBTM.js";import{i as x,l as C,n as u}from"./chunk-VVNV4NNW.js";import{a as c}from"./chunk-FTQLQJQV.js";import{constants as b}from"node:fs";import{lstat as oe,open as ne,readdir as ie}from"node:fs/promises";import S from"node:path";function pe(e){let t=N(e.taskset),{agentSnapshot:a,harnessRelease:s}=e.releasedHarness?{agentSnapshot:E.parse(e.releasedHarness.agentSnapshot),harnessRelease:I.parse(e.releasedHarness.harnessRelease)}:Q(e.taskset,e.profile);if(s.agentSnapshot.id!==a.id||s.agentSnapshot.contentHash!==a.contentHash)throw new Error("Released Harness does not bind the supplied Agent snapshot.");let d=V(e.taskset),n=e.taskset.tasks.length?e.taskset.tasks:e.selectedTask?[e.selectedTask]:[];if(!n.length)throw new Error("A portable Taskset release requires at least one resolved task.");let{environmentRelease:i,verifierSetRelease:o,tasksetRelease:l}=K({taskset:e.taskset,selectedTasks:n,adapterId:e.adapterId??A(e.taskset),admittedTasksetRelease:e.tasksetRelease,rewardExecution:e.rewardExecution}),R=e.now??(()=>new Date().toISOString()),f=M({schemaVersion:"openpond.runManifest.v1",id:`run-manifest-${u([s.contentHash,l.contentHash,e.model]).slice(0,24)}`,harnessRelease:{id:s.id,contentHash:s.contentHash},tasksetRelease:{id:l.id,contentHash:l.contentHash},model:{provider:e.model.providerId,model:e.model.modelId,revision:null,artifactHash:null,tokenizerRevision:null,chatTemplateHash:null},runtimeTarget:{adapterId:e.adapterId??A(e.taskset),placement:"local",runtimeVersion:"desktop-v1",capabilityReceipt:u({environment:d,tools:t,capabilities:e.taskset.capabilities})},limits:{maxTurns:128,timeoutMs:e.taskset.environment.defaultTimeoutMs,maxOutputBytes:25e7,maximumSpendUsd:null},approval:null,createdAt:R(),metadata:{sourceTasksetId:e.taskset.id,sourceTasksetRevision:e.taskset.revision,reasoningEffort:e.reasoningEffort??null}});return{agentSnapshot:a,harnessRelease:s,environmentRelease:i,verifierSetRelease:o,tasksetRelease:l,runManifest:f}}c(pe,"compileDesktopHarnessContext");function Q(e,t){let a=e.profileRelease?{id:e.profileRelease.id,contentHash:k(e.profileRelease.contentHash)}:t?.git?.head?{id:`source-${h(t.git.head)}`,contentHash:k(t.git.head)}:null;return Y({sourceRelease:a,profileHead:t?.git?.head??null,skills:se(t),agents:re(t)})}c(Q,"compileTemporaryProfileHarness");function ee(e){let t=e.artifacts.map(T),a=e.artifacts.find(n=>n.kind==="environment_state")??e.artifacts.find(n=>n.kind==="runtime_trace")??e.artifacts.find(n=>n.kind==="raw_model_response"),s=J(e.attempt,e.grade),d=e.grade.components.map(n=>({id:`grader-${h(n.graderId)}-${e.grade.id}`,contentHash:u(n),mediaType:"application/vnd.openpond.grader-evidence+json",sizeBytes:Buffer.byteLength(C(n))}));return _.parse($({schemaVersion:"openpond.attemptReceipt.v1",id:`receipt-${u([e.manifest.contentHash,e.attempt.id,e.grade.id]).slice(0,24)}`,runManifest:{id:e.manifest.id,contentHash:e.manifest.contentHash},taskId:e.attempt.taskId,seed:String(e.attempt.seed),terminal:!["infrastructure_failure","timeout","cancelled"].includes(s??""),failureClass:s,outputHash:e.attempt.infrastructureError?null:u(e.attempt.output),traceHash:a?k(a.sha256):u({attemptId:e.attempt.id,output:e.attempt.output,runtimeEventRefs:e.attempt.runtimeEventRefs,artifactRefs:e.attempt.artifactRefs,metadata:e.attempt.metadata}),artifactRefs:t,graderEvidenceRefs:d,startedAt:e.attempt.startedAt,completedAt:e.attempt.completedAt,latencyMs:e.attempt.latencyMs,costUsd:e.attempt.costUsd,legacyAttemptRef:e.attempt.id,metadata:{legacyGradeRef:e.grade.id,rewardEligible:e.grade.rewardEligible,score:e.grade.score,passed:e.grade.passed,usage:e.attempt.metadata.usage??[]}}))}c(ee,"projectDesktopAttemptReceipt");function ue(e){let t=ee({manifest:e.context.runManifest,attempt:e.attempt,grade:e.grade,artifacts:e.artifacts}),a=e.context.tasksetRelease.tasks.find(r=>r.id===e.attempt.taskId);if(!a)throw new Error(`Task ${e.attempt.taskId} is absent from the admitted Taskset Release.`);let s=a.requiredOutputs??[],d=e.artifacts.filter(r=>r.kind==="output_artifact").map(r=>({path:typeof r.metadata.requiredOutputPath=="string"?r.metadata.requiredOutputPath:r.path,artifact:T(r),detectedMediaType:r.mediaType??null,status:"collected",parseStatus:X(r.metadata.parseStatus),schemaStatus:X(r.metadata.schemaStatus),evidenceRefs:[T(r)],metadata:{sourceArtifactId:r.id}})),n=F({id:`artifact-manifest-${t.id}`,attemptRef:{id:t.id,contentHash:t.contentHash},requiredOutputs:s,collectedArtifacts:d,createdAt:e.attempt.completedAt,metadata:{legacyAttemptRef:e.attempt.id}}),i=e.grade.components.map((r,O)=>te({component:r,grader:e.context.verifierSetRelease.graders.find(g=>g.id===r.graderId),evidenceRef:t.graderEvidenceRefs[O]??null,gradeScored:e.grade.score!==null,boundResult:e.grade.rewardComposition?.results.find(g=>g.graderId===r.graderId)})),o=L({requiredOutputs:s,manifest:n}),l=ae(e.attempt,e.grade),R=o.some(r=>r.status==="unscorable"&&r.failureOwner==="collector"),f=o.some(r=>r.status==="scored"&&!r.passed),p=l.outcomeClass==="completed"&&R?{outcomeClass:"collector_failure",failureOwner:"collector"}:l.outcomeClass==="completed"&&f?{outcomeClass:"incomplete_output",failureOwner:"policy"}:l,m=D({id:`reward-${u([t.contentHash,e.context.verifierSetRelease.contentHash,n.contentHash,e.grade.id]).slice(0,24)}`,attemptRef:{id:t.id,contentHash:t.contentHash},verifierSet:e.context.verifierSetRelease,artifactManifest:n,...p,components:[...i,...o],createdAt:e.grade.createdAt,metadata:{legacyGradeRef:e.grade.id,legacyAttemptRef:e.attempt.id,...e.grade.rewardComposition?{rewardComposition:e.grade.rewardComposition}:{}}});return{attemptReceipt:t,artifactManifest:n,rewardReceipt:m}}c(ue,"projectDesktopCanonicalReceipts");function Re(e){let t=e.artifacts.find(n=>n.kind==="runtime_trace")??e.artifacts.find(n=>n.kind==="raw_model_response"),a=t?T(t):{id:`trace-${e.canonical.attemptReceipt.id}`,contentHash:e.canonical.attemptReceipt.traceHash,mediaType:"application/vnd.openpond.attempt-trace+json",sizeBytes:null},s=e.canonical.rewardReceipt.outcomeClass==="task_deadline"||e.canonical.rewardReceipt.outcomeClass==="infrastructure_timeout",d=e.canonical.rewardReceipt.outcomeClass==="cancelled";return j({id:`rollout-${u([e.canonical.attemptReceipt.contentHash,e.canonical.rewardReceipt.contentHash,a.contentHash]).slice(0,24)}`,attemptReceipt:e.canonical.attemptReceipt,rewardReceipt:e.canonical.rewardReceipt,artifactManifestRef:{id:e.canonical.artifactManifest.id,contentHash:e.canonical.artifactManifest.contentHash},tasksetRelease:{id:e.context.tasksetRelease.id,contentHash:e.context.tasksetRelease.contentHash},environmentRelease:{id:e.context.environmentRelease.id,contentHash:e.context.environmentRelease.contentHash},harnessRelease:{id:e.context.harnessRelease.id,contentHash:e.context.harnessRelease.contentHash},taskId:e.attempt.taskId,split:e.attempt.split,model:e.context.runManifest.model,seed:String(e.attempt.seed),traceRef:a,optimizerSample:e.optimizerSample??null,environmentExecutions:[{id:`environment-execution-${e.attempt.id}`,environmentRelease:{id:e.context.environmentRelease.id,contentHash:e.context.environmentRelease.contentHash},status:d?"cancelled":s?"timed_out":e.canonical.rewardReceipt.status==="scored"?"completed":"failed",startedAt:e.attempt.startedAt,completedAt:e.attempt.completedAt,traceRefs:[a],metadata:{legacyAttemptRef:e.attempt.id,runtimeEventCount:e.attempt.runtimeEventRefs.length}}],startedAt:e.attempt.startedAt,completedAt:e.attempt.completedAt,metadata:{source:"openpond.desktop-local-runtime",optimizerSamplePresent:!!e.optimizerSample}})}c(Re,"projectDesktopCanonicalRollout");function te(e){if(!e.grader)throw new Error(`Grade component ${e.component.graderId} has no admitted Verifier definition.`);let t=(e.boundResult?e.boundResult.status==="scored":e.gradeScored)?"scored":"unscorable",a=t==="scored"&&e.component.rewardEligible,s=e.evidenceRef?[e.evidenceRef]:[];return{verifierId:e.component.graderId,verifierVersion:e.component.graderVersion,status:t,rawScore:t==="scored"?e.boundResult?.rawScore??e.component.score:null,normalizedScore:t==="scored"?e.boundResult?.normalizedScore??e.component.score:null,weight:e.grader.weight,passed:e.component.passed,hardGate:e.component.hardGate,rewardEligible:a,rewardContribution:a?e.component.score:null,failureOwner:e.component.passed?null:t==="scored"?"policy":"verifier",feedback:e.component.feedback?[e.component.feedback]:[],visibleEvidenceRefs:e.grader.privileged?[]:s,privilegedEvidenceRefs:e.grader.privileged?s:[],metadata:{judge:e.component.judge??null,calibrationStatus:e.component.calibrationStatus,legacyEvidenceRefs:e.component.evidenceRefs}}}c(te,"portableRewardComponent");function ae(e,t){let a=B.safeParse(e.metadata.outcomeClass);if(a.success){let d=e.metadata.failureOwner===null?null:z.safeParse(e.metadata.failureOwner);if(d!==null&&!d.success)throw new Error("Attempt has an invalid explicit failure owner.");return{outcomeClass:a.data,failureOwner:d===null?null:d.data}}let s=J(e,t);return s?G({failureClass:s,timeoutKind:e.metadata.timeoutKind==="task_deadline"?"task_deadline":"infrastructure_timeout"}):t.score===null?{outcomeClass:"verifier_failure",failureOwner:"verifier"}:t.passed?{outcomeClass:"completed",failureOwner:null}:{outcomeClass:"policy_failure",failureOwner:"policy"}}c(ae,"canonicalOutcome");function X(e){return e==="passed"||e==="failed"?e:"not_requested"}c(X,"artifactValidationStatus");function se(e){return(e?.skills??[]).filter(t=>t.enabled).map(t=>({id:`skill-${h(t.name)}`,path:`skills/${h(t.name)}/SKILL.md`,contentHash:k(t.sourceHash),sizeBytes:Math.max(0,t.charCount),mediaType:"text/markdown",visibility:"policy"}))}c(se,"portableSkills");function re(e){let t=new Map;for(let a of e?.agents??[])a.enabled&&t.set(a.id,u({name:a.name,path:a.path}));return[...t].map(([a,s])=>({id:`agent-${h(a)}`,path:`agents/${h(a)}/release.json`,contentHash:k(s),sizeBytes:0,mediaType:"application/vnd.openpond.agent-release+json",visibility:"policy"}))}c(re,"portableAgents");function A(e){let t=e.environment.metadata.runtimeAdapterId;if(typeof t=="string"&&t.trim())return t.trim();let a=e.environment.metadata.benchmark;if(a&&typeof a=="object"&&!Array.isArray(a)){let s=Reflect.get(a,"id");if(typeof s=="string"&&s.trim())return`conformance:${s.trim()}`}return e.environment.kind==="work"?"openpond:desktop-work":e.environment.kind==="chat"?"openpond:desktop-text":`openpond:${h(e.environment.entrypoint)}`}c(A,"desktopTasksetRuntimeAdapterId");function T(e){return{id:e.id,contentHash:k(e.sha256),mediaType:e.mediaType??null,sizeBytes:e.sizeBytes}}c(T,"portableArtifact");function J(e,t){if(e.infrastructureError)return"infrastructure_failure";if(t.failureClass)return t.failureClass;let a=e.metadata.failureClass;return a==="policy_failure"||a==="grader_failure"||a==="environment_failure"||a==="infrastructure_failure"||a==="timeout"||a==="cancelled"?a:null}c(J,"attemptFailureClass");function k(e){return/^[a-f0-9]{64}$/.test(e)?e:u(e)}c(k,"hash");function h(e){return e.trim().replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"asset"}c(h,"segment");async function be(e,t){if(e.metadata.taskDefinition!==void 0||e.metadata.rewardBinding!==void 0)return{taskset:e,generatedFiles:[]};let a=await oe(t);if(!a.isDirectory()||a.isSymbolicLink())throw new Error("Taskset source must be a regular directory.");let s=new Map,d=0;async function n(i=""){for(let o of await ie(S.join(t,i),{withFileTypes:!0})){let l=S.posix.join(i,o.name);if(o.isSymbolicLink())throw new Error("Taskset files cannot contain symbolic links.");if(o.name.startsWith(".env"))throw new Error("Environment files cannot be included in a Taskset package.");if(o.isDirectory()){await n(l);continue}if(!o.isFile())throw new Error("Taskset packages require regular files.");if(W(l))continue;if(s.size>=1e4)throw new Error("Taskset source exceeds the file inventory limit.");let R=await ne(S.join(t,l),b.O_RDONLY|b.O_NOFOLLOW|b.O_NONBLOCK);try{let f=await R.stat();if(d+=f.size,!f.isFile()||d>w*3/4)throw new Error("Taskset source exceeds the package byte limit.");let p=Buffer.alloc(f.size),m=0;for(;m<p.length;){let r=await R.read(p,m,p.length-m,m);if(!r.bytesRead)throw new Error("Taskset source changed during capture.");m+=r.bytesRead}if((await R.read(Buffer.alloc(1),0,1,m)).bytesRead)throw new Error("Taskset source changed during capture.");s.set(l,p)}finally{await R.close()}}}return c(n,"visit"),await n(),U(e,s,A(e))}c(be,"prepareAuthoredTasksetFiles");import{constants as H}from"node:fs";import{open as ce,realpath as Z}from"node:fs/promises";import y from"node:path";function Me(e,t){return t?new Set:new Set([...(e.modelResources?.assets??[]).map(a=>a.asset.id),...(e.learningResources?.assets??[]).map(a=>a.asset.id),...e.learningResources?v(e.learningResources).map(a=>a.asset.id):[]])}c(Me,"tasksetPackageInlineAssetIds");async function $e(e){let t=e.sources.length?await Z(e.root):y.resolve(e.root),a=[],s=new Set,d=0,n=c((i,o)=>{if(s.has(i.id))throw new Error(`Duplicate local Taskset asset: ${i.id}.`);if(s.add(i.id),d+=4*Math.ceil(o.byteLength/3),d>w)throw new Error("Local Taskset files exceed the package envelope.");a.push({asset:i,base64:Buffer.from(o).toString("base64")})},"append");for(let i of e.sources){let o=x.parse(i.asset);if(!i.sourcePath||y.isAbsolute(i.sourcePath))throw new Error(`Taskset asset ${o.id} requires a relative source path.`);let l=y.resolve(t,i.sourcePath);if(!l.startsWith(`${t}${y.sep}`))throw new Error(`Taskset asset ${o.id} escapes its local package.`);if(!(await Z(l)).startsWith(`${t}${y.sep}`))throw new Error(`Taskset asset ${o.id} escapes its local package.`);let f=await ce(l,H.O_RDONLY|H.O_NOFOLLOW|H.O_NONBLOCK);try{let p=await f.stat();if(!p.isFile()||p.size!==o.sizeBytes)throw new Error(`Taskset asset ${o.id} differs from its immutable file size.`);if(4*Math.ceil(p.size/3)+d>w)throw new Error("Local Taskset files exceed the package envelope.");let m=Buffer.alloc(p.size),r=0;for(;r<m.length;){let g=await f.read(m,r,m.length-r,r);if(!g.bytesRead)throw new Error(`Taskset asset ${o.id} changed during capture.`);r+=g.bytesRead}if((await f.read(Buffer.alloc(1),0,1,r)).bytesRead)throw new Error(`Taskset asset ${o.id} changed during capture.`);n(o,m)}finally{await f.close()}}for(let i of[...e.content.modelResources?.assets??[],...e.content.learningResources?.assets??[]])s.has(i.asset.id)||n(i.asset,Buffer.from(P(i,i.asset),"utf8"));if(e.content.learningResources)for(let i of v(e.content.learningResources))s.has(i.asset.id)||n(i.asset,Buffer.from(i.base64,"base64"));if(e.fileOrder){if(new Set(e.fileOrder).size!==a.length||e.fileOrder.length!==a.length||e.fileOrder.some(o=>!s.has(o)))throw new Error("Saved package file order differs from its inventory.");let i=new Map(e.fileOrder.map((o,l)=>[o,l]));a.sort((o,l)=>i.get(o.asset.id)-i.get(l.asset.id))}return q({...e.content,files:a})}c($e,"captureLocalTasksetPackage");export{pe as a,ue as b,Re as c,A as d,be as e,Me as f,$e as g};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import{a as I,b as v}from"./chunk-GLUWATL5.js";import{E as L,F as E}from"./chunk-KK626T3Z.js";import{f as x}from"./chunk-UGOK7VTC.js";import{a}from"./chunk-FTQLQJQV.js";var T=class extends Error{constructor(t,e){super(`API request timed out after ${t}ms: ${e}`);this.timeoutMs=t;this.requestUrl=e;this.name="ApiTimeoutError"}timeoutMs;requestUrl;static{a(this,"ApiTimeoutError")}code="OPENPOND_API_TIMEOUT"},w=class extends Error{constructor(t,e){super(`API response exceeded ${t} bytes: ${e}`);this.maximumBytes=t;this.requestUrl=e;this.name="ApiResponseTooLargeError"}maximumBytes;requestUrl;static{a(this,"ApiResponseTooLargeError")}code="OPENPOND_API_RESPONSE_TOO_LARGE"},O=class extends Error{constructor(t,e,o,r=null){let c=r||e;super(`${o} failed: ${t}${c?` ${c}`:""}`);this.status=t;this.apiMessage=r;this.name="OpenPondApiError",this.code=e||"OPENPOND_API_ERROR"}status;apiMessage;static{a(this,"OpenPondApiError")}code};async function i(s,n,t,e={}){let{timeoutMs:o=3e4,maxResponseBytes:r=8388608,explicitBearerAuth:c=!1,...p}=e,d=`${s}${t}`,m=new Headers(p.headers);m.set("Content-Type","application/json");let g=c?void 0:process.env.OPENPOND_API_KEY,h=n?.trim()||"",u=!c&&h.startsWith("opk_"),S=g||(u?h:null);S&&!m.has("openpond-api-key")&&m.set("openpond-api-key",S),n?m.set("Authorization",u?`ApiKey ${h}`:`Bearer ${n}`):g&&!m.has("Authorization")&&m.set("Authorization",`ApiKey ${g}`);let y=new AbortController,f=new T(o,d),R=o>0?setTimeout(()=>y.abort(f),o):null;R?.unref?.();let P=U(p.signal,y.signal,o),k=a(()=>{R&&clearTimeout(R)},"cleanup");try{let A=await fetch(d,{...p,headers:m,signal:P});return C(A,{cleanup:k,maximumBytes:r,requestUrl:d,timeoutController:y,timeoutError:f})}catch(A){throw k(),y.signal.aborted?f:A}}a(i,"apiFetch");async function l(s,n){let t;try{let e=await s.text();t=e?JSON.parse(e):{}}catch(e){if(e instanceof T||e instanceof w)throw e;t={}}if(!s.ok){let e=typeof t.error=="string"?t.error:null,o=typeof t.message=="string"?t.message:null;throw new O(s.status,e,n,o)}return t}a(l,"readApiJson");function C(s,n){if(!s.body)return n.cleanup(),s;let t=Number(s.headers.get("content-length"));if(n.maximumBytes>0&&Number.isFinite(t)&&t>n.maximumBytes)throw n.cleanup(),s.body.cancel(),new w(n.maximumBytes,n.requestUrl);let e=s.body.getReader(),o=0,r=new ReadableStream({async pull(c){try{let p=await e.read();if(p.done){n.cleanup(),c.close();return}if(o+=p.value.byteLength,n.maximumBytes>0&&o>n.maximumBytes){n.cleanup(),await e.cancel(),c.error(new w(n.maximumBytes,n.requestUrl));return}c.enqueue(p.value)}catch(p){n.cleanup(),c.error(n.timeoutController.signal.aborted?n.timeoutError:p)}},async cancel(c){n.cleanup(),await e.cancel(c)}});return new Response(r,{headers:s.headers,status:s.status,statusText:s.statusText})}a(C,"boundedResponse");function U(s,n,t){return t<=0?s??void 0:s?AbortSignal.any([s,n]):n}a(U,"composedSignal");async function _(s,n,t,e,o){let r=await i(s,n,`/v4/apps/${t}/commits`,{method:"POST",body:JSON.stringify({files:e,message:o})});if(!r.ok){let c=await r.text().catch(()=>"");throw new Error(`Commit failed: ${r.status} ${c}`)}return await r.json()}a(_,"commitFiles");async function j(s,n,t,e){let o=e?.environment??"production",r=await i(s,n,`/v4/apps/${t}/deployments`,{method:"POST",body:JSON.stringify({environment:o,...e?.commitSha?{commitSha:e.commitSha}:{},...e?.branch?{branch:e.branch}:{}})});if(!r.ok){let c=await r.text().catch(()=>"");throw new Error(`Deploy failed: ${r.status} ${c}`)}return await r.json()}a(j,"deployApp");async function B(s,n,t,e){let o=await i(s,n,`/v4/apps/${encodeURIComponent(t)}/deployments/promote-preview`,{method:"POST",body:JSON.stringify(e)});return l(o,"Preview promotion")}a(B,"promotePreviewToProduction");async function G(s,n,t,e){let o=await i(s,n,`/v1/apps/${encodeURIComponent(t)}/lifecycle/start`,{method:"POST",body:JSON.stringify(e)});return l(o,"App lifecycle start")}a(G,"startAppLifecycle");async function M(s,n,t){let e=await i(s,n,`/apps/deployments/${t}/logs`,{method:"GET"});if(!e.ok){let c=await e.text().catch(()=>"");throw new Error(`Deployment logs failed: ${e.status} ${c}`)}let o=await e.json().catch(()=>({}));return(Array.isArray(o.logs)?o.logs:[]).map(c=>{let p=typeof c.createdAt=="string"?c.createdAt:c.createdAt instanceof Date?c.createdAt.toISOString():new Date().toISOString();return{id:typeof c.id=="string"?c.id:`${Math.random()}`,type:typeof c.type=="string"?c.type:void 0,message:typeof c.message=="string"?c.message:"",createdAt:p}})}a(M,"getDeploymentLogs");async function J(s,n,t){let e=await i(s,n,`/apps/deployments/${t}/status`,{method:"GET"});if(!e.ok){let r=await e.text().catch(()=>"");throw new Error(`Deployment status failed: ${e.status} ${r}`)}return{status:(await e.json().catch(()=>({}))).deployment?.status}}a(J,"getDeploymentStatus");async function H(s,n,t,e){let o=new URLSearchParams;e?.status&&e.status.length>0&&o.set("status",e.status.join(",")),e?.createdAfter&&o.set("createdAfter",e.createdAfter),e?.branch&&o.set("branch",e.branch);let r=o.toString(),c=await i(s,n,`/apps/${t}/deployments/latest${r?`?${r}`:""}`,{method:"GET"});if(!c.ok){let d=await c.text().catch(()=>"");throw new Error(`Latest deployment lookup failed: ${c.status} ${d}`)}let p=await c.json().catch(()=>({}));return p.deployment?{id:p.deployment.id,status:p.deployment.status}:null}a(H,"getLatestDeploymentForApp");async function F(s,n,t){let e=await i(s,n,`/apps/deployments/${t}`,{method:"GET"});if(!e.ok){let r=await e.text().catch(()=>"");throw new Error(`Deployment fetch failed: ${e.status} ${r}`)}return(await e.json().catch(()=>({}))).deployment??null}a(F,"getDeploymentDetail");var V=new URL(v).hostname,D=new URL(I).hostname;async function ae(s,n,t){let e=new URLSearchParams;t?.handle&&e.set("handle",t.handle),typeof t?.limit=="number"&&Number.isFinite(t.limit)&&e.set("limit",String(Math.max(1,Math.floor(t.limit)))),typeof t?.offset=="number"&&Number.isFinite(t.offset)&&e.set("offset",String(Math.max(0,Math.floor(t.offset)))),typeof t?.includeScheduled=="boolean"&&e.set("includeScheduled",t.includeScheduled?"true":"false");let o=e.toString(),r=await i(s,n,`/apps/list${o?`?${o}`:""}`,{method:"GET"});if(!r.ok){let p=await r.text().catch(()=>"");throw new Error(`Apps list failed: ${r.status} ${p}`)}let c=await r.json().catch(()=>({}));return Array.isArray(c.apps)?c.apps:[]}a(ae,"listApps");async function ie(s,n,t){let e=await i(s,n,"/api/projects/local",{method:"POST",body:JSON.stringify(t)});if(!e.ok){let o=await e.text().catch(()=>"");throw new Error(`Create project failed: ${e.status} ${o}`)}return await e.json()}a(ie,"createLocalProject");async function ce(s,n,t){let e=await i(s,n,"/apps/repo/create",{method:"POST",body:JSON.stringify(t)});if(!e.ok){let o=await e.text().catch(()=>"");throw new Error(`Repo create failed: ${e.status} ${o}`)}return await e.json()}a(ce,"createRepo");async function pe(s,n,t,e){let o=await i(s,n,`/apps/${encodeURIComponent(t)}/code-visibility`,{method:"PATCH",body:JSON.stringify({codeVisibility:e})});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Code visibility update failed: ${o.status} ${r}`)}return await o.json()}a(pe,"updateAppCodeVisibility");async function ue(s,n,t,e){let o=await i(s,n,"/v4/apps/headless",{method:"POST",body:JSON.stringify({items:t,...e?{teamId:e}:{}})});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Headless create failed: ${o.status} ${r}`)}return await o.json()}a(ue,"createHeadlessApps");async function le(s,n,t){let e=await i(s,n,`/v4/apps/${t}/template/status`,{method:"GET"});if(!e.ok){let o=await e.text().catch(()=>"");throw new Error(`Template status failed: ${e.status} ${o}`)}return await e.json()}a(le,"getTemplateStatus");async function de(s,n,t){let e=await i(s,n,`/v4/apps/${t}/template/branches`,{method:"GET"});if(!e.ok){let o=await e.text().catch(()=>"");throw new Error(`Template branches failed: ${e.status} ${o}`)}return await e.json()}a(de,"listTemplateBranches");async function me(s,n,t,e){let o=await i(s,n,`/v4/apps/${t}/template/deploy-latest`,{method:"POST",body:JSON.stringify(e)});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Template deploy failed: ${o.status} ${r}`)}return await o.json()}a(me,"deployLatestTemplate");async function ge(s,n,t,e){let o=await i(s,n,`/v4/apps/${t}/environment`,{method:"POST",body:JSON.stringify(e)});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Environment update failed: ${o.status} ${r}`)}return await o.json()}a(ge,"updateAppEnvironment");async function he(s,n,t){let e=await i(s,n,`/v4/apps/${t}/environment`,{method:"GET"});if(!e.ok){let o=await e.text().catch(()=>"");throw new Error(`Environment get failed: ${e.status} ${o}`)}return await e.json()}a(he,"getAppEnvironment");async function ye(s,n){let t=await i(s,n,"/api/tools/manifest",{method:"GET"});if(!t.ok){let e=await t.text().catch(()=>"");throw new Error(`Manifest fetch failed: ${t.status} ${e}`)}return await t.json()}a(ye,"fetchToolManifest");async function fe(s,n){let t=await i(s,n,"/apps/tools",{method:"GET"});if(!t.ok){let e=await t.text().catch(()=>"");throw new Error(`Tools lookup failed: ${t.status} ${e}`)}return await t.json()}a(fe,"listUserTools");async function Re(s,n,t){let e=await i(s,n,`/apps/${encodeURIComponent(t)}/schedules`,{method:"GET"});if(!e.ok){let r=await e.text().catch(()=>"");throw new Error(`Schedules lookup failed: ${e.status} ${r}`)}let o=await e.json().catch(()=>({}));return{schedules:Array.isArray(o.schedules)?o.schedules:[]}}a(Re,"listAppSchedules");async function we(s,n,t={}){let e=new URLSearchParams;t.domain&&e.set("domain",t.domain),t.opentoolVersion&&e.set("opentoolVersion",t.opentoolVersion),typeof t.limit=="number"&&e.set("limit",String(t.limit));for(let c of t.tags??[])e.append("tag",c);let o=e.toString(),r=await i(s,n,`/v1/opentool/recipes${o?`?${o}`:""}`,{method:"GET"});return l(r,"OpenTool recipe list")}a(we,"listOpenToolRecipes");async function Se(s,n,t){let e=await i(s,n,"/v1/opentool/recipes/search",{method:"POST",body:JSON.stringify(t)});return l(e,"OpenTool recipe search")}a(Se,"searchOpenToolRecipes");async function xe(s,n,t){let e=new URLSearchParams;typeof t.includeExamples=="boolean"&&e.set("includeExamples",String(t.includeExamples)),typeof t.includeTests=="boolean"&&e.set("includeTests",String(t.includeTests)),t.opentoolVersion&&e.set("opentoolVersion",t.opentoolVersion);let o=e.toString(),r=await i(s,n,`/v1/opentool/recipes/${encodeURIComponent(t.id)}${o?`?${o}`:""}`,{method:"GET"});return l(r,"OpenTool recipe get")}a(xe,"getOpenToolRecipe");async function Te(s,n,t){let e=await i(s,n,"/v1/opentool/rules",{method:"POST",body:JSON.stringify(t)});return l(e,"OpenTool rules get")}a(Te,"getOpenToolRules");function b(s){let n=new URLSearchParams;typeof s=="number"&&Number.isFinite(s)&&n.set("limit",String(Math.max(1,Math.floor(s))));let t=n.toString();return t?`?${t}`:""}a(b,"buildLimitQuery");function N(s){if(Array.isArray(s))return s;if(!s||typeof s!="object")return[];let n=s;return Array.isArray(n.logs)?n.logs:Array.isArray(n.runs)?n.runs:Array.isArray(n.scheduleRuns)?n.scheduleRuns:Array.isArray(n.items)?n.items:[]}a(N,"normalizeScheduleExecutionLogs");async function Pe(s,n,t,e){let o={...e?.preferredScheduleId?{preferredScheduleId:e.preferredScheduleId}:{},...e?.scheduleId?{scheduleId:e.scheduleId}:{},...e?.startAt?{startAt:e.startAt}:{},...e&&"endAt"in e?{endAt:e.endAt??null}:{}},r=await i(s,n,`/apps/${encodeURIComponent(t)}/schedules/start`,{method:"POST",body:JSON.stringify(o)});return l(r,"Schedule start")}a(Pe,"startAppSchedules");async function Ae(s,n,t){let e=await i(s,n,`/apps/${encodeURIComponent(t)}/schedules/stop`,{method:"POST",body:JSON.stringify({})});return l(e,"Schedule stop")}a(Ae,"stopAppSchedules");async function Ee(s,n){let t=await i(s,n,"/apps/schedules/current/stop",{method:"POST",body:JSON.stringify({})});return l(t,"Current schedule stop")}a(Ee,"stopCurrentAppSchedules");async function Oe(s,n,t){let e=await i(s,n,"/v1/schedules/run",{method:"POST",body:JSON.stringify({scheduleId:t.scheduleId})});return l(e,"Schedule run")}a(Oe,"runScheduleNow");async function be(s,n,t,e){let o=await i(s,n,`/apps/${encodeURIComponent(t)}/schedules/${encodeURIComponent(e)}`,{method:"DELETE"});return l(o,"Schedule delete")}a(be,"deleteOrArchiveSchedule");async function $e(s,n,t,e){let o=await i(s,n,`/v1/schedules/${encodeURIComponent(t)}/execution-logs${b(e?.limit)}`,{method:"GET"}),r=await l(o,"Schedule execution logs");return{logs:N(r)}}a($e,"listScheduleExecutionLogs");async function ke(s,n,t,e){let o=await i(s,n,`/v1/deployments/${encodeURIComponent(t)}/schedule-execution-logs${b(e?.limit)}`,{method:"GET"}),r=await l(o,"Deployment schedule execution logs");return{logs:N(r)}}a(ke,"listDeploymentScheduleExecutionLogs");async function Le(s,n,t){let e=await i(s,n,`/v1/schedule-execution-logs/${encodeURIComponent(t)}`,{method:"GET"});return l(e,"Schedule execution log")}a(Le,"getScheduleExecutionLog");async function Ie(s,n,t,e){let o=await i(s,n,`/v1/apps/${encodeURIComponent(t)}/execution-timeline${b(e?.limit)}`,{method:"GET"});return l(o,"App execution timeline")}a(Ie,"getAppExecutionTimeline");async function ve(s,n,t){return i(s,n,"/apps/agent/create",{method:"POST",body:JSON.stringify(t)})}a(ve,"createAgentFromPrompt");async function De(s,n,t){let e=new URLSearchParams;t?.appId&&e.set("appId",t.appId);let o=e.toString(),r=await i(s,n,`/apps/performance${o?`?${o}`:""}`,{method:"GET"});if(!r.ok){let c=await r.text().catch(()=>"");throw new Error(`Performance lookup failed: ${r.status} ${c}`)}return await r.json()}a(De,"getUserPerformance");async function Ne(s,n,t){let e=new URLSearchParams({appId:t}),o=await i(s,n,`/apps/summary?${e.toString()}`,{method:"GET"});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Summary lookup failed: ${o.status} ${r}`)}return await o.json()}a(Ne,"getAppRuntimeSummary");async function z(s,n){let t=await i(s,n,"/v1/account",{method:"GET"});if(!t.ok){let e=await t.text().catch(()=>"");throw new Error(`Account lookup failed: ${t.status} ${e}`)}return await t.json()}a(z,"getOpenPondAccount");async function qe(s,n){let t=new Date().toISOString(),e=Date.now(),o=s.replace(/\/$/,"");try{let r=await i(o,null,"/health",{method:"GET",headers:{Accept:"application/json"}}),c=Date.now()-e,p=await r.json().catch(()=>({})),d=null,m=null;if(n?.trim())try{let g=await z(o,n);d=!0,m=g.account}catch{d=!1}return{reachable:r.ok,authenticated:d,apiBase:o,latencyMs:c,status:r.status,service:typeof p.service=="string"?p.service:null,checkedAt:t,account:m,...r.ok?{}:{error:r.statusText||`HTTP ${r.status}`}}}catch(r){return{reachable:!1,authenticated:n?.trim()?!1:null,apiBase:o,latencyMs:Date.now()-e,status:null,service:null,checkedAt:t,error:r instanceof Error?r.message:String(r)}}}a(qe,"checkOpenPondApiHealth");async function Ce(s,n,t){let e=await i(s,n,"/apps/assistant/run",{method:"POST",body:JSON.stringify(t)});if(!e.ok){let o=await e.text().catch(()=>"");throw new Error(`Assistant run failed: ${e.status} ${o}`)}return await e.json()}a(Ce,"runAssistantMode");async function Ue(s,n,t){let e=await i(s,n,"/apps/agent/digest",{method:"POST",body:JSON.stringify(t)});if(!e.ok){let o=await e.text().catch(()=>"");throw new Error(`Agent digest failed: ${e.status} ${o}`)}return await e.json()}a(Ue,"postAgentDigest");async function _e(s,n,t){let e=await i(s,n,"/apps/tools/execute",{method:"POST",body:JSON.stringify(t)}),o=await e.text().catch(()=>""),r=null;try{r=o?JSON.parse(o):null}catch{r=o}return e.ok?{ok:!0,status:e.status,data:r}:{ok:!1,status:e.status,error:r&&typeof r=="object"&&"error"in r?String(r.error):o||e.statusText}}a(_e,"executeUserTool");async function je(s,n,t){let e=await i(s,n,"/apps/backtests/run",{method:"POST",body:JSON.stringify(t)});if(!e.ok){let o=await e.text().catch(()=>"");throw new Error(`Backtest run failed: ${e.status} ${o}`)}return await e.json()}a(je,"submitBacktestRun");async function Be(s,n,t){let e=t.query&&Object.keys(t.query).length>0?`?${new URLSearchParams(t.query).toString()}`:"",o=await i(s,n,`/apps/backtests/tx${e}`,{method:t.method,body:t.method==="POST"&&t.body!==void 0?JSON.stringify(t.body):void 0});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Backtests request failed: ${o.status} ${r}`)}return await o.json()}a(Be,"submitBacktestTx");async function Ge(s,n,t){let e=new URLSearchParams(t).toString(),o=await i(s,n,`/apps/backtests/detail?${e}`,{method:"GET"});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Backtest detail failed: ${o.status} ${r}`)}return await o.json()}a(Ge,"submitBacktestDetail");function K(s){let n=s.trim().replace(/^\/+/,"");return encodeURIComponent(n||"tool")}a(K,"normalizeToolPathSegment");function W(s){let n=s.replace(/\/$/,""),t=process.env.OPENPOND_TOOL_URL;if(t)return t.replace(/\/$/,"");try{let e=new URL(n),o=e.hostname.toLowerCase(),r=o==="apps.openpond.live"?null:o===V||o===D||o===`www.${D}`||o==="openpond.live"||o==="www.openpond.live"?"https://apps.openpond.live":null;if(r)return r;let c=o==="localhost"||o==="127.0.0.1",p=e.port||(e.protocol==="https:"?"443":"80");if(c&&p==="3000")return n}catch{}return n}a(W,"resolveWorkerBaseUrl");async function Me(s,n,t){let e=W(s),o=K(t.toolName),c=`${t.deploymentId?`/${t.appId}/deployments/${t.deploymentId}`:`/${t.appId}`}/${o}`,p=new Headers(t.headers||{}),d=t.method??"POST",m=t.body===void 0||d==="GET"?void 0:JSON.stringify(t.body),g=await i(e,n,c,{method:d,body:m,headers:p}),h=await g.text().catch(()=>""),u=null;try{u=h?JSON.parse(h):null}catch{u=h}let S=u&&typeof u=="object"&&"ok"in u?!!u.ok:!0,y=g.ok&&S,f=u&&typeof u=="object"&&"status"in u&&Number(u.status)||g.status,R=u&&typeof u=="object"&&"error"in u?String(u.error):g.ok?void 0:h||g.statusText,P=u&&typeof u=="object"&&"data"in u?u.data:u;return{ok:y,status:f,data:P,error:R}}a(Me,"executeHostedTool");import{createHash as Y}from"node:crypto";var X=3600*1e3;function $(s){return Y("sha256").update(JSON.stringify([s.apiBase.replace(/\/$/,""),s.apiKey.trim()])).digest("hex")}a($,"buildCacheKey");async function q(s,n){let t=await L(x(),s,$(n),{allowStale:!0});return!t||Date.now()-Date.parse(t.updatedAt)>=(n.ttlMs??X)?null:t.payload}a(q,"cached");async function Ye(s){return q("cloud.apps",s)}a(Ye,"getCachedApps");async function Xe(s){await E(x(),"cloud.apps",$(s),s.apps)}a(Xe,"setCachedApps");async function Qe(s){return q("cloud.tools",s)}a(Qe,"getCachedTools");async function Ze(s){await E(x(),"cloud.tools",$(s),s.tools)}a(Ze,"setCachedTools");var it=["openpond-generic-v1","openpond-work-v1","openpond-coding-core-v1","openpond-agent-harness-v1"];export{i as a,_ as b,j as c,B as d,G as e,M as f,J as g,H as h,F as i,ae as j,ie as k,ce as l,pe as m,ue as n,le as o,de as p,me as q,ge as r,he as s,ye as t,fe as u,Re as v,we as w,Se as x,xe as y,Te as z,Pe as A,Ae as B,Ee as C,Oe as D,be as E,$e as F,ke as G,Le as H,Ie as I,ve as J,De as K,Ne as L,z as M,qe as N,Ce as O,Ue as P,_e as Q,je as R,Be as S,Ge as T,W as U,Me as V,X as W,Ye as X,Xe as Y,Qe as Z,Ze as _,it as $};
|
|
2
|
+
import{a as I,b as v}from"./chunk-GLUWATL5.js";import{E as L,F as E}from"./chunk-2EPR4HLF.js";import{f as x}from"./chunk-UGOK7VTC.js";import{a}from"./chunk-FTQLQJQV.js";var T=class extends Error{constructor(t,e){super(`API request timed out after ${t}ms: ${e}`);this.timeoutMs=t;this.requestUrl=e;this.name="ApiTimeoutError"}timeoutMs;requestUrl;static{a(this,"ApiTimeoutError")}code="OPENPOND_API_TIMEOUT"},w=class extends Error{constructor(t,e){super(`API response exceeded ${t} bytes: ${e}`);this.maximumBytes=t;this.requestUrl=e;this.name="ApiResponseTooLargeError"}maximumBytes;requestUrl;static{a(this,"ApiResponseTooLargeError")}code="OPENPOND_API_RESPONSE_TOO_LARGE"},O=class extends Error{constructor(t,e,o,r=null){let c=r||e;super(`${o} failed: ${t}${c?` ${c}`:""}`);this.status=t;this.apiMessage=r;this.name="OpenPondApiError",this.code=e||"OPENPOND_API_ERROR"}status;apiMessage;static{a(this,"OpenPondApiError")}code};async function i(s,n,t,e={}){let{timeoutMs:o=3e4,maxResponseBytes:r=8388608,explicitBearerAuth:c=!1,...p}=e,d=`${s}${t}`,m=new Headers(p.headers);m.set("Content-Type","application/json");let g=c?void 0:process.env.OPENPOND_API_KEY,h=n?.trim()||"",u=!c&&h.startsWith("opk_"),S=g||(u?h:null);S&&!m.has("openpond-api-key")&&m.set("openpond-api-key",S),n?m.set("Authorization",u?`ApiKey ${h}`:`Bearer ${n}`):g&&!m.has("Authorization")&&m.set("Authorization",`ApiKey ${g}`);let y=new AbortController,f=new T(o,d),R=o>0?setTimeout(()=>y.abort(f),o):null;R?.unref?.();let P=U(p.signal,y.signal,o),k=a(()=>{R&&clearTimeout(R)},"cleanup");try{let A=await fetch(d,{...p,headers:m,signal:P});return C(A,{cleanup:k,maximumBytes:r,requestUrl:d,timeoutController:y,timeoutError:f})}catch(A){throw k(),y.signal.aborted?f:A}}a(i,"apiFetch");async function l(s,n){let t;try{let e=await s.text();t=e?JSON.parse(e):{}}catch(e){if(e instanceof T||e instanceof w)throw e;t={}}if(!s.ok){let e=typeof t.error=="string"?t.error:null,o=typeof t.message=="string"?t.message:null;throw new O(s.status,e,n,o)}return t}a(l,"readApiJson");function C(s,n){if(!s.body)return n.cleanup(),s;let t=Number(s.headers.get("content-length"));if(n.maximumBytes>0&&Number.isFinite(t)&&t>n.maximumBytes)throw n.cleanup(),s.body.cancel(),new w(n.maximumBytes,n.requestUrl);let e=s.body.getReader(),o=0,r=new ReadableStream({async pull(c){try{let p=await e.read();if(p.done){n.cleanup(),c.close();return}if(o+=p.value.byteLength,n.maximumBytes>0&&o>n.maximumBytes){n.cleanup(),await e.cancel(),c.error(new w(n.maximumBytes,n.requestUrl));return}c.enqueue(p.value)}catch(p){n.cleanup(),c.error(n.timeoutController.signal.aborted?n.timeoutError:p)}},async cancel(c){n.cleanup(),await e.cancel(c)}});return new Response(r,{headers:s.headers,status:s.status,statusText:s.statusText})}a(C,"boundedResponse");function U(s,n,t){return t<=0?s??void 0:s?AbortSignal.any([s,n]):n}a(U,"composedSignal");async function _(s,n,t,e,o){let r=await i(s,n,`/v4/apps/${t}/commits`,{method:"POST",body:JSON.stringify({files:e,message:o})});if(!r.ok){let c=await r.text().catch(()=>"");throw new Error(`Commit failed: ${r.status} ${c}`)}return await r.json()}a(_,"commitFiles");async function j(s,n,t,e){let o=e?.environment??"production",r=await i(s,n,`/v4/apps/${t}/deployments`,{method:"POST",body:JSON.stringify({environment:o,...e?.commitSha?{commitSha:e.commitSha}:{},...e?.branch?{branch:e.branch}:{}})});if(!r.ok){let c=await r.text().catch(()=>"");throw new Error(`Deploy failed: ${r.status} ${c}`)}return await r.json()}a(j,"deployApp");async function B(s,n,t,e){let o=await i(s,n,`/v4/apps/${encodeURIComponent(t)}/deployments/promote-preview`,{method:"POST",body:JSON.stringify(e)});return l(o,"Preview promotion")}a(B,"promotePreviewToProduction");async function G(s,n,t,e){let o=await i(s,n,`/v1/apps/${encodeURIComponent(t)}/lifecycle/start`,{method:"POST",body:JSON.stringify(e)});return l(o,"App lifecycle start")}a(G,"startAppLifecycle");async function M(s,n,t){let e=await i(s,n,`/apps/deployments/${t}/logs`,{method:"GET"});if(!e.ok){let c=await e.text().catch(()=>"");throw new Error(`Deployment logs failed: ${e.status} ${c}`)}let o=await e.json().catch(()=>({}));return(Array.isArray(o.logs)?o.logs:[]).map(c=>{let p=typeof c.createdAt=="string"?c.createdAt:c.createdAt instanceof Date?c.createdAt.toISOString():new Date().toISOString();return{id:typeof c.id=="string"?c.id:`${Math.random()}`,type:typeof c.type=="string"?c.type:void 0,message:typeof c.message=="string"?c.message:"",createdAt:p}})}a(M,"getDeploymentLogs");async function J(s,n,t){let e=await i(s,n,`/apps/deployments/${t}/status`,{method:"GET"});if(!e.ok){let r=await e.text().catch(()=>"");throw new Error(`Deployment status failed: ${e.status} ${r}`)}return{status:(await e.json().catch(()=>({}))).deployment?.status}}a(J,"getDeploymentStatus");async function H(s,n,t,e){let o=new URLSearchParams;e?.status&&e.status.length>0&&o.set("status",e.status.join(",")),e?.createdAfter&&o.set("createdAfter",e.createdAfter),e?.branch&&o.set("branch",e.branch);let r=o.toString(),c=await i(s,n,`/apps/${t}/deployments/latest${r?`?${r}`:""}`,{method:"GET"});if(!c.ok){let d=await c.text().catch(()=>"");throw new Error(`Latest deployment lookup failed: ${c.status} ${d}`)}let p=await c.json().catch(()=>({}));return p.deployment?{id:p.deployment.id,status:p.deployment.status}:null}a(H,"getLatestDeploymentForApp");async function F(s,n,t){let e=await i(s,n,`/apps/deployments/${t}`,{method:"GET"});if(!e.ok){let r=await e.text().catch(()=>"");throw new Error(`Deployment fetch failed: ${e.status} ${r}`)}return(await e.json().catch(()=>({}))).deployment??null}a(F,"getDeploymentDetail");var V=new URL(v).hostname,D=new URL(I).hostname;async function ae(s,n,t){let e=new URLSearchParams;t?.handle&&e.set("handle",t.handle),typeof t?.limit=="number"&&Number.isFinite(t.limit)&&e.set("limit",String(Math.max(1,Math.floor(t.limit)))),typeof t?.offset=="number"&&Number.isFinite(t.offset)&&e.set("offset",String(Math.max(0,Math.floor(t.offset)))),typeof t?.includeScheduled=="boolean"&&e.set("includeScheduled",t.includeScheduled?"true":"false");let o=e.toString(),r=await i(s,n,`/apps/list${o?`?${o}`:""}`,{method:"GET"});if(!r.ok){let p=await r.text().catch(()=>"");throw new Error(`Apps list failed: ${r.status} ${p}`)}let c=await r.json().catch(()=>({}));return Array.isArray(c.apps)?c.apps:[]}a(ae,"listApps");async function ie(s,n,t){let e=await i(s,n,"/api/projects/local",{method:"POST",body:JSON.stringify(t)});if(!e.ok){let o=await e.text().catch(()=>"");throw new Error(`Create project failed: ${e.status} ${o}`)}return await e.json()}a(ie,"createLocalProject");async function ce(s,n,t){let e=await i(s,n,"/apps/repo/create",{method:"POST",body:JSON.stringify(t)});if(!e.ok){let o=await e.text().catch(()=>"");throw new Error(`Repo create failed: ${e.status} ${o}`)}return await e.json()}a(ce,"createRepo");async function pe(s,n,t,e){let o=await i(s,n,`/apps/${encodeURIComponent(t)}/code-visibility`,{method:"PATCH",body:JSON.stringify({codeVisibility:e})});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Code visibility update failed: ${o.status} ${r}`)}return await o.json()}a(pe,"updateAppCodeVisibility");async function ue(s,n,t,e){let o=await i(s,n,"/v4/apps/headless",{method:"POST",body:JSON.stringify({items:t,...e?{teamId:e}:{}})});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Headless create failed: ${o.status} ${r}`)}return await o.json()}a(ue,"createHeadlessApps");async function le(s,n,t){let e=await i(s,n,`/v4/apps/${t}/template/status`,{method:"GET"});if(!e.ok){let o=await e.text().catch(()=>"");throw new Error(`Template status failed: ${e.status} ${o}`)}return await e.json()}a(le,"getTemplateStatus");async function de(s,n,t){let e=await i(s,n,`/v4/apps/${t}/template/branches`,{method:"GET"});if(!e.ok){let o=await e.text().catch(()=>"");throw new Error(`Template branches failed: ${e.status} ${o}`)}return await e.json()}a(de,"listTemplateBranches");async function me(s,n,t,e){let o=await i(s,n,`/v4/apps/${t}/template/deploy-latest`,{method:"POST",body:JSON.stringify(e)});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Template deploy failed: ${o.status} ${r}`)}return await o.json()}a(me,"deployLatestTemplate");async function ge(s,n,t,e){let o=await i(s,n,`/v4/apps/${t}/environment`,{method:"POST",body:JSON.stringify(e)});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Environment update failed: ${o.status} ${r}`)}return await o.json()}a(ge,"updateAppEnvironment");async function he(s,n,t){let e=await i(s,n,`/v4/apps/${t}/environment`,{method:"GET"});if(!e.ok){let o=await e.text().catch(()=>"");throw new Error(`Environment get failed: ${e.status} ${o}`)}return await e.json()}a(he,"getAppEnvironment");async function ye(s,n){let t=await i(s,n,"/api/tools/manifest",{method:"GET"});if(!t.ok){let e=await t.text().catch(()=>"");throw new Error(`Manifest fetch failed: ${t.status} ${e}`)}return await t.json()}a(ye,"fetchToolManifest");async function fe(s,n){let t=await i(s,n,"/apps/tools",{method:"GET"});if(!t.ok){let e=await t.text().catch(()=>"");throw new Error(`Tools lookup failed: ${t.status} ${e}`)}return await t.json()}a(fe,"listUserTools");async function Re(s,n,t){let e=await i(s,n,`/apps/${encodeURIComponent(t)}/schedules`,{method:"GET"});if(!e.ok){let r=await e.text().catch(()=>"");throw new Error(`Schedules lookup failed: ${e.status} ${r}`)}let o=await e.json().catch(()=>({}));return{schedules:Array.isArray(o.schedules)?o.schedules:[]}}a(Re,"listAppSchedules");async function we(s,n,t={}){let e=new URLSearchParams;t.domain&&e.set("domain",t.domain),t.opentoolVersion&&e.set("opentoolVersion",t.opentoolVersion),typeof t.limit=="number"&&e.set("limit",String(t.limit));for(let c of t.tags??[])e.append("tag",c);let o=e.toString(),r=await i(s,n,`/v1/opentool/recipes${o?`?${o}`:""}`,{method:"GET"});return l(r,"OpenTool recipe list")}a(we,"listOpenToolRecipes");async function Se(s,n,t){let e=await i(s,n,"/v1/opentool/recipes/search",{method:"POST",body:JSON.stringify(t)});return l(e,"OpenTool recipe search")}a(Se,"searchOpenToolRecipes");async function xe(s,n,t){let e=new URLSearchParams;typeof t.includeExamples=="boolean"&&e.set("includeExamples",String(t.includeExamples)),typeof t.includeTests=="boolean"&&e.set("includeTests",String(t.includeTests)),t.opentoolVersion&&e.set("opentoolVersion",t.opentoolVersion);let o=e.toString(),r=await i(s,n,`/v1/opentool/recipes/${encodeURIComponent(t.id)}${o?`?${o}`:""}`,{method:"GET"});return l(r,"OpenTool recipe get")}a(xe,"getOpenToolRecipe");async function Te(s,n,t){let e=await i(s,n,"/v1/opentool/rules",{method:"POST",body:JSON.stringify(t)});return l(e,"OpenTool rules get")}a(Te,"getOpenToolRules");function b(s){let n=new URLSearchParams;typeof s=="number"&&Number.isFinite(s)&&n.set("limit",String(Math.max(1,Math.floor(s))));let t=n.toString();return t?`?${t}`:""}a(b,"buildLimitQuery");function N(s){if(Array.isArray(s))return s;if(!s||typeof s!="object")return[];let n=s;return Array.isArray(n.logs)?n.logs:Array.isArray(n.runs)?n.runs:Array.isArray(n.scheduleRuns)?n.scheduleRuns:Array.isArray(n.items)?n.items:[]}a(N,"normalizeScheduleExecutionLogs");async function Pe(s,n,t,e){let o={...e?.preferredScheduleId?{preferredScheduleId:e.preferredScheduleId}:{},...e?.scheduleId?{scheduleId:e.scheduleId}:{},...e?.startAt?{startAt:e.startAt}:{},...e&&"endAt"in e?{endAt:e.endAt??null}:{}},r=await i(s,n,`/apps/${encodeURIComponent(t)}/schedules/start`,{method:"POST",body:JSON.stringify(o)});return l(r,"Schedule start")}a(Pe,"startAppSchedules");async function Ae(s,n,t){let e=await i(s,n,`/apps/${encodeURIComponent(t)}/schedules/stop`,{method:"POST",body:JSON.stringify({})});return l(e,"Schedule stop")}a(Ae,"stopAppSchedules");async function Ee(s,n){let t=await i(s,n,"/apps/schedules/current/stop",{method:"POST",body:JSON.stringify({})});return l(t,"Current schedule stop")}a(Ee,"stopCurrentAppSchedules");async function Oe(s,n,t){let e=await i(s,n,"/v1/schedules/run",{method:"POST",body:JSON.stringify({scheduleId:t.scheduleId})});return l(e,"Schedule run")}a(Oe,"runScheduleNow");async function be(s,n,t,e){let o=await i(s,n,`/apps/${encodeURIComponent(t)}/schedules/${encodeURIComponent(e)}`,{method:"DELETE"});return l(o,"Schedule delete")}a(be,"deleteOrArchiveSchedule");async function $e(s,n,t,e){let o=await i(s,n,`/v1/schedules/${encodeURIComponent(t)}/execution-logs${b(e?.limit)}`,{method:"GET"}),r=await l(o,"Schedule execution logs");return{logs:N(r)}}a($e,"listScheduleExecutionLogs");async function ke(s,n,t,e){let o=await i(s,n,`/v1/deployments/${encodeURIComponent(t)}/schedule-execution-logs${b(e?.limit)}`,{method:"GET"}),r=await l(o,"Deployment schedule execution logs");return{logs:N(r)}}a(ke,"listDeploymentScheduleExecutionLogs");async function Le(s,n,t){let e=await i(s,n,`/v1/schedule-execution-logs/${encodeURIComponent(t)}`,{method:"GET"});return l(e,"Schedule execution log")}a(Le,"getScheduleExecutionLog");async function Ie(s,n,t,e){let o=await i(s,n,`/v1/apps/${encodeURIComponent(t)}/execution-timeline${b(e?.limit)}`,{method:"GET"});return l(o,"App execution timeline")}a(Ie,"getAppExecutionTimeline");async function ve(s,n,t){return i(s,n,"/apps/agent/create",{method:"POST",body:JSON.stringify(t)})}a(ve,"createAgentFromPrompt");async function De(s,n,t){let e=new URLSearchParams;t?.appId&&e.set("appId",t.appId);let o=e.toString(),r=await i(s,n,`/apps/performance${o?`?${o}`:""}`,{method:"GET"});if(!r.ok){let c=await r.text().catch(()=>"");throw new Error(`Performance lookup failed: ${r.status} ${c}`)}return await r.json()}a(De,"getUserPerformance");async function Ne(s,n,t){let e=new URLSearchParams({appId:t}),o=await i(s,n,`/apps/summary?${e.toString()}`,{method:"GET"});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Summary lookup failed: ${o.status} ${r}`)}return await o.json()}a(Ne,"getAppRuntimeSummary");async function z(s,n){let t=await i(s,n,"/v1/account",{method:"GET"});if(!t.ok){let e=await t.text().catch(()=>"");throw new Error(`Account lookup failed: ${t.status} ${e}`)}return await t.json()}a(z,"getOpenPondAccount");async function qe(s,n){let t=new Date().toISOString(),e=Date.now(),o=s.replace(/\/$/,"");try{let r=await i(o,null,"/health",{method:"GET",headers:{Accept:"application/json"}}),c=Date.now()-e,p=await r.json().catch(()=>({})),d=null,m=null;if(n?.trim())try{let g=await z(o,n);d=!0,m=g.account}catch{d=!1}return{reachable:r.ok,authenticated:d,apiBase:o,latencyMs:c,status:r.status,service:typeof p.service=="string"?p.service:null,checkedAt:t,account:m,...r.ok?{}:{error:r.statusText||`HTTP ${r.status}`}}}catch(r){return{reachable:!1,authenticated:n?.trim()?!1:null,apiBase:o,latencyMs:Date.now()-e,status:null,service:null,checkedAt:t,error:r instanceof Error?r.message:String(r)}}}a(qe,"checkOpenPondApiHealth");async function Ce(s,n,t){let e=await i(s,n,"/apps/assistant/run",{method:"POST",body:JSON.stringify(t)});if(!e.ok){let o=await e.text().catch(()=>"");throw new Error(`Assistant run failed: ${e.status} ${o}`)}return await e.json()}a(Ce,"runAssistantMode");async function Ue(s,n,t){let e=await i(s,n,"/apps/agent/digest",{method:"POST",body:JSON.stringify(t)});if(!e.ok){let o=await e.text().catch(()=>"");throw new Error(`Agent digest failed: ${e.status} ${o}`)}return await e.json()}a(Ue,"postAgentDigest");async function _e(s,n,t){let e=await i(s,n,"/apps/tools/execute",{method:"POST",body:JSON.stringify(t)}),o=await e.text().catch(()=>""),r=null;try{r=o?JSON.parse(o):null}catch{r=o}return e.ok?{ok:!0,status:e.status,data:r}:{ok:!1,status:e.status,error:r&&typeof r=="object"&&"error"in r?String(r.error):o||e.statusText}}a(_e,"executeUserTool");async function je(s,n,t){let e=await i(s,n,"/apps/backtests/run",{method:"POST",body:JSON.stringify(t)});if(!e.ok){let o=await e.text().catch(()=>"");throw new Error(`Backtest run failed: ${e.status} ${o}`)}return await e.json()}a(je,"submitBacktestRun");async function Be(s,n,t){let e=t.query&&Object.keys(t.query).length>0?`?${new URLSearchParams(t.query).toString()}`:"",o=await i(s,n,`/apps/backtests/tx${e}`,{method:t.method,body:t.method==="POST"&&t.body!==void 0?JSON.stringify(t.body):void 0});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Backtests request failed: ${o.status} ${r}`)}return await o.json()}a(Be,"submitBacktestTx");async function Ge(s,n,t){let e=new URLSearchParams(t).toString(),o=await i(s,n,`/apps/backtests/detail?${e}`,{method:"GET"});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Backtest detail failed: ${o.status} ${r}`)}return await o.json()}a(Ge,"submitBacktestDetail");function K(s){let n=s.trim().replace(/^\/+/,"");return encodeURIComponent(n||"tool")}a(K,"normalizeToolPathSegment");function W(s){let n=s.replace(/\/$/,""),t=process.env.OPENPOND_TOOL_URL;if(t)return t.replace(/\/$/,"");try{let e=new URL(n),o=e.hostname.toLowerCase(),r=o==="apps.openpond.live"?null:o===V||o===D||o===`www.${D}`||o==="openpond.live"||o==="www.openpond.live"?"https://apps.openpond.live":null;if(r)return r;let c=o==="localhost"||o==="127.0.0.1",p=e.port||(e.protocol==="https:"?"443":"80");if(c&&p==="3000")return n}catch{}return n}a(W,"resolveWorkerBaseUrl");async function Me(s,n,t){let e=W(s),o=K(t.toolName),c=`${t.deploymentId?`/${t.appId}/deployments/${t.deploymentId}`:`/${t.appId}`}/${o}`,p=new Headers(t.headers||{}),d=t.method??"POST",m=t.body===void 0||d==="GET"?void 0:JSON.stringify(t.body),g=await i(e,n,c,{method:d,body:m,headers:p}),h=await g.text().catch(()=>""),u=null;try{u=h?JSON.parse(h):null}catch{u=h}let S=u&&typeof u=="object"&&"ok"in u?!!u.ok:!0,y=g.ok&&S,f=u&&typeof u=="object"&&"status"in u&&Number(u.status)||g.status,R=u&&typeof u=="object"&&"error"in u?String(u.error):g.ok?void 0:h||g.statusText,P=u&&typeof u=="object"&&"data"in u?u.data:u;return{ok:y,status:f,data:P,error:R}}a(Me,"executeHostedTool");import{createHash as Y}from"node:crypto";var X=3600*1e3;function $(s){return Y("sha256").update(JSON.stringify([s.apiBase.replace(/\/$/,""),s.apiKey.trim()])).digest("hex")}a($,"buildCacheKey");async function q(s,n){let t=await L(x(),s,$(n),{allowStale:!0});return!t||Date.now()-Date.parse(t.updatedAt)>=(n.ttlMs??X)?null:t.payload}a(q,"cached");async function Ye(s){return q("cloud.apps",s)}a(Ye,"getCachedApps");async function Xe(s){await E(x(),"cloud.apps",$(s),s.apps)}a(Xe,"setCachedApps");async function Qe(s){return q("cloud.tools",s)}a(Qe,"getCachedTools");async function Ze(s){await E(x(),"cloud.tools",$(s),s.tools)}a(Ze,"setCachedTools");var it=["openpond-generic-v1","openpond-work-v1","openpond-coding-core-v1","openpond-agent-harness-v1"];export{i as a,_ as b,j as c,B as d,G as e,M as f,J as g,H as h,F as i,ae as j,ie as k,ce as l,pe as m,ue as n,le as o,de as p,me as q,ge as r,he as s,ye as t,fe as u,Re as v,we as w,Se as x,xe as y,Te as z,Pe as A,Ae as B,Ee as C,Oe as D,be as E,$e as F,ke as G,Le as H,Ie as I,ve as J,De as K,Ne as L,z as M,qe as N,Ce as O,Ue as P,_e as Q,je as R,Be as S,Ge as T,W as U,Me as V,X as W,Ye as X,Xe as Y,Qe as Z,Ze as _,it as $};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import{a as he,b as ye,d as Ae,e as D}from"./chunk-BFKYRQMA.js";import{a as L,b as ge,c as Pe,d as we,e as Oe}from"./chunk-SGK4GR44.js";import{j as xe}from"./chunk-5ZBLCWEJ.js";import{d as N,e as E}from"./chunk-YR5ID2SS.js";import{E as ae,h as re}from"./chunk-6DCXAXVD.js";import{d as me}from"./chunk-OE22TAXP.js";import{a}from"./chunk-FTQLQJQV.js";var Le=new URL(E).hostname,be=new URL(N).hostname,$e=`${E}/opchat/v1`;function l(e){if(!e)return null;let t=e.trim();return t?t.replace(/\/+$/,""):null}a(l,"normalizeBaseUrl");function X(e){let t=l(e);if(!t)return null;try{let o=new URL(t).hostname.toLowerCase();if(o===Le)return E;if(o===be||o===`www.${be}`||o==="openpond.live"||o==="www.openpond.live")return E;if(o.startsWith("api."))return t}catch{return null}return null}a(X,"mapUiBaseToApiBase");function Y(e,t){let n=l(process.env.OPENPOND_API_URL);if(n)return n;let o=l(e?.apiBaseUrl);if(o)return o;let r=l(t.apiBaseUrl);if(r)return r;let s=X(process.env.OPENPOND_BASE_URL);return s||(X(e?.baseUrl||t.baseUrl)??E)}a(Y,"resolvePublicApiBaseUrl");function Q(e,t,n){return He(e,t,n)}a(Q,"resolveHostedChatApiBaseUrl");function He(e,t,n){let o=typeof process<"u"?process.env:{};return J(o.OPENPOND_OPCHAT_API_URL)??J(e?.chatApiBaseUrl??t.chatApiBaseUrl)??J(o.OPENPOND_CHAT_API_URL)??Me(n)}a(He,"resolveOpChatApiBaseUrl");function J(e){let t=l(e);if(!t)return null;try{let n=new URL(t),o=n.pathname.split("/").filter(Boolean),r=o.findIndex(i=>i.toLowerCase()==="opchat");return r>=0?(n.pathname=`/${[...o.slice(0,r+1),"v1"].join("/")}`,n.search="",n.hash="",l(n.toString())??null):o.findIndex(i=>i.toLowerCase()==="v1")>=0?(n.pathname="/opchat/v1",n.search="",n.hash="",l(n.toString())??null):(n.pathname=`${n.pathname.replace(/\/+$/,"")}/opchat/v1`.replace(/\/{2,}/g,"/"),n.search="",n.hash="",l(n.toString())??null)}catch{return null}}a(J,"normalizeOpChatApiBaseUrl");function Me(e){return J(e)??$e}a(Me,"opChatBaseFromPublicApiBase");function $(e){return e?.trim()?e.trim():"production"}a($,"deriveEnvironment");function Z(e,t=process.env){let n=[e?.apiKey,e?.session?.token,e?.token,t.OPENPOND_API_KEY];for(let o of n){let r=typeof o=="string"?o.trim():"";if(r)return r}return null}a(Z,"accountToken");function P(e,t){return!!(e&&t&&e.toLowerCase()===t.toLowerCase())}a(P,"handleEquals");function b(e,t){return l(e)===l(t)}a(b,"baseUrlEquals");function q(e,t){return`${e?.trim().toLowerCase()||""}|${l(t)??"default"}`}a(q,"profileKey");function ee(e){return l(e?.baseUrl)}a(ee,"selectorBaseUrl");function v(e){let t=l(e.baseUrl);return t?{handle:e.handle,baseUrl:t}:{handle:e.handle}}a(v,"selectorFromAccount");function A(e){let t=typeof e?.handle=="string"?e.handle.trim():"";if(!t)return null;let n=l(e?.baseUrl);return n?{handle:t,baseUrl:n}:{handle:t}}a(A,"normalizeActiveProfile");function U(e,t){if(!P(e.handle,t.handle))return!1;let n=ee(t);return n?b(e.baseUrl,n):!l(e.baseUrl)}a(U,"accountMatchesSelector");function se(e,t){if(!P(e.handle,t.handle))return!1;let n=ee(t);return n?b(e.baseUrl,n):!l(e.baseUrl)}a(se,"profileMatchesSelector");function Ue(e,t,n){let o=Array.isArray(e.accounts)?e.accounts:[],r=t||process.env.OPENPOND_ACCOUNT?A({handle:t||process.env.OPENPOND_ACCOUNT||"",baseUrl:n??process.env.OPENPOND_BASE_URL??null}):A(e.activeProfile);if(r){let s=o.find(c=>U(c,r));if(s)return s;let i=o.filter(c=>P(c.handle,r.handle));return i.length===1?i[0]??null:null}return o[0]?o[0]:null}a(Ue,"findActiveAccount");function ke(e){let t=Array.isArray(e.accounts)?e.accounts:[],n=A(e.activeProfile)??(t[0]?v(t[0]):null);return ie(t.map(o=>({handle:o.handle,baseUrl:l(o.baseUrl),apiBaseUrl:l(o.apiBaseUrl),chatApiBaseUrl:l(o.chatApiBaseUrl),environment:$(o.environment),isActive:n?U(o,n):!1,hasApiKey:!!o.apiKey?.trim(),hasSessionToken:!!(o.session?.token?.trim()||o.token?.trim()),sessionAppId:o.session?.appId??null,sessionConversationId:o.session?.conversationId??null})))}a(ke,"fallbackProfilesFromConfig");function ie(e){let t=new Map;for(let n of e){let o=l(n.baseUrl),r=`${n.handle.toLowerCase()}|${o??"default"}`,s={...n,baseUrl:o,apiBaseUrl:l(n.apiBaseUrl),chatApiBaseUrl:l(n.chatApiBaseUrl),environment:$(n.environment),isActive:n.isActive},i=t.get(r);(!i||s.isActive&&!i.isActive||s.hasApiKey&&!i.hasApiKey)&&t.set(r,s)}return Array.from(t.values())}a(ie,"normalizeProfiles");function Ee(e){return e.hasApiKey||e.hasSessionToken?"signed_in":"signed_out"}a(Ee,"profileAuthHealth");function ze(e,t){return e?{reachable:e.reachable,authenticated:e.authenticated,apiBase:e.apiBase||t,latencyMs:e.latencyMs,status:e.status,service:e.service,checkedAt:e.checkedAt,error:e.error??null}:null}a(ze,"normalizeHealth");function Be(e){let t=e?.account;return t?{id:t.id??null,email:t.email??null,name:t.name??null,handle:t.handle??null,image:t.image??null,timezone:t.timezone??null,isAdmin:t.isAdmin??null,isVerified:t.isVerified??null,dailyAgentAppId:t.dailyAgentAppId??null,dailyAgentDeploymentId:t.dailyAgentDeploymentId??null,credits:t.credits??null}:null}a(Be,"normalizeProfile");function Fe(e){return(e??[]).map(t=>({...t,id:t.id||t.userProductId||t.openPondProductId||t.name,name:t.name,type:t.type,status:t.status,isActive:t.isActive??null,price:t.price??null,currency:t.currency??null,credits:t.credits??null}))}a(Fe,"normalizeProducts");function je(e){return e.handle.trim().toLowerCase()==="default"&&!l(e.baseUrl)&&!e.hasApiKey&&!e.hasSessionToken}a(je,"isEmptyDefaultProfile");function Ke(e){let t=e?.trim();return t?t.length>=12?`\u2022\u2022\u2022\u2022\u2022\u2022${t.slice(-6)}`:"\u2022\u2022\u2022\u2022\u2022\u2022":null}a(Ke,"apiKeyHint");function qe(e){return e?.auth?.authType!=="openpond-api-key"||!e.auth.keyAccess?null:{ownerType:e.auth.keyAccess.ownerType,teamId:e.auth.keyAccess.teamId,scopes:e.auth.scopes}}a(qe,"apiKeyAccess");function H(e){let{config:t,profiles:n,account:o,token:r,apiBaseUrl:s,accountResponse:i,accountProfiles:c,health:m,authFailed:g,error:f}=e,w=Q(o,t,s),h=Be(i??null),C=A(t.activeProfile),_=(o?v(o):null)??C,O=h?.handle||o?.handle||_?.handle||null,I=(_?n.find(p=>se(p,_)):null)??n.find(p=>p.isActive)??null,y=g?"auth_error":r?"signed_in":"signed_out",d=h?.name||h?.handle||h?.email||O||"Signed out",R=l(I?.baseUrl||o?.baseUrl||N),k=$(I?.environment||o?.environment),x=A(_)??(O?A({handle:O,baseUrl:I?.baseUrl??o?.baseUrl}):null),j=(n.length>0?n:O?[{handle:O,baseUrl:ee(x)??l(o?.baseUrl),apiBaseUrl:s,chatApiBaseUrl:w,environment:k,isActive:!0,hasApiKey:!!r,hasSessionToken:!1,sessionAppId:null,sessionConversationId:null}]:[]).filter(p=>!je(p));return{state:y,activeProfile:x,label:d,email:h?.email??null,avatarUrl:h?.image??null,environment:k,baseUrl:R,apiBaseUrl:s,chatApiBaseUrl:w,creditsLabel:h?.credits??null,profile:h,products:Fe(i?.products),apiHealth:ze(m??null,s),accounts:j.map(p=>{let T=l(p.baseUrl),De=t.accounts?.find(fe=>P(fe.handle,p.handle)&&b(fe.baseUrl,T)),oe=c?.[q(p.handle,T)]??null,K=Be(oe?.response??null);return{handle:p.handle,baseUrl:T,apiBaseUrl:l(p.apiBaseUrl),chatApiBaseUrl:l(p.chatApiBaseUrl),environment:$(p.environment),isActive:x?se(p,x):!1,authHealth:oe?.authFailed?"auth_error":Ee(p),displayLabel:K?.name||K?.handle||K?.email||p.handle,email:K?.email??null,avatarUrl:K?.image??null,apiKeyHint:Ke(De?.apiKey),apiKeyAccess:qe(oe?.response??null)}}),error:f??m?.error??null}}a(H,"toAccountState");async function Ge(e){try{return ie(await Pe())}catch{return ke(e)}}a(Ge,"loadProfiles");async function u(e,t){let n=await ge(),o=await Ge(n),r=Ue(n,e,t),s=Z(r),i=Y(r,n),c=Q(r,n,i);return{config:n,profiles:o,account:r,token:s,apiBaseUrl:i,chatApiBaseUrl:c,accountState:H({config:n,profiles:o,account:r,token:s,apiBaseUrl:i})}}a(u,"loadOpenPondAccountContext");async function We(e){let t=l(e.baseUrl);return await we(e.handle,{baseUrl:t}),u(e.handle,t)}a(We,"switchOpenPondAccount");import{randomUUID as Ve}from"node:crypto";function M(e){return e instanceof Error?e.message:String(e)}a(M,"errorMessage");var Je=15e3;function Xe(e){return e===ae?"OpenPond Chat":e==="deepseek-v4-flash"?"DeepSeek V4 Flash":e.replace(/[-_/]+/g," ")}a(Xe,"displayNameForHostedModel");function Ye(e){let t=typeof e.id=="string"?e.id:null;return t?{id:t,displayName:Xe(t),ownedBy:typeof e.owned_by=="string"?e.owned_by:null,streaming:!0,raw:e}:null}a(Ye,"normalizeHostedModel");async function Qe(){let e=await u();if(!e.token)return{models:[],error:"No OpenPond API key or session token is configured."};try{return{models:(await tt({apiBaseUrl:e.chatApiBaseUrl,token:e.token})).data.map(o=>Ye(o)).filter(o=>!!o),error:null}}catch(t){return{models:[],error:M(t)}}}a(Qe,"loadOpenPondHostedModels");async function Ze(){let e=await u();if(!e.token)return{catalog:null,error:"No OpenPond API key or session token is configured."};let t=new AbortController,n=setTimeout(()=>{t.abort(new Error("OpenPond provider catalog request timed out."))},Je);try{return{catalog:await Se({apiBaseUrl:e.chatApiBaseUrl,token:e.token,signal:t.signal}),error:null}}catch(o){return{catalog:null,error:M(o)}}finally{clearTimeout(n)}}a(Ze,"loadOpenPondProviderCatalog");async function*et(e){let t=await u();if(!t.token)throw new Error("OpenPond is signed out. Add an account in Settings before using OpenPond Chat.");yield*Ce({apiBaseUrl:t.chatApiBaseUrl,token:t.token,model:e.model||ae,messages:e.messages,tools:e.tools,toolChoice:e.toolChoice,requestId:e.requestId,reasoningEffort:e.reasoningEffort,maxTokens:e.maxTokens,temperature:e.temperature,topP:e.topP,signal:e.signal})}a(et,"streamOpenPondHostedChatTurn");async function tt(e){let t=le(e.apiBaseUrl,"models"),n=await fetch(t,{method:"GET",headers:ce(e.token,"application/json"),signal:e.signal});if(!n.ok)throw new Error(`OpenPond OpChat model list failed: ${n.status} ${await ue(n)}`);return await n.json()}a(tt,"listOpChatModels");async function Se(e){let t=le(e.apiBaseUrl,"provider-catalog"),n=await fetch(t,{method:"GET",headers:ce(e.token,"application/json"),signal:e.signal});if(!n.ok)throw new Error(`OpenPond OpChat provider catalog failed: ${n.status} ${await ue(n)}`);let o=await n.json();return!o||typeof o!="object"||!Array.isArray(o.providers)?re.parse(o):re.parse({...o,providers:o.providers.filter(r=>r!==null&&typeof r=="object"&&me.safeParse(r.id).success)})}a(Se,"listOpChatProviderCatalog");async function*Ce(e){let t=le(e.apiBaseUrl,"chat/completions"),n=await fetch(t,{method:"POST",headers:ce(e.token,"text/event-stream",e.requestId),body:JSON.stringify(it(e,!0)),signal:e.signal});if(!n.ok)throw new Error(`OpenPond OpChat request failed: ${n.status} ${await ue(n)}`);if(!n.body)throw new Error("OpenPond OpChat request failed: streaming response body is missing.");let o=new Map,r=!1,s=null,i={},c="",m=null,g=nt(n.headers),f=n.body.getReader(),w=new TextDecoder,h="",C=[],ne=a(()=>{if(C.length===0)return[];let y=C.join(`
|
|
2
|
+
import{a as he,b as ye,d as Ae,e as D}from"./chunk-4N4EH3RJ.js";import{a as L,b as ge,c as Pe,d as we,e as Oe}from"./chunk-HFJUXKT5.js";import{j as xe}from"./chunk-5ZBLCWEJ.js";import{d as N,e as E}from"./chunk-JCLTFDVW.js";import{E as ae,h as re}from"./chunk-BKEDG3A4.js";import{d as me}from"./chunk-OE22TAXP.js";import{a}from"./chunk-FTQLQJQV.js";var Le=new URL(E).hostname,be=new URL(N).hostname,$e=`${E}/opchat/v1`;function l(e){if(!e)return null;let t=e.trim();return t?t.replace(/\/+$/,""):null}a(l,"normalizeBaseUrl");function X(e){let t=l(e);if(!t)return null;try{let o=new URL(t).hostname.toLowerCase();if(o===Le)return E;if(o===be||o===`www.${be}`||o==="openpond.live"||o==="www.openpond.live")return E;if(o.startsWith("api."))return t}catch{return null}return null}a(X,"mapUiBaseToApiBase");function Y(e,t){let n=l(process.env.OPENPOND_API_URL);if(n)return n;let o=l(e?.apiBaseUrl);if(o)return o;let r=l(t.apiBaseUrl);if(r)return r;let s=X(process.env.OPENPOND_BASE_URL);return s||(X(e?.baseUrl||t.baseUrl)??E)}a(Y,"resolvePublicApiBaseUrl");function Q(e,t,n){return He(e,t,n)}a(Q,"resolveHostedChatApiBaseUrl");function He(e,t,n){let o=typeof process<"u"?process.env:{};return J(o.OPENPOND_OPCHAT_API_URL)??J(e?.chatApiBaseUrl??t.chatApiBaseUrl)??J(o.OPENPOND_CHAT_API_URL)??Me(n)}a(He,"resolveOpChatApiBaseUrl");function J(e){let t=l(e);if(!t)return null;try{let n=new URL(t),o=n.pathname.split("/").filter(Boolean),r=o.findIndex(i=>i.toLowerCase()==="opchat");return r>=0?(n.pathname=`/${[...o.slice(0,r+1),"v1"].join("/")}`,n.search="",n.hash="",l(n.toString())??null):o.findIndex(i=>i.toLowerCase()==="v1")>=0?(n.pathname="/opchat/v1",n.search="",n.hash="",l(n.toString())??null):(n.pathname=`${n.pathname.replace(/\/+$/,"")}/opchat/v1`.replace(/\/{2,}/g,"/"),n.search="",n.hash="",l(n.toString())??null)}catch{return null}}a(J,"normalizeOpChatApiBaseUrl");function Me(e){return J(e)??$e}a(Me,"opChatBaseFromPublicApiBase");function $(e){return e?.trim()?e.trim():"production"}a($,"deriveEnvironment");function Z(e,t=process.env){let n=[e?.apiKey,e?.session?.token,e?.token,t.OPENPOND_API_KEY];for(let o of n){let r=typeof o=="string"?o.trim():"";if(r)return r}return null}a(Z,"accountToken");function P(e,t){return!!(e&&t&&e.toLowerCase()===t.toLowerCase())}a(P,"handleEquals");function b(e,t){return l(e)===l(t)}a(b,"baseUrlEquals");function q(e,t){return`${e?.trim().toLowerCase()||""}|${l(t)??"default"}`}a(q,"profileKey");function ee(e){return l(e?.baseUrl)}a(ee,"selectorBaseUrl");function v(e){let t=l(e.baseUrl);return t?{handle:e.handle,baseUrl:t}:{handle:e.handle}}a(v,"selectorFromAccount");function A(e){let t=typeof e?.handle=="string"?e.handle.trim():"";if(!t)return null;let n=l(e?.baseUrl);return n?{handle:t,baseUrl:n}:{handle:t}}a(A,"normalizeActiveProfile");function U(e,t){if(!P(e.handle,t.handle))return!1;let n=ee(t);return n?b(e.baseUrl,n):!l(e.baseUrl)}a(U,"accountMatchesSelector");function se(e,t){if(!P(e.handle,t.handle))return!1;let n=ee(t);return n?b(e.baseUrl,n):!l(e.baseUrl)}a(se,"profileMatchesSelector");function Ue(e,t,n){let o=Array.isArray(e.accounts)?e.accounts:[],r=t||process.env.OPENPOND_ACCOUNT?A({handle:t||process.env.OPENPOND_ACCOUNT||"",baseUrl:n??process.env.OPENPOND_BASE_URL??null}):A(e.activeProfile);if(r){let s=o.find(c=>U(c,r));if(s)return s;let i=o.filter(c=>P(c.handle,r.handle));return i.length===1?i[0]??null:null}return o[0]?o[0]:null}a(Ue,"findActiveAccount");function ke(e){let t=Array.isArray(e.accounts)?e.accounts:[],n=A(e.activeProfile)??(t[0]?v(t[0]):null);return ie(t.map(o=>({handle:o.handle,baseUrl:l(o.baseUrl),apiBaseUrl:l(o.apiBaseUrl),chatApiBaseUrl:l(o.chatApiBaseUrl),environment:$(o.environment),isActive:n?U(o,n):!1,hasApiKey:!!o.apiKey?.trim(),hasSessionToken:!!(o.session?.token?.trim()||o.token?.trim()),sessionAppId:o.session?.appId??null,sessionConversationId:o.session?.conversationId??null})))}a(ke,"fallbackProfilesFromConfig");function ie(e){let t=new Map;for(let n of e){let o=l(n.baseUrl),r=`${n.handle.toLowerCase()}|${o??"default"}`,s={...n,baseUrl:o,apiBaseUrl:l(n.apiBaseUrl),chatApiBaseUrl:l(n.chatApiBaseUrl),environment:$(n.environment),isActive:n.isActive},i=t.get(r);(!i||s.isActive&&!i.isActive||s.hasApiKey&&!i.hasApiKey)&&t.set(r,s)}return Array.from(t.values())}a(ie,"normalizeProfiles");function Ee(e){return e.hasApiKey||e.hasSessionToken?"signed_in":"signed_out"}a(Ee,"profileAuthHealth");function ze(e,t){return e?{reachable:e.reachable,authenticated:e.authenticated,apiBase:e.apiBase||t,latencyMs:e.latencyMs,status:e.status,service:e.service,checkedAt:e.checkedAt,error:e.error??null}:null}a(ze,"normalizeHealth");function Be(e){let t=e?.account;return t?{id:t.id??null,email:t.email??null,name:t.name??null,handle:t.handle??null,image:t.image??null,timezone:t.timezone??null,isAdmin:t.isAdmin??null,isVerified:t.isVerified??null,dailyAgentAppId:t.dailyAgentAppId??null,dailyAgentDeploymentId:t.dailyAgentDeploymentId??null,credits:t.credits??null}:null}a(Be,"normalizeProfile");function Fe(e){return(e??[]).map(t=>({...t,id:t.id||t.userProductId||t.openPondProductId||t.name,name:t.name,type:t.type,status:t.status,isActive:t.isActive??null,price:t.price??null,currency:t.currency??null,credits:t.credits??null}))}a(Fe,"normalizeProducts");function je(e){return e.handle.trim().toLowerCase()==="default"&&!l(e.baseUrl)&&!e.hasApiKey&&!e.hasSessionToken}a(je,"isEmptyDefaultProfile");function Ke(e){let t=e?.trim();return t?t.length>=12?`\u2022\u2022\u2022\u2022\u2022\u2022${t.slice(-6)}`:"\u2022\u2022\u2022\u2022\u2022\u2022":null}a(Ke,"apiKeyHint");function qe(e){return e?.auth?.authType!=="openpond-api-key"||!e.auth.keyAccess?null:{ownerType:e.auth.keyAccess.ownerType,teamId:e.auth.keyAccess.teamId,scopes:e.auth.scopes}}a(qe,"apiKeyAccess");function H(e){let{config:t,profiles:n,account:o,token:r,apiBaseUrl:s,accountResponse:i,accountProfiles:c,health:m,authFailed:g,error:f}=e,w=Q(o,t,s),h=Be(i??null),C=A(t.activeProfile),_=(o?v(o):null)??C,O=h?.handle||o?.handle||_?.handle||null,I=(_?n.find(p=>se(p,_)):null)??n.find(p=>p.isActive)??null,y=g?"auth_error":r?"signed_in":"signed_out",d=h?.name||h?.handle||h?.email||O||"Signed out",R=l(I?.baseUrl||o?.baseUrl||N),k=$(I?.environment||o?.environment),x=A(_)??(O?A({handle:O,baseUrl:I?.baseUrl??o?.baseUrl}):null),j=(n.length>0?n:O?[{handle:O,baseUrl:ee(x)??l(o?.baseUrl),apiBaseUrl:s,chatApiBaseUrl:w,environment:k,isActive:!0,hasApiKey:!!r,hasSessionToken:!1,sessionAppId:null,sessionConversationId:null}]:[]).filter(p=>!je(p));return{state:y,activeProfile:x,label:d,email:h?.email??null,avatarUrl:h?.image??null,environment:k,baseUrl:R,apiBaseUrl:s,chatApiBaseUrl:w,creditsLabel:h?.credits??null,profile:h,products:Fe(i?.products),apiHealth:ze(m??null,s),accounts:j.map(p=>{let T=l(p.baseUrl),De=t.accounts?.find(fe=>P(fe.handle,p.handle)&&b(fe.baseUrl,T)),oe=c?.[q(p.handle,T)]??null,K=Be(oe?.response??null);return{handle:p.handle,baseUrl:T,apiBaseUrl:l(p.apiBaseUrl),chatApiBaseUrl:l(p.chatApiBaseUrl),environment:$(p.environment),isActive:x?se(p,x):!1,authHealth:oe?.authFailed?"auth_error":Ee(p),displayLabel:K?.name||K?.handle||K?.email||p.handle,email:K?.email??null,avatarUrl:K?.image??null,apiKeyHint:Ke(De?.apiKey),apiKeyAccess:qe(oe?.response??null)}}),error:f??m?.error??null}}a(H,"toAccountState");async function Ge(e){try{return ie(await Pe())}catch{return ke(e)}}a(Ge,"loadProfiles");async function u(e,t){let n=await ge(),o=await Ge(n),r=Ue(n,e,t),s=Z(r),i=Y(r,n),c=Q(r,n,i);return{config:n,profiles:o,account:r,token:s,apiBaseUrl:i,chatApiBaseUrl:c,accountState:H({config:n,profiles:o,account:r,token:s,apiBaseUrl:i})}}a(u,"loadOpenPondAccountContext");async function We(e){let t=l(e.baseUrl);return await we(e.handle,{baseUrl:t}),u(e.handle,t)}a(We,"switchOpenPondAccount");import{randomUUID as Ve}from"node:crypto";function M(e){return e instanceof Error?e.message:String(e)}a(M,"errorMessage");var Je=15e3;function Xe(e){return e===ae?"OpenPond Chat":e==="deepseek-v4-flash"?"DeepSeek V4 Flash":e.replace(/[-_/]+/g," ")}a(Xe,"displayNameForHostedModel");function Ye(e){let t=typeof e.id=="string"?e.id:null;return t?{id:t,displayName:Xe(t),ownedBy:typeof e.owned_by=="string"?e.owned_by:null,streaming:!0,raw:e}:null}a(Ye,"normalizeHostedModel");async function Qe(){let e=await u();if(!e.token)return{models:[],error:"No OpenPond API key or session token is configured."};try{return{models:(await tt({apiBaseUrl:e.chatApiBaseUrl,token:e.token})).data.map(o=>Ye(o)).filter(o=>!!o),error:null}}catch(t){return{models:[],error:M(t)}}}a(Qe,"loadOpenPondHostedModels");async function Ze(){let e=await u();if(!e.token)return{catalog:null,error:"No OpenPond API key or session token is configured."};let t=new AbortController,n=setTimeout(()=>{t.abort(new Error("OpenPond provider catalog request timed out."))},Je);try{return{catalog:await Se({apiBaseUrl:e.chatApiBaseUrl,token:e.token,signal:t.signal}),error:null}}catch(o){return{catalog:null,error:M(o)}}finally{clearTimeout(n)}}a(Ze,"loadOpenPondProviderCatalog");async function*et(e){let t=await u();if(!t.token)throw new Error("OpenPond is signed out. Add an account in Settings before using OpenPond Chat.");yield*Ce({apiBaseUrl:t.chatApiBaseUrl,token:t.token,model:e.model||ae,messages:e.messages,tools:e.tools,toolChoice:e.toolChoice,requestId:e.requestId,reasoningEffort:e.reasoningEffort,maxTokens:e.maxTokens,temperature:e.temperature,topP:e.topP,signal:e.signal})}a(et,"streamOpenPondHostedChatTurn");async function tt(e){let t=le(e.apiBaseUrl,"models"),n=await fetch(t,{method:"GET",headers:ce(e.token,"application/json"),signal:e.signal});if(!n.ok)throw new Error(`OpenPond OpChat model list failed: ${n.status} ${await ue(n)}`);return await n.json()}a(tt,"listOpChatModels");async function Se(e){let t=le(e.apiBaseUrl,"provider-catalog"),n=await fetch(t,{method:"GET",headers:ce(e.token,"application/json"),signal:e.signal});if(!n.ok)throw new Error(`OpenPond OpChat provider catalog failed: ${n.status} ${await ue(n)}`);let o=await n.json();return!o||typeof o!="object"||!Array.isArray(o.providers)?re.parse(o):re.parse({...o,providers:o.providers.filter(r=>r!==null&&typeof r=="object"&&me.safeParse(r.id).success)})}a(Se,"listOpChatProviderCatalog");async function*Ce(e){let t=le(e.apiBaseUrl,"chat/completions"),n=await fetch(t,{method:"POST",headers:ce(e.token,"text/event-stream",e.requestId),body:JSON.stringify(it(e,!0)),signal:e.signal});if(!n.ok)throw new Error(`OpenPond OpChat request failed: ${n.status} ${await ue(n)}`);if(!n.body)throw new Error("OpenPond OpChat request failed: streaming response body is missing.");let o=new Map,r=!1,s=null,i={},c="",m=null,g=nt(n.headers),f=n.body.getReader(),w=new TextDecoder,h="",C=[],ne=a(()=>{if(C.length===0)return[];let y=C.join(`
|
|
3
3
|
`);if(C=[],y==="[DONE]")return r=!0,[];let d;try{d=JSON.parse(y)}catch{throw new Error("OpenPond OpChat request failed: malformed streaming event.")}if(d&&typeof d=="object"&&"error"in d)throw new Error(`OpenPond OpChat request failed: ${Ie(d)}`);i=d;let R=d&&typeof d=="object"?d:{},k=Array.isArray(R.choices)?R.choices:[],x=k[0]&&typeof k[0]=="object"?k[0]:{},V=x.delta&&typeof x.delta=="object"?x.delta:{},j=[],p=ve(V.reasoning_content);p&&(c+=p,j.push({type:"reasoning_delta",text:p,raw:d}));let T=ve(V.content);return T&&j.push({type:"text_delta",text:T,raw:d}),at(o,V.tool_calls),s=z(x.finish_reason)??s,m=ut(d)??m,j},"consumeEvent"),_=a(y=>{let d=y.endsWith("\r")?y.slice(0,-1):y;return d?d.startsWith(":")?[]:(d.startsWith("data:")&&C.push(d.slice(5).trimStart()),[]):ne()},"consumeLine");try{for(;;){let y=await f.read();if(y.done)break;h+=w.decode(y.value,{stream:!0});let d=h.split(`
|
|
4
4
|
`);h=d.pop()??"";for(let R of d)for(let k of _(R))yield k}if(h+=w.decode(),h)for(let y of _(h))yield y;for(let y of ne())yield y}finally{f.releaseLock()}if(!r)throw new Error("OpenPond OpChat request failed: stream ended before [DONE].");let O=st(o);O.length>0&&(yield{type:"tool_call_delta",toolCalls:O,raw:i}),O.length>0&&c&&(yield{type:"continuation",continuation:{kind:"chat_completions_reasoning",reasoningContent:c},raw:i});let I=ot(m,g);I&&(yield{type:"usage",usage:I,raw:i}),yield{type:"finish",finishReason:s,raw:i}}a(Ce,"streamOpChatChatCompletion");function nt(e){let t=_e(e,["fireworks-prompt-tokens","prompt-tokens"]),n=_e(e,["fireworks-cached-prompt-tokens","cached-prompt-tokens"]);return n===null?null:{...t===null?{}:{prompt_tokens:t},cached_input_tokens:n,cache_telemetry_source:"provider_response_headers"}}a(nt,"cacheUsageFromResponseHeaders");function _e(e,t){for(let n of t){let o=e.get(n);if(o===null||!/^\d+$/.test(o.trim()))continue;let r=Number(o);if(Number.isSafeInteger(r)&&r>=0)return r}return null}a(_e,"firstHeaderTokenCount");function ot(e,t){if(!t||rt(e))return e;let n={...e??{},cached_input_tokens:t.cached_input_tokens,cache_telemetry_source:"provider_response_headers"};return B(e?.prompt_tokens)===null&&t.prompt_tokens!==void 0&&(n.prompt_tokens=t.prompt_tokens),n}a(ot,"usageWithResponseHeaderCache");function rt(e){return e?B(e.cached_input_tokens)!==null||B(e.cache_read_input_tokens)!==null||B(e.cache_creation_input_tokens)!==null||B(e.prompt_cache_hit_tokens)!==null||B(e.prompt_cache_miss_tokens)!==null?!0:B(e.prompt_tokens_details?.cached_tokens)!==null||B(e.input_tokens_details?.cached_tokens)!==null:!1}a(rt,"usageHasCacheTelemetry");function B(e){if(typeof e=="number"&&Number.isSafeInteger(e)&&e>=0)return e;if(typeof e!="string"||!/^\d+$/.test(e.trim()))return null;let t=Number(e);return Number.isSafeInteger(t)?t:null}a(B,"usageTokenCount");function at(e,t){Array.isArray(t)&&t.forEach((n,o)=>{if(!n||typeof n!="object")return;let r=n,s=typeof r.index=="number"&&Number.isInteger(r.index)?r.index:o,i=e.get(s)??{arguments:""};typeof r.id=="string"&&(i.id=r.id);let c=r.function&&typeof r.function=="object"?r.function:{};typeof c.name=="string"&&(i.name=`${i.name??""}${c.name}`),typeof c.arguments=="string"&&(i.arguments+=c.arguments),e.set(s,i)})}a(at,"mergeOpChatToolCallDeltas");function st(e){return[...e.entries()].sort(([t],[n])=>t-n).flatMap(([,t])=>t.id&&t.name?[{id:t.id,type:"function",function:{name:t.name,arguments:t.arguments}}]:[])}a(st,"completedOpChatToolCalls");function it(e,t){let n={model:e.model,messages:e.messages.map(ct),stream:t};return e.tools&&(n.tools=e.tools),e.toolChoice!==void 0&&(n.tool_choice=e.toolChoice),typeof e.maxTokens=="number"&&(n.max_tokens=e.maxTokens),typeof e.temperature=="number"&&(n.temperature=e.temperature),typeof e.topP=="number"&&(n.top_p=e.topP),Object.assign(n,lt(e.reasoningEffort)),n}a(it,"buildOpChatBody");function lt(e){return e?e==="off"?{thinking:{type:"disabled"}}:{thinking:{type:"enabled"},reasoning_effort:e}:{}}a(lt,"opChatReasoningFields");function ct(e){let{continuation:t,images:n,...o}=e,r=n?.length?[...typeof e.content=="string"&&e.content.trim()?[{type:"text",text:e.content}]:[],...n.map(s=>({type:"image_url",image_url:{url:s.url,...s.detail?{detail:s.detail}:{}}}))]:e.content;return e.role==="assistant"&&t?.kind==="chat_completions_reasoning"?{...o,...r!==void 0?{content:r}:{},reasoning_content:t.reasoningContent}:{...o,...r!==void 0?{content:r}:{}}}a(ct,"opChatMessage");function le(e,t){let n=e.trim().replace(/\/+$/,"");if(!n)throw new Error("OpenPond OpChat API base URL is required.");return`${n}/${t}`}a(le,"opChatEndpointUrl");function ce(e,t,n){let o=e.trim();if(!o)throw new Error("OpenPond API key is required for OpChat.");let r=new Headers;r.set("Authorization",`Bearer ${o}`),r.set("Content-Type","application/json"),r.set("Accept",t),r.set("x-openpond-client","openpond-app");let s=n||Ve();return r.set("x-openpond-request-id",s),r.set("x-request-id",s),r}a(ce,"opChatHeaders");async function ue(e){let t=await e.text().catch(()=>"");if(!t)return e.statusText||`HTTP ${e.status}`;try{return Ie(JSON.parse(t))}catch{return t}}a(ue,"readOpChatError");function Ie(e){if(!e||typeof e!="object")return String(e||"unknown_error");let t=e,n=t.error;if(n&&typeof n=="object"){let o=n;return[z(o.code),z(o.type),z(o.message)].filter(Boolean).join(": ")}return[z(t.error),z(t.message)].filter(Boolean).join(": ")||JSON.stringify(e)}a(Ie,"errorMessageFromPayload");function ut(e){if(!e||typeof e!="object")return null;let t=e.usage;return!t||typeof t!="object"?null:t}a(ut,"parseUsage");function z(e){return typeof e=="string"&&e.trim()?e:null}a(z,"stringValue");function ve(e){return typeof e=="string"&&e.length>0?e:null}a(ve,"streamTextValue");import{readFileSync as dt}from"node:fs";var G;function pt(){if(G!==void 0)return G??"openpond-code bundled";try{let e=new URL("../package.json",import.meta.resolve("openpond")),t=JSON.parse(dt(e,"utf8"));G=typeof t.version=="string"?`openpond-code@${t.version}`:null}catch{G=null}return G??"openpond-code bundled"}a(pt,"getBundledRuntimeVersion");function ft(e,t){let n="",o=a(r=>{r.startsWith(e)&&t(JSON.parse(r.slice(e.length)))},"processLine");return{push(r){for(n+=r;;){let s=mt(n);if(s<0)return;let i=n.slice(0,s).replace(/\r$/,""),c=n[s]==="\r"&&n[s+1]===`
|
|
5
5
|
`?2:1;n=n.slice(s+c),o(i)}},flush(){let r=n.trimEnd();n="",r&&o(r)}}}a(ft,"createReadyLineParser");function mt(e){let t=e.indexOf(`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import{a as v}from"./chunk-KVTBX2UP.js";import{d as c}from"./chunk-
|
|
2
|
+
import{a as v}from"./chunk-KVTBX2UP.js";import{d as c}from"./chunk-557XSPVS.js";import{h as m,j as d}from"./chunk-PWK5Z5S3.js";import{a as n}from"./chunk-FTQLQJQV.js";function k(e){return e.state==="planning"&&!e.plan}n(k,"shouldRunCreateImprovePlanner");function y(e){return e==="approved"?"accepted":e==="rejected"?"declined":e==="cancelled"?"cancelled":"pending"}n(y,"approvalStatusForPlan");function g(e){let t=e.run.plan;return{id:t?.approvalId??`approval_${e.run.id}`,sessionId:e.session.id,turnId:e.turn.id,providerRequestId:e.run.id,kind:"create_plan",title:`${e.run.operation==="improve"?"Approve improvement plan":"Approve creation plan"}: ${e.run.objective}`,detail:JSON.stringify({runId:e.run.id,revision:e.run.revision,planId:t?.id??null,target:e.run.target,objective:e.run.objective,summary:t?.summary??null,sourcePlan:t?.sourcePlan??[],requirements:t?.requirements??[],checks:t?.checks??[],workflowCaptureId:e.run.workflowCapture?.id??null},null,2),status:e.status,createdAt:e.existing?.createdAt??e.run.createdAt}}n(g,"createImprovePlanApproval");function h(e,t){if(e.id!==t.runId)throw new Error("Create/Improve action targets another run.");if(e.appliedActionIds.includes(t.actionId))return e;let a=c();if(t.type==="approve_plan"){if(e.state!=="awaiting_plan_approval"||!e.plan)throw new Error("Create/Improve plan is not ready for approval.");return d(e,{state:e.target.kind==="model"?"evaluating":"applying_source",plan:{...e.plan,status:"approved",approvedAt:e.plan.approvedAt??a,updatedAt:a},blockedReason:null,updatedAt:a},t.actionId)}if(t.type==="cancel"){if(!e.executionPolicy.cancellationAllowed)throw new Error("This Create/Improve run cannot be cancelled.");let r=t.reason?.trim()||"Cancelled before completion.";return d(e,{state:"cancelled",plan:e.plan?{...e.plan,status:"cancelled",approvedAt:null,metadata:{...e.plan.metadata,cancellationReason:r},updatedAt:a}:null,blockedReason:r,metadata:{...e.metadata,cancellationReason:r},updatedAt:a},t.actionId)}if(t.type==="revise_plan"){if(e.state!=="awaiting_plan_approval"||!e.plan)throw new Error("Create/Improve plan is not ready for revision.");let r=e.plan;return d(e,{state:"awaiting_plan_approval",plan:{...r,id:`create_improve_plan_${crypto.randomUUID()}`,status:"pending_approval",summary:`${r.summary}
|
|
3
3
|
|
|
4
4
|
Revision requested: ${t.revision}`,sourcePlan:r.sourcePlan.map(o=>({...o,reason:`${o.reason} Revision requested: ${t.revision}`})),approvedAt:null,editedFromPlanId:r.id,metadata:{...r.metadata,revision:t.revision,supersedesPlanId:r.id},createdAt:a,updatedAt:a},metadata:{...e.metadata,previousPlanId:r.id},updatedAt:a},t.actionId)}if(t.type==="answer_question"){if(e.state!=="awaiting_questions")throw new Error("Create/Improve run is not waiting for questions.");let r=e.questions.find(p=>p.id===t.questionId);if(!r||r.status!=="pending")throw new Error("Create/Improve question is no longer pending.");let o=r.options.find(p=>p.value===t.value),i=e.questions.map(p=>p.id===t.questionId?{...p,status:"answered",answer:{value:t.value,label:o?.label??null,detail:null,answeredAt:a,metadata:{}}}:p),s=i.some(p=>p.required&&p.status==="pending");return d(e,{state:s?"awaiting_questions":"planning",questions:i,plan:null,blockedReason:null,updatedAt:a},t.actionId)}if(t.type==="open_pull_request"||t.type==="apply_candidate"){let r=t.type==="apply_candidate"&&e.state==="blocked"&&!!e.localProfileCommit;if(e.state!=="awaiting_promotion"&&!r)throw new Error("Create/Improve candidate is not awaiting promotion.");let o=u(e,t.candidateId);if(o.status!=="evaluated"||!o.git?.headCommit)throw new Error("Create/Improve candidate must be committed and evaluated before it can be applied.");if(e.tasksetRef&&(o.tasksetRef?.id!==e.tasksetRef.id||o.tasksetRef.revision!==e.tasksetRef.revision||o.tasksetRef.contentHash!==e.tasksetRef.contentHash))throw new Error("Create/Improve candidate is not linked to the exact approved Taskset revision.");let i=e.evaluationReceipts.filter(s=>s.candidateId===o.id&&s.subject==="candidate");if(i.length===0||i.some(s=>s.status!=="passed"||s.publishGate==="failed"))throw new Error("Create/Improve candidate requires passing Eval receipts before it can be applied.");if(e.tasksetRef&&i.some(s=>s.tasksetId!==e.tasksetRef.id||s.tasksetHash!==e.tasksetRef.contentHash||s.metadata.trustedTasksetExecution!==!0||typeof s.metadata.executionContractHash!="string"))throw new Error("Create/Improve candidate requires a trusted receipt for the exact approved Taskset revision.");return d(e,{state:t.type==="apply_candidate"?"reconciling_release":"opening_pull_request",releaseOutcome:{...e.releaseOutcome,status:"pending",updatedAt:a},blockedReason:null,metadata:{...e.metadata,releaseAction:{type:t.type,candidateId:o.id,requestedAt:a}},updatedAt:a},t.actionId)}if(t.type==="reconcile_pull_request"){if(!["pull_request_open","blocked"].includes(e.state))throw new Error("Create/Improve run has no open PR to reconcile.");let r=u(e,t.candidateId);if(!r.git?.pullRequest)throw new Error("Create/Improve candidate has no PR to reconcile.");if(e.state==="blocked"&&r.git.pullRequest.state!=="merged")throw new Error("Only a merged PR with failed verification can be reconciled from a blocked run.");return d(e,{state:"reconciling_release",blockedReason:null,metadata:{...e.metadata,releaseAction:{type:t.type,candidateId:r.id,requestedAt:a}},updatedAt:a},t.actionId)}if(t.type==="reject_candidate"){if(!["awaiting_promotion","pull_request_open"].includes(e.state))throw new Error("Create/Improve candidate is not available for rejection.");let r=u(e,t.candidateId),o=t.reason?.trim()||"Candidate rejected.";return r.git?.pullRequest?d(e,{state:"reconciling_release",blockedReason:null,metadata:{...e.metadata,releaseAction:{type:t.type,candidateId:r.id,reason:o,requestedAt:a}},updatedAt:a},t.actionId):d(e,{state:"rejected",candidates:e.candidates.map(i=>i.id===r.id?{...i,status:"rejected",updatedAt:a}:i),releaseOutcome:{...e.releaseOutcome,status:"rejected",updatedAt:a},blockedReason:o,metadata:{...e.metadata,releaseAction:{type:t.type,candidateId:r.id,reason:o,completedAt:a}},updatedAt:a},t.actionId)}if(t.type==="pause"){if(!e.executionPolicy.pauseAllowed)throw new Error("This Create/Improve run cannot be paused.");if(["ready","ready_local","published_hosted","cancelled"].includes(e.state))throw new Error("Completed Create/Improve runs cannot be paused.");return d(e,{state:"paused",metadata:{...e.metadata,pausedFromState:e.state,pausedAt:a},updatedAt:a},t.actionId)}let l=I(e);return d(e,{state:l,metadata:{...e.metadata,resumedAt:a},updatedAt:a},t.actionId)}n(h,"applyCreateImproveRunAction");function u(e,t){let a=e.candidates.find(l=>l.id===t);if(!a)throw new Error(`Create/Improve candidate not found: ${t}`);return a}n(u,"requireRunCandidate");function A(e,t){if(e.state!=="applying_source"||e.plan?.status!=="approved"||e.adapter.kind==="local")return e;let a=v({session:t}),l=e.adapter.kind;return d(e,{state:"blocked",blockedReason:l==="hosted"?"Approved hosted Create/Improve plans from this chat require the Cloud work item background flow. No local source mutation was performed.":"Approved Profile promotion requires an explicit Cloud promotion flow. No local source mutation was performed.",metadata:{...e.metadata,createImproveApproval:{status:"blocked",reason:l==="hosted"?"hosted_create_improve_apply_not_configured":"promote_local_to_hosted_apply_not_configured",adapterKind:l,workspaceExecutionTarget:f(a)}},updatedAt:c()})}n(A,"createPlanExecutionRunForApprovedAdapter");function f(e){return e.target==="sandbox"?{target:e.target,ready:e.ready,workspaceKind:e.workspaceKind,workspaceId:e.workspaceId,sandboxId:e.sandboxId,cloudProjectId:e.cloudProjectId,localProjectId:e.localProjectId,hybrid:e.hybrid,reason:e.reason}:e.target==="local"?{target:e.target,ready:e.ready,workspaceKind:e.workspaceKind,workspaceId:e.workspaceId,localProjectId:e.localProjectId,cwd:e.cwd,reason:e.reason}:{target:e.target,ready:e.ready,workspaceKind:e.workspaceKind,workspaceId:e.workspaceId,reason:e.reason}}n(f,"createImproveExecutionTargetMetadata");function C(e){return["awaiting_questions","awaiting_plan_approval","awaiting_promotion","pull_request_open","paused"].includes(e.state)?"pending":["applying_source","running_checks","evaluating","opening_pull_request","reconciling_release","pushing_hosted","running_hosted_checks"].includes(e.state)?"started":["rejected","blocked","failed","cancelled"].includes(e.state)?"failed":"completed"}n(C,"createImproveRuntimeEventStatus");function b(e,t){return d(e,{state:"blocked",blockedReason:t,metadata:{...e.metadata,localCreateImprove:{status:"blocked",reason:"local_create_improve_background_apply_failed"}},updatedAt:c()})}n(b,"createImproveBackgroundFailureRun");function q(e){return e.mentionedApps,e.userPrompt,e.request}n(q,"normalizeMentionedSandboxToolRequest");function P(e,t){return{...e,metadata:{...e.metadata??{},createImproveRun:t},createImproveRun:t}}n(P,"withCreateImproveRun");function I(e){if(e.state!=="paused")throw new Error("Create/Improve run cannot be resumed.");let t=m.shape.state.safeParse(e.metadata.pausedFromState);return!t.success||t.data==="paused"?"planning":t.data}n(I,"resumeStateFromMetadata");export{k as a,y as b,g as c,h as d,A as e,C as f,b as g,q as h,P as i};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
+
import{B as Je,l as X,o as ze,p as Ge,t as Ne,u as We,z as me}from"./chunk-TW3SRBLU.js";import{$ as J,J as ke,Jb as we,L as Ce,Lb as Ke,Nb as Xe,Q as qe,S as Fe,T as ie,Y as Le,_ as W,a as Ae,aa as ce,ba as Ve,c as $e,ca as Oe,d as z,e as oe,ga as de,ha as C,ia as K,la as Z,ta as N,x as je,za as ge}from"./chunk-PGO4FRHU.js";import{h as re,l as G,m}from"./chunk-VNJAAYNQ.js";import{n as Be}from"./chunk-LV3CQ72P.js";import{ha as _e,ja as De}from"./chunk-ABF3W2MO.js";import{B as ne,D as Ie,N as x,O as q,P as I,Q as Pe,b as se,ba as U,d as Ee,lb as he,mb as ve,n as O,nb as Me,o as Y,r as F,v as ae,y as Q}from"./chunk-4M3YW3EQ.js";import{Da as te,Ra as Te,Va as Se,Wa as xe,Xa as ye,Ya as He,t as j}from"./chunk-PBZCXPPC.js";import{A as T}from"./chunk-PF56N7ZY.js";import{a as S}from"./chunk-FTQLQJQV.js";var pe=Y.shape.id,Ye=T.object({schemaVersion:T.literal("openpond.modelBatchReviewInspection.v1"),packageHash:T.string().regex(/^[a-f0-9]{64}$/),definition:F,binding:Te,evidence:T.array(Q).min(1).max(1e4),decisions:T.array(Ie).min(1).max(1e4)}).strict(),Re=T.object({schemaVersion:T.literal("openpond.modelBatchReviewRequest.v1"),operationId:pe,modelId:pe,expectedModelRevision:T.number().int().positive(),tasksetRef:Y,rewardBindingRef:Y.nullable(),definition:T.object({name:T.string().trim().min(1).max(500).optional(),instructions:T.string().trim().min(1).max(2e4).optional(),inputSchema:O.optional(),outputSchema:O.optional(),requiredOutputs:F.shape.requiredOutputs}).strict(),examples:T.array(T.object({evidence:Y,input:O.optional(),expected:O.nullable().optional(),evaluatorContext:O.nullable().optional(),proposedTarget:O.nullable().optional()}).strict()).max(1e4)}).strict(),Qe=T.object({schemaVersion:T.literal("openpond.modelBatchReviewReceipt.v1"),operationId:pe,modelId:pe,source:ae,evidence:T.array(Q).min(1).max(1e4),proposals:T.array(ne).max(1e4)}).strict();function rt(t){let e=C(t.source),s=C(t.edited),a=t.preparation;if(a.authoringGraph!=="bound"||!e.modelResources||e.learningResources||s.modelResources||s.learningResources)throw new Error("Bound task editing requires its source Reward and an ordinary edited workspace.");if(e.contentHash!==a.sourcePackageHash||!q(x(e.taskset),a.sourceTasksetRef))throw new Error("Bound draft differs from its retained source package.");let i=S(b=>b.taskset.graders.map(P=>P.kind==="custom_verifier"?{...P,exportName:P.exportName??"verify"}:P),"normalizedGraders");if(m(i(e))!==m(i(s)))throw new Error("Edit the saved Reward in Rewards before changing this Taskset's graders.");let c=e.modelResources,l=new Map(c.assets.map(b=>[b.id,b])),o=J(s),u=J(e),h=S(b=>{let{id:P,revision:fe,contentHash:le,metadata:ue,...ot}=b,{javascriptEnvironment:kt,...be}=ue;return{...ot,metadata:{...be,resources:be.resources??[]}}},"environmentContent"),r=S(b=>{if(!b)return null;let{id:P,revision:fe,contentHash:le,...ue}=b.execution.javascript;return ue},"javascriptContent"),R=m(h(e.environment))===m(h(s.environment))&&m(r(u))===m(r(o)),g=R?e.environment:s.environment,f=R?u:o,p=new Set([...c.assets.map(b=>b.id),...s.taskset.tasks.flatMap(b=>b.privilegedContextRef?[b.privilegedContextRef]:[]),...[s.environment.actionSchemaRef,s.environment.observationSchemaRef,s.environment.stateSchemaRef].flatMap(b=>b?[b.id]:[]),...o?.assets.map(b=>b.id)??[]]),M=new Set([...p,...s.taskset.tasks.flatMap(b=>[...b.artifactRefs.map(P=>P.id),...(b.requiredOutputs??[]).flatMap(P=>P.schemaRef?[P.schemaRef.id]:[])])]),A=it(e,s,M);for(let b of p){let P=A.find(le=>le.asset.id===b);if(!P)throw new Error(`Bound Taskset asset is missing: ${b}.`);let fe=new TextDecoder("utf-8",{fatal:!0}).decode(W(P));l.set(b,se.parse(I({schemaVersion:"openpond.learningTextAsset.v1",id:b,revision:1,asset:P.asset,text:fe})))}let E=de(s),{contentHash:w,...H}=c.taskDefinition,{policy:D,environment:V,environmentRelease:_,tools:d,capabilities:k,verifierSetRelease:y}=s.taskset,n=F.parse(I({...H,instructions:E,execution:{policy:D,environment:V,environmentRelease:_,tools:d,capabilities:k,verifierSetRelease:y}})),{contentHash:v,...B}=s.taskset,$=te.parse(I({...B,tasks:s.taskset.tasks.map(b=>c.instructionMode==="per_task"?b:{...b,policyVisibleContext:{...b.policyVisibleContext,instructions:E}})})),L=ie({owner:a.lineage.owner,source:{...c,taskset:e.taskset,executionResources:{environment:e.environment,verifierSet:e.verifierSet}},rewardBinding:c.rewardBinding,rewards:c.rewards,assets:[...l.values()],edits:{taskset:$,taskDefinition:n,executionResources:{environment:g,verifierSet:s.verifierSet},...f?{execution:f.execution}:{}}}),tt=qe.parse(L.taskset.metadata.modelTasksetDerivation);if(L.taskset.id!==a.tasksetId||L.taskset.revision!==a.tasksetRevision||m({...tt,schemaVersion:a.lineage.schemaVersion})!==m(a.lineage))throw new Error("Bound draft differs from its retained ownership lineage.");let{taskset:st,executionResources:at,...nt}=L;return K({schemaVersion:"openpond.tasksetPackage.v1",taskset:st,...at,modelResources:nt,files:A})}S(rt,"publishBoundModelTasksetDraftPackage");function it(t,e,s){let a=e.files,i=new Map(t.files.map(o=>[o.asset.id,{file:o,assetHash:m(o.asset)}])),c=S(o=>{let u=i.get(o.asset.id);return u!==void 0&&u.file.base64===o.base64&&u.assetHash===m(o.asset)},"isSourceFile"),l=t.files.filter(o=>X(o.asset.path)).map(o=>{let u=`source-artifact-${m({packageHash:t.contentHash,assetId:o.asset.id})}`;return{original:o,asset:{...o.asset,id:u,path:`source-artifacts/${t.contentHash}/${m(o.asset.path)}/${o.asset.path.split("/").at(-1)}`}}});for(let{original:o,asset:u}of l){let h=l.filter(f=>m({...f.original.asset,id:o.asset.id})===m(o.asset)),R=e.files.find(f=>f.asset.id===u.id)??h.flatMap(f=>e.files.filter(p=>m(p.asset)===m(f.asset)))[0];if(!R||R.base64!==o.base64||!h.some(f=>m(f.asset)===m(R.asset)))throw new Error(`Retained Taskset source artifact differs from its original bytes: ${o.asset.id}.`);let g=a.filter(f=>f.asset.path===o.asset.path||f.asset.id===o.asset.id);if(g.some(f=>f.asset.path!==o.asset.path||f.asset.id!==o.asset.id&&f.asset.id!==`taskset-file-${m(o.asset.path)}`&&!c(f)))throw new Error(`Retained Taskset source artifact conflicts with an authored file: ${o.asset.id}.`);a=[...a.filter(f=>f.asset.id!==u.id&&f.asset.id!==o.asset.id&&(!g.includes(f)||c(f))),o]}for(let o of t.files.filter(u=>!a.some(h=>h.asset.id===u.asset.id))){if(o.asset.path==="environment/execution.json"){let r=ke.safeParse(JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(W(o))));if(r.success&&m(ce(r.data))===m(o))continue}let u=a.filter(r=>r.asset.path===o.asset.path),h=S(r=>m({...r.asset,id:o.asset.id})===m(o.asset)&&r.base64===o.base64,"sameEnvelope");if(s.has(o.asset.id)||!u.length||u.some(r=>!h(r)))throw new Error(`Retained Taskset source alias differs from its original bytes: ${o.asset.id}.`);a=[...a,o]}return a}S(it,"retainSourceFileIdentities");function Bt(t){let e=$e.parse(t.request),s=Ae.parse(t.owner),a=C(t.source);if(a.learningResources)throw new Error("Reviewed Tasksets require their reviewed authoring workflow.");if(a.contentHash!==e.sourcePackageHash)throw new Error("Taskset draft source package changed.");if(a.modelResources){let u=Fe({owner:s,source:{...a.modelResources,taskset:a.taskset,executionResources:{environment:a.environment,verifierSet:a.verifierSet}},rewardBinding:a.modelResources.rewardBinding,rewards:a.modelResources.rewards,assets:a.modelResources.assets}),h=u.taskset.metadata.modelTasksetDerivation;return z.parse({schemaVersion:"openpond.modelTasksetDraftPreparation.v1",draftId:`model-taskset-draft-${m({owner:s,operationId:e.operationId})}`,requestHash:m(e),sourcePackageHash:a.contentHash,sourceTasksetRef:x(a.taskset),tasksetId:u.taskset.id,tasksetRevision:u.taskset.revision,lineage:{...h,schemaVersion:"openpond.modelTasksetAuthoring.v1"},authoringGraph:"bound"})}let i=Oe(a.taskset),c=i&&m(i.owner)===m(s),l=c?i.root:x(a.taskset),o={schemaVersion:"openpond.modelTasksetAuthoring.v1",owner:s,root:l,parent:x(a.taskset)};return z.parse({schemaVersion:"openpond.modelTasksetDraftPreparation.v1",draftId:`model-taskset-draft-${m({owner:s,operationId:e.operationId})}`,requestHash:m(e),sourcePackageHash:a.contentHash,sourceTasksetRef:x(a.taskset),tasksetId:Ve(o),tasksetRevision:c?a.taskset.revision+1:1,lineage:o})}S(Bt,"prepareModelTasksetDraft");function ct(t){let e=z.parse(t.preparation);if(!q(e.sourceTasksetRef,e.lineage.parent))throw new Error("Taskset draft preparation differs from its source lineage.");if(e.authoringGraph==="bound"){if(!t.source)throw new Error("Bound Taskset authoring requires its retained source package.");return rt({preparation:e,source:t.source,edited:t.edited})}let s=dt(t.edited),{contentHash:a,...i}=s.verifierSet,c=De({...i,id:`${e.tasksetId}-verifiers`,revision:e.tasksetRevision,calibrationReceiptRefs:[],metadata:{sourceVerifierSet:x(s.verifierSet)}}),{contentHash:l,...o}=s.taskset,u=te.parse(I({...o,id:e.tasksetId,revision:e.tasksetRevision,verifierSetRelease:{id:c.id,contentHash:c.contentHash},metadata:{modelTasksetAuthoring:e.lineage,...s.taskset.metadata.environmentResources===void 0?{}:{environmentResources:s.taskset.metadata.environmentResources},...s.taskset.metadata.ordinaryAuthoring===void 0?{}:{ordinaryAuthoring:s.taskset.metadata.ordinaryAuthoring}}})),h=J(s),r=h?[...s.files.filter(R=>R.asset.id!==Ce(s.taskset)),ce({...h.execution,verifierSet:c})]:s.files;return K({schemaVersion:"openpond.tasksetPackage.v1",taskset:u,environment:s.environment,verifierSet:c,files:r})}S(ct,"publishModelTasksetDraftPackage");function dt(t){let e=C(t);if(e.modelResources||e.learningResources)throw new Error("This Taskset requires its bound or reviewed authoring workflow.");return e}S(dt,"requireOrdinaryPackage");function mt(t,e,s,a){if(t.environment.entrypoint!=="openpond.javascript-environment.v1")return{taskset:t,inventory:s,generatedFiles:[]};let i="environment/execution.json",c=e.get(i);if(!c||c.length>524288)throw new Error("Authored tool environment requires its bounded private execution declaration.");let l=ke.parse(JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(c))),o=S(E=>{if(!E)return null;let w=s.find(H=>H.asset.id===E.id&&H.asset.path===E.path);if(!w)throw new Error(`Authored environment dependency is missing: ${E.id}.`);return w.asset},"repin"),{contentHash:u,...h}=l.javascript,r=Be.parse(I({...h,id:`javascript-${t.id}`,revision:t.revision,module:o(l.javascript.module)}));if(m(r.tools)!==m(t.environment.metadata.portableTools)||m(r.tools.map(E=>E.name))!==m(t.environment.toolNames))throw new Error("Authored environment tools differ from the Taskset's declared tools.");let R=_e({schemaVersion:"openpond.environmentRelease.v1",id:`environment-${t.id}`,revision:t.revision,contract:Ke(t),actionSchemaRef:o(l.environment.actionSchemaRef),observationSchemaRef:o(l.environment.observationSchemaRef),stateSchemaRef:o(l.environment.stateSchemaRef),artifactCollection:l.environment.artifactCollection,adapterConformanceHashes:{},metadata:{javascriptEnvironment:x(r),resources:t.environment.resources??[]}}),g=N.parse({...t,environment:{...t.environment,metadata:{...t.environment.metadata,portableExecutionResources:{environment:R}}}}),f=we({taskset:g,adapterId:a}),p=ce({javascript:r,environment:R,verifierSet:f.verifierSetRelease}),M=[...s.filter(E=>E.sourcePath!==i),{asset:p.asset,sourcePath:i}],A=N.parse({...g,metadata:{...g.metadata,portableFileInventory:M}});return{taskset:N.parse({...A,contentHash:ge(A)}),inventory:M,generatedFiles:[{path:i,role:"environment",content:new TextDecoder().decode(W(p))}]}}S(mt,"prepareAuthoredToolEnvironment");var ee=T.array(T.object({asset:re,sourcePath:T.string().min(1)}).strict()).max(1e4),pt=new Set(["taskset.json","capabilities.json","data/tasks.jsonl","graders/graders.json","fixtures/grader-fixtures.json","environment/taskset.ts"]);function ft(t){return pt.has(t)}S(ft,"isGeneratedTasksetPublicationFilePath");function lt(t,e,s,a=Le){let i=N.parse(t);if(i.metadata.taskDefinition!==void 0||i.metadata.rewardBinding!==void 0)return{taskset:i,generatedFiles:[]};let c=new Map,l=0;for(let[d,k]of e){if(oe.parse(d),l+=k.byteLength,c.size>=1e4||l>a*3/4)throw new Error("Taskset source exceeds the package byte limit.");c.set(d,k.slice())}let o=i.metrics?.customAggregator,u=o?c.get(o.module):void 0;if(o&&!u)throw new Error("Declared Taskset metric module is missing.");let h=o&&u?{...i.metrics,customAggregator:{...o,contentHash:G(u)}}:i.metrics,r=new Map,R=new Set,g=[],f=S((d,k,y,n)=>{let v=c.get(k);if(!v)throw new Error(`Declared Taskset file is missing: ${k}.`);return{id:d,path:k,contentHash:G(v),sizeBytes:v.byteLength,mediaType:y,visibility:n}},"ref"),p=S((d,k=d.path)=>{let y=r.get(d.id);if(y&&m(y)!==m({asset:d,sourcePath:k}))throw new Error(`Conflicting Taskset file identity: ${d.id}.`);let n=c.get(k);if(!n||n.length!==d.sizeBytes||G(n)!==d.contentHash)throw new Error(`Taskset file differs from its declared bytes: ${d.id}.`);r.set(d.id,{asset:d,sourcePath:k}),R.add(k)},"add");for(let d of i.tasks){let k={};for(let n of d.requiredOutputs??[])if(n.submissionMode==="structured_json"){if(!n.schemaRef||n.mediaType!=="application/json")throw new Error("Structured outputs require a JSON schemaRef and application/json.");let v=d.metadata.portableTaskRecord?.requiredOutputs?.find(L=>L.path===n.path)?.schemaRef,B=v?.id===n.schemaRef?v.path:n.schemaRef,$=f(n.schemaRef,B,"application/schema+json","policy");if(v&&v.id===n.schemaRef&&v.visibility!=="policy")throw new Error("Structured output schema must be policy-visible.");je(c.get(B),$.contentHash),k[n.schemaRef]=$}Object.keys(k).length&&(d.metadata={...d.metadata,outputSchemaRefs:k});let y=Xe(d);for(let n of y.artifactRefs)p(n,d.assets?.find(v=>v.id===n.id)?.artifactRef??n.path);for(let n of y.requiredOutputs??[])n.schemaRef&&p(n.schemaRef)}for(let d of i.environment.resources??[])p(f(d.id,d.path,d.mediaType??"application/octet-stream",d.visibility==="policy_visible"?"policy":"host_private"));let M=i.graders.map(d=>{if(d.kind==="custom_verifier"){let k=f(`verifier-${d.id}`,d.module,"application/javascript","host_private"),y=re.safeParse(d.metadata.portableVerifierRef);return y.success&&y.data.contentHash===k.contentHash&&y.data.sizeBytes===k.sizeBytes&&(k=y.data),p(k,d.module),{...d,metadata:{...d.metadata,portableVerifierRef:k}}}if(d.kind==="human"||d.kind==="model_judge"){let k=new TextEncoder().encode(d.rubric),y=`graders/rubric-${G(k)}.md`;c.set(y,k);let n=f(`rubric-${d.id}`,y,"text/markdown","verifier"),v=re.safeParse(d.metadata.portableRubricRef);if(v.success&&v.data.contentHash===n.contentHash&&v.data.sizeBytes===n.sizeBytes){if(v.data.visibility==="policy")throw new Error("A grader rubric cannot become policy-visible.");n=v.data}return p(n,y),g.push({path:y,role:"verifier",content:d.rubric}),{...d,metadata:{...d.metadata,portableRubricRef:n}}}return d});o&&![...r.values()].some(d=>d.asset.path===o.module&&d.sourcePath===o.module&&d.asset.visibility!=="policy")&&p(f(`metric-${m(o.module)}`,o.module,"application/javascript","host_private"));let A=ee.parse(i.metadata.portableFileInventory??[]);for(let d of[...c.keys()].sort())if(!R.has(d)){let k=A.find(y=>y.sourcePath===d&&!r.has(y.asset.id));p(k?{...f(k.asset.id,d,k.asset.mediaType,k.asset.visibility),path:k.asset.path}:f(`taskset-file-${m(d)}`,d,"application/octet-stream","host_private"),d)}let{importedPackageHash:E,derivedPortableMetadata:w,...H}=i.metadata,D={...i.environment.metadata};if(D.portableExecutionResources!==void 0){let d=T.object({environment:T.unknown(),verifierSet:T.unknown().optional()}).parse(D.portableExecutionResources);D.portableExecutionResources={environment:d.environment}}let V=N.parse({...i,graders:M,metrics:h,environment:{...i.environment,metadata:D},metadata:{...H,...E===void 0?{}:{sourceImportedPackageHash:E},portableFileInventory:ee.parse([...r.values()].sort((d,k)=>d.asset.id.localeCompare(k.asset.id)))}}),_=mt(V,c,[...r.values()],s);return{taskset:N.parse({..._.taskset,contentHash:ge(_.taskset)}),generatedFiles:[...g,..._.generatedFiles]}}S(lt,"prepareAuthoredTasksetSource");function ut(t){let e=We(t.workspace,t.maximumBytes),s=t.preparation===null?null:z.parse(t.preparation);if(s?e.draft.id!==s.draftId||e.draft.modelScope?.modelId!==s.lineage.owner.modelId||e.draft.profileId!==s.lineage.owner.scopeId||m(e.draft.modelScope?.source??null)!==m(s):e.draft.modelScope?.source!==void 0)throw new Error("Taskset draft differs from its retained source preparation.");let a=Je({draft:e.draft,now:e.draft.updatedAt,sourcePackageHash:t.sourceWorkspaceHash??e.contentHash}),i=new Map(e.files.map(h=>[h.path,me(h)]));for(let[h,r]of Ge(e.draft))ft(h)||i.set(h,new TextEncoder().encode(r));let c=lt(a,i,t.adapterId,t.maximumBytes);for(let h of c.generatedFiles)i.set(h.path,new TextEncoder().encode(h.content));let l=we({taskset:c.taskset,adapterId:t.adapterId}),o=ee.parse(c.taskset.metadata.portableFileInventory),u=K({schemaVersion:"openpond.tasksetPackage.v1",taskset:l.tasksetRelease,environment:l.environmentRelease,verifierSet:l.verifierSetRelease,files:o.map(h=>{let r=i.get(h.sourcePath);if(!r)throw new Error(`Captured Taskset file is missing: ${h.sourcePath}.`);return{asset:h.asset,base64:Buffer.from(r).toString("base64")}})},t.maximumBytes);return s?ct({preparation:s,edited:u,source:t.source}):u}S(ut,"compileTasksetDraftWorkspace");function qt(t){if(!t.workspace.draft.modelScope)throw new Error("Taskset draft requires a Model owner.");return ut(t)}S(qt,"compileModelTasksetDraftWorkspace");function Xt(t){let e=C(t.source);if(e.modelResources||e.learningResources)throw new Error("Binding an ordinary Reward requires an ordinary source package.");let s=de(e);if(!s.trim())throw new Error("Add collection instructions before selecting a saved Reward.");let a=new Map,i=J(e);for(let w of i?.assets??[])a.set(w.id,w);let c=new Set([...e.taskset.tasks.flatMap(w=>w.privilegedContextRef?[w.privilegedContextRef]:[]),...[e.environment.actionSchemaRef,e.environment.observationSchemaRef,e.environment.stateSchemaRef].flatMap(w=>w?[w.id]:[])]);for(let w of c){if(a.has(w))continue;let H=e.files.find(V=>V.asset.id===w);if(!H)throw new Error(`Source Taskset context is missing: ${w}.`);let D=new TextDecoder("utf-8",{fatal:!0}).decode(W(H));a.set(w,se.parse(I({schemaVersion:"openpond.learningTextAsset.v1",id:w,revision:1,asset:H.asset,text:D})))}for(let w of t.assets){let H=e.files.find(D=>D.asset.id===w.id);if(H&&I({asset:H.asset}).contentHash!==I({asset:w.asset}).contentHash)throw new Error(`Selected Reward conflicts with a source asset: ${w.id}.`);a.set(w.id,w)}let{policy:l,environment:o,environmentRelease:u,tools:h,capabilities:r,verifierSetRelease:R}=e.taskset,g=F.parse(I({schemaVersion:"openpond.taskDefinition.v1",id:`${e.taskset.id}-definition`,revision:1,name:e.taskset.id,description:"",instructions:s,category:"custom",familyNamespace:e.taskset.id,inputSchema:{type:"object"},outputSchema:{type:"object"},rewardBinding:x(t.rewardBinding),harness:null,execution:{policy:l,environment:o,environmentRelease:u,tools:h,capabilities:r,verifierSetRelease:R}})),f=ie({...t,assets:[...a.values()],source:{taskset:e.taskset,taskDefinition:g,instructionMode:"per_task",executionResources:{environment:e.environment,verifierSet:e.verifierSet},...i?{execution:i.execution}:{}}}),p=new Map(e.files.map(w=>[w.asset.id,w]));for(let w of f.assets){let H="";for(let D of new TextEncoder().encode(w.text))H+=String.fromCharCode(D);p.set(w.id,{asset:w.asset,base64:btoa(H)})}let{taskset:M,executionResources:A,...E}=f;return K({schemaVersion:"openpond.tasksetPackage.v1",taskset:M,...A,modelResources:E,files:[...p.values()]})}S(Xt,"bindOrdinaryModelTasksetReward");function ht(t){let{request:e,package:s}=t,a=s.learningResources;if(!a)throw new j("model_review_batch_required",422);let i=U(s.taskset),c=`model-review-${m([t.scope,e.modelId,e.operationId])}`,l=new Map(e.examples.map(n=>[m(n.evidence),n])),o=new Set(a.evidence.map(n=>m(x(n)))),u=new Map(a.decisions.map(n=>[m(n.evidence),n]));if(l.size!==e.examples.length||e.examples.some(n=>!o.has(m(n.evidence))))throw new j("model_review_evidence_mismatch",409);for(let n of[t.binding,...t.rewards,...t.assets])Pe(n);ye(t.binding,t.rewards);let h=new Map;for(let n of t.binding.sources){let v=t.rewards.find(L=>q(x(L),n.reward)),{contentHash:B,...$}=v;h.set(v.contentHash,Se({...$,id:`${c}-reward-${v.contentHash}`,revision:1}))}let r=[...h.values()],{contentHash:R,recipeRef:g,...f}=t.binding,p=xe({...f,id:`${c}-binding`,revision:1,sources:t.binding.sources.map(n=>({...n,reward:x(h.get(n.reward.contentHash))}))},r),M=r.flatMap(n=>[...n.assets,..."verifierRef"in n.implementation?[n.implementation.verifierRef]:[],..."rubricRef"in n.implementation?[n.implementation.rubricRef]:[],..."inputContract"in n.implementation?[n.implementation.inputContract]:[]]),A=[...new Map(M.map(n=>{let v=t.assets.find(B=>B.id===n.id);if(!v)throw new j("model_review_reward_asset_missing",422);if(Ee(v,n),n.visibility==="policy")throw new j("reward_asset_visibility_invalid",422);return[v.id,v]})).values()],{environmentRelease:E,verifierSetRelease:w,...H}=i.definition.execution,{contentHash:D,...V}=i.definition,_=F.parse(I({...V,...e.definition,id:`${c}-definition`,revision:1,rewardBinding:x(p),execution:{...H,policy:{...H.policy,hiddenGraderRefs:He(p,r).filter(n=>n.privileged).map(n=>n.id)}}})),d=ae.parse(I({schemaVersion:"openpond.learningSource.v1",id:c,revision:1,name:`${_.name} review`,kind:"direct",taskDefinition:x(_),enabled:!0,allowedSplits:[...new Set(a.evidence.map(n=>n.submission.split))],mapping:null,adapterVersion:null,reviewOrigin:{modelId:e.modelId,packageHash:s.contentHash,taskset:x(s.taskset),batch:x(a.batch),rewardBinding:x(t.binding)}})),k=a.evidence.map(n=>{let v=l.get(m(x(n))),B=`review-${n.contentHash}`,$=m({instructions:_.instructions,inputSchema:_.inputSchema,outputSchema:_.outputSchema,requiredOutputs:_.requiredOutputs??[],input:v?.input??n.submission.input})!==m({instructions:i.definition.instructions,inputSchema:i.definition.inputSchema,outputSchema:i.definition.outputSchema,requiredOutputs:i.definition.requiredOutputs??[],input:n.submission.input});return Q.parse(I({schemaVersion:"openpond.taskEvidence.v1",id:Me(d.id,n.submission.exampleId,B),revision:1,source:x(d),submission:{...n.submission,sourceId:d.id,taskDefinition:x(_),attemptId:B,observedOutput:$?null:n.submission.observedOutput,idempotencyKey:`${c}-${n.contentHash}`,...v?.input===void 0?{}:{input:v.input},...v?.expected===void 0?{}:{expected:v.expected},...v?.evaluatorContext===void 0?{}:{evaluatorContext:v.evaluatorContext}},supersedes:x(n),correctionFeedbackId:null,receivedAt:t.now}))}),y=k.flatMap(n=>{let v=l.get(m(n.supersedes)),B=u.get(m(n.supersedes)),$=v?.proposedTarget===void 0?B.approvedTarget:v.proposedTarget;return $===null?[]:[ne.parse({schemaVersion:"openpond.taskFeedbackRecord.v1",id:`feedback-${m([c,n.id])}`,revision:1,submission:{schemaVersion:"openpond.taskFeedback.v1",sourceId:d.id,idempotencyKey:`${c}-${n.id}`,exampleId:n.submission.exampleId,attemptId:n.submission.attemptId,expectedEvidenceHash:n.contentHash,occurredAt:t.now,kind:"target_correction",value:$,note:"Proposed target for the revised task. Grade and review before admission."},status:"pending_review",evidence:x(n),createdAt:t.now,review:null})]});return{source:d,definition:_,binding:p,rewards:r,assets:A,evidence:k,proposals:y}}S(ht,"prepareModelBatchReview");var Ue=S(t=>`model-batch-review-${m([t.modelId,t.operationId])}`,"operation");function es(t){let e=C(t);if(!e.learningResources)throw new j("model_review_batch_required",422);let s=U(e.taskset);return Ye.parse({schemaVersion:"openpond.modelBatchReviewInspection.v1",packageHash:e.contentHash,definition:s.definition,binding:s.binding,evidence:e.learningResources.evidence,decisions:e.learningResources.decisions})}S(es,"inspectModelBatchPackage");async function vt(t,e){let s=Re.parse(e),a=await t.operation(Ue(s));if(!a)return null;if(a.requestHash!==m(s))throw new j("learning_idempotency_conflict",409);return Ze(t,s,a.resources)}S(vt,"findModelBatchReview");async function ts(t,e){let s=Re.parse(e.request),a=await vt(t,s);if(a)return a;let i=C(e.package);if(!i.learningResources)throw new j("model_review_batch_required",422);let c=U(i.taskset),l=s.rewardBindingRef,o=!l||q(l,x(c.binding)),u=o?c.binding:await ve(t,"binding",l),h=o?c.rewards:await Promise.all(u.sources.map(p=>ve(t,"reward",p.reward))),r=new Set(h.flatMap(p=>[...p.assets,..."verifierRef"in p.implementation?[p.implementation.verifierRef]:[],..."rubricRef"in p.implementation?[p.implementation.rubricRef]:[],..."inputContract"in p.implementation?[p.implementation.inputContract]:[]]).map(p=>p.id)),R=o?i.learningResources.assets:await Promise.all([...r].map(p=>he(t,"asset",p,1))),g=ht({...e,request:s,package:i,binding:u,rewards:h,assets:R}),f=[];for(let p of g.assets){let M=await t.get("asset",p.id,1);if(M&&M.contentHash!==p.contentHash)throw new j("model_review_asset_conflict",409);M||await t.put("asset",p,0)}for(let p of g.rewards)await t.put("reward",p,0);await t.put("binding",g.binding,0),await t.put("definition",g.definition,0),await t.put("source",g.source,0,{parentId:s.modelId}),f.push({kind:"source",id:g.source.id,revision:1});for(let p of g.evidence)await t.put("evidence",p,0,{parentId:g.source.id}),f.push({kind:"evidence",id:p.id,revision:1});for(let p of g.proposals)await t.put("feedback",p,0,{parentId:p.evidence.id,status:p.status}),f.push({kind:"feedback",id:p.id,revision:1});return await t.saveOperation(Ue(s),{requestHash:m(s),resources:f}),Ze(t,s,f)}S(ts,"beginModelBatchReview");async function Ze(t,e,s){let a=await Promise.all(s.map(i=>he(t,i.kind,i.id,i.revision)));return Qe.parse({schemaVersion:"openpond.modelBatchReviewReceipt.v1",operationId:e.operationId,modelId:e.modelId,source:a.find(i=>i.schemaVersion==="openpond.learningSource.v1"),evidence:a.filter(i=>i.schemaVersion==="openpond.taskEvidence.v1"),proposals:a.filter(i=>i.schemaVersion==="openpond.taskFeedbackRecord.v1")})}S(Ze,"readReceipt");var et=T.object({draft:Z,filePaths:T.array(T.object({assetId:T.string().min(1),paths:T.array(oe).min(1).max(1e4)}).strict()).max(1e4)}).strict();function ns(t){let e=C(t.source),s=Z.parse(t.sourceDraft),a=z.parse(t.preparation);if(e.contentHash!==a.sourcePackageHash||!q(x(e.taskset),a.sourceTasksetRef))throw new Error("Taskset draft preparation differs from its source package.");if(e.learningResources)throw new Error("Reviewed Tasksets require their reviewed authoring workflow.");if(!!e.modelResources!=(a.authoringGraph==="bound"))throw new Error("Taskset draft authoring graph differs from its source.");let i=ee.parse(s.metadata.portableFileInventory??[]),c=S(r=>X(r)?`source-artifacts/${e.contentHash}/${m(r)}/${r.split("/").at(-1)}`:r,"sourcePath");if([...s.tasks.flatMap(r=>(r.assets??[]).map(R=>R.artifactRef)),...(s.environment.resources??[]).map(r=>r.path),...e.taskset.tasks.flatMap(r=>(r.requiredOutputs??[]).flatMap(R=>R.schemaRef?[R.schemaRef.path]:[])),...s.metrics.customAggregator?[s.metrics.customAggregator.module]:[],...s.graders.flatMap(r=>r.kind==="custom_verifier"?[r.module]:[])].some(X))throw new Error("A referenced source asset occupies a reserved Taskset authoring path.");let o=e.files.map(r=>{let R=new Set([r.asset.path]);for(let g of i)g.asset.id===r.asset.id&&R.add(g.sourcePath);for(let g of s.tasks)for(let f of g.assets??[])f.id===r.asset.id&&R.add(f.artifactRef);for(let g of e.taskset.graders)if(g.kind==="custom_verifier"&&g.verifierRef.id===r.asset.id){let f=s.graders.find(p=>p.id===g.id);f?.kind==="custom_verifier"&&R.add(f.module)}return{assetId:r.asset.id,paths:[...R].map(c)}}),u={...s.metadata};if(e.modelResources)for(let r of["taskDefinition","rewardBinding","rewardExecution","derivedPortableMetadata","modelTasksetDerivation","importedPackageHash"])delete u[r];let h=Z.parse({...s,id:a.draftId,revision:1,status:"draft",graders:s.graders.map(r=>({...r,metadata:{...r.metadata,portableGrader:e.taskset.graders.find(R=>R.id===r.id)}})),environment:{...s.environment,metadata:{...s.environment.metadata,portableExecutionResources:{environment:e.environment}}},modelScope:{modelId:a.lineage.owner.modelId,expectedModelRevision:t.expectedModelRevision,source:a},publishedTasksetRef:a.tasksetRevision>1?a.sourceTasksetRef:null,metadata:{...u,modelTasksetAuthoring:a.lineage,portableFileInventory:i.map(r=>({...r,sourcePath:c(r.sourcePath),asset:{...r.asset,id:X(r.sourcePath)?`source-artifact-${m({packageHash:e.contentHash,assetId:r.asset.id})}`:r.asset.id,path:c(r.asset.path)}}))}});return et.parse({draft:h,filePaths:o})}S(ns,"prepareTasksetDraftSource");function os(t){let e=et.parse(t.initialized),s=C(t.source);if(e.draft.modelScope?.source?.sourcePackageHash!==s.contentHash)throw new Error("Taskset draft lost its source preparation.");let a=new Map;for(let c of e.filePaths){let l=s.files.find(o=>o.asset.id===c.assetId);if(!l)throw new Error("Taskset draft source asset is missing.");for(let o of c.paths){let u=a.get(o);if(u&&u.contentHash!==l.asset.contentHash)throw new Error("Taskset draft source paths conflict.");a.set(o,{path:o,contentHash:l.asset.contentHash,sizeBytes:l.asset.sizeBytes,base64:l.base64})}}for(let c of ze(e.draft))if(!a.has(c.relativePath)){let l=new TextEncoder().encode(c.source);a.set(c.relativePath,{path:c.relativePath,contentHash:G(l),sizeBytes:l.byteLength,base64:Buffer.from(l).toString("base64")})}let i=e.draft;if(i.metrics.customAggregator){let c=a.get(i.metrics.customAggregator.module);if(!c)throw new Error("Declared Taskset metric module is missing.");me(c),i=Z.parse({...i,metrics:{...i.metrics,customAggregator:{...i.metrics.customAggregator,contentHash:c.contentHash}}})}return Ne({schemaVersion:"openpond.tasksetDraftWorkspace.v1",draft:i,files:[...a.values()]})}S(os,"materializeTasksetDraftWorkspace");export{Ye as a,Re as b,Qe as c,Bt as d,ct as e,ee as f,ft as g,lt as h,ut as i,qt as j,Xt as k,es as l,vt as m,ts as n,et as o,ns as p,os as q};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import{c as H,d as q}from"./chunk-
|
|
2
|
+
import{c as H,d as q}from"./chunk-EWOTDVDJ.js";import{c as T,d as L,e as R}from"./chunk-LJDBR3RN.js";import{k as M,l as O,o as k,p as C}from"./chunk-LV3CQ72P.js";import{x as S}from"./chunk-PBZCXPPC.js";import{n as N}from"./chunk-VVNV4NNW.js";import{A as c}from"./chunk-PF56N7ZY.js";import{a}from"./chunk-FTQLQJQV.js";var j=c.object({id:c.string().min(1).max(200),name:c.string().min(1).max(64),arguments:c.record(c.string(),c.unknown())}).strict(),W=c.object({text:c.string().max(262144),toolCalls:c.array(j).max(200)}).strict();async function D(e){if(!e.taskId||e.taskId.length>500)throw new Error("environment_task_identity_invalid");if(!Number.isInteger(e.timeoutMs)||e.timeoutMs<1||e.timeoutMs>36e5)throw new Error("environment_attempt_timeout_invalid");S(e.instructions,262144);let m=e.taskId,f=e.instructions,d=structuredClone(e.input),J=e.policy,x=new AbortController,u=e.signal?AbortSignal.any([x.signal,e.signal]):x.signal,i=!1,_=setTimeout(()=>{i=!0,x.abort(new Error("environment_attempt_timeout"))},e.timeoutMs);_.unref?.();let t=null,h=null,o="environment_failure",p=null,v=null,b=!1,r=!1,n=[],y=0,E=a(s=>{if(y+=new TextEncoder().encode(JSON.stringify(s)).byteLength,y>4194304)throw o="budget_exhausted",new Error("environment_transcript_budget_exhausted");n.push(s)},"append"),P=new Set;try{t=await R({...e,input:d,signal:u}),E({role:"system",text:f}),E({role:"user",text:JSON.stringify({input:d,observation:t.observation})});for(let s=0;s<=t.definition.maxSteps;s++){u.throwIfAborted();let w;try{let l=await J({messages:structuredClone(n),tools:structuredClone(t.definition.tools),signal:u});S(l,1048576),w=structuredClone(W.parse(l));for(let g of w.toolCalls){if(P.has(g.id))throw new Error("environment_duplicate_tool_call_identity");P.add(g.id)}}catch(l){throw u.aborted||(o="policy_failure"),l}if(u.throwIfAborted(),E({role:"assistant",...w}),!w.toolCalls.length){p=w.text,await t.collect(),h=t.snapshot(),b=!0,o="completed";break}for(let l of w.toolCalls){let g;try{g=await t.step({name:l.name,arguments:l.arguments})}catch(I){if(!(I instanceof L))throw I;if(I.code==="step_budget_exhausted"){o="budget_exhausted";break}g={error:I.code}}E({role:"tool",callId:l.id,name:l.name,observation:g})}if(o==="budget_exhausted")break;s===t.definition.maxSteps&&(o="budget_exhausted")}h??=t.snapshot()}catch(s){u.aborted&&(o=i?"timed_out":"cancelled"),v=s instanceof Error?s.message:"environment_attempt_failed",h??=t?.snapshot()??null}finally{if(clearTimeout(_),t)try{await t.destroy(),r=!0}catch(s){o="environment_failure",v=s instanceof Error?s.message:"environment_cleanup_failed"}}let B={schemaVersion:"openpond.javascriptEnvironmentAttempt.v1",taskId:m,status:o,output:p,snapshot:h,collected:b,environmentCleanupComplete:r,messages:n,error:v};return{...B,contentHash:N(B)}}a(D,"runJavaScriptEnvironmentAttempt");import{spawn as z}from"node:child_process";async function A(e){if(e.signal?.throwIfAborted(),!Number.isSafeInteger(e.timeoutMs)||e.timeoutMs<1||e.timeoutMs>3e4)throw new Error("sql_timeout_invalid");let m=O(e.request),{sqlExecutionProcessSource:f}=await import("./sql-execution-process-source-B4HQM6ZV.js");e.signal?.throwIfAborted();let{signal:d}=e,J=`globalThis.__openpondSqlInput = JSON.parse(${JSON.stringify(JSON.stringify(m))});
|
|
3
3
|
${f}`;return new Promise((x,u)=>{let i=z("node",["--max-old-space-size=64","--input-type=module","-"],{stdio:["pipe","pipe","pipe"],env:{PATH:process.env.PATH},windowsHide:!0}),_,t="",h=0,o=0,p=a(r=>{_??=r,i.kill("SIGKILL")},"stop"),v=a(()=>p(d?.reason instanceof Error?d.reason:new Error("sql_cancelled")),"cancel"),b=setTimeout(()=>p(new Error("sql_timeout")),e.timeoutMs);d?.addEventListener("abort",v,{once:!0}),i.stdout.setEncoding("utf8"),i.stdout.on("data",r=>{h+=Buffer.byteLength(r),h>m.maxResultBytes+65536?p(new Error("sql_process_response_too_large")):t+=r}),i.stderr.on("data",r=>{o+=r.byteLength,o>65536&&p(new Error("sql_process_stderr_too_large"))}),i.once("error",r=>{_??=r}),i.stdin.on("error",r=>p(r)),i.once("close",r=>{if(clearTimeout(b),d?.removeEventListener("abort",v),_){u(_);return}try{if(r!==0)throw new Error("sql_process_exited_without_result");let n=JSON.parse(t);if(!n||typeof n!="object"||!("ok"in n)||n.ok!==!0||!("result"in n))throw new Error("sql_environment_failed");let y=M.parse(n.result);S(y,m.maxResultBytes),x(y)}catch(n){u(n)}}),i.stdin.end(J),d?.aborted&&v()})}a(A,"executeSqlInProcess");async function ie(e){let m=k.parse(e.operation);return T(e,{sql:A,candidate:q,controller:a(async f=>C.parse(await H({...f,exportName:m,maxResultBytes:1572864,deterministic:!0,errorPrefix:"environment"})),"controller")})}a(ie,"executeJavaScriptEnvironmentInWorker");async function le(e){let m=k.parse(e.operation);return T(e,{sql:A,candidate:q,controller:a(async f=>C.parse(await q({...f,exportName:m,maxResultBytes:1572864,deterministic:!0,errorPrefix:"environment"})),"controller")})}a(le,"executeJavaScriptEnvironmentInProcess");export{D as a,ie as b,le as c};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import{Ja as F,Ka as _,La as E}from"./chunk-
|
|
2
|
+
import{Ja as F,Ka as _,La as E}from"./chunk-TUCKED4T.js";import{a as L,b as j,c as H,d as w,e as b,f as S,g as y,l as k}from"./chunk-UWHIU24L.js";import{e as x,f as R}from"./chunk-2EPR4HLF.js";import{h as g,p as A,r as C,s as N}from"./chunk-UGOK7VTC.js";import{l as O,n as T}from"./chunk-VVNV4NNW.js";import{a as r}from"./chunk-FTQLQJQV.js";import{promises as z}from"node:fs";import d from"node:path";import{randomUUID as J}from"node:crypto";import{promises as v}from"node:fs";import U from"node:path";function u(e){return{binding:r(()=>{let i=C(e.home,"refiner_bindings","active");return i?w.parse(i.value):null},"binding"),releases:r(async()=>{let i=(await v.readdir(e.releases)).filter(n=>n.endsWith(".json"));return Promise.all(i.map(async n=>H.parse(JSON.parse(await v.readFile(U.join(e.releases,n),"utf8")))))},"releases"),transitions:r(()=>Object.values(N(e.home,"refiner_transitions")).map(i=>b.parse(i.value)),"transitions"),release:r(async i=>{let n=H.parse(JSON.parse(await v.readFile(U.join(e.releases,`${i.contentHash}.json`),"utf8")));if(n.id!==i.id||n.contentHash!==i.contentHash)throw new Error("Refiner release reference does not match immutable release content.");return n},"release"),persistRelease:r(async i=>V(e.releases+`/${i.contentHash}.json`,O(i),!0),"persistRelease"),writeSource:r(async i=>V(e.source,i),"writeSource"),transition:r(async(i,n)=>{A(e.home,t=>{t.exec("BEGIN IMMEDIATE");try{let a=t.prepare("SELECT payload FROM refiner_bindings WHERE id = 'active'").get(),o=a?w.parse(JSON.parse(a.payload)):null,s=new Date().toISOString(),l={id:i.id,contentHash:i.contentHash},c={schemaVersion:"openpond.refinerTransitionReceipt.v1",id:`refiner-transition-${J()}`,operation:n.operation,bindingChanged:n.bindingChanged,previousRelease:o?.release??null,nextRelease:l,actor:n.actor,reason:n.reason,authoringSkillHash:n.authoringSkillHash,validation:{valid:!0,messages:[]},createdAt:s},p=b.parse({...c,contentHash:T(c)});if(t.prepare("INSERT INTO refiner_transitions VALUES (?, ?, 1)").run(p.contentHash,JSON.stringify(p)),n.bindingChanged){let m=w.parse({schemaVersion:"openpond.refinerBinding.v1",channel:"active",revision:(o?.revision??-1)+1,release:l,updatedAt:s});t.prepare("INSERT INTO refiner_bindings VALUES ('active', ?, 1) ON CONFLICT(id) DO UPDATE SET payload=excluded.payload, revision=revision+1").run(JSON.stringify(m))}t.exec("COMMIT")}catch(a){throw t.exec("ROLLBACK"),a}})},"transition")}}r(u,"createLocalRefinerProfileRepository");async function V(e,i,n=!1){await R(e,async()=>{if(n){let t=await v.readFile(e,"utf8").catch(()=>null);if(t!==null){if(t!==i)throw new Error("Immutable Refiner release bytes changed.");return}}await x(e,i)})}r(V,"atomicWrite");var B="OpenPond Refiner Core: evidence admission, privacy, ownership, validation, and immutable activation boundaries.";function P(e){let i=d.join(e,"library","refiners");return{home:e,root:i,source:d.join(i,"source","openpond.review.json"),releases:d.join(i,"releases")}}r(P,"refinerProfilePaths");function Re(e){let i=r(()=>f(e),"inspect"),n=r(o=>M(e,o),"update"),t=r(o=>q(e,o),"activate"),a=r(o=>G(e,o),"rollback");return{refinerHistoryPayload:i,updateRefinerProfilePayload:n,activateRefinerReleasePayload:t,rollbackRefinerReleasePayload:a,inspectRefiner:i,updateRefiner:n,activateRefiner:t,rollbackRefiner:a}}r(Re,"createRefinerProfileRoutePayloads");async function f(e){let i=P(e),n=u(i),t=n.binding();if(!t)throw new Error("Active Refiner binding is unavailable.");let a=(await n.releases()).sort((l,c)=>c.createdAt.localeCompare(l.createdAt)),o=a.find(l=>l.id===t.release.id&&l.contentHash===t.release.contentHash);if(!o)throw new Error("Active Refiner release is unavailable.");let s=n.transitions().sort((l,c)=>c.createdAt.localeCompare(l.createdAt));return F.parse({rootPath:i.root,sourcePath:i.source,binding:t,currentRelease:o,releases:a,transitions:s})}r(f,"inspectRefinerProfile");async function ue(e){return(await f(e)).currentRelease}r(ue,"loadActiveRefinerRelease");async function M(e,i){return R(d.join(g(e).runtime,"refiner-edit"),()=>W(e,i))}r(M,"updateRefinerProfile");async function W(e,i){let n=_.parse(i),t=P(e),a=u(t);await I(t);let o=L.parse(n.profile),s=S({profile:o,coreVersion:k,corePrompt:B}),c=(await a.releases()).find(m=>m.composedPromptHash===s.composedPromptHash&&m.profileHash===s.profileHash)??s;await a.persistRelease(c),await a.writeSource(y(o));let p=a.binding();if(!p)throw new Error("Active Refiner binding is unavailable.");return n.activate&&p.release.contentHash===c.contentHash||!n.activate&&a.transitions().some(h=>!h.bindingChanged&&h.nextRelease.contentHash===c.contentHash&&h.actor===n.actor&&h.reason===n.reason&&h.authoringSkillHash===n.authoringSkillHash)||await a.transition(c,{operation:"update",bindingChanged:n.activate,actor:n.actor,reason:n.reason,authoringSkillHash:n.authoringSkillHash}),f(e)}r(W,"updateRefinerProfileUnlocked");async function q(e,i){return R(d.join(g(e).runtime,"refiner-edit"),()=>$(e,i))}r(q,"activateRefinerRelease");async function $(e,i){let n=E.parse(i),t=P(e),a=u(t);await I(t);let o=await a.release(n.release),s=a.binding();if(!s)throw new Error("Active Refiner binding is unavailable.");return s.release.contentHash===o.contentHash||(await a.transition(o,{operation:"activate",bindingChanged:!0,actor:n.actor,reason:n.reason,authoringSkillHash:null}),await a.writeSource(y(o.profile))),f(e)}r($,"activateRefinerReleaseUnlocked");async function G(e,i){return R(d.join(g(e).runtime,"refiner-edit"),()=>K(e,i))}r(G,"rollbackRefinerRelease");async function K(e,i){let n=E.parse(i),t=P(e),a=u(t);await I(t);let o=await a.release(n.release),s=a.binding();if(!s)throw new Error("Active Refiner binding is unavailable.");return s.release.contentHash===o.contentHash||(await a.transition(o,{operation:"rollback",bindingChanged:!0,actor:n.actor,reason:n.reason,authoringSkillHash:null}),await a.writeSource(y(o.profile))),f(e)}r(K,"rollbackRefinerReleaseUnlocked");async function Y(e){await R(d.join(g(e).runtime,"refiner-initialize"),()=>Q(P(e)))}r(Y,"initializeRefinerProfile");async function I(e){await Y(e.home)}r(I,"ensureInitialized");async function Q(e){let i=u(e);if(await Promise.all([z.mkdir(d.dirname(e.source),{recursive:!0,mode:448}),z.mkdir(e.releases,{recursive:!0,mode:448})]),i.binding())return;let n=S({profile:j,coreVersion:k,corePrompt:B});await i.persistRelease(n),await i.writeSource(y(n.profile)),await i.transition(n,{operation:"initialize",bindingChanged:!0,actor:"openpond",reason:"Initialize the default Refiner Review Profile.",authoringSkillHash:null})}r(Q,"initialize");export{u as a,P as b,Re as c,f as d,ue as e,M as f,q as g,G as h,Y as i};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import{a as Ae}from"./chunk-GW766ZSO.js";import{B as O,a as Pe,b as Ie}from"./chunk-3DVWJCOA.js";import{b as be}from"./chunk-YU3C6U5V.js";import{g as H}from"./chunk-FJ3HMHT6.js";import{a as re,b as ye,j as A}from"./chunk-PWK5Z5S3.js";import{f as Ce}from"./chunk-WFVOG5PU.js";import{D as we}from"./chunk-6DCXAXVD.js";import{n as $}from"./chunk-VVNV4NNW.js";import{a as o}from"./chunk-FTQLQJQV.js";import{existsSync as z}from"node:fs";import{cp as xe,mkdir as Ee,readFile as Oe}from"node:fs/promises";import k from"node:path";import{existsSync as L}from"node:fs";import{readFile as K}from"node:fs/promises";import q from"node:path";async function F(e){await V(e.target);let t={},a=new Set([`${e.target.sourceRootRelativePath}/.openpond/agent-inspect.json`,`${e.target.sourceRootRelativePath}/.openpond/action-registry.json`,`${e.target.sourceRootRelativePath}/.openpond/eval-results.json`]),n=[{name:"inspect",command:"inspect",args:["--json"]},{name:"build",command:"build"},{name:"validate",command:"validate",args:["--json"]},{name:"eval",command:"eval",args:["--json"]},{name:"direct-run",command:"run",args:[e.target.defaultAction,"--json","--input",JSON.stringify({prompt:e.snapshot.objective,channel:"openpond_chat"})]}];for(let r of n){let s=await O({cwd:e.target.sourceRoot,command:r.command,args:r.args,...r.command==="eval"&&e.requireEvalPass===!1?{throwOnFailure:!1}:{}});if(s.code!==0&&!(r.command==="eval"&&e.requireEvalPass===!1))throw new Error(s.stderr.trim()||s.stdout.trim()||`${r.command} failed with exit code ${s.code??"unknown"}`);let i=lt(s.stdout),d=mt(i);d&&a.add(q.join(e.target.sourceRootRelativePath,d)),t[r.name]={summary:pt(r.name,i),traceArtifactRef:d,stdout:s.stdout.trim().slice(0,4e3),stderr:s.stderr.trim().slice(0,4e3)}}return await dt(e.target,e.requireEvalPass!==!1),{checkRefs:[...a],metadata:t}}o(F,"runLocalCreatePipelineChecks");async function V(e){if(!L(e.sourceRoot))throw new Error(`Codex did not create the expected agent source root: ${e.sourceRoot}`);let t=q.join(e.sourceRoot,"agent","agent.ts");if(!L(t))throw new Error(`Codex did not create the expected SDK agent source: ${t}`);let a=q.join(e.repoPath,"openpond-profile.json");if(!L(a))throw new Error(`Codex did not update the profile repo manifest: ${a}`);let n=q.join(e.sourcePath,"settings","profile.yaml");if(!L(n))throw new Error(`Codex did not update the profile manifest: ${n}`);let s=JSON.parse(await K(a,"utf8")).profiles?.[e.activeProfile];if(!s)throw new Error(`openpond-profile.json does not register profile ${e.activeProfile}.`);if(!s.enabledAgents?.includes(e.agentId))throw new Error(`openpond-profile.json does not enable generated agent ${e.agentId}.`);let i=await K(n,"utf8");if(!i.includes(`id: ${e.agentId}`)&&!i.includes(`id: "${e.agentId}"`))throw new Error(`settings/profile.yaml does not register generated agent ${e.agentId}.`);let d=e.agentId==="default"?["agent/agent.ts","agent"]:[`agents/${e.agentId}`];if(!d.some(u=>i.includes(u)))throw new Error(`settings/profile.yaml does not point ${e.agentId} at ${d[0]}.`)}o(V,"assertLocalCreateSourceLayout");async function dt(e,t=!0){let a=q.join(e.sourceRoot,".openpond","action-registry.json"),n=q.join(e.sourceRoot,".openpond","eval-results.json");if(!L(a))throw new Error(`Generated source did not produce an action registry: ${a}`);if(!L(n))throw new Error(`Generated source did not produce eval results: ${n}`);let r=JSON.parse(await K(a,"utf8")),s=Array.isArray(r.actions)?r.actions:[];if(!new Set(s.map(c=>typeof c.id=="string"?c.id:null).filter(c=>!!c)).has(e.defaultAction))throw new Error(`Generated action registry does not expose default action ${e.defaultAction}.`);let d=s.filter(c=>typeof c.id=="string"&&(!W(c.label)||!W(c.description)||typeof c.timeoutSeconds!="number"));if(d.length>0)throw new Error(`Generated action registry has actions missing labels, descriptions, or timeout policies: ${d.map(c=>c.id).join(", ")}`);let u=Pe({actionCatalog:s.filter(c=>typeof c.id=="string").map(c=>({id:c.id,name:W(c.name),setupRequirements:ut(c.setupRequirements)??[]})),actionId:e.defaultAction});if(u.blockingRequirements.length>0)throw new Error(`Generated default action ${e.defaultAction} has unresolved required setup and cannot be ready_local: ${u.blockingRequirements.map(Ie).join("; ")}. Mark built-in/local fixture requirements ready or optional when they are satisfied, or leave the pipeline blocked until the setup is configured.`);let m=JSON.parse(await K(n,"utf8"));if(typeof m.summary?.total!="number"||m.summary.total<1)throw new Error("Generated source must define at least one deterministic SDK eval.");if(t&&m.summary.failed!==0)throw new Error("Generated source evals did not all pass.")}o(dt,"assertGeneratedSdkArtifacts");function lt(e){let t=e.trim();if(!t.startsWith("{")&&!t.startsWith("["))return null;try{return JSON.parse(t)}catch{return null}}o(lt,"parseJsonOutput");function E(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}o(E,"asRecord");function ut(e){return Array.isArray(e)?e.filter(t=>!!E(t)):null}o(ut,"recordArray");function mt(e){let t=E(e),a=W(t?.traceArtifactRef);return a?.startsWith(".openpond/")?a:null}o(mt,"traceRefFromCommandResult");function pt(e,t){let a=E(t);return a?e==="inspect"?{actionCount:Array.isArray(a.actionCatalog)?a.actionCatalog.length:null,defaultAction:E(a.agent)?.defaultAction??null,projectName:E(a.project)?.name??null}:e==="validate"?{status:a.status??null,errors:E(a.summary)?.errors??null,warnings:E(a.summary)?.warnings??null}:e==="eval"?E(a.summary):e==="direct-run"?{hasResult:!!E(a.result),resultKeys:Object.keys(E(a.result)??{})}:null:null}o(pt,"summaryFromCommandResult");function W(e){return typeof e=="string"&&e.trim()?e.trim():null}o(W,"stringValue");var gt="Approved local Create plans require model-backed SDK source application; no source mutation was performed.",ft=1800*1e3,Te=".openpond-harness-source-application.json",ht=300*1e3,vt=2*1e3,Rt=5*1e3;async function He(e,t={}){if(!kt(e))return e;let a=t.now??(()=>new Date().toISOString()),n=e.adapter;if(n.kind!=="local")return e;if(!t.session||!t.turn||!t.ensureCodexRuntime||!t.appendRuntimeEvent||!t.setProviderTurnId)return Y(e,{now:a(),reason:gt,metadata:{reason:"model_backed_source_application_required",sourcePath:n.sourcePath??null,repoPath:n.repoPath??null,activeProfile:n.activeProfile??null,operation:e.operation,requestedAgentId:e.target.kind==="agent"?e.target.id:null}});let r;try{r=se(e)}catch(i){return Y(e,{now:a(),reason:i instanceof Error?i.message:String(i),metadata:{reason:"local_create_target_unresolved"}})}try{await ie({snapshot:e,session:t.session,turn:t.turn,target:r,ensureCodexRuntime:t.ensureCodexRuntime,appendRuntimeEvent:t.appendRuntimeEvent,setProviderTurnId:t.setProviderTurnId,model:t.model??we,codexReasoningEffort:t.codexReasoningEffort})}catch(i){return Y(e,{now:a(),reason:i instanceof Error?i.message:String(i),metadata:{reason:"model_backed_source_application_failed",target:r}})}let s=oe(e,{state:"running_checks",now:a(),blockedReason:null,sourceRefs:[r.sourceRootRelativePath,k.join(r.profileRelativePath,"settings","profile.yaml"),"openpond-profile.json"],metadata:{localCreatePipeline:{status:"running_checks",target:r}},candidates:[{id:Se(e.id),target:{kind:"agent",id:r.agentId,displayName:e.target.displayName,defaultActionKey:r.defaultAction},status:"checking",git:null,parentCandidateId:null,tasksetRef:e.tasksetRef,authoringModelRef:t.model??null,allowedPaths:e.plan?.sourcePlan.map(i=>i.path)??[],sourceRefs:[r.sourceRootRelativePath,k.join(r.profileRelativePath,"settings","profile.yaml"),"openpond-profile.json"],artifactRefs:[],checkRefs:[],evaluationReceiptRefs:[],createdAt:e.createdAt,updatedAt:a(),metadata:{sourceAuthority:e.adapter.sourceAuthority}}]});await t.onSnapshot?.(s);try{let i=await(t.runChecks??F)({snapshot:s,target:r}),d=a(),u=Se(e.id),m=`agent_eval_${e.id}`;return oe(s,{state:"ready_local",now:d,blockedReason:null,checkRefs:i.checkRefs,candidates:s.candidates.map(c=>c.id===u?{...c,status:"accepted",checkRefs:X(c.checkRefs,i.checkRefs),evaluationReceiptRefs:X(c.evaluationReceiptRefs,[m]),updatedAt:d}:c),evaluationReceipts:[...s.evaluationReceipts.filter(c=>c.id!==m),{id:m,candidateId:u,target:{kind:"agent",id:r.agentId,displayName:e.target.displayName,defaultActionKey:r.defaultAction},evaluatorKind:"agent_sdk",subject:"candidate",sourceCommit:e.adapter.kind==="local"?e.adapter.localHead:null,sourceBranch:null,tasksetId:e.tasksetRef?.id??null,tasksetHash:e.tasksetRef?.contentHash??null,taskAttemptRefs:i.checkRefs.filter(c=>c.includes("eval")),status:"passed",publishGate:"passed",summaryCounts:null,evalRefs:i.checkRefs.filter(c=>c.includes("eval")),artifactRefs:i.checkRefs,summary:wt(i.metadata),createdAt:d,metadata:i.metadata??{}}],metadata:{localCreatePipeline:{status:"ready_local",target:r,checks:i.metadata??{}}}})}catch(i){return Y(s,{now:a(),reason:i instanceof Error?i.message:String(i),metadata:{reason:"local_create_checks_failed",target:r}})}}o(He,"applyApprovedLocalCreateImproveRun");function kt(e){return e.state==="applying_source"&&e.plan?.status==="approved"&&e.adapter.kind==="local"&&e.target.kind==="agent"}o(kt,"shouldApplyLocalCreatePipeline");function oe(e,t){return A(e,{state:t.state,blockedReason:t.blockedReason===void 0?e.blockedReason:t.blockedReason,checkRefs:X(e.checkRefs,t.checkRefs??[]),sourceRefs:X(e.sourceRefs,t.sourceRefs??[]),candidates:t.candidates??e.candidates,evaluationReceipts:t.evaluationReceipts??e.evaluationReceipts,metadata:{...e.metadata,...t.metadata??{}},updatedAt:t.now})}o(oe,"transitionCreatePipeline");function Y(e,t){return oe(e,{state:"blocked",now:t.now,blockedReason:t.reason,metadata:{localCreatePipeline:{status:"blocked",...t.metadata}}})}o(Y,"blockLocalCreatePipeline");function X(e,t){return Array.from(new Set([...e,...t].filter(Boolean)))}o(X,"mergeRefs");function Se(e){return`agent_candidate_${e}`}o(Se,"agentCandidateId");function wt(e){let t=M(e?.eval),a=typeof t?.total=="number"?t.total:null;return a===null?"Agent SDK checks and deterministic Evals passed.":`${a} Agent SDK Eval${a===1?"":"s"} passed.`}o(wt,"checkSummary");function se(e){let t=e.adapter;if(t.kind!=="local")throw new Error("Create/Improve target must use the local adapter.");if(e.target.kind!=="agent")throw new Error("Local agent source application requires an Agent target.");let a=t.sourcePath?.trim(),n=t.repoPath?.trim();if(!a)throw new Error("Local Create approval is missing a profile source path.");if(!n)throw new Error("Local Create approval is missing a profile repo path.");let r=t.activeProfile?.trim()||"default",s=k.resolve(a),i=k.resolve(n),d=qe(e.target.id)??xt(e)??St(e.objective),u=Tt(Et(e.plan?.defaultChatAction.key)??"chat",d),m=e.operation==="improve"&&d==="default"?s:k.join(s,"agents",d);return{activeProfile:r,agentId:d,defaultAction:u,repoPath:i,sourcePath:s,workspaceRoot:i,profileRelativePath:je(k.relative(i,s)),sourceRoot:m,sourceRootRelativePath:je(k.relative(i,m))}}o(se,"resolveLocalCreatePipelineTarget");async function ie(e){if(!z(e.target.workspaceRoot))throw new Error(`Profile repo path does not exist: ${e.target.workspaceRoot}`);if(!z(e.target.sourcePath))throw new Error(`Profile source path does not exist: ${e.target.sourcePath}`);if(await Ct(e.snapshot,e.target)){await e.appendRuntimeEvent(H({sessionId:e.session.id,turnId:e.turn.id,name:"create_improve.updated",source:"server",appId:e.session.appId,status:"completed",output:`Applied prepared harness ${e.snapshot.operation==="improve"?"Improve":"Create"} source for ${e.target.agentId}; running local checks.`,data:{phase:"prepared_source_apply_completed",runId:e.snapshot.id,target:e.target}}));return}await e.appendRuntimeEvent(H({sessionId:e.session.id,turnId:e.turn.id,name:"create_improve.updated",source:"server",appId:e.session.appId,status:"started",output:`Applying approved ${e.snapshot.operation==="improve"?"Improve":"Create"} plan with Codex in ${e.target.sourceRootRelativePath}.`,data:{phase:"source_apply_started",runId:e.snapshot.id,target:e.target}}));let t={...e.session,provider:"codex",cwd:e.target.workspaceRoot,workspaceKind:"local_project",workspaceId:e.session.workspaceId??`openpond-profile:${e.target.activeProfile}`,workspaceName:e.session.workspaceName??`OpenPond profile ${e.target.activeProfile}`},a=e.session.provider==="codex"?e.model:null,n=await e.ensureCodexRuntime(t,{approvalPolicy:"never",sandbox:"workspace-write",model:a,codexPermissionMode:"auto-review",codexReasoningEffort:e.codexReasoningEffort}),r=await n.client.startTurn({threadId:n.threadId,prompt:At(e.snapshot,e.target),cwd:e.target.workspaceRoot,model:a,approvalPolicy:"never",sandbox:"workspace-write"});await e.setProviderTurnId(r.turnId);try{await n.client.waitForTurn(r.turnId,ft)}catch(s){if(!$e(s,r.turnId)&&!It(s))throw s;let i=$e(s,r.turnId)?"timed out":"exited cleanly before returning a turn completion";if(await e.appendRuntimeEvent(H({sessionId:e.session.id,turnId:e.turn.id,name:"create_improve.updated",source:"server",appId:e.session.appId,status:"started",output:`Codex source application ${i}; checking for completed generated source before blocking.`,data:{phase:"source_apply_recovery_started",runId:e.snapshot.id,providerTurnId:r.turnId,reason:i,target:e.target}})),!await yt(e.target))throw s;await e.appendRuntimeEvent(H({sessionId:e.session.id,turnId:e.turn.id,name:"create_improve.updated",source:"server",appId:e.session.appId,status:"completed",output:`Recovered completed ${e.snapshot.operation==="improve"?"Improve":"Create"} source after Codex source application ${i} for ${e.target.agentId}; running local checks.`,data:{phase:"source_apply_recovered",runId:e.snapshot.id,providerTurnId:r.turnId,reason:i,target:e.target}}))}await e.appendRuntimeEvent(H({sessionId:e.session.id,turnId:e.turn.id,name:"create_improve.updated",source:"provider",appId:e.session.appId,status:"completed",output:`Codex completed approved ${e.snapshot.operation==="improve"?"Improve":"Create"} source application for ${e.target.agentId}.`,data:{phase:"source_apply_completed",runId:e.snapshot.id,providerTurnId:r.turnId,target:e.target}}))}o(ie,"runModelBackedLocalCreateSourceApplication");async function Ct(e,t,a=process.env){if(!Ae(a))return!1;let n=k.join(t.workspaceRoot,Te);if(!z(n))return!1;let r=JSON.parse(await Oe(n,"utf8")),s=M(r);if(s?.schema!=="openpond.harnessPreparedSource.v1")throw new Error(`${Te} must use schema openpond.harnessPreparedSource.v1.`);let i=M(s.agents),d=M(i?.[t.agentId]),u=Pt(d?.[e.operation]);if(!u)return!1;let m=ne(t.workspaceRoot,u.source,"source");if(!z(m))throw new Error(`Prepared harness source does not exist: ${u.source}`);await Ee(t.sourceRoot,{recursive:!0}),await xe(m,t.sourceRoot,{recursive:!0,force:!0});for(let c of u.registrations??[]){let g=ne(t.workspaceRoot,c.source,"registration source"),l=ne(t.workspaceRoot,c.target,"registration target");if(!z(g))throw new Error(`Prepared harness registration source does not exist: ${c.source}`);await Ee(k.dirname(l),{recursive:!0}),await xe(g,l,{force:!0})}return!0}o(Ct,"applyPreparedHarnessSourceApplication");function Pt(e){let t=M(e);if(!t||typeof t.source!="string"||!t.source.trim())return null;if(t.registrations!==void 0&&!Array.isArray(t.registrations))throw new Error("Prepared harness source registrations must be an array.");let a=(t.registrations??[]).map(n=>{let r=M(n);if(!r||typeof r.source!="string"||!r.source.trim()||typeof r.target!="string"||!r.target.trim())throw new Error("Prepared harness source registrations require source and target paths.");return{source:r.source,target:r.target}});return{source:t.source,registrations:a}}o(Pt,"asHarnessPreparedSourceOperation");function ne(e,t,a){if(k.isAbsolute(t))throw new Error(`Prepared harness ${a} must be relative to the profile repo.`);let n=k.resolve(e),r=k.resolve(n,t);if(r!==n&&!r.startsWith(`${n}${k.sep}`))throw new Error(`Prepared harness ${a} must stay inside the profile repo.`);return r}o(ne,"resolveHarnessManifestPath");function $e(e,t){return(e instanceof Error?e.message:String(e))===`codex turn ${t} timed out`}o($e,"isCodexTurnTimeoutError");function It(e){return(e instanceof Error?e.message:String(e)).startsWith("codex app-server exited with code 0")}o(It,"isCodexAppServerCleanExitError");async function yt(e){let t=Date.now()+ht;for(;Date.now()<t;){if(await bt(e))return!0;await Le(vt)}return!1}o(yt,"waitForTimedOutSourceApplication");async function bt(e){try{await V(e);let t=await _e(e);await Le(Rt),await V(e);let a=await _e(e);return t===a}catch{return!1}}o(bt,"localCreateSourceLayoutIsStable");async function _e(e){let t=[k.join(e.sourceRoot,"agent","agent.ts"),k.join(e.sourceRoot,"package.json"),k.join(e.repoPath,"openpond-profile.json"),k.join(e.sourcePath,"settings","profile.yaml")];return(await Promise.all(t.map(async n=>{let r=await Oe(n,"utf8");return`${n}:${r.length}:${r}`}))).join(`
|
|
2
|
+
import{a as Ae}from"./chunk-GW766ZSO.js";import{B as O,a as Pe,b as Ie}from"./chunk-B4RKHHF7.js";import{b as be}from"./chunk-YU3C6U5V.js";import{g as H}from"./chunk-557XSPVS.js";import{a as re,b as ye,j as A}from"./chunk-PWK5Z5S3.js";import{f as Ce}from"./chunk-NLQ2UPN2.js";import{D as we}from"./chunk-BKEDG3A4.js";import{n as $}from"./chunk-VVNV4NNW.js";import{a as o}from"./chunk-FTQLQJQV.js";import{existsSync as z}from"node:fs";import{cp as xe,mkdir as Ee,readFile as Oe}from"node:fs/promises";import k from"node:path";import{existsSync as L}from"node:fs";import{readFile as K}from"node:fs/promises";import q from"node:path";async function F(e){await V(e.target);let t={},a=new Set([`${e.target.sourceRootRelativePath}/.openpond/agent-inspect.json`,`${e.target.sourceRootRelativePath}/.openpond/action-registry.json`,`${e.target.sourceRootRelativePath}/.openpond/eval-results.json`]),n=[{name:"inspect",command:"inspect",args:["--json"]},{name:"build",command:"build"},{name:"validate",command:"validate",args:["--json"]},{name:"eval",command:"eval",args:["--json"]},{name:"direct-run",command:"run",args:[e.target.defaultAction,"--json","--input",JSON.stringify({prompt:e.snapshot.objective,channel:"openpond_chat"})]}];for(let r of n){let s=await O({cwd:e.target.sourceRoot,command:r.command,args:r.args,...r.command==="eval"&&e.requireEvalPass===!1?{throwOnFailure:!1}:{}});if(s.code!==0&&!(r.command==="eval"&&e.requireEvalPass===!1))throw new Error(s.stderr.trim()||s.stdout.trim()||`${r.command} failed with exit code ${s.code??"unknown"}`);let i=lt(s.stdout),d=mt(i);d&&a.add(q.join(e.target.sourceRootRelativePath,d)),t[r.name]={summary:pt(r.name,i),traceArtifactRef:d,stdout:s.stdout.trim().slice(0,4e3),stderr:s.stderr.trim().slice(0,4e3)}}return await dt(e.target,e.requireEvalPass!==!1),{checkRefs:[...a],metadata:t}}o(F,"runLocalCreatePipelineChecks");async function V(e){if(!L(e.sourceRoot))throw new Error(`Codex did not create the expected agent source root: ${e.sourceRoot}`);let t=q.join(e.sourceRoot,"agent","agent.ts");if(!L(t))throw new Error(`Codex did not create the expected SDK agent source: ${t}`);let a=q.join(e.repoPath,"openpond-profile.json");if(!L(a))throw new Error(`Codex did not update the profile repo manifest: ${a}`);let n=q.join(e.sourcePath,"settings","profile.yaml");if(!L(n))throw new Error(`Codex did not update the profile manifest: ${n}`);let s=JSON.parse(await K(a,"utf8")).profiles?.[e.activeProfile];if(!s)throw new Error(`openpond-profile.json does not register profile ${e.activeProfile}.`);if(!s.enabledAgents?.includes(e.agentId))throw new Error(`openpond-profile.json does not enable generated agent ${e.agentId}.`);let i=await K(n,"utf8");if(!i.includes(`id: ${e.agentId}`)&&!i.includes(`id: "${e.agentId}"`))throw new Error(`settings/profile.yaml does not register generated agent ${e.agentId}.`);let d=e.agentId==="default"?["agent/agent.ts","agent"]:[`agents/${e.agentId}`];if(!d.some(u=>i.includes(u)))throw new Error(`settings/profile.yaml does not point ${e.agentId} at ${d[0]}.`)}o(V,"assertLocalCreateSourceLayout");async function dt(e,t=!0){let a=q.join(e.sourceRoot,".openpond","action-registry.json"),n=q.join(e.sourceRoot,".openpond","eval-results.json");if(!L(a))throw new Error(`Generated source did not produce an action registry: ${a}`);if(!L(n))throw new Error(`Generated source did not produce eval results: ${n}`);let r=JSON.parse(await K(a,"utf8")),s=Array.isArray(r.actions)?r.actions:[];if(!new Set(s.map(c=>typeof c.id=="string"?c.id:null).filter(c=>!!c)).has(e.defaultAction))throw new Error(`Generated action registry does not expose default action ${e.defaultAction}.`);let d=s.filter(c=>typeof c.id=="string"&&(!W(c.label)||!W(c.description)||typeof c.timeoutSeconds!="number"));if(d.length>0)throw new Error(`Generated action registry has actions missing labels, descriptions, or timeout policies: ${d.map(c=>c.id).join(", ")}`);let u=Pe({actionCatalog:s.filter(c=>typeof c.id=="string").map(c=>({id:c.id,name:W(c.name),setupRequirements:ut(c.setupRequirements)??[]})),actionId:e.defaultAction});if(u.blockingRequirements.length>0)throw new Error(`Generated default action ${e.defaultAction} has unresolved required setup and cannot be ready_local: ${u.blockingRequirements.map(Ie).join("; ")}. Mark built-in/local fixture requirements ready or optional when they are satisfied, or leave the pipeline blocked until the setup is configured.`);let m=JSON.parse(await K(n,"utf8"));if(typeof m.summary?.total!="number"||m.summary.total<1)throw new Error("Generated source must define at least one deterministic SDK eval.");if(t&&m.summary.failed!==0)throw new Error("Generated source evals did not all pass.")}o(dt,"assertGeneratedSdkArtifacts");function lt(e){let t=e.trim();if(!t.startsWith("{")&&!t.startsWith("["))return null;try{return JSON.parse(t)}catch{return null}}o(lt,"parseJsonOutput");function E(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}o(E,"asRecord");function ut(e){return Array.isArray(e)?e.filter(t=>!!E(t)):null}o(ut,"recordArray");function mt(e){let t=E(e),a=W(t?.traceArtifactRef);return a?.startsWith(".openpond/")?a:null}o(mt,"traceRefFromCommandResult");function pt(e,t){let a=E(t);return a?e==="inspect"?{actionCount:Array.isArray(a.actionCatalog)?a.actionCatalog.length:null,defaultAction:E(a.agent)?.defaultAction??null,projectName:E(a.project)?.name??null}:e==="validate"?{status:a.status??null,errors:E(a.summary)?.errors??null,warnings:E(a.summary)?.warnings??null}:e==="eval"?E(a.summary):e==="direct-run"?{hasResult:!!E(a.result),resultKeys:Object.keys(E(a.result)??{})}:null:null}o(pt,"summaryFromCommandResult");function W(e){return typeof e=="string"&&e.trim()?e.trim():null}o(W,"stringValue");var gt="Approved local Create plans require model-backed SDK source application; no source mutation was performed.",ft=1800*1e3,Te=".openpond-harness-source-application.json",ht=300*1e3,vt=2*1e3,Rt=5*1e3;async function He(e,t={}){if(!kt(e))return e;let a=t.now??(()=>new Date().toISOString()),n=e.adapter;if(n.kind!=="local")return e;if(!t.session||!t.turn||!t.ensureCodexRuntime||!t.appendRuntimeEvent||!t.setProviderTurnId)return Y(e,{now:a(),reason:gt,metadata:{reason:"model_backed_source_application_required",sourcePath:n.sourcePath??null,repoPath:n.repoPath??null,activeProfile:n.activeProfile??null,operation:e.operation,requestedAgentId:e.target.kind==="agent"?e.target.id:null}});let r;try{r=se(e)}catch(i){return Y(e,{now:a(),reason:i instanceof Error?i.message:String(i),metadata:{reason:"local_create_target_unresolved"}})}try{await ie({snapshot:e,session:t.session,turn:t.turn,target:r,ensureCodexRuntime:t.ensureCodexRuntime,appendRuntimeEvent:t.appendRuntimeEvent,setProviderTurnId:t.setProviderTurnId,model:t.model??we,codexReasoningEffort:t.codexReasoningEffort})}catch(i){return Y(e,{now:a(),reason:i instanceof Error?i.message:String(i),metadata:{reason:"model_backed_source_application_failed",target:r}})}let s=oe(e,{state:"running_checks",now:a(),blockedReason:null,sourceRefs:[r.sourceRootRelativePath,k.join(r.profileRelativePath,"settings","profile.yaml"),"openpond-profile.json"],metadata:{localCreatePipeline:{status:"running_checks",target:r}},candidates:[{id:Se(e.id),target:{kind:"agent",id:r.agentId,displayName:e.target.displayName,defaultActionKey:r.defaultAction},status:"checking",git:null,parentCandidateId:null,tasksetRef:e.tasksetRef,authoringModelRef:t.model??null,allowedPaths:e.plan?.sourcePlan.map(i=>i.path)??[],sourceRefs:[r.sourceRootRelativePath,k.join(r.profileRelativePath,"settings","profile.yaml"),"openpond-profile.json"],artifactRefs:[],checkRefs:[],evaluationReceiptRefs:[],createdAt:e.createdAt,updatedAt:a(),metadata:{sourceAuthority:e.adapter.sourceAuthority}}]});await t.onSnapshot?.(s);try{let i=await(t.runChecks??F)({snapshot:s,target:r}),d=a(),u=Se(e.id),m=`agent_eval_${e.id}`;return oe(s,{state:"ready_local",now:d,blockedReason:null,checkRefs:i.checkRefs,candidates:s.candidates.map(c=>c.id===u?{...c,status:"accepted",checkRefs:X(c.checkRefs,i.checkRefs),evaluationReceiptRefs:X(c.evaluationReceiptRefs,[m]),updatedAt:d}:c),evaluationReceipts:[...s.evaluationReceipts.filter(c=>c.id!==m),{id:m,candidateId:u,target:{kind:"agent",id:r.agentId,displayName:e.target.displayName,defaultActionKey:r.defaultAction},evaluatorKind:"agent_sdk",subject:"candidate",sourceCommit:e.adapter.kind==="local"?e.adapter.localHead:null,sourceBranch:null,tasksetId:e.tasksetRef?.id??null,tasksetHash:e.tasksetRef?.contentHash??null,taskAttemptRefs:i.checkRefs.filter(c=>c.includes("eval")),status:"passed",publishGate:"passed",summaryCounts:null,evalRefs:i.checkRefs.filter(c=>c.includes("eval")),artifactRefs:i.checkRefs,summary:wt(i.metadata),createdAt:d,metadata:i.metadata??{}}],metadata:{localCreatePipeline:{status:"ready_local",target:r,checks:i.metadata??{}}}})}catch(i){return Y(s,{now:a(),reason:i instanceof Error?i.message:String(i),metadata:{reason:"local_create_checks_failed",target:r}})}}o(He,"applyApprovedLocalCreateImproveRun");function kt(e){return e.state==="applying_source"&&e.plan?.status==="approved"&&e.adapter.kind==="local"&&e.target.kind==="agent"}o(kt,"shouldApplyLocalCreatePipeline");function oe(e,t){return A(e,{state:t.state,blockedReason:t.blockedReason===void 0?e.blockedReason:t.blockedReason,checkRefs:X(e.checkRefs,t.checkRefs??[]),sourceRefs:X(e.sourceRefs,t.sourceRefs??[]),candidates:t.candidates??e.candidates,evaluationReceipts:t.evaluationReceipts??e.evaluationReceipts,metadata:{...e.metadata,...t.metadata??{}},updatedAt:t.now})}o(oe,"transitionCreatePipeline");function Y(e,t){return oe(e,{state:"blocked",now:t.now,blockedReason:t.reason,metadata:{localCreatePipeline:{status:"blocked",...t.metadata}}})}o(Y,"blockLocalCreatePipeline");function X(e,t){return Array.from(new Set([...e,...t].filter(Boolean)))}o(X,"mergeRefs");function Se(e){return`agent_candidate_${e}`}o(Se,"agentCandidateId");function wt(e){let t=M(e?.eval),a=typeof t?.total=="number"?t.total:null;return a===null?"Agent SDK checks and deterministic Evals passed.":`${a} Agent SDK Eval${a===1?"":"s"} passed.`}o(wt,"checkSummary");function se(e){let t=e.adapter;if(t.kind!=="local")throw new Error("Create/Improve target must use the local adapter.");if(e.target.kind!=="agent")throw new Error("Local agent source application requires an Agent target.");let a=t.sourcePath?.trim(),n=t.repoPath?.trim();if(!a)throw new Error("Local Create approval is missing a profile source path.");if(!n)throw new Error("Local Create approval is missing a profile repo path.");let r=t.activeProfile?.trim()||"default",s=k.resolve(a),i=k.resolve(n),d=qe(e.target.id)??xt(e)??St(e.objective),u=Tt(Et(e.plan?.defaultChatAction.key)??"chat",d),m=e.operation==="improve"&&d==="default"?s:k.join(s,"agents",d);return{activeProfile:r,agentId:d,defaultAction:u,repoPath:i,sourcePath:s,workspaceRoot:i,profileRelativePath:je(k.relative(i,s)),sourceRoot:m,sourceRootRelativePath:je(k.relative(i,m))}}o(se,"resolveLocalCreatePipelineTarget");async function ie(e){if(!z(e.target.workspaceRoot))throw new Error(`Profile repo path does not exist: ${e.target.workspaceRoot}`);if(!z(e.target.sourcePath))throw new Error(`Profile source path does not exist: ${e.target.sourcePath}`);if(await Ct(e.snapshot,e.target)){await e.appendRuntimeEvent(H({sessionId:e.session.id,turnId:e.turn.id,name:"create_improve.updated",source:"server",appId:e.session.appId,status:"completed",output:`Applied prepared harness ${e.snapshot.operation==="improve"?"Improve":"Create"} source for ${e.target.agentId}; running local checks.`,data:{phase:"prepared_source_apply_completed",runId:e.snapshot.id,target:e.target}}));return}await e.appendRuntimeEvent(H({sessionId:e.session.id,turnId:e.turn.id,name:"create_improve.updated",source:"server",appId:e.session.appId,status:"started",output:`Applying approved ${e.snapshot.operation==="improve"?"Improve":"Create"} plan with Codex in ${e.target.sourceRootRelativePath}.`,data:{phase:"source_apply_started",runId:e.snapshot.id,target:e.target}}));let t={...e.session,provider:"codex",cwd:e.target.workspaceRoot,workspaceKind:"local_project",workspaceId:e.session.workspaceId??`openpond-profile:${e.target.activeProfile}`,workspaceName:e.session.workspaceName??`OpenPond profile ${e.target.activeProfile}`},a=e.session.provider==="codex"?e.model:null,n=await e.ensureCodexRuntime(t,{approvalPolicy:"never",sandbox:"workspace-write",model:a,codexPermissionMode:"auto-review",codexReasoningEffort:e.codexReasoningEffort}),r=await n.client.startTurn({threadId:n.threadId,prompt:At(e.snapshot,e.target),cwd:e.target.workspaceRoot,model:a,approvalPolicy:"never",sandbox:"workspace-write"});await e.setProviderTurnId(r.turnId);try{await n.client.waitForTurn(r.turnId,ft)}catch(s){if(!$e(s,r.turnId)&&!It(s))throw s;let i=$e(s,r.turnId)?"timed out":"exited cleanly before returning a turn completion";if(await e.appendRuntimeEvent(H({sessionId:e.session.id,turnId:e.turn.id,name:"create_improve.updated",source:"server",appId:e.session.appId,status:"started",output:`Codex source application ${i}; checking for completed generated source before blocking.`,data:{phase:"source_apply_recovery_started",runId:e.snapshot.id,providerTurnId:r.turnId,reason:i,target:e.target}})),!await yt(e.target))throw s;await e.appendRuntimeEvent(H({sessionId:e.session.id,turnId:e.turn.id,name:"create_improve.updated",source:"server",appId:e.session.appId,status:"completed",output:`Recovered completed ${e.snapshot.operation==="improve"?"Improve":"Create"} source after Codex source application ${i} for ${e.target.agentId}; running local checks.`,data:{phase:"source_apply_recovered",runId:e.snapshot.id,providerTurnId:r.turnId,reason:i,target:e.target}}))}await e.appendRuntimeEvent(H({sessionId:e.session.id,turnId:e.turn.id,name:"create_improve.updated",source:"provider",appId:e.session.appId,status:"completed",output:`Codex completed approved ${e.snapshot.operation==="improve"?"Improve":"Create"} source application for ${e.target.agentId}.`,data:{phase:"source_apply_completed",runId:e.snapshot.id,providerTurnId:r.turnId,target:e.target}}))}o(ie,"runModelBackedLocalCreateSourceApplication");async function Ct(e,t,a=process.env){if(!Ae(a))return!1;let n=k.join(t.workspaceRoot,Te);if(!z(n))return!1;let r=JSON.parse(await Oe(n,"utf8")),s=M(r);if(s?.schema!=="openpond.harnessPreparedSource.v1")throw new Error(`${Te} must use schema openpond.harnessPreparedSource.v1.`);let i=M(s.agents),d=M(i?.[t.agentId]),u=Pt(d?.[e.operation]);if(!u)return!1;let m=ne(t.workspaceRoot,u.source,"source");if(!z(m))throw new Error(`Prepared harness source does not exist: ${u.source}`);await Ee(t.sourceRoot,{recursive:!0}),await xe(m,t.sourceRoot,{recursive:!0,force:!0});for(let c of u.registrations??[]){let g=ne(t.workspaceRoot,c.source,"registration source"),l=ne(t.workspaceRoot,c.target,"registration target");if(!z(g))throw new Error(`Prepared harness registration source does not exist: ${c.source}`);await Ee(k.dirname(l),{recursive:!0}),await xe(g,l,{force:!0})}return!0}o(Ct,"applyPreparedHarnessSourceApplication");function Pt(e){let t=M(e);if(!t||typeof t.source!="string"||!t.source.trim())return null;if(t.registrations!==void 0&&!Array.isArray(t.registrations))throw new Error("Prepared harness source registrations must be an array.");let a=(t.registrations??[]).map(n=>{let r=M(n);if(!r||typeof r.source!="string"||!r.source.trim()||typeof r.target!="string"||!r.target.trim())throw new Error("Prepared harness source registrations require source and target paths.");return{source:r.source,target:r.target}});return{source:t.source,registrations:a}}o(Pt,"asHarnessPreparedSourceOperation");function ne(e,t,a){if(k.isAbsolute(t))throw new Error(`Prepared harness ${a} must be relative to the profile repo.`);let n=k.resolve(e),r=k.resolve(n,t);if(r!==n&&!r.startsWith(`${n}${k.sep}`))throw new Error(`Prepared harness ${a} must stay inside the profile repo.`);return r}o(ne,"resolveHarnessManifestPath");function $e(e,t){return(e instanceof Error?e.message:String(e))===`codex turn ${t} timed out`}o($e,"isCodexTurnTimeoutError");function It(e){return(e instanceof Error?e.message:String(e)).startsWith("codex app-server exited with code 0")}o(It,"isCodexAppServerCleanExitError");async function yt(e){let t=Date.now()+ht;for(;Date.now()<t;){if(await bt(e))return!0;await Le(vt)}return!1}o(yt,"waitForTimedOutSourceApplication");async function bt(e){try{await V(e);let t=await _e(e);await Le(Rt),await V(e);let a=await _e(e);return t===a}catch{return!1}}o(bt,"localCreateSourceLayoutIsStable");async function _e(e){let t=[k.join(e.sourceRoot,"agent","agent.ts"),k.join(e.sourceRoot,"package.json"),k.join(e.repoPath,"openpond-profile.json"),k.join(e.sourcePath,"settings","profile.yaml")];return(await Promise.all(t.map(async n=>{let r=await Oe(n,"utf8");return`${n}:${r.length}:${r}`}))).join(`
|
|
3
3
|
---
|
|
4
4
|
`)}o(_e,"sourceLayoutFingerprint");function Le(e){return new Promise(t=>setTimeout(t,e))}o(Le,"sleep");function At(e,t){return[`Apply this already-approved OpenPond ${e.operation==="improve"?"Improve":"Create"} plan by editing the local profile repo source.`,"","This is the source-materialization step, not another plan review. Make the file changes, inspect the existing profile shape first, and leave the repo with a valid openpond-agent-sdk source project.","","Hard requirements:",`- Current working directory is the profile repo root: ${t.workspaceRoot}`,`- Active profile source path relative to cwd: ${t.profileRelativePath}`,`- Target agent id: ${t.agentId}`,`- Target generated source root: ${t.sourceRootRelativePath}`,`- Default action to expose: ${t.defaultAction}`,`- For a create request, create the new SDK project under ${t.profileRelativePath}/agents/<agent-id>; do not overwrite ${t.profileRelativePath}/agent/agent.ts or unrelated existing agents.`,"- For an edit request, only edit the approved target agent source and shared profile registration files required for that edit.",`- Update openpond-profile.json and ${t.profileRelativePath}/settings/profile.yaml so the generated agent is registered, enabled, and catalog-discoverable.`,"- The generated source must be an actual openpond-agent-sdk project with package.json, tsconfig.json when needed, agent/agent.ts, deterministic evals, and action metadata.","- Preserve the approved objective and any captured conversation context in source metadata, instructions, fixture comments, or eval intent so source readback can prove what was captured.","- Treat plan.metadata.actionShape as the approved public action-shape decision when actionShapeDecisionSource is request_metadata or another explicit planner source.","- If plan.metadata.actionShapeDecisionSource is default_chat_fallback, use the approved objective and captured context to choose the actual generated public actions: keep chat-only for conversational assistants, create direct actions for explicit repeatable runs/workflows/artifact transforms, and expose both when the user needs normal chat plus a repeatable catalog action.","- When refining a default fallback during source materialization, encode the chosen public actions in generated SDK action metadata and evals; do not use business-example hardcoding.","- Every public action must have a stable action id, label, description, input/output schema when useful, timeout policy, artifact policy, setup requirement metadata, and deterministic eval coverage.","- The default action must be invocable through the local profile setup gate after checks. Do not leave built-in openpond_chat or committed local fixture/artifact requirements as unresolved required setup; mark those rows ready/satisfied or optional when the generated source already provides them.","- If the approved objective names multiple capabilities or direct action ids, implement each requested public action instead of collapsing everything into a single chat-only action.","- If a capability writes an artifact, declare it in the action artifact policy and assert it from at least one eval.","- Package scripts must be portable from the generated source root; do not hardcode absolute machine-local paths to this repository or CLI.","- Do not hardcode secrets, API keys, provider tokens, or user credentials in source, evals, traces, fixtures, or comments.","- Use realistic deterministic fixture-backed behavior when external systems are unavailable. Declare setup requirements rather than pretending live integrations exist.","- Run or prepare the source so these commands can pass from the target source root: inspect, build, validate, eval, and run of the default action.","","Approved Create request and plan:",JSON.stringify({run:e,plan:e.plan,questions:e.questions,workflowCapture:e.workflowCapture},null,2)].join(`
|
|
5
5
|
`)}o(At,"localCreatePipelinePrompt");function xt(e){for(let t of e.plan?.sourcePlan??[]){let a=/^agents\/([^/]+)/.exec(t.path),n=qe(a?.[1]);if(n)return n}return null}o(xt,"agentIdFromSourcePlan");function qe(e){let t=e?.trim();return t&&t.toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||null}o(qe,"normalizeAgentId");function Et(e){return e?.trim()||null}o(Et,"normalizeActionId");function M(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}o(M,"asRecord");function Tt(e,t){let a=`${t}.`;return e.startsWith(a)?e.slice(a.length)||"chat":e}o(Tt,"sourceActionIdForAgent");function St(e){return e.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,64).replace(/-+$/g,"")||"generated-agent"}o(St,"slugFromObjective");function je(e){return e.replace(/\\/g,"/")||"."}o(je,"normalizeRelativePath");import de from"node:path";function Pa(e){let t=e.sources.length?e.sources.map(r=>({kind:"conversation",id:r.id,sourceHash:r.sourceHash,excerptRef:`training-source:${r.id}`})):[{kind:"manual_intent",id:`manual_intent_${$(e.objective).slice(0,24)}`,sourceHash:$({objective:e.objective}),excerptRef:null}],a={consent:{status:"granted",scope:e.sources.length?"selected_turns":"direct_intent",reviewedBy:"local_user",reviewedAt:e.timestamp},sources:t,reviewerIntent:e.objective},n=$(a);return re.parse({schemaVersion:"openpond.createImprove.evidenceSnapshot.v1",id:`evidence_snapshot_${n.slice(0,24)}`,contentHash:n,...a,createdAt:e.timestamp,metadata:{immutable:!0,sourceCount:t.length}})}o(Pa,"createEvidenceSnapshot");function Ia(e){let t={runId:e.run.id,candidateId:e.candidateId,tasksetId:e.run.tasksetRef?.id??null,tasksetRevision:e.run.tasksetRef?.revision??null,tasksetHash:e.run.tasksetRef?.contentHash??null,outcome:e.outcome,reason:e.reason,receiptRefs:e.receiptRefs},a=$(t);return re.parse({schemaVersion:"openpond.createImprove.evidenceSnapshot.v1",id:`evidence_outcome_${a.slice(0,24)}`,contentHash:a,consent:{status:"granted",scope:"direct_intent",reviewedBy:e.run.actor.id??"local_user",reviewedAt:e.timestamp},sources:[{kind:"artifact",id:`${e.outcome}:${e.run.id}:${e.candidateId}`,sourceHash:a,excerptRef:e.receiptRefs[0]??null}],reviewerIntent:e.reason,createdAt:e.timestamp,metadata:{immutable:!0,evidenceKind:"candidate_outcome",outcome:e.outcome,priorTasksetRevision:e.run.tasksetRef?.revision??null,recommendedNextTasksetRevision:e.run.tasksetRef?e.run.tasksetRef.revision+1:1,receiptRefs:e.receiptRefs}})}o(Ia,"createOutcomeEvidenceSnapshot");function ya(e){let t=e.proposal?$t(e.proposal):{kind:"model",rationale:["A reviewed training plan selected Model execution for this Taskset."],confidence:1};return ye.parse({schemaVersion:"openpond.createImprove.tasksetRef.v1",id:e.taskset.id,revision:e.taskset.revision,contentHash:e.taskset.contentHash,evidenceSnapshotIds:e.evidenceSnapshotIds,policyBoundary:e.taskset.policy,targetRecommendation:t,authoringSplitRefs:e.taskset.tasks.filter(a=>a.split==="train"||a.split==="validation").map(a=>a.id),privateSplitRefs:e.taskset.tasks.filter(a=>a.split==="test"||a.split==="frozen_eval").map(a=>a.id),approvedBy:"local_user",approvedAt:e.approvedAt,metadata:{immutable:!0,taskCreationProposalId:e.proposal?.id??null}})}o(ya,"createTasksetRef");function Me(e,t){if(e.id!==t.id||e.revision!==t.revision||e.contentHash!==t.contentHash)throw new Error(`Taskset lineage mismatch: the run approved ${e.id}@${e.revision} (${e.contentHash}), but execution resolved ${t.id}@${t.revision} (${t.contentHash}).`)}o(Me,"assertTasksetRefMatches");function $t(e){let t=_t(e);return{kind:t,rationale:e.diagnosis.rationale.length?e.diagnosis.rationale:[`${t} best matches the reviewed behavior boundary.`],confidence:e.diagnosis.confidence}}o($t,"recommendationForProposal");function _t(e){return e.diagnosis.trainingEligible?"model":e.diagnosis.intervention==="retrieval"?"configuration":"agent"}o(_t,"targetKindForProposal");async function Ge(e){let t=e.run.tasksetRef;if(!t)throw new Error("Agent Taskset execution requires an approved Taskset ref.");if(Me(t,e.taskset),e.taskset.environment.kind!=="agent")throw new Error(`Taskset ${e.taskset.id} is not an Agent-shaped Taskset.`);let a=new Set(t.privateSplitRefs),n=e.taskset.tasks.filter(c=>a.has(c.id));if(!n.length||n.length!==a.size)throw new Error("The approved Agent Taskset private split could not be resolved exactly.");let r={tasksetId:t.id,tasksetRevision:t.revision,tasksetHash:t.contentHash,taskRefs:n.map(c=>c.id),seed:0,timeoutMs:e.taskset.environment.defaultTimeoutMs,entrypoint:e.taskset.environment.entrypoint,evaluator:"openpond-agent-sdk-taskset.v1"},s=$(r),i=[],d=[],u=[];for(let c of n){let g=new Date().toISOString(),l=Date.now(),p=await(e.execute??O)({cwd:e.cwd,command:"run",args:[e.taskset.environment.entrypoint,"--json","--input",JSON.stringify({...c.input,channel:"manual"})],timeoutMs:e.taskset.environment.defaultTimeoutMs,throwOnFailure:!1}),x=p.code===0?jt(p.stdout):null,b=`agent_task_attempt_${$([e.run.id,e.subject,e.sourceCommit,t.contentHash,c.id,0]).slice(0,24)}`,f=Ot(x?.traceArtifactRef),P=Ce.parse({schemaVersion:"openpond.taskAttempt.v1",id:b,tasksetId:e.taskset.id,taskId:c.id,split:c.split,attempt:0,seed:0,modelRef:null,startedAt:g,completedAt:new Date().toISOString(),output:ce(x?.result),runtimeEventRefs:f?[f]:[],artifactRefs:f?[f]:[],privilegedOutcomeRef:c.privilegedContextRef,infrastructureError:p.code===0?null:p.stderr.trim().slice(0,1e4)||`Agent SDK action exited with code ${String(p.code)}.`,costUsd:0,latencyMs:Math.max(0,Date.now()-l),userInterventions:0,metadata:{executor:"openpond-agent-sdk",trustedTasksetExecution:!0,tasksetRevision:t.revision,tasksetHash:t.contentHash,sourceCommit:e.sourceCommit,subject:e.subject,executionContractHash:s}}),R=await e.gradeAttempt({tasksetId:e.taskset.id,taskId:c.id,attempt:P});d.push(P.id),i.push(R),f&&u.push(f)}let m=i.filter(c=>c.passed).length;return{taskAttemptRefs:d,gradeRefs:i.map(c=>c.id),taskRefs:n.map(c=>c.id),artifactRefs:[...new Set(u)],total:i.length,passed:m,failed:i.length-m,executionContractHash:s}}o(Ge,"executeAgentTasksetEvaluation");function jt(e){let t=e.trim();if(!t)return null;try{return ce(JSON.parse(t))}catch{let a=t.indexOf("{"),n=t.lastIndexOf("}");if(a<0||n<=a)return null;try{return ce(JSON.parse(t.slice(a,n+1)))}catch{return null}}}o(jt,"parseAgentRunPayload");function ce(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}o(ce,"recordValue");function Ot(e){return typeof e=="string"&&e.trim()?e.trim():null}o(Ot,"stringValue");async function le(e){let t=await(e.execute??O)({cwd:e.cwd,command:"eval",args:["--json"],throwOnFailure:!1}),a=qt(t.stdout),n=G(a.summary?.total)??0,r=G(a.summary?.passed)??0,s=G(a.summary?.failed)??Math.max(0,n-r),i=a.publishGate?.status==="passed"?"passed":"failed",d=Array.isArray(a.results)?a.results:[],u=d.map(R=>I(R.name)).filter(R=>!!R),m=new Set([de.posix.join(e.sourceRef,".openpond/eval-results.json")]);for(let R of d){let _=I(R.traceArtifactRef);_&&m.add(de.posix.join(e.sourceRef,Ne(_)));for(let J of De(R.artifacts))m.add(de.posix.join(e.sourceRef,Ne(J)))}let c=e.run.tasksetRef?await Ge({run:e.run,taskset:Ht(e.taskset),cwd:e.cwd,sourceCommit:e.sourceCommit,subject:e.subject,gradeAttempt:Lt(e.gradeAttempt),execute:e.execute}):null;for(let R of c?.artifactRefs??[])m.add(R);let g=n+(c?.total??0),l=r+(c?.passed??0),p=s+(c?.failed??0),x=[...new Set([...u,...c?.taskRefs??[]])],b=i==="passed"&&(c?.failed??0)===0?"passed":"failed",f=t.code===0&&p===0&&b==="passed"?"passed":"failed",P=e.timestamp??new Date().toISOString();return{id:`agent_eval_${e.run.id}_${e.subject}_${e.sourceCommit.slice(0,12)}`,candidateId:e.candidateId,target:e.run.target,evaluatorKind:"agent_sdk",subject:e.subject,sourceCommit:e.sourceCommit,sourceBranch:e.sourceBranch,tasksetId:e.run.tasksetRef?.id??null,tasksetHash:e.run.tasksetRef?.contentHash??null,taskAttemptRefs:c?.taskAttemptRefs??u,status:f,publishGate:b,summaryCounts:{total:g,passed:l,failed:p},evalRefs:x,artifactRefs:[...m],summary:`${e.subject==="active"?"Active":e.subject==="candidate"?"Candidate":"Post-release"} Agent SDK and Taskset Evals: ${l}/${g} passed${b==="failed"?"; publish gate failed":""}.`,createdAt:P,metadata:{schemaVersion:I(a.schemaVersion),schema:I(a.schema),project:{name:I(a.project?.name),version:I(a.project?.version)},source:{configPath:I(a.source?.configPath),configHash:I(a.source?.configHash)},publishGate:{total:G(a.publishGate?.total),passed:G(a.publishGate?.passed),failed:G(a.publishGate?.failed),blockingFailures:De(a.publishGate?.blockingFailures)},command:{code:t.code,timedOut:t.timedOut,stderr:t.stderr.trim().slice(0,4e3)},trustedTasksetExecution:!!c,tasksetRevision:e.run.tasksetRef?.revision??null,executionContractHash:c?.executionContractHash??null,gradeRefs:c?.gradeRefs??[],results:d.map(R=>({name:I(R.name),status:I(R.status),error:I(R.error),traceArtifactRef:I(R.traceArtifactRef)}))}}}o(le,"runNormalizedAgentEvaluation");function Ht(e){if(!e)throw new Error("The approved Agent Taskset could not be resolved for evaluation.");return e}o(Ht,"requireTaskset");function Lt(e){if(!e)throw new Error("Trusted Taskset grading is unavailable for Agent evaluation.");return e}o(Lt,"requireGradeAttempt");function qt(e){let t=e.trim();if(!t)throw new Error("Agent SDK Eval returned no JSON output.");try{return JSON.parse(t)}catch{let a=t.indexOf("{"),n=t.lastIndexOf("}");if(a>=0&&n>a)try{return JSON.parse(t.slice(a,n+1))}catch{}throw new Error("Agent SDK Eval returned invalid JSON output.")}}o(qt,"parseAgentEvalPayload");function Ne(e){return e.replace(/^\.\//,"").replaceAll("\\","/")}o(Ne,"normalizeRef");function I(e){return typeof e=="string"&&e.trim()?e.trim():null}o(I,"stringValue");function G(e){return typeof e=="number"&&Number.isFinite(e)?e:null}o(G,"numberValue");function De(e){return Array.isArray(e)?e.map(I).filter(t=>!!t):[]}o(De,"stringArray");import{existsSync as Z}from"node:fs";import{mkdir as Xe,realpath as Qe,rm as he,writeFile as Ft}from"node:fs/promises";import Ze from"node:os";import S from"node:path";import{existsSync as ue}from"node:fs";import{cp as Mt,lstat as Gt,mkdir as Be,rm as Nt,symlink as Dt,writeFile as Bt}from"node:fs/promises";import w from"node:path";function Ue(e,t){let a=C(t.profileRelativePath),n=[C(t.sourceRootRelativePath),w.posix.join(a,"evals"),w.posix.join(a,"settings"),w.posix.join(a,"package.json"),w.posix.join(a,"tsconfig.json"),w.posix.join(a,"openpond.lock"),w.posix.join(a,".gitignore"),"openpond-profile.json"],r=(e.plan?.sourcePlan??[]).flatMap(s=>{let i=C(s.path);return i?i==="."||i.startsWith(`${a}/`)?[i]:[w.posix.join(a,i),i]:[]});return[...new Set([...n,...r])]}o(Ue,"allowedAgentImprovementPaths");function Je(e,t){let a=C(e);return t.some(n=>a===n||a.startsWith(`${n}/`))}o(Je,"pathAllowed");function me(e){return C(e).split("/").some(a=>a==="node_modules"||a===".openpond"||a==="artifacts")}o(me,"isCandidateRuntimePath");function Fe(e){return e.split(/\r?\n/).map(t=>t.trimEnd()).filter(Boolean).map(t=>{let a=t.slice(3),n=a.split(" -> ");return C(n.at(-1)??a)})}o(Fe,"parseGitStatusPaths");async function pe(e,t,a){let n=await e("git",["diff","--name-only","-z",a,"--","."],t);return h(n,"Unable to inspect Agent candidate paths."),[...new Set(n.stdout.split("\0").map(C).filter(r=>r!=="."&&!me(r)))]}o(pe,"gitChangedPaths");async function ge(e){for(let t of e.paths){let a=await B(e.command,e.repoPath,["rev-parse",`${e.commit}:${t}`]),n=w.join(e.repoPath,...t.split("/"));if(!a){if(ue(n))return!1;continue}if(!ue(n))return!1;let r=await B(e.command,e.repoPath,["hash-object","--",t]);if(!r||r!==a)return!1}return!0}o(ge,"workingTreeMatchesCommit");async function ze(e,t){let a=new Set(["node_modules",w.posix.join(C(e.profileRelativePath),"node_modules"),w.posix.join(C(e.sourceRootRelativePath),"node_modules")]);for(let n of a){let r=w.join(e.repoPath,...n.split("/")),s=w.join(t,...n.split("/"));!await Jt(r)||ue(s)||(await Be(w.dirname(s),{recursive:!0}),await Dt(r,s,process.platform==="win32"?"junction":"dir"))}}o(ze,"linkCandidateDependencies");async function We(e){let t=await e.command("git",["diff","--binary","HEAD","--",".",":(exclude)**/tasksets/**"],e.repoPath);if(h(t,"Unable to capture active Profile changes."),t.stdout){let i=w.join(e.workspaceRoot,"active-profile.patch");await Bt(i,t.stdout,"utf8");let d=await e.command("git",["apply","--whitespace=nowarn",i],e.worktreePath);h(d,"Unable to apply active Profile changes to the candidate baseline."),await Nt(i,{force:!0})}let a=await e.command("git",["ls-files","--others","--exclude-standard","-z"],e.repoPath);h(a,"Unable to inspect untracked Profile source.");for(let i of a.stdout.split("\0").filter(Ut)){let d=w.join(e.repoPath,...i.split("/")),u=w.join(e.worktreePath,...i.split("/"));await Be(w.dirname(u),{recursive:!0}),await Mt(d,u,{recursive:!0,preserveTimestamps:!0})}let n=await e.command("git",["add","-A"],e.worktreePath);h(n,"Unable to stage the active Profile snapshot.");let r=await e.command("git",["diff","--cached","--quiet"],e.worktreePath);if(r.code===0)return;r.code!==1&&h(r,"Unable to inspect the active Profile snapshot.");let s=await e.command("git",["commit","-m","Snapshot active Profile before OpenPond improvement"],e.worktreePath,Q());h(s,"Unable to commit the active Profile snapshot.")}o(We,"snapshotActiveProfileChanges");function Ut(e){return e?!C(e).split("/").some(a=>a==="node_modules"||a===".openpond"||a==="artifacts"||a==="tasksets"):!1}o(Ut,"snapshotEligiblePath");function Q(){return{GIT_AUTHOR_NAME:process.env.GIT_AUTHOR_NAME||"OpenPond",GIT_AUTHOR_EMAIL:process.env.GIT_AUTHOR_EMAIL||"openpond@example.invalid",GIT_COMMITTER_NAME:process.env.GIT_COMMITTER_NAME||"OpenPond",GIT_COMMITTER_EMAIL:process.env.GIT_COMMITTER_EMAIL||"openpond@example.invalid"}}o(Q,"gitIdentityEnv");async function Jt(e){try{return(await Gt(e)).isDirectory()}catch{return!1}}o(Jt,"directoryExists");async function Ke(e,t,a){let n=await e("gh",["pr","list","--head",a,"--state","all","--json","number,url,state,mergedAt,mergeCommit,baseRefName,headRefName","--limit","20"],t);h(n,"Unable to inspect existing Agent improvement pull requests.");let r=JSON.parse(n.stdout);return Array.isArray(r)?r.filter(s=>!!(s&&typeof s=="object")):[]}o(Ke,"listPullRequestsForBranch");function fe(e,t=new Date().toISOString(),a=new Date().toISOString()){let n=typeof e.number=="number"?e.number:Number(e.number),r=typeof e.state=="string"?e.state.toLowerCase():"",i=N(e.mergedAt)||r==="merged"?"merged":r==="open"?"open":"closed",d=e.mergeCommit&&typeof e.mergeCommit=="object"?e.mergeCommit:null,u=N(d?.oid)??N(e.mergeCommit),m=N(e.url),c=N(e.baseRefName),g=N(e.headRefName);if(!Number.isInteger(n)||n<=0||!m||!c||!g)throw new Error("GitHub returned an incomplete pull request payload.");return{provider:"github",number:n,url:m,state:i,baseBranch:c,headBranch:g,mergeCommit:u,openedAt:t,updatedAt:a}}o(fe,"normalizePullRequest");function Ve(e,t){return`openpond/improve/${D(t)}/${D(e.id).slice(0,36)}`}o(Ve,"candidateBranch");function U(e){if(!e.worktreePath)throw new Error("Agent candidate worktree is unavailable.");return e.worktreePath}o(U,"requireWorktreePath");function Ye(e){let t=e.replace(/^git@github\.com:/i,"").replace(/^https?:\/\/github\.com\//i,"").replace(/\.git$/i,"").replace(/^\/+|\/+$/g,"");return/^[^/]+\/[^/]+$/.test(t)?t:null}o(Ye,"githubRepoFromRemote");function C(e){return e.replaceAll("\\","/").replace(/^\.\//,"").replace(/^\/+|\/+$/g,"")||"."}o(C,"normalizeRepoPath");function D(e){return e.toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"candidate"}o(D,"safePathSegment");async function y(e,t,a,n){let r=await e("git",a,t);h(r,n);let s=r.stdout.trim();if(!s)throw new Error(n);return s}o(y,"requiredGitText");async function B(e,t,a){let n=await e("git",a,t);return n.code===0&&n.stdout.trim()?n.stdout.trim():null}o(B,"optionalGitText");function h(e,t){if(e.code!==0)throw new Error(e.stderr.trim()||e.stdout.trim()||t)}o(h,"assertCommand");function N(e){return typeof e=="string"&&e.trim()?e.trim():null}o(N,"stringValue");function T(e,t,a,n={}){return be(e,t,a,n)}o(T,"defaultCommandRunner");function et(e,t){let a=U(t);if(!Z(a))throw new Error("The existing Agent candidate worktree is no longer available.");let n=C(e.profileRelativePath),r=C(e.sourceRootRelativePath);return{target:{...e,repoPath:a,workspaceRoot:a,sourcePath:S.join(a,...n.split("/")),sourceRoot:S.join(a,...r.split("/"))},git:t}}o(et,"restoreAgentImprovementWorkspace");async function tt(e){let t=e.command??T,a=await y(t,e.target.repoPath,["rev-parse","--show-toplevel"],"Profile source is not a Git repository."),[n,r]=await Promise.all([Qe(a),Qe(e.target.repoPath)]);if(n!==r)throw new Error("Profile repo path does not match the Git repository root.");let s=await t("git",["status","--porcelain=v1","-uall"],a);h(s,"Unable to inspect Profile Git status.");let[i,d,u]=await Promise.all([y(t,a,["rev-parse","HEAD"],"Profile Git repo has no HEAD commit."),y(t,a,["branch","--show-current"],"Profile Git repo must be on a branch."),B(t,a,["remote","get-url","origin"])]);if(e.run.adapter.kind==="local"&&e.run.adapter.localHead&&e.run.adapter.localHead!==i)throw new Error(`Profile source changed from ${e.run.adapter.localHead.slice(0,12)} to ${i.slice(0,12)}. Re-plan the improvement against the current source.`);let m=Ve(e.run,e.target.agentId),c=S.join(Ze.tmpdir(),"openpond-agent-improvements",D(S.basename(a)||"profile"),D(e.run.id)),g=S.join(c,"repo");await Xe(c,{recursive:!0});let l=await t("git",["show-ref","--verify","--quiet",`refs/heads/${m}`],a);if(Z(g)&&await B(t,g,["branch","--show-current"])!==m&&(await t("git",["worktree","remove","--force",g],a),await he(c,{recursive:!0,force:!0}),await Xe(c,{recursive:!0})),!Z(g)){let P=l.code===0?["worktree","add",g,m]:["worktree","add","-b",m,g,i],R=await t("git",P,a);h(R,"Unable to create the Agent candidate worktree.")}s.stdout.trim()&&await We({command:t,repoPath:a,worktreePath:g,workspaceRoot:c});let p=await y(t,g,["rev-parse","HEAD"],"Agent candidate worktree has no baseline commit.");if(await y(t,g,["rev-parse","HEAD"],"Agent candidate worktree has no HEAD commit.")!==p)throw new Error("Agent candidate baseline could not be resolved.");await ze(e.target,g);let b=C(e.target.profileRelativePath),f=C(e.target.sourceRootRelativePath);return{target:{...e.target,repoPath:g,workspaceRoot:g,sourcePath:S.join(g,...b.split("/")),sourceRoot:S.join(g,...f.split("/"))},git:{baseBranch:d,baseCommit:p,branch:m,headCommit:null,remoteName:"origin",remoteUrl:u,worktreePath:g,changedPaths:[],diffStat:null,pullRequest:null}}}o(tt,"prepareAgentImprovementWorkspace");async function at(e){let t=e.command??T,a=U(e.workspace.git),n=await t("git",["status","--porcelain=v1","-uall"],a);h(n,"Unable to inspect Agent candidate changes.");let r=Fe(n.stdout).filter(g=>!me(g));if(r.length===0)throw new Error("The Agent improvement produced no source changes.");let s=Ue(e.run,e.activeTarget),i=r.filter(g=>!Je(g,s));if(i.length>0)throw new Error(`Agent candidate changed paths outside the approved scope: ${i.join(", ")}`);let d=await t("git",["add","--",...r],a);h(d,"Unable to stage Agent candidate changes.");let u=await t("git",["commit","-m",`Improve ${e.run.target.displayName??e.activeTarget.agentId} via OpenPond`],a,Q());h(u,"Unable to commit Agent candidate changes.");let m=await y(t,a,["rev-parse","HEAD"],"Agent candidate commit was not created."),c=await B(t,a,["diff","--stat",`${e.workspace.git.baseCommit}..${m}`]);return{...e.workspace.git,headCommit:m,changedPaths:r,diffStat:c}}o(at,"commitAgentImprovementCandidate");async function Va(e){let t=e.command??T,a=U(e.git);if(!e.git.headCommit)throw new Error("Agent candidate has no commit to push.");if(!e.git.remoteUrl||!Ye(e.git.remoteUrl))throw new Error("Agent candidate is ready locally. Configure a GitHub origin remote before opening a pull request.");let n=await t("git",["push","--set-upstream",e.git.remoteName,e.git.branch],a);h(n,"Unable to push the Agent candidate branch.");let r=await Ke(t,a,e.git.branch);if(r.length>0)return fe(r[0],e.timestamp);let s=`Improve ${e.run.target.displayName??e.run.target.id??"Agent"}`,i=["## OpenPond Agent improvement","",e.run.objective,"","## Evaluation","",e.evaluationSummary,"",`Create/Improve run: \`${e.run.id}\``,`Base commit: \`${e.git.baseCommit}\``,`Candidate commit: \`${e.git.headCommit}\``].join(`
|