openpond 0.2.57 → 0.2.59
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app-server.d.ts +2 -1
- package/dist/app-server.js +1 -1
- package/dist/chunks/{actions-command-QU4H53OG.js → actions-command-JJ3CU7J6.js} +1 -1
- package/dist/chunks/{app-layer-NSTE5HIT.js → app-layer-KAUZAHGE.js} +1 -1
- package/dist/chunks/{app-server-connected-apps-JHGWLBXT.js → app-server-connected-apps-SXGZOUJJ.js} +1 -1
- package/dist/chunks/{app-server-evaluations-GJPFWIDA.js → app-server-evaluations-N4OMTPCI.js} +1 -1
- package/dist/chunks/{app-server-harness-services-IH4G6POY.js → app-server-harness-services-DDFUMNYC.js} +1 -1
- package/dist/chunks/app-server-runtime-SVB6L26M.js +2 -0
- package/dist/chunks/{apps-BKTOR4F7.js → apps-EZB56RHV.js} +1 -1
- package/dist/chunks/{chunk-SDXFLO7J.js → chunk-22VMH6JV.js} +1 -1
- package/dist/chunks/{chunk-FTEOCCPB.js → chunk-25JDHAZ5.js} +1 -1
- package/dist/chunks/{chunk-PPAPVGJP.js → chunk-2G4BEISF.js} +1 -1
- package/dist/chunks/{chunk-O72BSKSO.js → chunk-2L5XWJJ5.js} +1 -1
- package/dist/chunks/{chunk-QOTVNQDI.js → chunk-2RNQQNB7.js} +2 -2
- package/dist/chunks/{chunk-O6ULLQJ6.js → chunk-2WKUBGIF.js} +1 -1
- package/dist/chunks/{chunk-F4KOGISR.js → chunk-37MWETFU.js} +1 -1
- package/dist/chunks/{chunk-D74JEERO.js → chunk-3CDEBKSU.js} +1 -1
- package/dist/chunks/{chunk-L6K7ERG5.js → chunk-4EDIRCD3.js} +1 -1
- package/dist/chunks/{chunk-JYKRR7E5.js → chunk-4GPXTISD.js} +1 -1
- package/dist/chunks/chunk-57TRXBLT.js +3 -0
- package/dist/chunks/{chunk-LQQNBVEB.js → chunk-76M2MEHV.js} +1 -1
- package/dist/chunks/{chunk-HCYX6RHP.js → chunk-776WNDV2.js} +1 -1
- package/dist/chunks/{chunk-HDL5YSAA.js → chunk-7AVNZF36.js} +1 -1
- package/dist/chunks/{chunk-3K4VVB7S.js → chunk-7K7O3CKY.js} +1 -1
- package/dist/chunks/chunk-7UH4YDA7.js +3 -0
- package/dist/chunks/{chunk-KUERKVEU.js → chunk-ABZ2ZOLU.js} +1 -1
- package/dist/chunks/{chunk-ZRDGQDZL.js → chunk-ANFDRKUU.js} +1 -1
- package/dist/chunks/{chunk-GWCHDF2C.js → chunk-AQD7K4Z5.js} +1 -1
- package/dist/chunks/{chunk-4D7HWVWD.js → chunk-ARLOVWQ3.js} +1 -1
- package/dist/chunks/{chunk-2QUCCP6Z.js → chunk-ATAOHSFR.js} +1 -1
- package/dist/chunks/{chunk-3RCRSMWZ.js → chunk-BE6SS65L.js} +2 -2
- package/dist/chunks/{chunk-Z54O534A.js → chunk-BGJYITVI.js} +1 -1
- package/dist/chunks/{chunk-BLXEAZCQ.js → chunk-BL3YH2QU.js} +1 -1
- package/dist/chunks/{chunk-2D4Y3HNW.js → chunk-BO5JZYWG.js} +1 -1
- package/dist/chunks/{chunk-ZGTOK7ZK.js → chunk-BQS7Z4AP.js} +1 -1
- package/dist/chunks/{chunk-7HPDGZOR.js → chunk-BRORSFJX.js} +3 -3
- package/dist/chunks/{chunk-XXYGGNVM.js → chunk-BVQWVIGK.js} +1 -1
- package/dist/chunks/{chunk-SWUEFLOH.js → chunk-C37PUHA6.js} +1 -1
- package/dist/chunks/{chunk-3VUATFZD.js → chunk-CGWA54LE.js} +1 -1
- package/dist/chunks/{chunk-EQFGBL3O.js → chunk-CKMSBAI2.js} +1 -1
- package/dist/chunks/{chunk-YOBN7KTF.js → chunk-COHMDT7A.js} +7 -7
- package/dist/chunks/{chunk-JDEEWOD7.js → chunk-DPHAN6N3.js} +1 -1
- package/dist/chunks/{chunk-YOQRYNLP.js → chunk-DZUN5YWB.js} +1 -1
- package/dist/chunks/{chunk-6FDWRG55.js → chunk-E72UU4VX.js} +1 -1
- package/dist/chunks/{chunk-ABD5M2D2.js → chunk-EOBHQ3JT.js} +1 -1
- package/dist/chunks/chunk-EQOV34UH.js +2 -0
- package/dist/chunks/chunk-EUMXMT3S.js +2 -0
- package/dist/chunks/{chunk-773TH7FN.js → chunk-EWOSLZDX.js} +1 -1
- package/dist/chunks/{chunk-HIOKCIL7.js → chunk-FAYASU7Z.js} +1 -1
- package/dist/chunks/{chunk-EIRYMSEG.js → chunk-FKJHEZCW.js} +1 -1
- package/dist/chunks/{chunk-Q2QL6UWN.js → chunk-GL3NX3F3.js} +1 -1
- package/dist/chunks/{chunk-UKMA4R6X.js → chunk-GOPFFQZU.js} +1 -1
- package/dist/chunks/{chunk-RAXOSUSW.js → chunk-GUOLMLZN.js} +1 -1
- package/dist/chunks/{chunk-GZ7M5XBP.js → chunk-GVZLGS2U.js} +1 -1
- package/dist/chunks/chunk-GYJQKCEO.js +5 -0
- package/dist/chunks/{chunk-XDQMGUWL.js → chunk-H7ATCPPB.js} +1 -1
- package/dist/chunks/{chunk-J2TWKFML.js → chunk-IFDALGZE.js} +4 -4
- package/dist/chunks/{chunk-S5ESN275.js → chunk-IRV6GWGG.js} +3 -3
- package/dist/chunks/chunk-JFXINDOQ.js +3 -0
- package/dist/chunks/{chunk-PRGBLQVH.js → chunk-JMBQYBPI.js} +1 -1
- package/dist/chunks/{chunk-DBK66CJP.js → chunk-JQKSXCAJ.js} +1 -1
- package/dist/chunks/{chunk-DARVPBZ4.js → chunk-JUQMSHNR.js} +1 -1
- package/dist/chunks/{chunk-3Z47M3YY.js → chunk-K44RHALX.js} +1 -1
- package/dist/chunks/{chunk-4EPSHPZL.js → chunk-KO3HNMLJ.js} +1 -1
- package/dist/chunks/{chunk-4NESNOK5.js → chunk-LNCHFVHT.js} +1 -1
- package/dist/chunks/{chunk-7E6T7GP5.js → chunk-LPWBIGKW.js} +1 -1
- package/dist/chunks/{chunk-OIUTWU6K.js → chunk-MFMYWZK2.js} +1 -1
- package/dist/chunks/{chunk-A6USMRWK.js → chunk-MMQRHR3V.js} +1 -1
- package/dist/chunks/{chunk-I7AQMAQI.js → chunk-MNC4YUDI.js} +6 -6
- package/dist/chunks/{chunk-ZFSHBFG5.js → chunk-N6ENLEMY.js} +2 -2
- package/dist/chunks/{chunk-SH5CBAFC.js → chunk-NTB2O4RP.js} +1 -1
- package/dist/chunks/{chunk-OQKJGTTO.js → chunk-O3RF72BT.js} +1 -1
- package/dist/chunks/{chunk-QEFHOJFE.js → chunk-O4VIXU7A.js} +1 -1
- package/dist/chunks/{chunk-5MCNZCVQ.js → chunk-OLDK2LKJ.js} +1 -1
- package/dist/chunks/{chunk-WMKYHXVM.js → chunk-OX3XZKGK.js} +2 -2
- package/dist/chunks/{chunk-SDAUS5PY.js → chunk-P2RSBSCT.js} +1 -1
- package/dist/chunks/{chunk-EKM2D7JU.js → chunk-PFSMXKTI.js} +1 -1
- package/dist/chunks/{chunk-FUOEIDMA.js → chunk-PH6IORGZ.js} +1 -1
- package/dist/chunks/{chunk-PUZQU66L.js → chunk-PQJTYOR2.js} +1 -1
- package/dist/chunks/{chunk-OLLLZVHF.js → chunk-PY6K2JRH.js} +1 -1
- package/dist/chunks/{chunk-EYPCBBMS.js → chunk-RBZH6A6M.js} +1 -1
- package/dist/chunks/{chunk-6QSSIT62.js → chunk-RZUEVS64.js} +1 -1
- package/dist/chunks/{chunk-Q5LEXXJG.js → chunk-SF5HJ7PL.js} +4 -4
- package/dist/chunks/{chunk-NHQ36THU.js → chunk-TG7P7BSV.js} +1 -1
- package/dist/chunks/{chunk-G3RXYI2L.js → chunk-TIHXUKFD.js} +1 -1
- package/dist/chunks/{chunk-QOGJAQDO.js → chunk-TKLBP3MM.js} +1 -1
- package/dist/chunks/{chunk-M4JWQSV7.js → chunk-U2MAPON2.js} +1 -1
- package/dist/chunks/chunk-U5FKRYJO.js +86 -0
- package/dist/chunks/{chunk-QNG27G3T.js → chunk-V34H7Y2T.js} +2 -2
- package/dist/chunks/chunk-VGRMAGOK.js +9 -0
- package/dist/chunks/chunk-VRODAXFS.js +145 -0
- package/dist/chunks/{chunk-EIEZHFIW.js → chunk-WC42WOLG.js} +1 -1
- package/dist/chunks/{chunk-OS3LO5J3.js → chunk-WRI4XKSK.js} +1 -1
- package/dist/chunks/{chunk-XTFPDQMH.js → chunk-XJZSIXEO.js} +2 -2
- package/dist/chunks/{chunk-25MBPJVY.js → chunk-XMKCCLGB.js} +1 -1
- package/dist/chunks/{chunk-HZEIRHEB.js → chunk-XMWXH7TS.js} +1 -1
- package/dist/chunks/chunk-YCQSVHCD.js +9 -0
- package/dist/chunks/{chunk-B7RFL4N2.js → chunk-YHHF4Q7Y.js} +1 -1
- package/dist/chunks/{chunk-DMVD2RFZ.js → chunk-ZAN4DYLH.js} +1 -1
- package/dist/chunks/chunk-ZH3K7LKQ.js +2 -0
- package/dist/chunks/cli-5DFVQL5Y.js +2 -0
- package/dist/chunks/{configuration-command-6C5UO7GE.js → configuration-command-JS6U3RMC.js} +1 -1
- package/dist/chunks/connected-app-executor-UBMGMV76.js +2 -0
- package/dist/chunks/{connected-evidence-GH2ATNEX.js → connected-evidence-NLAIEVQ3.js} +1 -1
- package/dist/chunks/connection-NZSD3U5O.js +2 -0
- package/dist/chunks/{continual-6CQAMTTR.js → continual-WFPIDWPH.js} +1 -1
- package/dist/chunks/core-commands-U4IBRRY5.js +2 -0
- package/dist/chunks/{datasets-7BNMVJOY.js → datasets-UX47DTTB.js} +1 -1
- package/dist/chunks/{desktop-test-3CUHVLXV.js → desktop-test-UUU7PD4P.js} +1 -1
- package/dist/chunks/{dist-VYC5VMQB.js → dist-OGLX76LL.js} +1 -1
- package/dist/chunks/{dist-ZVJPJLXR.js → dist-W5MJYSPF.js} +1 -1
- package/dist/chunks/{evaluation-coordination-XEF5L7KZ.js → evaluation-coordination-3YQN5JQW.js} +1 -1
- package/dist/chunks/{experiment-improvements-KRX2DP27.js → experiment-improvements-ZRVD2AGY.js} +1 -1
- package/dist/chunks/{experiments-DFGQYA4O.js → experiments-JEB5A2N5.js} +1 -1
- package/dist/chunks/{extension-XKXXOP5N.js → extension-JCUA3RWV.js} +1 -1
- package/dist/chunks/{help-S7THC6IE.js → help-KA4OINP5.js} +1 -1
- package/dist/chunks/host-profile-evaluation-tools-2URLU5SG.js +2 -0
- package/dist/chunks/host-profile-external-dataset-B2AQNSDR.js +2 -0
- package/dist/chunks/{hosted-app-server-composition-HPL3CRXN.js → hosted-app-server-composition-VJQ3FM4I.js} +1 -1
- package/dist/chunks/{hosted-experiment-improvement-NFSVS5TU.js → hosted-experiment-improvement-42YWXB3P.js} +1 -1
- package/dist/chunks/hosted-harness-runtime-BM4WONJN.js +2 -0
- package/dist/chunks/{hosted-profile-candidate-2S5LFUWD.js → hosted-profile-candidate-HVVC43XQ.js} +1 -1
- package/dist/chunks/hosted-profile-compiler-RKDWHYK3.js +2 -0
- package/dist/chunks/{hosted-profile-evaluation-control-76BTRTYD.js → hosted-profile-evaluation-control-57V24UGU.js} +1 -1
- package/dist/chunks/{hosted-profile-evaluation-inspection-V6Z3A5XJ.js → hosted-profile-evaluation-inspection-BUWLCKCD.js} +1 -1
- package/dist/chunks/{hosted-profile-evaluation-preparation-IDJYREW3.js → hosted-profile-evaluation-preparation-3XLRR6UH.js} +1 -1
- package/dist/chunks/{hosted-tasksets-ANAE2PIW.js → hosted-tasksets-THKM5QY5.js} +1 -1
- package/dist/chunks/{human-review-WR777ODH.js → human-review-CSYAW4PC.js} +1 -1
- package/dist/chunks/import-CBDJ4DME.js +3 -0
- package/dist/chunks/local-harness-improvement-runtime-3T6E7I5Q.js +2 -0
- package/dist/chunks/local-harness-taskset-review-LQPQBALH.js +2 -0
- package/dist/chunks/{opchat-T4QTNEIY.js → opchat-6ADSONAD.js} +1 -1
- package/dist/chunks/{organizations-75L5DZDV.js → organizations-GT24ZTCN.js} +1 -1
- package/dist/chunks/{profile-TFZMUEDR.js → profile-Y2MCSOUK.js} +1 -1
- package/dist/chunks/project-action-payload-GHSLE7K3.js +2 -0
- package/dist/chunks/{project-agent-6RRO233B.js → project-agent-YYSQIHVE.js} +1 -1
- package/dist/chunks/{published-experiment-source-DZFENAQA.js → published-experiment-source-5TMGLKDM.js} +1 -1
- package/dist/chunks/refiner-profile-service-ZK7KAFP5.js +2 -0
- package/dist/chunks/{runtime-A7OZXM43.js → runtime-QFXCXSVB.js} +2 -2
- package/dist/chunks/{sandbox-command-IU5XFTJP.js → sandbox-command-U6346TVJ.js} +1 -1
- package/dist/chunks/{sandbox-template-C4V6T36U.js → sandbox-template-XWWPWWNR.js} +1 -1
- package/dist/chunks/saved-work-SWHZ4OLO.js +2 -0
- package/dist/chunks/{send-turn-XTAIS2JN.js → send-turn-SIXOZUVJ.js} +1 -1
- package/dist/chunks/{src-LMC3K6LH.js → src-6SHCCYEN.js} +1 -1
- package/dist/chunks/{src-INHPJ63Z.js → src-EZAKCCUV.js} +56 -56
- package/dist/chunks/standalone-experiment-turn-owner-LIAQWTGI.js +2 -0
- package/dist/chunks/{store-continual-support-reviews-HHA6NX7K.js → store-continual-support-reviews-GDX6CSUU.js} +1 -1
- package/dist/chunks/{store-conversation-serving-KPC62UEY.js → store-conversation-serving-W55XMDH4.js} +1 -1
- package/dist/chunks/{store-create-improve-QV54XIZW.js → store-create-improve-A7E7CUPZ.js} +1 -1
- package/dist/chunks/{store-datasets-RXJ33SUN.js → store-datasets-HKF3EO7B.js} +1 -1
- package/dist/chunks/{store-evaluation-results-3F3P527G.js → store-evaluation-results-645RFBGR.js} +1 -1
- package/dist/chunks/{store-human-review-RAH7WMIP.js → store-human-review-F5KESW52.js} +1 -1
- package/dist/chunks/{store-learned-preference-migration-validation-4CI2IRUF.js → store-learned-preference-migration-validation-V27XD4I7.js} +1 -1
- package/dist/chunks/{store-local-experiments-5LUJR7GI.js → store-local-experiments-HWQWNTIU.js} +1 -1
- package/dist/chunks/{store-model-batch-review-YEGX327M.js → store-model-batch-review-TOCSDVAP.js} +1 -1
- package/dist/chunks/{store-model-configuration-5ZURQATB.js → store-model-configuration-6543ASY2.js} +1 -1
- package/dist/chunks/{store-sidebar-file-bookmarks-VB5GTLFY.js → store-sidebar-file-bookmarks-53B7QIGS.js} +1 -1
- package/dist/chunks/{store-sidebar-preferences-GWIOG2NH.js → store-sidebar-preferences-YXGEJVUO.js} +1 -1
- package/dist/chunks/{store-subagents-T7R2Z6TB.js → store-subagents-HRCAK7VZ.js} +1 -1
- package/dist/chunks/{store-task-inbox-JJTBW76C.js → store-task-inbox-WF74W4U2.js} +11 -11
- package/dist/chunks/{store-task-inventory-OB3F2APC.js → store-task-inventory-KHCTEZVK.js} +1 -1
- package/dist/chunks/{store-taskset-drafts-EKQWWFYQ.js → store-taskset-drafts-3ACG5AVX.js} +1 -1
- package/dist/chunks/{store-training-G6YLFSIR.js → store-training-R46WOGXB.js} +1 -1
- package/dist/chunks/{store-training-jobs-RC46YBF6.js → store-training-jobs-D4LECE7O.js} +1 -1
- package/dist/chunks/{store-training-models-6BA43IPP.js → store-training-models-EQVNXOVB.js} +1 -1
- package/dist/chunks/{taskset-EQRFQBYM.js → taskset-NR2X2UOK.js} +1 -1
- package/dist/chunks/{taskset-packages-XC6HEE3K.js → taskset-packages-ONULEIVI.js} +1 -1
- package/dist/chunks/{teams-bot-EAPGPTHZ.js → teams-bot-CHUYMD6K.js} +1 -1
- package/dist/chunks/{training-UF6RPI4T.js → training-IDSGYGU2.js} +1 -1
- package/dist/chunks/{web-search-CZ3NCLPY.js → web-search-BPON7H5N.js} +1 -1
- package/dist/chunks/{workspaces-EKKE5NAC.js → workspaces-2TJRDM5K.js} +1 -1
- package/dist/cli.js +1 -1
- package/dist/index.js +1 -1
- package/dist/web/assets/App-pcwmC4IR.js +154 -0
- package/dist/web/assets/{AppDialog-t2Fx5tK3.js → AppDialog-CdHad7GT.js} +1 -1
- package/dist/web/assets/{AppTerminalPanel-Dj1Y32oI.js → AppTerminalPanel-CrmoOgd4.js} +2 -2
- package/dist/web/assets/AppsView-0P6cBsD4.js +1 -0
- package/dist/web/assets/{BrowserSidebar-jhWi4rVm.js → BrowserSidebar-Cb6edJw6.js} +1 -1
- package/dist/web/assets/{CartesianChart-C1DIx0Ia.js → CartesianChart-B2Sxi0lv.js} +1 -1
- package/dist/web/assets/{CollaborationTabs-Bdr-HmOL.js → CollaborationTabs-PP0AIXhb.js} +1 -1
- package/dist/web/assets/{CommandMenu-Ux2yOHAc.js → CommandMenu-GfQIMe6W.js} +1 -1
- package/dist/web/assets/{CommunityView-DPEeVKFn.js → CommunityView-V6KmMl5n.js} +1 -1
- package/dist/web/assets/ComposerCreateImproveStrip-oeVeyhPX.js +1 -0
- package/dist/web/assets/ConversationImportsSettings-CuQcvVgE.js +1 -0
- package/dist/web/assets/ConversationImportsSettings-PfUa8V7X.css +1 -0
- package/dist/web/assets/{GetStartedView-CFHP0AaI.js → GetStartedView-2oZ068h_.js} +1 -1
- package/dist/web/assets/{HostedModelLearningReview-D8BGTPVN.js → HostedModelLearningReview-DLzak_Vf.js} +1 -1
- package/dist/web/assets/{HostedModelLearningSettings-JS1S7vNO.js → HostedModelLearningSettings-Eca6Pd9R.js} +1 -1
- package/dist/web/assets/{LabModelVersionDetailPage-Dx5Q3xV2.js → LabModelVersionDetailPage-DsBblnMp.js} +1 -1
- package/dist/web/assets/LabSkillSidebar-DDknttrB.js +1 -0
- package/dist/web/assets/{LabsRoute-CyYF8-dw.js → LabsRoute-CgNiUHsy.js} +4 -4
- package/dist/web/assets/MainChatThread-yCVg99LU.js +2 -0
- package/dist/web/assets/MainPane-C86le7UF.js +65 -0
- package/dist/web/assets/{MarkdownText-BR4V6lNO.js → MarkdownText-BBVriBCj.js} +1 -1
- package/dist/web/assets/{NativeSkillSidebar-DU9IEgIO.js → NativeSkillSidebar-D2uVZkqh.js} +1 -1
- package/dist/web/assets/{NewExperienceSwitcher-mIy6FzCj.js → NewExperienceSwitcher-DuD6GScJ.js} +1 -1
- package/dist/web/assets/{NewProjectDialog-RfTZTHxl.js → NewProjectDialog-B6XZkJrU.js} +1 -1
- package/dist/web/assets/OutputsPage-PUlmcWjv.js +1 -0
- package/dist/web/assets/{ProjectsPage-CE6QUB-b.js → ProjectsPage-DWBRmej6.js} +1 -1
- package/dist/web/assets/RightChatPanelStack-HaCVep4t.js +1 -0
- package/dist/web/assets/{RightSidebarHomePanel-CK0rP3WT.js → RightSidebarHomePanel-BUtdPb2L.js} +1 -1
- package/dist/web/assets/{ScheduledWorkPage-vOrYv8pp.js → ScheduledWorkPage-Dg9GkGrT.js} +1 -1
- package/dist/web/assets/SettingsView-DjjnCnlb.css +1 -0
- package/dist/web/assets/{SettingsView-DCKVrfjj.js → SettingsView-DtldfnV-.js} +4 -4
- package/dist/web/assets/{TeamChatView-Bwrjr-vk.js → TeamChatView-C71JX4je.js} +2 -2
- package/dist/web/assets/{TerminalOverlay-DhPoKZAq.js → TerminalOverlay-B4F6Q36s.js} +1 -1
- package/dist/web/assets/TrainingCreationPanel-B9MxFzQx.js +1 -0
- package/dist/web/assets/{TrainingDraftPanel-C9cRX5qf.js → TrainingDraftPanel-7C48sHfC.js} +1 -1
- package/dist/web/assets/{UsageSettingsSection-CrdcSGeW.js → UsageSettingsSection-CC57FcUB.js} +1 -1
- package/dist/web/assets/{WorkSidebarPanel-DSSikNFQ.js → WorkSidebarPanel-Cto1usLM.js} +1 -1
- package/dist/web/assets/{WorkspaceDiffPanel-BAFo0CPN.js → WorkspaceDiffPanel-CL7wi3kp.js} +3 -3
- package/dist/web/assets/{WorkspaceEnvironmentMenu-BVHAhwnJ.js → WorkspaceEnvironmentMenu-zdzSDofs.js} +18 -18
- package/dist/web/assets/{WorkspaceGitDialogs-CwVoiDQ2.js → WorkspaceGitDialogs-CZSmjnrc.js} +1 -1
- package/dist/web/assets/{WorkspaceMonacoEditor-TxLyhzNp.js → WorkspaceMonacoEditor-TrUDJMKb.js} +3 -3
- package/dist/web/assets/agent-connections-4Dza2mDg.js +1 -0
- package/dist/web/assets/{arrow-up-right-C9aE8Mfz.js → arrow-up-right-xKb5kWQJ.js} +1 -1
- package/dist/web/assets/{chunk-P3BRSSRD-DUGfuKA8.js → chunk-P3BRSSRD-BsGTkgyC.js} +1 -1
- package/dist/web/assets/{clipboard-Dk158Qp4.js → clipboard-BgjV3aCx.js} +1 -1
- package/dist/web/assets/{cloud-upload-k9eqBsHr.js → cloud-upload-Bw9XUsKQ.js} +1 -1
- package/dist/web/assets/{cssMode-CO35ARZp.js → cssMode-DxsFJGb-.js} +1 -1
- package/dist/web/assets/{folder-open-sYgceW_f.js → folder-open-CbmUjIYS.js} +1 -1
- package/dist/web/assets/{folder-plus-CS0R49m9.js → folder-plus-slsst7Ct.js} +1 -1
- package/dist/web/assets/{git-commit-horizontal-DrGxH2h4.js → git-commit-horizontal-BIS-8MuS.js} +1 -1
- package/dist/web/assets/{htmlMode-REMmzdfq.js → htmlMode-BE4VOrZo.js} +1 -1
- package/dist/web/assets/{index-C8aCGagb.js → index-DEg0S7Qk.js} +2 -2
- package/dist/web/assets/index-erq7hUne.css +1 -0
- package/dist/web/assets/{info-DLdbiUrh.js → info-5bL9xSSf.js} +1 -1
- package/dist/web/assets/{jsonMode-KEdMfkIf.js → jsonMode-CYimnBhD.js} +1 -1
- package/dist/web/assets/{lspLanguageFeatures-5KZwEoxW.js → lspLanguageFeatures-CiFuk-P7.js} +1 -1
- package/dist/web/assets/{minimize-2-CqcI4zcM.js → minimize-2-BGVWKvTg.js} +1 -1
- package/dist/web/assets/{monaco.contribution-omszXBEj.js → monaco.contribution-BTY4dJ0f.js} +2 -2
- package/dist/web/assets/{monaco.contribution-BJGj65F9.js → monaco.contribution-C7sMrcos.js} +2 -2
- package/dist/web/assets/{monaco.contribution-DO10L0zW.js → monaco.contribution-DUE3CQph.js} +2 -2
- package/dist/web/assets/{monaco.contribution-Cly9Wt7L.js → monaco.contribution-DkLVGT8N.js} +2 -2
- package/dist/web/assets/{monitor-BFVCcbxp.js → monitor-B5hx_tzp.js} +1 -1
- package/dist/web/assets/{play-C469pVZq.js → play-pmSO95Qg.js} +1 -1
- package/dist/web/assets/{python-Dw0YcVy9.js → python-CiZvL3LX.js} +1 -1
- package/dist/web/assets/{save-CtSjPydi.js → save-CvYL4DUg.js} +1 -1
- package/dist/web/assets/{square-BuImvLhT.js → square-DT_uFOml.js} +1 -1
- package/dist/web/assets/{toggleHighContrast-DjCO9lIP.js → toggleHighContrast-CrE1_HY0.js} +1 -1
- package/dist/web/assets/{tsMode-BAOnxKd6.js → tsMode-CI_PdZmj.js} +1 -1
- package/dist/web/assets/{upload-2JkFZo3h.js → upload-PVi8vC3T.js} +1 -1
- package/dist/web/assets/{useLocalAgentSchedules-BNqAisfS.js → useLocalAgentSchedules-BHJNVf42.js} +1 -1
- package/dist/web/assets/useProviderSettings-CU3zXyie.js +5 -0
- package/dist/web/assets/{useProviderSettings-CmL_BaxP.css → useProviderSettings-Cktvzinz.css} +1 -1
- package/dist/web/assets/{useSessionTurnCache-BHU2-Jmz.js → useSessionTurnCache-BE7cipLX.js} +1 -1
- package/dist/web/assets/{wifi-off-CpOAH62M.js → wifi-off-7WiFuOhD.js} +1 -1
- package/dist/web/assets/{workers-0QvlA2T5.js → workers-Cv8r4CvM.js} +1 -1
- package/dist/web/assets/{yaml-BK3qxo7D.js → yaml-Bj7mdkV2.js} +1 -1
- package/dist/web/index.html +2 -2
- package/docs/command-reference.md +10 -3
- package/docs/conversation-imports.md +57 -0
- package/package.json +1 -1
- package/dist/chunks/app-server-runtime-VCRNCNX2.js +0 -2
- package/dist/chunks/chunk-FV2R5RUN.js +0 -3
- package/dist/chunks/chunk-FY5KHLMW.js +0 -2
- package/dist/chunks/chunk-HY3GOBFJ.js +0 -58
- package/dist/chunks/chunk-KG325WTN.js +0 -2
- package/dist/chunks/chunk-MULXCKG7.js +0 -10
- package/dist/chunks/chunk-OGDADQGH.js +0 -143
- package/dist/chunks/chunk-QHWGQ3A4.js +0 -5
- package/dist/chunks/chunk-VRIEKBBH.js +0 -9
- package/dist/chunks/chunk-WJ43MJ3F.js +0 -2
- package/dist/chunks/chunk-YY7LEQGP.js +0 -2
- package/dist/chunks/cli-X25RSO2X.js +0 -2
- package/dist/chunks/connected-app-executor-IVLGQP65.js +0 -2
- package/dist/chunks/connection-HTF6CC7M.js +0 -2
- package/dist/chunks/core-commands-A2DGGIPS.js +0 -2
- package/dist/chunks/host-profile-evaluation-tools-NRLXL2S5.js +0 -2
- package/dist/chunks/host-profile-external-dataset-K3ICDHIP.js +0 -2
- package/dist/chunks/hosted-harness-runtime-723S5ZSH.js +0 -2
- package/dist/chunks/hosted-profile-compiler-2DQIFSXW.js +0 -2
- package/dist/chunks/import-MLZUHITH.js +0 -4
- package/dist/chunks/local-harness-improvement-runtime-JIQ6ZVDW.js +0 -2
- package/dist/chunks/local-harness-taskset-review-XVYTGAGK.js +0 -2
- package/dist/chunks/project-action-payload-7VGL7OER.js +0 -2
- package/dist/chunks/refiner-profile-service-UUIWFJVT.js +0 -2
- package/dist/chunks/saved-work-6BMBFP43.js +0 -2
- package/dist/chunks/standalone-experiment-turn-owner-JCY5LL5R.js +0 -2
- package/dist/web/assets/App-s-CJswyt.js +0 -154
- package/dist/web/assets/AppsView-BYE5EBDJ.js +0 -1
- package/dist/web/assets/ComposerCreateImproveStrip-CEgh4OtN.js +0 -1
- package/dist/web/assets/LabSkillSidebar-BxffN-pN.js +0 -1
- package/dist/web/assets/MainChatThread-DZpcFRFl.js +0 -2
- package/dist/web/assets/MainPane-5DTtwVCk.js +0 -65
- package/dist/web/assets/OutputsPage-Cr1Spf7S.js +0 -1
- package/dist/web/assets/RightChatPanelStack-T6VRWuHo.js +0 -1
- package/dist/web/assets/SettingsView-Dulr_xlq.css +0 -1
- package/dist/web/assets/TrainingCreationPanel-BXHfohNm.js +0 -1
- package/dist/web/assets/index-3iPNbbER.css +0 -1
- package/dist/web/assets/useProviderSettings-C4L4wDoh.js +0 -5
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
import{r as q,j as r}from"./index-
|
|
1
|
+
import{r as q,j as r}from"./index-DEg0S7Qk.js";import{bL as le,s as L,o as ee,bM as bn,bN as Qe,n as Be,_ as rn,bO as We,b as en,e as ji,X as Ut,bP as sn,aP as Ai,bw as Ci,aB as An,a3 as Ni,az as at,a1 as wi,bQ as _i,bp as Ii,be as Ei,bR as Ri,bS as ot,W as xe,bl as Pi,aD as Ti,U as Oi,aA as Cn,C as Li,aJ as ki,y as Mi}from"./App-pcwmC4IR.js";import{I as qi}from"./info-5bL9xSSf.js";import{M as Fi}from"./monitor-B5hx_tzp.js";import{P as cn}from"./play-pmSO95Qg.js";import{G as Di}from"./git-commit-horizontal-BIS-8MuS.js";import{S as Ui}from"./square-DT_uFOml.js";import{U as lt}from"./upload-PVi8vC3T.js";const Ee={custom:"custom"};function $i(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var be={},pn={},Ve={},st;function dn(){if(st)return Ve;st=1;function n(s){return typeof s>"u"||s===null}function i(s){return typeof s=="object"&&s!==null}function o(s){return Array.isArray(s)?s:n(s)?[]:[s]}function h(s,f){if(f){const g=Object.keys(f);for(let p=0,l=g.length;p<l;p+=1){const w=g[p];s[w]=f[w]}}return s}function c(s,f){let g="";for(let p=0;p<f;p+=1)g+=s;return g}function u(s){return s===0&&Number.NEGATIVE_INFINITY===1/s}return Ve.isNothing=n,Ve.isObject=i,Ve.toArray=o,Ve.repeat=c,Ve.isNegativeZero=u,Ve.extend=h,Ve}var Nn,ct;function mn(){if(ct)return Nn;ct=1;function n(o,h){let c="";const u=o.reason||"(unknown reason)";return o.mark?(o.mark.name&&(c+='in "'+o.mark.name+'" '),c+="("+(o.mark.line+1)+":"+(o.mark.column+1)+")",!h&&o.mark.snippet&&(c+=`
|
|
2
2
|
|
|
3
|
-
`+o.mark.snippet),u+" "+c):u}function i(o,h){Error.call(this),this.name="YAMLException",this.reason=o,this.mark=h,this.message=n(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}return i.prototype=Object.create(Error.prototype),i.prototype.constructor=i,i.prototype.toString=function(h){return this.name+": "+n(this,h)},Nn=i,Nn}var wn,ut;function
|
|
4
|
-
`+w}const J=i(c.buffer,f[l],g[l],c.position,U);w+=n.repeat(" ",u.indent)+o((c.line+1).toString(),
|
|
5
|
-
`,w+=n.repeat("-",u.indent+
|
|
6
|
-
`;for(let D=1;D<=u.linesAfter&&!(l+D>=g.length);D++){const Y=i(c.buffer,f[l+D],g[l+D],c.position-(f[l]-f[l+D]),U);w+=n.repeat(" ",u.indent)+o((c.line+D+1).toString(),
|
|
7
|
-
`}return w.replace(/\n$/,"")}return wn=h,wn}var
|
|
8
|
-
\r`;function o(s){if(s===null)return!1;let f=0;const g=s.length,p=i;for(let l=0;l<g;l++){const w=p.indexOf(s.charAt(l));if(!(w>64)){if(w<0)return!1;f+=6}}return f%8===0}function h(s){const f=s.replace(/[\r\n=]/g,""),g=f.length,p=i;let l=0;const w=[];for(let U=0;U<g;U++)U%4===0&&U&&(w.push(l>>16&255),w.push(l>>8&255),w.push(l&255)),l=l<<6|p.indexOf(f.charAt(U));const
|
|
9
|
-
`;case 118:return"\v";case 102:return"\f";case 114:return"\r";case 101:return"\x1B";case 32:return" ";case 34:return'"';case 47:return"/";case 92:return"\\";case 78:return"
";case 95:return" ";case 76:return"\u2028";case 80:return"\u2029";default:return""}}function Ne(e){return e<=65535?String.fromCharCode(e):String.fromCharCode((e-65536>>10)+55296,(e-65536&1023)+56320)}function Oe(e,m,b){m==="__proto__"?Object.defineProperty(e,m,{configurable:!0,enumerable:!0,writable:!0,value:b}):e[m]=b}const fe=new Array(256),he=new Array(256);for(let e=0;e<256;e++)fe[e]=Ce(e)?1:0,he[e]=Ce(e);function
|
|
10
|
-
`,m-1))}function re(e,m,b){let j,a,x,t,d,C;const v=e.kind,A=e.result;let N=e.input.charCodeAt(e.position);if(F(N)||Z(N)||N===35||N===38||N===42||N===33||N===124||N===62||N===39||N===34||N===37||N===64||N===96)return!1;if(N===63||N===45){const S=e.input.charCodeAt(e.position+1);if(F(S)||b&&Z(S))return!1}for(e.kind="scalar",e.result="",j=a=e.position,x=!1;N!==0;){if(N===58){const S=e.input.charCodeAt(e.position+1);if(F(S)||b&&Z(S))break}else if(N===35){const S=e.input.charCodeAt(e.position-1);if(F(S))break}else{if(e.position===e.lineStart&&Le(e)||b&&Z(N))break;if(V(N))if(t=e.line,d=e.lineStart,C=e.lineIndent,K(e,!1,-1),e.lineIndent>=m){x=!0,N=e.input.charCodeAt(e.position);continue}else{e.position=a,e.line=t,e.lineStart=d,e.lineIndent=C;break}}x&&(se(e,j,a,!1),pe(e,e.line-t),j=a=e.position,x=!1),O(N)||(a=e.position+1),N=e.input.charCodeAt(++e.position)}return se(e,j,a,!1),e.result?!0:(e.kind=v,e.result=A,!1)}function ke(e,m){let b,j,a=e.input.charCodeAt(e.position);if(a!==39)return!1;for(e.kind="scalar",e.result="",e.position++,b=j=e.position;(a=e.input.charCodeAt(e.position))!==0;)if(a===39)if(se(e,b,e.position,!0),a=e.input.charCodeAt(++e.position),a===39)b=e.position,e.position++,j=e.position;else return!0;else V(a)?(se(e,b,j,!0),pe(e,K(e,!1,m)),b=j=e.position):e.position===e.lineStart&&Le(e)?
|
|
3
|
+
`+o.mark.snippet),u+" "+c):u}function i(o,h){Error.call(this),this.name="YAMLException",this.reason=o,this.mark=h,this.message=n(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}return i.prototype=Object.create(Error.prototype),i.prototype.constructor=i,i.prototype.toString=function(h){return this.name+": "+n(this,h)},Nn=i,Nn}var wn,ut;function Bi(){if(ut)return wn;ut=1;const n=dn();function i(c,u,s,f,g){let p="",l="";const w=Math.floor(g/2)-1;return f-u>w&&(p=" ... ",u=f-w+p.length),s-f>w&&(l=" ...",s=f+w-l.length),{str:p+c.slice(u,s).replace(/\t/g,"→")+l,pos:f-u+p.length}}function o(c,u){return n.repeat(" ",u-c.length)+c}function h(c,u){if(u=Object.create(u||null),!c.buffer)return null;u.maxLength||(u.maxLength=79),typeof u.indent!="number"&&(u.indent=1),typeof u.linesBefore!="number"&&(u.linesBefore=3),typeof u.linesAfter!="number"&&(u.linesAfter=2);const s=/\r?\n|\r|\0/g,f=[0],g=[];let p,l=-1;for(;p=s.exec(c.buffer);)g.push(p.index),f.push(p.index+p[0].length),c.position<=p.index&&l<0&&(l=f.length-2);l<0&&(l=f.length-1);let w="";const P=Math.min(c.line+u.linesAfter,g.length).toString().length,U=u.maxLength-(u.indent+P+3);for(let D=1;D<=u.linesBefore&&!(l-D<0);D++){const Y=i(c.buffer,f[l-D],g[l-D],c.position-(f[l]-f[l-D]),U);w=n.repeat(" ",u.indent)+o((c.line-D+1).toString(),P)+" | "+Y.str+`
|
|
4
|
+
`+w}const J=i(c.buffer,f[l],g[l],c.position,U);w+=n.repeat(" ",u.indent)+o((c.line+1).toString(),P)+" | "+J.str+`
|
|
5
|
+
`,w+=n.repeat("-",u.indent+P+3+J.pos)+`^
|
|
6
|
+
`;for(let D=1;D<=u.linesAfter&&!(l+D>=g.length);D++){const Y=i(c.buffer,f[l+D],g[l+D],c.position-(f[l]-f[l+D]),U);w+=n.repeat(" ",u.indent)+o((c.line+D+1).toString(),P)+" | "+Y.str+`
|
|
7
|
+
`}return w.replace(/\n$/,"")}return wn=h,wn}var _n,dt;function Ae(){if(dt)return _n;dt=1;const n=mn(),i=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],o=["scalar","sequence","mapping"];function h(u){const s={};return u!==null&&Object.keys(u).forEach(function(f){u[f].forEach(function(g){s[String(g)]=f})}),s}function c(u,s){if(s=s||{},Object.keys(s).forEach(function(f){if(i.indexOf(f)===-1)throw new n('Unknown option "'+f+'" is met in definition of "'+u+'" YAML type.')}),this.options=s,this.tag=u,this.kind=s.kind||null,this.resolve=s.resolve||function(){return!0},this.construct=s.construct||function(f){return f},this.instanceOf=s.instanceOf||null,this.predicate=s.predicate||null,this.represent=s.represent||null,this.representName=s.representName||null,this.defaultStyle=s.defaultStyle||null,this.multi=s.multi||!1,this.styleAliases=h(s.styleAliases||null),o.indexOf(this.kind)===-1)throw new n('Unknown kind "'+this.kind+'" is specified for "'+u+'" YAML type.')}return _n=c,_n}var In,mt;function $t(){if(mt)return In;mt=1;const n=mn(),i=Ae();function o(u,s){const f=[];return u[s].forEach(function(g){let p=f.length;f.forEach(function(l,w){l.tag===g.tag&&l.kind===g.kind&&l.multi===g.multi&&(p=w)}),f[p]=g}),f}function h(){const u={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function s(f){f.multi?(u.multi[f.kind].push(f),u.multi.fallback.push(f)):u[f.kind][f.tag]=u.fallback[f.tag]=f}for(let f=0,g=arguments.length;f<g;f+=1)arguments[f].forEach(s);return u}function c(u){return this.extend(u)}return c.prototype.extend=function(s){let f=[],g=[];if(s instanceof i)g.push(s);else if(Array.isArray(s))g=g.concat(s);else if(s&&(Array.isArray(s.implicit)||Array.isArray(s.explicit)))s.implicit&&(f=f.concat(s.implicit)),s.explicit&&(g=g.concat(s.explicit));else throw new n("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");f.forEach(function(l){if(!(l instanceof i))throw new n("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(l.loadKind&&l.loadKind!=="scalar")throw new n("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(l.multi)throw new n("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),g.forEach(function(l){if(!(l instanceof i))throw new n("Specified list of YAML types (or a single Type object) contains a non-Type object.")});const p=Object.create(c.prototype);return p.implicit=(this.implicit||[]).concat(f),p.explicit=(this.explicit||[]).concat(g),p.compiledImplicit=o(p,"implicit"),p.compiledExplicit=o(p,"explicit"),p.compiledTypeMap=h(p.compiledImplicit,p.compiledExplicit),p},In=c,In}var En,pt;function Bt(){if(pt)return En;pt=1;const n=Ae();return En=new n("tag:yaml.org,2002:str",{kind:"scalar",construct:function(i){return i!==null?i:""}}),En}var Rn,ft;function zt(){if(ft)return Rn;ft=1;const n=Ae();return Rn=new n("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(i){return i!==null?i:[]}}),Rn}var Pn,ht;function Ht(){if(ht)return Pn;ht=1;const n=Ae();return Pn=new n("tag:yaml.org,2002:map",{kind:"mapping",construct:function(i){return i!==null?i:{}}}),Pn}var Tn,gt;function Yt(){if(gt)return Tn;gt=1;const n=$t();return Tn=new n({explicit:[Bt(),zt(),Ht()]}),Tn}var On,xt;function Gt(){if(xt)return On;xt=1;const n=Ae();function i(c){if(c===null)return!0;const u=c.length;return u===1&&c==="~"||u===4&&(c==="null"||c==="Null"||c==="NULL")}function o(){return null}function h(c){return c===null}return On=new n("tag:yaml.org,2002:null",{kind:"scalar",resolve:i,construct:o,predicate:h,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"},empty:function(){return""}},defaultStyle:"lowercase"}),On}var Ln,bt;function Kt(){if(bt)return Ln;bt=1;const n=Ae();function i(c){if(c===null)return!1;const u=c.length;return u===4&&(c==="true"||c==="True"||c==="TRUE")||u===5&&(c==="false"||c==="False"||c==="FALSE")}function o(c){return c==="true"||c==="True"||c==="TRUE"}function h(c){return Object.prototype.toString.call(c)==="[object Boolean]"}return Ln=new n("tag:yaml.org,2002:bool",{kind:"scalar",resolve:i,construct:o,predicate:h,represent:{lowercase:function(c){return c?"true":"false"},uppercase:function(c){return c?"TRUE":"FALSE"},camelcase:function(c){return c?"True":"False"}},defaultStyle:"lowercase"}),Ln}var kn,St;function Vt(){if(St)return kn;St=1;const n=dn(),i=Ae();function o(p){return p>=48&&p<=57||p>=65&&p<=70||p>=97&&p<=102}function h(p){return p>=48&&p<=55}function c(p){return p>=48&&p<=57}function u(p){if(p===null)return!1;const l=p.length;let w=0,P=!1;if(!l)return!1;let U=p[w];if((U==="-"||U==="+")&&(U=p[++w]),U==="0"){if(w+1===l)return!0;if(U=p[++w],U==="b"){for(w++;w<l;w++){if(U=p[w],U!=="0"&&U!=="1")return!1;P=!0}return P&&isFinite(s(p))}if(U==="x"){for(w++;w<l;w++){if(!o(p.charCodeAt(w)))return!1;P=!0}return P&&isFinite(s(p))}if(U==="o"){for(w++;w<l;w++){if(!h(p.charCodeAt(w)))return!1;P=!0}return P&&isFinite(s(p))}}for(;w<l;w++){if(!c(p.charCodeAt(w)))return!1;P=!0}return P?isFinite(s(p)):!1}function s(p){let l=p,w=1,P=l[0];if((P==="-"||P==="+")&&(P==="-"&&(w=-1),l=l.slice(1),P=l[0]),l==="0")return 0;if(P==="0"){if(l[1]==="b")return w*parseInt(l.slice(2),2);if(l[1]==="x")return w*parseInt(l.slice(2),16);if(l[1]==="o")return w*parseInt(l.slice(2),8)}return w*parseInt(l,10)}function f(p){return s(p)}function g(p){return Object.prototype.toString.call(p)==="[object Number]"&&p%1===0&&!n.isNegativeZero(p)}return kn=new i("tag:yaml.org,2002:int",{kind:"scalar",resolve:u,construct:f,predicate:g,represent:{binary:function(p){return p>=0?"0b"+p.toString(2):"-0b"+p.toString(2).slice(1)},octal:function(p){return p>=0?"0o"+p.toString(8):"-0o"+p.toString(8).slice(1)},decimal:function(p){return p.toString(10)},hexadecimal:function(p){return p>=0?"0x"+p.toString(16).toUpperCase():"-0x"+p.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),kn}var Mn,yt;function Qt(){if(yt)return Mn;yt=1;const n=dn(),i=Ae(),o=new RegExp("^(?:[-+]?(?:[0-9]+)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),h=new RegExp("^(?:[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function c(p){return p===null||!o.test(p)?!1:isFinite(parseFloat(p,10))?!0:h.test(p)}function u(p){let l=p.toLowerCase();const w=l[0]==="-"?-1:1;return"+-".indexOf(l[0])>=0&&(l=l.slice(1)),l===".inf"?w===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:l===".nan"?NaN:w*parseFloat(l,10)}const s=/^[-+]?[0-9]+e/;function f(p,l){if(isNaN(p))switch(l){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===p)switch(l){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===p)switch(l){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(n.isNegativeZero(p))return"-0.0";const w=p.toString(10);return s.test(w)?w.replace("e",".e"):w}function g(p){return Object.prototype.toString.call(p)==="[object Number]"&&(p%1!==0||n.isNegativeZero(p))}return Mn=new i("tag:yaml.org,2002:float",{kind:"scalar",resolve:c,construct:u,predicate:g,represent:f,defaultStyle:"lowercase"}),Mn}var qn,vt;function Zt(){return vt||(vt=1,qn=Yt().extend({implicit:[Gt(),Kt(),Vt(),Qt()]})),qn}var Fn,jt;function Xt(){return jt||(jt=1,Fn=Zt()),Fn}var Dn,At;function Jt(){if(At)return Dn;At=1;const n=Ae(),i=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),o=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function h(s){return s===null?!1:i.exec(s)!==null||o.exec(s)!==null}function c(s){let f=0,g=null,p=i.exec(s);if(p===null&&(p=o.exec(s)),p===null)throw new Error("Date resolve error");const l=+p[1],w=+p[2]-1,P=+p[3];if(!p[4])return new Date(Date.UTC(l,w,P));const U=+p[4],J=+p[5],D=+p[6];if(p[7]){for(f=p[7].slice(0,3);f.length<3;)f+="0";f=+f}if(p[9]){const te=+p[10],V=+(p[11]||0);g=(te*60+V)*6e4,p[9]==="-"&&(g=-g)}const Y=new Date(Date.UTC(l,w,P,U,J,D,f));return g&&Y.setTime(Y.getTime()-g),Y}function u(s){return s.toISOString()}return Dn=new n("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:h,construct:c,instanceOf:Date,represent:u}),Dn}var Un,Ct;function Wt(){if(Ct)return Un;Ct=1;const n=Ae();function i(o){return o==="<<"||o===null}return Un=new n("tag:yaml.org,2002:merge",{kind:"scalar",resolve:i}),Un}var $n,Nt;function ei(){if(Nt)return $n;Nt=1;const n=Ae(),i=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
|
|
8
|
+
\r`;function o(s){if(s===null)return!1;let f=0;const g=s.length,p=i;for(let l=0;l<g;l++){const w=p.indexOf(s.charAt(l));if(!(w>64)){if(w<0)return!1;f+=6}}return f%8===0}function h(s){const f=s.replace(/[\r\n=]/g,""),g=f.length,p=i;let l=0;const w=[];for(let U=0;U<g;U++)U%4===0&&U&&(w.push(l>>16&255),w.push(l>>8&255),w.push(l&255)),l=l<<6|p.indexOf(f.charAt(U));const P=g%4*6;return P===0?(w.push(l>>16&255),w.push(l>>8&255),w.push(l&255)):P===18?(w.push(l>>10&255),w.push(l>>2&255)):P===12&&w.push(l>>4&255),new Uint8Array(w)}function c(s){let f="",g=0;const p=s.length,l=i;for(let P=0;P<p;P++)P%3===0&&P&&(f+=l[g>>18&63],f+=l[g>>12&63],f+=l[g>>6&63],f+=l[g&63]),g=(g<<8)+s[P];const w=p%3;return w===0?(f+=l[g>>18&63],f+=l[g>>12&63],f+=l[g>>6&63],f+=l[g&63]):w===2?(f+=l[g>>10&63],f+=l[g>>4&63],f+=l[g<<2&63],f+=l[64]):w===1&&(f+=l[g>>2&63],f+=l[g<<4&63],f+=l[64],f+=l[64]),f}function u(s){return Object.prototype.toString.call(s)==="[object Uint8Array]"}return $n=new n("tag:yaml.org,2002:binary",{kind:"scalar",resolve:o,construct:h,predicate:u,represent:c}),$n}var Bn,wt;function ni(){if(wt)return Bn;wt=1;const n=Ae(),i=Object.prototype.hasOwnProperty,o=Object.prototype.toString;function h(u){if(u===null)return!0;const s=[],f=u;for(let g=0,p=f.length;g<p;g+=1){const l=f[g];let w=!1;if(o.call(l)!=="[object Object]")return!1;let P;for(P in l)if(i.call(l,P))if(!w)w=!0;else return!1;if(!w)return!1;if(s.indexOf(P)===-1)s.push(P);else return!1}return!0}function c(u){return u!==null?u:[]}return Bn=new n("tag:yaml.org,2002:omap",{kind:"sequence",resolve:h,construct:c}),Bn}var zn,_t;function ti(){if(_t)return zn;_t=1;const n=Ae(),i=Object.prototype.toString;function o(c){if(c===null)return!0;const u=c,s=new Array(u.length);for(let f=0,g=u.length;f<g;f+=1){const p=u[f];if(i.call(p)!=="[object Object]")return!1;const l=Object.keys(p);if(l.length!==1)return!1;s[f]=[l[0],p[l[0]]]}return!0}function h(c){if(c===null)return[];const u=c,s=new Array(u.length);for(let f=0,g=u.length;f<g;f+=1){const p=u[f],l=Object.keys(p);s[f]=[l[0],p[l[0]]]}return s}return zn=new n("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:o,construct:h}),zn}var Hn,It;function ii(){if(It)return Hn;It=1;const n=Ae(),i=Object.prototype.hasOwnProperty;function o(c){if(c===null)return!0;const u=c;for(const s in u)if(i.call(u,s)&&u[s]!==null)return!1;return!0}function h(c){return c!==null?c:{}}return Hn=new n("tag:yaml.org,2002:set",{kind:"mapping",resolve:o,construct:h}),Hn}var Yn,Et;function Jn(){return Et||(Et=1,Yn=Xt().extend({implicit:[Jt(),Wt()],explicit:[ei(),ni(),ti(),ii()]})),Yn}var Rt;function zi(){if(Rt)return pn;Rt=1;const n=dn(),i=mn(),o=Bi(),h=Jn(),c=Object.prototype.hasOwnProperty,u=1,s=2,f=3,g=4,p=1,l=2,w=3,P=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,U=/[\x85\u2028\u2029]/,J=/[,\[\]{}]/,D=/^(?:!|!!|![0-9A-Za-z-]+!)$/,Y=/^(?:!|[^,\[\]{}])(?:%[0-9a-f]{2}|[0-9a-z\-#;/?:@&=+$,_.!~*'()\[\]])*$/i;function te(e){return Object.prototype.toString.call(e)}function V(e){return e===10||e===13}function O(e){return e===9||e===32}function F(e){return e===9||e===32||e===10||e===13}function Z(e){return e===44||e===91||e===93||e===123||e===125}function W(e){if(e>=48&&e<=57)return e-48;const m=e|32;return m>=97&&m<=102?m-97+10:-1}function oe(e){return e===120?2:e===117?4:e===85?8:0}function ie(e){return e>=48&&e<=57?e-48:-1}function Ce(e){switch(e){case 48:return"\0";case 97:return"\x07";case 98:return"\b";case 116:return" ";case 9:return" ";case 110:return`
|
|
9
|
+
`;case 118:return"\v";case 102:return"\f";case 114:return"\r";case 101:return"\x1B";case 32:return" ";case 34:return'"';case 47:return"/";case 92:return"\\";case 78:return"
";case 95:return" ";case 76:return"\u2028";case 80:return"\u2029";default:return""}}function Ne(e){return e<=65535?String.fromCharCode(e):String.fromCharCode((e-65536>>10)+55296,(e-65536&1023)+56320)}function Oe(e,m,b){m==="__proto__"?Object.defineProperty(e,m,{configurable:!0,enumerable:!0,writable:!0,value:b}):e[m]=b}const fe=new Array(256),he=new Array(256);for(let e=0;e<256;e++)fe[e]=Ce(e)?1:0,he[e]=Ce(e);function _(e,m){this.input=e,this.filename=m.filename||null,this.schema=m.schema||h,this.onWarning=m.onWarning||null,this.legacy=m.legacy||!1,this.json=m.json||!1,this.listener=m.listener||null,this.maxDepth=typeof m.maxDepth=="number"?m.maxDepth:100,this.maxTotalMergeKeys=typeof m.maxTotalMergeKeys=="number"?m.maxTotalMergeKeys:1e4,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.depth=0,this.totalMergeKeys=0,this.firstTabInLine=-1,this.documents=[],this.anchorMapTransactions=[]}function z(e,m){const b={name:e.filename,buffer:e.input.slice(0,-1),position:e.position,line:e.line,column:e.position-e.lineStart};return b.snippet=o(b),new i(m,b)}function I(e,m){throw z(e,m)}function H(e,m){e.onWarning&&e.onWarning.call(null,z(e,m))}function Q(e,m,b){const j=e.anchorMapTransactions;if(j.length!==0){const a=j[j.length-1];c.call(a,m)||(a[m]={existed:c.call(e.anchorMap,m),value:e.anchorMap[m]})}e.anchorMap[m]=b}function de(e){e.anchorMapTransactions.push(Object.create(null))}function Se(e){const m=e.anchorMapTransactions.pop(),b=e.anchorMapTransactions;if(b.length===0)return;const j=b[b.length-1],a=Object.keys(m);for(let x=0,t=a.length;x<t;x+=1){const d=a[x];c.call(j,d)||(j[d]=m[d])}}function ze(e){const m=e.anchorMapTransactions.pop(),b=Object.keys(m);for(let j=b.length-1;j>=0;j-=1){const a=m[b[j]];a.existed?e.anchorMap[b[j]]=a.value:delete e.anchorMap[b[j]]}}function Re(e){return{position:e.position,line:e.line,lineStart:e.lineStart,lineIndent:e.lineIndent,firstTabInLine:e.firstTabInLine,tag:e.tag,anchor:e.anchor,kind:e.kind,result:e.result}}function ne(e,m){e.position=m.position,e.line=m.line,e.lineStart=m.lineStart,e.lineIndent=m.lineIndent,e.firstTabInLine=m.firstTabInLine,e.tag=m.tag,e.anchor=m.anchor,e.kind=m.kind,e.result=m.result}const He={YAML:function(m,b,j){m.version!==null&&I(m,"duplication of %YAML directive"),j.length!==1&&I(m,"YAML directive accepts exactly one argument");const a=/^([0-9]+)\.([0-9]+)$/.exec(j[0]);a===null&&I(m,"ill-formed argument of the YAML directive");const x=parseInt(a[1],10),t=parseInt(a[2],10);x!==1&&I(m,"unacceptable YAML version of the document"),m.version=j[0],m.checkLineBreaks=t<2,t!==1&&t!==2&&H(m,"unsupported YAML version of the document")},TAG:function(m,b,j){let a;j.length!==2&&I(m,"TAG directive accepts exactly two arguments");const x=j[0];a=j[1],D.test(x)||I(m,"ill-formed tag handle (first argument) of the TAG directive"),c.call(m.tagMap,x)&&I(m,'there is a previously declared suffix for "'+x+'" tag handle'),Y.test(a)||I(m,"ill-formed tag prefix (second argument) of the TAG directive");try{a=decodeURIComponent(a)}catch{I(m,"tag prefix is malformed: "+a)}m.tagMap[x]=a}};function se(e,m,b,j){if(m<b){const a=e.input.slice(m,b);if(j)for(let x=0,t=a.length;x<t;x+=1){const d=a.charCodeAt(x);d===9||d>=32&&d<=1114111||I(e,"expected valid JSON character")}else P.test(a)&&I(e,"the stream contains non-printable characters");e.result+=a}}function me(e,m,b,j){n.isObject(b)||I(e,"cannot merge mappings; the provided source object is unacceptable");const a=Object.keys(b);for(let x=0,t=a.length;x<t;x+=1){const d=a[x];e.maxTotalMergeKeys!==-1&&++e.totalMergeKeys>e.maxTotalMergeKeys&&I(e,"merge keys exceeded maxTotalMergeKeys ("+e.maxTotalMergeKeys+")"),c.call(m,d)||(Oe(m,d,b[d]),j[d]=!0)}}function ce(e,m,b,j,a,x,t,d,C){if(Array.isArray(a)){a=Array.prototype.slice.call(a);for(let v=0,A=a.length;v<A;v+=1)Array.isArray(a[v])&&I(e,"nested arrays are not supported inside keys"),typeof a=="object"&&te(a[v])==="[object Object]"&&(a[v]="[object Object]")}if(typeof a=="object"&&te(a)==="[object Object]"&&(a="[object Object]"),a=String(a),m===null&&(m={}),j==="tag:yaml.org,2002:merge")if(Array.isArray(x))for(let v=0,A=x.length;v<A;v+=1)me(e,m,x[v],b);else me(e,m,x,b);else!e.json&&!c.call(b,a)&&c.call(m,a)&&(e.line=t||e.line,e.lineStart=d||e.lineStart,e.position=C||e.position,I(e,"duplicated mapping key")),Oe(m,a,x),delete b[a];return m}function we(e){const m=e.input.charCodeAt(e.position);m===10?e.position++:m===13?(e.position++,e.input.charCodeAt(e.position)===10&&e.position++):I(e,"a line break is expected"),e.line+=1,e.lineStart=e.position,e.firstTabInLine=-1}function K(e,m,b){let j=0,a=e.input.charCodeAt(e.position);for(;a!==0;){for(;O(a);)a===9&&e.firstTabInLine===-1&&(e.firstTabInLine=e.position),a=e.input.charCodeAt(++e.position);if(m&&a===35)do a=e.input.charCodeAt(++e.position);while(a!==10&&a!==13&&a!==0);if(V(a))for(we(e),a=e.input.charCodeAt(e.position),j++,e.lineIndent=0;a===32;)e.lineIndent++,a=e.input.charCodeAt(++e.position);else break}return b!==-1&&j!==0&&e.lineIndent<b&&H(e,"deficient indentation"),j}function Le(e){let m=e.position,b=e.input.charCodeAt(m);return!!((b===45||b===46)&&b===e.input.charCodeAt(m+1)&&b===e.input.charCodeAt(m+2)&&(m+=3,b=e.input.charCodeAt(m),b===0||F(b)))}function pe(e,m){m===1?e.result+=" ":m>1&&(e.result+=n.repeat(`
|
|
10
|
+
`,m-1))}function re(e,m,b){let j,a,x,t,d,C;const v=e.kind,A=e.result;let N=e.input.charCodeAt(e.position);if(F(N)||Z(N)||N===35||N===38||N===42||N===33||N===124||N===62||N===39||N===34||N===37||N===64||N===96)return!1;if(N===63||N===45){const S=e.input.charCodeAt(e.position+1);if(F(S)||b&&Z(S))return!1}for(e.kind="scalar",e.result="",j=a=e.position,x=!1;N!==0;){if(N===58){const S=e.input.charCodeAt(e.position+1);if(F(S)||b&&Z(S))break}else if(N===35){const S=e.input.charCodeAt(e.position-1);if(F(S))break}else{if(e.position===e.lineStart&&Le(e)||b&&Z(N))break;if(V(N))if(t=e.line,d=e.lineStart,C=e.lineIndent,K(e,!1,-1),e.lineIndent>=m){x=!0,N=e.input.charCodeAt(e.position);continue}else{e.position=a,e.line=t,e.lineStart=d,e.lineIndent=C;break}}x&&(se(e,j,a,!1),pe(e,e.line-t),j=a=e.position,x=!1),O(N)||(a=e.position+1),N=e.input.charCodeAt(++e.position)}return se(e,j,a,!1),e.result?!0:(e.kind=v,e.result=A,!1)}function ke(e,m){let b,j,a=e.input.charCodeAt(e.position);if(a!==39)return!1;for(e.kind="scalar",e.result="",e.position++,b=j=e.position;(a=e.input.charCodeAt(e.position))!==0;)if(a===39)if(se(e,b,e.position,!0),a=e.input.charCodeAt(++e.position),a===39)b=e.position,e.position++,j=e.position;else return!0;else V(a)?(se(e,b,j,!0),pe(e,K(e,!1,m)),b=j=e.position):e.position===e.lineStart&&Le(e)?I(e,"unexpected end of the document within a single quoted scalar"):(e.position++,O(a)||(j=e.position));I(e,"unexpected end of the stream within a single quoted scalar")}function _e(e,m){let b,j,a,x=e.input.charCodeAt(e.position);if(x!==34)return!1;for(e.kind="scalar",e.result="",e.position++,b=j=e.position;(x=e.input.charCodeAt(e.position))!==0;){if(x===34)return se(e,b,e.position,!0),e.position++,!0;if(x===92){if(se(e,b,e.position,!0),x=e.input.charCodeAt(++e.position),V(x))K(e,!1,m);else if(x<256&&fe[x])e.result+=he[x],e.position++;else if((a=oe(x))>0){let t=a,d=0;for(;t>0;t--)x=e.input.charCodeAt(++e.position),(a=W(x))>=0?d=(d<<4)+a:I(e,"expected hexadecimal character");e.result+=Ne(d),e.position++}else I(e,"unknown escape sequence");b=j=e.position}else V(x)?(se(e,b,j,!0),pe(e,K(e,!1,m)),b=j=e.position):e.position===e.lineStart&&Le(e)?I(e,"unexpected end of the document within a double quoted scalar"):(e.position++,O(x)||(j=e.position))}I(e,"unexpected end of the stream within a double quoted scalar")}function Pe(e,m){let b=!0,j,a,x;const t=e.tag;let d;const C=e.anchor;let v,A,N,S;const R=Object.create(null);let E,k,M,B=e.input.charCodeAt(e.position);if(B===91)v=93,S=!1,d=[];else if(B===123)v=125,S=!0,d={};else return!1;for(e.anchor!==null&&Q(e,e.anchor,d),B=e.input.charCodeAt(++e.position);B!==0;){if(K(e,!0,m),B=e.input.charCodeAt(e.position),B===v)return e.position++,e.tag=t,e.anchor=C,e.kind=S?"mapping":"sequence",e.result=d,!0;if(b?B===44&&I(e,"expected the node content, but found ','"):I(e,"missed comma between flow collection entries"),k=E=M=null,A=N=!1,B===63){const X=e.input.charCodeAt(e.position+1);F(X)&&(A=N=!0,e.position++,K(e,!0,m))}j=e.line,a=e.lineStart,x=e.position,Ie(e,m,u,!1,!0),k=e.tag,E=e.result,K(e,!0,m),B=e.input.charCodeAt(e.position),(N||e.line===j)&&B===58&&(A=!0,B=e.input.charCodeAt(++e.position),K(e,!0,m),Ie(e,m,u,!1,!0),M=e.result),S?ce(e,d,R,k,E,M,j,a,x):A?d.push(ce(e,null,R,k,E,M,j,a,x)):d.push(E),K(e,!0,m),B=e.input.charCodeAt(e.position),B===44?(b=!0,B=e.input.charCodeAt(++e.position)):b=!1}I(e,"unexpected end of the stream within a flow collection")}function Ge(e,m){let b,j=p,a=!1,x=!1,t=m,d=0,C=!1,v,A=e.input.charCodeAt(e.position);if(A===124)b=!1;else if(A===62)b=!0;else return!1;for(e.kind="scalar",e.result="";A!==0;)if(A=e.input.charCodeAt(++e.position),A===43||A===45)p===j?j=A===43?w:l:I(e,"repeat of a chomping mode identifier");else if((v=ie(A))>=0)v===0?I(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):x?I(e,"repeat of an indentation width identifier"):(t=m+v-1,x=!0);else break;if(O(A)){do A=e.input.charCodeAt(++e.position);while(O(A));if(A===35)do A=e.input.charCodeAt(++e.position);while(!V(A)&&A!==0)}for(;A!==0;){for(we(e),e.lineIndent=0,A=e.input.charCodeAt(e.position);(!x||e.lineIndent<t)&&A===32;)e.lineIndent++,A=e.input.charCodeAt(++e.position);if(!x&&e.lineIndent>t&&(t=e.lineIndent),V(A)){d++;continue}if(!x&&t===0&&I(e,"missing indentation for block scalar"),e.lineIndent<t){j===w?e.result+=n.repeat(`
|
|
11
11
|
`,a?1+d:d):j===p&&a&&(e.result+=`
|
|
12
12
|
`);break}b?O(A)?(C=!0,e.result+=n.repeat(`
|
|
13
13
|
`,a?1+d:d)):C?(C=!1,e.result+=n.repeat(`
|
|
14
14
|
`,d+1)):d===0?a&&(e.result+=" "):e.result+=n.repeat(`
|
|
15
15
|
`,d):e.result+=n.repeat(`
|
|
16
|
-
`,a?1+d:d),a=!0,x=!0,d=0;const N=e.position;for(;!V(A)&&A!==0;)A=e.input.charCodeAt(++e.position);se(e,N,e.position,!1)}return!0}function ue(e,m){const b=e.tag,j=e.anchor,a=[];let x=!1;if(e.firstTabInLine!==-1)return!1;e.anchor!==null&&Q(e,e.anchor,a);let t=e.input.charCodeAt(e.position);for(;t!==0&&(e.firstTabInLine!==-1&&(e.position=e.firstTabInLine,
|
|
17
|
-
`),e.charCodeAt(0)===65279&&(e=e.slice(1)));const b=new
|
|
16
|
+
`,a?1+d:d),a=!0,x=!0,d=0;const N=e.position;for(;!V(A)&&A!==0;)A=e.input.charCodeAt(++e.position);se(e,N,e.position,!1)}return!0}function ue(e,m){const b=e.tag,j=e.anchor,a=[];let x=!1;if(e.firstTabInLine!==-1)return!1;e.anchor!==null&&Q(e,e.anchor,a);let t=e.input.charCodeAt(e.position);for(;t!==0&&(e.firstTabInLine!==-1&&(e.position=e.firstTabInLine,I(e,"tab characters must not be used in indentation")),t===45);){const d=e.input.charCodeAt(e.position+1);if(!F(d))break;if(x=!0,e.position++,K(e,!0,-1)&&e.lineIndent<=m){a.push(null),t=e.input.charCodeAt(e.position);continue}const C=e.line;if(Ie(e,m,f,!1,!0),a.push(e.result),K(e,!0,-1),t=e.input.charCodeAt(e.position),(e.line===C||e.lineIndent>m)&&t!==0)I(e,"bad indentation of a sequence entry");else if(e.lineIndent<m)break}return x?(e.tag=b,e.anchor=j,e.kind="sequence",e.result=a,!0):!1}function qe(e,m,b){let j,a,x,t;const d=e.tag,C=e.anchor,v={},A=Object.create(null);let N=null,S=null,R=null,E=!1,k=!1;if(e.firstTabInLine!==-1)return!1;e.anchor!==null&&Q(e,e.anchor,v);let M=e.input.charCodeAt(e.position);for(;M!==0;){!E&&e.firstTabInLine!==-1&&(e.position=e.firstTabInLine,I(e,"tab characters must not be used in indentation"));const B=e.input.charCodeAt(e.position+1),X=e.line;if((M===63||M===58)&&F(B))M===63?(E&&(ce(e,v,A,N,S,null,a,x,t),N=S=R=null),k=!0,E=!0,j=!0):E?(E=!1,j=!0):I(e,"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"),e.position+=1,M=B;else{if(a=e.line,x=e.lineStart,t=e.position,!Ie(e,b,s,!1,!0))break;if(e.line===X){for(M=e.input.charCodeAt(e.position);O(M);)M=e.input.charCodeAt(++e.position);if(M===58)M=e.input.charCodeAt(++e.position),F(M)||I(e,"a whitespace character is expected after the key-value separator within a block mapping"),E&&(ce(e,v,A,N,S,null,a,x,t),N=S=R=null),k=!0,E=!1,j=!1,N=e.tag,S=e.result;else if(k)I(e,"can not read an implicit mapping pair; a colon is missed");else return e.tag=d,e.anchor=C,!0}else if(k)I(e,"can not read a block mapping entry; a multiline key may not be an implicit key");else return e.tag=d,e.anchor=C,!0}if((e.line===X||e.lineIndent>m)&&(E&&(a=e.line,x=e.lineStart,t=e.position),Ie(e,m,g,!0,j)&&(E?S=e.result:R=e.result),E||(ce(e,v,A,N,S,R,a,x,t),N=S=R=null),K(e,!0,-1),M=e.input.charCodeAt(e.position)),(e.line===X||e.lineIndent>m)&&M!==0)I(e,"bad indentation of a mapping entry");else if(e.lineIndent<m)break}return E&&ce(e,v,A,N,S,null,a,x,t),k&&(e.tag=d,e.anchor=C,e.kind="mapping",e.result=v),k}function Te(e){let m=!1,b=!1,j,a,x=e.input.charCodeAt(e.position);if(x!==33)return!1;e.tag!==null&&I(e,"duplication of a tag property"),x=e.input.charCodeAt(++e.position),x===60?(m=!0,x=e.input.charCodeAt(++e.position)):x===33?(b=!0,j="!!",x=e.input.charCodeAt(++e.position)):j="!";let t=e.position;if(m){do x=e.input.charCodeAt(++e.position);while(x!==0&&x!==62);e.position<e.length?(a=e.input.slice(t,e.position),x=e.input.charCodeAt(++e.position)):I(e,"unexpected end of the stream within a verbatim tag")}else{for(;x!==0&&!F(x);)x===33&&(b?I(e,"tag suffix cannot contain exclamation marks"):(j=e.input.slice(t-1,e.position+1),D.test(j)||I(e,"named tag handle cannot contain such characters"),b=!0,t=e.position+1)),x=e.input.charCodeAt(++e.position);a=e.input.slice(t,e.position),J.test(a)&&I(e,"tag suffix cannot contain flow indicator characters")}a&&!Y.test(a)&&I(e,"tag name cannot contain such characters: "+a);try{a=decodeURIComponent(a)}catch{I(e,"tag name is malformed: "+a)}return m?e.tag=a:c.call(e.tagMap,j)?e.tag=e.tagMap[j]+a:j==="!"?e.tag="!"+a:j==="!!"?e.tag="tag:yaml.org,2002:"+a:I(e,'undeclared tag handle "'+j+'"'),!0}function ae(e){let m=e.input.charCodeAt(e.position);if(m!==38)return!1;e.anchor!==null&&I(e,"duplication of an anchor property"),m=e.input.charCodeAt(++e.position);const b=e.position;for(;m!==0&&!F(m)&&!Z(m);)m=e.input.charCodeAt(++e.position);return e.position===b&&I(e,"name of an anchor node must contain at least one character"),e.anchor=e.input.slice(b,e.position),!0}function ye(e){let m=e.input.charCodeAt(e.position);if(m!==42)return!1;m=e.input.charCodeAt(++e.position);const b=e.position;for(;m!==0&&!F(m)&&!Z(m);)m=e.input.charCodeAt(++e.position);e.position===b&&I(e,"name of an alias node must contain at least one character");const j=e.input.slice(b,e.position);return c.call(e.anchorMap,j)||I(e,'unidentified alias "'+j+'"'),e.result=e.anchorMap[j],K(e,!0,-1),!0}function Fe(e,m,b,j){const a=Re(e);return de(e),ne(e,m),e.tag=null,e.anchor=null,e.kind=null,e.result=null,qe(e,b,j)&&e.kind==="mapping"?(Se(e),!0):(ze(e),ne(e,a),!1)}function Ie(e,m,b,j,a){let x,t,d=1,C=!1,v=!1,A=null,N,S,R;e.depth>=e.maxDepth&&I(e,"nesting exceeded maxDepth ("+e.maxDepth+")"),e.depth+=1,e.listener!==null&&e.listener("open",e),e.tag=null,e.anchor=null,e.kind=null,e.result=null;const E=x=t=g===b||f===b;if(j&&K(e,!0,-1)&&(C=!0,e.lineIndent>m?d=1:e.lineIndent===m?d=0:e.lineIndent<m&&(d=-1)),d===1)for(;;){const k=e.input.charCodeAt(e.position),M=Re(e);if(C&&(k===33&&e.tag!==null||k===38&&e.anchor!==null)||!Te(e)&&!ae(e))break;A===null&&(A=M),K(e,!0,-1)?(C=!0,t=E,e.lineIndent>m?d=1:e.lineIndent===m?d=0:e.lineIndent<m&&(d=-1)):t=!1}if(t&&(t=C||a),d===1||g===b)if(u===b||s===b?S=m:S=m+1,R=e.position-e.lineStart,d===1)if(t&&(ue(e,R)||qe(e,R,S))||Pe(e,S))v=!0;else{const k=e.input.charCodeAt(e.position);A!==null&&E&&!t&&k!==124&&k!==62&&Fe(e,A,A.position-A.lineStart,S)||x&&Ge(e,S)||ke(e,S)||_e(e,S)?v=!0:ye(e)?(v=!0,(e.tag!==null||e.anchor!==null)&&I(e,"alias node should not have any properties")):re(e,S,u===b)&&(v=!0,e.tag===null&&(e.tag="?")),e.anchor!==null&&Q(e,e.anchor,e.result)}else d===0&&(v=t&&ue(e,R));if(e.tag===null)e.anchor!==null&&Q(e,e.anchor,e.result);else if(e.tag==="?"){e.result!==null&&e.kind!=="scalar"&&I(e,'unacceptable node kind for !<?> tag; it should be "scalar", not "'+e.kind+'"');for(let k=0,M=e.implicitTypes.length;k<M;k+=1)if(N=e.implicitTypes[k],N.resolve(e.result)){e.result=N.construct(e.result),e.tag=N.tag,e.anchor!==null&&Q(e,e.anchor,e.result);break}}else if(e.tag!=="!"){if(c.call(e.typeMap[e.kind||"fallback"],e.tag))N=e.typeMap[e.kind||"fallback"][e.tag];else{N=null;const k=e.typeMap.multi[e.kind||"fallback"];for(let M=0,B=k.length;M<B;M+=1)if(e.tag.slice(0,k[M].tag.length)===k[M].tag){N=k[M];break}}N||I(e,"unknown tag !<"+e.tag+">"),e.result!==null&&N.kind!==e.kind&&I(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+N.kind+'", not "'+e.kind+'"'),N.resolve(e.result,e.tag)?(e.result=N.construct(e.result,e.tag),e.anchor!==null&&Q(e,e.anchor,e.result)):I(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")}return e.listener!==null&&e.listener("close",e),e.depth-=1,e.tag!==null||e.anchor!==null||v}function De(e){const m=e.position;let b=!1,j;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap=Object.create(null),e.anchorMap=Object.create(null);(j=e.input.charCodeAt(e.position))!==0&&(K(e,!0,-1),j=e.input.charCodeAt(e.position),!(e.lineIndent>0||j!==37));){b=!0,j=e.input.charCodeAt(++e.position);let a=e.position;for(;j!==0&&!F(j);)j=e.input.charCodeAt(++e.position);const x=e.input.slice(a,e.position),t=[];for(x.length<1&&I(e,"directive name must not be less than one character in length");j!==0;){for(;O(j);)j=e.input.charCodeAt(++e.position);if(j===35){do j=e.input.charCodeAt(++e.position);while(j!==0&&!V(j));break}if(V(j))break;for(a=e.position;j!==0&&!F(j);)j=e.input.charCodeAt(++e.position);t.push(e.input.slice(a,e.position))}j!==0&&we(e),c.call(He,x)?He[x](e,x,t):H(e,'unknown document directive "'+x+'"')}if(K(e,!0,-1),e.lineIndent===0&&e.input.charCodeAt(e.position)===45&&e.input.charCodeAt(e.position+1)===45&&e.input.charCodeAt(e.position+2)===45?(e.position+=3,K(e,!0,-1)):b&&I(e,"directives end mark is expected"),Ie(e,e.lineIndent-1,g,!1,!0),K(e,!0,-1),e.checkLineBreaks&&U.test(e.input.slice(m,e.position))&&H(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&Le(e)){e.input.charCodeAt(e.position)===46&&(e.position+=3,K(e,!0,-1));return}e.position<e.length-1&&I(e,"end of the stream or a document separator is expected")}function Ue(e,m){e=String(e),m=m||{},e.length!==0&&(e.charCodeAt(e.length-1)!==10&&e.charCodeAt(e.length-1)!==13&&(e+=`
|
|
17
|
+
`),e.charCodeAt(0)===65279&&(e=e.slice(1)));const b=new _(e,m),j=e.indexOf("\0");for(j!==-1&&(b.position=j,I(b,"null byte is not allowed in input")),b.input+="\0";b.input.charCodeAt(b.position)===32;)b.lineIndent+=1,b.position+=1;for(;b.position<b.length-1;)De(b);return b.documents}function Ke(e,m,b){m!==null&&typeof m=="object"&&typeof b>"u"&&(b=m,m=null);const j=Ue(e,b);if(typeof m!="function")return j;for(let a=0,x=j.length;a<x;a+=1)m(j[a])}function Ye(e,m){const b=Ue(e,m);if(b.length!==0){if(b.length===1)return b[0];throw new i("expected a single document in the stream, but found more")}}return pn.loadAll=Ke,pn.load=Ye,pn}var Gn={},Pt;function Hi(){if(Pt)return Gn;Pt=1;const n=dn(),i=mn(),o=Jn(),h=Object.prototype.toString,c=Object.prototype.hasOwnProperty,u=65279,s=9,f=10,g=13,p=32,l=33,w=34,P=35,U=37,J=38,D=39,Y=42,te=44,V=45,O=58,F=61,Z=62,W=63,oe=64,ie=91,Ce=93,Ne=96,Oe=123,fe=124,he=125,_={};_[0]="\\0",_[7]="\\a",_[8]="\\b",_[9]="\\t",_[10]="\\n",_[11]="\\v",_[12]="\\f",_[13]="\\r",_[27]="\\e",_[34]='\\"',_[92]="\\\\",_[133]="\\N",_[160]="\\_",_[8232]="\\L",_[8233]="\\P";const z=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],I=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;function H(t,d){if(d===null)return{};const C={},v=Object.keys(d);for(let A=0,N=v.length;A<N;A+=1){let S=v[A],R=String(d[S]);S.slice(0,2)==="!!"&&(S="tag:yaml.org,2002:"+S.slice(2));const E=t.compiledTypeMap.fallback[S];E&&c.call(E.styleAliases,R)&&(R=E.styleAliases[R]),C[S]=R}return C}function Q(t){let d,C;const v=t.toString(16).toUpperCase();if(t<=255)d="x",C=2;else if(t<=65535)d="u",C=4;else if(t<=4294967295)d="U",C=8;else throw new i("code point within a string may not be greater than 0xFFFFFFFF");return"\\"+d+n.repeat("0",C-v.length)+v}const de=1,Se=2;function ze(t){this.schema=t.schema||o,this.indent=Math.max(1,t.indent||2),this.noArrayIndent=t.noArrayIndent||!1,this.skipInvalid=t.skipInvalid||!1,this.flowLevel=n.isNothing(t.flowLevel)?-1:t.flowLevel,this.styleMap=H(this.schema,t.styles||null),this.sortKeys=t.sortKeys||!1,this.lineWidth=t.lineWidth||80,this.noRefs=t.noRefs||!1,this.noCompatMode=t.noCompatMode||!1,this.condenseFlow=t.condenseFlow||!1,this.quotingType=t.quotingType==='"'?Se:de,this.forceQuotes=t.forceQuotes||!1,this.replacer=typeof t.replacer=="function"?t.replacer:null,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result="",this.duplicates=[],this.usedDuplicates=null}function Re(t,d){const C=n.repeat(" ",d);let v=0,A="";const N=t.length;for(;v<N;){let S;const R=t.indexOf(`
|
|
18
18
|
`,v);R===-1?(S=t.slice(v),v=N):(S=t.slice(v,R+1),v=R+1),S.length&&S!==`
|
|
19
19
|
`&&(A+=C),A+=S}return A}function ne(t,d){return`
|
|
20
|
-
`+n.repeat(" ",t.indent*d)}function He(t,d){for(let C=0,v=t.implicitTypes.length;C<v;C+=1)if(t.implicitTypes[C].resolve(d))return!0;return!1}function se(t){return t===p||t===s}function me(t){return t>=32&&t<=126||t>=161&&t<=55295&&t!==8232&&t!==8233||t>=57344&&t<=65533&&t!==u||t>=65536&&t<=1114111}function ce(t){return me(t)&&t!==u&&t!==g&&t!==f}function we(t,d,C){const v=ce(t),A=v&&!se(t);return(C?v:v&&t!==te&&t!==ie&&t!==Ce&&t!==Oe&&t!==he)&&t!==
|
|
20
|
+
`+n.repeat(" ",t.indent*d)}function He(t,d){for(let C=0,v=t.implicitTypes.length;C<v;C+=1)if(t.implicitTypes[C].resolve(d))return!0;return!1}function se(t){return t===p||t===s}function me(t){return t>=32&&t<=126||t>=161&&t<=55295&&t!==8232&&t!==8233||t>=57344&&t<=65533&&t!==u||t>=65536&&t<=1114111}function ce(t){return me(t)&&t!==u&&t!==g&&t!==f}function we(t,d,C){const v=ce(t),A=v&&!se(t);return(C?v:v&&t!==te&&t!==ie&&t!==Ce&&t!==Oe&&t!==he)&&t!==P&&!(d===O&&!A)||ce(d)&&!se(d)&&t===P||d===O&&A}function K(t){return me(t)&&t!==u&&!se(t)&&t!==V&&t!==W&&t!==O&&t!==te&&t!==ie&&t!==Ce&&t!==Oe&&t!==he&&t!==P&&t!==J&&t!==Y&&t!==l&&t!==fe&&t!==F&&t!==Z&&t!==D&&t!==w&&t!==U&&t!==oe&&t!==Ne}function Le(t){return!se(t)&&t!==O}function pe(t,d){const C=t.charCodeAt(d);let v;return C>=55296&&C<=56319&&d+1<t.length&&(v=t.charCodeAt(d+1),v>=56320&&v<=57343)?(C-55296)*1024+v-56320+65536:C}function re(t){return/^\n* /.test(t)}const ke=1,_e=2,Pe=3,Ge=4,ue=5;function qe(t,d,C,v,A,N,S,R){let E,k=0,M=null,B=!1,X=!1;const on=v!==-1;let Ze=-1,Xe=K(pe(t,0))&&Le(pe(t,t.length-1));if(d||S)for(E=0;E<t.length;k>=65536?E+=2:E++){if(k=pe(t,E),!me(k))return ue;Xe=Xe&&we(k,M,R),M=k}else{for(E=0;E<t.length;k>=65536?E+=2:E++){if(k=pe(t,E),k===f)B=!0,on&&(X=X||E-Ze-1>v&&t[Ze+1]!==" ",Ze=E);else if(!me(k))return ue;Xe=Xe&&we(k,M,R),M=k}X=X||on&&E-Ze-1>v&&t[Ze+1]!==" "}return!B&&!X?Xe&&!S&&!A(t)?ke:N===Se?ue:_e:C>9&&re(t)?ue:S?N===Se?ue:_e:X?Ge:Pe}function Te(t,d,C,v,A){t.dump=(function(){if(d.length===0)return t.quotingType===Se?'""':"''";if(!t.noCompatMode&&(z.indexOf(d)!==-1||I.test(d)))return t.quotingType===Se?'"'+d+'"':"'"+d+"'";const N=t.indent*Math.max(1,C),S=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-N),R=v||t.flowLevel>-1&&C>=t.flowLevel;function E(k){return He(t,k)}switch(qe(d,R,t.indent,S,E,t.quotingType,t.forceQuotes&&!v,A)){case ke:return d;case _e:return"'"+d.replace(/'/g,"''")+"'";case Pe:return"|"+ae(d,t.indent)+ye(Re(d,N));case Ge:return">"+ae(d,t.indent)+ye(Re(Fe(d,S),N));case ue:return'"'+De(d)+'"';default:throw new i("impossible error: invalid scalar style")}})()}function ae(t,d){const C=re(t)?String(d):"",v=t[t.length-1]===`
|
|
21
21
|
`,N=v&&(t[t.length-2]===`
|
|
22
22
|
`||t===`
|
|
23
23
|
`)?"+":v?"":"-";return C+N+`
|
|
24
24
|
`}function ye(t){return t[t.length-1]===`
|
|
25
25
|
`?t.slice(0,-1):t}function Fe(t,d){const C=/(\n+)([^\n]*)/g;let v=(function(){let R=t.indexOf(`
|
|
26
|
-
`);return R=R!==-1?R:t.length,C.lastIndex=R,
|
|
26
|
+
`);return R=R!==-1?R:t.length,C.lastIndex=R,Ie(t.slice(0,R),d)})(),A=t[0]===`
|
|
27
27
|
`||t[0]===" ",N,S;for(;S=C.exec(t);){const R=S[1],E=S[2];N=E[0]===" ",v+=R+(!A&&!N&&E!==""?`
|
|
28
|
-
`:"")+
|
|
28
|
+
`:"")+Ie(E,d),A=N}return v}function Ie(t,d){if(t===""||t[0]===" ")return t;const C=/ [^ ]/g;let v,A=0,N,S=0,R=0,E="";for(;v=C.exec(t);)R=v.index,R-A>d&&(N=S>A?S:R,E+=`
|
|
29
29
|
`+t.slice(A,N),A=N+1),S=R;return E+=`
|
|
30
30
|
`,t.length-A>d&&S>A?E+=t.slice(A,S)+`
|
|
31
|
-
`+t.slice(S+1):E+=t.slice(A),E.slice(1)}function De(t){let d="",C=0;for(let v=0;v<t.length;C>=65536?v+=2:v++){C=pe(t,v);const A=
|
|
32
|
-
`:""}return Gn.dump=x,Gn}var Pt;function Yi(){if(Pt)return be;Pt=1;const n=Bi(),i=Hi();function o(h,c){return function(){throw new Error("Function yaml."+h+" is removed in js-yaml 4. Use yaml."+c+" instead, which is now safe by default.")}}return be.Type=Ae(),be.Schema=$t(),be.FAILSAFE_SCHEMA=Yt(),be.JSON_SCHEMA=Zt(),be.CORE_SCHEMA=Xt(),be.DEFAULT_SCHEMA=Jn(),be.load=n.load,be.loadAll=n.loadAll,be.dump=i.dump,be.YAMLException=mn(),be.types={binary:ei(),float:Qt(),map:Ht(),null:Gt(),pairs:ti(),set:ii(),timestamp:Jt(),bool:Kt(),int:Vt(),merge:Wt(),omap:ni(),seq:Bt(),str:zt()},be.safeLoad=o("safeLoad","load"),be.safeLoadAll=o("safeLoadAll","loadAll"),be.safeDump=o("safeDump","dump"),be}var Gi=Yi();const Ki=$i(Gi),{Type:da,Schema:ma,FAILSAFE_SCHEMA:pa,JSON_SCHEMA:fa,CORE_SCHEMA:ha,DEFAULT_SCHEMA:ga,load:xa,loadAll:ba,dump:Sa,YAMLException:ya,types:va,safeLoad:ja,safeLoadAll:Aa,safeDump:Ca}=Ki,Sn=3e3,yn=9999,an="openpond.yaml",Vi=["google","github","x"],Wn=new Set([22,2222,2375,2376,3108,5900,5901,6080,7818]),Ot=le(L().trim().min(1).max(1e3)).max(50),un=L().trim().min(1).max(4096).refine(li,{message:"path must be a relative workspace path"}),Qi=L().trim().min(1).max(500).refine(n=>!n.includes("\0")&&!/\s/.test(n),"image ref must be a single OCI reference"),Zi=L().trim().regex(/^sha256:[0-9a-f]{64}$/i),ri=L().trim().min(1).max(500).refine(n=>n.startsWith("/")&&!n.includes("\0"),"workspaceRoot must be an absolute guest path"),Xi=ee({ref:Qi,digest:Zi.optional(),registrySecretRef:L().trim().min(1).max(500).optional(),platform:bn("linux/amd64").optional(),workspaceRoot:ri.optional()}).strict(),Ji=ee({context:un.default("."),path:un.default("Dockerfile"),target:L().trim().min(1).max(191).optional(),buildArgs:Qe(L().max(191),L().max(500)).optional(),registrySecretRefs:le(L().trim().min(1).max(500)).max(10).optional(),platform:bn("linux/amd64").optional(),workspaceRoot:ri.optional()}).strict(),Wi=ee({base:L().trim().min(1).max(120).optional(),snapshot:L().trim().min(1).max(191).optional(),image:Xi.optional(),dockerfile:Ji.optional()}).strict().superRefine((n,i)=>{[n.base,n.snapshot,n.image,n.dockerfile].filter(Boolean).length!==1&&i.addIssue({code:Ee.custom,message:"runtime must declare exactly one of base, snapshot, image, or dockerfile"})}),ai=ee({cpu:ze().positive().max(8).optional(),memoryGb:ze().positive().max(32).optional(),diskGb:ze().positive().max(100).optional()}).strict(),er=ee({provider:rn(Vi),scopes:le(L().trim().min(1).max(200)).max(100).default([]),capabilities:le(L().trim().min(1).max(200)).max(100).default([])}).strict(),nr=ee({models:le(L().trim().min(1).max(200)).max(100).default([]),scopes:le(L().trim().min(1).max(200)).max(100).default([])}).strict(),tr=ee({opchat:nr.optional()}).catchall(Qe(L(),We())).default({}),ir=ee({name:L().trim().regex(/^[A-Za-z_][A-Za-z0-9_-]*$/).max(63).optional(),mountPath:L().trim().min(1).max(256).optional(),storageGb:ze().int().positive().max(100).optional(),deleteOnSandboxDelete:en().optional()}).strict(),rr=ee({port:ze().int().min(Sn).max(yn).refine(n=>!Wn.has(n),{message:"preview port is reserved"}),protocol:bn("http").default("http"),label:L().trim().min(1).max(80).optional(),access:rn(["private","public"]).default("private"),path:L().trim().min(1).max(512).refine(n=>n.startsWith("/"),{message:"preview path must start with /"}).default("/")}).strict(),oi=ee({command:L().trim().min(1).max(1e3),cwd:un.optional(),timeoutSeconds:ze().int().positive().max(86400).optional(),requiresStart:en().default(!1),ports:le(rr).max(20).default([]),artifactPaths:le(un).max(100).default([])}).strict(),Lt=oi.extend({name:L().trim().min(1).max(80)}).strict(),ar=ee({name:L().trim().min(1).max(80).optional(),service:L().trim().min(1).max(80).optional(),port:ze().int().min(Sn).max(yn).refine(n=>!Wn.has(n),{message:"app MCP port is reserved"}),path:L().trim().min(1).max(512).refine(n=>n.startsWith("/"),{message:"app MCP path must start with /"}).default("/mcp")}).strict(),or=ee({name:L().trim().min(1).max(80).optional(),port:ze().int().min(Sn).max(yn).refine(n=>!Wn.has(n),{message:"validation probe port is reserved"}),path:L().trim().min(1).max(512).refine(n=>n.startsWith("/"),{message:"validation probe path must start with /"}).default("/"),expectedStatus:ze().int().min(100).max(599).default(200)}).strict(),lr=Qe(L(),We()).refine(n=>n.type==="object","input schema must be a JSON schema object"),sr=ee({name:L().trim().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(191),required:en().default(!1),secret:en().default(!0),description:L().trim().max(500).optional()}).strict(),Kn=L().trim().min(1).max(120),cr=ee({name:L().trim().min(1).max(120),description:L().trim().max(500).optional(),cron:L().trim().min(1).max(500).optional(),rate:L().trim().min(1).max(500).optional(),once:Kn.optional(),scheduleType:rn(["rate","cron","once"]).optional(),scheduleExpression:L().trim().min(1).max(500).optional(),timezone:L().trim().min(1).max(100).optional(),enabled:en().default(!0),startAt:Kn.optional(),endAt:Kn.optional(),maxRuns:ze().int().positive().nullable().optional(),runtimePolicy:rn(["run_and_stop","run_and_archive","run_and_delete","use_existing_running"]).default("run_and_stop"),action:L().trim().min(1).max(120).optional(),actionName:L().trim().min(1).max(120).optional(),command:L().trim().min(1).max(2e3).optional(),target:ee({kind:rn(["start","action","service","command"]).optional(),name:L().trim().min(1).max(120).optional(),actionName:L().trim().min(1).max(120).optional(),command:L().trim().min(1).max(2e3).optional(),requiresStart:en().optional()}).strict().optional(),requiresStart:en().optional(),budget:ee({maxUsd:L().trim().min(1).max(40).optional()}).strict().optional(),resources:ai.optional(),quotas:Qe(L(),We()).optional(),lifecycle:Qe(L(),We()).optional(),retentionPolicy:Qe(L(),We()).optional(),env:le(ee({name:L().trim().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(191),value:L().optional(),secretRef:L().optional()}).strict()).max(100).optional(),integrationLeases:le(Qe(L(),We())).max(20).optional(),metadata:Qe(L(),We()).optional()}).strict().superRefine((n,i)=>{[n.cron,n.rate,n.once,n.scheduleExpression].filter(f=>typeof f=="string"&&f.trim()).length!==1&&i.addIssue({code:Ee.custom,path:["scheduleExpression"],message:"schedule must declare exactly one of cron, rate, once, or scheduleExpression"}),n.scheduleExpression&&!n.scheduleType&&i.addIssue({code:Ee.custom,path:["scheduleType"],message:"scheduleType is required with scheduleExpression"});const h=n.command??n.target?.command??null,c=n.target?.name??null,u=n.actionName??n.action??n.target?.actionName??(n.target?.kind==="action"?c:null),s=n.target?.kind??(h?"command":"action");s==="action"&&!u&&i.addIssue({code:Ee.custom,path:["action"],message:"schedule action target is required"}),s==="service"&&!c&&i.addIssue({code:Ee.custom,path:["target","name"],message:"schedule service target name is required"}),s==="command"&&!h&&i.addIssue({code:Ee.custom,path:["command"],message:"schedule command target is required"})});ee({schemaVersion:bn(1),name:L().trim().min(1).max(80).regex(/^[a-z0-9][a-z0-9-]*[a-z0-9]$/),version:L().trim().min(1).max(40),useCase:L().trim().min(1).max(80),description:L().trim().min(1).max(500),runtime:Wi,resources:ai.optional(),setup:ee({commands:Ot.default([])}).strict().default({commands:[]}),validation:ee({commands:Ot.min(1),probes:le(or).max(20).default([])}).strict(),start:oi,actions:le(Lt).max(20).default([]),services:le(Lt).max(20).default([]),schedules:le(cr).max(20).default([]),mcp:ee({endpoints:le(ar).max(10).default([])}).strict().default({endpoints:[]}),volumes:le(ir).max(5).default([]),integrations:ee({requiredLeases:le(er).max(20).default([])}).strict().default({requiredLeases:[]}),permissions:tr,inputs:ee({schema:lr.default({type:"object"}),env:le(sr).max(100).default([])}).strict().default({schema:{type:"object"},env:[]}),artifacts:ee({paths:le(un).max(100).default([])}).strict().default({paths:[]}),network:ee({egress:rn(["restricted","allow","block"]).default("restricted")}).strict().default({egress:"restricted"})}).strict().superRefine((n,i)=>{ur(n,i),nt(i,n.volumes.flatMap(o=>o.name?[o.name]:[]),"volume names must be unique","volumes"),dr(n,i),mr(n,i),pr(n,i),fr(n,i)});ee({path:L(),message:L(),code:L()});function et(n){return[{kind:"start",name:"start",...n.start,artifactPaths:Qn(n.start,n)},...n.actions.map(i=>({kind:"action",name:i.name,command:i.command,cwd:i.cwd,timeoutSeconds:i.timeoutSeconds,requiresStart:i.requiresStart,ports:i.ports,artifactPaths:Qn(i,n)})),...n.services.map(i=>({kind:"service",name:i.name,command:i.command,cwd:i.cwd,timeoutSeconds:i.timeoutSeconds,requiresStart:i.requiresStart,ports:i.ports,artifactPaths:Qn(i,n)}))]}function li(n){return!n.includes("\0")&&!n.startsWith("/")&&!n.split(/[\\/]+/).some(i=>i===".."||i==="")}function nt(n,i,o,h){const c=new Set;for(const u of i){if(c.has(u)){n.addIssue({code:Ee.custom,path:[h],message:o});return}c.add(u)}}function ur(n,i){const o=["start",...n.actions.map(h=>h.name),...n.services.map(h=>h.name)];nt(i,o,"start, action, and service names must be unique","actions")}function dr(n,i){const o=Vn(n.inputs.schema.properties),h=new Set(n.volumes.map(c=>c.name).filter(c=>!!c));for(const[c,u]of Object.entries(o)){const s=Vn(u),f=Vn(s["x-openpond-upload"]??s.xOpenPondUpload),g=typeof f.targetPath=="string"&&f.targetPath.trim()?f.targetPath.trim():typeof f.path=="string"&&f.path.trim()?f.path.trim():"";if(!g)continue;const p=g.replace(/^workspace\//,"").replace(/^\/+/,"").replace(/\/+$/,"");if(!li(p)){i.addIssue({code:Ee.custom,path:["inputs","schema","properties",c,"x-openpond-upload","targetPath"],message:"upload target must be a relative workspace path"});continue}const l=p.split("/");l[0]==="volumes"&&(!l[1]||!h.has(l[1]))&&i.addIssue({code:Ee.custom,path:["inputs","schema","properties",c,"x-openpond-upload","targetPath"],message:"upload target references an undeclared volume"})}}function mr(n,i){nt(i,n.inputs.env.map(o=>o.name),"env input names must be unique","inputs")}function pr(n,i){const o=new Map(n.services.map(c=>[c.name,new Set(c.ports.map(u=>u.port))])),h=new Set([...n.start.ports.map(c=>c.port),...n.services.flatMap(c=>c.ports.map(u=>u.port))]);for(const[c,u]of n.mcp.endpoints.entries()){if(u.service){const s=o.get(u.service);if(!s){i.addIssue({code:Ee.custom,path:["mcp","endpoints",c,"service"],message:`app MCP service does not exist: ${u.service}`});continue}s.has(u.port)||i.addIssue({code:Ee.custom,path:["mcp","endpoints",c,"port"],message:`app MCP port ${u.port} is not declared on service ${u.service}`});continue}h.has(u.port)||i.addIssue({code:Ee.custom,path:["mcp","endpoints",c,"port"],message:`app MCP port ${u.port} is not declared on start or services`})}}function fr(n,i){const o=new Set(n.actions.map(c=>c.name)),h=new Set(n.services.map(c=>c.name));for(const[c,u]of n.schedules.entries()){const s=u.command??u.target?.command??null;if(u.target?.kind==="command"||s)continue;const f=u.actionName??u.action??u.target?.actionName??(u.target?.kind==="action"?u.target?.name:null);if(f&&!o.has(f)&&i.addIssue({code:Ee.custom,path:["schedules",c,"action"],message:`schedule action target does not exist: ${f}`}),u.target?.kind==="service"){const g=u.target.name??"";g&&!h.has(g)&&i.addIssue({code:Ee.custom,path:["schedules",c,"target","name"],message:`schedule service target does not exist: ${g}`})}}}function Vn(n){return n&&typeof n=="object"&&!Array.isArray(n)?n:{}}function Qn(n,i){return n.artifactPaths.length>0?n.artifactPaths:i.artifacts.paths}const hr=[["path",{d:"m15 12-9.373 9.373a1 1 0 0 1-3.001-3L12 9",key:"1hayfq"}],["path",{d:"m18 15 4-4",key:"16gjal"}],["path",{d:"m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172v-.344a2 2 0 0 0-.586-1.414l-1.657-1.657A6 6 0 0 0 12.516 3H9l1.243 1.243A6 6 0 0 1 12 8.485V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5",key:"15ts47"}]],gr=ji("hammer",hr);function xr(n){const i=$e(n?.data),o=$e(i.preview);return(typeof o.url=="string"?o.url.trim():"")||null}function br(){const n=window.open("","_blank");return n?(n.document.write('<!doctype html><title>Opening sandbox preview</title><body style="margin:0;background:#05070a;color:#f5f5f4;font:14px system-ui,sans-serif;display:grid;place-items:center;height:100vh;">Opening sandbox preview...</body>'),n.document.close(),n):null}function tn(n,i){if(!i){n?.close();return}if(n){n.opener=null,n.location.href=i;return}window.open(i,"_blank","noopener,noreferrer")}function si(n){const i=Sr(n),o=yr($e(n?.resources)),h=$e($e(n?.inputs).schema),c=$e(h.properties),u=new Set(di(h.required)),s=[],f=[];for(const[g,p]of Object.entries(c)){const l=$e(p),w=$e(l["x-openpond-upload"]??l.xOpenPondUpload),T=typeof l.type=="string"?l.type:"string",U=$e(l.items),J=wr(l,w),D=l.format==="file"||w.enabled===!0||T==="array"&&U.format==="file",Y=typeof l.title=="string"&&l.title.trim()?l.title.trim():Rr(g);if(D){f.push({name:g,label:Y,required:u.has(g),multiple:T==="array"||w.multiple===!0,accept:Ir(w,l),targetPath:_r(w,g),targetNames:J});continue}(T==="string"||T==="number"||T==="integer"||T==="boolean")&&s.push({name:g,label:Y,required:u.has(g),type:T,defaultValue:typeof l.default=="string"||typeof l.default=="number"||typeof l.default=="boolean"?String(l.default):"",targetNames:J})}return{entrypoints:i,scalarInputs:s,fileInputs:f,envInputs:jr(n),resources:o,volumes:vr(n,f),schedules:Ar(n)}}function hn(n,i){const o=i.trim();return n.filter(h=>!h.targetNames||h.targetNames.length===0?!0:h.targetNames.includes(o))}function Sr(n){return n?et(n).flatMap(i=>{if(i.kind==="action")return[];const o=i.name.trim(),h=i.command.trim(),c=gn(i.timeoutSeconds),u=i.ports.flatMap(s=>{const f=gn(s.port);return f?[{port:f,label:typeof s.label=="string"&&s.label.trim()?s.label.trim():"web",access:s.access==="public"?"public":"private",path:typeof s.path=="string"&&s.path.trim()?s.path.trim():"/"}]:[]});return o&&h?[{name:o,command:h,timeoutSeconds:c,ports:u}]:[]}):[]}function yr(n){return{cpu:Zn(n.cpu)??1,memoryGb:Zn(n.memoryGb)??1,diskGb:Zn(n.diskGb)??8}}function vr(n,i){const o=Array.isArray(n?.volumes)?n.volumes:[];if(o.length>0)return o.map((u,s)=>{const f=s===0?"volume":`volume-${s+1}`,g=typeof u.name=="string"&&u.name.trim()?u.name.trim():f;return{name:g,mountPath:typeof u.mountPath=="string"&&u.mountPath.trim()?u.mountPath.trim():`/workspace/volumes/${g}`,...gn(u.storageGb)?{storageGb:gn(u.storageGb)??void 0}:{},deleteOnSandboxDelete:u.deleteOnSandboxDelete===!0}});const h=i.find(u=>u.targetPath.startsWith("volumes/"));if(!h)return[];const[,c="volume"]=h.targetPath.split("/");return[{name:c,mountPath:`/workspace/volumes/${c}`,storageGb:8,deleteOnSandboxDelete:!1}]}function jr(n){return(Array.isArray(n?.inputs.env)?n.inputs.env:[]).flatMap(o=>{const h=typeof o.name=="string"?o.name.trim():"";return h?[{name:h,required:o.required===!0,secret:o.secret!==!1,description:typeof o.description=="string"?o.description.trim():""}]:[]})}function Ar(n){return n?.schedules?.length?n.schedules.flatMap(i=>{const o=typeof i.name=="string"?i.name.trim():"",h=Cr(i);if(!o||!h.scheduleExpression)return[];try{return[{name:o,...typeof i.description=="string"&&i.description.trim()?{description:i.description.trim()}:{},enabled:!1,...h,...typeof i.timezone=="string"&&i.timezone.trim()?{timezone:i.timezone.trim()}:{},...typeof i.startAt=="string"&&i.startAt.trim()?{startAt:i.startAt.trim()}:{},...typeof i.endAt=="string"&&i.endAt.trim()?{endAt:i.endAt.trim()}:{},...typeof i.maxRuns=="number"&&Number.isInteger(i.maxRuns)&&i.maxRuns>0?{maxRuns:i.maxRuns}:{},runtimePolicy:i.runtimePolicy,target:Nr(n,i),...i.budget?{budget:i.budget}:{},...i.resources?{resources:i.resources}:{},...i.quotas?{quotas:i.quotas}:{},...i.lifecycle?{lifecycle:i.lifecycle}:{},...i.retentionPolicy?{retentionPolicy:i.retentionPolicy}:{},...i.env?{env:i.env}:{},...i.integrationLeases?{integrationLeases:i.integrationLeases}:{},metadata:{...$e(i.metadata),manifestScheduleName:o,source:"openpond-app-sandbox-template-start"}}]}catch{return[]}}):[]}function Cr(n){return n.scheduleExpression?{scheduleType:n.scheduleType??"cron",scheduleExpression:n.scheduleExpression}:n.rate?{scheduleType:"rate",scheduleExpression:/^rate\(/i.test(n.rate)?n.rate:`rate(${n.rate})`}:n.once?{scheduleType:"once",scheduleExpression:/^at\(/i.test(n.once)?n.once:`at(${n.once})`}:{scheduleType:"cron",scheduleExpression:n.cron??""}}function Nr(n,i){const o=i.command??i.target?.command??null;if(o)return{kind:"command",command:o,requiresStart:i.requiresStart??i.target?.requiresStart??!1};const h=i.target?.kind??"action";if(h==="start")return{kind:"command",command:n.start.command,requiresStart:i.requiresStart??i.target?.requiresStart??n.start.requiresStart??!1};if(h==="service"){const s=i.target?.name??"",f=n.services.find(g=>g.name===s);if(!f)throw new Error("schedule_service_target_missing");return{kind:"command",command:f.command,requiresStart:i.requiresStart??i.target?.requiresStart??f.requiresStart??!1}}const c=i.actionName??i.action??i.target?.actionName??(i.target?.kind==="action"?i.target?.name:void 0),u=n.actions.find(s=>s.name===c);if(!u)throw new Error("schedule_action_target_missing");return{kind:"command",command:u.command,requiresStart:i.requiresStart??i.target?.requiresStart??u.requiresStart??!1}}function ci(n,i){return n.flatMap(o=>{const h=(i[o.name]??"").trim();return h?[{name:o.name,secretRef:h}]:[]})}function ui(n,i){const o={};for(const h of n){const c=i[h.name]??"";if(!(!c.trim()&&!h.required))if(h.type==="boolean")o[h.name]=c==="true";else if(h.type==="number"||h.type==="integer"){const u=Number(c);Number.isFinite(u)&&(o[h.name]=h.type==="integer"?Math.trunc(u):u)}else o[h.name]=c}return o}function wr(n,i){const o=n["x-openpond-targets"]??n.xOpenPondTargets??i.targets??i.actions,h=di(o).map(c=>c.trim()).filter(Boolean);return h.length>0?[...new Set(h)]:null}function Ir(n,i){return typeof n.accept=="string"?n.accept.trim():Array.isArray(n.accept)?n.accept.filter(o=>typeof o=="string").join(","):typeof i.accept=="string"?i.accept.trim():""}function _r(n,i){return(typeof n.targetPath=="string"&&n.targetPath.trim()?n.targetPath.trim():typeof n.path=="string"&&n.path.trim()?n.path.trim():`uploads/${i}`).replace(/^\/+/,"").replace(/^workspace\//,"").replace(/\/+$/,"")}function Zn(n){const i=Number(n);return Number.isFinite(i)&&i>0?i:null}function gn(n){const i=Number(n);return Number.isInteger(i)&&i>0?i:null}function Er(n,i){return[i,...n.slice(1)]}function di(n){return Array.isArray(n)?n.filter(i=>typeof i=="string"):[]}function Rr(n){return n.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[-_]+/g," ").replace(/\b\w/g,i=>i.toUpperCase())}function $e(n){return n&&typeof n=="object"&&!Array.isArray(n)?n:{}}function Tr({busy:n,defaultRepoUrl:i,projectName:o,commitBeforeCreate:h,templateManifest:c,uploadBeforeCreate:u,onClose:s,onSubmit:f}){const g=q.useMemo(()=>si(c),[c]),p=g.entrypoints[0]??null,[l,w]=q.useState(i),[T,U]=q.useState(p?.name??""),[J,D]=q.useState(p?.command??""),[Y,te]=q.useState(p?.timeoutSeconds?String(p.timeoutSeconds):""),[V,O]=q.useState(`Update ${o}`),[F,Z]=q.useState("0.05"),[W,oe]=q.useState(()=>Object.fromEntries(g.scalarInputs.map(a=>[a.name,a.defaultValue]))),[ie,Ce]=q.useState(()=>Object.fromEntries(g.envInputs.map(a=>[a.name,""]))),[Ne,Oe]=q.useState({}),fe=g.volumes[0]??null,[he,I]=q.useState(g.volumes.length>0||g.fileInputs.length>0),[B,_]=q.useState(fe?.name??"volume"),[H,Q]=q.useState(fe?.mountPath??"/workspace/volumes/volume"),[de,Se]=q.useState(String(fe?.storageGb??8)),[Be,Re]=q.useState(!(fe?.deleteOnSandboxDelete??!1)),[ne,He]=q.useState(g.schedules),se=g.entrypoints.find(a=>a.name===T)??p,me=se?.ports??[],ce=me[0]??null,[we,K]=q.useState(!!ce),[Le,pe]=q.useState(ce?String(ce.port):""),re=Number(Le),ke=Number(F),Ie=Number(de),Te=Number(Y),Ge=!Y.trim()||Number.isInteger(Te)&&Te>0&&Te<=86400,ue=!we||Number.isInteger(re)&&re>=Sn&&re<=yn&&me.some(a=>a.port===re),qe=Number.isFinite(ke)&&ke>0,Pe=!he||Number.isInteger(Ie)&&Ie>0,ae=ne.every(a=>!a.enabled||!!a.scheduleExpression.trim()),ye=hn(g.scalarInputs,T),Fe=hn(g.fileInputs,T),_e=g.envInputs.every(a=>!a.required||!!(ie[a.name]??"").trim()),De=g.envInputs.filter(a=>a.required&&!(ie[a.name]??"").trim()),Ue=(u||!!l.trim())&&!!J.trim()&&qe&&Ge&&Pe&&ye.every(a=>!a.required||!!(W[a.name]??"").trim())&&Fe.every(a=>!a.required||(Ne[a.name]?.length??0)>0)&&_e&&ae&&ue;function Ke(a){U(a);const x=g.entrypoints.find(d=>d.name===a);if(!x)return;D(x.command),te(x.timeoutSeconds?String(x.timeoutSeconds):"");const t=x.ports[0]??null;pe(t?String(t.port):""),K(!!t)}function Ye(a,x){oe(t=>({...t,[a]:x}))}function e(a,x){Ce(t=>({...t,[a]:x}))}function m(a,x){const t=Array.from(x.target.files??[]);Oe(d=>({...d,[a.name]:a.multiple?t:t.slice(0,1)}))}function b(a,x){He(t=>t.map((d,C)=>C===a?{...d,...x}:d))}function j(a){a.preventDefault(),!(!Ue||n)&&f({repoUrl:l.trim(),command:J.trim(),entrypointName:T,commitMessage:V.trim(),budgetUsd:F.trim(),params:ui(ye,W),env:ci(g.envInputs,ie),timeoutSeconds:Y.trim()&&Number.isInteger(Te)?Te:se?.timeoutSeconds??null,uploads:Fe.flatMap(x=>{const t=Ne[x.name]??[];return t.length>0?[{inputName:x.name,label:x.label,targetPath:x.targetPath,multiple:x.multiple,files:t}]:[]}),resources:g.resources,volumes:he?Er(g.volumes,{...B.trim()?{name:B.trim()}:{},...H.trim()?{mountPath:H.trim()}:{},...Number.isInteger(Ie)&&Ie>0?{storageGb:Ie}:{},deleteOnSandboxDelete:!Be}):[],schedules:ne.filter(x=>x.enabled),openPreview:we,previewPort:we?re:null,previewLabel:me.find(x=>x.port===re)?.label??"web",previewAccess:me.find(x=>x.port===re)?.access??"private"})}return r.jsx("div",{className:"git-dialog-backdrop",role:"presentation",children:r.jsxs("form",{className:"git-dialog run-once-dialog sandbox-start-dialog",role:"dialog","aria-modal":"true","aria-label":"Start sandbox",onSubmit:j,children:[r.jsx("button",{className:"git-dialog-close",disabled:n,type:"button",title:"Close","aria-label":"Close",onClick:s,children:r.jsx(Ut,{size:15})}),r.jsxs("div",{className:"sandbox-start-dialog-heading",children:[r.jsx("div",{className:"git-dialog-icon",children:r.jsx(sn,{size:18})}),r.jsx("h2",{children:"Start sandbox"}),r.jsxs("div",{className:"git-dialog-row",children:[r.jsx("span",{children:"Project"}),r.jsx("strong",{children:o})]})]}),r.jsxs("div",{className:"sandbox-start-dialog-body",children:[u?null:r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:"Repository"}),r.jsx("input",{disabled:n,value:l,onChange:a=>w(a.target.value)})]}),h?r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:"Commit message"}),r.jsx("input",{disabled:n,value:V,onChange:a=>O(a.target.value)})]}):null,g.entrypoints.length>0?r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:"Run target"}),r.jsx("select",{disabled:n,value:T,onChange:a=>Ke(a.target.value),children:g.entrypoints.map(a=>r.jsx("option",{value:a.name,children:a.name},a.name))})]}):null,r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:"Shell command"}),r.jsx("input",{disabled:n,value:J,onChange:a=>D(a.target.value)})]}),r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:"Timeout seconds"}),r.jsx("input",{disabled:n,inputMode:"numeric",value:Y,onChange:a=>te(a.target.value)})]}),ye.map(a=>a.type==="boolean"?r.jsxs("label",{className:"git-dialog-toggle",children:[r.jsx("input",{checked:(W[a.name]??"")==="true",disabled:n,type:"checkbox",onChange:x=>Ye(a.name,x.target.checked?"true":"false")}),r.jsx("span",{}),a.label]},a.name):r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:a.label}),r.jsx("input",{disabled:n,inputMode:a.type==="number"||a.type==="integer"?"decimal":void 0,value:W[a.name]??"",onChange:x=>Ye(a.name,x.target.value)})]},a.name)),Fe.map(a=>r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:a.label}),r.jsx("input",{accept:a.accept||void 0,disabled:n,multiple:a.multiple,type:"file",onChange:x=>m(a,x)})]},a.name)),g.envInputs.length>0?r.jsxs("div",{className:"sandbox-start-env-section",children:[r.jsx("div",{className:"sandbox-start-section-title",children:"Environment"}),De.length>0?r.jsxs("p",{className:"sandbox-start-env-warning",role:"status",children:["Required sandbox secret ref missing: ",De.map(a=>a.name).join(", ")]}):null,g.envInputs.map(a=>{const x=ie[a.name]??"",t=a.required&&!x.trim(),d=`sandbox-env-${a.name}-description`;return r.jsxs("label",{className:"git-dialog-field",children:[r.jsxs("span",{children:[a.name,a.required?" *":""]}),r.jsx("input",{"aria-describedby":d,"aria-invalid":t,disabled:n,placeholder:"openpond://secret/...",value:x,onChange:C=>e(a.name,C.target.value)}),r.jsx("small",{id:d,children:t?"Add a sandbox secret ref before starting.":a.description||"Sandbox secret ref only."})]},a.name)})]}):null,Fe.length>0||g.volumes.length>0?r.jsxs(r.Fragment,{children:[r.jsxs("label",{className:"git-dialog-toggle",children:[r.jsx("input",{checked:he,disabled:n,type:"checkbox",onChange:a=>I(a.target.checked)}),r.jsx("span",{}),"Mount volume"]}),he?r.jsxs(r.Fragment,{children:[r.jsxs("div",{className:"run-once-dialog-grid",children:[r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:"Volume"}),r.jsx("input",{disabled:n,value:B,onChange:a=>_(a.target.value)})]}),r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:"Storage GiB"}),r.jsx("input",{disabled:n,inputMode:"numeric",value:de,onChange:a=>Se(a.target.value)})]})]}),r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:"Mount path"}),r.jsx("input",{disabled:n,value:H,onChange:a=>Q(a.target.value)})]}),r.jsxs("label",{className:"git-dialog-toggle",children:[r.jsx("input",{checked:Be,disabled:n,type:"checkbox",onChange:a=>Re(a.target.checked)}),r.jsx("span",{}),"Keep volume"]})]}):null]}):null,ne.length>0?r.jsxs("div",{className:"sandbox-start-schedules",children:[r.jsx("div",{className:"sandbox-start-section-title",children:"Schedules"}),ne.map((a,x)=>r.jsxs("div",{className:"sandbox-start-schedule-row",children:[r.jsxs("label",{className:"git-dialog-toggle",children:[r.jsx("input",{checked:a.enabled,disabled:n,type:"checkbox",onChange:t=>b(x,{enabled:t.target.checked})}),r.jsx("span",{}),a.name]}),r.jsxs("div",{className:"run-once-dialog-grid",children:[r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:"Type"}),r.jsxs("select",{disabled:n||!a.enabled,value:a.scheduleType,onChange:t=>b(x,{scheduleType:t.target.value}),children:[r.jsx("option",{value:"rate",children:"Rate"}),r.jsx("option",{value:"cron",children:"Cron"}),r.jsx("option",{value:"once",children:"Once"})]})]}),r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:"Max runs"}),r.jsx("input",{disabled:n||!a.enabled,inputMode:"numeric",value:a.maxRuns??"",onChange:t=>{const d=Number(t.target.value);b(x,{maxRuns:Number.isInteger(d)&&d>0?d:null})}})]})]}),r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:"Expression"}),r.jsx("input",{disabled:n||!a.enabled,value:a.scheduleExpression,onChange:t=>b(x,{scheduleExpression:t.target.value})})]})]},a.name))]}):null,r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:"Budget"}),r.jsx("input",{disabled:n,inputMode:"decimal",value:F,onChange:a=>Z(a.target.value)})]}),me.length>0?r.jsxs(r.Fragment,{children:[r.jsxs("label",{className:"git-dialog-toggle",children:[r.jsx("input",{checked:we,disabled:n,type:"checkbox",onChange:a=>K(a.target.checked)}),r.jsx("span",{}),"Open preview"]}),r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:"Preview port"}),r.jsx("select",{disabled:n||!we,value:Le,onChange:a=>pe(a.target.value),children:me.map(a=>r.jsx("option",{value:a.port,children:a.label?`${a.label} (${a.port})`:a.port},a.port))})]})]}):null]}),r.jsxs("div",{className:"git-dialog-footer sandbox-start-dialog-footer",children:[r.jsx("button",{className:"git-dialog-secondary",disabled:n,type:"button",onClick:s,children:"Cancel"}),r.jsxs("button",{className:"git-dialog-primary",disabled:n||!Ue,title:_e?void 0:"Required sandbox secret refs are missing.",type:"submit",children:[r.jsx(Ai,{size:14}),"Start"]})]})]})})}function Pr({busy:n,projectName:i,templateManifest:o,onClose:h,onSubmit:c}){const u=q.useMemo(()=>si(o),[o]),s=q.useMemo(()=>o?et(o).filter(I=>I.kind==="action"):[],[o]),f=s[0]??null,[g,p]=q.useState("sandbox"),[l,w]=q.useState(f?.name??""),[T,U]=q.useState(()=>Object.fromEntries(u.scalarInputs.map(I=>[I.name,I.defaultValue]))),[J,D]=q.useState(()=>Object.fromEntries(u.envInputs.map(I=>[I.name,""]))),[Y,te]=q.useState({}),V=hn(u.scalarInputs,l),O=hn(u.fileInputs,l),F=g==="sandbox"?u.envInputs:[],Z=V.every(I=>!I.required||!!(T[I.name]??"").trim()),W=O.every(I=>!I.required||(Y[I.name]?.length??0)>0),oe=F.every(I=>!I.required||!!(J[I.name]??"").trim()),ie=F.filter(I=>I.required&&!(J[I.name]??"").trim()),Ce=!!l&&Z&&W&&oe;function Ne(I,B){U(_=>({..._,[I]:B}))}function Oe(I,B){D(_=>({..._,[I]:B}))}function fe(I,B,_){const H=Array.from(_.target.files??[]);te(Q=>({...Q,[I]:B?H:H.slice(0,1)}))}function he(I){I.preventDefault(),!(!Ce||n)&&c({mode:g,target:l,params:ui(V,T),env:g==="sandbox"?ci(F,J):[],uploads:O.flatMap(B=>{const _=Y[B.name]??[];return _.length>0?[{inputName:B.name,label:B.label,targetPath:B.targetPath,multiple:B.multiple,files:_}]:[]})})}return r.jsx("div",{className:"git-dialog-backdrop",role:"presentation",children:r.jsxs("form",{className:"git-dialog run-once-dialog sandbox-start-dialog",role:"dialog","aria-modal":"true","aria-label":"Run sandbox action",onSubmit:he,children:[r.jsx("button",{className:"git-dialog-close",disabled:n,type:"button",title:"Close","aria-label":"Close",onClick:h,children:r.jsx(Ut,{size:15})}),r.jsxs("div",{className:"sandbox-start-dialog-heading",children:[r.jsx("div",{className:"git-dialog-icon",children:r.jsx(cn,{size:18})}),r.jsx("h2",{children:"Run action"}),r.jsxs("div",{className:"git-dialog-row",children:[r.jsx("span",{children:"Project"}),r.jsx("strong",{children:i})]})]}),r.jsxs("div",{className:"sandbox-start-dialog-body",children:[r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:"Action"}),r.jsx("select",{disabled:n||s.length===0,value:l,onChange:I=>w(I.target.value),children:s.map(I=>r.jsx("option",{value:I.name,children:I.name},I.name))})]}),r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:"Run on"}),r.jsxs("select",{disabled:n,value:g,onChange:I=>p(I.target.value==="local"?"local":"sandbox"),children:[r.jsx("option",{value:"sandbox",children:"Hosted sandbox (start/update)"}),r.jsx("option",{value:"local",children:"Local machine"})]})]}),V.map(I=>I.type==="boolean"?r.jsxs("label",{className:"git-dialog-toggle",children:[r.jsx("input",{checked:(T[I.name]??"")==="true",disabled:n,type:"checkbox",onChange:B=>Ne(I.name,B.target.checked?"true":"false")}),r.jsx("span",{}),I.label]},I.name):r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:I.label}),r.jsx("input",{disabled:n,inputMode:I.type==="number"||I.type==="integer"?"decimal":void 0,value:T[I.name]??"",onChange:B=>Ne(I.name,B.target.value)})]},I.name)),O.map(I=>r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:I.label}),r.jsx("input",{accept:I.accept||void 0,disabled:n,multiple:I.multiple,type:"file",onChange:B=>fe(I.name,I.multiple,B)})]},I.name)),F.length>0?r.jsxs("div",{className:"sandbox-start-env-section",children:[r.jsx("div",{className:"sandbox-start-section-title",children:"Environment"}),ie.length>0?r.jsxs("p",{className:"sandbox-start-env-warning",role:"status",children:["Required sandbox secret ref missing: ",ie.map(I=>I.name).join(", ")]}):null,F.map(I=>{const B=J[I.name]??"",_=I.required&&!B.trim(),H=`sandbox-action-env-${I.name}-description`;return r.jsxs("label",{className:"git-dialog-field",children:[r.jsxs("span",{children:[I.name,I.required?" *":""]}),r.jsx("input",{"aria-describedby":H,"aria-invalid":_,disabled:n,placeholder:"openpond://secret/...",value:B,onChange:Q=>Oe(I.name,Q.target.value)}),r.jsx("small",{id:H,children:_?"Add a sandbox secret ref before running.":I.description||"Sandbox secret ref only."})]},I.name)})]}):null]}),r.jsxs("div",{className:"git-dialog-footer sandbox-start-dialog-footer",children:[r.jsx("button",{className:"git-dialog-secondary",disabled:n,type:"button",onClick:h,children:"Cancel"}),r.jsxs("button",{className:"git-dialog-primary",disabled:n||!Ce,title:oe?void 0:"Required sandbox secret refs are missing.",type:"submit",children:[r.jsx(cn,{size:14}),"Run"]})]})]})})}function mi(n,i){const o=n.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"agent";return i==="cron"?`name: ${o}
|
|
31
|
+
`+t.slice(S+1):E+=t.slice(A),E.slice(1)}function De(t){let d="",C=0;for(let v=0;v<t.length;C>=65536?v+=2:v++){C=pe(t,v);const A=_[C];!A&&me(C)?(d+=t[v],C>=65536&&(d+=t[v+1])):d+=A||Q(C)}return d}function Ue(t,d,C){let v="";const A=t.tag;for(let N=0,S=C.length;N<S;N+=1){let R=C[N];t.replacer&&(R=t.replacer.call(C,String(N),R)),(b(t,d,R,!1,!1)||typeof R>"u"&&b(t,d,null,!1,!1))&&(v!==""&&(v+=","+(t.condenseFlow?"":" ")),v+=t.dump)}t.tag=A,t.dump="["+v+"]"}function Ke(t,d,C,v){let A="";const N=t.tag;for(let S=0,R=C.length;S<R;S+=1){let E=C[S];t.replacer&&(E=t.replacer.call(C,String(S),E)),(b(t,d+1,E,!0,!0,!1,!0)||typeof E>"u"&&b(t,d+1,null,!0,!0,!1,!0))&&((!v||A!=="")&&(A+=ne(t,d)),t.dump&&f===t.dump.charCodeAt(0)?A+="-":A+="- ",A+=t.dump)}t.tag=N,t.dump=A||"[]"}function Ye(t,d,C){let v="";const A=t.tag,N=Object.keys(C);for(let S=0,R=N.length;S<R;S+=1){let E="";v!==""&&(E+=", "),t.condenseFlow&&(E+='"');const k=N[S];let M=C[k];t.replacer&&(M=t.replacer.call(C,k,M)),b(t,d,k,!1,!1)&&(t.dump.length>1024&&(E+="? "),E+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),b(t,d,M,!1,!1)&&(E+=t.dump,v+=E))}t.tag=A,t.dump="{"+v+"}"}function e(t,d,C,v){let A="";const N=t.tag,S=Object.keys(C);if(t.sortKeys===!0)S.sort();else if(typeof t.sortKeys=="function")S.sort(t.sortKeys);else if(t.sortKeys)throw new i("sortKeys must be a boolean or a function");for(let R=0,E=S.length;R<E;R+=1){let k="";(!v||A!=="")&&(k+=ne(t,d));const M=S[R];let B=C[M];if(t.replacer&&(B=t.replacer.call(C,M,B)),!b(t,d+1,M,!0,!0,!0))continue;const X=t.tag!==null&&t.tag!=="?"||t.dump&&t.dump.length>1024;X&&(t.dump&&f===t.dump.charCodeAt(0)?k+="?":k+="? "),k+=t.dump,X&&(k+=ne(t,d)),b(t,d+1,B,!0,X)&&(t.dump&&f===t.dump.charCodeAt(0)?k+=":":k+=": ",k+=t.dump,A+=k)}t.tag=N,t.dump=A||"{}"}function m(t,d,C){const v=C?t.explicitTypes:t.implicitTypes;for(let A=0,N=v.length;A<N;A+=1){const S=v[A];if((S.instanceOf||S.predicate)&&(!S.instanceOf||typeof d=="object"&&d instanceof S.instanceOf)&&(!S.predicate||S.predicate(d))){if(C?S.multi&&S.representName?t.tag=S.representName(d):t.tag=S.tag:t.tag="?",S.represent){const R=t.styleMap[S.tag]||S.defaultStyle;let E;if(h.call(S.represent)==="[object Function]")E=S.represent(d,R);else if(c.call(S.represent,R))E=S.represent[R](d,R);else throw new i("!<"+S.tag+'> tag resolver accepts not "'+R+'" style');t.dump=E}return!0}}return!1}function b(t,d,C,v,A,N,S){t.tag=null,t.dump=C,m(t,C,!1)||m(t,C,!0);const R=h.call(t.dump),E=v;v&&(v=t.flowLevel<0||t.flowLevel>d);const k=R==="[object Object]"||R==="[object Array]";let M,B;if(k&&(M=t.duplicates.indexOf(C),B=M!==-1),(t.tag!==null&&t.tag!=="?"||B||t.indent!==2&&d>0)&&(A=!1),B&&t.usedDuplicates[M])t.dump="*ref_"+M;else{if(k&&B&&!t.usedDuplicates[M]&&(t.usedDuplicates[M]=!0),R==="[object Object]")v&&Object.keys(t.dump).length!==0?(e(t,d,t.dump,A),B&&(t.dump="&ref_"+M+t.dump)):(Ye(t,d,t.dump),B&&(t.dump="&ref_"+M+" "+t.dump));else if(R==="[object Array]")v&&t.dump.length!==0?(t.noArrayIndent&&!S&&d>0?Ke(t,d-1,t.dump,A):Ke(t,d,t.dump,A),B&&(t.dump="&ref_"+M+t.dump)):(Ue(t,d,t.dump),B&&(t.dump="&ref_"+M+" "+t.dump));else if(R==="[object String]")t.tag!=="?"&&Te(t,t.dump,d,N,E);else{if(R==="[object Undefined]")return!1;if(t.skipInvalid)return!1;throw new i("unacceptable kind of an object to dump "+R)}if(t.tag!==null&&t.tag!=="?"){let X=encodeURI(t.tag[0]==="!"?t.tag.slice(1):t.tag).replace(/!/g,"%21");t.tag[0]==="!"?X="!"+X:X.slice(0,18)==="tag:yaml.org,2002:"?X="!!"+X.slice(18):X="!<"+X+">",t.dump=X+" "+t.dump}}return!0}function j(t,d){const C=[],v=[];a(t,C,v);const A=v.length;for(let N=0;N<A;N+=1)d.duplicates.push(C[v[N]]);d.usedDuplicates=new Array(A)}function a(t,d,C){if(t!==null&&typeof t=="object"){const v=d.indexOf(t);if(v!==-1)C.indexOf(v)===-1&&C.push(v);else if(d.push(t),Array.isArray(t))for(let A=0,N=t.length;A<N;A+=1)a(t[A],d,C);else{const A=Object.keys(t);for(let N=0,S=A.length;N<S;N+=1)a(t[A[N]],d,C)}}}function x(t,d){d=d||{};const C=new ze(d);C.noRefs||j(t,C);let v=t;return C.replacer&&(v=C.replacer.call({"":v},"",v)),b(C,0,v,!0,!0)?C.dump+`
|
|
32
|
+
`:""}return Gn.dump=x,Gn}var Tt;function Yi(){if(Tt)return be;Tt=1;const n=zi(),i=Hi();function o(h,c){return function(){throw new Error("Function yaml."+h+" is removed in js-yaml 4. Use yaml."+c+" instead, which is now safe by default.")}}return be.Type=Ae(),be.Schema=$t(),be.FAILSAFE_SCHEMA=Yt(),be.JSON_SCHEMA=Zt(),be.CORE_SCHEMA=Xt(),be.DEFAULT_SCHEMA=Jn(),be.load=n.load,be.loadAll=n.loadAll,be.dump=i.dump,be.YAMLException=mn(),be.types={binary:ei(),float:Qt(),map:Ht(),null:Gt(),pairs:ti(),set:ii(),timestamp:Jt(),bool:Kt(),int:Vt(),merge:Wt(),omap:ni(),seq:zt(),str:Bt()},be.safeLoad=o("safeLoad","load"),be.safeLoadAll=o("safeLoadAll","loadAll"),be.safeDump=o("safeDump","dump"),be}var Gi=Yi();const Ki=$i(Gi),{Type:da,Schema:ma,FAILSAFE_SCHEMA:pa,JSON_SCHEMA:fa,CORE_SCHEMA:ha,DEFAULT_SCHEMA:ga,load:xa,loadAll:ba,dump:Sa,YAMLException:ya,types:va,safeLoad:ja,safeLoadAll:Aa,safeDump:Ca}=Ki,Sn=3e3,yn=9999,an="openpond.yaml",Vi=["google","github","x"],Wn=new Set([22,2222,2375,2376,3108,5900,5901,6080,7818]),Ot=le(L().trim().min(1).max(1e3)).max(50),un=L().trim().min(1).max(4096).refine(li,{message:"path must be a relative workspace path"}),Qi=L().trim().min(1).max(500).refine(n=>!n.includes("\0")&&!/\s/.test(n),"image ref must be a single OCI reference"),Zi=L().trim().regex(/^sha256:[0-9a-f]{64}$/i),ri=L().trim().min(1).max(500).refine(n=>n.startsWith("/")&&!n.includes("\0"),"workspaceRoot must be an absolute guest path"),Xi=ee({ref:Qi,digest:Zi.optional(),registrySecretRef:L().trim().min(1).max(500).optional(),platform:bn("linux/amd64").optional(),workspaceRoot:ri.optional()}).strict(),Ji=ee({context:un.default("."),path:un.default("Dockerfile"),target:L().trim().min(1).max(191).optional(),buildArgs:Qe(L().max(191),L().max(500)).optional(),registrySecretRefs:le(L().trim().min(1).max(500)).max(10).optional(),platform:bn("linux/amd64").optional(),workspaceRoot:ri.optional()}).strict(),Wi=ee({base:L().trim().min(1).max(120).optional(),snapshot:L().trim().min(1).max(191).optional(),image:Xi.optional(),dockerfile:Ji.optional()}).strict().superRefine((n,i)=>{[n.base,n.snapshot,n.image,n.dockerfile].filter(Boolean).length!==1&&i.addIssue({code:Ee.custom,message:"runtime must declare exactly one of base, snapshot, image, or dockerfile"})}),ai=ee({cpu:Be().positive().max(8).optional(),memoryGb:Be().positive().max(32).optional(),diskGb:Be().positive().max(100).optional()}).strict(),er=ee({provider:rn(Vi),scopes:le(L().trim().min(1).max(200)).max(100).default([]),capabilities:le(L().trim().min(1).max(200)).max(100).default([])}).strict(),nr=ee({models:le(L().trim().min(1).max(200)).max(100).default([]),scopes:le(L().trim().min(1).max(200)).max(100).default([])}).strict(),tr=ee({opchat:nr.optional()}).catchall(Qe(L(),We())).default({}),ir=ee({name:L().trim().regex(/^[A-Za-z_][A-Za-z0-9_-]*$/).max(63).optional(),mountPath:L().trim().min(1).max(256).optional(),storageGb:Be().int().positive().max(100).optional(),deleteOnSandboxDelete:en().optional()}).strict(),rr=ee({port:Be().int().min(Sn).max(yn).refine(n=>!Wn.has(n),{message:"preview port is reserved"}),protocol:bn("http").default("http"),label:L().trim().min(1).max(80).optional(),access:rn(["private","public"]).default("private"),path:L().trim().min(1).max(512).refine(n=>n.startsWith("/"),{message:"preview path must start with /"}).default("/")}).strict(),oi=ee({command:L().trim().min(1).max(1e3),cwd:un.optional(),timeoutSeconds:Be().int().positive().max(86400).optional(),requiresStart:en().default(!1),ports:le(rr).max(20).default([]),artifactPaths:le(un).max(100).default([])}).strict(),Lt=oi.extend({name:L().trim().min(1).max(80)}).strict(),ar=ee({name:L().trim().min(1).max(80).optional(),service:L().trim().min(1).max(80).optional(),port:Be().int().min(Sn).max(yn).refine(n=>!Wn.has(n),{message:"app MCP port is reserved"}),path:L().trim().min(1).max(512).refine(n=>n.startsWith("/"),{message:"app MCP path must start with /"}).default("/mcp")}).strict(),or=ee({name:L().trim().min(1).max(80).optional(),port:Be().int().min(Sn).max(yn).refine(n=>!Wn.has(n),{message:"validation probe port is reserved"}),path:L().trim().min(1).max(512).refine(n=>n.startsWith("/"),{message:"validation probe path must start with /"}).default("/"),expectedStatus:Be().int().min(100).max(599).default(200)}).strict(),lr=Qe(L(),We()).refine(n=>n.type==="object","input schema must be a JSON schema object"),sr=ee({name:L().trim().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(191),required:en().default(!1),secret:en().default(!0),description:L().trim().max(500).optional()}).strict(),Kn=L().trim().min(1).max(120),cr=ee({name:L().trim().min(1).max(120),description:L().trim().max(500).optional(),cron:L().trim().min(1).max(500).optional(),rate:L().trim().min(1).max(500).optional(),once:Kn.optional(),scheduleType:rn(["rate","cron","once"]).optional(),scheduleExpression:L().trim().min(1).max(500).optional(),timezone:L().trim().min(1).max(100).optional(),enabled:en().default(!0),startAt:Kn.optional(),endAt:Kn.optional(),maxRuns:Be().int().positive().nullable().optional(),runtimePolicy:rn(["run_and_stop","run_and_archive","run_and_delete","use_existing_running"]).default("run_and_stop"),action:L().trim().min(1).max(120).optional(),actionName:L().trim().min(1).max(120).optional(),command:L().trim().min(1).max(2e3).optional(),target:ee({kind:rn(["start","action","service","command"]).optional(),name:L().trim().min(1).max(120).optional(),actionName:L().trim().min(1).max(120).optional(),command:L().trim().min(1).max(2e3).optional(),requiresStart:en().optional()}).strict().optional(),requiresStart:en().optional(),budget:ee({maxUsd:L().trim().min(1).max(40).optional()}).strict().optional(),resources:ai.optional(),quotas:Qe(L(),We()).optional(),lifecycle:Qe(L(),We()).optional(),retentionPolicy:Qe(L(),We()).optional(),env:le(ee({name:L().trim().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(191),value:L().optional(),secretRef:L().optional()}).strict()).max(100).optional(),integrationLeases:le(Qe(L(),We())).max(20).optional(),metadata:Qe(L(),We()).optional()}).strict().superRefine((n,i)=>{[n.cron,n.rate,n.once,n.scheduleExpression].filter(f=>typeof f=="string"&&f.trim()).length!==1&&i.addIssue({code:Ee.custom,path:["scheduleExpression"],message:"schedule must declare exactly one of cron, rate, once, or scheduleExpression"}),n.scheduleExpression&&!n.scheduleType&&i.addIssue({code:Ee.custom,path:["scheduleType"],message:"scheduleType is required with scheduleExpression"});const h=n.command??n.target?.command??null,c=n.target?.name??null,u=n.actionName??n.action??n.target?.actionName??(n.target?.kind==="action"?c:null),s=n.target?.kind??(h?"command":"action");s==="action"&&!u&&i.addIssue({code:Ee.custom,path:["action"],message:"schedule action target is required"}),s==="service"&&!c&&i.addIssue({code:Ee.custom,path:["target","name"],message:"schedule service target name is required"}),s==="command"&&!h&&i.addIssue({code:Ee.custom,path:["command"],message:"schedule command target is required"})});ee({schemaVersion:bn(1),name:L().trim().min(1).max(80).regex(/^[a-z0-9][a-z0-9-]*[a-z0-9]$/),version:L().trim().min(1).max(40),useCase:L().trim().min(1).max(80),description:L().trim().min(1).max(500),runtime:Wi,resources:ai.optional(),setup:ee({commands:Ot.default([])}).strict().default({commands:[]}),validation:ee({commands:Ot.min(1),probes:le(or).max(20).default([])}).strict(),start:oi,actions:le(Lt).max(20).default([]),services:le(Lt).max(20).default([]),schedules:le(cr).max(20).default([]),mcp:ee({endpoints:le(ar).max(10).default([])}).strict().default({endpoints:[]}),volumes:le(ir).max(5).default([]),integrations:ee({requiredLeases:le(er).max(20).default([])}).strict().default({requiredLeases:[]}),permissions:tr,inputs:ee({schema:lr.default({type:"object"}),env:le(sr).max(100).default([])}).strict().default({schema:{type:"object"},env:[]}),artifacts:ee({paths:le(un).max(100).default([])}).strict().default({paths:[]}),network:ee({egress:rn(["restricted","allow","block"]).default("restricted")}).strict().default({egress:"restricted"})}).strict().superRefine((n,i)=>{ur(n,i),nt(i,n.volumes.flatMap(o=>o.name?[o.name]:[]),"volume names must be unique","volumes"),dr(n,i),mr(n,i),pr(n,i),fr(n,i)});ee({path:L(),message:L(),code:L()});function et(n){return[{kind:"start",name:"start",...n.start,artifactPaths:Qn(n.start,n)},...n.actions.map(i=>({kind:"action",name:i.name,command:i.command,cwd:i.cwd,timeoutSeconds:i.timeoutSeconds,requiresStart:i.requiresStart,ports:i.ports,artifactPaths:Qn(i,n)})),...n.services.map(i=>({kind:"service",name:i.name,command:i.command,cwd:i.cwd,timeoutSeconds:i.timeoutSeconds,requiresStart:i.requiresStart,ports:i.ports,artifactPaths:Qn(i,n)}))]}function li(n){return!n.includes("\0")&&!n.startsWith("/")&&!n.split(/[\\/]+/).some(i=>i===".."||i==="")}function nt(n,i,o,h){const c=new Set;for(const u of i){if(c.has(u)){n.addIssue({code:Ee.custom,path:[h],message:o});return}c.add(u)}}function ur(n,i){const o=["start",...n.actions.map(h=>h.name),...n.services.map(h=>h.name)];nt(i,o,"start, action, and service names must be unique","actions")}function dr(n,i){const o=Vn(n.inputs.schema.properties),h=new Set(n.volumes.map(c=>c.name).filter(c=>!!c));for(const[c,u]of Object.entries(o)){const s=Vn(u),f=Vn(s["x-openpond-upload"]??s.xOpenPondUpload),g=typeof f.targetPath=="string"&&f.targetPath.trim()?f.targetPath.trim():typeof f.path=="string"&&f.path.trim()?f.path.trim():"";if(!g)continue;const p=g.replace(/^workspace\//,"").replace(/^\/+/,"").replace(/\/+$/,"");if(!li(p)){i.addIssue({code:Ee.custom,path:["inputs","schema","properties",c,"x-openpond-upload","targetPath"],message:"upload target must be a relative workspace path"});continue}const l=p.split("/");l[0]==="volumes"&&(!l[1]||!h.has(l[1]))&&i.addIssue({code:Ee.custom,path:["inputs","schema","properties",c,"x-openpond-upload","targetPath"],message:"upload target references an undeclared volume"})}}function mr(n,i){nt(i,n.inputs.env.map(o=>o.name),"env input names must be unique","inputs")}function pr(n,i){const o=new Map(n.services.map(c=>[c.name,new Set(c.ports.map(u=>u.port))])),h=new Set([...n.start.ports.map(c=>c.port),...n.services.flatMap(c=>c.ports.map(u=>u.port))]);for(const[c,u]of n.mcp.endpoints.entries()){if(u.service){const s=o.get(u.service);if(!s){i.addIssue({code:Ee.custom,path:["mcp","endpoints",c,"service"],message:`app MCP service does not exist: ${u.service}`});continue}s.has(u.port)||i.addIssue({code:Ee.custom,path:["mcp","endpoints",c,"port"],message:`app MCP port ${u.port} is not declared on service ${u.service}`});continue}h.has(u.port)||i.addIssue({code:Ee.custom,path:["mcp","endpoints",c,"port"],message:`app MCP port ${u.port} is not declared on start or services`})}}function fr(n,i){const o=new Set(n.actions.map(c=>c.name)),h=new Set(n.services.map(c=>c.name));for(const[c,u]of n.schedules.entries()){const s=u.command??u.target?.command??null;if(u.target?.kind==="command"||s)continue;const f=u.actionName??u.action??u.target?.actionName??(u.target?.kind==="action"?u.target?.name:null);if(f&&!o.has(f)&&i.addIssue({code:Ee.custom,path:["schedules",c,"action"],message:`schedule action target does not exist: ${f}`}),u.target?.kind==="service"){const g=u.target.name??"";g&&!h.has(g)&&i.addIssue({code:Ee.custom,path:["schedules",c,"target","name"],message:`schedule service target does not exist: ${g}`})}}}function Vn(n){return n&&typeof n=="object"&&!Array.isArray(n)?n:{}}function Qn(n,i){return n.artifactPaths.length>0?n.artifactPaths:i.artifacts.paths}const hr=[["path",{d:"m15 12-9.373 9.373a1 1 0 0 1-3.001-3L12 9",key:"1hayfq"}],["path",{d:"m18 15 4-4",key:"16gjal"}],["path",{d:"m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172v-.344a2 2 0 0 0-.586-1.414l-1.657-1.657A6 6 0 0 0 12.516 3H9l1.243 1.243A6 6 0 0 1 12 8.485V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5",key:"15ts47"}]],gr=ji("hammer",hr);function xr(n){const i=$e(n?.data),o=$e(i.preview);return(typeof o.url=="string"?o.url.trim():"")||null}function br(){const n=window.open("","_blank");return n?(n.document.write('<!doctype html><title>Opening sandbox preview</title><body style="margin:0;background:#05070a;color:#f5f5f4;font:14px system-ui,sans-serif;display:grid;place-items:center;height:100vh;">Opening sandbox preview...</body>'),n.document.close(),n):null}function tn(n,i){if(!i){n?.close();return}if(n){n.opener=null,n.location.href=i;return}window.open(i,"_blank","noopener,noreferrer")}function si(n){const i=Sr(n),o=yr($e(n?.resources)),h=$e($e(n?.inputs).schema),c=$e(h.properties),u=new Set(di(h.required)),s=[],f=[];for(const[g,p]of Object.entries(c)){const l=$e(p),w=$e(l["x-openpond-upload"]??l.xOpenPondUpload),P=typeof l.type=="string"?l.type:"string",U=$e(l.items),J=wr(l,w),D=l.format==="file"||w.enabled===!0||P==="array"&&U.format==="file",Y=typeof l.title=="string"&&l.title.trim()?l.title.trim():Rr(g);if(D){f.push({name:g,label:Y,required:u.has(g),multiple:P==="array"||w.multiple===!0,accept:_r(w,l),targetPath:Ir(w,g),targetNames:J});continue}(P==="string"||P==="number"||P==="integer"||P==="boolean")&&s.push({name:g,label:Y,required:u.has(g),type:P,defaultValue:typeof l.default=="string"||typeof l.default=="number"||typeof l.default=="boolean"?String(l.default):"",targetNames:J})}return{entrypoints:i,scalarInputs:s,fileInputs:f,envInputs:jr(n),resources:o,volumes:vr(n,f),schedules:Ar(n)}}function hn(n,i){const o=i.trim();return n.filter(h=>!h.targetNames||h.targetNames.length===0?!0:h.targetNames.includes(o))}function Sr(n){return n?et(n).flatMap(i=>{if(i.kind==="action")return[];const o=i.name.trim(),h=i.command.trim(),c=gn(i.timeoutSeconds),u=i.ports.flatMap(s=>{const f=gn(s.port);return f?[{port:f,label:typeof s.label=="string"&&s.label.trim()?s.label.trim():"web",access:s.access==="public"?"public":"private",path:typeof s.path=="string"&&s.path.trim()?s.path.trim():"/"}]:[]});return o&&h?[{name:o,command:h,timeoutSeconds:c,ports:u}]:[]}):[]}function yr(n){return{cpu:Zn(n.cpu)??1,memoryGb:Zn(n.memoryGb)??1,diskGb:Zn(n.diskGb)??8}}function vr(n,i){const o=Array.isArray(n?.volumes)?n.volumes:[];if(o.length>0)return o.map((u,s)=>{const f=s===0?"volume":`volume-${s+1}`,g=typeof u.name=="string"&&u.name.trim()?u.name.trim():f;return{name:g,mountPath:typeof u.mountPath=="string"&&u.mountPath.trim()?u.mountPath.trim():`/workspace/volumes/${g}`,...gn(u.storageGb)?{storageGb:gn(u.storageGb)??void 0}:{},deleteOnSandboxDelete:u.deleteOnSandboxDelete===!0}});const h=i.find(u=>u.targetPath.startsWith("volumes/"));if(!h)return[];const[,c="volume"]=h.targetPath.split("/");return[{name:c,mountPath:`/workspace/volumes/${c}`,storageGb:8,deleteOnSandboxDelete:!1}]}function jr(n){return(Array.isArray(n?.inputs.env)?n.inputs.env:[]).flatMap(o=>{const h=typeof o.name=="string"?o.name.trim():"";return h?[{name:h,required:o.required===!0,secret:o.secret!==!1,description:typeof o.description=="string"?o.description.trim():""}]:[]})}function Ar(n){return n?.schedules?.length?n.schedules.flatMap(i=>{const o=typeof i.name=="string"?i.name.trim():"",h=Cr(i);if(!o||!h.scheduleExpression)return[];try{return[{name:o,...typeof i.description=="string"&&i.description.trim()?{description:i.description.trim()}:{},enabled:!1,...h,...typeof i.timezone=="string"&&i.timezone.trim()?{timezone:i.timezone.trim()}:{},...typeof i.startAt=="string"&&i.startAt.trim()?{startAt:i.startAt.trim()}:{},...typeof i.endAt=="string"&&i.endAt.trim()?{endAt:i.endAt.trim()}:{},...typeof i.maxRuns=="number"&&Number.isInteger(i.maxRuns)&&i.maxRuns>0?{maxRuns:i.maxRuns}:{},runtimePolicy:i.runtimePolicy,target:Nr(n,i),...i.budget?{budget:i.budget}:{},...i.resources?{resources:i.resources}:{},...i.quotas?{quotas:i.quotas}:{},...i.lifecycle?{lifecycle:i.lifecycle}:{},...i.retentionPolicy?{retentionPolicy:i.retentionPolicy}:{},...i.env?{env:i.env}:{},...i.integrationLeases?{integrationLeases:i.integrationLeases}:{},metadata:{...$e(i.metadata),manifestScheduleName:o,source:"openpond-app-sandbox-template-start"}}]}catch{return[]}}):[]}function Cr(n){return n.scheduleExpression?{scheduleType:n.scheduleType??"cron",scheduleExpression:n.scheduleExpression}:n.rate?{scheduleType:"rate",scheduleExpression:/^rate\(/i.test(n.rate)?n.rate:`rate(${n.rate})`}:n.once?{scheduleType:"once",scheduleExpression:/^at\(/i.test(n.once)?n.once:`at(${n.once})`}:{scheduleType:"cron",scheduleExpression:n.cron??""}}function Nr(n,i){const o=i.command??i.target?.command??null;if(o)return{kind:"command",command:o,requiresStart:i.requiresStart??i.target?.requiresStart??!1};const h=i.target?.kind??"action";if(h==="start")return{kind:"command",command:n.start.command,requiresStart:i.requiresStart??i.target?.requiresStart??n.start.requiresStart??!1};if(h==="service"){const s=i.target?.name??"",f=n.services.find(g=>g.name===s);if(!f)throw new Error("schedule_service_target_missing");return{kind:"command",command:f.command,requiresStart:i.requiresStart??i.target?.requiresStart??f.requiresStart??!1}}const c=i.actionName??i.action??i.target?.actionName??(i.target?.kind==="action"?i.target?.name:void 0),u=n.actions.find(s=>s.name===c);if(!u)throw new Error("schedule_action_target_missing");return{kind:"command",command:u.command,requiresStart:i.requiresStart??i.target?.requiresStart??u.requiresStart??!1}}function ci(n,i){return n.flatMap(o=>{const h=(i[o.name]??"").trim();return h?[{name:o.name,secretRef:h}]:[]})}function ui(n,i){const o={};for(const h of n){const c=i[h.name]??"";if(!(!c.trim()&&!h.required))if(h.type==="boolean")o[h.name]=c==="true";else if(h.type==="number"||h.type==="integer"){const u=Number(c);Number.isFinite(u)&&(o[h.name]=h.type==="integer"?Math.trunc(u):u)}else o[h.name]=c}return o}function wr(n,i){const o=n["x-openpond-targets"]??n.xOpenPondTargets??i.targets??i.actions,h=di(o).map(c=>c.trim()).filter(Boolean);return h.length>0?[...new Set(h)]:null}function _r(n,i){return typeof n.accept=="string"?n.accept.trim():Array.isArray(n.accept)?n.accept.filter(o=>typeof o=="string").join(","):typeof i.accept=="string"?i.accept.trim():""}function Ir(n,i){return(typeof n.targetPath=="string"&&n.targetPath.trim()?n.targetPath.trim():typeof n.path=="string"&&n.path.trim()?n.path.trim():`uploads/${i}`).replace(/^\/+/,"").replace(/^workspace\//,"").replace(/\/+$/,"")}function Zn(n){const i=Number(n);return Number.isFinite(i)&&i>0?i:null}function gn(n){const i=Number(n);return Number.isInteger(i)&&i>0?i:null}function Er(n,i){return[i,...n.slice(1)]}function di(n){return Array.isArray(n)?n.filter(i=>typeof i=="string"):[]}function Rr(n){return n.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[-_]+/g," ").replace(/\b\w/g,i=>i.toUpperCase())}function $e(n){return n&&typeof n=="object"&&!Array.isArray(n)?n:{}}function Pr({busy:n,defaultRepoUrl:i,projectName:o,commitBeforeCreate:h,templateManifest:c,uploadBeforeCreate:u,onClose:s,onSubmit:f}){const g=q.useMemo(()=>si(c),[c]),p=g.entrypoints[0]??null,[l,w]=q.useState(i),[P,U]=q.useState(p?.name??""),[J,D]=q.useState(p?.command??""),[Y,te]=q.useState(p?.timeoutSeconds?String(p.timeoutSeconds):""),[V,O]=q.useState(`Update ${o}`),[F,Z]=q.useState("0.05"),[W,oe]=q.useState(()=>Object.fromEntries(g.scalarInputs.map(a=>[a.name,a.defaultValue]))),[ie,Ce]=q.useState(()=>Object.fromEntries(g.envInputs.map(a=>[a.name,""]))),[Ne,Oe]=q.useState({}),fe=g.volumes[0]??null,[he,_]=q.useState(g.volumes.length>0||g.fileInputs.length>0),[z,I]=q.useState(fe?.name??"volume"),[H,Q]=q.useState(fe?.mountPath??"/workspace/volumes/volume"),[de,Se]=q.useState(String(fe?.storageGb??8)),[ze,Re]=q.useState(!(fe?.deleteOnSandboxDelete??!1)),[ne,He]=q.useState(g.schedules),se=g.entrypoints.find(a=>a.name===P)??p,me=se?.ports??[],ce=me[0]??null,[we,K]=q.useState(!!ce),[Le,pe]=q.useState(ce?String(ce.port):""),re=Number(Le),ke=Number(F),_e=Number(de),Pe=Number(Y),Ge=!Y.trim()||Number.isInteger(Pe)&&Pe>0&&Pe<=86400,ue=!we||Number.isInteger(re)&&re>=Sn&&re<=yn&&me.some(a=>a.port===re),qe=Number.isFinite(ke)&&ke>0,Te=!he||Number.isInteger(_e)&&_e>0,ae=ne.every(a=>!a.enabled||!!a.scheduleExpression.trim()),ye=hn(g.scalarInputs,P),Fe=hn(g.fileInputs,P),Ie=g.envInputs.every(a=>!a.required||!!(ie[a.name]??"").trim()),De=g.envInputs.filter(a=>a.required&&!(ie[a.name]??"").trim()),Ue=(u||!!l.trim())&&!!J.trim()&&qe&&Ge&&Te&&ye.every(a=>!a.required||!!(W[a.name]??"").trim())&&Fe.every(a=>!a.required||(Ne[a.name]?.length??0)>0)&&Ie&&ae&&ue;function Ke(a){U(a);const x=g.entrypoints.find(d=>d.name===a);if(!x)return;D(x.command),te(x.timeoutSeconds?String(x.timeoutSeconds):"");const t=x.ports[0]??null;pe(t?String(t.port):""),K(!!t)}function Ye(a,x){oe(t=>({...t,[a]:x}))}function e(a,x){Ce(t=>({...t,[a]:x}))}function m(a,x){const t=Array.from(x.target.files??[]);Oe(d=>({...d,[a.name]:a.multiple?t:t.slice(0,1)}))}function b(a,x){He(t=>t.map((d,C)=>C===a?{...d,...x}:d))}function j(a){a.preventDefault(),!(!Ue||n)&&f({repoUrl:l.trim(),command:J.trim(),entrypointName:P,commitMessage:V.trim(),budgetUsd:F.trim(),params:ui(ye,W),env:ci(g.envInputs,ie),timeoutSeconds:Y.trim()&&Number.isInteger(Pe)?Pe:se?.timeoutSeconds??null,uploads:Fe.flatMap(x=>{const t=Ne[x.name]??[];return t.length>0?[{inputName:x.name,label:x.label,targetPath:x.targetPath,multiple:x.multiple,files:t}]:[]}),resources:g.resources,volumes:he?Er(g.volumes,{...z.trim()?{name:z.trim()}:{},...H.trim()?{mountPath:H.trim()}:{},...Number.isInteger(_e)&&_e>0?{storageGb:_e}:{},deleteOnSandboxDelete:!ze}):[],schedules:ne.filter(x=>x.enabled),openPreview:we,previewPort:we?re:null,previewLabel:me.find(x=>x.port===re)?.label??"web",previewAccess:me.find(x=>x.port===re)?.access??"private"})}return r.jsx("div",{className:"git-dialog-backdrop",role:"presentation",children:r.jsxs("form",{className:"git-dialog run-once-dialog sandbox-start-dialog",role:"dialog","aria-modal":"true","aria-label":"Start sandbox",onSubmit:j,children:[r.jsx("button",{className:"git-dialog-close",disabled:n,type:"button",title:"Close","aria-label":"Close",onClick:s,children:r.jsx(Ut,{size:15})}),r.jsxs("div",{className:"sandbox-start-dialog-heading",children:[r.jsx("div",{className:"git-dialog-icon",children:r.jsx(sn,{size:18})}),r.jsx("h2",{children:"Start sandbox"}),r.jsxs("div",{className:"git-dialog-row",children:[r.jsx("span",{children:"Project"}),r.jsx("strong",{children:o})]})]}),r.jsxs("div",{className:"sandbox-start-dialog-body",children:[u?null:r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:"Repository"}),r.jsx("input",{disabled:n,value:l,onChange:a=>w(a.target.value)})]}),h?r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:"Commit message"}),r.jsx("input",{disabled:n,value:V,onChange:a=>O(a.target.value)})]}):null,g.entrypoints.length>0?r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:"Run target"}),r.jsx("select",{disabled:n,value:P,onChange:a=>Ke(a.target.value),children:g.entrypoints.map(a=>r.jsx("option",{value:a.name,children:a.name},a.name))})]}):null,r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:"Shell command"}),r.jsx("input",{disabled:n,value:J,onChange:a=>D(a.target.value)})]}),r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:"Timeout seconds"}),r.jsx("input",{disabled:n,inputMode:"numeric",value:Y,onChange:a=>te(a.target.value)})]}),ye.map(a=>a.type==="boolean"?r.jsxs("label",{className:"git-dialog-toggle",children:[r.jsx("input",{checked:(W[a.name]??"")==="true",disabled:n,type:"checkbox",onChange:x=>Ye(a.name,x.target.checked?"true":"false")}),r.jsx("span",{}),a.label]},a.name):r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:a.label}),r.jsx("input",{disabled:n,inputMode:a.type==="number"||a.type==="integer"?"decimal":void 0,value:W[a.name]??"",onChange:x=>Ye(a.name,x.target.value)})]},a.name)),Fe.map(a=>r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:a.label}),r.jsx("input",{accept:a.accept||void 0,disabled:n,multiple:a.multiple,type:"file",onChange:x=>m(a,x)})]},a.name)),g.envInputs.length>0?r.jsxs("div",{className:"sandbox-start-env-section",children:[r.jsx("div",{className:"sandbox-start-section-title",children:"Environment"}),De.length>0?r.jsxs("p",{className:"sandbox-start-env-warning",role:"status",children:["Required sandbox secret ref missing: ",De.map(a=>a.name).join(", ")]}):null,g.envInputs.map(a=>{const x=ie[a.name]??"",t=a.required&&!x.trim(),d=`sandbox-env-${a.name}-description`;return r.jsxs("label",{className:"git-dialog-field",children:[r.jsxs("span",{children:[a.name,a.required?" *":""]}),r.jsx("input",{"aria-describedby":d,"aria-invalid":t,disabled:n,placeholder:"openpond://secret/...",value:x,onChange:C=>e(a.name,C.target.value)}),r.jsx("small",{id:d,children:t?"Add a sandbox secret ref before starting.":a.description||"Sandbox secret ref only."})]},a.name)})]}):null,Fe.length>0||g.volumes.length>0?r.jsxs(r.Fragment,{children:[r.jsxs("label",{className:"git-dialog-toggle",children:[r.jsx("input",{checked:he,disabled:n,type:"checkbox",onChange:a=>_(a.target.checked)}),r.jsx("span",{}),"Mount volume"]}),he?r.jsxs(r.Fragment,{children:[r.jsxs("div",{className:"run-once-dialog-grid",children:[r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:"Volume"}),r.jsx("input",{disabled:n,value:z,onChange:a=>I(a.target.value)})]}),r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:"Storage GiB"}),r.jsx("input",{disabled:n,inputMode:"numeric",value:de,onChange:a=>Se(a.target.value)})]})]}),r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:"Mount path"}),r.jsx("input",{disabled:n,value:H,onChange:a=>Q(a.target.value)})]}),r.jsxs("label",{className:"git-dialog-toggle",children:[r.jsx("input",{checked:ze,disabled:n,type:"checkbox",onChange:a=>Re(a.target.checked)}),r.jsx("span",{}),"Keep volume"]})]}):null]}):null,ne.length>0?r.jsxs("div",{className:"sandbox-start-schedules",children:[r.jsx("div",{className:"sandbox-start-section-title",children:"Schedules"}),ne.map((a,x)=>r.jsxs("div",{className:"sandbox-start-schedule-row",children:[r.jsxs("label",{className:"git-dialog-toggle",children:[r.jsx("input",{checked:a.enabled,disabled:n,type:"checkbox",onChange:t=>b(x,{enabled:t.target.checked})}),r.jsx("span",{}),a.name]}),r.jsxs("div",{className:"run-once-dialog-grid",children:[r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:"Type"}),r.jsxs("select",{disabled:n||!a.enabled,value:a.scheduleType,onChange:t=>b(x,{scheduleType:t.target.value}),children:[r.jsx("option",{value:"rate",children:"Rate"}),r.jsx("option",{value:"cron",children:"Cron"}),r.jsx("option",{value:"once",children:"Once"})]})]}),r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:"Max runs"}),r.jsx("input",{disabled:n||!a.enabled,inputMode:"numeric",value:a.maxRuns??"",onChange:t=>{const d=Number(t.target.value);b(x,{maxRuns:Number.isInteger(d)&&d>0?d:null})}})]})]}),r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:"Expression"}),r.jsx("input",{disabled:n||!a.enabled,value:a.scheduleExpression,onChange:t=>b(x,{scheduleExpression:t.target.value})})]})]},a.name))]}):null,r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:"Budget"}),r.jsx("input",{disabled:n,inputMode:"decimal",value:F,onChange:a=>Z(a.target.value)})]}),me.length>0?r.jsxs(r.Fragment,{children:[r.jsxs("label",{className:"git-dialog-toggle",children:[r.jsx("input",{checked:we,disabled:n,type:"checkbox",onChange:a=>K(a.target.checked)}),r.jsx("span",{}),"Open preview"]}),r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:"Preview port"}),r.jsx("select",{disabled:n||!we,value:Le,onChange:a=>pe(a.target.value),children:me.map(a=>r.jsx("option",{value:a.port,children:a.label?`${a.label} (${a.port})`:a.port},a.port))})]})]}):null]}),r.jsxs("div",{className:"git-dialog-footer sandbox-start-dialog-footer",children:[r.jsx("button",{className:"git-dialog-secondary",disabled:n,type:"button",onClick:s,children:"Cancel"}),r.jsxs("button",{className:"git-dialog-primary",disabled:n||!Ue,title:Ie?void 0:"Required sandbox secret refs are missing.",type:"submit",children:[r.jsx(Ai,{size:14}),"Start"]})]})]})})}function Tr({busy:n,projectName:i,templateManifest:o,onClose:h,onSubmit:c}){const u=q.useMemo(()=>si(o),[o]),s=q.useMemo(()=>o?et(o).filter(_=>_.kind==="action"):[],[o]),f=s[0]??null,[g,p]=q.useState("sandbox"),[l,w]=q.useState(f?.name??""),[P,U]=q.useState(()=>Object.fromEntries(u.scalarInputs.map(_=>[_.name,_.defaultValue]))),[J,D]=q.useState(()=>Object.fromEntries(u.envInputs.map(_=>[_.name,""]))),[Y,te]=q.useState({}),V=hn(u.scalarInputs,l),O=hn(u.fileInputs,l),F=g==="sandbox"?u.envInputs:[],Z=V.every(_=>!_.required||!!(P[_.name]??"").trim()),W=O.every(_=>!_.required||(Y[_.name]?.length??0)>0),oe=F.every(_=>!_.required||!!(J[_.name]??"").trim()),ie=F.filter(_=>_.required&&!(J[_.name]??"").trim()),Ce=!!l&&Z&&W&&oe;function Ne(_,z){U(I=>({...I,[_]:z}))}function Oe(_,z){D(I=>({...I,[_]:z}))}function fe(_,z,I){const H=Array.from(I.target.files??[]);te(Q=>({...Q,[_]:z?H:H.slice(0,1)}))}function he(_){_.preventDefault(),!(!Ce||n)&&c({mode:g,target:l,params:ui(V,P),env:g==="sandbox"?ci(F,J):[],uploads:O.flatMap(z=>{const I=Y[z.name]??[];return I.length>0?[{inputName:z.name,label:z.label,targetPath:z.targetPath,multiple:z.multiple,files:I}]:[]})})}return r.jsx("div",{className:"git-dialog-backdrop",role:"presentation",children:r.jsxs("form",{className:"git-dialog run-once-dialog sandbox-start-dialog",role:"dialog","aria-modal":"true","aria-label":"Run sandbox action",onSubmit:he,children:[r.jsx("button",{className:"git-dialog-close",disabled:n,type:"button",title:"Close","aria-label":"Close",onClick:h,children:r.jsx(Ut,{size:15})}),r.jsxs("div",{className:"sandbox-start-dialog-heading",children:[r.jsx("div",{className:"git-dialog-icon",children:r.jsx(cn,{size:18})}),r.jsx("h2",{children:"Run action"}),r.jsxs("div",{className:"git-dialog-row",children:[r.jsx("span",{children:"Project"}),r.jsx("strong",{children:i})]})]}),r.jsxs("div",{className:"sandbox-start-dialog-body",children:[r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:"Action"}),r.jsx("select",{disabled:n||s.length===0,value:l,onChange:_=>w(_.target.value),children:s.map(_=>r.jsx("option",{value:_.name,children:_.name},_.name))})]}),r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:"Run on"}),r.jsxs("select",{disabled:n,value:g,onChange:_=>p(_.target.value==="local"?"local":"sandbox"),children:[r.jsx("option",{value:"sandbox",children:"Hosted sandbox (start/update)"}),r.jsx("option",{value:"local",children:"Local machine"})]})]}),V.map(_=>_.type==="boolean"?r.jsxs("label",{className:"git-dialog-toggle",children:[r.jsx("input",{checked:(P[_.name]??"")==="true",disabled:n,type:"checkbox",onChange:z=>Ne(_.name,z.target.checked?"true":"false")}),r.jsx("span",{}),_.label]},_.name):r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:_.label}),r.jsx("input",{disabled:n,inputMode:_.type==="number"||_.type==="integer"?"decimal":void 0,value:P[_.name]??"",onChange:z=>Ne(_.name,z.target.value)})]},_.name)),O.map(_=>r.jsxs("label",{className:"git-dialog-field",children:[r.jsx("span",{children:_.label}),r.jsx("input",{accept:_.accept||void 0,disabled:n,multiple:_.multiple,type:"file",onChange:z=>fe(_.name,_.multiple,z)})]},_.name)),F.length>0?r.jsxs("div",{className:"sandbox-start-env-section",children:[r.jsx("div",{className:"sandbox-start-section-title",children:"Environment"}),ie.length>0?r.jsxs("p",{className:"sandbox-start-env-warning",role:"status",children:["Required sandbox secret ref missing: ",ie.map(_=>_.name).join(", ")]}):null,F.map(_=>{const z=J[_.name]??"",I=_.required&&!z.trim(),H=`sandbox-action-env-${_.name}-description`;return r.jsxs("label",{className:"git-dialog-field",children:[r.jsxs("span",{children:[_.name,_.required?" *":""]}),r.jsx("input",{"aria-describedby":H,"aria-invalid":I,disabled:n,placeholder:"openpond://secret/...",value:z,onChange:Q=>Oe(_.name,Q.target.value)}),r.jsx("small",{id:H,children:I?"Add a sandbox secret ref before running.":_.description||"Sandbox secret ref only."})]},_.name)})]}):null]}),r.jsxs("div",{className:"git-dialog-footer sandbox-start-dialog-footer",children:[r.jsx("button",{className:"git-dialog-secondary",disabled:n,type:"button",onClick:h,children:"Cancel"}),r.jsxs("button",{className:"git-dialog-primary",disabled:n||!Ce,title:oe?void 0:"Required sandbox secret refs are missing.",type:"submit",children:[r.jsx(cn,{size:14}),"Run"]})]})]})})}function mi(n,i){const o=n.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"agent";return i==="cron"?`name: ${o}
|
|
33
33
|
version: 0.1.0
|
|
34
34
|
useCase: scheduled_report
|
|
35
35
|
start:
|
|
@@ -59,5 +59,5 @@ start:
|
|
|
59
59
|
command: pnpm start
|
|
60
60
|
actions:
|
|
61
61
|
- name: hello
|
|
62
|
-
command: pnpm hello`}function Or(n,i){return i||(n==="missing_config"?`${an} missing`:n==="needs_project"?"Local config is ready":n==="needs_sync"?"Project needs manifest sync":n==="needs_agent"?"Project is synced":n==="ready"?"Agent is ready":"Setup unavailable")}function Lr(n){return n?.source==="openpond"?"OpenPond Git":n?.source==="github"?"GitHub":n?.source==="local_git"?"Local Git":n?.source==="local_folder"?"Local folder":"Workspace"}function kr(n){const i=xn(n.data),o=xn(i.remote);return(typeof o.remoteUrl=="string"?o.remoteUrl.trim():"")||null}function Mr(n){const i=xn(n.data),o=xn(i.sandbox);return(typeof o.id=="string"?o.id.trim():"")||null}function kt(n){return n?typeof n.metadata?.name=="string"&&n.metadata.name.trim()?n.metadata.name.trim():n.projectId?`Project sandbox ${Xn(n.id)}`:n.agentId?`Agent sandbox ${Xn(n.id)}`:`Sandbox ${Xn(n.id)}`:null}function qr(n,i){return{sourceSandboxId:i,name:n.name,...n.description?{description:n.description}:{},scheduleType:n.scheduleType,scheduleExpression:n.scheduleExpression,enabled:!0,...n.timezone?{timezone:n.timezone}:{},...n.startAt?{startAt:n.startAt}:{},...n.endAt?{endAt:n.endAt}:{},...n.maxRuns!==void 0?{maxRuns:n.maxRuns}:{},...n.runtimePolicy?{runtimePolicy:n.runtimePolicy}:{},target:n.target,...n.budget?{budget:n.budget}:{},...n.resources?{resources:n.resources}:{},...n.quotas?{quotas:n.quotas}:{},...n.lifecycle?{lifecycle:n.lifecycle}:{},...n.retentionPolicy?{retentionPolicy:n.retentionPolicy}:{},...n.env?{env:n.env}:{},...n.integrationLeases?{integrationLeases:n.integrationLeases}:{},metadata:n.metadata??{},managementSource:"openpond.yaml",manifestPath:an}}function Fr(n){const i=n?.gitOwner?.trim()??"",o=n?.gitRepo?.trim()??"",h=n?.gitHost?.trim()??"";if(!i||!o||!h)return null;const c=o.endsWith(".git")?o:`${o}.git`;return/^https?:\/\//i.test(h)?`${h.replace(/\/+$/,"")}/${i}/${c}`:`https://${h.replace(/\/+$/,"")}/${i}/${c}`}function Dr(n,i){const o=i.trim();if(n==="github_repo"){const h=o.replace(/^https:\/\/github\.com\//i,"").replace(/^git@github\.com:/i,"").replace(/\.git$/i,""),[c,u]=h.split("/").filter(Boolean);return{gitHost:"github.com",gitOwner:c??null,gitRepo:u??null,internalRepoPath:null,templateRepoUrl:null}}return n==="internal_repo"?{gitHost:"openpond.ai",gitOwner:null,gitRepo:o.split("/").filter(Boolean).at(-1)??null,internalRepoPath:o||null,templateRepoUrl:null}:n==="template"?{gitHost:null,gitOwner:null,gitRepo:null,internalRepoPath:null,templateRepoUrl:o||null}:{gitHost:null,gitOwner:null,gitRepo:null,internalRepoPath:null,templateRepoUrl:null}}function Mt(n,i){const o=n.trim().replace(/^\/+/,"").replace(/^workspace\//,"").replace(/\/+$/,""),h=i.trim().replace(/[/\\]+/g,"-").replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"upload";return`${o||"uploads"}/${h}`}function Ur(n,i){return`OPENPOND_REPLAY_PARAMS_BASE64='${zr({input:i})}' ${n}`}function $r(n,i,o){return["cd",qt(n),"&&","openpond","sandbox-template",i,"--file",an,"--target",qt(o)].join(" ")}function qt(n){return`'${n.replace(/'/g,"'\\''")}'`}function Ft(n){return new Promise((i,o)=>{const h=new FileReader;h.onload=()=>{const c=typeof h.result=="string"?h.result:"",[,u=""]=c.split(",",2);i(u)},h.onerror=()=>o(h.error??new Error("Failed to read file")),h.readAsDataURL(n)})}function zr(n){const i=JSON.stringify(n),o=new TextEncoder().encode(i);let h="";for(const c of o)h+=String.fromCharCode(c);return window.btoa(h)}function xn(n){return n&&typeof n=="object"&&!Array.isArray(n)?n:{}}function Je(n){return n instanceof Error?n.message:String(n)}function Xn(n){return n.length<=10?n:`${n.slice(0,6)}...${n.slice(-4)}`}async function Br(n){n&&(await n("sandbox_preserve_source"),await n("sandbox_stop"))}function Hr(n){return{...n.teamId?{teamId:n.teamId}:{},...n.projectId?{projectId:n.projectId}:{},runtime:{runtimeId:n.runtimeId},visibility:"team",budget:{maxUsd:"0.05"},quotas:{idleTimeoutSeconds:900,maxSpendUsd:"0.05"},metadata:{source:"openpond-app-environment-menu-sandbox-resume",resumeSandboxId:n.id,previousState:n.state}}}function Yr({canCreateSandboxProject:n,canInitGit:i,defaultSandboxRepoUrl:o,gitWorkspace:h,hasRemote:c,isProjectWorkspace:u,isSandboxWorkspace:s,managed:f,onOpenCommitDialog:g,onRunTerminalCommand:p,onWorkspaceToolAction:l,projectSandboxTemplate:w,projectSandboxTemplateValid:T,sandboxTemplateActionTargetCount:U,sandboxTemplateServiceTargets:J,sandboxResumeTarget:D,selectedApp:Y,selectedProject:te,setSandboxCreateDialogOpen:V,setSandboxRunActionDialogOpen:O,workspaceBusyValue:F,workspaceReady:Z,workspaceState:W}){const oe=[{icon:r.jsx(Ci,{size:14}),label:"Initialize Git",disabled:f||!i||F||!Z||!l,onSelect:()=>l?.("git_init")},{icon:r.jsx(Di,{size:14}),label:"Commit changes",disabled:f||!h||F||!Z||!W?.dirty||!g,onSelect:()=>g?.("commit")},{icon:r.jsx(lt,{size:14}),label:"Push branch",disabled:f||!h||F||!Z||!c||!l,onSelect:()=>l?.("git_push")},{icon:r.jsx(An,{size:14}),label:"Fetch remote",disabled:f||!h||F||!Z||!c||!l,onSelect:()=>l?.("git_fetch")},{icon:r.jsx(Ni,{size:14}),label:"Create PR",disabled:!0,onSelect:()=>{}}],ie=[...w?[]:[{icon:r.jsx(sn,{size:14}),label:"Create sandbox template",disabled:f||F||!Z||!l,onSelect:()=>l?.("create_sandbox_template_scaffold")}],{icon:r.jsx(at,{size:14}),label:`Validate ${an}`,disabled:f||F||!Z||!l,onSelect:()=>l?.("validate_sandbox_template")},{icon:r.jsx(gr,{size:14}),label:"Build template",disabled:f||F||!Z||!l,onSelect:()=>l?.("build_sandbox_template")},{icon:r.jsx(cn,{size:14}),label:"Run start locally",disabled:f||F||!Z||!l,onSelect:()=>l?.("run_sandbox_template",{mode:"local",target:"start"})},{icon:r.jsx(cn,{size:14}),label:"Run action",disabled:f||F||!Z||!T||U===0,onSelect:()=>O(!0)},...J.map(fe=>({icon:r.jsx(wi,{size:14}),label:`Dev ${fe.name} locally`,disabled:f||F||!Z||!T||!te?.sandboxTemplate?.rootPath||!p,onSelect:()=>p?.($r(te?.sandboxTemplate?.rootPath??"","dev",fe.name))})),{icon:r.jsx(sn,{size:14}),label:"Start sandbox",disabled:f||F||!Z||!n,onSelect:()=>V(!0)}],Ce=[{icon:r.jsx(An,{size:14}),label:"Sandbox status",disabled:F||!l,onSelect:()=>l?.("sandbox_status")},{icon:r.jsx(cn,{size:14}),label:"Resume sandbox",disabled:F||!l||!D?.runtimeId||D.state==="running"||D.state==="creating",onSelect:()=>D?.runtimeId?l?.("sandbox_create",Hr(D)):void 0},{icon:r.jsx(Ii,{size:14}),label:"Sandbox logs",disabled:F||!l,onSelect:()=>l?.("sandbox_logs")},{icon:r.jsx(at,{size:14}),label:"Receipts",disabled:F||!l,onSelect:()=>l?.("sandbox_receipts")},{icon:r.jsx(_i,{size:14}),label:"Export patch",disabled:F||!l,onSelect:()=>l?.("sandbox_git_export_patch")},{icon:r.jsx(lt,{size:14}),label:"Apply locally",disabled:F||!l,onSelect:()=>l?.("sandbox_git_apply_patch_local")},{icon:r.jsx(Ui,{size:14}),label:"Checkpoint and stop",disabled:F||!l,onSelect:()=>Br(l)}];return{gitActionItems:oe,sandboxActionItems:s?Ce:u?ie:[{icon:r.jsx(sn,{size:14}),label:o?"Create sandbox from repo":"Create sandbox",disabled:F||!l,onSelect:()=>l?.("sandbox_create",{...o?{repo:o}:{},visibility:"team",budget:{maxUsd:"0.05"},quotas:{maxSpendUsd:"0.05"},metadata:{source:"openpond-app-environment-menu-sandbox",...Y?.name?{appName:Y.name}:{}}})},{icon:r.jsx(An,{size:14}),label:"List templates",disabled:F||!l,onSelect:()=>l?.("sandbox_templates")}]}}function Gr({busy:n,error:i,projectName:o,onClose:h,onSubmit:c}){const[u,s]=q.useState("action"),[f,g]=q.useState(an),p=o.trim()||"local-agent";return r.jsxs(vn,{title:"Add Agent config",busy:n,error:i,onClose:h,children:[r.jsxs("label",{children:[r.jsx("span",{children:"Template preset"}),r.jsxs("select",{value:u,onChange:l=>s(l.target.value),disabled:n,children:[r.jsx("option",{value:"action",children:"Action"}),r.jsx("option",{value:"cron",children:"Cron"}),r.jsx("option",{value:"background",children:"Background worker"}),r.jsx("option",{value:"resources",children:"Resource profile"})]})]}),r.jsxs("label",{children:[r.jsx("span",{children:"Manifest path"}),r.jsx("input",{value:f,onChange:l=>g(l.target.value),disabled:n})]}),r.jsx("pre",{children:mi(p,u)}),r.jsx(jn,{busy:n,actionLabel:"Write config",canSubmit:!!f.trim(),onClose:h,onSubmit:()=>c({name:p,preset:u,manifestPath:f.trim()})})]})}function Kr({busy:n,defaultBranch:i,defaultTeamId:o,error:h,projectName:c,sourceIdentity:u,onClose:s,onSubmit:f}){const g=o,[p,l]=q.useState(c),[w,T]=q.useState(/github\.com[:/]/i.test(u)?"github_repo":"manual"),[U,J]=q.useState(u),[D,Y]=q.useState(i||"main"),[te,V]=q.useState(!0);return r.jsxs(vn,{title:"Connect Project",busy:n,error:h,onClose:s,children:[r.jsxs("label",{children:[r.jsx("span",{children:"Project name"}),r.jsx("input",{value:p,onChange:O=>l(O.target.value),disabled:n})]}),r.jsxs("div",{className:"agent-setup-two-col",children:[r.jsxs("label",{children:[r.jsx("span",{children:"Source type"}),r.jsxs("select",{value:w,onChange:O=>T(O.target.value),disabled:n,children:[r.jsx("option",{value:"manual",children:"Manual"}),r.jsx("option",{value:"github_repo",children:"GitHub repo"}),r.jsx("option",{value:"internal_repo",children:"Internal repo"}),r.jsx("option",{value:"template",children:"Template"})]})]}),r.jsxs("label",{children:[r.jsx("span",{children:"Default branch"}),r.jsx("input",{value:D,onChange:O=>Y(O.target.value),disabled:n})]})]}),r.jsxs("label",{children:[r.jsx("span",{children:"Source identity"}),r.jsx("input",{value:U,onChange:O=>J(O.target.value),disabled:n})]}),r.jsxs("label",{className:"agent-setup-check",children:[r.jsx("input",{type:"checkbox",checked:te,onChange:O=>V(O.target.checked),disabled:n}),r.jsx("span",{children:"Sync now"})]}),r.jsx(jn,{busy:n,actionLabel:te?"Connect and sync":"Connect Project",canSubmit:!!(p.trim()&&g),onClose:s,onSubmit:()=>f({teamId:g,projectName:p.trim(),sourceType:w,sourceIdentity:U.trim(),defaultBranch:D.trim(),syncNow:te})})]})}function Vr({busy:n,defaultName:i,error:o,onClose:h,onSubmit:c}){const[u,s]=q.useState(i),[f,g]=q.useState(!0);return r.jsxs(vn,{title:"Create Agent",busy:n,error:o,onClose:h,children:[r.jsxs("label",{children:[r.jsx("span",{children:"Agent name"}),r.jsx("input",{value:u,onChange:p=>s(p.target.value),disabled:n})]}),r.jsx("div",{className:"agent-setup-summary",children:"Entire manifest · Manual trigger · Package defaults"}),r.jsxs("label",{className:"agent-setup-check",children:[r.jsx("input",{type:"checkbox",checked:f,onChange:p=>g(p.target.checked),disabled:n}),r.jsx("span",{children:"Create and test run"})]}),r.jsx(jn,{busy:n,actionLabel:"Create Agent",canSubmit:!!u.trim(),onClose:h,onSubmit:()=>c({agentName:u.trim(),createTestRun:f})})]})}function Dt({actionLabel:n,busy:i,error:o,summary:h,title:c,onClose:u,onSubmit:s}){return r.jsxs(vn,{title:c,busy:i,error:o,onClose:u,children:[r.jsx("div",{className:"agent-setup-summary",children:h}),r.jsx(jn,{busy:i,actionLabel:n,canSubmit:!0,onClose:u,onSubmit:s})]})}function vn({busy:n,children:i,error:o,title:h,onClose:c}){return Ei(o),r.jsx("div",{className:"agent-setup-dialog-backdrop",role:"presentation",onMouseDown:c,children:r.jsxs("section",{className:"agent-setup-dialog",role:"dialog","aria-modal":"true","aria-label":h,onMouseDown:u=>u.stopPropagation(),children:[r.jsxs("header",{children:[r.jsx("h3",{children:h}),r.jsx("button",{type:"button",disabled:n,onClick:c,children:"Close"})]}),r.jsx("div",{className:"agent-setup-fields",children:i})]})})}function jn({actionLabel:n,busy:i,canSubmit:o,onClose:h,onSubmit:c}){return r.jsxs("div",{className:"agent-setup-dialog-actions",children:[r.jsx("button",{type:"button",disabled:i,onClick:h,children:"Cancel"}),r.jsx("button",{type:"button",disabled:i||!o,onClick:c,children:i?"Working":n})]})}function Qr(n){return n.split(`
|
|
63
|
-
`).filter(i=>i.trim()).length}function Zr(n){return n.status==="loading"?"Checking sandbox changes":n.status==="error"?"Sandbox status unavailable":n.status!=="ready"?"Sandbox changes unknown":n.changedFiles===0?"Sandbox clean":`${n.changedFiles} sandbox changed ${n.changedFiles===1?"file":"files"}`}function Xr(n){return n>0&&n%3600===0?`${n/3600} hr`:n>0&&n%60===0?`${n/60} min`:`${n} sec`}function fn(n){const i=n?.trim();if(!i)return null;if(i.startsWith("$"))return i;const o=Number(i);if(!Number.isFinite(o))return`$${i}`;if(o===0)return"$0";const h=o>=1?2:4;return`$${o.toFixed(h).replace(/0+$/,"").replace(/\.$/,"")}`}function Jr(n){return n.receipts.slice().sort((i,o)=>Date.parse(o.createdAt)-Date.parse(i.createdAt))[0]??null}function Wr(n){const i=Jr(n);if(i){const o=fn(i.totalUsd);if(i.reason==="idle_timeout")return o?`stopped by idle timeout · charged ${o}`:"stopped by idle timeout";if(i.reason==="budget_exhausted")return o?`budget exhausted · charged ${o}`:"budget exhausted";if(n.state!=="running")return o?`receipt ${i.status} · charged ${o}`:`receipt ${i.status}`}if(n.reservation.status==="reserved"){const o=fn(n.reservation.reservedUsd);return o?`reservation active ${o}`:"reservation active"}if(n.reservation.status==="captured"){const o=fn(n.reservation.capturedUsd);return o?`captured ${o}`:"captured"}return n.reservation.status==="released"?"reservation released":null}function ea(n){if(!n)return"Loading sandbox policy";const i=typeof n.quotas?.idleTimeoutSeconds=="number"&&n.quotas.idleTimeoutSeconds>0?n.quotas.idleTimeoutSeconds:null,o=fn(n.quotas?.maxSpendUsd??n.budget.maxUsd),h=[i?`Auto-stop after ${Xr(i)} idle`:"Auto-stop policy unavailable"];o&&h.push(`cap ${o}`);const c=Wr(n);return c&&h.push(c),h.join(" · ")}function Na({mode:n,busy:i,workspaceState:o,workspaceId:h,workspaceKind:c,selectedApp:u,selectedProject:s,workspaceBusy:f,defaultTeamId:g,workspaceDiff:p,managedWorkspace:l,showDiffControls:w,diffPanelOpen:T,onToggleDiffPanel:U,onRunTerminalCommand:J,onWorkspaceToolAction:D,onOpenCommitDialog:Y,onWorkspaceBranchChange:te,onWorkspaceBranchCreate:V,connection:O,onBootstrap:F,onOpenSandboxWorkspace:Z}){const[W,oe]=q.useState(!1),[ie,Ce]=q.useState(!1),[Ne,Oe]=q.useState(""),[fe,he]=q.useState(!1),[I,B]=q.useState(!1),[_,H]=q.useState(null),[Q,de]=q.useState(!1),[Se,Be]=q.useState(!1),[Re,ne]=q.useState(null),[He,se]=q.useState([]),[me,ce]=q.useState([]),[we,K]=q.useState([]),[Le,pe]=q.useState({status:"idle",changedFiles:0,error:null}),[re,ke]=q.useState(null),Ie=q.useRef(null),Te=q.useRef(null),Ge=!!o?.initialized,ue=!!f,qe=!!l,Pe=c==="local_project"||!!s,ae=c==="sandbox"||c==="sandbox_template",ye=ae&&h?.trim()||null,Fe=ae?0:p?.additions??0,_e=ae?0:p?.deletions??0,De=ae?Le.changedFiles:p?.filesChanged??o?.changedFilesCount??0,Ue=De>0,Ke=ae?Zr(Le):Ue?`${De} changed ${De===1?"file":"files"}`:"No changes",Ye=ae?ea(re):"",e=o?.source!=="local_folder",m=Pe&&o?.source==="local_folder",b=!!o?.remoteUrl,j=o?.remoteUrl?.trim()??"",a=Fr(u??null),x=!!s?.sandboxTemplate?.detected,t=!!(s?.sandboxTemplate?.valid&&s.sandboxTemplate.normalizedManifest),d=s?.sandboxTemplate?.normalizedManifest??null,C=d?et(d):[],v=C.filter(y=>y.kind==="action"),A=C.filter(y=>y.kind==="service"),N=!!s?.linkedOpenPondApp?.appId,S=Ri({localProject:s,organizations:He,projects:me,agents:we,defaultTeamId:g}),R=ot(He,g),E=Pe&&x&&!N,k=Pe&&x&&t&&(E||!!j),M=o?Array.from(new Set([o.currentBranch,...o.branches].filter(y=>!!y))):[],z=o?.initialized?o.currentBranch??M[0]??"No branch":"Not synced",X=Lr(o),on=q.useMemo(()=>{const y=Ne.trim().toLowerCase();return y?M.filter(P=>P.toLowerCase().includes(y)):M},[M,Ne]);q.useEffect(()=>{if(!W)return;function y($){Ie.current?.contains($.target)||oe(!1)}function P($){$.key==="Escape"&&oe(!1)}return document.addEventListener("pointerdown",y),document.addEventListener("keydown",P),()=>{document.removeEventListener("pointerdown",y),document.removeEventListener("keydown",P)}},[W]),q.useEffect(()=>{W&&ie&&Te.current?.focus()},[ie,W]),q.useEffect(()=>{if(!O||!W||!Pe)return;let y=!1;return Be(!0),ne(null),xe.organizations(O).then(async P=>{if(y)return;const $=P.organizations.map(Ti).filter(ge=>!!ge).filter(ge=>ge.status==="active");se($);const G=ot($,g);if(!G)return;const[ve,Me]=await Promise.all([xe.listSandboxProjects(O,{teamId:G.teamId}),xe.listSandboxAgents(O,{teamId:G.teamId})]);y||(ce(ve.projects),K(Me.agents))}).catch(P=>{y||ne(Je(P))}).finally(()=>{y||Be(!1)}),()=>{y=!0}},[O,g,Pe,W]),q.useEffect(()=>{if(!W||!ae||!O||!ye){pe({status:"idle",changedFiles:0,error:null});return}let y=!1;return pe(P=>({status:"loading",changedFiles:P.changedFiles,error:null})),xe.sandboxGitStatus(O,ye).then(P=>{y||pe({status:"ready",changedFiles:Qr(P.status?.porcelain??""),error:null})}).catch(P=>{y||pe({status:"error",changedFiles:0,error:Je(P)})}),()=>{y=!0}},[O,ae,W,ye]),q.useEffect(()=>{if(!W||!ae||!O||!ye){ke(null);return}let y=!1;return xe.sandbox(O,ye).then(P=>{y||ke(P.sandbox)}).catch(()=>{y||ke(null)}),()=>{y=!0}},[O,ae,W,ye]);async function Ze(y){if(!D)return;const P=y.openPreview?br():null;let $=y.repoUrl||j;if(E){if(b&&!window.confirm("Replace the current origin remote with a new OpenPond repo before starting the sandbox?")){tn(P,null);return}const je=await D("publish_openpond_repo",{replaceOrigin:b,...o?.dirty?{commitDirty:!0,commitMessage:y.commitMessage}:{}});if(!je?.ok){tn(P,null);return}$=kr(je)??$}else if(e&&b){if(o?.dirty&&!(await D("git_commit",{message:y.commitMessage,includeUnstaged:!0,runChecks:!1}))?.ok){tn(P,null);return}if(!(await D("git_push",{runChecks:!1}))?.ok){tn(P,null);return}}if(!$){tn(P,null);return}const G=await D("sandbox_create",{repo:$,visibility:"team",resources:y.resources,budget:{maxUsd:y.budgetUsd},quotas:{idleTimeoutSeconds:900,maxSpendUsd:y.budgetUsd},...y.env.length>0?{env:y.env}:{},...y.volumes.length>0?{volumes:y.volumes}:{},metadata:{source:"openpond-app-local-sandbox-template-start",...y.entrypointName?{entrypointName:y.entrypointName}:{},...s?.id?{localProjectId:s.id}:{},...s?.name?{projectName:s.name}:{},...d?{templateName:d.name,templateVersion:d.version,templateUseCase:d.useCase,templateTargets:C.map(je=>({name:je.name,kind:je.kind}))}:{}},...y.openPreview&&y.previewPort?{previewPort:y.previewPort,previewLabel:y.previewLabel,previewAccess:y.previewAccess,previewAutoStart:!0}:{}}),ve=xr(G);if(y.openPreview&&tn(P,ve),!G?.ok)return;const Me=Mr(G);for(const je of d?.setup.commands??[])if(!(await D("sandbox_exec",{command:je,timeoutSeconds:900}))?.ok)return;const ge={};for(const je of y.uploads){const nn=[];for(const it of je.files){const rt=Mt(je.targetPath,it.name),vi=await Ft(it);if(!(await D("sandbox_upload_file",{path:rt,contentsBase64:vi}))?.ok)return;nn.push(rt)}ge[je.inputName]=je.multiple?nn:nn[0]??""}const ln=Ur(y.command,{...y.params,...ge});if((await D("sandbox_exec",{command:ln,timeoutSeconds:y.timeoutSeconds??900}))?.ok){if(Me){for(const je of y.schedules)if(!(await D("sandbox_schedule_create",qr(je,Me)))?.ok)return}he(!1)}}async function Xe(y){if(!D)return;const P={},$=[];for(const G of y.uploads){const ve=[];for(const Me of G.files){const ge=Mt(G.targetPath,Me.name),ln=await Ft(Me);$.push({path:ge,contentsBase64:ln}),ve.push(ge)}P[G.inputName]=G.multiple?ve:ve[0]??""}B(!1),await D("run_sandbox_template",{mode:y.mode,target:y.target,params:{...y.params,...P},...y.env.length>0?{env:y.env}:{},...$.length>0?{uploads:$}:{}})}async function pi(y=R?.teamId){if(!O||!y)return;const[P,$]=await Promise.all([xe.listSandboxProjects(O,{teamId:y}),xe.listSandboxAgents(O,{teamId:y})]);ce(P.projects),K($.agents)}async function fi(y){if(!(!D||!s)){de(!0),ne(null);try{if(!(await D("create_sandbox_template_scaffold",{manifestOnly:!0,manifestContent:mi(y.name,y.preset),name:y.name,preset:y.preset,manifestPath:y.manifestPath}))?.ok)return;H(null)}catch(P){ne(Je(P))}finally{de(!1)}}}async function hi(y){if(!O||!s||!F)return;const P=y.teamId;de(!0),ne(null);try{const $=Dr(y.sourceType,y.sourceIdentity);let G=(await xe.upsertSandboxProject(O,{teamId:P,name:y.projectName,sourceType:y.sourceType,normalizedSourceIdentity:y.sourceIdentity||y.projectName,defaultBranch:y.defaultBranch||null,gitProvider:y.sourceType==="github_repo"?"github":null,gitHost:$.gitHost,gitOwner:$.gitOwner,gitRepo:$.gitRepo,internalRepoPath:$.internalRepoPath,templateRepoUrl:$.templateRepoUrl,sourceConfig:{sourceType:y.sourceType,sourceValue:y.sourceIdentity||y.projectName},metadata:{source:"openpond-app-local-project-agent-setup"}})).project;y.syncNow&&(G=(await xe.syncSandboxProject(O,G.id,{teamId:P})).project);const ve=await xe.updateLocalProjectAgentSetup(O,s.id,{linkedSandboxProject:{teamId:P,projectId:G.id,projectSlug:G.slug,projectName:G.name,sourceRepoUrl:y.sourceIdentity||null,defaultBranch:G.defaultBranch,lastUploadedCommit:null,lastUploadTransport:null,manifestPath:G.sandboxManifestPath,manifestHash:G.sandboxManifestHash,syncedAt:G.sandboxManifestSyncedAt,linkedAt:new Date().toISOString()}});F(ve.bootstrap),ce(Me=>[G,...Me.filter(ge=>ge.id!==G.id)]),H(null)}catch($){ne(Je($))}finally{de(!1)}}async function gi(){if(!O||!s||!S.project||!F)return;const y=S.project;de(!0),ne(null);try{const P=(await xe.syncSandboxProject(O,y.id,{teamId:y.teamId})).project,$=await xe.updateLocalProjectAgentSetup(O,s.id,{linkedSandboxProject:{teamId:P.teamId,projectId:P.id,projectSlug:P.slug,projectName:P.name,sourceRepoUrl:o?.remoteUrl??s.linkedSandboxProject?.sourceRepoUrl??null,defaultBranch:P.defaultBranch,lastUploadedCommit:s.linkedSandboxProject?.lastUploadedCommit??null,lastUploadTransport:s.linkedSandboxProject?.lastUploadTransport??null,manifestPath:P.sandboxManifestPath,manifestHash:P.sandboxManifestHash,syncedAt:P.sandboxManifestSyncedAt,linkedAt:s.linkedSandboxProject?.linkedAt??new Date().toISOString()}});F($.bootstrap),ce(G=>[P,...G.filter(ve=>ve.id!==P.id)]),H(null)}catch(P){ne(Je(P))}finally{de(!1)}}async function xi(y){if(!O||!s||!S.project||!F)return;const P=S.project;de(!0),ne(null);try{const $=(await xe.upsertSandboxAgent(O,{teamId:P.teamId,projectId:P.id,name:y.agentName,selectedEntrypoint:{scope:"entire_manifest",name:null},triggerType:"manual",backgroundTaskPolicy:{},defaultWorkflowMode:"attempt",defaultResourcePolicy:{},metadata:{source:"openpond-app-local-project-agent-setup"}})).agent;let G=null,ve=null;if(y.createTestRun){const ge=await xe.runSandboxAgent(O,$.id,{teamId:P.teamId,triggerType:"manual",metadata:{source:"openpond-app-local-project-agent-setup"}});G=ge.sandbox??null,ve=G?.id??ge.run.sandboxId??null}const Me=await xe.updateLocalProjectAgentSetup(O,s.id,{preferredSandboxAgentId:$.id});F(Me.bootstrap),K(ge=>[$,...ge.filter(ln=>ln.id!==$.id)]),H(null),ve&&await Z?.({sandboxId:ve,name:kt(G)??`${$.name} sandbox`})}catch($){ne(Je($))}finally{de(!1)}}async function bi(){if(!(!O||!S.agent)){de(!0),ne(null);try{const y=await xe.runSandboxAgent(O,S.agent.id,{teamId:S.agent.teamId,triggerType:"manual",metadata:{source:"openpond-app-local-project-agent-setup"}});await pi(S.agent.teamId),H(null);const P=y.sandbox?.id??y.run.sandboxId;P&&await Z?.({sandboxId:P,name:kt(y.sandbox??null)??`${S.agent.name} sandbox`})}catch(y){ne(Je(y))}finally{de(!1)}}}const{gitActionItems:Si,sandboxActionItems:yi}=Yr({canCreateSandboxProject:k,canInitGit:m,defaultSandboxRepoUrl:a??"",gitWorkspace:e,hasRemote:b,isProjectWorkspace:Pe,isSandboxWorkspace:ae,managed:qe,onOpenCommitDialog:Y,onRunTerminalCommand:J,onWorkspaceToolAction:D,projectSandboxTemplate:x,projectSandboxTemplateValid:t,sandboxTemplateActionTargetCount:v.length,sandboxTemplateServiceTargets:A,sandboxResumeTarget:re?{id:re.id,runtimeId:re.runtimeId??null,teamId:re.teamId??null,projectId:re.projectId??null,state:re.state??null}:null,selectedApp:u,selectedProject:s,setSandboxCreateDialogOpen:he,setSandboxRunActionDialogOpen:B,workspaceBusyValue:ue,workspaceReady:Ge,workspaceState:o});if(!o)return null;function tt(y){oe(!1),y.onSelect()}return r.jsxs(r.Fragment,{children:[r.jsxs("div",{className:`workspace-environment-menu ${n==="dock"?"open-up":""} ${n==="topbar"?"topbar":""}`,ref:Ie,children:[r.jsx("button",{type:"button",className:`environment-info-button ${n==="topbar"?"titlebar-icon":"composer-icon"} ${W?"active":""}`,title:"Environment","data-tooltip":"Environment","aria-label":"Environment","aria-haspopup":"menu","aria-expanded":W,onClick:()=>oe(y=>!y),children:r.jsx(qi,{size:16})}),W&&r.jsxs("div",{className:"environment-popover",role:"menu","aria-label":"Environment",children:[r.jsx("div",{className:"environment-popover-header",children:r.jsx("span",{children:"Environment"})}),Pe&&s?r.jsxs("button",{type:"button",className:"environment-row",disabled:Se||!S.canAct||Q,title:Se?"Loading Agent setup state":S.reason??"Set up this project as an Agent",onClick:()=>{Se||!S.canAct||(S.state==="missing_config"&&H("config"),S.state==="needs_project"&&H("connect"),S.state==="needs_sync"&&H("sync"),S.state==="needs_agent"&&H("agent"),S.state==="ready"&&H("run"),oe(!1))},children:[r.jsx(sn,{size:15}),r.jsxs("span",{children:[r.jsx("strong",{children:"Agent setup"}),r.jsx("small",{children:Se?"Loading setup state":Or(S.state,S.reason)})]}),r.jsx("span",{className:"environment-row-action",children:Q?"Working":Se?"Loading":S.actionLabel})]}):null,r.jsxs("button",{type:"button",className:`environment-row ${T?"active":""}`,disabled:!w||!U,onClick:()=>{oe(!1),U?.()},children:[r.jsx(Pi,{size:15}),r.jsxs("span",{children:[r.jsx("strong",{children:"Changes"}),r.jsx("small",{children:Ke})]}),!ae&&(Ue||p)&&r.jsxs("span",{className:"environment-change-counts",children:[r.jsxs("span",{className:"diff-addition",children:["+",Fe]}),r.jsxs("span",{className:"diff-deletion",children:["-",_e]})]})]}),r.jsxs("div",{className:"environment-row static",children:[r.jsx(Fi,{size:15}),r.jsxs("span",{children:[r.jsx("strong",{children:X}),r.jsx("small",{children:o.repoPath||o.workspacePath})]})]}),ae?r.jsxs("div",{className:"environment-row static",title:Ye,children:[r.jsx(Oi,{size:15}),r.jsxs("span",{children:[r.jsx("strong",{children:"Idle cleanup"}),r.jsx("small",{children:Ye})]})]}):null,r.jsxs("button",{type:"button",className:`environment-row ${ie?"active":""}`,disabled:qe||!e||i||ue||!o.initialized,"aria-expanded":ie,onClick:()=>Ce(y=>!y),children:[r.jsx(Cn,{size:15}),r.jsxs("span",{children:[r.jsx("strong",{children:z}),r.jsx("small",{children:qe?"Managed workspace":e?"Branch":"Git not initialized"})]}),r.jsx(Li,{size:13})]}),ie&&r.jsxs("div",{className:"environment-branch-panel",children:[r.jsxs("label",{className:"environment-branch-search",children:[r.jsx(ki,{size:13}),r.jsx("input",{ref:Te,value:Ne,placeholder:"Search branches",onChange:y=>Oe(y.target.value)})]}),r.jsxs("div",{className:"environment-branch-list",children:[on.map(y=>{const P=y===o.currentBranch,$=i||o.dirty&&!P;return r.jsxs("button",{type:"button",className:P?"selected":"",disabled:$,role:"menuitemradio","aria-checked":P,title:$&&!P?"Commit or discard local changes before switching branches.":y,onClick:()=>{oe(!1),P||te?.(y)},children:[r.jsx(Cn,{size:13}),r.jsxs("span",{children:[r.jsx("strong",{children:y}),P&&o.dirty&&r.jsxs("small",{children:["Uncommitted: ",o.changedFilesCount," ",o.changedFilesCount===1?"file":"files"]})]}),P&&r.jsx(Mi,{size:14})]},y)}),on.length===0&&r.jsx("div",{className:"environment-branch-empty",children:"No branches found"})]}),r.jsxs("button",{type:"button",className:"environment-branch-create",disabled:i||!o.initialized||!V,onClick:()=>{oe(!1),V?.()},children:[r.jsx(Cn,{size:14}),r.jsx("span",{children:"Create branch"})]})]}),r.jsx("div",{className:"environment-section-title",children:"Git"}),Si.map(y=>r.jsxs("button",{type:"button",className:"environment-action",disabled:y.disabled,onClick:()=>tt(y),children:[y.icon,r.jsx("span",{children:y.label})]},y.label)),r.jsx("div",{className:"environment-section-title",children:"Sandbox"}),yi.map(y=>r.jsxs("button",{type:"button",className:"environment-action",disabled:y.disabled,onClick:()=>tt(y),children:[y.icon,r.jsx("span",{children:y.label})]},y.label))]})]}),fe&&r.jsx(Tr,{busy:ue,commitBeforeCreate:(E||e&&b)&&!!o?.dirty,defaultRepoUrl:j,projectName:s?.name??"sandbox template",templateManifest:s?.sandboxTemplate?.normalizedManifest??null,uploadBeforeCreate:E,onClose:()=>{ue||he(!1)},onSubmit:y=>{Ze(y)}}),I&&r.jsx(Pr,{busy:ue,projectName:s?.name??"sandbox template",templateManifest:s?.sandboxTemplate?.normalizedManifest??null,onClose:()=>{ue||B(!1)},onSubmit:y=>{Xe(y)}}),_==="config"&&s?r.jsx(Gr,{busy:Q,error:Re,projectName:s.name,onClose:()=>!Q&&H(null),onSubmit:y=>{fi(y)}}):null,_==="connect"&&s&&R?r.jsx(Kr,{busy:Q,error:Re,defaultTeamId:R.teamId,projectName:s.name,sourceIdentity:o?.remoteUrl??"",defaultBranch:o?.currentBranch??"main",onClose:()=>!Q&&H(null),onSubmit:y=>{hi(y)}}):null,_==="sync"&&S.project?r.jsx(Dt,{busy:Q,error:Re,title:"Sync Project",actionLabel:"Sync Project",summary:`${S.project.name} · ${S.project.sandboxManifestPath??an}`,onClose:()=>!Q&&H(null),onSubmit:()=>{gi()}}):null,_==="agent"&&S.project?r.jsx(Vr,{busy:Q,error:Re,defaultName:`${s?.name??S.project.name} Agent`,onClose:()=>!Q&&H(null),onSubmit:y=>{xi(y)}}):null,_==="run"&&S.agent?r.jsx(Dt,{busy:Q,error:Re,title:"Run Agent",actionLabel:"Run Agent",summary:S.agent.name,onClose:()=>!Q&&H(null),onSubmit:()=>{bi()}}):null]})}export{Na as WorkspaceEnvironmentMenu,Xr as formatIdleTimeout,Zr as sandboxChangeLabel,Qr as sandboxChangedFileCount,ea as sandboxRuntimePolicyLabel};
|
|
62
|
+
command: pnpm hello`}function Or(n,i){return i||(n==="missing_config"?`${an} missing`:n==="needs_project"?"Local config is ready":n==="needs_sync"?"Project needs manifest sync":n==="needs_agent"?"Project is synced":n==="ready"?"Agent is ready":"Setup unavailable")}function Lr(n){return n?.source==="openpond"?"OpenPond Git":n?.source==="github"?"GitHub":n?.source==="local_git"?"Local Git":n?.source==="local_folder"?"Local folder":"Workspace"}function kr(n){const i=xn(n.data),o=xn(i.remote);return(typeof o.remoteUrl=="string"?o.remoteUrl.trim():"")||null}function Mr(n){const i=xn(n.data),o=xn(i.sandbox);return(typeof o.id=="string"?o.id.trim():"")||null}function kt(n){return n?typeof n.metadata?.name=="string"&&n.metadata.name.trim()?n.metadata.name.trim():n.projectId?`Project sandbox ${Xn(n.id)}`:n.agentId?`Agent sandbox ${Xn(n.id)}`:`Sandbox ${Xn(n.id)}`:null}function qr(n,i){return{sourceSandboxId:i,name:n.name,...n.description?{description:n.description}:{},scheduleType:n.scheduleType,scheduleExpression:n.scheduleExpression,enabled:!0,...n.timezone?{timezone:n.timezone}:{},...n.startAt?{startAt:n.startAt}:{},...n.endAt?{endAt:n.endAt}:{},...n.maxRuns!==void 0?{maxRuns:n.maxRuns}:{},...n.runtimePolicy?{runtimePolicy:n.runtimePolicy}:{},target:n.target,...n.budget?{budget:n.budget}:{},...n.resources?{resources:n.resources}:{},...n.quotas?{quotas:n.quotas}:{},...n.lifecycle?{lifecycle:n.lifecycle}:{},...n.retentionPolicy?{retentionPolicy:n.retentionPolicy}:{},...n.env?{env:n.env}:{},...n.integrationLeases?{integrationLeases:n.integrationLeases}:{},metadata:n.metadata??{},managementSource:"openpond.yaml",manifestPath:an}}function Fr(n){const i=n?.gitOwner?.trim()??"",o=n?.gitRepo?.trim()??"",h=n?.gitHost?.trim()??"";if(!i||!o||!h)return null;const c=o.endsWith(".git")?o:`${o}.git`;return/^https?:\/\//i.test(h)?`${h.replace(/\/+$/,"")}/${i}/${c}`:`https://${h.replace(/\/+$/,"")}/${i}/${c}`}function Dr(n,i){const o=i.trim();if(n==="github_repo"){const h=o.replace(/^https:\/\/github\.com\//i,"").replace(/^git@github\.com:/i,"").replace(/\.git$/i,""),[c,u]=h.split("/").filter(Boolean);return{gitHost:"github.com",gitOwner:c??null,gitRepo:u??null,internalRepoPath:null,templateRepoUrl:null}}return n==="internal_repo"?{gitHost:"openpond.ai",gitOwner:null,gitRepo:o.split("/").filter(Boolean).at(-1)??null,internalRepoPath:o||null,templateRepoUrl:null}:n==="template"?{gitHost:null,gitOwner:null,gitRepo:null,internalRepoPath:null,templateRepoUrl:o||null}:{gitHost:null,gitOwner:null,gitRepo:null,internalRepoPath:null,templateRepoUrl:null}}function Mt(n,i){const o=n.trim().replace(/^\/+/,"").replace(/^workspace\//,"").replace(/\/+$/,""),h=i.trim().replace(/[/\\]+/g,"-").replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"upload";return`${o||"uploads"}/${h}`}function Ur(n,i){return`OPENPOND_REPLAY_PARAMS_BASE64='${Br({input:i})}' ${n}`}function $r(n,i,o){return["cd",qt(n),"&&","openpond","sandbox-template",i,"--file",an,"--target",qt(o)].join(" ")}function qt(n){return`'${n.replace(/'/g,"'\\''")}'`}function Ft(n){return new Promise((i,o)=>{const h=new FileReader;h.onload=()=>{const c=typeof h.result=="string"?h.result:"",[,u=""]=c.split(",",2);i(u)},h.onerror=()=>o(h.error??new Error("Failed to read file")),h.readAsDataURL(n)})}function Br(n){const i=JSON.stringify(n),o=new TextEncoder().encode(i);let h="";for(const c of o)h+=String.fromCharCode(c);return window.btoa(h)}function xn(n){return n&&typeof n=="object"&&!Array.isArray(n)?n:{}}function Je(n){return n instanceof Error?n.message:String(n)}function Xn(n){return n.length<=10?n:`${n.slice(0,6)}...${n.slice(-4)}`}async function zr(n){n&&(await n("sandbox_preserve_source"),await n("sandbox_stop"))}function Hr(n){return{...n.teamId?{teamId:n.teamId}:{},...n.projectId?{projectId:n.projectId}:{},runtime:{runtimeId:n.runtimeId},visibility:"team",budget:{maxUsd:"0.05"},quotas:{idleTimeoutSeconds:900,maxSpendUsd:"0.05"},metadata:{source:"openpond-app-environment-menu-sandbox-resume",resumeSandboxId:n.id,previousState:n.state}}}function Yr({canCreateSandboxProject:n,canInitGit:i,defaultSandboxRepoUrl:o,gitWorkspace:h,hasRemote:c,isProjectWorkspace:u,isSandboxWorkspace:s,managed:f,onOpenCommitDialog:g,onRunTerminalCommand:p,onWorkspaceToolAction:l,projectSandboxTemplate:w,projectSandboxTemplateValid:P,sandboxTemplateActionTargetCount:U,sandboxTemplateServiceTargets:J,sandboxResumeTarget:D,selectedApp:Y,selectedProject:te,setSandboxCreateDialogOpen:V,setSandboxRunActionDialogOpen:O,workspaceBusyValue:F,workspaceReady:Z,workspaceState:W}){const oe=[{icon:r.jsx(Ci,{size:14}),label:"Initialize Git",disabled:f||!i||F||!Z||!l,onSelect:()=>l?.("git_init")},{icon:r.jsx(Di,{size:14}),label:"Commit changes",disabled:f||!h||F||!Z||!W?.dirty||!g,onSelect:()=>g?.("commit")},{icon:r.jsx(lt,{size:14}),label:"Push branch",disabled:f||!h||F||!Z||!c||!l,onSelect:()=>l?.("git_push")},{icon:r.jsx(An,{size:14}),label:"Fetch remote",disabled:f||!h||F||!Z||!c||!l,onSelect:()=>l?.("git_fetch")},{icon:r.jsx(Ni,{size:14}),label:"Create PR",disabled:!0,onSelect:()=>{}}],ie=[...w?[]:[{icon:r.jsx(sn,{size:14}),label:"Create sandbox template",disabled:f||F||!Z||!l,onSelect:()=>l?.("create_sandbox_template_scaffold")}],{icon:r.jsx(at,{size:14}),label:`Validate ${an}`,disabled:f||F||!Z||!l,onSelect:()=>l?.("validate_sandbox_template")},{icon:r.jsx(gr,{size:14}),label:"Build template",disabled:f||F||!Z||!l,onSelect:()=>l?.("build_sandbox_template")},{icon:r.jsx(cn,{size:14}),label:"Run start locally",disabled:f||F||!Z||!l,onSelect:()=>l?.("run_sandbox_template",{mode:"local",target:"start"})},{icon:r.jsx(cn,{size:14}),label:"Run action",disabled:f||F||!Z||!P||U===0,onSelect:()=>O(!0)},...J.map(fe=>({icon:r.jsx(wi,{size:14}),label:`Dev ${fe.name} locally`,disabled:f||F||!Z||!P||!te?.sandboxTemplate?.rootPath||!p,onSelect:()=>p?.($r(te?.sandboxTemplate?.rootPath??"","dev",fe.name))})),{icon:r.jsx(sn,{size:14}),label:"Start sandbox",disabled:f||F||!Z||!n,onSelect:()=>V(!0)}],Ce=[{icon:r.jsx(An,{size:14}),label:"Sandbox status",disabled:F||!l,onSelect:()=>l?.("sandbox_status")},{icon:r.jsx(cn,{size:14}),label:"Resume sandbox",disabled:F||!l||!D?.runtimeId||D.state==="running"||D.state==="creating",onSelect:()=>D?.runtimeId?l?.("sandbox_create",Hr(D)):void 0},{icon:r.jsx(_i,{size:14}),label:"Sandbox logs",disabled:F||!l,onSelect:()=>l?.("sandbox_logs")},{icon:r.jsx(at,{size:14}),label:"Receipts",disabled:F||!l,onSelect:()=>l?.("sandbox_receipts")},{icon:r.jsx(Ii,{size:14}),label:"Export patch",disabled:F||!l,onSelect:()=>l?.("sandbox_git_export_patch")},{icon:r.jsx(lt,{size:14}),label:"Apply locally",disabled:F||!l,onSelect:()=>l?.("sandbox_git_apply_patch_local")},{icon:r.jsx(Ui,{size:14}),label:"Checkpoint and stop",disabled:F||!l,onSelect:()=>zr(l)}];return{gitActionItems:oe,sandboxActionItems:s?Ce:u?ie:[{icon:r.jsx(sn,{size:14}),label:o?"Create sandbox from repo":"Create sandbox",disabled:F||!l,onSelect:()=>l?.("sandbox_create",{...o?{repo:o}:{},visibility:"team",budget:{maxUsd:"0.05"},quotas:{maxSpendUsd:"0.05"},metadata:{source:"openpond-app-environment-menu-sandbox",...Y?.name?{appName:Y.name}:{}}})},{icon:r.jsx(An,{size:14}),label:"List templates",disabled:F||!l,onSelect:()=>l?.("sandbox_templates")}]}}function Gr({busy:n,error:i,projectName:o,onClose:h,onSubmit:c}){const[u,s]=q.useState("action"),[f,g]=q.useState(an),p=o.trim()||"local-agent";return r.jsxs(vn,{title:"Add Agent config",busy:n,error:i,onClose:h,children:[r.jsxs("label",{children:[r.jsx("span",{children:"Template preset"}),r.jsxs("select",{value:u,onChange:l=>s(l.target.value),disabled:n,children:[r.jsx("option",{value:"action",children:"Action"}),r.jsx("option",{value:"cron",children:"Cron"}),r.jsx("option",{value:"background",children:"Background worker"}),r.jsx("option",{value:"resources",children:"Resource profile"})]})]}),r.jsxs("label",{children:[r.jsx("span",{children:"Manifest path"}),r.jsx("input",{value:f,onChange:l=>g(l.target.value),disabled:n})]}),r.jsx("pre",{children:mi(p,u)}),r.jsx(jn,{busy:n,actionLabel:"Write config",canSubmit:!!f.trim(),onClose:h,onSubmit:()=>c({name:p,preset:u,manifestPath:f.trim()})})]})}function Kr({busy:n,defaultBranch:i,defaultTeamId:o,error:h,projectName:c,sourceIdentity:u,onClose:s,onSubmit:f}){const g=o,[p,l]=q.useState(c),[w,P]=q.useState(/github\.com[:/]/i.test(u)?"github_repo":"manual"),[U,J]=q.useState(u),[D,Y]=q.useState(i||"main"),[te,V]=q.useState(!0);return r.jsxs(vn,{title:"Connect Project",busy:n,error:h,onClose:s,children:[r.jsxs("label",{children:[r.jsx("span",{children:"Project name"}),r.jsx("input",{value:p,onChange:O=>l(O.target.value),disabled:n})]}),r.jsxs("div",{className:"agent-setup-two-col",children:[r.jsxs("label",{children:[r.jsx("span",{children:"Source type"}),r.jsxs("select",{value:w,onChange:O=>P(O.target.value),disabled:n,children:[r.jsx("option",{value:"manual",children:"Manual"}),r.jsx("option",{value:"github_repo",children:"GitHub repo"}),r.jsx("option",{value:"internal_repo",children:"Internal repo"}),r.jsx("option",{value:"template",children:"Template"})]})]}),r.jsxs("label",{children:[r.jsx("span",{children:"Default branch"}),r.jsx("input",{value:D,onChange:O=>Y(O.target.value),disabled:n})]})]}),r.jsxs("label",{children:[r.jsx("span",{children:"Source identity"}),r.jsx("input",{value:U,onChange:O=>J(O.target.value),disabled:n})]}),r.jsxs("label",{className:"agent-setup-check",children:[r.jsx("input",{type:"checkbox",checked:te,onChange:O=>V(O.target.checked),disabled:n}),r.jsx("span",{children:"Sync now"})]}),r.jsx(jn,{busy:n,actionLabel:te?"Connect and sync":"Connect Project",canSubmit:!!(p.trim()&&g),onClose:s,onSubmit:()=>f({teamId:g,projectName:p.trim(),sourceType:w,sourceIdentity:U.trim(),defaultBranch:D.trim(),syncNow:te})})]})}function Vr({busy:n,defaultName:i,error:o,onClose:h,onSubmit:c}){const[u,s]=q.useState(i),[f,g]=q.useState(!0);return r.jsxs(vn,{title:"Create Agent",busy:n,error:o,onClose:h,children:[r.jsxs("label",{children:[r.jsx("span",{children:"Agent name"}),r.jsx("input",{value:u,onChange:p=>s(p.target.value),disabled:n})]}),r.jsx("div",{className:"agent-setup-summary",children:"Entire manifest · Manual trigger · Package defaults"}),r.jsxs("label",{className:"agent-setup-check",children:[r.jsx("input",{type:"checkbox",checked:f,onChange:p=>g(p.target.checked),disabled:n}),r.jsx("span",{children:"Create and test run"})]}),r.jsx(jn,{busy:n,actionLabel:"Create Agent",canSubmit:!!u.trim(),onClose:h,onSubmit:()=>c({agentName:u.trim(),createTestRun:f})})]})}function Dt({actionLabel:n,busy:i,error:o,summary:h,title:c,onClose:u,onSubmit:s}){return r.jsxs(vn,{title:c,busy:i,error:o,onClose:u,children:[r.jsx("div",{className:"agent-setup-summary",children:h}),r.jsx(jn,{busy:i,actionLabel:n,canSubmit:!0,onClose:u,onSubmit:s})]})}function vn({busy:n,children:i,error:o,title:h,onClose:c}){return Ei(o),r.jsx("div",{className:"agent-setup-dialog-backdrop",role:"presentation",onMouseDown:c,children:r.jsxs("section",{className:"agent-setup-dialog",role:"dialog","aria-modal":"true","aria-label":h,onMouseDown:u=>u.stopPropagation(),children:[r.jsxs("header",{children:[r.jsx("h3",{children:h}),r.jsx("button",{type:"button",disabled:n,onClick:c,children:"Close"})]}),r.jsx("div",{className:"agent-setup-fields",children:i})]})})}function jn({actionLabel:n,busy:i,canSubmit:o,onClose:h,onSubmit:c}){return r.jsxs("div",{className:"agent-setup-dialog-actions",children:[r.jsx("button",{type:"button",disabled:i,onClick:h,children:"Cancel"}),r.jsx("button",{type:"button",disabled:i||!o,onClick:c,children:i?"Working":n})]})}function Qr(n){return n.split(`
|
|
63
|
+
`).filter(i=>i.trim()).length}function Zr(n){return n.status==="loading"?"Checking sandbox changes":n.status==="error"?"Sandbox status unavailable":n.status!=="ready"?"Sandbox changes unknown":n.changedFiles===0?"Sandbox clean":`${n.changedFiles} sandbox changed ${n.changedFiles===1?"file":"files"}`}function Xr(n){return n>0&&n%3600===0?`${n/3600} hr`:n>0&&n%60===0?`${n/60} min`:`${n} sec`}function fn(n){const i=n?.trim();if(!i)return null;if(i.startsWith("$"))return i;const o=Number(i);if(!Number.isFinite(o))return`$${i}`;if(o===0)return"$0";const h=o>=1?2:4;return`$${o.toFixed(h).replace(/0+$/,"").replace(/\.$/,"")}`}function Jr(n){return n.receipts.slice().sort((i,o)=>Date.parse(o.createdAt)-Date.parse(i.createdAt))[0]??null}function Wr(n){const i=Jr(n);if(i){const o=fn(i.totalUsd);if(i.reason==="idle_timeout")return o?`stopped by idle timeout · charged ${o}`:"stopped by idle timeout";if(i.reason==="budget_exhausted")return o?`budget exhausted · charged ${o}`:"budget exhausted";if(n.state!=="running")return o?`receipt ${i.status} · charged ${o}`:`receipt ${i.status}`}if(n.reservation.status==="reserved"){const o=fn(n.reservation.reservedUsd);return o?`reservation active ${o}`:"reservation active"}if(n.reservation.status==="captured"){const o=fn(n.reservation.capturedUsd);return o?`captured ${o}`:"captured"}return n.reservation.status==="released"?"reservation released":null}function ea(n){if(!n)return"Loading sandbox policy";const i=typeof n.quotas?.idleTimeoutSeconds=="number"&&n.quotas.idleTimeoutSeconds>0?n.quotas.idleTimeoutSeconds:null,o=fn(n.quotas?.maxSpendUsd??n.budget.maxUsd),h=[i?`Auto-stop after ${Xr(i)} idle`:"Auto-stop policy unavailable"];o&&h.push(`cap ${o}`);const c=Wr(n);return c&&h.push(c),h.join(" · ")}function Na({mode:n,busy:i,workspaceState:o,workspaceId:h,workspaceKind:c,selectedApp:u,selectedProject:s,workspaceBusy:f,defaultTeamId:g,workspaceDiff:p,managedWorkspace:l,showDiffControls:w,diffPanelOpen:P,onToggleDiffPanel:U,onRunTerminalCommand:J,onWorkspaceToolAction:D,onOpenCommitDialog:Y,onWorkspaceBranchChange:te,onWorkspaceBranchCreate:V,connection:O,onBootstrap:F,onOpenSandboxWorkspace:Z}){const[W,oe]=q.useState(!1),[ie,Ce]=q.useState(!1),[Ne,Oe]=q.useState(""),[fe,he]=q.useState(!1),[_,z]=q.useState(!1),[I,H]=q.useState(null),[Q,de]=q.useState(!1),[Se,ze]=q.useState(!1),[Re,ne]=q.useState(null),[He,se]=q.useState([]),[me,ce]=q.useState([]),[we,K]=q.useState([]),[Le,pe]=q.useState({status:"idle",changedFiles:0,error:null}),[re,ke]=q.useState(null),_e=q.useRef(null),Pe=q.useRef(null),Ge=!!o?.initialized,ue=!!f,qe=!!l,Te=c==="local_project"||!!s,ae=c==="sandbox"||c==="sandbox_template",ye=ae&&h?.trim()||null,Fe=ae?0:p?.additions??0,Ie=ae?0:p?.deletions??0,De=ae?Le.changedFiles:p?.filesChanged??o?.changedFilesCount??0,Ue=De>0,Ke=ae?Zr(Le):Ue?`${De} changed ${De===1?"file":"files"}`:"No changes",Ye=ae?ea(re):"",e=o?.source!=="local_folder",m=Te&&o?.source==="local_folder",b=!!o?.remoteUrl,j=o?.remoteUrl?.trim()??"",a=Fr(u??null),x=!!s?.sandboxTemplate?.detected,t=!!(s?.sandboxTemplate?.valid&&s.sandboxTemplate.normalizedManifest),d=s?.sandboxTemplate?.normalizedManifest??null,C=d?et(d):[],v=C.filter(y=>y.kind==="action"),A=C.filter(y=>y.kind==="service"),N=!!s?.linkedOpenPondApp?.appId,S=Ri({localProject:s,organizations:He,projects:me,agents:we,defaultTeamId:g}),R=ot(He,g),E=Te&&x&&!N,k=Te&&x&&t&&(E||!!j),M=o?Array.from(new Set([o.currentBranch,...o.branches].filter(y=>!!y))):[],B=o?.initialized?o.currentBranch??M[0]??"No branch":"Not synced",X=Lr(o),on=q.useMemo(()=>{const y=Ne.trim().toLowerCase();return y?M.filter(T=>T.toLowerCase().includes(y)):M},[M,Ne]);q.useEffect(()=>{if(!W)return;function y($){_e.current?.contains($.target)||oe(!1)}function T($){$.key==="Escape"&&oe(!1)}return document.addEventListener("pointerdown",y),document.addEventListener("keydown",T),()=>{document.removeEventListener("pointerdown",y),document.removeEventListener("keydown",T)}},[W]),q.useEffect(()=>{W&&ie&&Pe.current?.focus()},[ie,W]),q.useEffect(()=>{if(!O||!W||!Te)return;let y=!1;return ze(!0),ne(null),xe.organizations(O).then(async T=>{if(y)return;const $=T.organizations.map(Pi).filter(ge=>!!ge).filter(ge=>ge.status==="active");se($);const G=ot($,g);if(!G)return;const[ve,Me]=await Promise.all([xe.listSandboxProjects(O,{teamId:G.teamId}),xe.listSandboxAgents(O,{teamId:G.teamId})]);y||(ce(ve.projects),K(Me.agents))}).catch(T=>{y||ne(Je(T))}).finally(()=>{y||ze(!1)}),()=>{y=!0}},[O,g,Te,W]),q.useEffect(()=>{if(!W||!ae||!O||!ye){pe({status:"idle",changedFiles:0,error:null});return}let y=!1;return pe(T=>({status:"loading",changedFiles:T.changedFiles,error:null})),xe.sandboxGitStatus(O,ye).then(T=>{y||pe({status:"ready",changedFiles:Qr(T.status?.porcelain??""),error:null})}).catch(T=>{y||pe({status:"error",changedFiles:0,error:Je(T)})}),()=>{y=!0}},[O,ae,W,ye]),q.useEffect(()=>{if(!W||!ae||!O||!ye){ke(null);return}let y=!1;return xe.sandbox(O,ye).then(T=>{y||ke(T.sandbox)}).catch(()=>{y||ke(null)}),()=>{y=!0}},[O,ae,W,ye]);async function Ze(y){if(!D)return;const T=y.openPreview?br():null;let $=y.repoUrl||j;if(E){if(b&&!window.confirm("Replace the current origin remote with a new OpenPond repo before starting the sandbox?")){tn(T,null);return}const je=await D("publish_openpond_repo",{replaceOrigin:b,...o?.dirty?{commitDirty:!0,commitMessage:y.commitMessage}:{}});if(!je?.ok){tn(T,null);return}$=kr(je)??$}else if(e&&b){if(o?.dirty&&!(await D("git_commit",{message:y.commitMessage,includeUnstaged:!0,runChecks:!1}))?.ok){tn(T,null);return}if(!(await D("git_push",{runChecks:!1}))?.ok){tn(T,null);return}}if(!$){tn(T,null);return}const G=await D("sandbox_create",{repo:$,visibility:"team",resources:y.resources,budget:{maxUsd:y.budgetUsd},quotas:{idleTimeoutSeconds:900,maxSpendUsd:y.budgetUsd},...y.env.length>0?{env:y.env}:{},...y.volumes.length>0?{volumes:y.volumes}:{},metadata:{source:"openpond-app-local-sandbox-template-start",...y.entrypointName?{entrypointName:y.entrypointName}:{},...s?.id?{localProjectId:s.id}:{},...s?.name?{projectName:s.name}:{},...d?{templateName:d.name,templateVersion:d.version,templateUseCase:d.useCase,templateTargets:C.map(je=>({name:je.name,kind:je.kind}))}:{}},...y.openPreview&&y.previewPort?{previewPort:y.previewPort,previewLabel:y.previewLabel,previewAccess:y.previewAccess,previewAutoStart:!0}:{}}),ve=xr(G);if(y.openPreview&&tn(T,ve),!G?.ok)return;const Me=Mr(G);for(const je of d?.setup.commands??[])if(!(await D("sandbox_exec",{command:je,timeoutSeconds:900}))?.ok)return;const ge={};for(const je of y.uploads){const nn=[];for(const it of je.files){const rt=Mt(je.targetPath,it.name),vi=await Ft(it);if(!(await D("sandbox_upload_file",{path:rt,contentsBase64:vi}))?.ok)return;nn.push(rt)}ge[je.inputName]=je.multiple?nn:nn[0]??""}const ln=Ur(y.command,{...y.params,...ge});if((await D("sandbox_exec",{command:ln,timeoutSeconds:y.timeoutSeconds??900}))?.ok){if(Me){for(const je of y.schedules)if(!(await D("sandbox_schedule_create",qr(je,Me)))?.ok)return}he(!1)}}async function Xe(y){if(!D)return;const T={},$=[];for(const G of y.uploads){const ve=[];for(const Me of G.files){const ge=Mt(G.targetPath,Me.name),ln=await Ft(Me);$.push({path:ge,contentsBase64:ln}),ve.push(ge)}T[G.inputName]=G.multiple?ve:ve[0]??""}z(!1),await D("run_sandbox_template",{mode:y.mode,target:y.target,params:{...y.params,...T},...y.env.length>0?{env:y.env}:{},...$.length>0?{uploads:$}:{}})}async function pi(y=R?.teamId){if(!O||!y)return;const[T,$]=await Promise.all([xe.listSandboxProjects(O,{teamId:y}),xe.listSandboxAgents(O,{teamId:y})]);ce(T.projects),K($.agents)}async function fi(y){if(!(!D||!s)){de(!0),ne(null);try{if(!(await D("create_sandbox_template_scaffold",{manifestOnly:!0,manifestContent:mi(y.name,y.preset),name:y.name,preset:y.preset,manifestPath:y.manifestPath}))?.ok)return;H(null)}catch(T){ne(Je(T))}finally{de(!1)}}}async function hi(y){if(!O||!s||!F)return;const T=y.teamId;de(!0),ne(null);try{const $=Dr(y.sourceType,y.sourceIdentity);let G=(await xe.upsertSandboxProject(O,{teamId:T,name:y.projectName,sourceType:y.sourceType,normalizedSourceIdentity:y.sourceIdentity||y.projectName,defaultBranch:y.defaultBranch||null,gitProvider:y.sourceType==="github_repo"?"github":null,gitHost:$.gitHost,gitOwner:$.gitOwner,gitRepo:$.gitRepo,internalRepoPath:$.internalRepoPath,templateRepoUrl:$.templateRepoUrl,sourceConfig:{sourceType:y.sourceType,sourceValue:y.sourceIdentity||y.projectName},metadata:{source:"openpond-app-local-project-agent-setup"}})).project;y.syncNow&&(G=(await xe.syncSandboxProject(O,G.id,{teamId:T})).project);const ve=await xe.updateLocalProjectAgentSetup(O,s.id,{linkedSandboxProject:{teamId:T,projectId:G.id,projectSlug:G.slug,projectName:G.name,sourceRepoUrl:y.sourceIdentity||null,defaultBranch:G.defaultBranch,lastUploadedCommit:null,lastUploadTransport:null,manifestPath:G.sandboxManifestPath,manifestHash:G.sandboxManifestHash,syncedAt:G.sandboxManifestSyncedAt,linkedAt:new Date().toISOString()}});F(ve.bootstrap),ce(Me=>[G,...Me.filter(ge=>ge.id!==G.id)]),H(null)}catch($){ne(Je($))}finally{de(!1)}}async function gi(){if(!O||!s||!S.project||!F)return;const y=S.project;de(!0),ne(null);try{const T=(await xe.syncSandboxProject(O,y.id,{teamId:y.teamId})).project,$=await xe.updateLocalProjectAgentSetup(O,s.id,{linkedSandboxProject:{teamId:T.teamId,projectId:T.id,projectSlug:T.slug,projectName:T.name,sourceRepoUrl:o?.remoteUrl??s.linkedSandboxProject?.sourceRepoUrl??null,defaultBranch:T.defaultBranch,lastUploadedCommit:s.linkedSandboxProject?.lastUploadedCommit??null,lastUploadTransport:s.linkedSandboxProject?.lastUploadTransport??null,manifestPath:T.sandboxManifestPath,manifestHash:T.sandboxManifestHash,syncedAt:T.sandboxManifestSyncedAt,linkedAt:s.linkedSandboxProject?.linkedAt??new Date().toISOString()}});F($.bootstrap),ce(G=>[T,...G.filter(ve=>ve.id!==T.id)]),H(null)}catch(T){ne(Je(T))}finally{de(!1)}}async function xi(y){if(!O||!s||!S.project||!F)return;const T=S.project;de(!0),ne(null);try{const $=(await xe.upsertSandboxAgent(O,{teamId:T.teamId,projectId:T.id,name:y.agentName,selectedEntrypoint:{scope:"entire_manifest",name:null},triggerType:"manual",backgroundTaskPolicy:{},defaultWorkflowMode:"attempt",defaultResourcePolicy:{},metadata:{source:"openpond-app-local-project-agent-setup"}})).agent;let G=null,ve=null;if(y.createTestRun){const ge=await xe.runSandboxAgent(O,$.id,{teamId:T.teamId,triggerType:"manual",metadata:{source:"openpond-app-local-project-agent-setup"}});G=ge.sandbox??null,ve=G?.id??ge.run.sandboxId??null}const Me=await xe.updateLocalProjectAgentSetup(O,s.id,{preferredSandboxAgentId:$.id});F(Me.bootstrap),K(ge=>[$,...ge.filter(ln=>ln.id!==$.id)]),H(null),ve&&await Z?.({sandboxId:ve,name:kt(G)??`${$.name} sandbox`})}catch($){ne(Je($))}finally{de(!1)}}async function bi(){if(!(!O||!S.agent)){de(!0),ne(null);try{const y=await xe.runSandboxAgent(O,S.agent.id,{teamId:S.agent.teamId,triggerType:"manual",metadata:{source:"openpond-app-local-project-agent-setup"}});await pi(S.agent.teamId),H(null);const T=y.sandbox?.id??y.run.sandboxId;T&&await Z?.({sandboxId:T,name:kt(y.sandbox??null)??`${S.agent.name} sandbox`})}catch(y){ne(Je(y))}finally{de(!1)}}}const{gitActionItems:Si,sandboxActionItems:yi}=Yr({canCreateSandboxProject:k,canInitGit:m,defaultSandboxRepoUrl:a??"",gitWorkspace:e,hasRemote:b,isProjectWorkspace:Te,isSandboxWorkspace:ae,managed:qe,onOpenCommitDialog:Y,onRunTerminalCommand:J,onWorkspaceToolAction:D,projectSandboxTemplate:x,projectSandboxTemplateValid:t,sandboxTemplateActionTargetCount:v.length,sandboxTemplateServiceTargets:A,sandboxResumeTarget:re?{id:re.id,runtimeId:re.runtimeId??null,teamId:re.teamId??null,projectId:re.projectId??null,state:re.state??null}:null,selectedApp:u,selectedProject:s,setSandboxCreateDialogOpen:he,setSandboxRunActionDialogOpen:z,workspaceBusyValue:ue,workspaceReady:Ge,workspaceState:o});if(!o)return null;function tt(y){oe(!1),y.onSelect()}return r.jsxs(r.Fragment,{children:[r.jsxs("div",{className:`workspace-environment-menu ${n==="dock"?"open-up":""} ${n==="topbar"?"topbar":""}`,ref:_e,children:[r.jsx("button",{type:"button",className:`environment-info-button ${n==="topbar"?"titlebar-icon":"composer-icon"} ${W?"active":""}`,title:"Environment","data-tooltip":"Environment","aria-label":"Environment","aria-haspopup":"menu","aria-expanded":W,onClick:()=>oe(y=>!y),children:r.jsx(qi,{size:16})}),W&&r.jsxs("div",{className:"environment-popover",role:"menu","aria-label":"Environment",children:[r.jsx("div",{className:"environment-popover-header",children:r.jsx("span",{children:"Environment"})}),Te&&s?r.jsxs("button",{type:"button",className:"environment-row",disabled:Se||!S.canAct||Q,title:Se?"Loading Agent setup state":S.reason??"Set up this project as an Agent",onClick:()=>{Se||!S.canAct||(S.state==="missing_config"&&H("config"),S.state==="needs_project"&&H("connect"),S.state==="needs_sync"&&H("sync"),S.state==="needs_agent"&&H("agent"),S.state==="ready"&&H("run"),oe(!1))},children:[r.jsx(sn,{size:15}),r.jsxs("span",{children:[r.jsx("strong",{children:"Agent setup"}),r.jsx("small",{children:Se?"Loading setup state":Or(S.state,S.reason)})]}),r.jsx("span",{className:"environment-row-action",children:Q?"Working":Se?"Loading":S.actionLabel})]}):null,r.jsxs("button",{type:"button",className:`environment-row ${P?"active":""}`,disabled:!w||!U,onClick:()=>{oe(!1),U?.()},children:[r.jsx(Ti,{size:15}),r.jsxs("span",{children:[r.jsx("strong",{children:"Changes"}),r.jsx("small",{children:Ke})]}),!ae&&(Ue||p)&&r.jsxs("span",{className:"environment-change-counts",children:[r.jsxs("span",{className:"diff-addition",children:["+",Fe]}),r.jsxs("span",{className:"diff-deletion",children:["-",Ie]})]})]}),r.jsxs("div",{className:"environment-row static",children:[r.jsx(Fi,{size:15}),r.jsxs("span",{children:[r.jsx("strong",{children:X}),r.jsx("small",{children:o.repoPath||o.workspacePath})]})]}),ae?r.jsxs("div",{className:"environment-row static",title:Ye,children:[r.jsx(Oi,{size:15}),r.jsxs("span",{children:[r.jsx("strong",{children:"Idle cleanup"}),r.jsx("small",{children:Ye})]})]}):null,r.jsxs("button",{type:"button",className:`environment-row ${ie?"active":""}`,disabled:qe||!e||i||ue||!o.initialized,"aria-expanded":ie,onClick:()=>Ce(y=>!y),children:[r.jsx(Cn,{size:15}),r.jsxs("span",{children:[r.jsx("strong",{children:B}),r.jsx("small",{children:qe?"Managed workspace":e?"Branch":"Git not initialized"})]}),r.jsx(Li,{size:13})]}),ie&&r.jsxs("div",{className:"environment-branch-panel",children:[r.jsxs("label",{className:"environment-branch-search",children:[r.jsx(ki,{size:13}),r.jsx("input",{ref:Pe,value:Ne,placeholder:"Search branches",onChange:y=>Oe(y.target.value)})]}),r.jsxs("div",{className:"environment-branch-list",children:[on.map(y=>{const T=y===o.currentBranch,$=i||o.dirty&&!T;return r.jsxs("button",{type:"button",className:T?"selected":"",disabled:$,role:"menuitemradio","aria-checked":T,title:$&&!T?"Commit or discard local changes before switching branches.":y,onClick:()=>{oe(!1),T||te?.(y)},children:[r.jsx(Cn,{size:13}),r.jsxs("span",{children:[r.jsx("strong",{children:y}),T&&o.dirty&&r.jsxs("small",{children:["Uncommitted: ",o.changedFilesCount," ",o.changedFilesCount===1?"file":"files"]})]}),T&&r.jsx(Mi,{size:14})]},y)}),on.length===0&&r.jsx("div",{className:"environment-branch-empty",children:"No branches found"})]}),r.jsxs("button",{type:"button",className:"environment-branch-create",disabled:i||!o.initialized||!V,onClick:()=>{oe(!1),V?.()},children:[r.jsx(Cn,{size:14}),r.jsx("span",{children:"Create branch"})]})]}),r.jsx("div",{className:"environment-section-title",children:"Git"}),Si.map(y=>r.jsxs("button",{type:"button",className:"environment-action",disabled:y.disabled,onClick:()=>tt(y),children:[y.icon,r.jsx("span",{children:y.label})]},y.label)),r.jsx("div",{className:"environment-section-title",children:"Sandbox"}),yi.map(y=>r.jsxs("button",{type:"button",className:"environment-action",disabled:y.disabled,onClick:()=>tt(y),children:[y.icon,r.jsx("span",{children:y.label})]},y.label))]})]}),fe&&r.jsx(Pr,{busy:ue,commitBeforeCreate:(E||e&&b)&&!!o?.dirty,defaultRepoUrl:j,projectName:s?.name??"sandbox template",templateManifest:s?.sandboxTemplate?.normalizedManifest??null,uploadBeforeCreate:E,onClose:()=>{ue||he(!1)},onSubmit:y=>{Ze(y)}}),_&&r.jsx(Tr,{busy:ue,projectName:s?.name??"sandbox template",templateManifest:s?.sandboxTemplate?.normalizedManifest??null,onClose:()=>{ue||z(!1)},onSubmit:y=>{Xe(y)}}),I==="config"&&s?r.jsx(Gr,{busy:Q,error:Re,projectName:s.name,onClose:()=>!Q&&H(null),onSubmit:y=>{fi(y)}}):null,I==="connect"&&s&&R?r.jsx(Kr,{busy:Q,error:Re,defaultTeamId:R.teamId,projectName:s.name,sourceIdentity:o?.remoteUrl??"",defaultBranch:o?.currentBranch??"main",onClose:()=>!Q&&H(null),onSubmit:y=>{hi(y)}}):null,I==="sync"&&S.project?r.jsx(Dt,{busy:Q,error:Re,title:"Sync Project",actionLabel:"Sync Project",summary:`${S.project.name} · ${S.project.sandboxManifestPath??an}`,onClose:()=>!Q&&H(null),onSubmit:()=>{gi()}}):null,I==="agent"&&S.project?r.jsx(Vr,{busy:Q,error:Re,defaultName:`${s?.name??S.project.name} Agent`,onClose:()=>!Q&&H(null),onSubmit:y=>{xi(y)}}):null,I==="run"&&S.agent?r.jsx(Dt,{busy:Q,error:Re,title:"Run Agent",actionLabel:"Run Agent",summary:S.agent.name,onClose:()=>!Q&&H(null),onSubmit:()=>{bi()}}):null]})}export{Na as WorkspaceEnvironmentMenu,Xr as formatIdleTimeout,Zr as sandboxChangeLabel,Qr as sandboxChangedFileCount,ea as sandboxRuntimePolicyLabel};
|