openpond 0.2.59 → 0.2.60
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/README.md +27 -0
- package/dist/app-server.d.ts +7 -0
- package/dist/app-server.js +1 -1
- package/dist/chunks/acp-ARBNMIPT.js +2 -0
- package/dist/chunks/acp-agent-53COYDHB.js +21 -0
- package/dist/chunks/{actions-command-JJ3CU7J6.js → actions-command-6YSZ7EJS.js} +1 -1
- package/dist/chunks/{app-layer-KAUZAHGE.js → app-layer-TVG7KTW6.js} +1 -1
- package/dist/chunks/{app-server-connected-apps-SXGZOUJJ.js → app-server-connected-apps-K62M6LCT.js} +1 -1
- package/dist/chunks/{app-server-evaluations-N4OMTPCI.js → app-server-evaluations-RM6WXX3H.js} +1 -1
- package/dist/chunks/app-server-harness-services-RLKMWOQ4.js +2 -0
- package/dist/chunks/app-server-runtime-OKMEHNEU.js +2 -0
- package/dist/chunks/apps-YWZL2H34.js +2 -0
- package/dist/chunks/{chunk-JUQMSHNR.js → chunk-23P2O7PH.js} +1 -1
- package/dist/chunks/{chunk-PF5R6CMP.js → chunk-2GICDASL.js} +1 -1
- package/dist/chunks/{chunk-6MI4KKWF.js → chunk-2ITZW2CN.js} +1 -1
- package/dist/chunks/chunk-2MMCZHKL.js +2 -0
- package/dist/chunks/{chunk-EOBHQ3JT.js → chunk-2PAJCXFC.js} +1 -1
- package/dist/chunks/{chunk-GYJQKCEO.js → chunk-2RNCXDJC.js} +1 -1
- package/dist/chunks/{chunk-APB2STJK.js → chunk-2SUMZ73C.js} +1 -1
- package/dist/chunks/{chunk-DZUN5YWB.js → chunk-3CWRTKHY.js} +1 -1
- package/dist/chunks/{chunk-TRQQNFMO.js → chunk-44LWH5U6.js} +1 -1
- package/dist/chunks/{chunk-BVQWVIGK.js → chunk-52KIORRX.js} +1 -1
- package/dist/chunks/{chunk-TG7P7BSV.js → chunk-5RHYSQZ5.js} +1 -1
- package/dist/chunks/{chunk-3QIB5FXI.js → chunk-5ZBLCWEJ.js} +1 -1
- package/dist/chunks/{chunk-25JDHAZ5.js → chunk-637UACKH.js} +1 -1
- package/dist/chunks/{chunk-VRODAXFS.js → chunk-655DQ6AX.js} +26 -26
- package/dist/chunks/{chunk-N4FFQPLR.js → chunk-6GWOVHIG.js} +1 -1
- package/dist/chunks/chunk-6HQB3MQO.js +2 -0
- package/dist/chunks/{chunk-GOPFFQZU.js → chunk-7LZISGTA.js} +2 -2
- package/dist/chunks/{chunk-MMQRHR3V.js → chunk-7RC5WPVT.js} +1 -1
- package/dist/chunks/{chunk-H6IW2R22.js → chunk-7YTHEMWI.js} +1 -1
- package/dist/chunks/{chunk-PCSIOUHF.js → chunk-A3L74U3W.js} +1 -1
- package/dist/chunks/{chunk-XMKCCLGB.js → chunk-A66CSUBJ.js} +1 -1
- package/dist/chunks/{chunk-OUVIWDL2.js → chunk-AGVOGPAZ.js} +1 -1
- package/dist/chunks/{chunk-U2MAPON2.js → chunk-AW5Q6NXT.js} +1 -1
- package/dist/chunks/{chunk-7AVNZF36.js → chunk-B46HZ3MX.js} +1 -1
- package/dist/chunks/{chunk-KGNCKIFP.js → chunk-BIPQCJ5V.js} +1 -1
- package/dist/chunks/{chunk-776WNDV2.js → chunk-BIQ33JV5.js} +1 -1
- package/dist/chunks/{chunk-JFXWI3EN.js → chunk-BK63OQRW.js} +1 -1
- package/dist/chunks/{chunk-BO5JZYWG.js → chunk-CFSIU6CW.js} +1 -1
- package/dist/chunks/{chunk-WC42WOLG.js → chunk-D3RRUWNN.js} +1 -1
- package/dist/chunks/{chunk-X4OSOOSU.js → chunk-D4UX2O45.js} +1 -1
- package/dist/chunks/{chunk-GJ2ZJFDD.js → chunk-DG4TYVPF.js} +1 -1
- package/dist/chunks/{chunk-QIKWJ2AA.js → chunk-DGIEXZJV.js} +1 -1
- package/dist/chunks/{chunk-JMBQYBPI.js → chunk-DIGX56JY.js} +1 -1
- package/dist/chunks/{chunk-4GPXTISD.js → chunk-DISNCX6R.js} +1 -1
- package/dist/chunks/{chunk-EWOSLZDX.js → chunk-DK7IKI7O.js} +1 -1
- package/dist/chunks/{chunk-74IIXVAE.js → chunk-DX7YEUNQ.js} +1 -1
- package/dist/chunks/{chunk-523TE4BI.js → chunk-E63VWAQA.js} +1 -1
- package/dist/chunks/{chunk-OLDK2LKJ.js → chunk-EL454L26.js} +1 -1
- package/dist/chunks/{chunk-WRI4XKSK.js → chunk-ENSB6ZTM.js} +1 -1
- package/dist/chunks/{chunk-EAPFMACH.js → chunk-ERJV5BMC.js} +1 -1
- package/dist/chunks/{chunk-RNIAFXMB.js → chunk-EXJGCNRS.js} +1 -1
- package/dist/chunks/chunk-F5KCCDQM.js +2 -0
- package/dist/chunks/{chunk-57TRXBLT.js → chunk-FSQWAANK.js} +1 -1
- package/dist/chunks/{chunk-BGJYITVI.js → chunk-G5B3PB5X.js} +1 -1
- package/dist/chunks/{chunk-ARLOVWQ3.js → chunk-GAWGIJQG.js} +1 -1
- package/dist/chunks/{chunk-ABZ2ZOLU.js → chunk-GGGF5NHJ.js} +1 -1
- package/dist/chunks/{chunk-4EDIRCD3.js → chunk-GOYBYYPQ.js} +1 -1
- package/dist/chunks/{chunk-H7ATCPPB.js → chunk-H3BSIAQO.js} +1 -1
- package/dist/chunks/{chunk-RBZH6A6M.js → chunk-HCEJAOIF.js} +1 -1
- package/dist/chunks/{chunk-OPNRWESL.js → chunk-IFQCOSU6.js} +1 -1
- package/dist/chunks/{chunk-VGRMAGOK.js → chunk-IJHZBHEK.js} +2 -2
- package/dist/chunks/{chunk-GUOLMLZN.js → chunk-ISFIDCIH.js} +1 -1
- package/dist/chunks/{chunk-PY6K2JRH.js → chunk-ITKTILKI.js} +1 -1
- package/dist/chunks/{chunk-3CDEBKSU.js → chunk-IUBARBGI.js} +1 -1
- package/dist/chunks/{chunk-2L5XWJJ5.js → chunk-J24I74EM.js} +1 -1
- package/dist/chunks/{chunk-IRV6GWGG.js → chunk-J7QGHA7G.js} +3 -3
- package/dist/chunks/{chunk-FAYASU7Z.js → chunk-JGWINTT5.js} +1 -1
- package/dist/chunks/{chunk-GL3NX3F3.js → chunk-JHEFWB6O.js} +1 -1
- package/dist/chunks/{chunk-V34H7Y2T.js → chunk-JHMS2WXM.js} +2 -2
- package/dist/chunks/{chunk-PSGGOZFM.js → chunk-JHR3LF2F.js} +1 -1
- package/dist/chunks/{chunk-O4VIXU7A.js → chunk-KGLJU66U.js} +3 -3
- package/dist/chunks/{chunk-XEOEKFG6.js → chunk-KJFRCVQC.js} +1 -1
- package/dist/chunks/chunk-KNO355LC.js +2 -0
- package/dist/chunks/{chunk-BQS7Z4AP.js → chunk-LD7PGREF.js} +2 -2
- package/dist/chunks/{chunk-MNC4YUDI.js → chunk-LHA7RQBA.js} +1 -1
- package/dist/chunks/{chunk-RZUEVS64.js → chunk-LO3O45IX.js} +1 -1
- package/dist/chunks/{chunk-TIHXUKFD.js → chunk-M2SKXY5C.js} +2 -2
- package/dist/chunks/{chunk-2IHO4GDJ.js → chunk-M3ZQDPRS.js} +1 -1
- package/dist/chunks/{chunk-DPHAN6N3.js → chunk-M4ZF44H5.js} +1 -1
- package/dist/chunks/{chunk-Y4OWBBDD.js → chunk-M55H7KVR.js} +1 -1
- package/dist/chunks/{chunk-NTB2O4RP.js → chunk-MGKMIRYG.js} +1 -1
- package/dist/chunks/{chunk-XJZSIXEO.js → chunk-MJGU2JJ2.js} +2 -2
- package/dist/chunks/{chunk-7K7O3CKY.js → chunk-MS37ISA4.js} +2 -2
- package/dist/chunks/{chunk-BRORSFJX.js → chunk-NCKXI2VB.js} +11 -11
- package/dist/chunks/chunk-NHUUCNAD.js +2 -0
- package/dist/chunks/{chunk-2WKUBGIF.js → chunk-O3VP46SE.js} +1 -1
- package/dist/chunks/{chunk-EUMXMT3S.js → chunk-O4FBOUNX.js} +1 -1
- package/dist/chunks/chunk-O6IFVTZT.js +9 -0
- package/dist/chunks/{chunk-ZH3K7LKQ.js → chunk-O7B44IYN.js} +1 -1
- package/dist/chunks/{chunk-ZAN4DYLH.js → chunk-OGMDEA3Y.js} +1 -1
- package/dist/chunks/{chunk-BL3YH2QU.js → chunk-OKBIWRHC.js} +1 -1
- package/dist/chunks/{chunk-FFRFSDBM.js → chunk-ON2RNOCG.js} +1 -1
- package/dist/chunks/{chunk-76M2MEHV.js → chunk-ONDCV5QC.js} +1 -1
- package/dist/chunks/{chunk-UCPGRPWY.js → chunk-OQ4VGCRG.js} +1 -1
- package/dist/chunks/{chunk-GVZLGS2U.js → chunk-OWK7HU5I.js} +1 -1
- package/dist/chunks/{chunk-JQKSXCAJ.js → chunk-OY5HC2P6.js} +1 -1
- package/dist/chunks/{chunk-T5AACNJI.js → chunk-P7HRF4FM.js} +1 -1
- package/dist/chunks/{chunk-7ED24PP6.js → chunk-PCNLC5H3.js} +1 -1
- package/dist/chunks/{chunk-ES2ISFJC.js → chunk-PF56N7ZY.js} +1 -1
- package/dist/chunks/{chunk-OX3XZKGK.js → chunk-PKALOVHC.js} +2 -2
- package/dist/chunks/{chunk-ZCHXGRRU.js → chunk-PR5TYTY4.js} +1 -1
- package/dist/chunks/{chunk-Q4TBTRIG.js → chunk-PWK5Z5S3.js} +1 -1
- package/dist/chunks/chunk-PXS4SVQG.js +16 -0
- package/dist/chunks/{chunk-AY64VY4E.js → chunk-QGOPYQW3.js} +1 -1
- package/dist/chunks/{chunk-LPWBIGKW.js → chunk-R7YEURUQ.js} +1 -1
- package/dist/chunks/{chunk-ACYFMLWG.js → chunk-RCA6NGVA.js} +2 -2
- package/dist/chunks/{chunk-DUURYZOI.js → chunk-RG3NH6YQ.js} +1 -1
- package/dist/chunks/{chunk-ATAOHSFR.js → chunk-RJIUOLWY.js} +1 -1
- package/dist/chunks/{chunk-37MWETFU.js → chunk-RXE3FYMJ.js} +1 -1
- package/dist/chunks/chunk-RYGWCN2R.js +2 -0
- package/dist/chunks/{chunk-VYLGI3IH.js → chunk-SFNCAPCJ.js} +1 -1
- package/dist/chunks/{chunk-Z4Z5UOZM.js → chunk-SG6JZ7HD.js} +1 -1
- package/dist/chunks/{chunk-IFDALGZE.js → chunk-SKRNWRKV.js} +5 -5
- package/dist/chunks/{chunk-ANFDRKUU.js → chunk-SLZH4Z6C.js} +1 -1
- package/dist/chunks/{chunk-WN3V6KDN.js → chunk-SPDSSMFD.js} +1 -1
- package/dist/chunks/{chunk-EQOV34UH.js → chunk-STWRTNRK.js} +1 -1
- package/dist/chunks/{chunk-XMWXH7TS.js → chunk-T5J7HIHR.js} +1 -1
- package/dist/chunks/{chunk-E72UU4VX.js → chunk-TBUAQWFS.js} +1 -1
- package/dist/chunks/{chunk-ZUJ3XUCP.js → chunk-TEPRCBDV.js} +1 -1
- package/dist/chunks/{chunk-2G4BEISF.js → chunk-TOFMA2L5.js} +2 -2
- package/dist/chunks/{chunk-TKLBP3MM.js → chunk-UFHLLSCE.js} +1 -1
- package/dist/chunks/{chunk-BE6SS65L.js → chunk-UJKQLO6B.js} +2 -2
- package/dist/chunks/{chunk-O3RF72BT.js → chunk-UZQNFTLR.js} +1 -1
- package/dist/chunks/{chunk-F74GBN6K.js → chunk-V2HMWCT6.js} +1 -1
- package/dist/chunks/{chunk-6ZFPQYHG.js → chunk-V4KT5FCJ.js} +1 -1
- package/dist/chunks/{chunk-TVQAPBLZ.js → chunk-VHSX3JPX.js} +1 -1
- package/dist/chunks/{chunk-22VMH6JV.js → chunk-W2SXOGTQ.js} +1 -1
- package/dist/chunks/{chunk-PH6IORGZ.js → chunk-WDEO44UN.js} +1 -1
- package/dist/chunks/{chunk-LNCHFVHT.js → chunk-WEHBK3MC.js} +1 -1
- package/dist/chunks/{chunk-KO3HNMLJ.js → chunk-WGX7WY4N.js} +1 -1
- package/dist/chunks/{chunk-CKMSBAI2.js → chunk-WHREO7A2.js} +1 -1
- package/dist/chunks/{chunk-N6ENLEMY.js → chunk-WS2ZZBAQ.js} +3 -3
- package/dist/chunks/{chunk-DIO5CB6U.js → chunk-WYZWDMMF.js} +1 -1
- package/dist/chunks/{chunk-MQULU465.js → chunk-XO3H32KX.js} +1 -1
- package/dist/chunks/{chunk-FKJHEZCW.js → chunk-XQBIHPPX.js} +1 -1
- package/dist/chunks/chunk-XRKFTPHD.js +2 -0
- package/dist/chunks/{chunk-YHHF4Q7Y.js → chunk-XSCIOQYE.js} +1 -1
- package/dist/chunks/{chunk-COHMDT7A.js → chunk-XTWEWYK7.js} +7 -7
- package/dist/chunks/{chunk-AQD7K4Z5.js → chunk-Y3GIM6WK.js} +1 -1
- package/dist/chunks/{chunk-74ZXXBGN.js → chunk-Y54RKLOI.js} +1 -1
- package/dist/chunks/{chunk-C37PUHA6.js → chunk-Y777GISF.js} +1 -1
- package/dist/chunks/{chunk-PFSMXKTI.js → chunk-YDU3S6UT.js} +1 -1
- package/dist/chunks/{chunk-UGL7WF3W.js → chunk-YOZIZYSC.js} +1 -1
- package/dist/chunks/{chunk-OSIO7PLX.js → chunk-YQKOB56U.js} +1 -1
- package/dist/chunks/chunk-YVNDDNMK.js +3 -0
- package/dist/chunks/{chunk-U5FKRYJO.js → chunk-ZAZKJJOT.js} +1 -1
- package/dist/chunks/{chunk-2RNQQNB7.js → chunk-ZR7LIMJS.js} +1 -1
- package/dist/chunks/{chunk-PQJTYOR2.js → chunk-ZTJOOY2F.js} +1 -1
- package/dist/chunks/{chunk-GPVCOEUH.js → chunk-ZTVXRZ6D.js} +1 -1
- package/dist/chunks/cli-CNYNXKGQ.js +2 -0
- package/dist/chunks/configuration-command-5K7EE2J5.js +2 -0
- package/dist/chunks/connected-app-executor-E25XCNAS.js +2 -0
- package/dist/chunks/connected-evidence-QNSO5BTF.js +2 -0
- package/dist/chunks/connection-Y2KCMBYD.js +2 -0
- package/dist/chunks/{continual-WFPIDWPH.js → continual-SOO3QBNQ.js} +1 -1
- package/dist/chunks/core-commands-ZTWPYAFQ.js +2 -0
- package/dist/chunks/datasets-XPUMWGOC.js +2 -0
- package/dist/chunks/desktop-test-HVSW4JHY.js +3 -0
- package/dist/chunks/dist-4N6AHWNN.js +2 -0
- package/dist/chunks/{dist-OMGUJYPD.js → dist-N6R6VNFD.js} +1 -1
- package/dist/chunks/{dist-OGLX76LL.js → dist-QN7WKZ2D.js} +1 -1
- package/dist/chunks/{enclave-QS4BUNDU.js → enclave-VURYNILU.js} +1 -1
- package/dist/chunks/evaluation-coordination-AOTFPVMS.js +2 -0
- package/dist/chunks/experiment-improvements-75CN3VI7.js +2 -0
- package/dist/chunks/experiments-AGAHM2AK.js +2 -0
- package/dist/chunks/{experiments-VFQGE4HC.js → experiments-DYSHYBGB.js} +1 -1
- package/dist/chunks/{extension-JCUA3RWV.js → extension-UT4CSDJF.js} +1 -1
- package/dist/chunks/help-KU52CFMW.js +8 -0
- package/dist/chunks/host-profile-evaluation-tools-LZDMQCMT.js +2 -0
- package/dist/chunks/host-profile-external-dataset-VK3NJHMC.js +2 -0
- package/dist/chunks/hosted-app-server-composition-P7V7K7CG.js +2 -0
- package/dist/chunks/{hosted-experiment-improvement-42YWXB3P.js → hosted-experiment-improvement-P433KDX2.js} +1 -1
- package/dist/chunks/hosted-harness-runtime-Y4DONWPC.js +2 -0
- package/dist/chunks/{hosted-profile-candidate-HVVC43XQ.js → hosted-profile-candidate-72MMPN6U.js} +1 -1
- package/dist/chunks/hosted-profile-compiler-RXHLK224.js +2 -0
- package/dist/chunks/hosted-profile-evaluation-control-LS4DCSDO.js +2 -0
- package/dist/chunks/{hosted-profile-evaluation-inspection-BUWLCKCD.js → hosted-profile-evaluation-inspection-3Q6EHO66.js} +1 -1
- package/dist/chunks/{hosted-profile-evaluation-preparation-3XLRR6UH.js → hosted-profile-evaluation-preparation-ZD27HNLF.js} +1 -1
- package/dist/chunks/{hosted-tasksets-THKM5QY5.js → hosted-tasksets-V2PQZJN4.js} +1 -1
- package/dist/chunks/human-review-4FJFINQX.js +2 -0
- package/dist/chunks/{import-CBDJ4DME.js → import-GBHSLA3G.js} +1 -1
- package/dist/chunks/{learning-ACEVFL5M.js → learning-U3FZL5YB.js} +1 -1
- package/dist/chunks/local-harness-improvement-runtime-UP2P7UT4.js +2 -0
- package/dist/chunks/local-harness-taskset-review-ZNOKSPJJ.js +2 -0
- package/dist/chunks/{local-scope-HVF2GZ5W.js → local-scope-62GWHDXS.js} +1 -1
- package/dist/chunks/{model-projects-QPO22JPA.js → model-projects-LQ4C6R3X.js} +1 -1
- package/dist/chunks/opchat-Q4PIWPYW.js +3 -0
- package/dist/chunks/organizations-TEH6HBQ3.js +2 -0
- package/dist/chunks/{profile-Y2MCSOUK.js → profile-SWPVCGTR.js} +1 -1
- package/dist/chunks/{profile-training-source-6GOT7AHM.js → profile-training-source-J73ZLNSC.js} +1 -1
- package/dist/chunks/project-action-payload-OU3ZPHW7.js +2 -0
- package/dist/chunks/project-agent-J7ILCRBS.js +2 -0
- package/dist/chunks/{published-experiment-source-5TMGLKDM.js → published-experiment-source-HVHKSYDL.js} +1 -1
- package/dist/chunks/refiner-profile-service-E7YU4E3N.js +2 -0
- package/dist/chunks/{runtime-QFXCXSVB.js → runtime-LIPHPKKJ.js} +2 -2
- package/dist/chunks/sandbox-command-G6KID3OP.js +2 -0
- package/dist/chunks/{sandbox-template-XWWPWWNR.js → sandbox-template-MZTMAUFS.js} +1 -1
- package/dist/chunks/saved-work-LOUWLF37.js +2 -0
- package/dist/chunks/{send-turn-SIXOZUVJ.js → send-turn-UEUEGY5W.js} +1 -1
- package/dist/chunks/{src-EZAKCCUV.js → src-7WMZOWZZ.js} +102 -95
- package/dist/chunks/{src-6SHCCYEN.js → src-MVAK6D6Y.js} +1 -1
- package/dist/chunks/standalone-experiment-turn-owner-YRKEOEJ2.js +2 -0
- package/dist/chunks/{store-continual-support-reviews-GDX6CSUU.js → store-continual-support-reviews-FJLLNKCY.js} +1 -1
- package/dist/chunks/{store-conversation-serving-W55XMDH4.js → store-conversation-serving-4KWR4IZY.js} +1 -1
- package/dist/chunks/{store-create-improve-A7E7CUPZ.js → store-create-improve-JWBJZRAU.js} +1 -1
- package/dist/chunks/{store-datasets-HKF3EO7B.js → store-datasets-4N2M6Y3K.js} +2 -2
- package/dist/chunks/{store-evaluation-results-645RFBGR.js → store-evaluation-results-OBM4623U.js} +1 -1
- package/dist/chunks/{store-harness-memory-VINCZ4GK.js → store-harness-memory-4HUEMRCD.js} +1 -1
- package/dist/chunks/{store-harness-refinement-candidates-EA5KFQPH.js → store-harness-refinement-candidates-NMRWMN23.js} +1 -1
- package/dist/chunks/store-harness-workspaces-BGONIQDY.js +2 -0
- package/dist/chunks/{store-human-review-F5KESW52.js → store-human-review-J75SIZAL.js} +1 -1
- package/dist/chunks/store-learned-preference-migration-validation-VLASM4CT.js +2 -0
- package/dist/chunks/store-learning-TUCQFBLT.js +2 -0
- package/dist/chunks/{store-learning-credentials-WZQJ4HPJ.js → store-learning-credentials-S4RF57NV.js} +1 -1
- package/dist/chunks/{store-local-experiments-HWQWNTIU.js → store-local-experiments-LULRLTII.js} +5 -5
- package/dist/chunks/{store-model-batch-review-TOCSDVAP.js → store-model-batch-review-SVL4MT6D.js} +1 -1
- package/dist/chunks/{store-model-configuration-6543ASY2.js → store-model-configuration-ZHDSM3XM.js} +2 -2
- package/dist/chunks/{store-preference-comparison-LV32MHVL.js → store-preference-comparison-YMMCKXS5.js} +1 -1
- package/dist/chunks/{store-schedules-VGTEQVKH.js → store-schedules-6Z4QS3NU.js} +1 -1
- package/dist/chunks/{store-sidebar-file-bookmarks-53B7QIGS.js → store-sidebar-file-bookmarks-MX6EP6OB.js} +2 -2
- package/dist/chunks/{store-sidebar-preferences-YXGEJVUO.js → store-sidebar-preferences-VYREPW26.js} +1 -1
- package/dist/chunks/{store-subagents-HRCAK7VZ.js → store-subagents-WGBCRALX.js} +1 -1
- package/dist/chunks/{store-task-inbox-WF74W4U2.js → store-task-inbox-43BNZSB7.js} +6 -6
- package/dist/chunks/{store-task-inventory-KHCTEZVK.js → store-task-inventory-AEW4POAJ.js} +2 -2
- package/dist/chunks/{store-taskset-drafts-3ACG5AVX.js → store-taskset-drafts-DKFO2CYB.js} +1 -1
- package/dist/chunks/{store-training-R46WOGXB.js → store-training-6PFFR6ST.js} +1 -1
- package/dist/chunks/{store-training-jobs-D4LECE7O.js → store-training-jobs-ANDEBQ67.js} +2 -2
- package/dist/chunks/{store-training-models-EQVNXOVB.js → store-training-models-OOI4ZJPX.js} +2 -2
- package/dist/chunks/{store-usage-IE2U2FD3.js → store-usage-U72RNW64.js} +1 -1
- package/dist/chunks/{store-work-evidence-QQDKM5AQ.js → store-work-evidence-NY5OBATB.js} +1 -1
- package/dist/chunks/{taskset-NR2X2UOK.js → taskset-SL3YOXW7.js} +1 -1
- package/dist/chunks/{taskset-packages-ONULEIVI.js → taskset-packages-3PCEYYDA.js} +1 -1
- package/dist/chunks/{teams-bot-CHUYMD6K.js → teams-bot-IDEF3BMI.js} +1 -1
- package/dist/chunks/{training-IDSGYGU2.js → training-57ISIC7U.js} +1 -1
- package/dist/chunks/web-search-222Y63QW.js +2 -0
- package/dist/chunks/{workspaces-2TJRDM5K.js → workspaces-5DF4H5EX.js} +1 -1
- package/dist/cli.js +1 -1
- package/dist/index.js +1 -1
- package/dist/sandbox-template/manifest.js +1 -1
- package/dist/web/assets/{App-CaRMZoxo.css → App-DbYvV_W6.css} +1 -1
- package/dist/web/assets/{App-pcwmC4IR.js → App-nzE7JU_O.js} +4 -4
- package/dist/web/assets/{AppDialog-CdHad7GT.js → AppDialog-VtNvqbDm.js} +1 -1
- package/dist/web/assets/{AppTerminalPanel-CrmoOgd4.js → AppTerminalPanel-BMfKdrrN.js} +2 -2
- package/dist/web/assets/{AppsView-0P6cBsD4.js → AppsView-CdWyrDEb.js} +1 -1
- package/dist/web/assets/{BrowserSidebar-Cb6edJw6.js → BrowserSidebar-CtOIciOa.js} +1 -1
- package/dist/web/assets/{CartesianChart-B2Sxi0lv.js → CartesianChart-u1lvLM30.js} +1 -1
- package/dist/web/assets/{CollaborationTabs-PP0AIXhb.js → CollaborationTabs-CaBfDYRW.js} +1 -1
- package/dist/web/assets/{CommandMenu-GfQIMe6W.js → CommandMenu-CFW3WJ11.js} +1 -1
- package/dist/web/assets/{CommunityView-V6KmMl5n.js → CommunityView-D2EjaeuH.js} +1 -1
- package/dist/web/assets/{ComposerCreateImproveStrip-oeVeyhPX.js → ComposerCreateImproveStrip-6wYSJdzv.js} +1 -1
- package/dist/web/assets/{ConversationImportsSettings-CuQcvVgE.js → ConversationImportsSettings-BJ4QhF7p.js} +1 -1
- package/dist/web/assets/{GetStartedView-2oZ068h_.js → GetStartedView-DBcOwIJn.js} +1 -1
- package/dist/web/assets/{HostedModelLearningReview-DLzak_Vf.js → HostedModelLearningReview-BNpK6_W9.js} +1 -1
- package/dist/web/assets/{HostedModelLearningSettings-Eca6Pd9R.js → HostedModelLearningSettings-SrsdeeoA.js} +1 -1
- package/dist/web/assets/{LabModelVersionDetailPage-DsBblnMp.js → LabModelVersionDetailPage-Cd6bRHt9.js} +1 -1
- package/dist/web/assets/{LabSkillSidebar-DDknttrB.js → LabSkillSidebar-CQfvel4w.js} +1 -1
- package/dist/web/assets/{LabsRoute-CgNiUHsy.js → LabsRoute-sXLJt1KR.js} +4 -4
- package/dist/web/assets/{MainChatThread-yCVg99LU.js → MainChatThread-dlDDK2JM.js} +2 -2
- package/dist/web/assets/{MainPane-C86le7UF.js → MainPane-DCz38-qy.js} +4 -4
- package/dist/web/assets/{MarkdownText-BBVriBCj.js → MarkdownText-Drjq6-JM.js} +1 -1
- package/dist/web/assets/{NativeSkillSidebar-D2uVZkqh.js → NativeSkillSidebar-jncZijt-.js} +1 -1
- package/dist/web/assets/{NewExperienceSwitcher-DuD6GScJ.js → NewExperienceSwitcher-DXKzoMaM.js} +1 -1
- package/dist/web/assets/{NewProjectDialog-B6XZkJrU.js → NewProjectDialog-DIyjAxJG.js} +1 -1
- package/dist/web/assets/{OutputsPage-PUlmcWjv.js → OutputsPage-Dy1cNr3n.js} +1 -1
- package/dist/web/assets/{ProjectsPage-DWBRmej6.js → ProjectsPage-D2EeybIv.js} +1 -1
- package/dist/web/assets/{RightChatPanelStack-HaCVep4t.js → RightChatPanelStack-4wUL-W9_.js} +1 -1
- package/dist/web/assets/{RightSidebarHomePanel-BUtdPb2L.js → RightSidebarHomePanel-Bd_AHUp8.js} +1 -1
- package/dist/web/assets/{ScheduledWorkPage-Dg9GkGrT.js → ScheduledWorkPage-BJkSzwz2.js} +1 -1
- package/dist/web/assets/{SettingsView-DtldfnV-.js → SettingsView-BhcP72KH.js} +3 -3
- package/dist/web/assets/{TeamChatView-C71JX4je.js → TeamChatView-CR0fdicZ.js} +1 -1
- package/dist/web/assets/{TerminalOverlay-B4F6Q36s.js → TerminalOverlay-DGrZRZ_3.js} +10 -10
- package/dist/web/assets/{TrainingCreationPanel-B9MxFzQx.js → TrainingCreationPanel-BsTG7aFS.js} +1 -1
- package/dist/web/assets/{TrainingDraftPanel-7C48sHfC.js → TrainingDraftPanel-ByErrht7.js} +1 -1
- package/dist/web/assets/{UsageSettingsSection-CC57FcUB.js → UsageSettingsSection-DeYTJbcM.js} +1 -1
- package/dist/web/assets/{WorkSidebarPanel-Cto1usLM.js → WorkSidebarPanel-DcNvEEoy.js} +1 -1
- package/dist/web/assets/{WorkspaceDiffPanel-CL7wi3kp.js → WorkspaceDiffPanel-CdPRcYWN.js} +3 -3
- package/dist/web/assets/{WorkspaceEnvironmentMenu-zdzSDofs.js → WorkspaceEnvironmentMenu-xUYg-iGn.js} +1 -1
- package/dist/web/assets/{WorkspaceGitDialogs-CZSmjnrc.js → WorkspaceGitDialogs-CBViLL3S.js} +1 -1
- package/dist/web/assets/{WorkspaceMonacoEditor-TrUDJMKb.js → WorkspaceMonacoEditor-frxie2_S.js} +3 -3
- package/dist/web/assets/{agent-connections-4Dza2mDg.js → agent-connections-D7ao-vbU.js} +1 -1
- package/dist/web/assets/{arrow-up-right-xKb5kWQJ.js → arrow-up-right-DCWPxdbD.js} +1 -1
- package/dist/web/assets/{chunk-P3BRSSRD-BsGTkgyC.js → chunk-P3BRSSRD-B5JXa0Nh.js} +1 -1
- package/dist/web/assets/{clipboard-BgjV3aCx.js → clipboard-B-GnMVLp.js} +1 -1
- package/dist/web/assets/{cloud-upload-Bw9XUsKQ.js → cloud-upload-DpaGFZ9J.js} +1 -1
- package/dist/web/assets/{cssMode-DxsFJGb-.js → cssMode-DJHE7R3W.js} +1 -1
- package/dist/web/assets/{folder-open-CbmUjIYS.js → folder-open-B-DFLDFH.js} +1 -1
- package/dist/web/assets/{folder-plus-slsst7Ct.js → folder-plus-CPXxPvSH.js} +1 -1
- package/dist/web/assets/{git-commit-horizontal-BIS-8MuS.js → git-commit-horizontal-DCTzcivA.js} +1 -1
- package/dist/web/assets/{htmlMode-BE4VOrZo.js → htmlMode-DxZVBAYd.js} +1 -1
- package/dist/web/assets/index-BojtIRzO.css +1 -0
- package/dist/web/assets/{index-DEg0S7Qk.js → index-Di1MU6Xr.js} +2 -2
- package/dist/web/assets/{info-5bL9xSSf.js → info-BMxsR_bn.js} +1 -1
- package/dist/web/assets/{jsonMode-CYimnBhD.js → jsonMode-CzWoMkpp.js} +1 -1
- package/dist/web/assets/{lspLanguageFeatures-CiFuk-P7.js → lspLanguageFeatures-15K7ND6Q.js} +1 -1
- package/dist/web/assets/{minimize-2-BGVWKvTg.js → minimize-2-DwUgqXoR.js} +1 -1
- package/dist/web/assets/{monaco.contribution-DkLVGT8N.js → monaco.contribution-BBLKjER5.js} +2 -2
- package/dist/web/assets/{monaco.contribution-BTY4dJ0f.js → monaco.contribution-DBjvSu8p.js} +2 -2
- package/dist/web/assets/{monaco.contribution-DUE3CQph.js → monaco.contribution-DUWvjhIG.js} +2 -2
- package/dist/web/assets/{monaco.contribution-C7sMrcos.js → monaco.contribution-w0zfkYLX.js} +2 -2
- package/dist/web/assets/{monitor-B5hx_tzp.js → monitor-Ihu5LVYx.js} +1 -1
- package/dist/web/assets/{play-pmSO95Qg.js → play-D_YGCdxU.js} +1 -1
- package/dist/web/assets/{python-CiZvL3LX.js → python-Q4OuoXYc.js} +1 -1
- package/dist/web/assets/{save-CvYL4DUg.js → save-DJYUOhtD.js} +1 -1
- package/dist/web/assets/{square-DT_uFOml.js → square-DXtoCBNw.js} +1 -1
- package/dist/web/assets/{toggleHighContrast-CrE1_HY0.js → toggleHighContrast-CaNeuWVE.js} +1 -1
- package/dist/web/assets/{tsMode-CI_PdZmj.js → tsMode-CJnQ2wmM.js} +1 -1
- package/dist/web/assets/{upload-PVi8vC3T.js → upload-fCP3_OEO.js} +1 -1
- package/dist/web/assets/{useLocalAgentSchedules-BHJNVf42.js → useLocalAgentSchedules-BFoH_gwZ.js} +1 -1
- package/dist/web/assets/{useProviderSettings-CU3zXyie.js → useProviderSettings-2eysgqiA.js} +1 -1
- package/dist/web/assets/{useSessionTurnCache-BE7cipLX.js → useSessionTurnCache-DLF5SPD-.js} +1 -1
- package/dist/web/assets/{wifi-off-7WiFuOhD.js → wifi-off-DZoiFrRz.js} +1 -1
- package/dist/web/assets/{workers-Cv8r4CvM.js → workers-D5nr74M-.js} +1 -1
- package/dist/web/assets/{yaml-Bj7mdkV2.js → yaml-CwsoTJmk.js} +1 -1
- package/dist/web/index.html +2 -2
- package/docs/command-reference.md +12 -0
- package/package.json +1 -1
- package/dist/chunks/app-server-harness-services-DDFUMNYC.js +0 -2
- package/dist/chunks/app-server-runtime-SVB6L26M.js +0 -2
- package/dist/chunks/apps-EZB56RHV.js +0 -2
- package/dist/chunks/chunk-7UH4YDA7.js +0 -3
- package/dist/chunks/chunk-CGWA54LE.js +0 -2
- package/dist/chunks/chunk-K44RHALX.js +0 -2
- package/dist/chunks/chunk-MFMYWZK2.js +0 -2
- package/dist/chunks/chunk-P2RSBSCT.js +0 -2
- package/dist/chunks/chunk-QDC4OW3S.js +0 -2
- package/dist/chunks/chunk-SF5HJ7PL.js +0 -16
- package/dist/chunks/chunk-YBT2NB32.js +0 -2
- package/dist/chunks/chunk-YCQSVHCD.js +0 -9
- package/dist/chunks/cli-5DFVQL5Y.js +0 -2
- package/dist/chunks/configuration-command-JS6U3RMC.js +0 -2
- package/dist/chunks/connected-app-executor-UBMGMV76.js +0 -2
- package/dist/chunks/connected-evidence-NLAIEVQ3.js +0 -2
- package/dist/chunks/connection-NZSD3U5O.js +0 -2
- package/dist/chunks/core-commands-U4IBRRY5.js +0 -2
- package/dist/chunks/datasets-UX47DTTB.js +0 -2
- package/dist/chunks/desktop-test-UUU7PD4P.js +0 -3
- package/dist/chunks/dist-W5MJYSPF.js +0 -2
- package/dist/chunks/evaluation-coordination-3YQN5JQW.js +0 -2
- package/dist/chunks/experiment-improvements-ZRVD2AGY.js +0 -2
- package/dist/chunks/experiments-JEB5A2N5.js +0 -2
- package/dist/chunks/help-KA4OINP5.js +0 -8
- package/dist/chunks/host-profile-evaluation-tools-2URLU5SG.js +0 -2
- package/dist/chunks/host-profile-external-dataset-B2AQNSDR.js +0 -2
- package/dist/chunks/hosted-app-server-composition-VJQ3FM4I.js +0 -2
- package/dist/chunks/hosted-harness-runtime-BM4WONJN.js +0 -2
- package/dist/chunks/hosted-profile-compiler-RKDWHYK3.js +0 -2
- package/dist/chunks/hosted-profile-evaluation-control-57V24UGU.js +0 -2
- package/dist/chunks/human-review-CSYAW4PC.js +0 -2
- package/dist/chunks/local-harness-improvement-runtime-3T6E7I5Q.js +0 -2
- package/dist/chunks/local-harness-taskset-review-LQPQBALH.js +0 -2
- package/dist/chunks/opchat-6ADSONAD.js +0 -3
- package/dist/chunks/organizations-GT24ZTCN.js +0 -2
- package/dist/chunks/project-action-payload-GHSLE7K3.js +0 -2
- package/dist/chunks/project-agent-YYSQIHVE.js +0 -2
- package/dist/chunks/refiner-profile-service-ZK7KAFP5.js +0 -2
- package/dist/chunks/sandbox-command-U6346TVJ.js +0 -2
- package/dist/chunks/saved-work-SWHZ4OLO.js +0 -2
- package/dist/chunks/standalone-experiment-turn-owner-LIAQWTGI.js +0 -2
- package/dist/chunks/store-harness-workspaces-XUM4Z66X.js +0 -2
- package/dist/chunks/store-learned-preference-migration-validation-V27XD4I7.js +0 -2
- package/dist/chunks/store-learning-WLG6KFIO.js +0 -2
- package/dist/chunks/web-search-BPON7H5N.js +0 -2
- package/dist/web/assets/index-erq7hUne.css +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as s,j as g}from"./index-
|
|
1
|
+
import{r as s,j as g}from"./index-Di1MU6Xr.js";import{fh as D}from"./App-nzE7JU_O.js";const p=[],m=new WeakMap,j=["button:not([disabled])","[href]","input:not([disabled])","select:not([disabled])","textarea:not([disabled])","summary","[tabindex]:not([tabindex='-1'])","[contenteditable='true']"].join(",");function B({ariaLabel:o,backdropClassName:a="training-dialog-backdrop",children:i,className:u,contained:t=!1,dismissDisabled:n=!1,initialFocusKey:e,inertExclusionSelector:f,onClose:h}){const l=s.useRef(null),R=s.useRef(Symbol("app-dialog")),b=s.useRef(null),E=s.useRef(n),y=s.useRef(h);E.current=n,y.current=h,s.useEffect(()=>{const r=R.current;b.current=document.activeElement instanceof HTMLElement?document.activeElement:null,p.push(r);const d=t?l.current?.closest(".main-pane")??null:null,w=L(l.current,d,f);function x(c){if(p.at(-1)===r){if(c.key==="Escape"){c.preventDefault(),c.stopPropagation(),E.current||y.current();return}c.key!=="Tab"||t||I(c,l.current)}}return document.addEventListener("keydown",x,!0),()=>{document.removeEventListener("keydown",x,!0);const c=p.lastIndexOf(r);c>=0&&p.splice(c,1),w();const A=b.current;A?.isConnected&&A.focus()}},[t,f]),s.useEffect(()=>{const r=window.requestAnimationFrame(()=>{const d=l.current;(d?.querySelector("[data-autofocus]")??d)?.focus()});return()=>window.cancelAnimationFrame(r)},[e]);function k(r){r.target===r.currentTarget&&!n&&h()}function v(r){r.key==="Escape"&&r.stopPropagation()}return g.jsx("div",{className:a,role:"presentation",onMouseDown:k,children:g.jsx("section",{ref:l,"aria-busy":n||void 0,"aria-label":o,"aria-modal":t?void 0:"true",className:u,role:"dialog",tabIndex:-1,onKeyDown:v,onMouseDown:r=>r.stopPropagation(),children:g.jsx(D,{children:i})})})}function F(o){return o?Array.from(o.querySelectorAll(j)).filter(a=>!a.hidden&&a.getAttribute("aria-hidden")!=="true"&&a.getClientRects().length>0):[]}function I(o,a){if(!a)return;const i=F(a);if(i.length===0){o.preventDefault(),a.focus();return}const u=i.indexOf(document.activeElement),t=o.shiftKey?u<=0?i.length-1:u-1:u<0||u===i.length-1?0:u+1;o.preventDefault(),i[t]?.focus()}function L(o,a=null,i){if(!o)return()=>{};const u=[];let t=o.parentElement??o;for(;t.parentElement&&t!==document.body;){const n=t.parentElement;for(const e of Array.from(n.children)){if(e===t||!(e instanceof HTMLElement)||i&&e.matches(i))continue;const f=m.get(e)??{count:0,ariaHidden:e.getAttribute("aria-hidden"),inert:e.inert};f.count+=1,m.set(e,f),u.push(e),e.inert=!0,e.setAttribute("aria-hidden","true")}if(t=n,a&&t===a)break}return()=>{for(const n of u.reverse()){const e=m.get(n);!e||--e.count>0||(m.delete(n),n.inert=e.inert,e.ariaHidden===null?n.removeAttribute("aria-hidden"):n.setAttribute("aria-hidden",e.ariaHidden))}}}export{B as A};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/TerminalOverlay-
|
|
2
|
-
import{r,j as t,_ as m}from"./index-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/TerminalOverlay-DGrZRZ_3.js","assets/index-Di1MU6Xr.js","assets/index-BojtIRzO.css","assets/App-nzE7JU_O.js","assets/App-DbYvV_W6.css","assets/TerminalOverlay-DwBiZLwk.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{r,j as t,_ as m}from"./index-Di1MU6Xr.js";const p=r.lazy(()=>m(()=>import("./TerminalOverlay-DGrZRZ_3.js"),__vite__mapDeps([0,1,2,3,4,5])).then(e=>({default:e.TerminalOverlay})));function E({open:e,connection:a,scope:l,tabs:s,onTabsChange:n,cwd:i,appId:u,workspaceName:o,queuedCommand:f,onClose:d}){const[_,c]=r.useState(!1);return r.useEffect(()=>{e&&c(!0)},[e]),_?t.jsx(r.Suspense,{fallback:null,children:t.jsx(p,{open:e,connection:a,scope:l,tabs:s,onTabsChange:n,cwd:i,appId:u,workspaceName:o,queuedCommand:f,onClose:d})}):null}export{E as AppTerminalPanel};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as e,r as g}from"./index-DEg0S7Qk.js";import{X as ee,bH as oe,g as se,o as D,bL as Q,s as q,n as ge,_ as J,ck as xe,cl as ke,bM as Y,cm as pe,cn as Ie,co as re,b as ve,cp as je,cq as we,cr as Ce,k as Ne,m as Pe,a$ as Ae,aB as Ee,v as Re,cs as ae,W as _e,aJ as Le,w as Te,O as Ue,az as Oe,aP as Fe,ct as $e,I as Me}from"./App-pcwmC4IR.js";import{a as ce,u as De,b as ze}from"./useProviderSettings-CU3zXyie.js";import{c as be,A as ne,u as He}from"./agent-connections-4Dza2mDg.js";import{a as Ke,s as Be}from"./MainPane-C86le7UF.js";import"./AppDialog-CdHad7GT.js";import"./save-CvYL4DUg.js";import"./MarkdownText-BBVriBCj.js";import"./arrow-up-right-xKb5kWQJ.js";import"./cloud-upload-Bw9XUsKQ.js";import"./square-DT_uFOml.js";import"./folder-open-CbmUjIYS.js";import"./play-pmSO95Qg.js";function Je({agent:n,account:a,native:t,inventory:s,projects:l,teamId:h,learningControl:r,connected:i,onHide:x,onManage:o}){const d=s?.collector.connections.filter(m=>m.source===n.id)??[],b=s?.sources.some(m=>m.source===n.id&&m.available&&m.capabilities.history);return e.jsxs("article",{className:"agent-connection-card","aria-label":n.name,children:[e.jsxs("div",{className:"agent-card-title",children:[e.jsx("img",{src:n.icon,alt:""}),e.jsx("span",{children:n.name}),e.jsx("button",{type:"button",className:"agent-hide","aria-label":`Hide ${n.name}`,onClick:x,children:e.jsx(ee,{size:14})})]}),n.id==="openpond_chat"?e.jsxs(e.Fragment,{children:[e.jsx("small",{children:a?.state==="signed_in"?"Connected to OpenPond":"Sign in to OpenPond"}),e.jsx("p",{children:"Use Ponder Pal from the sidebar."}),e.jsx("button",{type:"button",className:"agent-account-link",onClick:()=>{oe({kind:"settings",section:"account"})},children:"Account setup"})]}):e.jsxs(e.Fragment,{children:[e.jsx("small",{children:t?t.available?t.enabled?"Ready to chat":"Installed · chat disabled":t.lastError??"Check installation":"Conversation import"}),e.jsx("button",{type:"button",className:"agent-connect-button",disabled:!i,onClick:o,children:t?.available||d.length?"Manage":"Connect"}),e.jsx("div",{className:"agent-card-sync",children:d.length?d.map(m=>e.jsxs("div",{children:[e.jsx("span",{children:be(m,s.collector)}),e.jsxs("small",{children:[l.find(_=>_.id===m.projectId&&m.teamId===h)?.content.name??m.projectId," ","· ",m.admitted," tasks"]}),m.teamId!==h?e.jsxs("small",{children:["Team: ",m.teamId]}):null,m.queued?e.jsxs("small",{children:[m.queued," updates queued"]}):null,m.lastAdmissionAt?e.jsxs("small",{children:["Last sync: ",new Date(m.lastAdmissionAt).toLocaleString()]}):null,m.error?e.jsx("small",{role:"alert",children:m.error}):null]},m.id)):e.jsx("small",{children:s?b?"History available · sync not connected":"No local history found":"Reading local setup…"})})]}),r]})}function qe(n,a,t,s){const l=g.useRef({providers:a,onProvider:t});l.current={providers:a,onProvider:t};const h=JSON.stringify(["claude-code","opencode","grok-build"].map(r=>{const i=a?.providers[r];return[r,i?.binaryPath,i?.sourceHome,i?.enabled]}));g.useEffect(()=>{if(!n||!l.current.providers)return;let r=!1;const i=["claude-code","opencode","grok-build"].map(x=>{const o=l.current.providers?.providers[x],d=new AbortController,b=s>0?{promise:se(n,`/v1/providers/${x}/native-setup`,{method:"POST",body:JSON.stringify({action:"check"}),signal:d.signal}),release:()=>d.abort()}:Ke(n,x,l.current.providers?.providers[x]);return b.promise.then(m=>{r||(s>0&&m.session&&!m.error&&Be(n,x,m,o),l.current.onProvider(x,m.settings))},()=>{}),b});return()=>{r=!0,i.forEach(x=>x.release())}},[n,h,s])}var F=q().trim().min(1).max(240),fe=ge().int().positive(),We=J(["dataset","evaluator","model","training_configuration","training_run","harness","environment","experiment","learning_policy","deployment"]),Ge=D({kind:We,resourceId:F,release:xe.nullable(),role:J(["training","validation","holdout","target","reward","evaluation","serving","source"])}).strict(),Ve=ke("kind",[D({kind:Y("model"),providerId:F,modelId:F,artifact:xe.nullable(),messages:Q(D({role:J(["system","user","assistant"]),content:q().max(1e5)}).strict()).max(100)}).strict(),D({kind:Y("harness"),profileRepositoryId:F,source:pe}).strict(),D({kind:Y("agent"),source:Ie}).strict(),D({kind:Y("suite"),profileRepositoryId:F,suiteId:F,sources:Q(pe).min(1).max(1e3)}).strict().superRefine((n,a)=>{const t=n.sources[0],s=new Set;for(const[l,h]of n.sources.entries())s.has(h.definitionId)&&a.addIssue({code:"custom",path:["sources",l],message:"Suite definitions must be unique."}),s.add(h.definitionId),(h.profileId!==t.profileId||h.sourceRevision!==t.sourceRevision||h.catalogHash!==t.catalogHash||re(h.harnessRelease)!==re(t.harnessRelease))&&a.addIssue({code:"custom",path:["sources",l],message:"Suite checks must belong to the same pinned Profile source and Harness release."})})]),ye=D({name:q().trim().min(1).max(200),description:q().max(1e4),targets:Q(D({id:F,name:q().trim().min(1).max(200),target:Ve}).strict()).max(100),defaultTargetId:F.nullable(),resources:Q(Ge).max(1e3)}).strict().superRefine((n,a)=>{new Set(n.targets.map(t=>t.id)).size!==n.targets.length&&a.addIssue({code:"custom",path:["targets"],message:"Target identities must be unique."}),n.defaultTargetId&&!n.targets.some(t=>t.id===n.defaultTargetId)&&a.addIssue({code:"custom",path:["defaultTargetId"],message:"Default target must belong to this Project."}),new Set(n.resources.map(t=>re(t))).size!==n.resources.length&&a.addIssue({code:"custom",path:["resources"],message:"Resource links must be unique."})}),Qe=D({schemaVersion:Y("openpond.trainingProject.v1"),id:F,teamId:F,creatorUserId:F,ownerScope:J(["workspace","personal"]).optional(),revision:fe,content:ye,archived:ve(),createdAt:q().datetime(),updatedAt:q().datetime()}).strict();D({operationId:F,id:F,expectedRevision:ge().int().nonnegative(),content:ye,ownerScope:J(["workspace","personal"]).optional()}).strict();D({operationId:F,expectedRevision:fe,archived:ve()}).strict();var Xe=D({teamId:F,projects:Q(Qe).max(100),nextCursor:F.nullable()}).strict();D({operation:J(["evaluate","train","enable_learning","accept_candidate","serve"]),support:J(["supported","unsupported"]),state:J(["ready","needs_setup","blocked"]),reasons:Q(D({code:F,message:q().min(1).max(2e3),field:q().nullable(),action:J(["choose_target","choose_data","choose_evaluator","configure_runtime","request_access","configure_budget","wait","review_evidence"]).nullable()}).strict()).max(100)}).strict().superRefine((n,a)=>{n.state==="ready"&&(n.support!=="supported"||n.reasons.length)&&a.addIssue({code:"custom",message:"Ready operations must be supported with no blockers."}),n.state!=="ready"&&!n.reasons.length&&a.addIssue({code:"custom",message:"Unavailable operations must explain the next step."})});const Z=new WeakMap;function Ze(n,a,t){const s=JSON.stringify([a?.activeProfile,a?.profile?.id,t]),l=n?Z.get(n)?.get(s):void 0,[h,r]=g.useState(null),[i,x]=g.useState(null),[o,d]=g.useState(!1),[b,m]=g.useState(0),_=a?.state==="signed_in"?h?.key===s&&h.connection===n?h.value:l:void 0;g.useEffect(()=>{if(!n||!t||a?.state!=="signed_in")return;const k=new AbortController;d(!0),x(null);async function I(){const C=[],A=new Set;let j;do{const P=Xe.parse(await se(n,"/v1/training/evaluation-workspace",{method:"POST",body:JSON.stringify({teamId:t,operation:"projects",value:{cursor:j}}),signal:k.signal}));if(P.teamId!==t)throw new Error("The hosted project workspace changed. Refresh connections.");if(C.push(...P.projects.filter(U=>!U.archived)),j=P.nextCursor??void 0,j&&A.has(j))throw new Error("Project pagination stalled. Refresh connections.");j&&A.add(j)}while(j&&!k.signal.aborted);if(k.signal.aborted)return;let w=Z.get(n);w||(w=new Map,Z.set(n,w));const L=w.get(s)?.selected,y=L&&C.some(P=>P.id===L)?L:C.length===1?C[0].id:"",u={projects:C,selected:y};w.set(s,u),r({key:s,connection:n,value:u})}return I().catch(C=>{k.signal.aborted||x(C instanceof Error?C.message:"Unable to list hosted projects.")}).finally(()=>{k.signal.aborted||d(!1)}),()=>k.abort()},[n,s,t,a?.state,b]);const R=g.useCallback(k=>{if(!n)return;const I=Z.get(n)?.get(s);if(!I||!I.projects.some(A=>A.id===k))return;const C={...I,selected:k};Z.get(n).set(s,C),r({key:s,connection:n,value:C})},[n,s]);return{projects:_?.projects??[],projectId:_?.selected??"",select:R,error:i,loading:o,refresh:()=>m(k=>k+1)}}je.extend(Ce);function Ye({agent:n,inventory:a,connection:t,account:s,teamId:l,projects:h,projectId:r,onRefresh:i,learningUrl:x}){const o=a?.sources.filter(c=>c.source===n.id)??[],[d,b]=g.useState(o.length===1?o[0].instanceId:""),[m,_]=g.useState(r),[R,k]=g.useState("week"),[I,C]=g.useState(null),[A,j]=g.useState(!1),[w,L]=g.useState(null),y=o.find(c=>c.instanceId===d)??(!d&&o.length===1?o[0]:void 0),u=a?.collector.connections.filter(c=>c.source===n.id)??[],P=s?.baseUrl??s?.activeProfile?.baseUrl,U=s?.apiBaseUrl;async function H(c,p){if(!(!t||A||I)){j(!0),L(null);try{const S=await se(t,"/v1/native-history/collector",{method:"POST",body:JSON.stringify({command:c,...p?{connectionId:p}:{},...c==="connect"?{setup:{sourceInstanceId:y?.instanceId,teamId:l,projectId:m,accountBaseUrl:P,apiBaseUrl:U,range:R}}:{}})});S.command?C(S.command):await i()}catch(S){L(S instanceof Error?S.message:"Unable to update this connection.")}finally{j(!1)}}}const $=A||I!==null;return e.jsxs("div",{className:"agent-conversation-setup provider-dialog-body",children:[e.jsxs("p",{children:["Sync saved ",n.name," conversations to an existing OpenPond project. Setup uses the OpenPond CLI and browser authorization."]}),u.map(c=>e.jsxs("section",{className:"agent-retained-connection","aria-label":`${n.name} sync connection`,children:[e.jsx("strong",{children:be(c,a.collector)}),e.jsxs("span",{children:["Project:"," ",c.teamId===l?h.find(p=>p.id===c.projectId)?.content.name??c.projectId:c.projectId," ","· Team: ",c.teamId]}),e.jsx("small",{children:c.accountBaseUrl??"Hosted destination"}),e.jsx("small",{className:"agent-source-path",children:c.sourceRoot}),e.jsxs("span",{children:[c.admitted," tasks imported · ",c.queued," updates queued"]}),c.backfill.total>0&&c.backfill.stage!=="complete"?e.jsxs(e.Fragment,{children:[e.jsx("progress",{"aria-label":"History import progress",value:c.backfill.admitted+c.backfill.skipped,max:c.backfill.total}),e.jsxs("small",{children:[c.backfill.admitted+c.backfill.skipped," of"," ",c.backfill.total," conversations processed"]})]}):null,e.jsx("small",{children:c.lastAdmissionAt?`Last synced ${je(c.lastAdmissionAt).fromNow()}`:"No uploads acknowledged yet"}),c.error?e.jsx("p",{role:"alert",children:c.error}):null,e.jsxs("div",{className:"settings-button-row",children:[c.state==="disconnected"?e.jsx("button",{type:"button",disabled:$,onClick:()=>{H("reconnect",c.id)},children:"Reconnect"}):e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",disabled:$,onClick:()=>{H(c.state==="paused"?"resume":"pause",c.id)},children:c.state==="paused"?"Resume":"Pause"}),e.jsx("button",{type:"button",disabled:$,onClick:()=>{window.confirm("Disconnect this conversation source? Imported data stays in its project.")&&H("disconnect",c.id)},children:"Disconnect"})]}),c.destinationLinks.tasks?e.jsx("a",{href:c.destinationLinks.tasks,target:"_blank",rel:"noreferrer",children:"View tasks"}):null,c.destinationLinks.conversations?e.jsx("a",{href:c.destinationLinks.conversations,target:"_blank",rel:"noreferrer",children:"View conversations"}):null]})]},c.id)),e.jsxs("form",{onSubmit:c=>{c.preventDefault(),H("connect")},className:"agent-sync-form",children:[e.jsx("h3",{children:u.length?"Add another connection":"Connect conversations"}),e.jsxs("label",{className:"agent-source-field",children:["Source installation",e.jsxs("select",{"aria-label":"Source installation",value:y?.instanceId??"",disabled:$,onChange:c=>b(c.target.value),children:[e.jsx("option",{value:"",children:"Select installation"}),o.map(c=>e.jsxs("option",{value:c.instanceId,disabled:!c.available||!c.capabilities.history,children:[c.root,c.available&&c.capabilities.history?"":" (unavailable)"]},c.instanceId))]})]}),y?.reason?e.jsx("small",{children:y.reason}):null,o.some(c=>c.available&&c.capabilities.history)?null:e.jsxs("small",{children:["No readable conversation history found."," ",n.provider?"Use Agent setup to check the installation, or create a conversation in this agent first.":"Open this agent and create a conversation, then refresh connections."]}),e.jsxs("label",{children:["Project",e.jsxs("select",{"aria-label":"Project",value:m,disabled:$||!l,onChange:c=>_(c.target.value),children:[e.jsx("option",{value:"",children:"Select project"}),h.map(c=>e.jsx("option",{value:c.id,children:c.content.name},c.id))]})]}),e.jsxs("label",{children:["Import history",e.jsxs("select",{"aria-label":"Import history",value:R,disabled:$,onChange:c=>k(c.target.value),children:[e.jsx("option",{value:"day",children:"Last day"}),e.jsx("option",{value:"week",children:"Last week"}),e.jsx("option",{value:"all",children:"All history"})]})]}),e.jsx("p",{children:"This imports the selected history once and shows progress in the CLI. Continual imports are off by default and can be scheduled in Settings."}),e.jsx("button",{type:"button",onClick:()=>oe({kind:"settings",section:"conversation-imports"}),children:"Manage continual imports in Settings"}),s?.state!=="signed_in"||!l?e.jsx("small",{children:"Sign in and select a default team in Account settings to choose a hosted project."}):null,e.jsx("button",{type:"submit",className:"agent-connect-button",disabled:$||!y?.available||!y.capabilities.history||!h.some(c=>c.id===m)||!l||!P||!U||s?.state!=="signed_in",children:A?"Opening setup…":"Connect conversations"})]}),x?e.jsx("a",{className:"agent-learning-link",href:x,target:"_blank",rel:"noreferrer",children:"Configure continual learning in Console"}):null,a?e.jsxs("details",{children:[e.jsx("summary",{children:"CLI setup"}),e.jsxs("small",{className:"agent-source-path",children:["Importer directory: ",a.directory]}),e.jsx("code",{children:a.statusCommand})]}):null,w?e.jsx("p",{role:"alert",children:w}):null,I&&t?e.jsx(we,{connection:t,command:I,onComplete:()=>{C(null),i()},onClose:()=>{C(null),i()}}):null]})}const O=n=>JSON.stringify([n.origin,n.sourceInstanceId]),he=n=>({id:n.id,revision:n.revision,contentHash:n.contentHash});function V(n,a,t,s,l){return se(n,`/v1/conversation-learning/${t}?${new URLSearchParams({teamId:a})}`,{method:s===void 0?"GET":"POST",...s===void 0?{}:{body:JSON.stringify(s)},signal:l})}function en(n,a,t,s){const l=Ne(),h=["native-conversation-learning",n?.serverUrl,t,a];return{...Pe({queryKey:h,enabled:!!(n&&a&&s),queryFn:({signal:i})=>V(n,a,"options",void 0,i),staleTime:15e3,refetchInterval:3e4}),refresh:()=>l.invalidateQueries({queryKey:h})}}function Se(n,a,t,s,l){return V(n,a,"policies",{...t?{id:t.id}:{},expectedRevision:t?.revision??0,configuration:s,enabled:l})}function ie(n,a,t=[]){const s=a?.configuration;return{projectId:n,name:s?.name??"Continual learning",mode:s?.mode??"activate",definition:s?.definition??null,configurationId:s?.configuration?.id??"",trainingPolicyId:s?.learningPolicy?.id??"",graderIds:[],sourceKeys:[...new Set([...s?.sources.filter(l=>l.enabled).map(O)??[],...t.map(O)])],adapter:s?.adapter??{kind:"complete_text",qualitativeOnly:!0},generator:s?.generator??null,graderSelection:s?.graderSelection??(a?{mode:"manual"}:{mode:"auto",modelId:"gpt-6-luna",sampleSize:8,maximumOutputTokens:2048,maximumSpendUsd:1}),schedule:s?.schedule??{timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,hour:2,minute:0,endHour:6,endMinute:0},limits:s?.limits??{perCycleUsd:5,dailyUsd:5,monthlyUsd:25,gradeUsd:.2,maximumTasks:10,minimumExamples:5,maxGpuSeconds:10800,maximumAttempts:2,lookbackDays:30},exceptions:s?.exceptions??"block",minimumScore:s?.minimumScore??.8,selection:s?.selection??{maximumSourceShare:1,maximumFailureShare:1,maximumLengthShare:1,replayFraction:.2,auditFraction:.1},acceptance:s?.acceptance??{minimumCasesPerCheck:20,minimumImprovement:.05,windowCasesPerCheck:20},failurePolicy:s?.failurePolicy??{pauseAfterConsecutiveFailures:3},...s?.serving?{serving:s.serving}:{serving:{targetId:"",canarySeconds:120,rollbackOnRuntimeFailure:!0}}}}function le(n,a){const t=n?.configurations.find(s=>s.id===a);return n?.trainingPolicies.filter(s=>s.modelProjectId===t?.portableProjectId&&s.training.recipe.id===`model-recipe-${t?.etag}`&&!s.id.startsWith("conversation-training-"))??[]}async function nn(n,a,t,s,l,h){const r=s.configurations.find(j=>j.id===t.configurationId),i=le(s,t.configurationId).find(j=>j.id===t.trainingPolicyId);if(!t.name.trim())throw new Error("Enter a policy name.");if(!s.projects.some(j=>j.id===t.projectId))throw new Error("This owned Project is unavailable for continual learning.");if(t.configurationId&&(!r||!s.projects.find(j=>j.id===t.projectId)?.configurationIds.includes(r.id)))throw new Error("Choose a model configuration attached to this Project.");if(t.mode!=="evaluate"&&(!r||!i))throw new Error("Choose an owned model and its reviewed training setup.");if(t.limits.perCycleUsd>t.limits.dailyUsd||t.limits.dailyUsd>t.limits.monthlyUsd)throw new Error("Daily and monthly spending limits must cover the run limit.");if(t.limits.minimumExamples>t.limits.maximumTasks-Math.floor(t.limits.maximumTasks*(t.selection?.replayFraction??0)))throw new Error("Leave capacity for the minimum new examples after replay.");const x=s.sources.filter(j=>j.projectId===t.projectId&&t.sourceKeys.includes(O(j)));if(!x.length)throw new Error("Select a source agent for this Project.");const o=[...(l?.configuration.sources??[]).filter(j=>!x.some(w=>O(w)===O(j))).map(j=>({...j,enabled:!1})),...x.map(j=>({origin:j.origin,sourceInstanceId:j.sourceInstanceId,enabled:!0}))];let d=t.definition;if(r&&(l?.configuration.configuration?.id!==r.id||l.configuration.configuration.expectedEtag!==r.etag))d=await V(n,a,"definitions",{projectId:t.projectId,configuration:{id:r.id,expectedRevision:r.revision,expectedEtag:r.etag}});else if(t.graderIds.length){const j=s.graders.flatMap(w=>w&&t.graderIds.includes(w.id)?[he(w)]:[]);d=await V(n,a,"definitions",{projectId:t.projectId,graders:j})}if(!d)throw new Error("Select evaluation rubrics or an existing task definition.");let b=t.serving;const m=s.servingTargets.find(j=>j.id===b?.targetId);if(t.mode==="activate"&&b?.targetId&&(!m||!m.enabled||m.projectId!==t.projectId))throw new Error("Select an available serving target in this Project.");if(t.mode==="activate"&&(!b?.targetId||m?.hostedPonder)&&(b={targetId:(await V(n,a,"serving-targets",{action:"ensure_hosted_ponder",projectId:t.projectId,bindingId:s.ponderBindingId})).id,canarySeconds:b?.canarySeconds??120,rollbackOnRuntimeFailure:!0}),t.mode==="activate"&&!b?.targetId)throw new Error("Choose a serving target, or enable the policy to register hosted Ponder.");const{sourceKeys:_,configurationId:R,trainingPolicyId:k,graderIds:I,...C}=t,A={...C,name:t.name.trim(),definition:d,sources:o,configuration:r?{id:r.id,expectedRevision:r.revision,expectedEtag:r.etag}:null,learningPolicy:i?he(i):null,...t.mode==="activate"?{serving:b}:{}};return t.mode!=="activate"&&delete A.serving,t.mode==="evaluate"&&delete A.acceptance,Se(n,a,l,A,h)}function sn({draft:n,options:a,loading:t,onChange:s}){const l=a?.sources.filter(o=>o.projectId===n.projectId)??[],h=l.filter(o=>["active","paused"].includes(o.state)),r=h.length>0&&h.every(o=>n.sourceKeys.includes(O(o))),i=o=>s({...n,sourceKeys:o}),x=a?.graders.flatMap(o=>o?[o]:[])??[];return e.jsxs(e.Fragment,{children:[e.jsxs("fieldset",{children:[e.jsx("legend",{children:"Source agents"}),e.jsxs("label",{className:"agent-learning-check",children:[e.jsx("input",{type:"checkbox",checked:r,disabled:!h.length,ref:o=>{o&&(o.indeterminate=!r&&h.some(d=>n.sourceKeys.includes(O(d))))},onChange:o=>i(o.target.checked?[...new Set([...n.sourceKeys,...h.map(O)])]:n.sourceKeys.filter(d=>!h.some(b=>O(b)===d)))}),"Select all"," ",e.jsxs("small",{children:["(",l.filter(o=>n.sourceKeys.includes(O(o))).length," selected)"]})]}),e.jsxs("div",{className:"agent-learning-options","aria-label":"Source agents",children:[l.map(o=>{const d=O(o),b=n.sourceKeys.includes(d),m=ne.find(R=>R.id===(o.origin.startsWith("native_")?"openpond_chat":o.origin)),_=o.origin==="native_chat"?"Ponder Pal Chat":o.origin==="native_work"?"Ponder Pal Work":m?.name??o.name;return e.jsxs("label",{className:"agent-learning-option",children:[e.jsx("input",{type:"checkbox",checked:b,disabled:!b&&!["active","paused"].includes(o.state),onChange:R=>i(R.target.checked?[...new Set([...n.sourceKeys,d])]:n.sourceKeys.filter(k=>k!==d))}),m?e.jsx("img",{src:m.icon,alt:""}):null,e.jsxs("span",{children:[_,e.jsx("small",{children:o.sourceInstanceId?o.name===o.origin?"Local connection":o.name:o.origin.startsWith("native_")?"Hosted conversations":"Uploaded history"})]}),e.jsx("small",{children:o.state})]},d)}),l.length?null:e.jsx("p",{role:"status",children:t?"Fetching source agents…":"Connect or import an agent into this Project first."})]}),e.jsx("p",{children:"Paused agents can use uploaded conversations. Selecting them leaves collection paused."})]}),e.jsxs("fieldset",{children:[e.jsx("legend",{children:"Evaluation rubrics"}),n.configurationId?e.jsx("p",{children:"The training configuration pins the task definition and its rubrics. Choose grader selection in Preparation."}):e.jsxs(e.Fragment,{children:[e.jsxs("label",{className:"agent-learning-check",children:[e.jsx("input",{type:"checkbox",disabled:!x.length,checked:x.length>0&&x.every(o=>n.graderIds.includes(o.id)),onChange:o=>s({...n,graderIds:o.target.checked?x.map(d=>d.id):[]})}),"Select all ",e.jsxs("small",{children:["(",n.graderIds.length," selected)"]})]}),e.jsxs("div",{className:"agent-learning-options","aria-label":"Evaluation rubrics",children:[x.map(o=>e.jsxs("label",{className:"agent-learning-option",children:[e.jsx("input",{type:"checkbox",checked:n.graderIds.includes(o.id),onChange:d=>s({...n,graderIds:d.target.checked?[...n.graderIds,o.id]:n.graderIds.filter(b=>b!==o.id)})}),e.jsxs("span",{children:[o.name,e.jsxs("small",{children:["Version ",o.revision]})]})]},`${o.id}:${o.revision}`)),x.length?null:e.jsx("p",{role:"status",children:t?"Fetching evaluation rubrics…":"No owned evaluation rubrics are available."})]}),n.definition&&!n.graderIds.length?e.jsx("p",{children:"The saved task definition and rubrics remain unchanged."}):null,e.jsxs("label",{children:["Existing task definition",e.jsxs("select",{value:n.definition?.id??"",onChange:o=>{const d=a?.definitions.find(b=>b.id===o.target.value);s({...n,definition:d?{id:d.id,revision:d.revision,contentHash:d.contentHash}:null,graderIds:[]})},children:[e.jsx("option",{value:"",children:"Select a definition or choose rubrics above"}),n.definition&&!a?.definitions.some(o=>o.id===n.definition?.id)?e.jsx("option",{value:n.definition.id,children:"Saved task definition"}):null,a?.definitions.map(o=>e.jsxs("option",{value:o.id,children:[o.name," (version ",o.revision,")"]},o.id))]})]})]}),e.jsxs("label",{children:["Minimum verified score",e.jsx("input",{type:"number",min:0,max:1,step:.01,value:n.minimumScore,onChange:o=>s({...n,minimumScore:Number(o.target.value)})})]})]})]})}function tn({draft:n,options:a,loading:t,onChange:s}){const l=a?.projects.find(i=>i.id===n.projectId)?.configurationIds??[],h=le(a,n.configurationId),r=n.graderSelection??{mode:"manual"};return e.jsxs(e.Fragment,{children:[e.jsxs("label",{children:["Mode",e.jsxs("select",{value:n.mode,onChange:i=>s({...n,mode:i.target.value}),children:[e.jsx("option",{value:"evaluate",children:"Evaluate only"}),e.jsx("option",{value:"train",children:"Train automatically, approve candidate"}),e.jsx("option",{value:"activate",children:"Train and activate automatically"})]})]}),e.jsxs("label",{children:["Model to train",e.jsxs("select",{value:n.configurationId,onChange:i=>{const x=i.target.value,o=le(a,x);s({...n,configurationId:x,trainingPolicyId:o.length===1?o[0].id:"",adapter:x?{kind:"reference_text",inputPointer:"/prompt",match:"contained"}:{kind:"complete_text",qualitativeOnly:!0}})},children:[e.jsx("option",{value:"",children:t?"Fetching configurations…":"Select configuration"}),a?.configurations.filter(i=>l.includes(i.id)).map(i=>e.jsx("option",{value:i.id,children:i.name},i.id))]})]}),n.mode!=="evaluate"?e.jsxs("label",{children:["Reviewed training setup",e.jsxs("select",{value:n.trainingPolicyId,onChange:i=>s({...n,trainingPolicyId:i.target.value}),children:[e.jsx("option",{value:"",children:"Select reviewed setup"}),h.map(i=>e.jsxs("option",{value:i.id,children:["Reviewed setup (version ",i.revision,")"]},i.id))]})]}):null,n.configurationId?e.jsxs(e.Fragment,{children:[e.jsxs("label",{children:["Task construction",e.jsxs("select",{value:n.adapter.kind,onChange:i=>s({...n,adapter:i.target.value==="reference_text"?{kind:"reference_text",inputPointer:"/prompt",match:"contained"}:{kind:"complete_text",qualitativeOnly:!0}}),children:[e.jsx("option",{value:"reference_text",children:"Match a published executable task"}),e.jsx("option",{value:"complete_text",children:"Complete text context and calibrated judges"})]})]}),n.adapter.kind==="reference_text"?e.jsxs("div",{className:"agent-learning-columns",children:[e.jsxs("label",{children:["Public task input field",e.jsx("input",{value:n.adapter.inputPointer,onChange:i=>s({...n,adapter:{kind:"reference_text",inputPointer:i.target.value,match:n.adapter.kind==="reference_text"?n.adapter.match:"contained"}})})]}),e.jsxs("label",{children:["Reference matching",e.jsxs("select",{value:n.adapter.match,onChange:i=>s({...n,adapter:{kind:"reference_text",inputPointer:n.adapter.kind==="reference_text"?n.adapter.inputPointer:"/prompt",match:i.target.value}}),children:[e.jsx("option",{value:"contained",children:"Contained"}),e.jsx("option",{value:"exact",children:"Exact"})]})]})]}):null,e.jsxs("label",{children:["Grader selection",e.jsxs("select",{value:r.mode,onChange:i=>s({...n,graderSelection:i.target.value==="auto"?{mode:"auto",modelId:"gpt-6-luna",sampleSize:8,maximumOutputTokens:2048,maximumSpendUsd:1}:{mode:"manual"}}),children:[e.jsx("option",{value:"auto",children:"Choose compatible rubrics automatically"}),e.jsx("option",{value:"manual",children:"Use the pinned rubrics"})]})]}),r.mode==="auto"?e.jsxs(e.Fragment,{children:[e.jsxs("label",{children:["Selection model",e.jsxs("select",{value:r.modelId,onChange:i=>s({...n,graderSelection:{...r,modelId:i.target.value}}),children:[a?.generators.some(i=>i.id===r.modelId)?null:e.jsx("option",{value:r.modelId,children:r.modelId}),a?.generators.map(i=>e.jsx("option",{value:i.id,children:i.name},i.id))]})]}),e.jsx("div",{className:"agent-learning-columns",children:[["sampleSize","Sample examples",1,30],["maximumOutputTokens","Output token limit",256,4096],["maximumSpendUsd","Selection spending limit ($)",.01,1e5]].map(([i,x,o,d])=>e.jsxs("label",{children:[x,e.jsx("input",{type:"number",min:o,max:d,step:i==="maximumSpendUsd"?.01:1,value:r[i],onChange:b=>s({...n,graderSelection:{...r,[i]:Number(b.target.value)}})})]},i))})]}):null]}):null,e.jsxs("label",{children:["Answer improvement model",e.jsxs("select",{value:n.generator?.modelId??"",onChange:i=>s({...n,generator:i.target.value?{modelId:i.target.value,maximumOutputTokens:n.generator?.maximumOutputTokens??2048,maximumSpendUsd:n.generator?.maximumSpendUsd??.1}:null}),children:[e.jsx("option",{value:"",children:"Use recorded answers only"}),a?.generators.map(i=>e.jsx("option",{value:i.id,children:i.name},i.id))]})]}),n.generator?e.jsxs("div",{className:"agent-learning-columns",children:[e.jsxs("label",{children:["Per improved answer limit ($)",e.jsx("input",{type:"number",min:.01,step:.01,value:n.generator.maximumSpendUsd,onChange:i=>s({...n,generator:{...n.generator,maximumSpendUsd:Number(i.target.value)}})})]}),e.jsxs("label",{children:["Output token limit",e.jsx("input",{type:"number",min:256,max:16384,value:n.generator.maximumOutputTokens,onChange:i=>s({...n,generator:{...n.generator,maximumOutputTokens:Number(i.target.value)}})})]})]}):null,n.mode==="activate"?e.jsxs("fieldset",{children:[e.jsx("legend",{children:"Serving authorization"}),e.jsxs("label",{children:["Serving target",e.jsxs("select",{value:n.serving?.targetId??"",onChange:i=>s({...n,serving:{targetId:i.target.value,canarySeconds:n.serving?.canarySeconds??120,rollbackOnRuntimeFailure:!0}}),children:[e.jsx("option",{value:"",children:"Ponder in this Project"}),a?.servingTargets.filter(i=>i.projectId===n.projectId&&i.enabled).map(i=>e.jsx("option",{value:i.id,children:i.hostedPonder?"Hosted Ponder":`${i.role} / ${i.roleTargetId}`},i.id))]})]}),e.jsxs("label",{children:["Runtime canary (seconds)",e.jsx("input",{type:"number",min:30,max:600,value:n.serving?.canarySeconds??120,onChange:i=>s({...n,serving:{targetId:n.serving?.targetId??"",canarySeconds:Number(i.target.value),rollbackOnRuntimeFailure:!0}})})]}),e.jsx("p",{children:"Saving authorizes the selected target. Failed runtime checks restore its prior model. Training runs only within the saved policy's schedule and limits."})]}):null]})}const me=(n,a)=>n===void 0||a===void 0?"":`${String(n).padStart(2,"0")}:${String(a).padStart(2,"0")}`;function an({draft:n,onChange:a}){const t=(s,l)=>a({...n,limits:{...n.limits,[s]:l}});return e.jsxs(e.Fragment,{children:[e.jsxs("fieldset",{children:[e.jsx("legend",{children:"Run window"}),e.jsxs("div",{className:"agent-learning-columns",children:[e.jsxs("label",{children:["From",e.jsx("input",{type:"time",required:!0,value:me(n.schedule.hour,n.schedule.minute),onChange:s=>{const[l,h]=s.target.value.split(":").map(Number);a({...n,schedule:{...n.schedule,hour:l,minute:h}})}})]}),e.jsxs("label",{children:["Until",e.jsx("input",{type:"time",value:me(n.schedule.endHour,n.schedule.endMinute),onChange:s=>{const[l,h]=s.target.value.split(":").map(Number),{endHour:r,endMinute:i,...x}=n.schedule;a({...n,schedule:s.target.value?{...x,endHour:l,endMinute:h}:x})}})]})]}),e.jsxs("label",{children:["Timezone",e.jsx("input",{required:!0,value:n.schedule.timezone,onChange:s=>a({...n,schedule:{...n.schedule,timezone:s.target.value}})})]}),e.jsx("p",{children:"Queued learning starts within this window. A run already started may finish afterward."})]}),e.jsxs("fieldset",{children:[e.jsx("legend",{children:"Maximum spending"}),e.jsx("p",{children:"These are limits, not prices. Evaluation, answer improvements and training count toward them."}),e.jsx("div",{className:"agent-learning-columns",children:[["perCycleUsd","Per run ($)"],["dailyUsd","Per day ($)"],["monthlyUsd","Per month ($)"]].map(([s,l])=>e.jsxs("label",{children:[l,e.jsx("input",{type:"number",required:!0,min:.01,max:1e5,step:.01,value:n.limits[s],onChange:h=>t(s,Number(h.target.value))})]},s))})]}),e.jsxs("details",{children:[e.jsx("summary",{children:"Advanced limits"}),e.jsxs("div",{className:"agent-learning-columns",children:[[["gradeUsd","Per evaluation ceiling ($)",0,1e3,.01],["maximumTasks","Maximum tasks",1,200,1],["minimumExamples","Minimum training examples",1,200,1],["maximumAttempts","Maximum correction attempts",1,5,1],["lookbackDays","Uploaded history window (days)",1,30,1]].map(([s,l,h,r,i])=>e.jsxs("label",{children:[l,e.jsx("input",{type:"number",required:!0,min:h,max:r,step:i,value:n.limits[s],onChange:x=>t(s,Number(x.target.value))})]},s)),e.jsxs("label",{children:["Maximum GPU session (hours)",e.jsx("input",{type:"number",required:!0,min:.01,max:3,step:.01,value:n.limits.maxGpuSeconds/3600,onChange:s=>t("maxGpuSeconds",Math.round(Number(s.target.value)*3600))})]}),e.jsxs("label",{children:["Pause after failed cycles",e.jsx("input",{type:"number",required:!0,min:1,max:20,value:n.failurePolicy?.pauseAfterConsecutiveFailures??3,onChange:s=>a({...n,failurePolicy:{pauseAfterConsecutiveFailures:Number(s.target.value)}})})]})]}),e.jsxs("label",{className:"agent-learning-check",children:[e.jsx("input",{type:"checkbox",checked:n.exceptions==="eligible_remainder",onChange:s=>a({...n,exceptions:s.target.checked?"eligible_remainder":"block"})}),"Use the independently verified remainder when exceptions occur"]})]}),e.jsxs("details",{children:[e.jsx("summary",{children:"Training data balance"}),e.jsx("div",{className:"agent-learning-columns",children:[["maximumSourceShare","Maximum from one agent",100],["maximumFailureShare","Maximum from one error type",100],["maximumLengthShare","Maximum from one conversation length",100],["replayFraction","Previously learned examples",50],["auditFraction","Examples checked for quality",100]].map(([s,l,h])=>e.jsxs("label",{children:[l," (%)",e.jsx("input",{type:"number",min:s.startsWith("maximum")?1:0,max:h,value:Math.round((n.selection?.[s]??0)*100),onChange:r=>a({...n,selection:{maximumSourceShare:1,maximumFailureShare:1,maximumLengthShare:1,replayFraction:.2,auditFraction:.1,...n.selection,[s]:Number(r.target.value)/100}})})]},s))})]}),n.mode!=="evaluate"?e.jsxs("details",{children:[e.jsx("summary",{children:"Checks before using the trained model"}),e.jsx("div",{className:"agent-learning-columns",children:[["windowCasesPerCheck","New examples per quality check",2,1e4],["minimumCasesPerCheck","Minimum paired examples",2,1e4],["minimumImprovement","Required improvement",1e-4,1]].map(([s,l,h,r])=>e.jsxs("label",{children:[l,e.jsx("input",{type:"number",min:h,max:r,step:s==="minimumImprovement"?.01:1,value:n.acceptance?.[s]??h,onChange:i=>a({...n,acceptance:{minimumCasesPerCheck:20,windowCasesPerCheck:20,minimumImprovement:.05,...n.acceptance,[s]:Number(i.target.value)}})})]},s))}),e.jsx("p",{children:"Current and trained models use the same unseen examples. Insufficient evidence keeps the current model active."})]}):null]})}function rn({connection:n,teamId:a,projectId:t,projectName:s,initialPolicy:l,bindings:h,query:r,onClose:i}){const[x,o]=g.useState(l),[d,b]=g.useState(()=>ie(t,l,l?[]:h)),[m,_]=g.useState(!!r.data),[R,k]=g.useState(!1),[I,C]=g.useState(!1),[A,j]=g.useState(null),[w,L]=g.useState(l?.status==="enabled"||!l),[y,u]=g.useState("sources"),[P,U]=g.useState(!1),[H,$]=g.useState(null),c=g.useRef(m);c.current=m;const p=r.data?.policies.filter(f=>f.configuration.projectId===t)??[];g.useEffect(()=>{if(!r.data||c.current)return;const f=r.data.policies.find(M=>M.configuration.projectId===t&&M.status==="enabled")??r.data.policies.find(M=>M.configuration.projectId===t);o(f),b(ie(t,f,f?[]:h)),L(f?.status==="enabled"||!f),_(!0)},[r.data,t,h]);const S=()=>{I||(R?U(!0):i())},N=ce(S);function B(f){const M=p.find(K=>K.id===f);M&&(o(M),b(ie(t,M)),L(M.status==="enabled"),k(!1),$(null),U(!1),j(null))}function T(f){b(f),k(!0)}async function W(){if(!(!r.data||!m||I||r.isError)){C(!0),j(null);try{await nn(n,a,d,r.data,x,w),await r.refresh(),k(!1),i()}catch(f){j(f instanceof Error?f.message:"Unable to save continual learning.")}finally{C(!1)}}}const G={draft:d,options:r.data,loading:r.isPending,onChange:T};return e.jsx("div",{className:"git-dialog-backdrop provider-dialog-backdrop",onMouseDown:S,children:e.jsxs("section",{ref:N,className:"git-dialog provider-details-dialog agent-learning-dialog",role:"dialog","aria-modal":"true","aria-label":"Continual learning",onMouseDown:f=>f.stopPropagation(),children:[e.jsx("button",{type:"button",className:"git-dialog-close","aria-label":"Close continual learning",disabled:I,onClick:S,children:e.jsx(ee,{size:16})}),e.jsx("div",{className:"provider-dialog-header",children:e.jsxs("div",{children:[e.jsx("h2",{children:"Continual learning"}),e.jsx("span",{children:s})]})}),P?e.jsxs("div",{className:"agent-learning-discard",role:"alert",children:[e.jsx("p",{children:"Discard unsaved policy changes?"}),e.jsxs("div",{className:"settings-button-row",children:[e.jsx("button",{type:"button",onClick:()=>{U(!1),$(null)},children:"Keep editing"}),e.jsx("button",{type:"button",onClick:()=>H?B(H):i(),children:"Discard changes"})]})]}):null,p.length>1?e.jsxs("label",{className:"agent-learning-policy-picker",children:["Learning policy",e.jsx("select",{disabled:I,value:x?.id??"",onChange:f=>{R?($(f.target.value),U(!0)):B(f.target.value)},children:p.map(f=>e.jsxs("option",{value:f.id,children:[f.configuration.name," (",f.status,")"]},f.id))})]}):null,e.jsx("div",{className:"surface-tabs provider-agent-tabs",role:"tablist","aria-label":"Continual learning settings",children:[["sources","Sources & rubrics"],["preparation","Preparation"],["schedule","Run window & budget"]].map(([f,M])=>e.jsx("button",{type:"button",id:`learning-tab-${f}`,role:"tab","aria-selected":y===f,"aria-controls":`learning-panel-${f}`,tabIndex:y===f?0:-1,onClick:()=>u(f),onKeyDown:K=>{const X=["sources","preparation","schedule"],v=X.indexOf(f);if(["ArrowLeft","ArrowRight","Home","End"].includes(K.key)){K.preventDefault();const E=X[K.key==="Home"?0:K.key==="End"?2:(v+(K.key==="ArrowRight"?1:2))%3];u(E),document.getElementById(`learning-tab-${E}`)?.focus()}},children:M},f))}),e.jsxs("form",{className:"agent-learning-form",onSubmit:f=>{f.preventDefault(),W()},children:[e.jsx("fieldset",{disabled:!m||I,children:e.jsxs("label",{children:["Policy name",e.jsx("input",{required:!0,maxLength:200,value:d.name,onChange:f=>T({...d,name:f.target.value})})]})}),e.jsx("div",{id:`learning-panel-${y}`,role:"tabpanel","aria-labelledby":`learning-tab-${y}`,children:e.jsx("fieldset",{disabled:!m||I,children:y==="sources"?e.jsx(sn,{...G}):y==="preparation"?e.jsx(tn,{...G}):e.jsx(an,{...G})})}),r.isPending?e.jsx("p",{role:"status",children:"Fetching available sources, rubrics and models…"}):null,r.isError?e.jsxs("p",{role:"alert",children:[r.error.message," ",e.jsx("button",{type:"button",onClick:()=>{r.refetch()},children:"Retry settings"})]}):null,A?e.jsx("p",{role:"alert",children:A}):null,e.jsxs("label",{className:"agent-learning-check",children:[e.jsx("input",{type:"checkbox",checked:w,disabled:!m||I,onChange:f=>{L(f.target.checked),k(!0)}}),"Enable this policy after saving"]}),e.jsx("p",{children:"Saving enables only the reviewed sources, schedule and limits. No training is dispatched by opening this dialog."}),e.jsxs("div",{className:"settings-button-row agent-learning-footer",children:[e.jsx("button",{type:"button",disabled:I,onClick:S,children:"Cancel"}),e.jsx("button",{type:"submit",className:"primary",disabled:!m||!r.data||r.isError||I||!d.sourceKeys.length,children:I?"Saving…":w?"Save and enable":"Save paused"})]})]})]})})}function ln({agent:n,inventory:a,connection:t,teamId:s,projectId:l,projectName:h,query:r,signedIn:i}){const[x,o]=g.useState(!1),[d,b]=g.useState(null),[m,_]=g.useState(!1),[R,k]=g.useState(null),[I,C]=g.useState(""),A=g.useMemo(()=>new Set(a?.collector.connections.filter(p=>p.source===n.id&&p.teamId===s&&p.projectId===l&&p.state!=="disconnected").map(p=>p.sourceInstanceId)??[]),[a,n.id,s,l]),j=r.data?.sources.filter(p=>p.projectId===l&&(n.id==="openpond_chat"?["native_chat","native_work"].includes(p.origin)&&p.sourceInstanceId===null:p.origin===n.id&&p.sourceInstanceId!==null&&A.has(p.sourceInstanceId)))??[],w=[...new Set(j.flatMap(p=>p.sourceInstanceId?[p.sourceInstanceId]:[]))],L=w.includes(I)?I:w[0],y=j.filter(p=>p.sourceInstanceId===null||p.sourceInstanceId===L).map(p=>({origin:p.origin,sourceInstanceId:p.sourceInstanceId,enabled:!0})),u=r.data?.policies.filter(p=>p.configuration.projectId===l)??[],P=u.filter(p=>p.status==="enabled"&&p.configuration.sources.some(S=>S.enabled&&y.some(N=>O(N)===O(S)))),U=P[0]??u.find(p=>p.status==="enabled")??u[0],H=!!(t&&s&&l&&i&&r.data?.projects.some(p=>p.id===l));async function $(p,S){if(!t||!s||!r.data)return;let N={...p.configuration,sources:p.configuration.sources.map(T=>y.some(W=>O(W)===O(T))?{...T,enabled:S}:T)};if(S)for(const T of y)N.sources.some(W=>O(W)===O(T))||N.sources.push(T);const B=r.data.servingTargets.find(T=>T.id===N.serving?.targetId);if(S&&N.mode==="activate"&&N.serving?.targetId&&(!B||!B.enabled||B.projectId!==l))throw new Error("Review the policy's serving target before adding a source.");if(S&&N.mode==="activate"&&(!N.serving?.targetId||B?.hostedPonder)){const T=await V(t,s,"serving-targets",{action:"ensure_hosted_ponder",projectId:l,bindingId:r.data.ponderBindingId});N={...N,serving:{targetId:T.id,canarySeconds:N.serving?.canarySeconds??120,rollbackOnRuntimeFailure:!0}}}return Se(t,s,p,N,N.sources.some(T=>T.enabled))}async function c(p){if(!m){_(!0),k(null);try{if(p){const S=u.find(N=>N.id===d);if(!S)throw new Error("Refresh the learning policy before joining.");await $(S,!0),b(null)}else for(const S of P)await $(S,!1);await r.refresh()}catch(S){k(S instanceof Error?S.message:"Unable to update this learning source."),await r.refresh()}finally{_(!1)}}}return e.jsxs("div",{className:"agent-learning-control",children:[w.length>1?e.jsxs("label",{children:["Learning connection",e.jsx("select",{"aria-label":`${n.name} learning connection`,value:L,disabled:m,onChange:p=>C(p.target.value),children:w.map(p=>e.jsx("option",{value:p,children:j.find(S=>S.sourceInstanceId===p)?.name??"Local connection"},p))})]}):null,e.jsxs("div",{className:"agent-learning-control-row",children:[e.jsxs("label",{className:"provider-toggle",children:[e.jsx("input",{type:"checkbox","aria-label":`${n.name} continual learning`,checked:P.length>0,disabled:!H||!y.length||r.isPending||r.isError||m,onChange:p=>{if(p.target.checked){const S=u.find(N=>N.status==="enabled");S?b(S.id):o(!0)}else c(!1)}}),e.jsx("span",{"aria-hidden":"true"})]}),e.jsx("button",{type:"button",className:"agent-learning-settings",disabled:!t||!s||!l||!i||m,onClick:()=>o(!0),children:"Continual learning"}),e.jsx("small",{children:r.isError?"Needs attention":r.isPending?"Loading…":P.length?"On schedule":u.length?"Paused":"Off"})]}),l&&!y.length&&r.data?e.jsx("small",{children:"Sync this agent to the selected Project to use its local connection."}):null,R?e.jsx("small",{role:"alert",children:R}):null,x&&t&&s?e.jsx(rn,{connection:t,teamId:s,projectId:l,projectName:h,initialPolicy:U,bindings:y,query:r,onClose:()=>o(!1)},l):null,d?e.jsx(on,{policies:u.filter(p=>p.status==="enabled"),policyId:d,agentName:n.name,busy:m,error:R,onChoose:b,onClose:()=>{m||b(null)},onJoin:()=>{c(!0)}}):null]})}function on({policies:n,policyId:a,agentName:t,busy:s,error:l,onChoose:h,onClose:r,onJoin:i}){const x=ce(r),o=n.find(d=>d.id===a);return e.jsx("div",{className:"git-dialog-backdrop provider-dialog-backdrop",onMouseDown:r,children:e.jsxs("section",{ref:x,className:"git-dialog agent-learning-join",role:"dialog","aria-modal":"true","aria-label":"Add learning source",onMouseDown:d=>d.stopPropagation(),children:[e.jsx("button",{type:"button",className:"git-dialog-close",disabled:s,"aria-label":"Cancel",onClick:r,children:e.jsx(ee,{size:16})}),e.jsxs("h2",{children:["Add ",t," to ",o?.configuration.name??"continual learning","?"]}),e.jsx("p",{children:"This agent will contribute conversations to the existing model, schedule and spending limits. Collection settings stay unchanged."}),n.length>1?e.jsxs("label",{children:["Existing policy",e.jsx("select",{value:a,disabled:s,onChange:d=>h(d.target.value),children:n.map(d=>e.jsx("option",{value:d.id,children:d.configuration.name},d.id))})]}):null,l?e.jsx("p",{role:"alert",children:l}):null,e.jsxs("div",{className:"settings-button-row",children:[e.jsx("button",{type:"button",disabled:s,onClick:r,children:"Cancel"}),e.jsx("button",{type:"button",className:"primary",disabled:s||!o,onClick:i,children:s?"Adding…":"Add agent"})]})]})})}function cn({connection:n,payload:a,onPayload:t,onToast:s}){const{inventory:l,error:h,loading:r,refresh:i}=He(n),[x,o]=g.useState(null),[d,b]=g.useState(null),[m,_]=g.useState(0),R=`openpond-agent-cards:${JSON.stringify(a?.account.activeProfile??null)}`,[k,I]=g.useState(()=>{try{const v=JSON.parse(localStorage.getItem(R)??"null");return Array.isArray(v)?v.filter(E=>typeof E=="string"&&ne.some(z=>z.id===E)):["oh_my_pi"]}catch{return["oh_my_pi"]}});g.useEffect(()=>{try{localStorage.setItem(R,JSON.stringify(k))}catch{}},[R,k]);const[C,A]=g.useState(!1),j=g.useRef(null);g.useEffect(()=>{if(!C)return;const v=z=>{j.current?.contains(z.target)||A(!1)},E=z=>{z.key==="Escape"&&(A(!1),j.current?.querySelector("button")?.focus())};return document.addEventListener("pointerdown",v),document.addEventListener("keydown",E),()=>{document.removeEventListener("pointerdown",v),document.removeEventListener("keydown",E)}},[C]);const w=g.useRef({payload:a,onPayload:t});w.current={payload:a,onPayload:t};const L=g.useRef(!0);g.useEffect(()=>(L.current=!0,()=>{L.current=!1}),[]);const y=a?.account??null,u=a?.preferences.defaultTeamId??y?.accounts.find(v=>v.isActive)?.apiKeyAccess?.teamId??null,P=g.useCallback(v=>{o(v),v&&s?.(v,"error")},[s]),U=g.useCallback(v=>{const E=w.current;L.current&&E.payload&&E.onPayload({...E.payload,providers:v})},[]),H=g.useCallback((v,E)=>{const z=w.current;if(!L.current||!z.payload)return;const te=z.payload.providers,ue={...z.payload,providers:{...te,statuses:{...te.statuses,[v]:E.statuses[v]},modelCaches:{...te.modelCaches,[v]:E.modelCaches[v]}}};w.current={...z,payload:ue},z.onPayload(ue)},[]);qe(n,a?.providers,H,m);const $=g.useCallback(v=>{const E=w.current;E.payload&&E.onPayload({...E.payload,preferences:v.preferences})},[]),c=De({connection:n,onError:P,onPayload:t,onPreferences:$,onProviders:U,preferences:Ae(a?.preferences),providers:a?.providers}),p=Ze(n,y,u),{projects:S,projectId:N,loading:B,error:T}=p,W=en(n,u,JSON.stringify([y?.activeProfile??null,y?.profile?.id??null]),y?.state==="signed_in"),G=y?.baseUrl??y?.activeProfile?.baseUrl,f=G&&u?`${G.replace(/\/$/u,"")}/console/connections?${new URLSearchParams({teamId:u,...N?{project:N}:{}})}`:null,M=d?.provider,K=M?a?.providers.statuses[M]:null,X=d?e.jsx(Ye,{agent:d,inventory:l,connection:n,account:y,teamId:u,projects:S,projectId:N,onRefresh:i,learningUrl:f},d.id):null;return e.jsxs("section",{className:"connected-agents-view","aria-label":"Connected agents",children:[e.jsxs("div",{className:"agent-connections-heading",children:[e.jsxs("div",{children:[e.jsx("h2",{children:"Connected agents"}),e.jsx("p",{children:"Use your installed agents and sync conversations with OpenPond."})]}),e.jsxs("div",{className:"agent-connections-actions",children:[e.jsx("button",{type:"button",disabled:r||!n,"aria-label":"Refresh agent connections",onClick:()=>{i(),p.refresh(),_(v=>v+1)},children:e.jsx(Ee,{size:15})}),e.jsxs("div",{className:"agent-more",ref:j,children:[e.jsx("button",{type:"button","aria-expanded":C,onClick:()=>A(v=>!v),children:"More agents"}),C?e.jsxs("div",{className:"agent-more-menu",children:[ne.filter(v=>k.includes(v.id)).map(v=>e.jsxs("button",{type:"button",onClick:()=>{I(E=>E.filter(z=>z!==v.id)),A(!1)},children:[e.jsx(Re,{size:14}),e.jsx("span",{children:v.name})]},v.id)),k.length===0?e.jsx("span",{children:"All agents shown"}):null]}):null]})]})]}),e.jsxs("label",{className:"agent-project-scope",children:["Project",e.jsxs("select",{"aria-label":"Connections project",value:N,disabled:!S.length,onChange:v=>p.select(v.target.value),children:[e.jsx("option",{value:"",children:B&&!S.length?"Fetching projects…":"Select project"}),S.map(v=>e.jsx("option",{value:v.id,children:v.content.name},v.id))]})]}),T?e.jsx("p",{role:"alert",children:T}):null,h?e.jsx("p",{role:"alert",children:h}):null,x?e.jsx("p",{role:"alert",children:x}):null,e.jsx("div",{className:"agent-connections-grid",children:ne.filter(v=>!k.includes(v.id)).map(v=>e.jsx(Je,{agent:v,account:y,native:v.provider?a?.providers.statuses[v.provider]:null,inventory:l,projects:S,teamId:u,learningControl:e.jsx(ln,{agent:v,inventory:l,connection:n,teamId:u,projectId:N,projectName:S.find(E=>E.id===N)?.content.name??"Selected Project",query:W,signedIn:y?.state==="signed_in"}),connected:!!n,onHide:()=>I(E=>[...E,v.id]),onManage:()=>b(v)},`${JSON.stringify([y?.activeProfile,y?.profile?.id])}:${u}:${N}:${v.id}`))}),l?e.jsxs("div",{className:"agent-importer-footer",children:[e.jsx("span",{children:l.collector.running?"Import in progress":"No import running"}),e.jsx("button",{type:"button",onClick:()=>oe({kind:"settings",section:"conversation-imports"}),children:"Conversation import settings"})]}):null,d&&M&&K&&a?e.jsx(ze,{checkNativeProvider:c.checkNativeProvider,connection:n,account:y,codex:a.codex,providerId:M,providerBusy:c.providerBusy,settings:a.providers,status:K,onClose:()=>b(null),onDeleteCredential:c.deleteProviderCredential,onRefreshModels:c.refreshProviderModels,onSaveConfig:c.saveProviderConfig,onSaveCredential:c.saveProviderCredential,onStartOpenAiSubscriptionAuth:c.startOpenAiSubscriptionAuth,onValidate:c.validateProvider,conversationPanel:X}):d?e.jsx(dn,{agent:d,onClose:()=>b(null),children:X}):null]})}function dn({agent:n,onClose:a,children:t}){const s=ce(a);return e.jsx("div",{className:"git-dialog-backdrop provider-dialog-backdrop",onMouseDown:a,children:e.jsxs("section",{ref:s,className:"git-dialog provider-details-dialog agent-setup-dialog",role:"dialog","aria-modal":"true","aria-label":`${n.name} connection`,onMouseDown:l=>l.stopPropagation(),children:[e.jsx("button",{type:"button",className:"git-dialog-close","aria-label":"Close",onClick:a,children:e.jsx(ee,{size:16})}),e.jsx("div",{className:"provider-dialog-header",children:e.jsxs("div",{children:[e.jsx("h2",{children:n.name}),e.jsx("span",{children:"Conversation syncing"})]})}),t]})})}const un=["For agents","Featured","Productivity","Developer tools"],pn=new Set(["slack","google","github","mcp"]);function Tn({account:n,connection:a,defaultTeamId:t,onToast:s,payload:l,onPayload:h}){const[r,i]=g.useState("agents"),x=g.useId(),[o,d]=g.useState(null),[b,m]=g.useState(""),[_,R]=g.useState("For agents"),[k,I]=g.useState(()=>ae()),[C,A]=g.useState(null),j=n?.baseUrl??n?.activeProfile?.baseUrl??null,w=hn(t,C),L=g.useMemo(()=>k.filter(u=>xn(u,_)).filter(u=>vn(u,b)),[_,b,k]);g.useEffect(()=>{let u=!0;return!a||r!=="apps"?(I(ae()),A(null),()=>{u=!1}):(_e.connectedAppStatus(a,{status:"all"}).then(P=>{u&&(I(P.apps),A(P.teamId?.trim()||null))}).catch(P=>{u&&(console.warn("Unable to load connected app status.",P),I(ae()),A(null))}),()=>{u=!1})},[a,r]);function y(u){const P=$e({appId:u.id,baseUrl:j,teamId:w});bn(P).catch(U=>{s?.(U instanceof Error?U.message:String(U),"error")})}return e.jsxs("div",{className:"apps-workspace-view",children:[e.jsx("div",{className:"apps-page-tabs",role:"tablist","aria-label":"Apps pages",onKeyDown:u=>{if(!["ArrowLeft","ArrowRight","Home","End"].includes(u.key))return;u.preventDefault();const P=u.key==="Home"?"agents":u.key==="End"||r==="agents"?"apps":"agents";i(P),u.currentTarget.querySelector(`#${CSS.escape(`${x}-${P}`)}`)?.focus()},children:[{value:"agents",label:"Connections"},{value:"apps",label:"Apps"}].map(u=>e.jsx("button",{type:"button",role:"tab",id:`${x}-${u.value}`,"aria-controls":`${x}-${u.value}-panel`,tabIndex:r===u.value?0:-1,"aria-selected":r===u.value,onClick:()=>i(u.value),children:u.label},u.value))}),e.jsx("div",{role:"tabpanel",id:`${x}-${r}-panel`,"aria-labelledby":`${x}-${r}`,children:r==="agents"?e.jsx(cn,{connection:a,payload:l,onPayload:h,onToast:s},JSON.stringify([n?.activeProfile,t])):e.jsxs("section",{className:"connected-apps-view","aria-label":"Apps",children:[e.jsxs("div",{className:"connected-apps-header",children:[e.jsxs("div",{children:[e.jsx("h1",{children:"Apps"}),e.jsx("p",{children:"Connect apps that agents can use for chat, knowledge, files, and workflow actions."})]}),e.jsxs("label",{className:"connected-apps-search",children:[e.jsx(Le,{size:15}),e.jsx("input",{"aria-label":"Search apps",onChange:u=>m(u.target.value),placeholder:"Search apps",type:"search",value:b})]})]}),e.jsxs("section",{className:"connected-apps-hero","aria-label":"App context",children:[e.jsxs("div",{className:"connected-apps-hero-copy",children:[e.jsx("span",{className:"connected-apps-hero-icon",children:e.jsx(de,{appId:"github"})}),e.jsx("h2",{children:"Work with your apps"}),e.jsx("p",{children:"Bring repositories, documents, chat, calendars, and custom MCP tools into OpenPond."})]}),e.jsxs("div",{className:"connected-apps-context-card","aria-hidden":"true",children:[e.jsx("strong",{children:"Agent context"}),e.jsxs("div",{children:[e.jsx("span",{className:"files",children:"Files"}),e.jsx("span",{className:"chat",children:"Chat"}),e.jsx("span",{className:"oauth",children:"OAuth"}),e.jsx("span",{className:"mcp",children:"MCP"})]})]})]}),e.jsx("div",{className:"connected-apps-filters",role:"tablist","aria-label":"App categories",children:un.map(u=>e.jsx("button",{"aria-selected":_===u,className:_===u?"active":"",onClick:()=>R(u),role:"tab",type:"button",children:u},u))}),e.jsxs("div",{className:"connected-apps-list",children:[L.map(u=>e.jsx(mn,{app:u,onSelect:()=>d(u)},u.id)),L.length===0?e.jsx("div",{className:"connected-apps-empty",children:"No apps match the current search."}):null]}),o?e.jsx(gn,{app:o,onClose:()=>d(null),onInstall:()=>y(o)}):null]})})]})}function hn(n,a){const t=n?.trim();return t||a?.trim()||null}function mn({app:n,onSelect:a}){return e.jsxs("button",{className:"connected-app-row",onClick:a,type:"button",children:[e.jsxs("span",{className:"connected-app-row-main",children:[e.jsx(de,{appId:n.id}),e.jsxs("span",{className:"connected-app-copy",children:[e.jsxs("span",{className:"connected-app-title",children:[e.jsx("strong",{children:n.label}),e.jsxs("span",{children:[n.shortLabel!==n.label?n.shortLabel:n.category," / ",n.setupSurfaceLabel]})]}),e.jsx("span",{children:n.description}),e.jsxs("span",{className:"connected-app-capability-row",children:[n.capabilityLabels.slice(0,2).map(t=>e.jsx("span",{children:t},t)),n.capabilityLabels.length>2?e.jsxs("span",{children:["+",n.capabilityLabels.length-2]}):null]})]})]}),e.jsx("span",{className:`connected-app-status-pill ${n.status}`,children:n.statusLabel}),e.jsx(Te,{size:16})]})}function gn({app:n,onClose:a,onInstall:t}){const s=n.connections.filter(l=>l.status==="active");return e.jsx("div",{className:"connected-app-dialog-backdrop",role:"presentation",onMouseDown:l=>{l.target===l.currentTarget&&a()},children:e.jsxs("section",{className:"connected-app-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"connected-app-dialog-title",children:[e.jsx("button",{className:"connected-app-dialog-close",type:"button","aria-label":"Close app details",onClick:a,children:e.jsx(ee,{size:17})}),e.jsxs("div",{className:"connected-app-dialog-identity",children:[e.jsx("span",{className:"openpond-mark",children:e.jsx("img",{alt:"",src:Ue})}),e.jsxs("span",{className:"connection-dots","aria-hidden":"true",children:[e.jsx("span",{}),e.jsx("span",{}),e.jsx("span",{})]}),e.jsx(de,{appId:n.id})]}),e.jsxs("h2",{id:"connected-app-dialog-title",children:["Connect ",n.label]}),e.jsxs("div",{className:"connected-app-approval",children:[e.jsx(Oe,{size:16}),e.jsx("span",{children:n.statusLabel})]}),e.jsxs("div",{className:"connected-app-dialog-body",children:[e.jsxs("section",{children:[e.jsx("h3",{children:n.setupSurfaceLabel}),e.jsx("p",{children:"The web flow shows the provider account, workspace, and requested access before anything is connected."})]}),e.jsxs("section",{children:[e.jsx("h3",{children:"Connected account"}),e.jsx("p",{children:fn(s)})]}),e.jsxs("section",{children:[e.jsx("h3",{children:"Available capabilities"}),e.jsx("div",{className:"connected-app-dialog-capabilities",children:n.capabilities.map(l=>e.jsx("span",{children:l.label},l.id))})]}),e.jsxs("section",{children:[e.jsx("h3",{children:"Sandbox lease policy"}),e.jsx("p",{children:n.leasePolicy.leaseable?`Leaseable for ${n.leasePolicy.defaultTtlSeconds??0} seconds with scoped proxy access.`:"Managed as setup or tool discovery; no OAuth lease is required."})]})]}),e.jsxs("button",{className:"connected-app-dialog-primary",type:"button",onClick:t,children:[e.jsx("span",{children:n.installLabel}),e.jsx(Fe,{size:15})]})]})})}function de({appId:n}){return e.jsx("span",{className:`connected-app-icon app-${n}`,children:e.jsx("img",{alt:"",src:jn(n)})})}function xn(n,a){return a==="For agents"?!0:a==="Featured"?pn.has(n.id):a==="Productivity"?n.category==="Productivity"||n.category==="Chat":n.category==="Developer tools"||n.id==="mcp"}function vn(n,a){const t=a.trim().toLowerCase();return t?[n.id,n.label,n.shortLabel,n.category,n.description,n.providerFamily,n.setupSurface].some(s=>s.toLowerCase().includes(t)):!0}function jn(n){return Me(n)}async function bn(n){const a=window.openpond?.browser;if(a){const t=await a.openExternal({conversationId:"connected-apps",url:n});if(!t.ok)throw new Error(t.error??"Unable to open app setup.");return}window.open(n,"_blank","noopener,noreferrer")}function fn(n){return n.length===0?"No active OAuth connection for this setup surface.":n.map(a=>{const t=a.accountLabel??"Connected account";return a.workspaceLabel?`${t} / ${a.workspaceLabel}`:t}).join(", ")}export{Tn as AppsView,mn as ConnectedAppRow,hn as connectedAppSetupTeamId};
|
|
1
|
+
import{j as e,r as g}from"./index-Di1MU6Xr.js";import{X as ee,bH as oe,g as se,o as D,bL as Q,s as q,n as ge,_ as J,ck as xe,cl as ke,bM as Y,cm as pe,cn as Ie,co as re,b as ve,cp as je,cq as we,cr as Ce,k as Ne,m as Pe,a$ as Ae,aB as Ee,v as Re,cs as ae,W as _e,aJ as Le,w as Te,O as Ue,az as Oe,aP as Fe,ct as $e,I as Me}from"./App-nzE7JU_O.js";import{a as ce,u as De,b as ze}from"./useProviderSettings-2eysgqiA.js";import{c as be,A as ne,u as He}from"./agent-connections-D7ao-vbU.js";import{a as Ke,s as Be}from"./MainPane-DCz38-qy.js";import"./AppDialog-VtNvqbDm.js";import"./save-DJYUOhtD.js";import"./MarkdownText-Drjq6-JM.js";import"./arrow-up-right-DCWPxdbD.js";import"./cloud-upload-DpaGFZ9J.js";import"./square-DXtoCBNw.js";import"./folder-open-B-DFLDFH.js";import"./play-D_YGCdxU.js";function Je({agent:n,account:a,native:t,inventory:s,projects:l,teamId:h,learningControl:r,connected:i,onHide:x,onManage:o}){const d=s?.collector.connections.filter(m=>m.source===n.id)??[],b=s?.sources.some(m=>m.source===n.id&&m.available&&m.capabilities.history);return e.jsxs("article",{className:"agent-connection-card","aria-label":n.name,children:[e.jsxs("div",{className:"agent-card-title",children:[e.jsx("img",{src:n.icon,alt:""}),e.jsx("span",{children:n.name}),e.jsx("button",{type:"button",className:"agent-hide","aria-label":`Hide ${n.name}`,onClick:x,children:e.jsx(ee,{size:14})})]}),n.id==="openpond_chat"?e.jsxs(e.Fragment,{children:[e.jsx("small",{children:a?.state==="signed_in"?"Connected to OpenPond":"Sign in to OpenPond"}),e.jsx("p",{children:"Use Ponder Pal from the sidebar."}),e.jsx("button",{type:"button",className:"agent-account-link",onClick:()=>{oe({kind:"settings",section:"account"})},children:"Account setup"})]}):e.jsxs(e.Fragment,{children:[e.jsx("small",{children:t?t.available?t.enabled?"Ready to chat":"Installed · chat disabled":t.lastError??"Check installation":"Conversation import"}),e.jsx("button",{type:"button",className:"agent-connect-button",disabled:!i,onClick:o,children:t?.available||d.length?"Manage":"Connect"}),e.jsx("div",{className:"agent-card-sync",children:d.length?d.map(m=>e.jsxs("div",{children:[e.jsx("span",{children:be(m,s.collector)}),e.jsxs("small",{children:[l.find(_=>_.id===m.projectId&&m.teamId===h)?.content.name??m.projectId," ","· ",m.admitted," tasks"]}),m.teamId!==h?e.jsxs("small",{children:["Team: ",m.teamId]}):null,m.queued?e.jsxs("small",{children:[m.queued," updates queued"]}):null,m.lastAdmissionAt?e.jsxs("small",{children:["Last sync: ",new Date(m.lastAdmissionAt).toLocaleString()]}):null,m.error?e.jsx("small",{role:"alert",children:m.error}):null]},m.id)):e.jsx("small",{children:s?b?"History available · sync not connected":"No local history found":"Reading local setup…"})})]}),r]})}function qe(n,a,t,s){const l=g.useRef({providers:a,onProvider:t});l.current={providers:a,onProvider:t};const h=JSON.stringify(["claude-code","opencode","grok-build"].map(r=>{const i=a?.providers[r];return[r,i?.binaryPath,i?.sourceHome,i?.enabled]}));g.useEffect(()=>{if(!n||!l.current.providers)return;let r=!1;const i=["claude-code","opencode","grok-build"].map(x=>{const o=l.current.providers?.providers[x],d=new AbortController,b=s>0?{promise:se(n,`/v1/providers/${x}/native-setup`,{method:"POST",body:JSON.stringify({action:"check"}),signal:d.signal}),release:()=>d.abort()}:Ke(n,x,l.current.providers?.providers[x]);return b.promise.then(m=>{r||(s>0&&m.session&&!m.error&&Be(n,x,m,o),l.current.onProvider(x,m.settings))},()=>{}),b});return()=>{r=!0,i.forEach(x=>x.release())}},[n,h,s])}var F=q().trim().min(1).max(240),fe=ge().int().positive(),We=J(["dataset","evaluator","model","training_configuration","training_run","harness","environment","experiment","learning_policy","deployment"]),Ge=D({kind:We,resourceId:F,release:xe.nullable(),role:J(["training","validation","holdout","target","reward","evaluation","serving","source"])}).strict(),Ve=ke("kind",[D({kind:Y("model"),providerId:F,modelId:F,artifact:xe.nullable(),messages:Q(D({role:J(["system","user","assistant"]),content:q().max(1e5)}).strict()).max(100)}).strict(),D({kind:Y("harness"),profileRepositoryId:F,source:pe}).strict(),D({kind:Y("agent"),source:Ie}).strict(),D({kind:Y("suite"),profileRepositoryId:F,suiteId:F,sources:Q(pe).min(1).max(1e3)}).strict().superRefine((n,a)=>{const t=n.sources[0],s=new Set;for(const[l,h]of n.sources.entries())s.has(h.definitionId)&&a.addIssue({code:"custom",path:["sources",l],message:"Suite definitions must be unique."}),s.add(h.definitionId),(h.profileId!==t.profileId||h.sourceRevision!==t.sourceRevision||h.catalogHash!==t.catalogHash||re(h.harnessRelease)!==re(t.harnessRelease))&&a.addIssue({code:"custom",path:["sources",l],message:"Suite checks must belong to the same pinned Profile source and Harness release."})})]),ye=D({name:q().trim().min(1).max(200),description:q().max(1e4),targets:Q(D({id:F,name:q().trim().min(1).max(200),target:Ve}).strict()).max(100),defaultTargetId:F.nullable(),resources:Q(Ge).max(1e3)}).strict().superRefine((n,a)=>{new Set(n.targets.map(t=>t.id)).size!==n.targets.length&&a.addIssue({code:"custom",path:["targets"],message:"Target identities must be unique."}),n.defaultTargetId&&!n.targets.some(t=>t.id===n.defaultTargetId)&&a.addIssue({code:"custom",path:["defaultTargetId"],message:"Default target must belong to this Project."}),new Set(n.resources.map(t=>re(t))).size!==n.resources.length&&a.addIssue({code:"custom",path:["resources"],message:"Resource links must be unique."})}),Qe=D({schemaVersion:Y("openpond.trainingProject.v1"),id:F,teamId:F,creatorUserId:F,ownerScope:J(["workspace","personal"]).optional(),revision:fe,content:ye,archived:ve(),createdAt:q().datetime(),updatedAt:q().datetime()}).strict();D({operationId:F,id:F,expectedRevision:ge().int().nonnegative(),content:ye,ownerScope:J(["workspace","personal"]).optional()}).strict();D({operationId:F,expectedRevision:fe,archived:ve()}).strict();var Xe=D({teamId:F,projects:Q(Qe).max(100),nextCursor:F.nullable()}).strict();D({operation:J(["evaluate","train","enable_learning","accept_candidate","serve"]),support:J(["supported","unsupported"]),state:J(["ready","needs_setup","blocked"]),reasons:Q(D({code:F,message:q().min(1).max(2e3),field:q().nullable(),action:J(["choose_target","choose_data","choose_evaluator","configure_runtime","request_access","configure_budget","wait","review_evidence"]).nullable()}).strict()).max(100)}).strict().superRefine((n,a)=>{n.state==="ready"&&(n.support!=="supported"||n.reasons.length)&&a.addIssue({code:"custom",message:"Ready operations must be supported with no blockers."}),n.state!=="ready"&&!n.reasons.length&&a.addIssue({code:"custom",message:"Unavailable operations must explain the next step."})});const Z=new WeakMap;function Ze(n,a,t){const s=JSON.stringify([a?.activeProfile,a?.profile?.id,t]),l=n?Z.get(n)?.get(s):void 0,[h,r]=g.useState(null),[i,x]=g.useState(null),[o,d]=g.useState(!1),[b,m]=g.useState(0),_=a?.state==="signed_in"?h?.key===s&&h.connection===n?h.value:l:void 0;g.useEffect(()=>{if(!n||!t||a?.state!=="signed_in")return;const k=new AbortController;d(!0),x(null);async function I(){const C=[],A=new Set;let j;do{const P=Xe.parse(await se(n,"/v1/training/evaluation-workspace",{method:"POST",body:JSON.stringify({teamId:t,operation:"projects",value:{cursor:j}}),signal:k.signal}));if(P.teamId!==t)throw new Error("The hosted project workspace changed. Refresh connections.");if(C.push(...P.projects.filter(U=>!U.archived)),j=P.nextCursor??void 0,j&&A.has(j))throw new Error("Project pagination stalled. Refresh connections.");j&&A.add(j)}while(j&&!k.signal.aborted);if(k.signal.aborted)return;let w=Z.get(n);w||(w=new Map,Z.set(n,w));const L=w.get(s)?.selected,y=L&&C.some(P=>P.id===L)?L:C.length===1?C[0].id:"",u={projects:C,selected:y};w.set(s,u),r({key:s,connection:n,value:u})}return I().catch(C=>{k.signal.aborted||x(C instanceof Error?C.message:"Unable to list hosted projects.")}).finally(()=>{k.signal.aborted||d(!1)}),()=>k.abort()},[n,s,t,a?.state,b]);const R=g.useCallback(k=>{if(!n)return;const I=Z.get(n)?.get(s);if(!I||!I.projects.some(A=>A.id===k))return;const C={...I,selected:k};Z.get(n).set(s,C),r({key:s,connection:n,value:C})},[n,s]);return{projects:_?.projects??[],projectId:_?.selected??"",select:R,error:i,loading:o,refresh:()=>m(k=>k+1)}}je.extend(Ce);function Ye({agent:n,inventory:a,connection:t,account:s,teamId:l,projects:h,projectId:r,onRefresh:i,learningUrl:x}){const o=a?.sources.filter(c=>c.source===n.id)??[],[d,b]=g.useState(o.length===1?o[0].instanceId:""),[m,_]=g.useState(r),[R,k]=g.useState("week"),[I,C]=g.useState(null),[A,j]=g.useState(!1),[w,L]=g.useState(null),y=o.find(c=>c.instanceId===d)??(!d&&o.length===1?o[0]:void 0),u=a?.collector.connections.filter(c=>c.source===n.id)??[],P=s?.baseUrl??s?.activeProfile?.baseUrl,U=s?.apiBaseUrl;async function H(c,p){if(!(!t||A||I)){j(!0),L(null);try{const S=await se(t,"/v1/native-history/collector",{method:"POST",body:JSON.stringify({command:c,...p?{connectionId:p}:{},...c==="connect"?{setup:{sourceInstanceId:y?.instanceId,teamId:l,projectId:m,accountBaseUrl:P,apiBaseUrl:U,range:R}}:{}})});S.command?C(S.command):await i()}catch(S){L(S instanceof Error?S.message:"Unable to update this connection.")}finally{j(!1)}}}const $=A||I!==null;return e.jsxs("div",{className:"agent-conversation-setup provider-dialog-body",children:[e.jsxs("p",{children:["Sync saved ",n.name," conversations to an existing OpenPond project. Setup uses the OpenPond CLI and browser authorization."]}),u.map(c=>e.jsxs("section",{className:"agent-retained-connection","aria-label":`${n.name} sync connection`,children:[e.jsx("strong",{children:be(c,a.collector)}),e.jsxs("span",{children:["Project:"," ",c.teamId===l?h.find(p=>p.id===c.projectId)?.content.name??c.projectId:c.projectId," ","· Team: ",c.teamId]}),e.jsx("small",{children:c.accountBaseUrl??"Hosted destination"}),e.jsx("small",{className:"agent-source-path",children:c.sourceRoot}),e.jsxs("span",{children:[c.admitted," tasks imported · ",c.queued," updates queued"]}),c.backfill.total>0&&c.backfill.stage!=="complete"?e.jsxs(e.Fragment,{children:[e.jsx("progress",{"aria-label":"History import progress",value:c.backfill.admitted+c.backfill.skipped,max:c.backfill.total}),e.jsxs("small",{children:[c.backfill.admitted+c.backfill.skipped," of"," ",c.backfill.total," conversations processed"]})]}):null,e.jsx("small",{children:c.lastAdmissionAt?`Last synced ${je(c.lastAdmissionAt).fromNow()}`:"No uploads acknowledged yet"}),c.error?e.jsx("p",{role:"alert",children:c.error}):null,e.jsxs("div",{className:"settings-button-row",children:[c.state==="disconnected"?e.jsx("button",{type:"button",disabled:$,onClick:()=>{H("reconnect",c.id)},children:"Reconnect"}):e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",disabled:$,onClick:()=>{H(c.state==="paused"?"resume":"pause",c.id)},children:c.state==="paused"?"Resume":"Pause"}),e.jsx("button",{type:"button",disabled:$,onClick:()=>{window.confirm("Disconnect this conversation source? Imported data stays in its project.")&&H("disconnect",c.id)},children:"Disconnect"})]}),c.destinationLinks.tasks?e.jsx("a",{href:c.destinationLinks.tasks,target:"_blank",rel:"noreferrer",children:"View tasks"}):null,c.destinationLinks.conversations?e.jsx("a",{href:c.destinationLinks.conversations,target:"_blank",rel:"noreferrer",children:"View conversations"}):null]})]},c.id)),e.jsxs("form",{onSubmit:c=>{c.preventDefault(),H("connect")},className:"agent-sync-form",children:[e.jsx("h3",{children:u.length?"Add another connection":"Connect conversations"}),e.jsxs("label",{className:"agent-source-field",children:["Source installation",e.jsxs("select",{"aria-label":"Source installation",value:y?.instanceId??"",disabled:$,onChange:c=>b(c.target.value),children:[e.jsx("option",{value:"",children:"Select installation"}),o.map(c=>e.jsxs("option",{value:c.instanceId,disabled:!c.available||!c.capabilities.history,children:[c.root,c.available&&c.capabilities.history?"":" (unavailable)"]},c.instanceId))]})]}),y?.reason?e.jsx("small",{children:y.reason}):null,o.some(c=>c.available&&c.capabilities.history)?null:e.jsxs("small",{children:["No readable conversation history found."," ",n.provider?"Use Agent setup to check the installation, or create a conversation in this agent first.":"Open this agent and create a conversation, then refresh connections."]}),e.jsxs("label",{children:["Project",e.jsxs("select",{"aria-label":"Project",value:m,disabled:$||!l,onChange:c=>_(c.target.value),children:[e.jsx("option",{value:"",children:"Select project"}),h.map(c=>e.jsx("option",{value:c.id,children:c.content.name},c.id))]})]}),e.jsxs("label",{children:["Import history",e.jsxs("select",{"aria-label":"Import history",value:R,disabled:$,onChange:c=>k(c.target.value),children:[e.jsx("option",{value:"day",children:"Last day"}),e.jsx("option",{value:"week",children:"Last week"}),e.jsx("option",{value:"all",children:"All history"})]})]}),e.jsx("p",{children:"This imports the selected history once and shows progress in the CLI. Continual imports are off by default and can be scheduled in Settings."}),e.jsx("button",{type:"button",onClick:()=>oe({kind:"settings",section:"conversation-imports"}),children:"Manage continual imports in Settings"}),s?.state!=="signed_in"||!l?e.jsx("small",{children:"Sign in and select a default team in Account settings to choose a hosted project."}):null,e.jsx("button",{type:"submit",className:"agent-connect-button",disabled:$||!y?.available||!y.capabilities.history||!h.some(c=>c.id===m)||!l||!P||!U||s?.state!=="signed_in",children:A?"Opening setup…":"Connect conversations"})]}),x?e.jsx("a",{className:"agent-learning-link",href:x,target:"_blank",rel:"noreferrer",children:"Configure continual learning in Console"}):null,a?e.jsxs("details",{children:[e.jsx("summary",{children:"CLI setup"}),e.jsxs("small",{className:"agent-source-path",children:["Importer directory: ",a.directory]}),e.jsx("code",{children:a.statusCommand})]}):null,w?e.jsx("p",{role:"alert",children:w}):null,I&&t?e.jsx(we,{connection:t,command:I,onComplete:()=>{C(null),i()},onClose:()=>{C(null),i()}}):null]})}const O=n=>JSON.stringify([n.origin,n.sourceInstanceId]),he=n=>({id:n.id,revision:n.revision,contentHash:n.contentHash});function V(n,a,t,s,l){return se(n,`/v1/conversation-learning/${t}?${new URLSearchParams({teamId:a})}`,{method:s===void 0?"GET":"POST",...s===void 0?{}:{body:JSON.stringify(s)},signal:l})}function en(n,a,t,s){const l=Ne(),h=["native-conversation-learning",n?.serverUrl,t,a];return{...Pe({queryKey:h,enabled:!!(n&&a&&s),queryFn:({signal:i})=>V(n,a,"options",void 0,i),staleTime:15e3,refetchInterval:3e4}),refresh:()=>l.invalidateQueries({queryKey:h})}}function Se(n,a,t,s,l){return V(n,a,"policies",{...t?{id:t.id}:{},expectedRevision:t?.revision??0,configuration:s,enabled:l})}function ie(n,a,t=[]){const s=a?.configuration;return{projectId:n,name:s?.name??"Continual learning",mode:s?.mode??"activate",definition:s?.definition??null,configurationId:s?.configuration?.id??"",trainingPolicyId:s?.learningPolicy?.id??"",graderIds:[],sourceKeys:[...new Set([...s?.sources.filter(l=>l.enabled).map(O)??[],...t.map(O)])],adapter:s?.adapter??{kind:"complete_text",qualitativeOnly:!0},generator:s?.generator??null,graderSelection:s?.graderSelection??(a?{mode:"manual"}:{mode:"auto",modelId:"gpt-6-luna",sampleSize:8,maximumOutputTokens:2048,maximumSpendUsd:1}),schedule:s?.schedule??{timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,hour:2,minute:0,endHour:6,endMinute:0},limits:s?.limits??{perCycleUsd:5,dailyUsd:5,monthlyUsd:25,gradeUsd:.2,maximumTasks:10,minimumExamples:5,maxGpuSeconds:10800,maximumAttempts:2,lookbackDays:30},exceptions:s?.exceptions??"block",minimumScore:s?.minimumScore??.8,selection:s?.selection??{maximumSourceShare:1,maximumFailureShare:1,maximumLengthShare:1,replayFraction:.2,auditFraction:.1},acceptance:s?.acceptance??{minimumCasesPerCheck:20,minimumImprovement:.05,windowCasesPerCheck:20},failurePolicy:s?.failurePolicy??{pauseAfterConsecutiveFailures:3},...s?.serving?{serving:s.serving}:{serving:{targetId:"",canarySeconds:120,rollbackOnRuntimeFailure:!0}}}}function le(n,a){const t=n?.configurations.find(s=>s.id===a);return n?.trainingPolicies.filter(s=>s.modelProjectId===t?.portableProjectId&&s.training.recipe.id===`model-recipe-${t?.etag}`&&!s.id.startsWith("conversation-training-"))??[]}async function nn(n,a,t,s,l,h){const r=s.configurations.find(j=>j.id===t.configurationId),i=le(s,t.configurationId).find(j=>j.id===t.trainingPolicyId);if(!t.name.trim())throw new Error("Enter a policy name.");if(!s.projects.some(j=>j.id===t.projectId))throw new Error("This owned Project is unavailable for continual learning.");if(t.configurationId&&(!r||!s.projects.find(j=>j.id===t.projectId)?.configurationIds.includes(r.id)))throw new Error("Choose a model configuration attached to this Project.");if(t.mode!=="evaluate"&&(!r||!i))throw new Error("Choose an owned model and its reviewed training setup.");if(t.limits.perCycleUsd>t.limits.dailyUsd||t.limits.dailyUsd>t.limits.monthlyUsd)throw new Error("Daily and monthly spending limits must cover the run limit.");if(t.limits.minimumExamples>t.limits.maximumTasks-Math.floor(t.limits.maximumTasks*(t.selection?.replayFraction??0)))throw new Error("Leave capacity for the minimum new examples after replay.");const x=s.sources.filter(j=>j.projectId===t.projectId&&t.sourceKeys.includes(O(j)));if(!x.length)throw new Error("Select a source agent for this Project.");const o=[...(l?.configuration.sources??[]).filter(j=>!x.some(w=>O(w)===O(j))).map(j=>({...j,enabled:!1})),...x.map(j=>({origin:j.origin,sourceInstanceId:j.sourceInstanceId,enabled:!0}))];let d=t.definition;if(r&&(l?.configuration.configuration?.id!==r.id||l.configuration.configuration.expectedEtag!==r.etag))d=await V(n,a,"definitions",{projectId:t.projectId,configuration:{id:r.id,expectedRevision:r.revision,expectedEtag:r.etag}});else if(t.graderIds.length){const j=s.graders.flatMap(w=>w&&t.graderIds.includes(w.id)?[he(w)]:[]);d=await V(n,a,"definitions",{projectId:t.projectId,graders:j})}if(!d)throw new Error("Select evaluation rubrics or an existing task definition.");let b=t.serving;const m=s.servingTargets.find(j=>j.id===b?.targetId);if(t.mode==="activate"&&b?.targetId&&(!m||!m.enabled||m.projectId!==t.projectId))throw new Error("Select an available serving target in this Project.");if(t.mode==="activate"&&(!b?.targetId||m?.hostedPonder)&&(b={targetId:(await V(n,a,"serving-targets",{action:"ensure_hosted_ponder",projectId:t.projectId,bindingId:s.ponderBindingId})).id,canarySeconds:b?.canarySeconds??120,rollbackOnRuntimeFailure:!0}),t.mode==="activate"&&!b?.targetId)throw new Error("Choose a serving target, or enable the policy to register hosted Ponder.");const{sourceKeys:_,configurationId:R,trainingPolicyId:k,graderIds:I,...C}=t,A={...C,name:t.name.trim(),definition:d,sources:o,configuration:r?{id:r.id,expectedRevision:r.revision,expectedEtag:r.etag}:null,learningPolicy:i?he(i):null,...t.mode==="activate"?{serving:b}:{}};return t.mode!=="activate"&&delete A.serving,t.mode==="evaluate"&&delete A.acceptance,Se(n,a,l,A,h)}function sn({draft:n,options:a,loading:t,onChange:s}){const l=a?.sources.filter(o=>o.projectId===n.projectId)??[],h=l.filter(o=>["active","paused"].includes(o.state)),r=h.length>0&&h.every(o=>n.sourceKeys.includes(O(o))),i=o=>s({...n,sourceKeys:o}),x=a?.graders.flatMap(o=>o?[o]:[])??[];return e.jsxs(e.Fragment,{children:[e.jsxs("fieldset",{children:[e.jsx("legend",{children:"Source agents"}),e.jsxs("label",{className:"agent-learning-check",children:[e.jsx("input",{type:"checkbox",checked:r,disabled:!h.length,ref:o=>{o&&(o.indeterminate=!r&&h.some(d=>n.sourceKeys.includes(O(d))))},onChange:o=>i(o.target.checked?[...new Set([...n.sourceKeys,...h.map(O)])]:n.sourceKeys.filter(d=>!h.some(b=>O(b)===d)))}),"Select all"," ",e.jsxs("small",{children:["(",l.filter(o=>n.sourceKeys.includes(O(o))).length," selected)"]})]}),e.jsxs("div",{className:"agent-learning-options","aria-label":"Source agents",children:[l.map(o=>{const d=O(o),b=n.sourceKeys.includes(d),m=ne.find(R=>R.id===(o.origin.startsWith("native_")?"openpond_chat":o.origin)),_=o.origin==="native_chat"?"Ponder Pal Chat":o.origin==="native_work"?"Ponder Pal Work":m?.name??o.name;return e.jsxs("label",{className:"agent-learning-option",children:[e.jsx("input",{type:"checkbox",checked:b,disabled:!b&&!["active","paused"].includes(o.state),onChange:R=>i(R.target.checked?[...new Set([...n.sourceKeys,d])]:n.sourceKeys.filter(k=>k!==d))}),m?e.jsx("img",{src:m.icon,alt:""}):null,e.jsxs("span",{children:[_,e.jsx("small",{children:o.sourceInstanceId?o.name===o.origin?"Local connection":o.name:o.origin.startsWith("native_")?"Hosted conversations":"Uploaded history"})]}),e.jsx("small",{children:o.state})]},d)}),l.length?null:e.jsx("p",{role:"status",children:t?"Fetching source agents…":"Connect or import an agent into this Project first."})]}),e.jsx("p",{children:"Paused agents can use uploaded conversations. Selecting them leaves collection paused."})]}),e.jsxs("fieldset",{children:[e.jsx("legend",{children:"Evaluation rubrics"}),n.configurationId?e.jsx("p",{children:"The training configuration pins the task definition and its rubrics. Choose grader selection in Preparation."}):e.jsxs(e.Fragment,{children:[e.jsxs("label",{className:"agent-learning-check",children:[e.jsx("input",{type:"checkbox",disabled:!x.length,checked:x.length>0&&x.every(o=>n.graderIds.includes(o.id)),onChange:o=>s({...n,graderIds:o.target.checked?x.map(d=>d.id):[]})}),"Select all ",e.jsxs("small",{children:["(",n.graderIds.length," selected)"]})]}),e.jsxs("div",{className:"agent-learning-options","aria-label":"Evaluation rubrics",children:[x.map(o=>e.jsxs("label",{className:"agent-learning-option",children:[e.jsx("input",{type:"checkbox",checked:n.graderIds.includes(o.id),onChange:d=>s({...n,graderIds:d.target.checked?[...n.graderIds,o.id]:n.graderIds.filter(b=>b!==o.id)})}),e.jsxs("span",{children:[o.name,e.jsxs("small",{children:["Version ",o.revision]})]})]},`${o.id}:${o.revision}`)),x.length?null:e.jsx("p",{role:"status",children:t?"Fetching evaluation rubrics…":"No owned evaluation rubrics are available."})]}),n.definition&&!n.graderIds.length?e.jsx("p",{children:"The saved task definition and rubrics remain unchanged."}):null,e.jsxs("label",{children:["Existing task definition",e.jsxs("select",{value:n.definition?.id??"",onChange:o=>{const d=a?.definitions.find(b=>b.id===o.target.value);s({...n,definition:d?{id:d.id,revision:d.revision,contentHash:d.contentHash}:null,graderIds:[]})},children:[e.jsx("option",{value:"",children:"Select a definition or choose rubrics above"}),n.definition&&!a?.definitions.some(o=>o.id===n.definition?.id)?e.jsx("option",{value:n.definition.id,children:"Saved task definition"}):null,a?.definitions.map(o=>e.jsxs("option",{value:o.id,children:[o.name," (version ",o.revision,")"]},o.id))]})]})]}),e.jsxs("label",{children:["Minimum verified score",e.jsx("input",{type:"number",min:0,max:1,step:.01,value:n.minimumScore,onChange:o=>s({...n,minimumScore:Number(o.target.value)})})]})]})]})}function tn({draft:n,options:a,loading:t,onChange:s}){const l=a?.projects.find(i=>i.id===n.projectId)?.configurationIds??[],h=le(a,n.configurationId),r=n.graderSelection??{mode:"manual"};return e.jsxs(e.Fragment,{children:[e.jsxs("label",{children:["Mode",e.jsxs("select",{value:n.mode,onChange:i=>s({...n,mode:i.target.value}),children:[e.jsx("option",{value:"evaluate",children:"Evaluate only"}),e.jsx("option",{value:"train",children:"Train automatically, approve candidate"}),e.jsx("option",{value:"activate",children:"Train and activate automatically"})]})]}),e.jsxs("label",{children:["Model to train",e.jsxs("select",{value:n.configurationId,onChange:i=>{const x=i.target.value,o=le(a,x);s({...n,configurationId:x,trainingPolicyId:o.length===1?o[0].id:"",adapter:x?{kind:"reference_text",inputPointer:"/prompt",match:"contained"}:{kind:"complete_text",qualitativeOnly:!0}})},children:[e.jsx("option",{value:"",children:t?"Fetching configurations…":"Select configuration"}),a?.configurations.filter(i=>l.includes(i.id)).map(i=>e.jsx("option",{value:i.id,children:i.name},i.id))]})]}),n.mode!=="evaluate"?e.jsxs("label",{children:["Reviewed training setup",e.jsxs("select",{value:n.trainingPolicyId,onChange:i=>s({...n,trainingPolicyId:i.target.value}),children:[e.jsx("option",{value:"",children:"Select reviewed setup"}),h.map(i=>e.jsxs("option",{value:i.id,children:["Reviewed setup (version ",i.revision,")"]},i.id))]})]}):null,n.configurationId?e.jsxs(e.Fragment,{children:[e.jsxs("label",{children:["Task construction",e.jsxs("select",{value:n.adapter.kind,onChange:i=>s({...n,adapter:i.target.value==="reference_text"?{kind:"reference_text",inputPointer:"/prompt",match:"contained"}:{kind:"complete_text",qualitativeOnly:!0}}),children:[e.jsx("option",{value:"reference_text",children:"Match a published executable task"}),e.jsx("option",{value:"complete_text",children:"Complete text context and calibrated judges"})]})]}),n.adapter.kind==="reference_text"?e.jsxs("div",{className:"agent-learning-columns",children:[e.jsxs("label",{children:["Public task input field",e.jsx("input",{value:n.adapter.inputPointer,onChange:i=>s({...n,adapter:{kind:"reference_text",inputPointer:i.target.value,match:n.adapter.kind==="reference_text"?n.adapter.match:"contained"}})})]}),e.jsxs("label",{children:["Reference matching",e.jsxs("select",{value:n.adapter.match,onChange:i=>s({...n,adapter:{kind:"reference_text",inputPointer:n.adapter.kind==="reference_text"?n.adapter.inputPointer:"/prompt",match:i.target.value}}),children:[e.jsx("option",{value:"contained",children:"Contained"}),e.jsx("option",{value:"exact",children:"Exact"})]})]})]}):null,e.jsxs("label",{children:["Grader selection",e.jsxs("select",{value:r.mode,onChange:i=>s({...n,graderSelection:i.target.value==="auto"?{mode:"auto",modelId:"gpt-6-luna",sampleSize:8,maximumOutputTokens:2048,maximumSpendUsd:1}:{mode:"manual"}}),children:[e.jsx("option",{value:"auto",children:"Choose compatible rubrics automatically"}),e.jsx("option",{value:"manual",children:"Use the pinned rubrics"})]})]}),r.mode==="auto"?e.jsxs(e.Fragment,{children:[e.jsxs("label",{children:["Selection model",e.jsxs("select",{value:r.modelId,onChange:i=>s({...n,graderSelection:{...r,modelId:i.target.value}}),children:[a?.generators.some(i=>i.id===r.modelId)?null:e.jsx("option",{value:r.modelId,children:r.modelId}),a?.generators.map(i=>e.jsx("option",{value:i.id,children:i.name},i.id))]})]}),e.jsx("div",{className:"agent-learning-columns",children:[["sampleSize","Sample examples",1,30],["maximumOutputTokens","Output token limit",256,4096],["maximumSpendUsd","Selection spending limit ($)",.01,1e5]].map(([i,x,o,d])=>e.jsxs("label",{children:[x,e.jsx("input",{type:"number",min:o,max:d,step:i==="maximumSpendUsd"?.01:1,value:r[i],onChange:b=>s({...n,graderSelection:{...r,[i]:Number(b.target.value)}})})]},i))})]}):null]}):null,e.jsxs("label",{children:["Answer improvement model",e.jsxs("select",{value:n.generator?.modelId??"",onChange:i=>s({...n,generator:i.target.value?{modelId:i.target.value,maximumOutputTokens:n.generator?.maximumOutputTokens??2048,maximumSpendUsd:n.generator?.maximumSpendUsd??.1}:null}),children:[e.jsx("option",{value:"",children:"Use recorded answers only"}),a?.generators.map(i=>e.jsx("option",{value:i.id,children:i.name},i.id))]})]}),n.generator?e.jsxs("div",{className:"agent-learning-columns",children:[e.jsxs("label",{children:["Per improved answer limit ($)",e.jsx("input",{type:"number",min:.01,step:.01,value:n.generator.maximumSpendUsd,onChange:i=>s({...n,generator:{...n.generator,maximumSpendUsd:Number(i.target.value)}})})]}),e.jsxs("label",{children:["Output token limit",e.jsx("input",{type:"number",min:256,max:16384,value:n.generator.maximumOutputTokens,onChange:i=>s({...n,generator:{...n.generator,maximumOutputTokens:Number(i.target.value)}})})]})]}):null,n.mode==="activate"?e.jsxs("fieldset",{children:[e.jsx("legend",{children:"Serving authorization"}),e.jsxs("label",{children:["Serving target",e.jsxs("select",{value:n.serving?.targetId??"",onChange:i=>s({...n,serving:{targetId:i.target.value,canarySeconds:n.serving?.canarySeconds??120,rollbackOnRuntimeFailure:!0}}),children:[e.jsx("option",{value:"",children:"Ponder in this Project"}),a?.servingTargets.filter(i=>i.projectId===n.projectId&&i.enabled).map(i=>e.jsx("option",{value:i.id,children:i.hostedPonder?"Hosted Ponder":`${i.role} / ${i.roleTargetId}`},i.id))]})]}),e.jsxs("label",{children:["Runtime canary (seconds)",e.jsx("input",{type:"number",min:30,max:600,value:n.serving?.canarySeconds??120,onChange:i=>s({...n,serving:{targetId:n.serving?.targetId??"",canarySeconds:Number(i.target.value),rollbackOnRuntimeFailure:!0}})})]}),e.jsx("p",{children:"Saving authorizes the selected target. Failed runtime checks restore its prior model. Training runs only within the saved policy's schedule and limits."})]}):null]})}const me=(n,a)=>n===void 0||a===void 0?"":`${String(n).padStart(2,"0")}:${String(a).padStart(2,"0")}`;function an({draft:n,onChange:a}){const t=(s,l)=>a({...n,limits:{...n.limits,[s]:l}});return e.jsxs(e.Fragment,{children:[e.jsxs("fieldset",{children:[e.jsx("legend",{children:"Run window"}),e.jsxs("div",{className:"agent-learning-columns",children:[e.jsxs("label",{children:["From",e.jsx("input",{type:"time",required:!0,value:me(n.schedule.hour,n.schedule.minute),onChange:s=>{const[l,h]=s.target.value.split(":").map(Number);a({...n,schedule:{...n.schedule,hour:l,minute:h}})}})]}),e.jsxs("label",{children:["Until",e.jsx("input",{type:"time",value:me(n.schedule.endHour,n.schedule.endMinute),onChange:s=>{const[l,h]=s.target.value.split(":").map(Number),{endHour:r,endMinute:i,...x}=n.schedule;a({...n,schedule:s.target.value?{...x,endHour:l,endMinute:h}:x})}})]})]}),e.jsxs("label",{children:["Timezone",e.jsx("input",{required:!0,value:n.schedule.timezone,onChange:s=>a({...n,schedule:{...n.schedule,timezone:s.target.value}})})]}),e.jsx("p",{children:"Queued learning starts within this window. A run already started may finish afterward."})]}),e.jsxs("fieldset",{children:[e.jsx("legend",{children:"Maximum spending"}),e.jsx("p",{children:"These are limits, not prices. Evaluation, answer improvements and training count toward them."}),e.jsx("div",{className:"agent-learning-columns",children:[["perCycleUsd","Per run ($)"],["dailyUsd","Per day ($)"],["monthlyUsd","Per month ($)"]].map(([s,l])=>e.jsxs("label",{children:[l,e.jsx("input",{type:"number",required:!0,min:.01,max:1e5,step:.01,value:n.limits[s],onChange:h=>t(s,Number(h.target.value))})]},s))})]}),e.jsxs("details",{children:[e.jsx("summary",{children:"Advanced limits"}),e.jsxs("div",{className:"agent-learning-columns",children:[[["gradeUsd","Per evaluation ceiling ($)",0,1e3,.01],["maximumTasks","Maximum tasks",1,200,1],["minimumExamples","Minimum training examples",1,200,1],["maximumAttempts","Maximum correction attempts",1,5,1],["lookbackDays","Uploaded history window (days)",1,30,1]].map(([s,l,h,r,i])=>e.jsxs("label",{children:[l,e.jsx("input",{type:"number",required:!0,min:h,max:r,step:i,value:n.limits[s],onChange:x=>t(s,Number(x.target.value))})]},s)),e.jsxs("label",{children:["Maximum GPU session (hours)",e.jsx("input",{type:"number",required:!0,min:.01,max:3,step:.01,value:n.limits.maxGpuSeconds/3600,onChange:s=>t("maxGpuSeconds",Math.round(Number(s.target.value)*3600))})]}),e.jsxs("label",{children:["Pause after failed cycles",e.jsx("input",{type:"number",required:!0,min:1,max:20,value:n.failurePolicy?.pauseAfterConsecutiveFailures??3,onChange:s=>a({...n,failurePolicy:{pauseAfterConsecutiveFailures:Number(s.target.value)}})})]})]}),e.jsxs("label",{className:"agent-learning-check",children:[e.jsx("input",{type:"checkbox",checked:n.exceptions==="eligible_remainder",onChange:s=>a({...n,exceptions:s.target.checked?"eligible_remainder":"block"})}),"Use the independently verified remainder when exceptions occur"]})]}),e.jsxs("details",{children:[e.jsx("summary",{children:"Training data balance"}),e.jsx("div",{className:"agent-learning-columns",children:[["maximumSourceShare","Maximum from one agent",100],["maximumFailureShare","Maximum from one error type",100],["maximumLengthShare","Maximum from one conversation length",100],["replayFraction","Previously learned examples",50],["auditFraction","Examples checked for quality",100]].map(([s,l,h])=>e.jsxs("label",{children:[l," (%)",e.jsx("input",{type:"number",min:s.startsWith("maximum")?1:0,max:h,value:Math.round((n.selection?.[s]??0)*100),onChange:r=>a({...n,selection:{maximumSourceShare:1,maximumFailureShare:1,maximumLengthShare:1,replayFraction:.2,auditFraction:.1,...n.selection,[s]:Number(r.target.value)/100}})})]},s))})]}),n.mode!=="evaluate"?e.jsxs("details",{children:[e.jsx("summary",{children:"Checks before using the trained model"}),e.jsx("div",{className:"agent-learning-columns",children:[["windowCasesPerCheck","New examples per quality check",2,1e4],["minimumCasesPerCheck","Minimum paired examples",2,1e4],["minimumImprovement","Required improvement",1e-4,1]].map(([s,l,h,r])=>e.jsxs("label",{children:[l,e.jsx("input",{type:"number",min:h,max:r,step:s==="minimumImprovement"?.01:1,value:n.acceptance?.[s]??h,onChange:i=>a({...n,acceptance:{minimumCasesPerCheck:20,windowCasesPerCheck:20,minimumImprovement:.05,...n.acceptance,[s]:Number(i.target.value)}})})]},s))}),e.jsx("p",{children:"Current and trained models use the same unseen examples. Insufficient evidence keeps the current model active."})]}):null]})}function rn({connection:n,teamId:a,projectId:t,projectName:s,initialPolicy:l,bindings:h,query:r,onClose:i}){const[x,o]=g.useState(l),[d,b]=g.useState(()=>ie(t,l,l?[]:h)),[m,_]=g.useState(!!r.data),[R,k]=g.useState(!1),[I,C]=g.useState(!1),[A,j]=g.useState(null),[w,L]=g.useState(l?.status==="enabled"||!l),[y,u]=g.useState("sources"),[P,U]=g.useState(!1),[H,$]=g.useState(null),c=g.useRef(m);c.current=m;const p=r.data?.policies.filter(f=>f.configuration.projectId===t)??[];g.useEffect(()=>{if(!r.data||c.current)return;const f=r.data.policies.find(M=>M.configuration.projectId===t&&M.status==="enabled")??r.data.policies.find(M=>M.configuration.projectId===t);o(f),b(ie(t,f,f?[]:h)),L(f?.status==="enabled"||!f),_(!0)},[r.data,t,h]);const S=()=>{I||(R?U(!0):i())},N=ce(S);function B(f){const M=p.find(K=>K.id===f);M&&(o(M),b(ie(t,M)),L(M.status==="enabled"),k(!1),$(null),U(!1),j(null))}function T(f){b(f),k(!0)}async function W(){if(!(!r.data||!m||I||r.isError)){C(!0),j(null);try{await nn(n,a,d,r.data,x,w),await r.refresh(),k(!1),i()}catch(f){j(f instanceof Error?f.message:"Unable to save continual learning.")}finally{C(!1)}}}const G={draft:d,options:r.data,loading:r.isPending,onChange:T};return e.jsx("div",{className:"git-dialog-backdrop provider-dialog-backdrop",onMouseDown:S,children:e.jsxs("section",{ref:N,className:"git-dialog provider-details-dialog agent-learning-dialog",role:"dialog","aria-modal":"true","aria-label":"Continual learning",onMouseDown:f=>f.stopPropagation(),children:[e.jsx("button",{type:"button",className:"git-dialog-close","aria-label":"Close continual learning",disabled:I,onClick:S,children:e.jsx(ee,{size:16})}),e.jsx("div",{className:"provider-dialog-header",children:e.jsxs("div",{children:[e.jsx("h2",{children:"Continual learning"}),e.jsx("span",{children:s})]})}),P?e.jsxs("div",{className:"agent-learning-discard",role:"alert",children:[e.jsx("p",{children:"Discard unsaved policy changes?"}),e.jsxs("div",{className:"settings-button-row",children:[e.jsx("button",{type:"button",onClick:()=>{U(!1),$(null)},children:"Keep editing"}),e.jsx("button",{type:"button",onClick:()=>H?B(H):i(),children:"Discard changes"})]})]}):null,p.length>1?e.jsxs("label",{className:"agent-learning-policy-picker",children:["Learning policy",e.jsx("select",{disabled:I,value:x?.id??"",onChange:f=>{R?($(f.target.value),U(!0)):B(f.target.value)},children:p.map(f=>e.jsxs("option",{value:f.id,children:[f.configuration.name," (",f.status,")"]},f.id))})]}):null,e.jsx("div",{className:"surface-tabs provider-agent-tabs",role:"tablist","aria-label":"Continual learning settings",children:[["sources","Sources & rubrics"],["preparation","Preparation"],["schedule","Run window & budget"]].map(([f,M])=>e.jsx("button",{type:"button",id:`learning-tab-${f}`,role:"tab","aria-selected":y===f,"aria-controls":`learning-panel-${f}`,tabIndex:y===f?0:-1,onClick:()=>u(f),onKeyDown:K=>{const X=["sources","preparation","schedule"],v=X.indexOf(f);if(["ArrowLeft","ArrowRight","Home","End"].includes(K.key)){K.preventDefault();const E=X[K.key==="Home"?0:K.key==="End"?2:(v+(K.key==="ArrowRight"?1:2))%3];u(E),document.getElementById(`learning-tab-${E}`)?.focus()}},children:M},f))}),e.jsxs("form",{className:"agent-learning-form",onSubmit:f=>{f.preventDefault(),W()},children:[e.jsx("fieldset",{disabled:!m||I,children:e.jsxs("label",{children:["Policy name",e.jsx("input",{required:!0,maxLength:200,value:d.name,onChange:f=>T({...d,name:f.target.value})})]})}),e.jsx("div",{id:`learning-panel-${y}`,role:"tabpanel","aria-labelledby":`learning-tab-${y}`,children:e.jsx("fieldset",{disabled:!m||I,children:y==="sources"?e.jsx(sn,{...G}):y==="preparation"?e.jsx(tn,{...G}):e.jsx(an,{...G})})}),r.isPending?e.jsx("p",{role:"status",children:"Fetching available sources, rubrics and models…"}):null,r.isError?e.jsxs("p",{role:"alert",children:[r.error.message," ",e.jsx("button",{type:"button",onClick:()=>{r.refetch()},children:"Retry settings"})]}):null,A?e.jsx("p",{role:"alert",children:A}):null,e.jsxs("label",{className:"agent-learning-check",children:[e.jsx("input",{type:"checkbox",checked:w,disabled:!m||I,onChange:f=>{L(f.target.checked),k(!0)}}),"Enable this policy after saving"]}),e.jsx("p",{children:"Saving enables only the reviewed sources, schedule and limits. No training is dispatched by opening this dialog."}),e.jsxs("div",{className:"settings-button-row agent-learning-footer",children:[e.jsx("button",{type:"button",disabled:I,onClick:S,children:"Cancel"}),e.jsx("button",{type:"submit",className:"primary",disabled:!m||!r.data||r.isError||I||!d.sourceKeys.length,children:I?"Saving…":w?"Save and enable":"Save paused"})]})]})]})})}function ln({agent:n,inventory:a,connection:t,teamId:s,projectId:l,projectName:h,query:r,signedIn:i}){const[x,o]=g.useState(!1),[d,b]=g.useState(null),[m,_]=g.useState(!1),[R,k]=g.useState(null),[I,C]=g.useState(""),A=g.useMemo(()=>new Set(a?.collector.connections.filter(p=>p.source===n.id&&p.teamId===s&&p.projectId===l&&p.state!=="disconnected").map(p=>p.sourceInstanceId)??[]),[a,n.id,s,l]),j=r.data?.sources.filter(p=>p.projectId===l&&(n.id==="openpond_chat"?["native_chat","native_work"].includes(p.origin)&&p.sourceInstanceId===null:p.origin===n.id&&p.sourceInstanceId!==null&&A.has(p.sourceInstanceId)))??[],w=[...new Set(j.flatMap(p=>p.sourceInstanceId?[p.sourceInstanceId]:[]))],L=w.includes(I)?I:w[0],y=j.filter(p=>p.sourceInstanceId===null||p.sourceInstanceId===L).map(p=>({origin:p.origin,sourceInstanceId:p.sourceInstanceId,enabled:!0})),u=r.data?.policies.filter(p=>p.configuration.projectId===l)??[],P=u.filter(p=>p.status==="enabled"&&p.configuration.sources.some(S=>S.enabled&&y.some(N=>O(N)===O(S)))),U=P[0]??u.find(p=>p.status==="enabled")??u[0],H=!!(t&&s&&l&&i&&r.data?.projects.some(p=>p.id===l));async function $(p,S){if(!t||!s||!r.data)return;let N={...p.configuration,sources:p.configuration.sources.map(T=>y.some(W=>O(W)===O(T))?{...T,enabled:S}:T)};if(S)for(const T of y)N.sources.some(W=>O(W)===O(T))||N.sources.push(T);const B=r.data.servingTargets.find(T=>T.id===N.serving?.targetId);if(S&&N.mode==="activate"&&N.serving?.targetId&&(!B||!B.enabled||B.projectId!==l))throw new Error("Review the policy's serving target before adding a source.");if(S&&N.mode==="activate"&&(!N.serving?.targetId||B?.hostedPonder)){const T=await V(t,s,"serving-targets",{action:"ensure_hosted_ponder",projectId:l,bindingId:r.data.ponderBindingId});N={...N,serving:{targetId:T.id,canarySeconds:N.serving?.canarySeconds??120,rollbackOnRuntimeFailure:!0}}}return Se(t,s,p,N,N.sources.some(T=>T.enabled))}async function c(p){if(!m){_(!0),k(null);try{if(p){const S=u.find(N=>N.id===d);if(!S)throw new Error("Refresh the learning policy before joining.");await $(S,!0),b(null)}else for(const S of P)await $(S,!1);await r.refresh()}catch(S){k(S instanceof Error?S.message:"Unable to update this learning source."),await r.refresh()}finally{_(!1)}}}return e.jsxs("div",{className:"agent-learning-control",children:[w.length>1?e.jsxs("label",{children:["Learning connection",e.jsx("select",{"aria-label":`${n.name} learning connection`,value:L,disabled:m,onChange:p=>C(p.target.value),children:w.map(p=>e.jsx("option",{value:p,children:j.find(S=>S.sourceInstanceId===p)?.name??"Local connection"},p))})]}):null,e.jsxs("div",{className:"agent-learning-control-row",children:[e.jsxs("label",{className:"provider-toggle",children:[e.jsx("input",{type:"checkbox","aria-label":`${n.name} continual learning`,checked:P.length>0,disabled:!H||!y.length||r.isPending||r.isError||m,onChange:p=>{if(p.target.checked){const S=u.find(N=>N.status==="enabled");S?b(S.id):o(!0)}else c(!1)}}),e.jsx("span",{"aria-hidden":"true"})]}),e.jsx("button",{type:"button",className:"agent-learning-settings",disabled:!t||!s||!l||!i||m,onClick:()=>o(!0),children:"Continual learning"}),e.jsx("small",{children:r.isError?"Needs attention":r.isPending?"Loading…":P.length?"On schedule":u.length?"Paused":"Off"})]}),l&&!y.length&&r.data?e.jsx("small",{children:"Sync this agent to the selected Project to use its local connection."}):null,R?e.jsx("small",{role:"alert",children:R}):null,x&&t&&s?e.jsx(rn,{connection:t,teamId:s,projectId:l,projectName:h,initialPolicy:U,bindings:y,query:r,onClose:()=>o(!1)},l):null,d?e.jsx(on,{policies:u.filter(p=>p.status==="enabled"),policyId:d,agentName:n.name,busy:m,error:R,onChoose:b,onClose:()=>{m||b(null)},onJoin:()=>{c(!0)}}):null]})}function on({policies:n,policyId:a,agentName:t,busy:s,error:l,onChoose:h,onClose:r,onJoin:i}){const x=ce(r),o=n.find(d=>d.id===a);return e.jsx("div",{className:"git-dialog-backdrop provider-dialog-backdrop",onMouseDown:r,children:e.jsxs("section",{ref:x,className:"git-dialog agent-learning-join",role:"dialog","aria-modal":"true","aria-label":"Add learning source",onMouseDown:d=>d.stopPropagation(),children:[e.jsx("button",{type:"button",className:"git-dialog-close",disabled:s,"aria-label":"Cancel",onClick:r,children:e.jsx(ee,{size:16})}),e.jsxs("h2",{children:["Add ",t," to ",o?.configuration.name??"continual learning","?"]}),e.jsx("p",{children:"This agent will contribute conversations to the existing model, schedule and spending limits. Collection settings stay unchanged."}),n.length>1?e.jsxs("label",{children:["Existing policy",e.jsx("select",{value:a,disabled:s,onChange:d=>h(d.target.value),children:n.map(d=>e.jsx("option",{value:d.id,children:d.configuration.name},d.id))})]}):null,l?e.jsx("p",{role:"alert",children:l}):null,e.jsxs("div",{className:"settings-button-row",children:[e.jsx("button",{type:"button",disabled:s,onClick:r,children:"Cancel"}),e.jsx("button",{type:"button",className:"primary",disabled:s||!o,onClick:i,children:s?"Adding…":"Add agent"})]})]})})}function cn({connection:n,payload:a,onPayload:t,onToast:s}){const{inventory:l,error:h,loading:r,refresh:i}=He(n),[x,o]=g.useState(null),[d,b]=g.useState(null),[m,_]=g.useState(0),R=`openpond-agent-cards:${JSON.stringify(a?.account.activeProfile??null)}`,[k,I]=g.useState(()=>{try{const v=JSON.parse(localStorage.getItem(R)??"null");return Array.isArray(v)?v.filter(E=>typeof E=="string"&&ne.some(z=>z.id===E)):["oh_my_pi"]}catch{return["oh_my_pi"]}});g.useEffect(()=>{try{localStorage.setItem(R,JSON.stringify(k))}catch{}},[R,k]);const[C,A]=g.useState(!1),j=g.useRef(null);g.useEffect(()=>{if(!C)return;const v=z=>{j.current?.contains(z.target)||A(!1)},E=z=>{z.key==="Escape"&&(A(!1),j.current?.querySelector("button")?.focus())};return document.addEventListener("pointerdown",v),document.addEventListener("keydown",E),()=>{document.removeEventListener("pointerdown",v),document.removeEventListener("keydown",E)}},[C]);const w=g.useRef({payload:a,onPayload:t});w.current={payload:a,onPayload:t};const L=g.useRef(!0);g.useEffect(()=>(L.current=!0,()=>{L.current=!1}),[]);const y=a?.account??null,u=a?.preferences.defaultTeamId??y?.accounts.find(v=>v.isActive)?.apiKeyAccess?.teamId??null,P=g.useCallback(v=>{o(v),v&&s?.(v,"error")},[s]),U=g.useCallback(v=>{const E=w.current;L.current&&E.payload&&E.onPayload({...E.payload,providers:v})},[]),H=g.useCallback((v,E)=>{const z=w.current;if(!L.current||!z.payload)return;const te=z.payload.providers,ue={...z.payload,providers:{...te,statuses:{...te.statuses,[v]:E.statuses[v]},modelCaches:{...te.modelCaches,[v]:E.modelCaches[v]}}};w.current={...z,payload:ue},z.onPayload(ue)},[]);qe(n,a?.providers,H,m);const $=g.useCallback(v=>{const E=w.current;E.payload&&E.onPayload({...E.payload,preferences:v.preferences})},[]),c=De({connection:n,onError:P,onPayload:t,onPreferences:$,onProviders:U,preferences:Ae(a?.preferences),providers:a?.providers}),p=Ze(n,y,u),{projects:S,projectId:N,loading:B,error:T}=p,W=en(n,u,JSON.stringify([y?.activeProfile??null,y?.profile?.id??null]),y?.state==="signed_in"),G=y?.baseUrl??y?.activeProfile?.baseUrl,f=G&&u?`${G.replace(/\/$/u,"")}/console/connections?${new URLSearchParams({teamId:u,...N?{project:N}:{}})}`:null,M=d?.provider,K=M?a?.providers.statuses[M]:null,X=d?e.jsx(Ye,{agent:d,inventory:l,connection:n,account:y,teamId:u,projects:S,projectId:N,onRefresh:i,learningUrl:f},d.id):null;return e.jsxs("section",{className:"connected-agents-view","aria-label":"Connected agents",children:[e.jsxs("div",{className:"agent-connections-heading",children:[e.jsxs("div",{children:[e.jsx("h2",{children:"Connected agents"}),e.jsx("p",{children:"Use your installed agents and sync conversations with OpenPond."})]}),e.jsxs("div",{className:"agent-connections-actions",children:[e.jsx("button",{type:"button",disabled:r||!n,"aria-label":"Refresh agent connections",onClick:()=>{i(),p.refresh(),_(v=>v+1)},children:e.jsx(Ee,{size:15})}),e.jsxs("div",{className:"agent-more",ref:j,children:[e.jsx("button",{type:"button","aria-expanded":C,onClick:()=>A(v=>!v),children:"More agents"}),C?e.jsxs("div",{className:"agent-more-menu",children:[ne.filter(v=>k.includes(v.id)).map(v=>e.jsxs("button",{type:"button",onClick:()=>{I(E=>E.filter(z=>z!==v.id)),A(!1)},children:[e.jsx(Re,{size:14}),e.jsx("span",{children:v.name})]},v.id)),k.length===0?e.jsx("span",{children:"All agents shown"}):null]}):null]})]})]}),e.jsxs("label",{className:"agent-project-scope",children:["Project",e.jsxs("select",{"aria-label":"Connections project",value:N,disabled:!S.length,onChange:v=>p.select(v.target.value),children:[e.jsx("option",{value:"",children:B&&!S.length?"Fetching projects…":"Select project"}),S.map(v=>e.jsx("option",{value:v.id,children:v.content.name},v.id))]})]}),T?e.jsx("p",{role:"alert",children:T}):null,h?e.jsx("p",{role:"alert",children:h}):null,x?e.jsx("p",{role:"alert",children:x}):null,e.jsx("div",{className:"agent-connections-grid",children:ne.filter(v=>!k.includes(v.id)).map(v=>e.jsx(Je,{agent:v,account:y,native:v.provider?a?.providers.statuses[v.provider]:null,inventory:l,projects:S,teamId:u,learningControl:e.jsx(ln,{agent:v,inventory:l,connection:n,teamId:u,projectId:N,projectName:S.find(E=>E.id===N)?.content.name??"Selected Project",query:W,signedIn:y?.state==="signed_in"}),connected:!!n,onHide:()=>I(E=>[...E,v.id]),onManage:()=>b(v)},`${JSON.stringify([y?.activeProfile,y?.profile?.id])}:${u}:${N}:${v.id}`))}),l?e.jsxs("div",{className:"agent-importer-footer",children:[e.jsx("span",{children:l.collector.running?"Import in progress":"No import running"}),e.jsx("button",{type:"button",onClick:()=>oe({kind:"settings",section:"conversation-imports"}),children:"Conversation import settings"})]}):null,d&&M&&K&&a?e.jsx(ze,{checkNativeProvider:c.checkNativeProvider,connection:n,account:y,codex:a.codex,providerId:M,providerBusy:c.providerBusy,settings:a.providers,status:K,onClose:()=>b(null),onDeleteCredential:c.deleteProviderCredential,onRefreshModels:c.refreshProviderModels,onSaveConfig:c.saveProviderConfig,onSaveCredential:c.saveProviderCredential,onStartOpenAiSubscriptionAuth:c.startOpenAiSubscriptionAuth,onValidate:c.validateProvider,conversationPanel:X}):d?e.jsx(dn,{agent:d,onClose:()=>b(null),children:X}):null]})}function dn({agent:n,onClose:a,children:t}){const s=ce(a);return e.jsx("div",{className:"git-dialog-backdrop provider-dialog-backdrop",onMouseDown:a,children:e.jsxs("section",{ref:s,className:"git-dialog provider-details-dialog agent-setup-dialog",role:"dialog","aria-modal":"true","aria-label":`${n.name} connection`,onMouseDown:l=>l.stopPropagation(),children:[e.jsx("button",{type:"button",className:"git-dialog-close","aria-label":"Close",onClick:a,children:e.jsx(ee,{size:16})}),e.jsx("div",{className:"provider-dialog-header",children:e.jsxs("div",{children:[e.jsx("h2",{children:n.name}),e.jsx("span",{children:"Conversation syncing"})]})}),t]})})}const un=["For agents","Featured","Productivity","Developer tools"],pn=new Set(["slack","google","github","mcp"]);function Tn({account:n,connection:a,defaultTeamId:t,onToast:s,payload:l,onPayload:h}){const[r,i]=g.useState("agents"),x=g.useId(),[o,d]=g.useState(null),[b,m]=g.useState(""),[_,R]=g.useState("For agents"),[k,I]=g.useState(()=>ae()),[C,A]=g.useState(null),j=n?.baseUrl??n?.activeProfile?.baseUrl??null,w=hn(t,C),L=g.useMemo(()=>k.filter(u=>xn(u,_)).filter(u=>vn(u,b)),[_,b,k]);g.useEffect(()=>{let u=!0;return!a||r!=="apps"?(I(ae()),A(null),()=>{u=!1}):(_e.connectedAppStatus(a,{status:"all"}).then(P=>{u&&(I(P.apps),A(P.teamId?.trim()||null))}).catch(P=>{u&&(console.warn("Unable to load connected app status.",P),I(ae()),A(null))}),()=>{u=!1})},[a,r]);function y(u){const P=$e({appId:u.id,baseUrl:j,teamId:w});bn(P).catch(U=>{s?.(U instanceof Error?U.message:String(U),"error")})}return e.jsxs("div",{className:"apps-workspace-view",children:[e.jsx("div",{className:"apps-page-tabs",role:"tablist","aria-label":"Apps pages",onKeyDown:u=>{if(!["ArrowLeft","ArrowRight","Home","End"].includes(u.key))return;u.preventDefault();const P=u.key==="Home"?"agents":u.key==="End"||r==="agents"?"apps":"agents";i(P),u.currentTarget.querySelector(`#${CSS.escape(`${x}-${P}`)}`)?.focus()},children:[{value:"agents",label:"Connections"},{value:"apps",label:"Apps"}].map(u=>e.jsx("button",{type:"button",role:"tab",id:`${x}-${u.value}`,"aria-controls":`${x}-${u.value}-panel`,tabIndex:r===u.value?0:-1,"aria-selected":r===u.value,onClick:()=>i(u.value),children:u.label},u.value))}),e.jsx("div",{role:"tabpanel",id:`${x}-${r}-panel`,"aria-labelledby":`${x}-${r}`,children:r==="agents"?e.jsx(cn,{connection:a,payload:l,onPayload:h,onToast:s},JSON.stringify([n?.activeProfile,t])):e.jsxs("section",{className:"connected-apps-view","aria-label":"Apps",children:[e.jsxs("div",{className:"connected-apps-header",children:[e.jsxs("div",{children:[e.jsx("h1",{children:"Apps"}),e.jsx("p",{children:"Connect apps that agents can use for chat, knowledge, files, and workflow actions."})]}),e.jsxs("label",{className:"connected-apps-search",children:[e.jsx(Le,{size:15}),e.jsx("input",{"aria-label":"Search apps",onChange:u=>m(u.target.value),placeholder:"Search apps",type:"search",value:b})]})]}),e.jsxs("section",{className:"connected-apps-hero","aria-label":"App context",children:[e.jsxs("div",{className:"connected-apps-hero-copy",children:[e.jsx("span",{className:"connected-apps-hero-icon",children:e.jsx(de,{appId:"github"})}),e.jsx("h2",{children:"Work with your apps"}),e.jsx("p",{children:"Bring repositories, documents, chat, calendars, and custom MCP tools into OpenPond."})]}),e.jsxs("div",{className:"connected-apps-context-card","aria-hidden":"true",children:[e.jsx("strong",{children:"Agent context"}),e.jsxs("div",{children:[e.jsx("span",{className:"files",children:"Files"}),e.jsx("span",{className:"chat",children:"Chat"}),e.jsx("span",{className:"oauth",children:"OAuth"}),e.jsx("span",{className:"mcp",children:"MCP"})]})]})]}),e.jsx("div",{className:"connected-apps-filters",role:"tablist","aria-label":"App categories",children:un.map(u=>e.jsx("button",{"aria-selected":_===u,className:_===u?"active":"",onClick:()=>R(u),role:"tab",type:"button",children:u},u))}),e.jsxs("div",{className:"connected-apps-list",children:[L.map(u=>e.jsx(mn,{app:u,onSelect:()=>d(u)},u.id)),L.length===0?e.jsx("div",{className:"connected-apps-empty",children:"No apps match the current search."}):null]}),o?e.jsx(gn,{app:o,onClose:()=>d(null),onInstall:()=>y(o)}):null]})})]})}function hn(n,a){const t=n?.trim();return t||a?.trim()||null}function mn({app:n,onSelect:a}){return e.jsxs("button",{className:"connected-app-row",onClick:a,type:"button",children:[e.jsxs("span",{className:"connected-app-row-main",children:[e.jsx(de,{appId:n.id}),e.jsxs("span",{className:"connected-app-copy",children:[e.jsxs("span",{className:"connected-app-title",children:[e.jsx("strong",{children:n.label}),e.jsxs("span",{children:[n.shortLabel!==n.label?n.shortLabel:n.category," / ",n.setupSurfaceLabel]})]}),e.jsx("span",{children:n.description}),e.jsxs("span",{className:"connected-app-capability-row",children:[n.capabilityLabels.slice(0,2).map(t=>e.jsx("span",{children:t},t)),n.capabilityLabels.length>2?e.jsxs("span",{children:["+",n.capabilityLabels.length-2]}):null]})]})]}),e.jsx("span",{className:`connected-app-status-pill ${n.status}`,children:n.statusLabel}),e.jsx(Te,{size:16})]})}function gn({app:n,onClose:a,onInstall:t}){const s=n.connections.filter(l=>l.status==="active");return e.jsx("div",{className:"connected-app-dialog-backdrop",role:"presentation",onMouseDown:l=>{l.target===l.currentTarget&&a()},children:e.jsxs("section",{className:"connected-app-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"connected-app-dialog-title",children:[e.jsx("button",{className:"connected-app-dialog-close",type:"button","aria-label":"Close app details",onClick:a,children:e.jsx(ee,{size:17})}),e.jsxs("div",{className:"connected-app-dialog-identity",children:[e.jsx("span",{className:"openpond-mark",children:e.jsx("img",{alt:"",src:Ue})}),e.jsxs("span",{className:"connection-dots","aria-hidden":"true",children:[e.jsx("span",{}),e.jsx("span",{}),e.jsx("span",{})]}),e.jsx(de,{appId:n.id})]}),e.jsxs("h2",{id:"connected-app-dialog-title",children:["Connect ",n.label]}),e.jsxs("div",{className:"connected-app-approval",children:[e.jsx(Oe,{size:16}),e.jsx("span",{children:n.statusLabel})]}),e.jsxs("div",{className:"connected-app-dialog-body",children:[e.jsxs("section",{children:[e.jsx("h3",{children:n.setupSurfaceLabel}),e.jsx("p",{children:"The web flow shows the provider account, workspace, and requested access before anything is connected."})]}),e.jsxs("section",{children:[e.jsx("h3",{children:"Connected account"}),e.jsx("p",{children:fn(s)})]}),e.jsxs("section",{children:[e.jsx("h3",{children:"Available capabilities"}),e.jsx("div",{className:"connected-app-dialog-capabilities",children:n.capabilities.map(l=>e.jsx("span",{children:l.label},l.id))})]}),e.jsxs("section",{children:[e.jsx("h3",{children:"Sandbox lease policy"}),e.jsx("p",{children:n.leasePolicy.leaseable?`Leaseable for ${n.leasePolicy.defaultTtlSeconds??0} seconds with scoped proxy access.`:"Managed as setup or tool discovery; no OAuth lease is required."})]})]}),e.jsxs("button",{className:"connected-app-dialog-primary",type:"button",onClick:t,children:[e.jsx("span",{children:n.installLabel}),e.jsx(Fe,{size:15})]})]})})}function de({appId:n}){return e.jsx("span",{className:`connected-app-icon app-${n}`,children:e.jsx("img",{alt:"",src:jn(n)})})}function xn(n,a){return a==="For agents"?!0:a==="Featured"?pn.has(n.id):a==="Productivity"?n.category==="Productivity"||n.category==="Chat":n.category==="Developer tools"||n.id==="mcp"}function vn(n,a){const t=a.trim().toLowerCase();return t?[n.id,n.label,n.shortLabel,n.category,n.description,n.providerFamily,n.setupSurface].some(s=>s.toLowerCase().includes(t)):!0}function jn(n){return Me(n)}async function bn(n){const a=window.openpond?.browser;if(a){const t=await a.openExternal({conversationId:"connected-apps",url:n});if(!t.ok)throw new Error(t.error??"Unable to open app setup.");return}window.open(n,"_blank","noopener,noreferrer")}function fn(n){return n.length===0?"No active OAuth connection for this setup surface.":n.map(a=>{const t=a.accountLabel??"Connected account";return a.workspaceLabel?`${t} / ${a.workspaceLabel}`:t}).join(", ")}export{Tn as AppsView,mn as ConnectedAppRow,hn as connectedAppSetupTeamId};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as c,j as a}from"./index-
|
|
1
|
+
import{r as c,j as a}from"./index-Di1MU6Xr.js";import{fk as v,aK as f,X as k,v as j,x as B,aB as C,aP as g,c4 as y}from"./App-nzE7JU_O.js";import{a as N}from"./MarkdownText-Drjq6-JM.js";import{S as T}from"./square-DXtoCBNw.js";const x=[];function P(r){const e=window.openpond?.browser,[b,l]=c.useState(()=>({conversationId:r,activeTabId:null,tabs:x}));c.useEffect(()=>{if(l({conversationId:r,activeTabId:null,tabs:x}),!e)return;let s=!1;e.getState({conversationId:r}).then(o=>{s||l(o)});const i=e.onState(o=>{o.conversationId===r&&l(o)});return()=>{s=!0,i()}},[e,r]);const u=c.useMemo(()=>b.tabs.find(s=>s.id===b.activeTabId)??null,[b.activeTabId,b.tabs]),t=c.useCallback(async(s,i={})=>{if(!e)return!1;const o=v(s,{explicitFile:i.explicitFile});return o?(i.newTab?await e.newTab({conversationId:r,url:o,explicitFile:i.explicitFile}):await e.open({conversationId:r,url:o,explicitFile:i.explicitFile}),!0):!1},[e,r]),n=u?{conversationId:r,tabId:u.id}:null;return{activeTab:u,available:!!e,bridge:e,state:b,back:()=>e&&n?e.back(n):Promise.resolve({ok:!1}),clearData:()=>e?e.clearData({conversationId:r}):Promise.resolve({ok:!1}),closeTab:s=>e?e.closeTab({conversationId:r,tabId:s}):Promise.resolve({ok:!1}),forward:()=>e&&n?e.forward(n):Promise.resolve({ok:!1}),newTab:s=>e?e.newTab({conversationId:r,url:s}):Promise.resolve({ok:!1}),open:t,openExternal:()=>e&&n?e.openExternal(n):Promise.resolve({ok:!1}),reload:()=>e&&n?e.reload(n):Promise.resolve({ok:!1}),snapshot:(s={})=>e?e.snapshot({conversationId:r,...s}):Promise.resolve({ok:!1,output:"Desktop browser bridge unavailable."}),moveCursor:s=>e?e.moveCursor({conversationId:r,...s}):Promise.resolve({ok:!1,output:"Desktop browser bridge unavailable."}),click:s=>e?e.click({conversationId:r,...s}):Promise.resolve({ok:!1,output:"Desktop browser bridge unavailable."}),typeText:s=>e?e.typeText({conversationId:r,...s}):Promise.resolve({ok:!1,output:"Desktop browser bridge unavailable."}),key:s=>e?e.key({conversationId:r,...s}):Promise.resolve({ok:!1,output:"Desktop browser bridge unavailable."}),scroll:s=>e?e.scroll({conversationId:r,...s}):Promise.resolve({ok:!1,output:"Desktop browser bridge unavailable."}),selectTab:s=>e?e.selectTab({conversationId:r,tabId:s}):Promise.resolve({ok:!1}),setBounds:s=>e?e.setBounds({conversationId:r,bounds:s}):Promise.resolve({ok:!1}),stop:()=>e&&n?e.stop(n):Promise.resolve({ok:!1})}}function E({activeTabId:r,tabs:e,onCloseTab:b,onNewTab:l,onSelectTab:u}){return a.jsxs("div",{className:"browser-tabs",role:"tablist","aria-label":"Browser tabs",children:[e.map(t=>a.jsxs("div",{className:`browser-tab ${t.id===r?"active":""}`,children:[a.jsx("span",{className:"browser-tab-favicon","aria-hidden":"true",children:t.faviconUrl?a.jsx("img",{alt:"",referrerPolicy:"no-referrer",src:t.faviconUrl}):a.jsx(f,{size:13})}),a.jsx("button",{type:"button",className:"browser-tab-main",role:"tab","aria-selected":t.id===r,title:t.url,onClick:()=>u(t.id),children:R(t)}),a.jsx("button",{type:"button",className:"browser-tab-close",title:"Close tab","aria-label":"Close tab",onClick:()=>b(t.id),children:a.jsx(k,{size:12})})]},t.id)),a.jsx("button",{type:"button",className:"browser-tab-add",title:"New tab","aria-label":"New tab",onClick:l,children:a.jsx(j,{size:14})})]})}function R(r){if(r.title?.trim())return r.title.trim();try{return new URL(r.url).host||r.url}catch{return r.url||"New tab"}}function z({activeTab:r,available:e,onBack:b,onClearData:l,onForward:u,onNavigate:t,onOpenExternal:n,onReload:s,onStop:i}){const[o,d]=c.useState(""),[p,m]=c.useState(!1);c.useEffect(()=>{d(r?.url??"")},[r?.url]);function h(w){w.preventDefault(),t(o)}return a.jsxs("div",{className:"browser-toolbar",children:[a.jsxs("div",{className:"browser-nav-actions",children:[a.jsx("button",{type:"button",title:"Back","aria-label":"Back",disabled:!r?.canGoBack,onClick:b,children:a.jsx(B,{size:15})}),a.jsx("button",{type:"button",title:"Forward","aria-label":"Forward",disabled:!r?.canGoForward,onClick:u,children:a.jsx(N,{size:15})}),a.jsx("button",{type:"button",title:r?.loading?"Stop":"Reload","aria-label":r?.loading?"Stop":"Reload",disabled:!r,onClick:r?.loading?i:s,children:r?.loading?a.jsx(T,{size:13}):a.jsx(C,{size:14})})]}),a.jsx("form",{className:"browser-address-form",onSubmit:h,children:a.jsx("input",{"aria-label":"Browser address",disabled:!e,placeholder:e?"Search or enter address":"Desktop browser unavailable",spellCheck:!1,value:o,onChange:w=>d(w.target.value)})}),a.jsxs("div",{className:"browser-panel-actions",children:[a.jsx("button",{type:"button",title:"Open external","aria-label":"Open external",disabled:!r,onClick:n,children:a.jsx(g,{size:14})}),a.jsxs("div",{className:"browser-menu-anchor",children:[a.jsx("button",{type:"button",title:"Browser actions","aria-label":"Browser actions",onClick:()=>m(w=>!w),children:a.jsx(y,{size:15})}),p&&a.jsx("div",{className:"browser-options-menu",role:"menu",children:a.jsx("button",{type:"button",role:"menuitem",onClick:()=>{m(!1),l()},children:"Clear Browser Data..."})})]})]})]})}function D({active:r,onBounds:e}){const b=c.useRef(null),l=c.useRef(null),u=c.useRef(null),t=c.useCallback(i=>{const o=i?`${i.x}:${i.y}:${i.width}:${i.height}`:"null";l.current!==o&&(l.current=o,e(i))},[e]),n=c.useCallback(()=>{const i=b.current;if(!r||!i){t(null);return}const o=i.getBoundingClientRect(),d=Math.max(0,Math.round(o.width)),p=Math.max(0,Math.round(o.height));if(d===0||p===0){t(null);return}t({x:Math.round(o.left),y:Math.round(o.top),width:d,height:p})},[r,t]),s=c.useCallback(()=>{u.current===null&&(u.current=window.requestAnimationFrame(()=>{u.current=null,n()}))},[n]);return c.useLayoutEffect(()=>{l.current=null,n();const i=b.current;if(!r||!i)return t(null),()=>t(null);const o=new ResizeObserver(s);return o.observe(i),window.addEventListener("resize",s),window.addEventListener("scroll",s,!0),()=>{u.current!==null&&(window.cancelAnimationFrame(u.current),u.current=null),o.disconnect(),window.removeEventListener("resize",s),window.removeEventListener("scroll",s,!0),t(null)}},[r,t,n,s]),a.jsx("div",{className:"browser-viewport",ref:b})}function U({conversationId:r,expanded:e,onResizeStart:b}){const l=P(r),u=c.useCallback(s=>{window.openpond?.browser?.setBounds({conversationId:r,bounds:s})},[r]),t=c.useCallback(s=>{l.open(s,{explicitFile:!0})},[l]),n=c.useCallback(()=>{window.confirm("Clear browser data for this conversation? Tabs, cookies, cache, and local storage for this conversation will be removed.")&&l.clearData()},[l]);return a.jsxs("aside",{className:`workspace-diff-panel browser-sidebar-panel ${e?"expanded":""}`,"aria-label":"Browser",children:[!e&&a.jsx("div",{className:"workspace-diff-resize-handle",role:"separator","aria-orientation":"vertical","aria-label":"Resize browser panel",onPointerDown:b}),a.jsx(E,{activeTabId:l.state.activeTabId,tabs:l.state.tabs,onCloseTab:s=>{l.closeTab(s)},onNewTab:()=>{l.newTab()},onSelectTab:s=>{l.selectTab(s)}}),a.jsx(z,{activeTab:l.activeTab,available:l.available,onBack:()=>{l.back()},onClearData:n,onForward:()=>{l.forward()},onNavigate:t,onOpenExternal:()=>{l.openExternal()},onReload:()=>{l.reload()},onStop:()=>{l.stop()}}),a.jsxs("div",{className:"browser-content",children:[l.available?l.state.tabs.length===0?a.jsxs("div",{className:"browser-empty-state",children:[a.jsx(f,{size:18}),a.jsx("span",{children:"Enter a URL to open a browser tab for this conversation."})]}):null:a.jsxs("div",{className:"browser-empty-state",children:[a.jsx(f,{size:18}),a.jsx("span",{children:"Desktop browser bridge unavailable."})]}),a.jsx(D,{active:l.available&&l.state.tabs.length>0,onBounds:u})]})]})}export{U as BrowserSidebar};
|